Fixes tenant_id

See https://github.com/rackerlabs/quark/pull/35
This commit is contained in:
John Perkins
2014-01-16 13:30:36 -06:00
parent a1c41c0cb4
commit a4afc40a0f
3 changed files with 34 additions and 6 deletions

View File

@@ -21,6 +21,7 @@ from oslo.config import cfg
from neutron.db import api as neutron_db_api from neutron.db import api as neutron_db_api
from neutron.extensions import securitygroup as sg_ext from neutron.extensions import securitygroup as sg_ext
from neutron import neutron_plugin_base_v2 from neutron import neutron_plugin_base_v2
from neutron.openstack.common import log as logging
from neutron import quota from neutron import quota
from quark.api import extensions from quark.api import extensions
@@ -34,6 +35,8 @@ from quark.plugin_modules import routes
from quark.plugin_modules import security_groups from quark.plugin_modules import security_groups
from quark.plugin_modules import subnets from quark.plugin_modules import subnets
LOG = logging.getLogger(__name__)
CONF = cfg.CONF CONF = cfg.CONF
quark_resources = [ quark_resources = [
@@ -89,9 +92,19 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
"networks_quark"] "networks_quark"]
def __init__(self): def __init__(self):
LOG.info("Starting quark plugin")
neutron_db_api.configure_db() neutron_db_api.configure_db()
neutron_db_api.register_models(base=models.BASEV2) neutron_db_api.register_models(base=models.BASEV2)
def _fix_missing_tenant_id(self, context, resource):
"""Will add the tenant_id to the context from body.
It is assumed that the body must have a tenant_id because neutron
core would have never got here in such a situation.
"""
if context.tenant_id is None:
context.tenant_id = resource["tenant_id"]
@sessioned @sessioned
def get_mac_address_range(self, context, id, fields=None): def get_mac_address_range(self, context, id, fields=None):
return mac_address_ranges.get_mac_address_range(context, id, fields) return mac_address_ranges.get_mac_address_range(context, id, fields)
@@ -102,6 +115,7 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
@sessioned @sessioned
def create_mac_address_range(self, context, mac_range): def create_mac_address_range(self, context, mac_range):
self._fix_missing_tenant_id(context, mac_range["mac_address_range"])
return mac_address_ranges.create_mac_address_range(context, mac_range) return mac_address_ranges.create_mac_address_range(context, mac_range)
@sessioned @sessioned
@@ -112,14 +126,16 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
#XXX DO NOT DEPLOY!! XXX see redmine #2487 #XXX DO NOT DEPLOY!! XXX see redmine #2487
@sessioned @sessioned
def create_security_group(self, context, security_group, net_driver): def create_security_group(self, context, security_group, net_driver):
self._fix_missing_tenant_id(context, security_group["security_group"])
return security_groups.create_security_group(context, security_group, return security_groups.create_security_group(context, security_group,
net_driver) net_driver)
#TODO(dietz/perkins): passing in net_driver as a stopgap, #TODO(dietz/perkins): passing in net_driver as a stopgap,
#XXX DO NOT DEPLOY!! XXX see redmine #2487 #XXX DO NOT DEPLOY!! XXX see redmine #2487
@sessioned @sessioned
def create_security_group_rule(self, context, security_group_rule, def create_security_group_rule(self, context, security_group,
net_driver): security_group_rule, net_driver):
self._fix_missing_tenant_id(context, security_group["security_group"])
return security_groups.create_security_group_rule(context, return security_groups.create_security_group_rule(context,
security_group_rule, security_group_rule,
net_driver) net_driver)
@@ -170,6 +186,7 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
@sessioned @sessioned
def create_ip_policy(self, context, ip_policy): def create_ip_policy(self, context, ip_policy):
self._fix_missing_tenant_id(context, ip_policy["ip_policy"])
return ip_policies.create_ip_policy(context, ip_policy) return ip_policies.create_ip_policy(context, ip_policy)
@sessioned @sessioned
@@ -198,6 +215,7 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
@sessioned @sessioned
def create_ip_address(self, context, ip_address): def create_ip_address(self, context, ip_address):
self._fix_missing_tenant_id(context, ip_address["ip_address"])
return ip_addresses.create_ip_address(context, ip_address) return ip_addresses.create_ip_address(context, ip_address)
@sessioned @sessioned
@@ -206,6 +224,7 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
@sessioned @sessioned
def create_port(self, context, port): def create_port(self, context, port):
self._fix_missing_tenant_id(context, port["port"])
return ports.create_port(context, port) return ports.create_port(context, port)
@sessioned @sessioned
@@ -250,6 +269,7 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
@sessioned @sessioned
def create_route(self, context, route): def create_route(self, context, route):
self._fix_missing_tenant_id(context, route["route"])
return routes.create_route(context, route) return routes.create_route(context, route)
@sessioned @sessioned
@@ -258,6 +278,7 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
@sessioned @sessioned
def create_subnet(self, context, subnet): def create_subnet(self, context, subnet):
self._fix_missing_tenant_id(context, subnet["subnet"])
return subnets.create_subnet(context, subnet) return subnets.create_subnet(context, subnet)
@sessioned @sessioned
@@ -286,6 +307,7 @@ class Plugin(neutron_plugin_base_v2.NeutronPluginBaseV2,
@sessioned @sessioned
def create_network(self, context, network): def create_network(self, context, network):
self._fix_missing_tenant_id(context, network["network"])
return networks.create_network(context, network) return networks.create_network(context, network)
@sessioned @sessioned

View File

@@ -28,7 +28,7 @@ LOG = logging.getLogger(__name__)
def create_ip_policy(context, ip_policy): def create_ip_policy(context, ip_policy):
LOG.info("create_ip_policy for tenant %s" % context.tenant_id) LOG.info("create_ip_policy for tenant %s" % context.tenant_id)
ipp = ip_policy["ip_policy"] ipp = ip_policy['ip_policy']
if not ipp.get("exclude"): if not ipp.get("exclude"):
raise exceptions.BadRequest(resource="ip_policy", raise exceptions.BadRequest(resource="ip_policy",

View File

@@ -301,12 +301,18 @@ class TestQuarkCreateSecurityGroupRule(test_quark_plugin.TestQuarkPlugin):
ruleset['tenant_id'] = self.context.tenant_id ruleset['tenant_id'] = self.context.tenant_id
rule = dict(self.rule, **ruleset) rule = dict(self.rule, **ruleset)
group = rule.pop('group') group = rule.pop('group')
if group:
sec_group = group['id']
else:
sec_group = None
expected = dict(self.expected, **ruleset) expected = dict(self.expected, **ruleset)
expected.pop('group', None) expected.pop('group', None)
hax1 = {'security_group': sec_group}
hax2 = {'security_group_rule': rule}
with self._stubs(rule, group) as rule_create: with self._stubs(rule, group) as rule_create:
result = self.plugin.create_security_group_rule( result = self.plugin.create_security_group_rule(self.context,
self.context, {'security_group_rule': rule}, hax1, hax2,
self.net_driver) self.net_driver)
self.assertTrue(rule_create.called) self.assertTrue(rule_create.called)
for key in expected.keys(): for key in expected.keys():
self.assertEqual(expected[key], result[key]) self.assertEqual(expected[key], result[key])