nova boot ends in error state when using nova-network VlanManager

Bug #1303827 reported by Christoph Bachhuber-Haller
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
New
Undecided
Unassigned

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.

Tags: network
tags: added: network
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.