Add rand_name to create port incase of leaks

We have found if people either kill a tempest run
or miss-configure tempest.conf we can get ports
left around.  They are easier to clean up if they
have an explicit name with the default prefix
and the class name of the test that created the
port than a standard port name that is genreated
by the system.

FYI neutron port name is string 255 in the neutron database.

Change-Id: I8d96387c0f8c70e7e4ea004a8419689f1bd30cef
This commit is contained in:
Doug Schveninger 2019-08-16 22:28:39 -05:00
parent ce682d0312
commit 24675aa30d
12 changed files with 80 additions and 29 deletions

View File

@ -24,6 +24,7 @@ from tempest.common import utils
from tempest.common.utils import net_utils
from tempest.common import waiters
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils.linux import remote_client
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
@ -150,7 +151,9 @@ class AttachInterfacesTestJSON(AttachInterfacesTestBase):
def _test_create_interface_by_port_id(self, server, ifs):
network_id = ifs[0]['net_id']
port = self.ports_client.create_port(network_id=network_id)
port = self.ports_client.create_port(
network_id=network_id,
name=data_utils.rand_name(self.__class__.__name__))
port_id = port['port']['id']
self.addCleanup(self.ports_client.delete_port, port_id)
iface = self.interfaces_client.create_interface(
@ -291,7 +294,9 @@ class AttachInterfacesTestJSON(AttachInterfacesTestBase):
"""
network = self.get_tenant_network()
network_id = network['id']
port = self.ports_client.create_port(network_id=network_id)
port = self.ports_client.create_port(
network_id=network_id,
name=data_utils.rand_name(self.__class__.__name__))
port_id = port['port']['id']
self.addCleanup(self.ports_client.delete_port, port_id)

View File

@ -175,11 +175,13 @@ class TaggedBootDevicesTest(DeviceTaggingBase):
# Create ports
self.port1 = self.ports_client.create_port(
network_id=net1['id'],
name=data_utils.rand_name(self.__class__.__name__),
fixed_ips=[{'subnet_id': subnet1['id']}])['port']
self.addCleanup(self.ports_client.delete_port, self.port1['id'])
self.port2 = self.ports_client.create_port(
network_id=net1['id'],
name=data_utils.rand_name(self.__class__.__name__),
fixed_ips=[{'subnet_id': subnet1['id']}])['port']
self.addCleanup(self.ports_client.delete_port, self.port2['id'])

View File

@ -16,6 +16,7 @@ import testtools
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 tempest.lib import exceptions as lib_exc
@ -50,5 +51,6 @@ class ExternalNetworksAdminNegativeTestJSON(base.BaseAdminNetworkTest):
# create a port which will internally create an instance-ip
self.assertRaises(lib_exc.Conflict,
self.admin_ports_client.create_port,
name=data_utils.rand_name(self.__class__.__name__),
network_id=CONF.network.public_network_id,
fixed_ips=fixed_ips)

View File

@ -16,6 +16,7 @@
from tempest.api.network import base
from tempest.common import utils
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
@ -41,7 +42,8 @@ class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):
@utils.services('compute')
def test_create_port_binding_ext_attr(self):
post_body = {"network_id": self.network['id'],
"binding:host_id": self.host_id}
"binding:host_id": self.host_id,
"name": data_utils.rand_name(self.__class__.__name__)}
body = self.admin_ports_client.create_port(**post_body)
port = body['port']
self.addCleanup(
@ -54,7 +56,8 @@ class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):
@decorators.idempotent_id('6f6c412c-711f-444d-8502-0ac30fbf5dd5')
@utils.services('compute')
def test_update_port_binding_ext_attr(self):
post_body = {"network_id": self.network['id']}
post_body = {"network_id": self.network['id'],
"name": data_utils.rand_name(self.__class__.__name__)}
body = self.admin_ports_client.create_port(**post_body)
port = body['port']
self.addCleanup(
@ -71,7 +74,8 @@ class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):
@utils.services('compute')
def test_list_ports_binding_ext_attr(self):
# Create a new port
post_body = {"network_id": self.network['id']}
post_body = {"network_id": self.network['id'],
"name": data_utils.rand_name(self.__class__.__name__)}
body = self.admin_ports_client.create_port(**post_body)
port = body['port']
self.addCleanup(
@ -98,6 +102,7 @@ class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):
@decorators.idempotent_id('b54ac0ff-35fc-4c79-9ca3-c7dbd4ea4f13')
def test_show_port_binding_ext_attr(self):
body = self.admin_ports_client.create_port(
name=data_utils.rand_name(self.__class__.__name__),
network_id=self.network['id'])
port = body['port']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,

View File

@ -18,6 +18,7 @@ import testtools
from tempest.api.network import base
from tempest.common import utils
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 tempest.lib import exceptions as lib_exc
@ -42,6 +43,7 @@ class RoutersAdminNegativeTest(base.BaseAdminNetworkTest):
def test_router_set_gateway_used_ip_returns_409(self):
# At first create a address from public_network_id
port = self.admin_ports_client.create_port(
name=data_utils.rand_name(self.__class__.__name__),
network_id=CONF.network.public_network_id)['port']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.admin_ports_client.delete_port,

View File

@ -156,6 +156,8 @@ class BaseNetworkTest(tempest.test.BaseTestCase):
@classmethod
def create_port(cls, network, **kwargs):
if 'name' not in kwargs:
kwargs['name'] = data_utils.rand_name(cls.__name__)
"""Wrapper utility that returns a test port."""
body = cls.ports_client.create_port(network_id=network['id'],
**kwargs)

View File

@ -17,6 +17,7 @@ import six
from tempest.api.network import base
from tempest.common import utils
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
@ -61,6 +62,7 @@ class AllowedAddressPairTestJSON(base.BaseNetworkTest):
'mac_address': self.mac_address}]
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__),
allowed_address_pairs=allowed_address_pairs)
port_id = body['port']['id']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@ -76,7 +78,9 @@ class AllowedAddressPairTestJSON(base.BaseNetworkTest):
def _update_port_with_address(self, address, mac_address=None, **kwargs):
# Create a port without allowed address pair
body = self.ports_client.create_port(network_id=self.network['id'])
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__))
port_id = body['port']['id']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, port_id)
@ -107,7 +111,9 @@ class AllowedAddressPairTestJSON(base.BaseNetworkTest):
@decorators.idempotent_id('b3f20091-6cd5-472b-8487-3516137df933')
def test_update_port_with_multiple_ip_mac_address_pair(self):
# Create an ip _address and mac_address through port create
resp = self.ports_client.create_port(network_id=self.network['id'])
resp = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__))
newportid = resp['port']['id']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, newportid)

View File

@ -61,6 +61,7 @@ class ExtraDHCPOptionsTestJSON(base.BaseNetworkTest):
# Create a port with Extra DHCP Options
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__),
extra_dhcp_opts=self.extra_dhcp_opts)
port_id = body['port']['id']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,

View File

@ -142,7 +142,9 @@ class FloatingIPTestJSON(base.BaseNetworkTest):
self.floating_ips_client.delete_floatingip,
created_floating_ip['id'])
# Create a port
port = self.ports_client.create_port(network_id=self.network['id'])
port = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__))
created_port = port['port']
floating_ip = self.floating_ips_client.update_floatingip(
created_floating_ip['id'],
@ -237,8 +239,10 @@ class FloatingIPTestJSON(base.BaseNetworkTest):
2)
fixed_ips = [{'ip_address': list_ips[0]}, {'ip_address': list_ips[1]}]
# Create port
body = self.ports_client.create_port(network_id=self.network['id'],
fixed_ips=fixed_ips)
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__),
fixed_ips=fixed_ips)
port = body['port']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, port['id'])

View File

@ -79,7 +79,8 @@ class NetworksNegativeTestJSON(base.BaseNetworkTest):
non_exist_net_id = data_utils.rand_uuid()
self.assertRaises(lib_exc.NotFound,
self.ports_client.create_port,
network_id=non_exist_net_id)
network_id=non_exist_net_id,
name=data_utils.rand_name(self.__class__.__name__))
@decorators.attr(type=['negative'])
@decorators.idempotent_id('cf8eef21-4351-4f53-adcd-cc5cb1e76b92')

View File

@ -71,7 +71,9 @@ class PortsTestJSON(sec_base.BaseSecGroupTest):
@decorators.idempotent_id('c72c1c0c-2193-4aca-aaa4-b1442640f51c')
def test_create_update_delete_port(self):
# Verify port creation
body = self.ports_client.create_port(network_id=self.network['id'])
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__))
port = body['port']
# Schedule port deletion with verification upon test completion
self.addCleanup(self._delete_port, port['id'])
@ -118,7 +120,9 @@ class PortsTestJSON(sec_base.BaseSecGroupTest):
self._create_subnet(network, cidr=address,
mask_bits=address.prefixlen,
**allocation_pools)
body = self.ports_client.create_port(network_id=net_id)
body = self.ports_client.create_port(
network_id=net_id,
name=data_utils.rand_name(self.__class__.__name__))
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, body['port']['id'])
port = body['port']
@ -172,10 +176,14 @@ class PortsTestJSON(sec_base.BaseSecGroupTest):
network = self._create_network()
self._create_subnet(network)
# Create two ports
port_1 = self.ports_client.create_port(network_id=network['id'])
port_1 = self.ports_client.create_port(
network_id=network['id'],
name=data_utils.rand_name(self.__class__.__name__))
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, port_1['port']['id'])
port_2 = self.ports_client.create_port(network_id=network['id'])
port_2 = self.ports_client.create_port(
network_id=network['id'],
name=data_utils.rand_name(self.__class__.__name__))
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, port_2['port']['id'])
# List ports filtered by fixed_ips
@ -224,13 +232,17 @@ class PortsTestJSON(sec_base.BaseSecGroupTest):
# Create two ports
fixed_ips = [{'subnet_id': subnet['id'], 'ip_address': ip_address_1}]
port_1 = self.ports_client.create_port(network_id=network['id'],
fixed_ips=fixed_ips)
port_1 = self.ports_client.create_port(
network_id=network['id'],
name=data_utils.rand_name(self.__class__.__name__),
fixed_ips=fixed_ips)
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, port_1['port']['id'])
fixed_ips = [{'subnet_id': subnet['id'], 'ip_address': ip_address_2}]
port_2 = self.ports_client.create_port(network_id=network['id'],
fixed_ips=fixed_ips)
port_2 = self.ports_client.create_port(
network_id=network['id'],
name=data_utils.rand_name(self.__class__.__name__),
fixed_ips=fixed_ips)
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, port_2['port']['id'])
@ -283,7 +295,9 @@ class PortsTestJSON(sec_base.BaseSecGroupTest):
router = self.create_router()
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.routers_client.delete_router, router['id'])
port = self.ports_client.create_port(network_id=network['id'])
port = self.ports_client.create_port(
network_id=network['id'],
name=data_utils.rand_name(self.__class__.__name__))
# Add router interface to port created above
self.routers_client.add_router_interface(router['id'],
port_id=port['port']['id'])
@ -359,7 +373,7 @@ class PortsTestJSON(sec_base.BaseSecGroupTest):
self.security_groups_client.delete_security_group,
security_group['security_group']['id'])
post_body = {
"name": data_utils.rand_name('port-'),
"name": data_utils.rand_name(self.__class__.__name__),
"security_groups": [security_group['security_group']['id']],
"network_id": self.network['id'],
"admin_state_up": True,
@ -372,10 +386,11 @@ class PortsTestJSON(sec_base.BaseSecGroupTest):
# Update the port with security groups
subnet_2 = self.create_subnet(self.network)
fixed_ip_2 = [{'subnet_id': subnet_2['id']}]
update_body = {"name": data_utils.rand_name('port-'),
"admin_state_up": False,
"fixed_ips": fixed_ip_2,
"security_groups": security_groups_list}
update_body = {
"name": data_utils.rand_name(self.__class__.__name__),
"admin_state_up": False,
"fixed_ips": fixed_ip_2,
"security_groups": security_groups_list}
body = self.ports_client.update_port(port['id'], **update_body)
port_show = body['port']
# Verify the security groups and other attributes updated to port
@ -410,13 +425,17 @@ class PortsTestJSON(sec_base.BaseSecGroupTest):
@decorators.idempotent_id('13e95171-6cbd-489c-9d7c-3f9c58215c18')
def test_create_show_delete_port_user_defined_mac(self):
# Create a port for a legal mac
body = self.ports_client.create_port(network_id=self.network['id'])
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__))
old_port = body['port']
free_mac_address = old_port['mac_address']
self.ports_client.delete_port(old_port['id'])
# Create a new port with user defined mac
body = self.ports_client.create_port(network_id=self.network['id'],
mac_address=free_mac_address)
body = self.ports_client.create_port(
network_id=self.network['id'],
mac_address=free_mac_address,
name=data_utils.rand_name(self.__class__.__name__))
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.ports_client.delete_port, body['port']['id'])
port = body['port']

View File

@ -123,7 +123,8 @@ class RoutersTest(base.BaseNetworkTest):
router = self.create_router()
self.addCleanup(self.delete_router, router)
port_body = self.ports_client.create_port(
network_id=network['id'])
network_id=network['id'],
name=data_utils.rand_name(self.__class__.__name__))
# add router interface to port created above
interface = self.routers_client.add_router_interface(
router['id'],
@ -150,6 +151,7 @@ class RoutersTest(base.BaseNetworkTest):
# Don't know public_network_address, so at first create address
# from public_network and delete
port = self.admin_ports_client.create_port(
name=data_utils.rand_name(self.__class__.__name__),
network_id=CONF.network.public_network_id)['port']
self.admin_ports_client.delete_port(port_id=port['id'])