]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
bp: pxeboot-port, provide pxeboot on ports
authordekehn <dekehn@gmail.com>
Wed, 11 Sep 2013 20:26:35 +0000 (14:26 -0600)
committerdekehn <dekehn@gmail.com>
Wed, 11 Sep 2013 20:51:55 +0000 (14:51 -0600)
Add extra_dhcp_opts extension to Ml2 plugin.

Implements:bp:pxeboot-ports

Change-Id: Id1d3923c4d2e3cf86731e2f2e9013fbee4ed68c7

neutron/plugins/ml2/plugin.py
neutron/tests/unit/ml2/test_ml2_plugin.py
neutron/tests/unit/test_extension_extradhcpopts.py

index 25de47f33ff098fd302fc752538a6c54c61147fe..9fa32cf5dfa6a85ccc5a8f157e18787994872eac 100644 (file)
@@ -25,10 +25,12 @@ from neutron.db import agentschedulers_db
 from neutron.db import allowedaddresspairs_db as addr_pair_db
 from neutron.db import db_base_plugin_v2
 from neutron.db import external_net_db
+from neutron.db import extradhcpopt_db
 from neutron.db import models_v2
 from neutron.db import quota_db  # noqa
 from neutron.db import securitygroups_rpc_base as sg_db_rpc
 from neutron.extensions import allowedaddresspairs as addr_pair
+from neutron.extensions import extra_dhcp_opt as edo_ext
 from neutron.extensions import multiprovidernet as mpnet
 from neutron.extensions import portbindings
 from neutron.extensions import providernet as provider
@@ -58,7 +60,8 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
                 external_net_db.External_net_db_mixin,
                 sg_db_rpc.SecurityGroupServerRpcMixin,
                 agentschedulers_db.DhcpAgentSchedulerDbMixin,
-                addr_pair_db.AllowedAddressPairsMixin):
+                addr_pair_db.AllowedAddressPairsMixin,
+                extradhcpopt_db.ExtraDhcpOptMixin):
 
     """Implement the Neutron L2 abstractions using modules.
 
@@ -80,7 +83,8 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
     _supported_extension_aliases = ["provider", "external-net", "binding",
                                     "quotas", "security-group", "agent",
                                     "dhcp_agent_scheduler",
-                                    "multi-provider", "allowed-address-pairs"]
+                                    "multi-provider", "allowed-address-pairs",
+                                    "extra_dhcp_opt"]
 
     @property
     def supported_extension_aliases(self):
@@ -441,6 +445,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
         with session.begin(subtransactions=True):
             self._ensure_default_security_group_on_port(context, port)
             sgids = self._get_security_groups_on_port(context, port)
+            dhcp_opts = port['port'].get(edo_ext.EXTRADHCPOPTS, [])
             result = super(Ml2Plugin, self).create_port(context, port)
             self._process_port_create_security_group(context, result, sgids)
             network = self.get_network(context, result['network_id'])
@@ -451,6 +456,8 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
                 self._process_create_allowed_address_pairs(
                     context, result,
                     attrs.get(addr_pair.ADDRESS_PAIRS)))
+            self._process_port_create_extra_dhcp_opts(context, result,
+                                                      dhcp_opts)
             self.mechanism_manager.create_port_precommit(mech_context)
 
         try:
@@ -481,6 +488,8 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
             need_port_update_notify |= self.update_security_group_on_port(
                 context, id, port, original_port, updated_port)
             network = self.get_network(context, original_port['network_id'])
+            need_port_update_notify |= self._update_extra_dhcp_opts_on_port(
+                context, id, port, updated_port)
             mech_context = driver_context.PortContext(
                 self, context, updated_port, network,
                 original_port=original_port)
index ae61fe662e9ab9d2b46cd47806d518ef7f4ffc0b..46b7550d339afea39016a7ea2db6840480e8d10e 100644 (file)
@@ -19,6 +19,7 @@ from neutron.extensions import providernet as pnet
 from neutron.plugins.ml2 import config
 from neutron.tests.unit import _test_extension_portbindings as test_bindings
 from neutron.tests.unit import test_db_plugin as test_plugin
+from neutron.tests.unit import test_extension_extradhcpopts as test_dhcpopts
 from neutron.tests.unit import test_security_groups_rpc as test_sg_rpc
 
 
@@ -194,3 +195,10 @@ class TestMultiSegmentNetworks(Ml2PluginV2TestCase):
         network_req = self.new_create_request('networks', data)
         res = network_req.get_response(self.api)
         self.assertEqual(res.status_int, 400)
+
+
+class DHCPOptsTestCase(test_dhcpopts.TestExtraDhcpOpt):
+
+    def setUp(self, plugin=None):
+        super(test_dhcpopts.ExtraDhcpOptDBTestCase, self).setUp(
+            plugin=PLUGIN_NAME)
index fbe583663a067cec3abe7c3ae92985bd01eb2b3e..863cfc006b98a310f3bccbadc18db125a2c52996 100644 (file)
@@ -55,8 +55,9 @@ class ExtraDhcpOptTestPlugin(db_base_plugin_v2.NeutronDbPluginV2,
 
 
 class ExtraDhcpOptDBTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
-    def setUp(self, plugin=None):
-        super(ExtraDhcpOptDBTestCase, self).setUp(plugin=DB_PLUGIN_KLASS)
+
+    def setUp(self, plugin=DB_PLUGIN_KLASS):
+        super(ExtraDhcpOptDBTestCase, self).setUp(plugin=plugin)
 
 
 class TestExtraDhcpOpt(ExtraDhcpOptDBTestCase):