From e898683a2de67f938244cdfd5cb2f33ce17ac4c2 Mon Sep 17 00:00:00 2001 From: dkumbhar Date: Wed, 3 Nov 2021 09:49:56 +0000 Subject: [PATCH] trunk: add code to remove child and parent port Change-Id: I52877c74d4a039d09599e11a8f686a170c0a19ed --- .../services/trunk_client.py | 8 + .../scenario/test_ipv6_provider_networks.py | 2 + .../tests/scenario/test_trunk.py | 142 +++++++++++++++++- 3 files changed, 147 insertions(+), 5 deletions(-) diff --git a/vmware_nsx_tempest_plugin/services/trunk_client.py b/vmware_nsx_tempest_plugin/services/trunk_client.py index b593851..8a0cbe4 100644 --- a/vmware_nsx_tempest_plugin/services/trunk_client.py +++ b/vmware_nsx_tempest_plugin/services/trunk_client.py @@ -46,6 +46,7 @@ class BaseTrunkClient(base.BaseNetworkClient): class TrunkClient(BaseTrunkClient): create_trunk_path = '/trunks' + delete_trunk_path = '/trunks/%s' add_sub_port = '/trunks/%s/add_subports' remove_sub_port = '/trunks/%s/remove_subports' @@ -56,6 +57,13 @@ class TrunkClient(BaseTrunkClient): response_data = self.create_resource(self.create_trunk_path, post_data) return response_data['trunk']['id'] + def delete_trunk(self, trunkportid): + """Create a trunk parent port. + """ + delete_trunk_path = self.delete_trunk_path % trunkportid + response_data = self.delete_resource(delete_trunk_path) + return response_data + def add_subport(self, trunkportid, **kwargs): post_data = kwargs self.url = self.add_sub_port % trunkportid diff --git a/vmware_nsx_tempest_plugin/tests/nsxv3/scenario/test_ipv6_provider_networks.py b/vmware_nsx_tempest_plugin/tests/nsxv3/scenario/test_ipv6_provider_networks.py index e98d343..1802c38 100644 --- a/vmware_nsx_tempest_plugin/tests/nsxv3/scenario/test_ipv6_provider_networks.py +++ b/vmware_nsx_tempest_plugin/tests/nsxv3/scenario/test_ipv6_provider_networks.py @@ -316,6 +316,7 @@ class ProviderNetworks(feature_manager.FeatureManager): provider_network = self.provider_networks_topoloy( constants.VLAN_TYPE, tz_id=self.vlan_id) + time.sleep(constants.NSX_NETWORK_REALISE_TIMEOUT) nsx_network = self.nsx.get_logical_switch(provider_network['name'], provider_network['id']) self.assertEqual(4050, nsx_network['vlan']) @@ -344,6 +345,7 @@ class ProviderNetworks(feature_manager.FeatureManager): constants.VLAN_TYPE, tz_id=self.vlan_id, vlan_id_unique=1004) + time.sleep(constants.NSX_NETWORK_REALISE_TIMEOUT) nsx_network1 = self.nsx.get_logical_switch(provider_network1['name'], provider_network1['id']) self.assertEqual(1004, nsx_network1['vlan']) diff --git a/vmware_nsx_tempest_plugin/tests/scenario/test_trunk.py b/vmware_nsx_tempest_plugin/tests/scenario/test_trunk.py index b6826ab..6ac766d 100644 --- a/vmware_nsx_tempest_plugin/tests/scenario/test_trunk.py +++ b/vmware_nsx_tempest_plugin/tests/scenario/test_trunk.py @@ -77,6 +77,10 @@ class TestTrunkService(feature_manager.FeatureManager): def create_trunks(cls, **kwargs): return cls.trunk_client.create_trunk(**kwargs) + @classmethod + def delete_trunks(cls, trunkportid): + return cls.trunk_client.delete_trunk(trunkportid) + @classmethod def add_subports(cls, trunkportid, **kwargs): return cls.trunk_client.add_subport(trunkportid, **kwargs) @@ -94,6 +98,9 @@ class TestTrunkService(feature_manager.FeatureManager): trunk_id = self.create_trunks(**kwargs) return trunk_id + def delete_trunk_config(self, trunkportid): + self.delete_trunks(trunkportid) + def add_subport_to_parent(self, vlan_id, provider, project_id, child_port, childportname, trunkportid): @@ -282,7 +289,12 @@ class TestTrunkService(feature_manager.FeatureManager): ssh_src1 = self._get_remote_client(ip_address, username='ubuntu', use_password=False, private_key=keypair['private_key']) - remote_ip = parent2_port['port']['dns_assignment'][0]['ip_address'] + if 'dns_assignment' in parent2_port['port'].keys(): + remote_ip = \ + parent2_port['port']['dns_assignment'][0]['ip_address'] + else: + remote_ip = \ + parent2_port['port']['fixed_ips'][0]['ip_address'] # Verify connectivity between vms self._assign_ip_address(ssh_src1, 'eth0.101', child1_ip_vm1) self._assign_ip_address(ssh_src1, 'eth0.102', child2_ip_vm1) @@ -297,6 +309,26 @@ class TestTrunkService(feature_manager.FeatureManager): should_succeed=True) self.check_remote_connectivity(ssh_src1, child2_ip_vm2, should_succeed=True) + # Remove child subport + print('Removinfg child subport') + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p2['port']['id'], + trunkportid=trunk_parent2) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p2['port']['id'], + trunkportid=trunk_parent2) + self.delete_trunk_config(trunk_parent1) + self.delete_trunk_config(trunk_parent2) def _test_trunk_child_subport_add_delete(self, topology): project_id = topology['project_id'] @@ -380,7 +412,12 @@ class TestTrunkService(feature_manager.FeatureManager): ssh_src1 = self._get_remote_client(ip_address, username='ubuntu', use_password=False, private_key=keypair['private_key']) - remote_ip = parent2_port['port']['dns_assignment'][0]['ip_address'] + if 'dns_assignment' in parent2_port['port'].keys(): + remote_ip = \ + parent2_port['port']['dns_assignment'][0]['ip_address'] + else: + remote_ip = \ + parent2_port['port']['fixed_ips'][0]['ip_address'] # Verify connectivity between vms self._assign_ip_address(ssh_src1, 'eth0.101', child1_ip_vm1) self._assign_ip_address(ssh_src1, 'eth0.102', child2_ip_vm1) @@ -415,6 +452,26 @@ class TestTrunkService(feature_manager.FeatureManager): # Verify connectivity between vms self.check_remote_connectivity(ssh_src1, child2_ip_vm2, should_succeed=True) + # Remove child subport + print('Removinfg child subport') + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p2['port']['id'], + trunkportid=trunk_parent2) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p2['port']['id'], + trunkportid=trunk_parent2) + self.delete_trunk_config(trunk_parent1) + self.delete_trunk_config(trunk_parent2) def _test_trunk_instance_destroy_deploy(self, topology): project_id = topology['project_id'] @@ -498,7 +555,12 @@ class TestTrunkService(feature_manager.FeatureManager): ssh_src1 = self._get_remote_client(ip_address, username='ubuntu', use_password=False, private_key=keypair['private_key']) - remote_ip = parent2_port['port']['dns_assignment'][0]['ip_address'] + if 'dns_assignment' in parent2_port['port'].keys(): + remote_ip = \ + parent2_port['port']['dns_assignment'][0]['ip_address'] + else: + remote_ip = \ + parent2_port['port']['fixed_ips'][0]['ip_address'] # Verify connectivity between vms self._assign_ip_address(ssh_src1, 'eth0.101', child1_ip_vm1) self._assign_ip_address(ssh_src1, 'eth0.102', child2_ip_vm1) @@ -524,6 +586,26 @@ class TestTrunkService(feature_manager.FeatureManager): flavor=flavor_name) self.check_remote_connectivity(ssh_src1, remote_ip, should_succeed=True) + # Remove child subport + print('Removinfg child subport') + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p2['port']['id'], + trunkportid=trunk_parent2) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p2['port']['id'], + trunkportid=trunk_parent2) + self.delete_trunk_config(trunk_parent1) + self.delete_trunk_config(trunk_parent2) def _test_trunk_between_two_vms(self, topology): project_id = topology['project_id'] @@ -605,7 +687,12 @@ class TestTrunkService(feature_manager.FeatureManager): ssh_src1 = self._get_remote_client(ip_address, username='ubuntu', use_password=False, private_key=keypair['private_key']) - remote_ip = parent2_port['port']['dns_assignment'][0]['ip_address'] + if 'dns_assignment' in parent2_port['port'].keys(): + remote_ip = \ + parent2_port['port']['dns_assignment'][0]['ip_address'] + else: + remote_ip = \ + parent2_port['port']['fixed_ips'][0]['ip_address'] # Verify connectivity between vms self._assign_ip_address(ssh_src1, 'eth0.101', child1_ip_vm1) self._assign_ip_address(ssh_src1, 'eth0.102', child2_ip_vm1) @@ -624,6 +711,26 @@ class TestTrunkService(feature_manager.FeatureManager): should_succeed=True) self.check_remote_connectivity(ssh_src1, child2_ip_vm2, should_succeed=True) + # Remove child subport + print('Removinfg child subport') + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p2['port']['id'], + trunkportid=trunk_parent2) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p2['port']['id'], + trunkportid=trunk_parent2) + self.delete_trunk_config(trunk_parent1) + self.delete_trunk_config(trunk_parent2) def _test_trunk_instance_vm_vlan_diff_subnet(self, topology): project_id = topology['project_id'] @@ -705,7 +812,12 @@ class TestTrunkService(feature_manager.FeatureManager): ssh_src1 = self._get_remote_client(ip_address, username='ubuntu', use_password=False, private_key=keypair['private_key']) - remote_ip = parent2_port['port']['dns_assignment'][0]['ip_address'] + if 'dns_assignment' in parent2_port['port'].keys(): + remote_ip = \ + parent2_port['port']['dns_assignment'][0]['ip_address'] + else: + remote_ip = \ + parent2_port['port']['fixed_ips'][0]['ip_address'] # Verify connectivity between vms self._assign_ip_address(ssh_src1, 'eth0.201', child1_ip_vm1) self._assign_ip_address(ssh_src1, 'eth0.202', child2_ip_vm1) @@ -724,6 +836,26 @@ class TestTrunkService(feature_manager.FeatureManager): should_succeed=False) self.check_remote_connectivity(ssh_src1, child2_ip_vm2, should_succeed=False) + # Remove child subport + print('Removinfg child subport') + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p1['port']['id'], + trunkportid=trunk_parent1) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child1_p2['port']['id'], + trunkportid=trunk_parent2) + self.remove_subports(provider=True, + project_id=project_id, + child_port=child2_p2['port']['id'], + trunkportid=trunk_parent2) + self.delete_trunk_config(trunk_parent1) + self.delete_trunk_config(trunk_parent2) @decorators.idempotent_id('9d4192e9-b1b7-48c9-af04-67a82637c359') def test_trunk_between_two_vms(self):