From 498a8215bdc75bb4630004d812be5702f82f728e Mon Sep 17 00:00:00 2001 From: Gary Kotton <gkotton@vmware.com> Date: Sun, 17 Dec 2017 10:38:50 +0200 Subject: [PATCH] NSX_V3: enable non native DHCP to work with AZ support The dhcp and metadata prodiles do not need to be set. Change-Id: I5e7f50d9e9c8517372e04317b17f99434aaba080 --- .../plugins/nsx_v3/availability_zones.py | 44 +++++++++++-------- vmware_nsx/plugins/nsx_v3/plugin.py | 8 ---- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/vmware_nsx/plugins/nsx_v3/availability_zones.py b/vmware_nsx/plugins/nsx_v3/availability_zones.py index 98f8800913..9677d9e770 100644 --- a/vmware_nsx/plugins/nsx_v3/availability_zones.py +++ b/vmware_nsx/plugins/nsx_v3/availability_zones.py @@ -37,27 +37,33 @@ class NsxV3AvailabilityZone(common_az.ConfiguredAvailabilityZone): def init_from_config_section(self, az_name): az_info = config.get_nsxv3_az_opts(self.name) - # The optional parameters will get the global values if not - # defined for this AZ - self.metadata_proxy = az_info.get('metadata_proxy') - if not self.metadata_proxy: - raise nsx_exc.NsxInvalidConfiguration( - opt_name="metadata_proxy", - opt_value='None', - reason=(_("metadata_proxy for availability zone %s " - "must be defined") % az_name)) + if cfg.CONF.nsx_v3.native_dhcp_metadata: + # The optional parameters will get the global values if not + # defined for this AZ + self.metadata_proxy = az_info.get('metadata_proxy') + if not self.metadata_proxy: + raise nsx_exc.NsxInvalidConfiguration( + opt_name="metadata_proxy", + opt_value='None', + reason=(_("metadata_proxy for availability zone %s " + "must be defined") % az_name)) - self.dhcp_profile = az_info.get('dhcp_profile') - if not self.dhcp_profile: - raise nsx_exc.NsxInvalidConfiguration( - opt_name="dhcp_profile", - opt_value='None', - reason=(_("dhcp_profile for availability zone %s " - "must be defined") % az_name)) + self.dhcp_profile = az_info.get('dhcp_profile') + if not self.dhcp_profile: + raise nsx_exc.NsxInvalidConfiguration( + opt_name="dhcp_profile", + opt_value='None', + reason=(_("dhcp_profile for availability zone %s " + "must be defined") % az_name)) - self.native_metadata_route = az_info.get('native_metadata_route') - if self.native_metadata_route is None: - self.native_metadata_route = cfg.CONF.nsx_v3.native_metadata_route + self.native_metadata_route = az_info.get('native_metadata_route') + if self.native_metadata_route is None: + nmr = cfg.CONF.nsx_v3.native_metadata_route + self.native_metadata_route = nmr + else: + self.metadata_proxy = None + self.dhcp_profile = None + self.native_metadata_route = None self.dns_domain = az_info.get('dns_domain') if self.dns_domain is None: diff --git a/vmware_nsx/plugins/nsx_v3/plugin.py b/vmware_nsx/plugins/nsx_v3/plugin.py index 94de6b7554..f7d094b41f 100644 --- a/vmware_nsx/plugins/nsx_v3/plugin.py +++ b/vmware_nsx/plugins/nsx_v3/plugin.py @@ -375,14 +375,6 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin, return lb_driver_v2.DummyLoadbalancerDriverV2() def init_availability_zones(self): - # availability zones are supported only with native dhcp - # if not - the default az will be loaded and used internally only - if (cfg.CONF.nsx_v3.availability_zones and - not cfg.CONF.nsx_v3.native_dhcp_metadata): - msg = _("Availability zones are not supported without native " - "DHCP metadata") - LOG.error(msg) - raise n_exc.InvalidInput(error_message=msg) validate_default = not self._is_sub_plugin self._availability_zones_data = nsx_az.NsxV3AvailabilityZones( validate_default=validate_default)