]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Remove duplicate _check_provider_update from plugins
authorAaron Rosen <arosen@nicira.com>
Wed, 19 Jun 2013 20:46:06 +0000 (13:46 -0700)
committerAaron Rosen <arosen@nicira.com>
Sat, 29 Jun 2013 05:33:15 +0000 (22:33 -0700)
This patch removes the duplicated method _check_provider_update
and adds a check for it in the NVP plugin that was missing so that an error
is raised if someone tries to update a provider network.

Fixes bug: 1192702

Change-Id: I84e6767f351122f9e5af0cd4ef24d8eaaeb4ccd5

quantum/extensions/providernet.py
quantum/plugins/hyperv/hyperv_quantum_plugin.py
quantum/plugins/linuxbridge/lb_quantum_plugin.py
quantum/plugins/ml2/plugin.py
quantum/plugins/mlnx/mlnx_plugin.py
quantum/plugins/nicira/QuantumPlugin.py
quantum/plugins/openvswitch/ovs_quantum_plugin.py

index ae150f220434f414399504a4afe47dd8b8769cec..ed837ba49c17eaba307a75c499d7da62143ba084 100644 (file)
@@ -17,6 +17,8 @@
 
 from quantum.api import extensions
 from quantum.api.v2 import attributes
+from quantum.common import exceptions as q_exc
+
 
 NETWORK_TYPE = 'provider:network_type'
 PHYSICAL_NETWORK = 'provider:physical_network'
@@ -43,6 +45,18 @@ EXTENDED_ATTRIBUTES_2_0 = {
 }
 
 
+def _raise_if_updates_provider_attributes(attrs):
+    """Raise exception if provider attributes are present.
+
+    This method is used for plugins that do not support
+    updating provider networks.
+    """
+    immutable = (NETWORK_TYPE, PHYSICAL_NETWORK, SEGMENTATION_ID)
+    if any(attributes.is_attr_set(attrs.get(a)) for a in immutable):
+        msg = _("plugin does not support updating provider attributes")
+        raise q_exc.InvalidInput(error_message=msg)
+
+
 class Providernet(extensions.ExtensionDescriptor):
     """Extension class supporting provider networks.
 
index 1ac84ae61bc6d48fd7a34f59b3df3cc5dd2cee43..ab7459396f0e10fd3a8d729481d317b1ac8fae47 100644 (file)
@@ -253,25 +253,8 @@ class HyperVQuantumPlugin(db_base_plugin_v2.QuantumDbPluginV2,
         p = self._network_providers_map[binding.network_type]
         p.extend_network_dict(network, binding)
 
-    def _check_provider_update(self, context, attrs):
-        network_type = attrs.get(provider.NETWORK_TYPE)
-        physical_network = attrs.get(provider.PHYSICAL_NETWORK)
-        segmentation_id = attrs.get(provider.SEGMENTATION_ID)
-
-        network_type_set = attributes.is_attr_set(network_type)
-        physical_network_set = attributes.is_attr_set(physical_network)
-        segmentation_id_set = attributes.is_attr_set(segmentation_id)
-
-        if not (network_type_set or physical_network_set or
-                segmentation_id_set):
-            return
-
-        msg = _("plugin does not support updating provider attributes")
-        raise q_exc.InvalidInput(error_message=msg)
-
     def update_network(self, context, id, network):
-        network_attrs = network['network']
-        self._check_provider_update(context, network_attrs)
+        provider._raise_if_updates_provider_attributes(network['network'])
 
         session = context.session
         with session.begin(subtransactions=True):
index 28df04e5995a47e82d4b61fcd14711ff6fc1b4e8..f7a4310dc6554826fbe253f46cce3ba6120bd1ef 100644 (file)
@@ -358,22 +358,6 @@ class LinuxBridgePluginV2(db_base_plugin_v2.QuantumDbPluginV2,
 
         return (network_type, physical_network, segmentation_id)
 
-    def _check_provider_update(self, context, attrs):
-        network_type = attrs.get(provider.NETWORK_TYPE)
-        physical_network = attrs.get(provider.PHYSICAL_NETWORK)
-        segmentation_id = attrs.get(provider.SEGMENTATION_ID)
-
-        network_type_set = attributes.is_attr_set(network_type)
-        physical_network_set = attributes.is_attr_set(physical_network)
-        segmentation_id_set = attributes.is_attr_set(segmentation_id)
-
-        if not (network_type_set or physical_network_set or
-                segmentation_id_set):
-            return
-
-        msg = _("Plugin does not support updating provider attributes")
-        raise q_exc.InvalidInput(error_message=msg)
-
     def create_network(self, context, network):
         (network_type, physical_network,
          vlan_id) = self._process_provider_create(context,
@@ -412,7 +396,7 @@ class LinuxBridgePluginV2(db_base_plugin_v2.QuantumDbPluginV2,
         return net
 
     def update_network(self, context, id, network):
-        self._check_provider_update(context, network['network'])
+        provider._raise_if_updates_provider_attributes(network['network'])
 
         session = context.session
         with session.begin(subtransactions=True):
index ed378e79ff69d11e5255998ae0d224dafe0bdfd2..55f4cff4cfdbbd7de9ea53bda54bef78cd4771b7 100644 (file)
@@ -134,13 +134,6 @@ class Ml2Plugin(db_base_plugin_v2.QuantumDbPluginV2,
             value = None
         return value
 
-    def _check_provider_update(self, context, attrs):
-        if (attributes.is_attr_set(attrs.get(provider.NETWORK_TYPE)) or
-            attributes.is_attr_set(attrs.get(provider.PHYSICAL_NETWORK)) or
-            attributes.is_attr_set(attrs.get(provider.SEGMENTATION_ID))):
-            msg = _("Plugin does not support updating provider attributes")
-            raise exc.InvalidInput(error_message=msg)
-
     def _extend_network_dict_provider(self, context, network):
         id = network['id']
         segments = db.get_network_segments(context.session, id)
@@ -213,14 +206,13 @@ class Ml2Plugin(db_base_plugin_v2.QuantumDbPluginV2,
         return result
 
     def update_network(self, context, id, network):
-        attrs = network['network']
-        self._check_provider_update(context, attrs)
+        provider._raise_if_updates_provider_attributes(network['network'])
 
         session = context.session
         with session.begin(subtransactions=True):
             result = super(Ml2Plugin, self).update_network(context, id,
                                                            network)
-            self._process_l3_update(context, attrs, id)
+            self._process_l3_update(context, network['network'], id)
             self._extend_network_dict_provider(context, result)
             self._extend_network_dict_l3(context, result)
 
index ace16bdfe3a938284710b8228ef4d1e196025494..3743da2d9a194852936e3353ec1195ec2a56e2e4 100644 (file)
@@ -219,21 +219,6 @@ class MellanoxEswitchPlugin(db_base_plugin_v2.QuantumDbPluginV2,
                 raise q_exc.InvalidInput(error_message=msg)
         return physical_network
 
-    def _check_provider_update(self, context, attrs):
-        network_type = attrs.get(provider.NETWORK_TYPE)
-        physical_network = attrs.get(provider.PHYSICAL_NETWORK)
-        segmentation_id = attrs.get(provider.SEGMENTATION_ID)
-
-        network_type_set = attributes.is_attr_set(network_type)
-        physical_network_set = attributes.is_attr_set(physical_network)
-        segmentation_id_set = attributes.is_attr_set(segmentation_id)
-
-        if not (network_type_set or physical_network_set or
-                segmentation_id_set):
-            return
-        msg = _("Plugin does not support updating provider attributes")
-        raise q_exc.InvalidInput(error_message=msg)
-
     def _process_port_binding_create(self, context, attrs):
         binding_profile = attrs.get(portbindings.PROFILE)
         binding_profile_set = attributes.is_attr_set(binding_profile)
@@ -288,7 +273,7 @@ class MellanoxEswitchPlugin(db_base_plugin_v2.QuantumDbPluginV2,
             return net
 
     def update_network(self, context, net_id, network):
-        self._check_provider_update(context, network['network'])
+        provider._raise_if_updates_provider_attributes(network['network'])
         session = context.session
         with session.begin(subtransactions=True):
             net = super(MellanoxEswitchPlugin, self).update_network(context,
index 5fbea4b4b2e67d7068b7d489ba4d0745ce6081e7..39ca9f365637ef350b12397064f9f65c97c285f6 100644 (file)
@@ -1035,6 +1035,7 @@ class NvpPluginV2(db_base_plugin_v2.QuantumDbPluginV2,
         return quantum_lswitches
 
     def update_network(self, context, id, network):
+        pnet._raise_if_updates_provider_attributes(network['network'])
         if network["network"].get("admin_state_up"):
             if network['network']["admin_state_up"] is False:
                 raise q_exc.NotImplementedError(_("admin_state_up=False "
index 1f45b0a245e5e318b1f6bd096280d238d159bd27..d5b0a4c2600482a1f9519678ee626229d324574a 100644 (file)
@@ -420,22 +420,6 @@ class OVSQuantumPluginV2(db_base_plugin_v2.QuantumDbPluginV2,
 
         return (network_type, physical_network, segmentation_id)
 
-    def _check_provider_update(self, context, attrs):
-        network_type = attrs.get(provider.NETWORK_TYPE)
-        physical_network = attrs.get(provider.PHYSICAL_NETWORK)
-        segmentation_id = attrs.get(provider.SEGMENTATION_ID)
-
-        network_type_set = attributes.is_attr_set(network_type)
-        physical_network_set = attributes.is_attr_set(physical_network)
-        segmentation_id_set = attributes.is_attr_set(segmentation_id)
-
-        if not (network_type_set or physical_network_set or
-                segmentation_id_set):
-            return
-
-        msg = _("Plugin does not support updating provider attributes")
-        raise q_exc.InvalidInput(error_message=msg)
-
     def create_network(self, context, network):
         (network_type, physical_network,
          segmentation_id) = self._process_provider_create(context,
@@ -480,7 +464,7 @@ class OVSQuantumPluginV2(db_base_plugin_v2.QuantumDbPluginV2,
         return net
 
     def update_network(self, context, id, network):
-        self._check_provider_update(context, network['network'])
+        provider._raise_if_updates_provider_attributes(network['network'])
 
         session = context.session
         with session.begin(subtransactions=True):