← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1408142] [NEW] nova-network fails to initialize gateway device if the interface address has 'dynamic' flag

 

Public bug reported:

If the network interface address has dynamic flag, nova-network fails to start.
This is because ip addr command only accept 'dynamic' flag for IPv6 address, but not for IPv4 address.

For example:

$ ip addr show dev eth0 scope global
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:00:00:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.96/23 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 2225sec preferred_lft 2225sec

$ ip addr del 192.168.0.96/23 brd 192.168.1.255 scope global dynamic eth0 dev eth0
Error: either "local" is duplicate, or "dynamic" is a garbage.

To fix this problem, 'dynamic' should be omitted.
Note that, this issue is triaged in LinuxBridgeInterfaceDriver.ensure_bridge(), but not in initialize_gateway_device().

Exception thrown in startup (or first instance's boot):

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 455, in fire_timers
    timer()
  File "/usr/lib/python2.7/site-packages/eventlet/hubs/timer.py", line 58, in __call__
    cb(*args, **kw)
  File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 212, in main
    result = function(*args, **kwargs)
  File "/opt/stack/nova/nova/openstack/common/service.py", line 492, in run_service
    service.start()
  File "/opt/stack/nova/nova/service.py", line 164, in start
    self.manager.init_host()
  File "/opt/stack/nova/nova/network/manager.py", line 1815, in init_host
    super(FlatDHCPManager, self).init_host()
  File "/opt/stack/nova/nova/network/manager.py", line 330, in init_host
    self._setup_network_on_host(ctxt, network)
  File "/opt/stack/nova/nova/network/manager.py", line 1824, in _setup_network_on_host
    self._initialize_network(network)
  File "/opt/stack/nova/nova/network/manager.py", line 1488, in _initialize_network
    self.l3driver.initialize_gateway(network)
  File "/opt/stack/nova/nova/network/l3.py", line 106, in initialize_gateway
    linux_net.initialize_gateway_device(dev, network_ref)
  File "/usr/lib/python2.7/site-packages/oslo_concurrency/lockutils.py", line 431, in inner
    return f(*args, **kwargs)
  File "/opt/stack/nova/nova/network/linux_net.py", line 885, in initialize_gateway_device
    run_as_root=True, check_exit_code=[0, 2, 254])
  File "/opt/stack/nova/nova/network/linux_net.py", line 1247, in _execute
    return utils.execute(*cmd, **kwargs)
  File "/opt/stack/nova/nova/utils.py", line 164, in execute
    return processutils.execute(*cmd, **kwargs)
  File "/usr/lib/python2.7/site-packages/oslo_concurrency/processutils.py", line 224, in execute
    cmd=sanitized_cmd)
ProcessExecutionError: Unexpected error while running command.
Command: sudo nova-rootwrap /etc/nova/rootwrap.conf ip addr del 192.168.123.1/23 brd 192.168.124.255 scope global dynamic dev br100
Exit code: 255
Stdout: u''
Stderr: u'Error: either "local" is duplicate, or "dynamic" is a garbage.\n'

** Affects: nova
     Importance: Undecided
         Status: New


** Tags: network

** Description changed:

  If the network interface address has dynamic flag, nova-network fails to start.
  This is because ip addr command only accept 'dynamic' flag for IPv6 address, but not for IPv4 address.
  
  For example:
  
  $ ip addr show dev eth0 scope global
  2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
-     link/ether 52:54:00:00:00:01 brd ff:ff:ff:ff:ff:ff
-     inet 192.168.0.96/23 brd 192.168.1.255 scope global dynamic eth0
-        valid_lft 2225sec preferred_lft 2225sec
+     link/ether 52:54:00:00:00:01 brd ff:ff:ff:ff:ff:ff
+     inet 192.168.0.96/23 brd 192.168.1.255 scope global dynamic eth0
+        valid_lft 2225sec preferred_lft 2225sec
  
  $ ip addr del 192.168.0.96/23 brd 192.168.1.255 scope global dynamic eth0 dev eth0
  Error: either "local" is duplicate, or "dynamic" is a garbage.
  
  To fix this problem, 'dynamic' should be omitted.
  Note that, this issue is triaged in LinuxBridgeInterfaceDriver.ensure_bridge(), but not in initialize_gateway_device().
  
- 
  Exception thrown in startup (or first instance's boot):
  
  Traceback (most recent call last):
-   File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 455, in fire_timers
-     timer()
-   File "/usr/lib/python2.7/site-packages/eventlet/hubs/timer.py", line 58, in __call__
-     cb(*args, **kw)
-   File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 212, in main
-     result = function(*args, **kwargs)
-   File "/opt/stack/nova/nova/openstack/common/service.py", line 492, in run_service
-     service.start()
-   File "/opt/stack/nova/nova/service.py", line 164, in start
-     self.manager.init_host() 
-   File "/opt/stack/nova/nova/network/manager.py", line 1815, in init_host
-     super(FlatDHCPManager, self).init_host()
-   File "/opt/stack/nova/nova/network/manager.py", line 330, in init_host
-     self._setup_network_on_host(ctxt, network)
-   File "/opt/stack/nova/nova/network/manager.py", line 1824, in _setup_network_on_host
-     self._initialize_network(network)
-   File "/opt/stack/nova/nova/network/manager.py", line 1488, in _initialize_network
-     self.l3driver.initialize_gateway(network)
-   File "/opt/stack/nova/nova/network/l3.py", line 106, in initialize_gateway
-     linux_net.initialize_gateway_device(dev, network_ref)
-   File "/usr/lib/python2.7/site-packages/oslo_concurrency/lockutils.py", line 431, in inner
-     return f(*args, **kwargs)
-   File "/opt/stack/nova/nova/network/linux_net.py", line 885, in initialize_gateway_device
-     run_as_root=True, check_exit_code=[0, 2, 254])
-   File "/opt/stack/nova/nova/network/linux_net.py", line 1247, in _execute
-     return utils.execute(*cmd, **kwargs)
-   File "/opt/stack/nova/nova/utils.py", line 164, in execute
-     return processutils.execute(*cmd, **kwargs)
-   File "/usr/lib/python2.7/site-packages/oslo_concurrency/processutils.py", line 224, in execute
-     cmd=sanitized_cmd)
+   File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 455, in fire_timers
+     timer()
+   File "/usr/lib/python2.7/site-packages/eventlet/hubs/timer.py", line 58, in __call__
+     cb(*args, **kw)
+   File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 212, in main
+     result = function(*args, **kwargs)
+   File "/opt/stack/nova/nova/openstack/common/service.py", line 492, in run_service
+     service.start()
+   File "/opt/stack/nova/nova/service.py", line 164, in start
+     self.manager.init_host()
+   File "/opt/stack/nova/nova/network/manager.py", line 1815, in init_host
+     super(FlatDHCPManager, self).init_host()
+   File "/opt/stack/nova/nova/network/manager.py", line 330, in init_host
+     self._setup_network_on_host(ctxt, network)
+   File "/opt/stack/nova/nova/network/manager.py", line 1824, in _setup_network_on_host
+     self._initialize_network(network)
+   File "/opt/stack/nova/nova/network/manager.py", line 1488, in _initialize_network
+     self.l3driver.initialize_gateway(network)
+   File "/opt/stack/nova/nova/network/l3.py", line 106, in initialize_gateway
+     linux_net.initialize_gateway_device(dev, network_ref)
+   File "/usr/lib/python2.7/site-packages/oslo_concurrency/lockutils.py", line 431, in inner
+     return f(*args, **kwargs)
+   File "/opt/stack/nova/nova/network/linux_net.py", line 885, in initialize_gateway_device
+     run_as_root=True, check_exit_code=[0, 2, 254])
+   File "/opt/stack/nova/nova/network/linux_net.py", line 1247, in _execute
+     return utils.execute(*cmd, **kwargs)
+   File "/opt/stack/nova/nova/utils.py", line 164, in execute
+     return processutils.execute(*cmd, **kwargs)
+   File "/usr/lib/python2.7/site-packages/oslo_concurrency/processutils.py", line 224, in execute
+     cmd=sanitized_cmd)
  ProcessExecutionError: Unexpected error while running command.
- Command: sudo nova-rootwrap /etc/nova/rootwrap.conf ip addr del 10.18.17.90/23 brd 10.18.17.255 scope global dy
- namic dev br100
+ Command: sudo nova-rootwrap /etc/nova/rootwrap.conf ip addr del 192.168.123.1/23 brd 192.168.124.255 scope global dynamic dev br100
  Exit code: 255
  Stdout: u''
  Stderr: u'Error: either "local" is duplicate, or "dynamic" is a garbage.\n'

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1408142

Title:
  nova-network fails to initialize gateway device if the interface
  address has 'dynamic' flag

Status in OpenStack Compute (Nova):
  New

Bug description:
  If the network interface address has dynamic flag, nova-network fails to start.
  This is because ip addr command only accept 'dynamic' flag for IPv6 address, but not for IPv4 address.

  For example:

  $ ip addr show dev eth0 scope global
  2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
      link/ether 52:54:00:00:00:01 brd ff:ff:ff:ff:ff:ff
      inet 192.168.0.96/23 brd 192.168.1.255 scope global dynamic eth0
         valid_lft 2225sec preferred_lft 2225sec

  $ ip addr del 192.168.0.96/23 brd 192.168.1.255 scope global dynamic eth0 dev eth0
  Error: either "local" is duplicate, or "dynamic" is a garbage.

  To fix this problem, 'dynamic' should be omitted.
  Note that, this issue is triaged in LinuxBridgeInterfaceDriver.ensure_bridge(), but not in initialize_gateway_device().

  Exception thrown in startup (or first instance's boot):

  Traceback (most recent call last):
    File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 455, in fire_timers
      timer()
    File "/usr/lib/python2.7/site-packages/eventlet/hubs/timer.py", line 58, in __call__
      cb(*args, **kw)
    File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 212, in main
      result = function(*args, **kwargs)
    File "/opt/stack/nova/nova/openstack/common/service.py", line 492, in run_service
      service.start()
    File "/opt/stack/nova/nova/service.py", line 164, in start
      self.manager.init_host()
    File "/opt/stack/nova/nova/network/manager.py", line 1815, in init_host
      super(FlatDHCPManager, self).init_host()
    File "/opt/stack/nova/nova/network/manager.py", line 330, in init_host
      self._setup_network_on_host(ctxt, network)
    File "/opt/stack/nova/nova/network/manager.py", line 1824, in _setup_network_on_host
      self._initialize_network(network)
    File "/opt/stack/nova/nova/network/manager.py", line 1488, in _initialize_network
      self.l3driver.initialize_gateway(network)
    File "/opt/stack/nova/nova/network/l3.py", line 106, in initialize_gateway
      linux_net.initialize_gateway_device(dev, network_ref)
    File "/usr/lib/python2.7/site-packages/oslo_concurrency/lockutils.py", line 431, in inner
      return f(*args, **kwargs)
    File "/opt/stack/nova/nova/network/linux_net.py", line 885, in initialize_gateway_device
      run_as_root=True, check_exit_code=[0, 2, 254])
    File "/opt/stack/nova/nova/network/linux_net.py", line 1247, in _execute
      return utils.execute(*cmd, **kwargs)
    File "/opt/stack/nova/nova/utils.py", line 164, in execute
      return processutils.execute(*cmd, **kwargs)
    File "/usr/lib/python2.7/site-packages/oslo_concurrency/processutils.py", line 224, in execute
      cmd=sanitized_cmd)
  ProcessExecutionError: Unexpected error while running command.
  Command: sudo nova-rootwrap /etc/nova/rootwrap.conf ip addr del 192.168.123.1/23 brd 192.168.124.255 scope global dynamic dev br100
  Exit code: 255
  Stdout: u''
  Stderr: u'Error: either "local" is duplicate, or "dynamic" is a garbage.\n'

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1408142/+subscriptions


Follow ups

References