From ef6cb79f4682f8373d87f444111c0edbda8c9211 Mon Sep 17 00:00:00 2001 From: Salvatore Orlando Date: Thu, 10 Dec 2020 13:20:06 -0800 Subject: [PATCH] Move raise_if_updates_provider_attributes in plugin Do not leverage anymore the code from neutron extensions package. Change-Id: Ifc5e19e8eb7276f4b24d26c30b0c5300c59c7463 --- vmware_nsx/plugins/common/plugin.py | 11 +++++++++++ vmware_nsx/plugins/dvs/plugin.py | 3 +-- vmware_nsx/plugins/nsx_mh/plugin.py | 13 +++++++++++-- vmware_nsx/plugins/nsx_v/plugin.py | 3 +-- vmware_nsx/plugins/nsx_v3/plugin.py | 3 +-- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/vmware_nsx/plugins/common/plugin.py b/vmware_nsx/plugins/common/plugin.py index d23c5acd52..b213674f62 100644 --- a/vmware_nsx/plugins/common/plugin.py +++ b/vmware_nsx/plugins/common/plugin.py @@ -27,6 +27,7 @@ from neutron_lib.api.definitions import address_scope as ext_address_scope from neutron_lib.api.definitions import availability_zone as az_def from neutron_lib.api.definitions import network as net_def from neutron_lib.api.definitions import port as port_def +from neutron_lib.api.definitions import provider_net as pnet from neutron_lib.api.definitions import subnet as subnet_def from neutron_lib.api import validators from neutron_lib.api.validators import availability_zone as az_validator @@ -382,6 +383,16 @@ class NsxPluginBase(db_base_plugin_v2.NeutronDbPluginV2, "Default security group already created", tenant_id) return self._get_default_sg_id(context, tenant_id) + def _raise_if_updates_provider_attributes(self, attrs): + """Raise exception if provider attributes are present. + + This method is used for plugins that do not support + updating provider networks. + """ + if any(validators.is_attr_set(attrs.get(a)) for a in pnet.ATTRIBUTES): + msg = _("Plugin does not support updating provider attributes") + raise n_exc.InvalidInput(error_message=msg) + # Register the callback def _validate_network_has_subnet(resource, event, trigger, **kwargs): diff --git a/vmware_nsx/plugins/dvs/plugin.py b/vmware_nsx/plugins/dvs/plugin.py index 852137dfac..f4bac790d3 100644 --- a/vmware_nsx/plugins/dvs/plugin.py +++ b/vmware_nsx/plugins/dvs/plugin.py @@ -38,7 +38,6 @@ from neutron.db import portbindings_db from neutron.db import portsecurity_db from neutron.db import securitygroups_db from neutron.db import vlantransparent_db as vlan_ext_db -from neutron.extensions import providernet from neutron.extensions import securitygroup as ext_sg from neutron.plugins.common import utils from neutron.quota import resource_registry @@ -339,7 +338,7 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin, def update_network(self, context, id, network): net_attrs = network['network'] - providernet._raise_if_updates_provider_attributes(net_attrs) + self._raise_if_updates_provider_attributes(net_attrs) with db_api.context_manager.writer.using(context): net_res = super(NsxDvsV2, self).update_network(context, id, diff --git a/vmware_nsx/plugins/nsx_mh/plugin.py b/vmware_nsx/plugins/nsx_mh/plugin.py index 676c7a5c2f..e43744ba6c 100644 --- a/vmware_nsx/plugins/nsx_mh/plugin.py +++ b/vmware_nsx/plugins/nsx_mh/plugin.py @@ -60,7 +60,6 @@ from neutron.db import portbindings_db from neutron.db import portsecurity_db from neutron.db import quota_db # noqa from neutron.db import securitygroups_db -from neutron.extensions import providernet from neutron.extensions import securitygroup as ext_sg from neutron.plugins.common import utils from neutron.quota import resource_registry @@ -1068,8 +1067,18 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin, [db_utils.resource_fields(network, fields) for network in networks]) + def _raise_if_updates_provider_attributes(self, attrs): + """Raise exception if provider attributes are present. + + This method is used for plugins that do not support + updating provider networks. + """ + if any(validators.is_attr_set(attrs.get(a)) for a in pnet.ATTRIBUTES): + msg = _("Plugin does not support updating provider attributes") + raise n_exc.InvalidInput(error_message=msg) + def update_network(self, context, id, network): - providernet._raise_if_updates_provider_attributes(network['network']) + self._raise_if_updates_provider_attributes(network['network']) if network["network"].get("admin_state_up") is False: raise NotImplementedError(_("admin_state_up=False networks " "are not supported.")) diff --git a/vmware_nsx/plugins/nsx_v/plugin.py b/vmware_nsx/plugins/nsx_v/plugin.py index 3d94375fe5..4846c82839 100644 --- a/vmware_nsx/plugins/nsx_v/plugin.py +++ b/vmware_nsx/plugins/nsx_v/plugin.py @@ -83,7 +83,6 @@ from neutron.db import portsecurity_db from neutron.db import quota_db # noqa from neutron.db import securitygroups_db from neutron.db import vlantransparent_db -from neutron.extensions import providernet from neutron.extensions import securitygroup as ext_sg from neutron.objects import securitygroup from neutron.plugins.common import utils @@ -1609,7 +1608,7 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin, and not validators.is_attr_set( attrs.get(pnet.SEGMENTATION_ID))): return - providernet._raise_if_updates_provider_attributes(attrs) + super(NsxVPluginV2, self)._raise_if_updates_provider_attributes(attrs) def _update_vlan_network_dvs_ids(self, context, network, new_physical_network, az_dvs): diff --git a/vmware_nsx/plugins/nsx_v3/plugin.py b/vmware_nsx/plugins/nsx_v3/plugin.py index 83fb339ccd..5ee196fad8 100644 --- a/vmware_nsx/plugins/nsx_v3/plugin.py +++ b/vmware_nsx/plugins/nsx_v3/plugin.py @@ -59,7 +59,6 @@ from neutron.db import portbindings_db from neutron.db import portsecurity_db from neutron.db import securitygroups_db from neutron.db import vlantransparent_db -from neutron.extensions import providernet from neutron.extensions import securitygroup as ext_sg from neutron.plugins.common import utils as n_utils from neutron.plugins.ml2 import models as pbin_model @@ -1440,7 +1439,7 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin, original_net = super(NsxV3Plugin, self).get_network(context, id) net_data = network['network'] # Neutron does not support changing provider network values - providernet._raise_if_updates_provider_attributes(net_data) + self._raise_if_updates_provider_attributes(net_data) self._validate_qos_policy_id( context, net_data.get(qos_consts.QOS_POLICY_ID)) extern_net = self._network_is_external(context, id)