commit 6ed8ee525c54ea358d63bfe1423993c1e571cea6 Author: shubhamk Date: Tue Oct 6 06:16:36 2020 +0000 Tempest fixes for Policy DHCP cases and mac learning - Bug 2648169 Change-Id: Icf5e751e72c5288930443067e71cdc0e1601bf09 diff --git a/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_native_dhcp.py b/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_native_dhcp.py index 3bc77ae..8eb4542 100644 --- a/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_native_dhcp.py +++ b/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_native_dhcp.py @@ -19,6 +19,7 @@ from tempest.lib.common.utils import data_utils from tempest.lib.common.utils import test_utils from tempest.lib import decorators +from vmware_nsx_tempest_plugin.services import nsxp_client from vmware_nsx_tempest_plugin.services import nsxv3_client CONF = config.CONF @@ -50,6 +51,9 @@ class NSXv3NativeDHCPTest(base.BaseNetworkTest): cls.nsx = nsxv3_client.NSXV3Client(CONF.nsxv3.nsx_manager, CONF.nsxv3.nsx_user, CONF.nsxv3.nsx_password) + cls.nsxp = nsxp_client.NSXPClient(CONF.nsxv3.nsx_manager, + CONF.nsxv3.nsx_user, + CONF.nsxv3.nsx_password) cls._subnet_data = {'gateway': '192.168.100.1', 'cidr': '192.168.100.0/24', 'ip_version': '4', @@ -74,9 +78,10 @@ class NSXv3NativeDHCPTest(base.BaseNetworkTest): network_id=net_id, ip_version=self._subnet_data['ip_version'], cidr=self._subnet_data['cidr'], **kwargs) self.assertEqual('ACTIVE', network['status']) - nsx_dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], - network['id']) - dhcp_server = nsx_dhcp_server['ipv4_dhcp_server'] + if CONF.network.backend != 'nsxp': + nsx_dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + network['id']) + dhcp_server = nsx_dhcp_server['ipv4_dhcp_server'] if 'gateway' in kwargs: self.assertEqual(dhcp_server['gateway_ip'], self._subnet_data['gateway']) @@ -88,7 +93,12 @@ class NSXv3NativeDHCPTest(base.BaseNetworkTest): if 'dns_nameservers' in kwargs: self.assertEqual(subnet['subnet']['dns_nameservers'], self._subnet_data['dns_nameservers']) - if 'host_routes' in kwargs: + if 'host_routes' in kwargs and \ + CONF.network.backend != 'nsxp': + # API is not available in Policy to get Host-route + nsx_dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + network['id']) + dhcp_server = nsx_dhcp_server['ipv4_dhcp_server'] host_routes = dhcp_server['options']['option121']['static_routes'] route = {'next_hop': self._subnet_data['host_routes'][0]['nexthop'], @@ -104,14 +114,21 @@ class NSXv3NativeDHCPTest(base.BaseNetworkTest): net_id = network['id'] self.addCleanup(test_utils.call_and_ignore_notfound_exc, self.networks_client.delete_network, net_id) - self.create_subnet(network) + subnet = self.create_subnet(network) self.assertEqual('ACTIVE', network['status']) - nsx_network = self.nsx.get_logical_switch(network['name'], - network['id']) - self.assertIsNotNone(nsx_network) - dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + if CONF.network.backend != 'nsxp': + nsx_network = self.nsx.get_logical_switch(network['name'], + network['id']) + self.assertIsNotNone(nsx_network) + dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + network['id']) + self.assertIsNotNone(dhcp_server) + else: + nsx_network = self.nsxp.get_logical_switch(network['name'], network['id']) - self.assertIsNotNone(dhcp_server) + self.assertIsNotNone(nsx_network['subnets'][0]['dhcp_config']) + self.assertEqual(nsx_network['subnets'][0]['network'], + subnet['cidr']) @decorators.attr(type='nsxv3') @decorators.idempotent_id('cc970d9b-786a-49c3-8bfb-2f8bc5580ead') @@ -129,13 +146,29 @@ class NSXv3NativeDHCPTest(base.BaseNetworkTest): ip_version=self._subnet_data['ip_version']) self.assertEqual(self._subnet_data['cidr'], subnet['subnet']['cidr']) - nsx_dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], - network['id']) - dhcp_server = nsx_dhcp_server['ipv4_dhcp_server'] - self.assertIsNotNone(dhcp_server) - self.assertEqual(dhcp_server['dhcp_server_ip'], "192.168.100.2/24") - self.assertEqual(dhcp_server['gateway_ip'], - self._subnet_data['gateway']) + if CONF.network.backend != 'nsxp': + nsx_dhcp_server = self.nsx.get_logical_dhcp_server( + network['name'], network['id']) + dhcp_server = nsx_dhcp_server['ipv4_dhcp_server'] + self.assertIsNotNone(dhcp_server) + self.assertEqual(dhcp_server['dhcp_server_ip'], + "192.168.100.2/24") + self.assertEqual(dhcp_server['gateway_ip'], + self._subnet_data['gateway']) + + else: + nsx_network = self.nsxp.get_logical_switch(network['name'], + network['id']) + self.assertIsNotNone(nsx_network['subnets'][0]['dhcp_config']) + self.assertEqual(nsx_network['subnets'][0]['network'], + self._subnet_data['cidr']) + dhcp_server = nsx_network['subnets'][0]['dhcp_config'] + self.assertIsNotNone(dhcp_server) + self.assertEqual(dhcp_server['server_address'], + "192.168.100.2/24") + self.assertEqual( + nsx_network['subnets'][0]['gateway_address'].split('/')[0], + self._subnet_data['gateway']) @decorators.attr(type='nsxv3') @decorators.idempotent_id('acee6ccb-92bb-48d8-ae6b-b10783b3791a') diff --git a/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_native_dhcp_negative.py b/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_native_dhcp_negative.py index 4f1c0d8..e7c5028 100644 --- a/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_native_dhcp_negative.py +++ b/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_native_dhcp_negative.py @@ -13,15 +13,13 @@ # License for the specific language governing permissions and limitations # under the License. -import time - from tempest.api.network import base from tempest import config from tempest.lib.common.utils import data_utils from tempest.lib.common.utils import test_utils from tempest.lib import decorators -from vmware_nsx_tempest_plugin.common import constants +from vmware_nsx_tempest_plugin.services import nsxp_client from vmware_nsx_tempest_plugin.services import nsxv3_client CONF = config.CONF @@ -49,6 +47,9 @@ class NSXv3NativeDHCPNegative(base.BaseNetworkTest): cls.nsx = nsxv3_client.NSXV3Client(CONF.nsxv3.nsx_manager, CONF.nsxv3.nsx_user, CONF.nsxv3.nsx_password) + cls.nsxp = nsxp_client.NSXPClient(CONF.nsxv3.nsx_manager, + CONF.nsxv3.nsx_user, + CONF.nsxv3.nsx_password) @decorators.attr(type='nsxv3') @decorators.attr(type=['negative']) @@ -60,14 +61,18 @@ class NSXv3NativeDHCPNegative(base.BaseNetworkTest): self.addCleanup(test_utils.call_and_ignore_notfound_exc, self.networks_client.delete_network, net_id) self.assertTrue('ACTIVE', network['status']) - if CONF.network.backend == 'nsxp': - time.sleep(constants.NSXP_BACKEND_SMALL_TIME_INTERVAL) - nsx_switch = self.nsx.get_logical_switch(network['name'], - network['id']) - dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + if CONF.network.backend != 'nsxp': + nsx_switch = self.nsx.get_logical_switch(network['name'], + network['id']) + dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + network['id']) + self.assertIsNotNone(nsx_switch) + self.assertIsNone(dhcp_server) + else: + nsx_network = self.nsxp.get_logical_switch(network['name'], network['id']) - self.assertIsNotNone(nsx_switch) - self.assertIsNone(dhcp_server) + self.assertIsNotNone(nsx_network) + self.assertEqual('subnets' in nsx_network, False) @decorators.attr(type='nsxv3') @decorators.attr(type=['negative']) @@ -80,14 +85,18 @@ class NSXv3NativeDHCPNegative(base.BaseNetworkTest): self.networks_client.delete_network, net_id) self.create_subnet(network, enable_dhcp=False) self.assertTrue('ACTIVE', network['status']) - if CONF.network.backend == 'nsxp': - time.sleep(constants.NSXP_BACKEND_SMALL_TIME_INTERVAL) - nsx_switch = self.nsx.get_logical_switch(network['name'], - network['id']) - dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + if CONF.network.backend != 'nsxp': + nsx_switch = self.nsx.get_logical_switch(network['name'], + network['id']) + dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + network['id']) + self.assertIsNotNone(nsx_switch) + self.assertIsNone(dhcp_server) + else: + nsx_network = self.nsxp.get_logical_switch(network['name'], network['id']) - self.assertIsNotNone(nsx_switch) - self.assertIsNone(dhcp_server) + self.assertIsNotNone(nsx_network) + self.assertEqual('subnets' in nsx_network, False) @decorators.attr(type='nsxv3') @decorators.attr(type=['negative']) @@ -100,18 +109,29 @@ class NSXv3NativeDHCPNegative(base.BaseNetworkTest): self.networks_client.delete_network, net_id) subnet = self.create_subnet(network) self.assertTrue('ACTIVE', network['status']) - if CONF.network.backend == 'nsxp': - time.sleep(constants.NSXP_BACKEND_SMALL_TIME_INTERVAL) - nsx_switch = self.nsx.get_logical_switch(network['name'], - network['id']) - dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + if CONF.network.backend != 'nsxp': + nsx_switch = self.nsx.get_logical_switch(network['name'], + network['id']) + dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + network['id']) + self.assertIsNotNone(nsx_switch) + self.assertIsNotNone(dhcp_server) + else: + nsx_network = self.nsxp.get_logical_switch(network['name'], network['id']) - self.assertIsNotNone(nsx_switch) - self.assertIsNotNone(dhcp_server) + self.assertIsNotNone(nsx_network) + self.assertEqual('subnets' in nsx_network, True) # Update subnet to disable DHCP self.subnets_client.update_subnet(subnet['id'], enable_dhcp=False) - if CONF.network.backend == 'nsxp': - time.sleep(constants.NSXP_BACKEND_SMALL_TIME_INTERVAL) - dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + if CONF.network.backend != 'nsxp': + nsx_switch = self.nsx.get_logical_switch(network['name'], + network['id']) + dhcp_server = self.nsx.get_logical_dhcp_server(network['name'], + network['id']) + self.assertIsNotNone(nsx_switch) + self.assertIsNone(dhcp_server) + else: + nsx_network = self.nsxp.get_logical_switch(network['name'], network['id']) - self.assertIsNone(dhcp_server) + self.assertIsNotNone(nsx_network) + self.assertEqual(nsx_network['subnets'], []) diff --git a/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_nsx_mac_learning.py b/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_nsx_mac_learning.py index 4fb9153..33fb5ae 100644 --- a/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_nsx_mac_learning.py +++ b/vmware_nsx_tempest_plugin/tests/nsxv3/api/test_nsx_mac_learning.py @@ -224,9 +224,9 @@ class NSXv3MacLearningTest(base.BaseNetworkTest): update_port_name = data_utils.rand_name('updated_port-') updated_os_port = self.update_port(test_port, name=update_port_name) - updated_nsx_port = self.nsx.get_logical_port(updated_os_port['name']) if CONF.network.backend == 'nsxp': time.sleep(constants.NSXP_BACKEND_SMALL_TIME_INTERVAL) + updated_nsx_port = self.nsx.get_logical_port(updated_os_port['name']) # Assert if NSXT and OS names do not match self.assertEqual(updated_nsx_port['display_name'], updated_os_port['name'],