summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2012-12-01 21:25:30 -0500
committerDan Prince <dprince@redhat.com>2012-12-04 08:25:09 -0500
commit2c84191d93fed209d6ae68cf80f52bbdca7646d7 (patch)
treee2a5ef2aa4ff5e7c88d35b5a8d0615756bcb43be
parentca1a2566d33aad15de640bf60630330aceb0ef2c (diff)
downloadnova-2c84191d93fed209d6ae68cf80f52bbdca7646d7.tar.gz
nova-2c84191d93fed209d6ae68cf80f52bbdca7646d7.tar.xz
nova-2c84191d93fed209d6ae68cf80f52bbdca7646d7.zip
network managers: Pass elevated cxtx to update_dhcp
Updates the Nova FlatDHCPManager and VlanManager network managers so they pass an elevated context to update_dhcp. In some cases (linux_net) the network driver may make use of DB calls which require an admin context. This fixes an issue where resize operations (confirm, revert) would fail if the user was not an admin. This is more fallout from 14e2ed3 where we stopped passing admin contexts for resize across RPC. Fixes LP Bug #1085071 Change-Id: I718c40f0df0b2955626033cf3b6f78323527e9cf
-rw-r--r--nova/network/manager.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/nova/network/manager.py b/nova/network/manager.py
index 7583eaef9..d1eef9d4a 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -2083,7 +2083,9 @@ class FlatDHCPManager(RPCAllocateFixedIP, FloatingIP, NetworkManager):
if not CONF.fake_network:
dev = self.driver.get_dev(network)
- self.driver.update_dhcp(context, dev, network)
+ # NOTE(dprince): dhcp DB queries require elevated context
+ elevated = context.elevated()
+ self.driver.update_dhcp(elevated, dev, network)
if(CONF.use_ipv6):
self.driver.update_ra(context, dev, network)
gateway = utils.get_my_linklocal(dev)
@@ -2094,7 +2096,9 @@ class FlatDHCPManager(RPCAllocateFixedIP, FloatingIP, NetworkManager):
if not CONF.fake_network:
network['dhcp_server'] = self._get_dhcp_ip(context, network)
dev = self.driver.get_dev(network)
- self.driver.update_dhcp(context, dev, network)
+ # NOTE(dprince): dhcp DB queries require elevated context
+ elevated = context.elevated()
+ self.driver.update_dhcp(elevated, dev, network)
def _get_network_dict(self, network):
"""Returns the dict representing necessary and meta network fields"""
@@ -2262,7 +2266,9 @@ class VlanManager(RPCAllocateFixedIP, FloatingIP, NetworkManager):
network['vpn_private_address'])
if not CONF.fake_network:
dev = self.driver.get_dev(network)
- self.driver.update_dhcp(context, dev, network)
+ # NOTE(dprince): dhcp DB queries require elevated context
+ elevated = context.elevated()
+ self.driver.update_dhcp(elevated, dev, network)
if(CONF.use_ipv6):
self.driver.update_ra(context, dev, network)
gateway = utils.get_my_linklocal(dev)
@@ -2273,7 +2279,9 @@ class VlanManager(RPCAllocateFixedIP, FloatingIP, NetworkManager):
if not CONF.fake_network:
network['dhcp_server'] = self._get_dhcp_ip(context, network)
dev = self.driver.get_dev(network)
- self.driver.update_dhcp(context, dev, network)
+ # NOTE(dprince): dhcp DB queries require elevated context
+ elevated = context.elevated()
+ self.driver.update_dhcp(elevated, dev, network)
def _get_network_dict(self, network):
"""Returns the dict representing necessary and meta network fields"""