From 6145ca3c30d5d6b56697c3734096d020fd4cf107 Mon Sep 17 00:00:00 2001 From: Boden R Date: Fri, 20 Oct 2017 11:40:10 -0600 Subject: [PATCH] use availability zone api def from lib Commit I1d4ded9959c05c65b04b118b1c31b8e6db652e67 rehomed the availability zone extension's API definition into neutron-lib and I761381de0d6e26a0380386700e7921b824991669 will consume it in neutron. This patch switches the relevant code over to use neutron-lib rather then neutron. Change-Id: I2145fb4664bfa5c0af8937be6c6932883f278983 --- vmware_nsx/common/availability_zones.py | 11 ++++--- .../extension_drivers/dns_integration.py | 6 ++-- vmware_nsx/plugins/nsx_v/plugin.py | 33 ++++++++++--------- vmware_nsx/plugins/nsx_v3/plugin.py | 25 +++++++------- 4 files changed, 39 insertions(+), 36 deletions(-) diff --git a/vmware_nsx/common/availability_zones.py b/vmware_nsx/common/availability_zones.py index 7b58bf89a9..bfb6ae1471 100644 --- a/vmware_nsx/common/availability_zones.py +++ b/vmware_nsx/common/availability_zones.py @@ -15,8 +15,9 @@ import abc -from neutron.extensions import availability_zone as az_ext +from neutron_lib.api.definitions import availability_zone as az_def from neutron_lib import exceptions as n_exc +from neutron_lib.exceptions import availability_zone as az_exc from vmware_nsx._i18n import _ from vmware_nsx.common import exceptions as nsx_exc @@ -133,21 +134,21 @@ class NSXAvailabilityZonesPluginCommon(object): # zones diff = (set(availability_zones) - set(self.get_azs_names())) if diff: - raise az_ext.AvailabilityZoneNotFound( + raise az_exc.AvailabilityZoneNotFound( availability_zone=diff.pop()) def get_az_by_hint(self, hint): az = self._availability_zones_data.get_availability_zone(hint) if not az: - raise az_ext.AvailabilityZoneNotFound(availability_zone=hint) + raise az_def.AvailabilityZoneNotFound(availability_zone=hint) return az def get_default_az(self): return self._availability_zones_data.get_default_availability_zone() def get_obj_az_by_hints(self, obj): - if az_ext.AZ_HINTS in obj: - for hint in obj[az_ext.AZ_HINTS]: + if az_def.AZ_HINTS in obj: + for hint in obj[az_def.AZ_HINTS]: # For now we use only the first hint return self.get_az_by_hint(hint) diff --git a/vmware_nsx/extension_drivers/dns_integration.py b/vmware_nsx/extension_drivers/dns_integration.py index f86edcdd6e..cae8b2a78f 100644 --- a/vmware_nsx/extension_drivers/dns_integration.py +++ b/vmware_nsx/extension_drivers/dns_integration.py @@ -14,6 +14,7 @@ # License for the specific language governing permissions and limitations # under the License. +from neutron_lib.api.definitions import availability_zone as az_def from neutron_lib.api.definitions import dns from neutron_lib.api import validators from neutron_lib import context as n_context @@ -22,7 +23,6 @@ from neutron_lib.plugins import directory from oslo_config import cfg from oslo_log import log as logging -from neutron.extensions import availability_zone as az_ext from neutron.objects import network as net_obj from neutron.objects import ports as port_obj from neutron.services.externaldns import driver @@ -292,8 +292,8 @@ class DNSExtensionDriverNSXv3(DNSExtensionDriver): if not context: context = n_context.get_admin_context() network = self._get_network(context, network_id) - if az_ext.AZ_HINTS in network and network[az_ext.AZ_HINTS]: - az_name = network[az_ext.AZ_HINTS][0] + if az_def.AZ_HINTS in network and network[az_def.AZ_HINTS]: + az_name = network[az_def.AZ_HINTS][0] return self._availability_zones.get_availability_zone(az_name) return self._availability_zones.get_default_availability_zone() diff --git a/vmware_nsx/plugins/nsx_v/plugin.py b/vmware_nsx/plugins/nsx_v/plugin.py index 596ced1aa0..4a644c9c28 100644 --- a/vmware_nsx/plugins/nsx_v/plugin.py +++ b/vmware_nsx/plugins/nsx_v/plugin.py @@ -17,6 +17,7 @@ from distutils import version import uuid import netaddr +from neutron_lib.api.definitions import availability_zone as az_def from neutron_lib.api.definitions import external_net as extnet_apidef from neutron_lib.api.definitions import extra_dhcp_opt as ext_edo from neutron_lib.api.definitions import network as net_def @@ -25,6 +26,7 @@ from neutron_lib.api.definitions import port_security as psec 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 from neutron_lib.callbacks import events from neutron_lib.callbacks import registry from neutron_lib.callbacks import resources @@ -72,7 +74,6 @@ from neutron.db import quota_db # noqa from neutron.db import securitygroups_db from neutron.db import vlantransparent_db from neutron.extensions import allowedaddresspairs as addr_pair -from neutron.extensions import availability_zone as az_ext from neutron.extensions import flavors from neutron.extensions import l3 from neutron.extensions import multiprovidernet as mpnet @@ -594,9 +595,9 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin, raise n_exc.InvalidInput(error_message=err_msg) def _get_network_az_from_net_data(self, net_data): - if az_ext.AZ_HINTS in net_data and net_data[az_ext.AZ_HINTS]: + if az_def.AZ_HINTS in net_data and net_data[az_def.AZ_HINTS]: return self._availability_zones_data.get_availability_zone( - net_data[az_ext.AZ_HINTS][0]) + net_data[az_def.AZ_HINTS][0]) return self.get_default_az() def _get_network_az_dvs_id(self, net_data): @@ -728,7 +729,7 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin, for binding in bindings] # update availability zones - network[az_ext.AVAILABILITY_ZONES] = ( + network[az_def.COLLECTION_NAME] = ( self._get_network_availability_zones(context, network)) def _get_subnet_as_providers(self, context, subnet, nw_dict=None): @@ -995,9 +996,9 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin, def _validate_availability_zones_in_obj(self, context, resource_type, obj_data): - if az_ext.AZ_HINTS in obj_data: + if az_def.AZ_HINTS in obj_data: self.validate_availability_zones(context, resource_type, - obj_data[az_ext.AZ_HINTS]) + obj_data[az_def.AZ_HINTS]) def validate_availability_zones(self, context, resource_type, availability_zones): @@ -1212,15 +1213,15 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin, {'network': {'vlan_transparent': vlt}}) # update the network with the availability zone hints - if az_ext.AZ_HINTS in net_data: - az_hints = az_ext.convert_az_list_to_string( - net_data[az_ext.AZ_HINTS]) + if az_def.AZ_HINTS in net_data: + az_hints = az_validator.convert_az_list_to_string( + net_data[az_def.AZ_HINTS]) super(NsxVPluginV2, self).update_network(context, new_net['id'], - {'network': {az_ext.AZ_HINTS: az_hints}}) - new_net[az_ext.AZ_HINTS] = az_hints + {'network': {az_def.AZ_HINTS: az_hints}}) + new_net[az_def.AZ_HINTS] = az_hints # still no availability zones until subnets creation - new_net[az_ext.AVAILABILITY_ZONES] = [] + new_net[az_def.COLLECTION_NAME] = [] # DB Operations for setting the network as external self._process_l3_create(context, new_net, net_data) @@ -2966,14 +2967,14 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin, # Go over the attributes of the metainfo allowed_keys = [ROUTER_SIZE, 'router_type', 'distributed', - az_ext.AZ_HINTS] + az_def.AZ_HINTS] # This info will be used later on # and is not part of standard router config future_use_keys = ['syslog'] for k, v in metainfo.items(): if k in allowed_keys: #special case for availability zones hints which are an array - if k == az_ext.AZ_HINTS: + if k == az_def.AZ_HINTS: if not isinstance(v, list): v = [v] # The default az hists is an empty array @@ -3167,8 +3168,8 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin, @staticmethod @resource_extend.extends([net_def.COLLECTION_NAME]) def _extend_availability_zone_hints(net_res, net_db): - net_res[az_ext.AZ_HINTS] = az_ext.convert_az_string_to_list( - net_db[az_ext.AZ_HINTS]) + net_res[az_def.AZ_HINTS] = az_validator.convert_az_string_to_list( + net_db[az_def.AZ_HINTS]) def _get_availability_zone_name_by_edge(self, context, edge_id): az_name = nsxv_db.get_edge_availability_zone( diff --git a/vmware_nsx/plugins/nsx_v3/plugin.py b/vmware_nsx/plugins/nsx_v3/plugin.py index 07305c7cc1..a3b959b5ca 100644 --- a/vmware_nsx/plugins/nsx_v3/plugin.py +++ b/vmware_nsx/plugins/nsx_v3/plugin.py @@ -14,9 +14,11 @@ # under the License. import netaddr +from neutron_lib.api.definitions import availability_zone as az_def from neutron_lib.api.definitions import external_net as extnet_apidef from neutron_lib.api.definitions import network as net_def from neutron_lib.api.definitions import port_security as psec +from neutron_lib.api.validators import availability_zone as az_validator from neutron_lib.exceptions import port_security as psec_exc from neutron_lib.services.qos import constants as qos_consts @@ -47,7 +49,6 @@ from neutron.db import portbindings_db from neutron.db import portsecurity_db from neutron.db import securitygroups_db from neutron.extensions import allowedaddresspairs as addr_pair -from neutron.extensions import availability_zone as az_ext from neutron.extensions import l3 from neutron.extensions import providernet from neutron.extensions import securitygroup as ext_sg @@ -911,9 +912,9 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin, tenant_id = net_data['tenant_id'] # validate the availability zone, and get the AZ object - if az_ext.AZ_HINTS in net_data: + if az_def.AZ_HINTS in net_data: self.validate_availability_zones(context, 'network', - net_data[az_ext.AZ_HINTS]) + net_data[az_def.AZ_HINTS]) az = self.get_obj_az_by_hints(net_data) self._ensure_default_security_group(context, tenant_id) @@ -940,14 +941,14 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin, context, net_data, created_net) self._process_l3_create(context, created_net, net_data) - if az_ext.AZ_HINTS in net_data: + if az_def.AZ_HINTS in net_data: # Update the AZ hints in the neutron object - az_hints = az_ext.convert_az_list_to_string( - net_data[az_ext.AZ_HINTS]) + az_hints = az_validator.convert_az_list_to_string( + net_data[az_def.AZ_HINTS]) super(NsxV3Plugin, self).update_network( context, created_net['id'], - {'network': {az_ext.AZ_HINTS: az_hints}}) + {'network': {az_def.AZ_HINTS: az_hints}}) if is_provider_net: # Save provider network fields, needed by get_network() @@ -4174,16 +4175,16 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin, @staticmethod @resource_extend.extends([net_def.COLLECTION_NAME]) def _extend_availability_zone_hints(net_res, net_db): - net_res[az_ext.AZ_HINTS] = az_ext.convert_az_string_to_list( - net_db[az_ext.AZ_HINTS]) + net_res[az_def.AZ_HINTS] = az_validator.convert_az_string_to_list( + net_db[az_def.AZ_HINTS]) if cfg.CONF.nsx_v3.native_dhcp_metadata: # When using the configured AZs, the az will always be the same # as the hint (or default if none) - if net_res[az_ext.AZ_HINTS]: - az_name = net_res[az_ext.AZ_HINTS][0] + if net_res[az_def.AZ_HINTS]: + az_name = net_res[az_def.AZ_HINTS][0] else: az_name = nsx_az.DEFAULT_NAME - net_res[az_ext.AVAILABILITY_ZONES] = [az_name] + net_res[az_def.COLLECTION_NAME] = [az_name] def recalculate_snat_rules_for_router(self, context, router, subnets): """Recalculate router snat rules for specific subnets.