** Description changed: + [Impact] + + * Please do note that this SRU statement is about the libvirt portion + of it, this is a fix of essentially an API break from Xenial to + Yakkety. This is independent to any decision to the Openstack context + discussion about the change to drop specifying a path at all. + + * Before 9c17d665fdc5f (v1.3.2 which means 1.3.1 in Xenial for us) it + was possible to have the following interface configuration: + <interface type='ethernet'/> + <script path=''/> + </interface> + This resulted in -netdev tap,script=,.. Fortunately, qemu helped + us to get away with this as it just ignored the empty script + path. However, after the commit mentioned above it's libvirtd + who is executing the script. Unfortunately without special + case-ing empty script path. + + * The fix adds the special casing that qemu had into libvirts handling + of the interface definition. + + [Test Case] + + * That is tricky as the way openstack is using to shove that in + seems to not care on xml validation as much as e.g. virsh. + If normally adding a device like + <interface type='ethernet'/> + <script path=''/> + <model type='virtio'/> + </interface> + At least in xenial AND yakkety blocked by the XML validation. + But if trying to work around like: + <script path='""'/> + Which gave "-netdev tap,script="",id=hostnet1" on yakkety then + the fix does not apply as this is '""' and not ''. + So to add the above you have to edit it in via --skip-validate like + $ virsh edit --skip-validate zesty-on-x-test + This on onlder libvrit gave: -netdev tap,script=,id=hostnet1 + Which qemu understood as nop. But newer libvirt refuses. + + + * Error: + error: Failed to start domain <name> + error: Cannot find '' in path: No such file or directory + + * Expected: + Starting the domain as-is without calling a script, + but also without complaining about being empty. + + [Regression Potential] + + * Regression should be low because of: + * The fix is upstream for a while now without follow on fix + * We are essentially going back to how it was + * There is no case like "I had '' set in my setup but now it is + a no-op which makes me fail" because if one had '' it failed until + now. + * Fix is in zesty for a few days without new fallout being reported + * also it passed several levels of testing (on the case and general + regression testing) + * Due to extra xml checks a device like path='' is not even definable. + So only those who run --skip-validate or similar are affected in + the first place. + + [Other Info] + + * n/a + + + ---- + + I have VMs failing to start with 2017-02-17 15:38:44.458 264015 ERROR nova.compute.manager [instance: 0c97ab16-2d30-43fa-b0e4-a064a842b5ed] libvirtError: internal error: process exited while connecting to monitor: 2017-02-17T15:38:43.907222Z qemu-system-x86_64: -netdev tap,ifname=tapf34ef99e-18,id=hostnet0,vhost=on,vhostfd=28: network script /etc/qemu-ifup failed with status 256 Log excerpt: http://cdn.pasteraw.com/b3tw4cjefomfi3e9k09hvodrfun85z Seems to be that /etc/qemu-ifup is being blocked by apparmor: type=AVC msg=audit(1487347189.015:28536): apparmor="DENIED" operation="exec" profile="libvirt-4a03fea7-e966-48e4-80ac-aa138db67243" name="/etc/qemu-ifup" pid=285438 comm="qemu-system-x86" requested_mask="x" denied_mask="x" fsuid=0 ouid=0 type=PATH msg=audit(1487347189.015:28536): item=0 name="/etc/qemu-ifup" inode=66403 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL root@ubuntu-trusty-5773:/etc/apparmor.d/abstractions# cat /etc/apparmor.d/libvirt/libvirt-4a03fea7-e966-48e4-80ac-aa138db67243 # # This profile is for the domain whose UUID matches this file. # #include <tunables/global> profile libvirt-4a03fea7-e966-48e4-80ac-aa138db67243 { - #include <abstractions/libvirt-qemu> - #include <libvirt/libvirt-4a03fea7-e966-48e4-80ac-aa138db67243.files> + #include <abstractions/libvirt-qemu> + #include <libvirt/libvirt-4a03fea7-e966-48e4-80ac-aa138db67243.files> } root@ubuntu-trusty-5773:/etc/apparmor.d/abstractions# cat /etc/apparmor.d/libvirt/libvirt-4a03fea7-e966-48e4-80ac-aa138db67243.files # DO NOT EDIT THIS FILE DIRECTLY. IT IS MANAGED BY LIBVIRT. - "/var/log/libvirt/**/instance-00000008.log" w, - "/var/lib/libvirt/qemu/domain-instance-00000008/monitor.sock" rw, - "/var/run/libvirt/**/instance-00000008.pid" rwk, - "/run/libvirt/**/instance-00000008.pid" rwk, - "/var/run/libvirt/**/*.tunnelmigrate.dest.instance-00000008" rw, - "/run/libvirt/**/*.tunnelmigrate.dest.instance-00000008" rw, - "/var/lib/nova/instances/4a03fea7-e966-48e4-80ac-aa138db67243/console.log" rw, - "/var/lib/nova/instances/4a03fea7-e966-48e4-80ac-aa138db67243/console.log" rw, - # for qemu guest agent channel - owner "/var/lib/libvirt/qemu/channel/target/domain-instance-00000008/**" rw, - /dev/vhost-net rw, + "/var/log/libvirt/**/instance-00000008.log" w, + "/var/lib/libvirt/qemu/domain-instance-00000008/monitor.sock" rw, + "/var/run/libvirt/**/instance-00000008.pid" rwk, + "/run/libvirt/**/instance-00000008.pid" rwk, + "/var/run/libvirt/**/*.tunnelmigrate.dest.instance-00000008" rw, + "/run/libvirt/**/*.tunnelmigrate.dest.instance-00000008" rw, + "/var/lib/nova/instances/4a03fea7-e966-48e4-80ac-aa138db67243/console.log" rw, + "/var/lib/nova/instances/4a03fea7-e966-48e4-80ac-aa138db67243/console.log" rw, + # for qemu guest agent channel + owner "/var/lib/libvirt/qemu/channel/target/domain-instance-00000008/**" rw, + /dev/vhost-net rw, root@ubuntu-trusty-5773:/etc/apparmor.d/abstractions# dpkg -S libvirt-qemu libvirt-bin: /etc/apparmor.d/abstractions/libvirt-qemu root@ubuntu-trusty-5773:/etc/apparmor.d/abstractions# dpkg -l libvirt-bin Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=========================================-=========================-=========================-======================================================================================= ii libvirt-bin 1.3.1-1ubuntu10.6~cloud0 amd64 programs for the libvirt library - Seeing identical behavior on Xenial ubuntu@ubuntu-xenial-5165:~$ dpkg -l libvirt-bin Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=========================================-=========================-=========================-======================================================================================= ii libvirt-bin 1.3.1-1ubuntu10.8 amd64 programs for the libvirt library
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1665698 Title: /etc/qemu-ifup not allowed by apparmor To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-archive/+bug/1665698/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs