Comment 0 for bug 929127

Revision history for this message
Adam Gandelman (gandelman-a) wrote :

Now that nova-rootwrap is returning real return codes, ensure_metadata_ip() is failing on return code 2 when creating the metadata ip, because it already exists:

2012-02-08 15:30:13,309 DEBUG nova.utils [-] Running cmd (subprocess): sudo nova-rootwrap ip addr add 169.254.169.254/32 scope link dev lo from (pid=8942) execute /usr/lib/python2.7/dist-packages/nova/utils.py:208
2012-02-08 15:30:13,339 DEBUG nova.utils [-] Result was 2 from (pid=8942) execute /usr/lib/python2.7/dist-packages/nova/utils.py:224
2012-02-08 15:30:13,340 CRITICAL nova [-] Unexpected error while running command.
Command: sudo nova-rootwrap ip addr add 169.254.169.254/32 scope link dev lo
Exit code: 2
Stdout: ''
Stderr: 'RTNETLINK answers: File exists\n'
(nova): TRACE: Traceback (most recent call last):
(nova): TRACE: File "/usr/bin/nova-network", line 49, in <module>
(nova): TRACE: service.wait()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/service.py", line 414, in wait
(nova): TRACE: _launcher.wait()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/service.py", line 134, in wait
(nova): TRACE: service.wait()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/eventlet/greenthread.py", line 166, in wait
(nova): TRACE: return self._exit_event.wait()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/eventlet/event.py", line 116, in wait
(nova): TRACE: return hubs.get_hub().switch()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 177, in switch
(nova): TRACE: return self.greenlet.switch()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/eventlet/greenthread.py", line 192, in main
(nova): TRACE: result = function(*args, **kwargs)
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/service.py", line 104, in run_server
(nova): TRACE: server.start()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/service.py", line 164, in start
(nova): TRACE: self.manager.init_host()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/network/manager.py", line 1558, in init_host
(nova): TRACE: self.l3driver.initialize()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/network/l3.py", line 81, in initialize
(nova): TRACE: linux_net.ensure_metadata_ip()
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/network/linux_net.py", line 479, in ensure_metadata_ip
(nova): TRACE: run_as_root=True, check_exit_code=[0, 254])
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/network/linux_net.py", line 839, in _execute
(nova): TRACE: return utils.execute(*cmd, **kwargs)
(nova): TRACE: File "/usr/lib/python2.7/dist-packages/nova/utils.py", line 232, in execute
(nova): TRACE: cmd=' '.join(cmd))
(nova): TRACE: ProcessExecutionError: Unexpected error while running command.
(nova): TRACE: Command: sudo nova-rootwrap ip addr add 169.254.169.254/32 scope link dev lo
(nova): TRACE: Exit code: 2
(nova): TRACE: Stdout: ''
(nova): TRACE: Stderr: 'RTNETLINK answers: File exists\n'
(nova): TRACE:

There seems to have been a change upstream wrt return codes from iproute:

root@ip-10-252-15-139:~# dpkg -l | grep iproute
ii iproute 20110629-1 networking and traffic control tools
root@ip-10-252-15-139:~# sudo ip addr add 169.254.169.254/32 scope link dev lo ; echo $?
RTNETLINK answers: File exists
254

Processing triggers for man-db ...
Setting up iproute (20111117-1ubuntu1) ...
root@ip-10-252-15-139:~# sudo ip addr add 169.254.169.254/32 scope link dev lo ; echo $?
RTNETLINK answers: File exists
2

Seems this has changed in upstream iproute2 - http://git.jauu.net/?p=iproute2.git;a=commitdiff;h=7397944de6c11519a5951fc1bcff20225e71c4bd

Seems like a crazy change, but in any case, precise is now on this version and nova-network should check for both 2 and 254.