From 479cb52a939c8b9aaa69d07f85a8959d31a9bc74 Mon Sep 17 00:00:00 2001 From: Salvatore Orlando Date: Fri, 24 May 2019 14:19:28 -0700 Subject: [PATCH] Pass NDRA profile id only when specified Otherwise the IGNORE constant will be passed down causing a failure when building the resource path. Also remove the local-service creation, as it is redundent, and the Tier1 already has it at this stage. Change-Id: I4f95e62c1a2e7f6891650bb5c33fb2777d240fb3 (cherry picked from commit a8ba441d8dc2cb38aa7e45d4c7efd7a5127b389c) --- .../tests/unit/v3/policy/test_resources.py | 32 +++++++++++++++---- vmware_nsxlib/v3/policy/core_resources.py | 19 +++++------ 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/vmware_nsxlib/tests/unit/v3/policy/test_resources.py b/vmware_nsxlib/tests/unit/v3/policy/test_resources.py index 161581ff..08a3d054 100644 --- a/vmware_nsxlib/tests/unit/v3/policy/test_resources.py +++ b/vmware_nsxlib/tests/unit/v3/policy/test_resources.py @@ -2755,11 +2755,6 @@ class TestPolicyTier1(NsxPolicyLibTestCase): ipv6_ndra_profile_id=ndra_profile, tenant=TEST_TENANT) - verify_def = core_defs.Tier1LocaleServiceDef( - tier1_id=tier1_id, - service_id=self.resourceApi._locale_service_id(tier1_id), - tenant=TEST_TENANT) - expected_def = core_defs.Tier1InterfaceDef( tier1_id=tier1_id, service_id=self.resourceApi._locale_service_id(tier1_id), @@ -2769,8 +2764,31 @@ class TestPolicyTier1(NsxPolicyLibTestCase): ipv6_ndra_profile_id=ndra_profile, tenant=TEST_TENANT) - self.assert_called_with_def(api_call, verify_def) - self.assert_called_with_def(api_call, expected_def, 1) + self.assert_called_with_def(api_call, expected_def) + + def test_add_router_interface_no_ndra(self): + tier1_id = '111' + interface_id = 'seg-if' + segment_id = 'seg' + ip_addr = '1.1.1.1' + prefix_len = '24' + subnet = core_defs.InterfaceSubnet([ip_addr], prefix_len) + with mock.patch.object(self.policy_api, + "create_or_update") as api_call: + self.resourceApi.add_segment_interface( + tier1_id, interface_id, segment_id, + subnets=[subnet], + tenant=TEST_TENANT) + + expected_def = core_defs.Tier1InterfaceDef( + tier1_id=tier1_id, + service_id=self.resourceApi._locale_service_id(tier1_id), + interface_id=interface_id, + segment_id=segment_id, + subnets=[subnet], + tenant=TEST_TENANT) + + self.assert_called_with_def(api_call, expected_def) def test_remove_router_interface(self): tier1_id = '111' diff --git a/vmware_nsxlib/v3/policy/core_resources.py b/vmware_nsxlib/v3/policy/core_resources.py index 01222dbb..94e8761b 100644 --- a/vmware_nsxlib/v3/policy/core_resources.py +++ b/vmware_nsxlib/v3/policy/core_resources.py @@ -1046,16 +1046,17 @@ class NsxPolicyTier1Api(NsxPolicyResourceBase): def add_segment_interface(self, tier1_id, interface_id, segment_id, subnets, ipv6_ndra_profile_id=IGNORE, tenant=constants.POLICY_INFRA_TENANT): - self.create_locale_service(tier1_id, tenant) + args = {'tier1_id': tier1_id, + 'service_id': self._locale_service_id(tier1_id), + 'interface_id': interface_id, + 'segment_id': segment_id, + 'subnets': subnets, + 'tenant': tenant} - t1interface_def = core_defs.Tier1InterfaceDef( - tier1_id=tier1_id, - service_id=self._locale_service_id(tier1_id), - interface_id=interface_id, - segment_id=segment_id, - subnets=subnets, - ipv6_ndra_profile_id=ipv6_ndra_profile_id, - tenant=tenant) + if ipv6_ndra_profile_id != IGNORE: + args['ipv6_ndra_profile_id'] = ipv6_ndra_profile_id + + t1interface_def = core_defs.Tier1InterfaceDef(**args) self.policy_api.create_or_update(t1interface_def) def remove_segment_interface(self, tier1_id, interface_id,