yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #13387
[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