Merge "fw_v2 cases for nsxv & vrf realted cases for nsxt"
This commit is contained in:
commit
08cba39042
@ -160,14 +160,12 @@ class L2GatewayTest(base.BaseAdminNetworkTest):
|
||||
self.do_csuld_single_device_interface_vlan(_name, _devices)
|
||||
|
||||
@decorators.idempotent_id('cb59145e-3d2b-46b7-8f7b-f30f794a4d51')
|
||||
@decorators.skip_because(bug="1559913")
|
||||
def test_csuld_single_device_interface_mvlan(self):
|
||||
dev_profile = self.getattr_or_skip_test("device_multiple_vlans")
|
||||
_name = data_utils.rand_name('l2gw-2v1')
|
||||
_devices = base_l2gw.get_l2gw_body(dev_profile)
|
||||
self.do_csuld_single_device_interface_vlan(_name, _devices)
|
||||
|
||||
@decorators.skip_because(bug="1559913")
|
||||
@decorators.idempotent_id('5522bdfe-ebe8-4eea-81b4-f4075bb608cf')
|
||||
def test_csuld_single_device_minterface_mvlan_type1(self):
|
||||
# NSX-v does not support multiple interfaces
|
||||
@ -177,7 +175,6 @@ class L2GatewayTest(base.BaseAdminNetworkTest):
|
||||
_devices = base_l2gw.get_l2gw_body(dev_profile)
|
||||
self.do_csuld_single_device_interface_vlan(_name, _devices)
|
||||
|
||||
@decorators.skip_because(bug="1559913")
|
||||
@decorators.idempotent_id('5bec26e0-855f-4537-b31b-31663a820ddb')
|
||||
def test_csuld_single_device_minterface_mvlan_type2(self):
|
||||
# NSX-v does not support multiple interfaces
|
||||
|
@ -231,7 +231,6 @@ class L2GatewayConnectionTest(base.BaseAdminNetworkTest):
|
||||
self.do_suld_l2gw_connection(_res_new)
|
||||
self.addCleanup(self.l2gw_cleanup)
|
||||
|
||||
@decorators.skip_because(bug="1559913")
|
||||
@decorators.idempotent_id('1875eca7-fde9-49ba-be21-47a8cc41f2e5')
|
||||
def test_csuld_single_device_interface_mvlan_type2(self):
|
||||
dev_profile = self.getattr_or_skip_test("device_multiple_vlans")
|
||||
@ -246,7 +245,6 @@ class L2GatewayConnectionTest(base.BaseAdminNetworkTest):
|
||||
self.do_suld_l2gw_connection(_res_new)
|
||||
self.addCleanup(self.l2gw_cleanup)
|
||||
|
||||
@decorators.skip_because(bug="1559913")
|
||||
@decorators.idempotent_id('53755cb0-fdca-4ee7-8e43-a9b8a9d6d90a')
|
||||
def test_csuld_single_device_minterface_mvlan_type1(self):
|
||||
# NSX-v does not support multiple interfaces
|
||||
@ -259,7 +257,6 @@ class L2GatewayConnectionTest(base.BaseAdminNetworkTest):
|
||||
self.do_suld_l2gw_connection(_res_new)
|
||||
self.addCleanup(self.l2gw_cleanup)
|
||||
|
||||
@decorators.skip_because(bug="1559913")
|
||||
@decorators.idempotent_id('723b0b78-35d7-4774-89c1-ec73797a1fe3')
|
||||
def test_csuld_single_device_minterface_mvlan_type2(self):
|
||||
dev_profile = self.getattr_or_skip_test(
|
||||
|
@ -171,7 +171,6 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
Boot a VM
|
||||
Verify recordset only has SOA and NS record types
|
||||
"""
|
||||
image_id = self.get_glance_image_id(['cirros', 'esx'])
|
||||
zone = self.create_zone()
|
||||
network_designate = self.create_zone_topology(zone['name'])
|
||||
self.assertEqual(network_designate['dns_domain'], zone['name'])
|
||||
@ -182,7 +181,7 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
"dns_vm", [network_designate],
|
||||
security_groups=[{'name': self.designate_sg['name']}],
|
||||
clients=self.os_adm,
|
||||
create_floating_ip=False, image_id=image_id)
|
||||
create_floating_ip=False)
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
self.verify_recordset(recordset, 2)
|
||||
@ -196,7 +195,6 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
Boot a VM
|
||||
Verify recordset only has SOA and NS record types
|
||||
"""
|
||||
image_id = self.get_glance_image_id(['cirros', 'esx'])
|
||||
zone = self.create_zone()
|
||||
network_designate = self.create_zone_provider_vlan_vxlan_topology(
|
||||
'vxlan', zone['name'])
|
||||
@ -208,7 +206,7 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
"dns_vm", [network_designate],
|
||||
security_groups=[{'name': self.designate_sg['name']}],
|
||||
clients=self.os_adm,
|
||||
create_floating_ip=False, image_id=image_id)
|
||||
create_floating_ip=False)
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
self.verify_recordset(recordset, 3)
|
||||
@ -222,7 +220,6 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
Boot a VM
|
||||
Verify recordset only has SOA and NS record types
|
||||
"""
|
||||
image_id = self.get_glance_image_id(['cirros', 'esx'])
|
||||
zone = self.create_zone()
|
||||
network_designate = self.create_zone_provider_vlan_vxlan_topology(
|
||||
'vxlan', zone['name'])
|
||||
@ -234,7 +231,7 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
"dns_vm", [network_designate],
|
||||
security_groups=[{'name': self.designate_sg['name']}],
|
||||
clients=self.os_adm,
|
||||
create_floating_ip=False, image_id=image_id)
|
||||
create_floating_ip=False, )
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
self.verify_recordset(recordset, 3)
|
||||
@ -248,7 +245,6 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
Boot a VM and associate fip
|
||||
Verify recordset contains entry for fip
|
||||
"""
|
||||
image_id = self.get_glance_image_id(['cirros', 'esx'])
|
||||
zone = self.create_zone()
|
||||
network_designate = self.create_zone_topology(zone['name'])
|
||||
self.assertEqual(network_designate['dns_domain'], zone['name'])
|
||||
@ -259,7 +255,7 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
"dns_vm", [network_designate],
|
||||
security_groups=[{'name': self.designate_sg['name']}],
|
||||
clients=self.os_adm,
|
||||
create_floating_ip=True, image_id=image_id)
|
||||
create_floating_ip=True)
|
||||
fip = dns_vm['floating_ips'][0]['floating_ip_address']
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
@ -279,7 +275,6 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
Delete VM
|
||||
Verify recordset does not have entry for fip
|
||||
"""
|
||||
image_id = self.get_glance_image_id(['cirros', 'esx'])
|
||||
zone = self.create_zone()
|
||||
network_designate = self.create_zone_topology(zone['name'])
|
||||
self.assertEqual(network_designate['dns_domain'], zone['name'])
|
||||
@ -290,7 +285,7 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
"dns_vm", [network_designate],
|
||||
security_groups=[{'name': self.designate_sg['name']}],
|
||||
clients=self.os_adm,
|
||||
create_floating_ip=True, image_id=image_id)
|
||||
create_floating_ip=True)
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
fip = dns_vm['floating_ips'][0]['floating_ip_address']
|
||||
@ -342,15 +337,15 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
ports_client = self.os_admin.ports_client
|
||||
post_body = {"dns_name": "tempest-port"}
|
||||
port = self.create_topology_port(network_designate, ports_client,
|
||||
**post_body)
|
||||
**post_body)
|
||||
fip = self.create_floatingip(port['port'], port['port']['id'],
|
||||
client=self.os_admin.floating_ips_client)
|
||||
client=self.os_admin.floating_ips_client)
|
||||
time.sleep(const.ZONE_WAIT_TIME)
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
self.verify_recordset(recordset, 3)
|
||||
record = self.verify_recordset_floatingip(recordset,
|
||||
fip['floating_ip_address'])
|
||||
fip['floating_ip_address'])
|
||||
if record is None:
|
||||
raise Exception('fip is missing in the recordset')
|
||||
|
||||
@ -362,7 +357,6 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
Boot an instance and associate fip
|
||||
Perform nslookup for the dns name from ext vm
|
||||
"""
|
||||
image_id = self.get_glance_image_id(['cirros', 'esx'])
|
||||
zone = self.create_zone()
|
||||
network_designate = self.create_zone_topology(zone['name'])
|
||||
self.assertEqual(network_designate['dns_domain'], zone['name'])
|
||||
@ -370,7 +364,7 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
"dns_vm", [network_designate],
|
||||
security_groups=[{'name': self.designate_sg['name']}],
|
||||
clients=self.os_adm,
|
||||
create_floating_ip=True, image_id=image_id)
|
||||
create_floating_ip=True)
|
||||
fip = dns_vm['floating_ips'][0]['floating_ip_address']
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
@ -413,13 +407,13 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
self.set_ptr_record(region, fip['id'], ptr_rev_name)
|
||||
ptr_record = self.show_ptr_record(region, fip['id'])
|
||||
self.assertEqual(fip['floating_ip_address'],
|
||||
ptr_record[1]['address'])
|
||||
ptr_record[1]['address'])
|
||||
if type(CONF.dns.nameservers) is list:
|
||||
nameserver = CONF.dns.nameservers[0][:-3]
|
||||
else:
|
||||
nameserver = CONF.dns.nameservers.split(":")[0]
|
||||
nslookup_cmd = "nslookup %s %s" % (fip['floating_ip_address'],
|
||||
nameserver)
|
||||
nameserver)
|
||||
try:
|
||||
output = subprocess.check_output(
|
||||
nslookup_cmd, shell=True)
|
||||
@ -438,10 +432,6 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
Boot an instance and associate fip
|
||||
Delete zone successfully
|
||||
"""
|
||||
try:
|
||||
image_id = self.get_glance_image_id(['cirros', 'esx'])
|
||||
except Exception:
|
||||
LOG.error('cirros image is absent for esx HV')
|
||||
zone = self.create_zone()
|
||||
network_designate = self.create_zone_topology(zone['name'])
|
||||
self.assertEqual(network_designate['dns_domain'], zone['name'])
|
||||
@ -449,7 +439,7 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
"dns_vm", [network_designate],
|
||||
security_groups=[{'name': self.designate_sg['name']}],
|
||||
clients=self.os_adm,
|
||||
create_floating_ip=True, image_id=image_id)
|
||||
create_floating_ip=True)
|
||||
fip = dns_vm['floating_ips'][0]['floating_ip_address']
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
@ -476,7 +466,6 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
Verify the recordset of the guestVM does not contain
|
||||
'A' record type
|
||||
"""
|
||||
image_id = self.get_glance_image_id(['cirros', 'esx'])
|
||||
zone = self.create_zone()
|
||||
network_designate = self.create_zone_topology(
|
||||
const.ZONE_NAME)
|
||||
@ -485,7 +474,7 @@ class TestZonesScenario(TestZonesV2Ops):
|
||||
"dns_vm", [network_designate],
|
||||
security_groups=[{'name': self.designate_sg['name']}],
|
||||
clients=self.os_adm,
|
||||
create_floating_ip=True, image_id=image_id)
|
||||
create_floating_ip=True)
|
||||
LOG.info('Show recordset of the zone')
|
||||
recordset = self.list_record_set_zone(zone['id'])
|
||||
self.verify_recordset(recordset, 2)
|
||||
|
1367
vmware_nsx_tempest_plugin/tests/scenario/test_v2_fwaas_nsxv.py
Normal file
1367
vmware_nsx_tempest_plugin/tests/scenario/test_v2_fwaas_nsxv.py
Normal file
File diff suppressed because it is too large
Load Diff
159
vmware_nsx_tempest_plugin/tests/scenario/test_v2_vrf.py
Normal file
159
vmware_nsx_tempest_plugin/tests/scenario/test_v2_vrf.py
Normal file
@ -0,0 +1,159 @@
|
||||
# Copyright 2018 VMware Inc
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from oslo_log import log as logging
|
||||
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.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
|
||||
CONF.validation.auth_method = 'None'
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TestVRFBasic(feature_manager.FeatureManager):
|
||||
|
||||
@classmethod
|
||||
def setup_clients(cls):
|
||||
super(TestVRFBasic, cls).setup_clients()
|
||||
cls.cmgr_adm = cls.get_client_manager('admin')
|
||||
cls.rtr_client = cls.cmgr_adm.routers_client
|
||||
cls.nw_client = cls.cmgr_adm.networks_client
|
||||
cls.subnets_client = cls.cmgr_adm.subnets_client
|
||||
cls.ports_client = cls.cmgr_adm.ports_client
|
||||
cls.sec_rule_client = cls.cmgr_adm.security_group_rules_client
|
||||
cls.sec_client = cls.cmgr_adm.security_groups_client
|
||||
|
||||
def setUp(self):
|
||||
super(TestVRFBasic, self).setUp()
|
||||
self.nsx = nsxv3_client.NSXV3Client(CONF.nsxv3.nsx_manager,
|
||||
CONF.nsxv3.nsx_user,
|
||||
CONF.nsxv3.nsx_password)
|
||||
self.nsxp = nsxp_client.NSXPClient(CONF.nsxv3.nsx_manager,
|
||||
CONF.nsxv3.nsx_user,
|
||||
CONF.nsxv3.nsx_password)
|
||||
|
||||
def _create_router(self, router_name=None, admin_state_up=True,
|
||||
external_network_id=None, enable_snat=None,
|
||||
set_gateway=True, **kwargs):
|
||||
ext_gw_info = {}
|
||||
if external_network_id:
|
||||
ext_gw_info['network_id'] = external_network_id
|
||||
if enable_snat is not None:
|
||||
ext_gw_info['enable_snat'] = enable_snat
|
||||
if set_gateway:
|
||||
body = self.routers_client.create_router(
|
||||
name=router_name, external_gateway_info=ext_gw_info,
|
||||
admin_state_up=admin_state_up, **kwargs)
|
||||
else:
|
||||
body = self.routers_client.create_router(
|
||||
name=router_name,
|
||||
admin_state_up=admin_state_up,
|
||||
**kwargs)
|
||||
router = body.get('router', body)
|
||||
self.addCleanup(self._delete_router, router)
|
||||
return router
|
||||
|
||||
def _delete_router(self, router):
|
||||
body = self.ports_client.list_ports(device_id=router['id'])
|
||||
interfaces = body['ports']
|
||||
for i in interfaces:
|
||||
test_utils.call_and_ignore_notfound_exc(
|
||||
self.routers_client.remove_router_interface, router['id'],
|
||||
subnet_id=i['fixed_ips'][0]['subnet_id'])
|
||||
self.routers_client.delete_router(router['id'])
|
||||
|
||||
def _test_ping_from_external_network(self, fip_ip):
|
||||
out = os.popen('ping -c 2 %s' % fip_ip).read().strip()
|
||||
return out
|
||||
|
||||
def _add_static_route(self, vm1_real_ip, router):
|
||||
r_ips = router['external_gateway_info']['external_fixed_ips']
|
||||
r_ip = r_ips[0]['ip_address']
|
||||
os.popen('route add -host %s gw %s' % (vm1_real_ip, r_ip))
|
||||
|
||||
def _test_tcp_port_from_external_network(self, fip_ip):
|
||||
nc_cmd = subprocess.Popen(['nc -zvw01 192.166.1.2 22'],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE, shell=True)
|
||||
output1, output2 = nc_cmd.communicate()
|
||||
return output2
|
||||
|
||||
def create_network_topo(self, create_instance=False, enable_snat=True,
|
||||
set_gateway=True):
|
||||
network = \
|
||||
self.create_topology_network(network_name="fw-network",
|
||||
networks_client=self.networks_client)
|
||||
# Create router topo
|
||||
kwargs = {"router:external": "True"}
|
||||
ext_nw = \
|
||||
self.create_topology_network(network_name="ext_new",
|
||||
networks_client=self.nw_client,
|
||||
**kwargs)
|
||||
subnet_name = 'ext_subnet'
|
||||
subnet_args = {'enable_dhcp': False}
|
||||
self.create_topology_subnet(subnet_name, ext_nw,
|
||||
cidr='172.24.5.0/24',
|
||||
**subnet_args)
|
||||
router = self._create_router(
|
||||
router_name=data_utils.rand_name('router-default1'),
|
||||
external_network_id=ext_nw['id'],
|
||||
enable_snat=enable_snat, set_gateway=set_gateway)
|
||||
subnet_name = 'fw-subnet'
|
||||
self.create_topology_subnet(subnet_name, network,
|
||||
router_id=router['id'])
|
||||
if create_instance:
|
||||
if set_gateway and enable_snat:
|
||||
floating_ip = True
|
||||
else:
|
||||
floating_ip = False
|
||||
vm1 = self.create_topology_instance(
|
||||
"state_vm_1", [network],
|
||||
create_floating_ip=floating_ip)
|
||||
if set_gateway and enable_snat:
|
||||
ips = self.topology_servers['state_vm_1']['floating_ips']
|
||||
real_ip = ips[0]['fixed_ip_address']
|
||||
float_ip = ips[0]['floating_ip_address']
|
||||
else:
|
||||
ips = self.topology_servers['state_vm_1']['addresses']
|
||||
real_ip = ips[network['name']][0]['addr']
|
||||
float_ip = None
|
||||
else:
|
||||
real_ip = None
|
||||
float_ip = None
|
||||
vm1 = None
|
||||
net_topo = dict(project=network['project_id'], router=router,
|
||||
vm1_real_ip=real_ip,
|
||||
vm1_float_ip=float_ip, server=vm1)
|
||||
return net_topo
|
||||
|
||||
@decorators.attr(type='nsxp')
|
||||
@decorators.idempotent_id('131288d7-9513-4b1e-a11d-15840c8e3f13')
|
||||
def test_vrf_basic_traffic_test_and_backend_verification(self):
|
||||
"""
|
||||
"""
|
||||
net_topo = self.create_network_topo(create_instance=True)
|
||||
# verify ext-VM to intVM floating IP ping
|
||||
out = self._test_ping_from_external_network(net_topo['vm1_float_ip'])
|
||||
self.assertIn("2 received", str(out))
|
Loading…
Reference in New Issue
Block a user