← Back to team overview

openstack team mailing list archive

nova calls libvirt but failed:Operation not supported

 

Hi all:

I use github to install nova and quantum, but when I launch an instance,
nova-compute fails:

2013-04-02 11:00:15    DEBUG [nova.openstack.common.lockutils] Released
file lock "iptables" at /var/lock/nova/nova-iptables for method "_apply"...
2013-04-02 11:00:17    ERROR [nova.compute.manager] Instance failed to spawn
Traceback (most recent call last):
  File
"/usr/local/lib/python2.7/dist-packages/nova-2013.2.a89.ge9912c6-py2.7.egg/nova/compute/manager.py",
line 1069, in _spawn
    block_device_info)
  File
"/usr/local/lib/python2.7/dist-packages/nova-2013.2.a89.ge9912c6-py2.7.egg/nova/virt/libvirt/driver.py",
line 1520, in spawn
    block_device_info)
  File
"/usr/local/lib/python2.7/dist-packages/nova-2013.2.a89.ge9912c6-py2.7.egg/nova/virt/libvirt/driver.py",
line 2435, in _create_domain_and_network
    domain = self._create_domain(xml, instance=instance)
  File
"/usr/local/lib/python2.7/dist-packages/nova-2013.2.a89.ge9912c6-py2.7.egg/nova/virt/libvirt/driver.py",
line 2396, in _create_domain
    domain.createWithFlags(launch_flags)
  File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line
187, in doit
    result = proxy_call(self._autowrap, f, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line
147, in proxy_call
    rv = execute(f,*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 76,
in tworker
    rv = meth(*args,**kwargs)
  File "/usr/lib/python2.7/dist-packages/libvirt.py", line 581, in
createWithFlags
    if ret == -1: raise libvirtError ('virDomainCreateWithFlags() failed',
dom=self)
libvirtError: Unable to add bridge br-int port tap89ed2dc0-2e: Operation
not supported
2013-04-02 11:00:17    DEBUG [nova.openstack.common.lockutils] Got
semaphore "compute_resources" for method "abort"...
2013-04-02 11:00:17    DEBUG [nova.compute.claims] Aborting claim: [Claim:
512 MB memory, 0 GB disk, 1 VCPUS]

Is it because user nova call libvirt to create a port so it has not enough
permission?

note1:I set up sudoer:
root@node1:~# cat /etc/sudoers.d/nova_sudoers
Defaults:nova !requiretty

nova ALL = (root) NOPASSWD: /usr/local/bin/nova-rootwrap


note2:I login as root, execute " ovs-vsctl add-port", and succeed.

root@node1:~# ovs-vsctl add-port br-int  tap89ed2dc0-2e
root@node1:~# ovs-vsctl show
f3f4cdc0-1391-45fd-a535-1947d5aea488
    Bridge "br0"
        Port "eth0"
            Interface "eth0"
        Port "br0"
            Interface "br0"
                type: internal
    Bridge br-int
        Port br-int
            Interface br-int
                type: internal
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
        Port "tap89ed2dc0-2e"
            Interface "tap89ed2dc0-2e"
    Bridge br-tun
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
        Port "gre-1"
            Interface "gre-1"
                type: gre
                options: {in_key=flow, out_key=flow,
remote_ip="192.168.19.1"}
        Port br-tun
            Interface br-tun
                type: internal
    ovs_version: "1.4.0+build0"

Follow ups