← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1304724] [NEW] DBNotAllowed raised if trying to create network with VlanManager from nova-manage network create

 

Public bug reported:

Steps to reproduce:
- Setup a devstack from scratch using nova-network
- delete the default network
  # nova-manage network delete 10.0.0.0/24
- change nova.conf to use VlanManager:
network_manager = nova.network.manager.VlanManager
- restart nova-network
- create a new network with a vlan id:
nova-manage network create --label=network --fixed_range_v4 10.0.1.0/24 --vlan 42
- boot a vm on the cirros image:
nova --debug boot --flavor 1 --image 0b969819-2d85-4f7f-af76-125c5bb5789f test

Expected behavior: The new VM goes to Active state

Actual behavior: The new VM goes to Error state, also nova-network log has this exception:
a7-abaf-78db50a4b62c] network allocations from (pid=13676) allocate_for_instance /opt/stack/nova/nova/network/manager.py:494
2014-04-07 15:32:02.137 ERROR nova.network [req-87a65a9e-9196-4203-9de2-f6911d2aef4b admin demo] No db access allowed in nova-network: File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 194, in main
    result = function(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 128, in <lambda>
    yield lambda: self._dispatch_and_reply(incoming)
  File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 133, in _dispatch_and_reply
    incoming.message))
  File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 176, in _dispatch
    return self._do_dispatch(endpoint, method, ctxt, args)
  File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 122, in _do_dispatch
    result = getattr(endpoint, method)(ctxt, **new_args)
  File "/opt/stack/nova/nova/network/floating_ips.py", line 119, in allocate_for_instance
    **kwargs)
  File "/opt/stack/nova/nova/network/manager.py", line 497, in allocate_for_instance
    requested_networks=requested_networks)
  File "/opt/stack/nova/nova/network/manager.py", line 1837, in _get_networks_for_instance
    networks = self.db.project_get_networks(context, project_id)
  File "/opt/stack/nova/nova/db/api.py", line 1370, in project_get_networks
    return IMPL.project_get_networks(context, project_id, associate)
  File "/opt/stack/nova/nova/cmd/network.py", line 47, in __call__
    stacktrace = "".join(traceback.format_stack())

I think the exception was introduced by this patch that disables direct database access from nova-network: https://review.openstack.org/#/c/79716/
However, VlanManager still relies on database access for the given scenario, and there are 3 other places in manager.py that rely on direct db access:
devuser@ubuntu:/opt/stack/nova$ grep self.db nova/network/manager.py -n
1389: vifs = self.db.virtual_interface_get_by_instance(context,
1446: vif = self.db.virtual_interface_get_by_address(context,
1837: networks = self.db.project_get_networks(context, project_id)
1914: not self.db.network_in_use_on_host(context, network['id'],
Therefore, I cannot currently use conductor with nova-network VlanManager, which is a regression from Havana.

===

devstack defaults the network_manager to FlatDHCPManager so we don't
test VlanManager in the gate.

** Affects: nova
     Importance: Undecided
         Status: New


** Tags: network

-- 
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/1304724

Title:
  DBNotAllowed raised if trying to create network with VlanManager from
  nova-manage network create

Status in OpenStack Compute (Nova):
  New

Bug description:
  Steps to reproduce:
  - Setup a devstack from scratch using nova-network
  - delete the default network
    # nova-manage network delete 10.0.0.0/24
  - change nova.conf to use VlanManager:
  network_manager = nova.network.manager.VlanManager
  - restart nova-network
  - create a new network with a vlan id:
  nova-manage network create --label=network --fixed_range_v4 10.0.1.0/24 --vlan 42
  - boot a vm on the cirros image:
  nova --debug boot --flavor 1 --image 0b969819-2d85-4f7f-af76-125c5bb5789f test

  Expected behavior: The new VM goes to Active state

  Actual behavior: The new VM goes to Error state, also nova-network log has this exception:
  a7-abaf-78db50a4b62c] network allocations from (pid=13676) allocate_for_instance /opt/stack/nova/nova/network/manager.py:494
  2014-04-07 15:32:02.137 ERROR nova.network [req-87a65a9e-9196-4203-9de2-f6911d2aef4b admin demo] No db access allowed in nova-network: File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 194, in main
      result = function(*args, **kwargs)
    File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 128, in <lambda>
      yield lambda: self._dispatch_and_reply(incoming)
    File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 133, in _dispatch_and_reply
      incoming.message))
    File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 176, in _dispatch
      return self._do_dispatch(endpoint, method, ctxt, args)
    File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 122, in _do_dispatch
      result = getattr(endpoint, method)(ctxt, **new_args)
    File "/opt/stack/nova/nova/network/floating_ips.py", line 119, in allocate_for_instance
      **kwargs)
    File "/opt/stack/nova/nova/network/manager.py", line 497, in allocate_for_instance
      requested_networks=requested_networks)
    File "/opt/stack/nova/nova/network/manager.py", line 1837, in _get_networks_for_instance
      networks = self.db.project_get_networks(context, project_id)
    File "/opt/stack/nova/nova/db/api.py", line 1370, in project_get_networks
      return IMPL.project_get_networks(context, project_id, associate)
    File "/opt/stack/nova/nova/cmd/network.py", line 47, in __call__
      stacktrace = "".join(traceback.format_stack())

  I think the exception was introduced by this patch that disables direct database access from nova-network: https://review.openstack.org/#/c/79716/
  However, VlanManager still relies on database access for the given scenario, and there are 3 other places in manager.py that rely on direct db access:
  devuser@ubuntu:/opt/stack/nova$ grep self.db nova/network/manager.py -n
  1389: vifs = self.db.virtual_interface_get_by_instance(context,
  1446: vif = self.db.virtual_interface_get_by_address(context,
  1837: networks = self.db.project_get_networks(context, project_id)
  1914: not self.db.network_in_use_on_host(context, network['id'],
  Therefore, I cannot currently use conductor with nova-network VlanManager, which is a regression from Havana.

  ===

  devstack defaults the network_manager to FlatDHCPManager so we don't
  test VlanManager in the gate.

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


Follow ups

References