Changes for MDProxy policy in tempest for backend verification

Change-Id: Ic9fc9dfbf53b1f01848acb86b85e87edc7acf343
This commit is contained in:
dkhairnar 2019-11-14 09:53:02 +00:00
parent 5b6a2e4d36
commit cb72eb07bd
1 changed files with 86 additions and 58 deletions

View File

@ -19,6 +19,7 @@ from tempest.lib import decorators
from vmware_nsx_tempest_plugin.common import constants
from vmware_nsx_tempest_plugin.lib import feature_manager
from vmware_nsx_tempest_plugin.services import nsxp_client
from vmware_nsx_tempest_plugin.services import nsxv3_client
CONF = config.CONF
@ -59,6 +60,9 @@ class TestMDProxy(feature_manager.FeatureManager):
CONF.nsxv3.nsx_manager,
CONF.nsxv3.nsx_user,
CONF.nsxv3.nsx_password)
cls.nsxp_client = nsxp_client.NSXPClient(CONF.nsxv3.nsx_manager,
CONF.nsxv3.nsx_user,
CONF.nsxv3.nsx_password)
def _verify_md(self, md_url, expected_value="",
sub_result=None, ssh_client=None):
@ -97,58 +101,81 @@ class TestMDProxy(feature_manager.FeatureManager):
expected_value=instance_name + ".novalocal",
ssh_client=ssh_client)
def verify_md_proxy_logical_ports_on_backend(self, tenant_id, network_id):
def verify_md_proxy_logical_ports_on_backend(self, tenant_id, network):
md_counter = 0
logical_ports = self.nsx.get_os_logical_ports()
for port_index in range(len(logical_ports)):
if "attachment" in logical_ports[port_index]:
if logical_ports[port_index]["attachment"][
"attachment_type"] == "METADATA_PROXY":
if logical_ports[port_index][
"tags"][0]["tag"] == network_id:
msg = "MDproxy logical port does not "\
"have proper tenant "\
"id!!!"
network_name = network["name"]
network_id = network["id"]
if CONF.network.backend == 'nsxp':
logical_switch = self.nsxp_client.get_logical_switch(network_name,
network_id)
switch_id = str(logical_switch["id"])
mdproxy_path = logical_switch['metadata_proxy_paths']
md_proxy_uuid = str(mdproxy_path[0].split("/")[-1])
if mdproxy_path is None:
raise ValueError('MDPorxy is not attached to logical switch')
display_name = "infra|%s|%s|md-proxy-attach-port" % (switch_id,
md_proxy_uuid)
logical_ports = self.nsx.get_logical_ports()
for port_index in range(len(logical_ports)):
if "attachment" in logical_ports[port_index]:
if logical_ports[port_index]["attachment"][
"attachment_type"] == "METADATA_PROXY":
if logical_ports[port_index]["display_name"] == \
display_name:
md_counter += 1
else:
logical_ports = self.nsx.get_os_logical_ports()
for port_index in range(len(logical_ports)):
if "attachment" in logical_ports[port_index]:
if logical_ports[port_index]["attachment"][
"attachment_type"] == "METADATA_PROXY":
if logical_ports[port_index][
"tags"][0]["tag"] == network_id:
msg = "MDproxy logical port does not "\
"have proper tenant "\
"id!!!"
self.assertEqual(
tenant_id, logical_ports[port_index]["tags"][
1]["tag"], msg)
md_counter += 1
msg1 = "Admin state of MDProxy logical port is DOWN!!!"
msg2 = "LS name does not start with mdproxy!!!"
msg3 = "MDproxy logical port does not have any auto " \
"tag!"
msg4 = "MDproxy logical port does not have scope " \
"tag as os-neutron-net-id!!!"
msg5 = "MDproxy logical port does not have scope " \
"tag as os-project-id!!!"
msg6 = "MDproxy logical port does not have scope " \
"tag as os-project-name!!!"
msg7 = "MDproxy logical port does not have scope " \
"tag as os-api-version!!!"
self.assertEqual(
tenant_id, logical_ports[port_index]["tags"][1][
"tag"], msg)
md_counter += 1
msg1 = "Admin state of MDProxy logical port is DOWN!!!"
msg2 = "LS name does not start with mdproxy!!!"
msg3 = "MDproxy logical port does not have any auto tag!!!"
msg4 = "MDproxy logical port does not have scope tag as " \
"os-neutron-net-id!!!"
msg5 = "MDproxy logical port does not have scope tag as " \
"os-project-id!!!"
msg6 = "MDproxy logical port does not have scope tag as " \
"os-project-name!!!"
msg7 = "MDproxy logical port does not have scope tag as " \
"os-api-version!!!"
self.assertEqual(
"UP", logical_ports[port_index]["admin_state"], msg1)
self.assertIn("mdproxy-",
logical_ports[port_index]["display_name"],
msg2)
self.assertNotEqual(
0,
len(logical_ports[port_index]["tags"]),
msg3)
self.assertEqual(
"os-neutron-net-id",
logical_ports[port_index]["tags"][0]["scope"],
msg4)
self.assertEqual(
"os-project-id",
logical_ports[port_index]["tags"][1]["scope"],
msg5)
self.assertEqual(
"os-project-name",
logical_ports[port_index]["tags"][2]["scope"],
msg6)
self.assertEqual(
"os-api-version",
logical_ports[port_index]["tags"][3]["scope"],
msg7)
"UP", logical_ports[port_index]["admin_state"],
msg1)
self.assertIn("mdproxy-",
logical_ports[port_index]
["display_name"], msg2)
self.assertNotEqual(
0,
len(logical_ports[port_index]["tags"]),
msg3)
self.assertEqual(
"os-neutron-net-id",
logical_ports[port_index]["tags"][0]["scope"],
msg4)
self.assertEqual(
"os-project-id",
logical_ports[port_index]["tags"][1]["scope"],
msg5)
self.assertEqual(
"os-project-name",
logical_ports[port_index]["tags"][2]["scope"],
msg6)
self.assertEqual(
"os-api-version",
logical_ports[port_index]["tags"][3]["scope"],
msg7)
self.assertNotEqual(0, md_counter, "No logical port found for MD "
"proxy!!!")
@ -193,9 +220,10 @@ class TestMDProxy(feature_manager.FeatureManager):
self.verify_metadata_in_detail(
instance=self.topology_servers["server_mdproxy_1"],
ssh_client=ssh_client, floatingip=fip, fixed_ip=fixed_ip)
tenant_id = self.topology_networks["network_mdproxy"]["tenant_id"]
network_id = self.topology_networks["network_mdproxy"]["id"]
self.verify_md_proxy_logical_ports_on_backend(tenant_id, network_id)
network = self.topology_networks["network_mdproxy"]["id"]
self.verify_md_proxy_logical_ports_on_backend(tenant_id, network)
@decorators.idempotent_id("e9a93161-d852-414d-aa55-36d465ea45df")
@utils.services("compute", "network")
@ -226,8 +254,8 @@ class TestMDProxy(feature_manager.FeatureManager):
instance=self.topology_servers["server_mdproxy_1"],
ssh_client=ssh_client, floatingip=fip, fixed_ip=fixed_ip)
tenant_id = self.topology_networks["network_mdproxy"]["tenant_id"]
network_id = self.topology_networks["network_mdproxy"]["id"]
self.verify_md_proxy_logical_ports_on_backend(tenant_id, network_id)
network = self.topology_networks["network_mdproxy"]
self.verify_md_proxy_logical_ports_on_backend(tenant_id, network)
@decorators.skip_because(bug="2004971")
@decorators.idempotent_id("fce2acc8-b850-40fe-bf02-958dd3cd4343")
@ -266,9 +294,9 @@ class TestMDProxy(feature_manager.FeatureManager):
# Deploy topology without tier1 router
self.deploy_mdproxy_topology_2()
tenant_id = self.topology_networks["network_mdproxy"]["tenant_id"]
network_id = self.topology_networks["network_mdproxy"]["id"]
network = self.topology_networks["network_mdproxy"]
# Verify MDProxy logical ports on Backend
self.verify_md_proxy_logical_ports_on_backend(tenant_id, network_id)
self.verify_md_proxy_logical_ports_on_backend(tenant_id, network)
@decorators.idempotent_id("cc8d2ab8-0bea-4e32-bf80-c9c46a7612b7")
@decorators.attr(type=["negative"])
@ -313,8 +341,8 @@ class TestMDProxy(feature_manager.FeatureManager):
ssh_client=ssh_client_2, floatingip=fip_2, fixed_ip=fixed_ip_2)
# Verify Metadata on backend
tenant_id = self.topology_networks["network_mdproxy"]["tenant_id"]
network_id = self.topology_networks["network_mdproxy"]["id"]
self.verify_md_proxy_logical_ports_on_backend(tenant_id, network_id)
network = self.topology_networks["network_mdproxy"]
self.verify_md_proxy_logical_ports_on_backend(tenant_id, network)
@decorators.idempotent_id("eae21afc-50ea-42e5-9c49-2ee38cee9f06")
@utils.services("compute", "network")