Merge "Tempest fixes for Policy DHCP cases and mac learning"

This commit is contained in:
Zuul 2020-10-07 07:32:07 +00:00 committed by Gerrit Code Review
commit 0ed26510e3
3 changed files with 99 additions and 46 deletions

View File

@ -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')

View File

@ -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'], [])

View File

@ -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'],