Merge "Cleanup networks resources at test level"
diff --git a/tempest/api/network/test_floating_ips.py b/tempest/api/network/test_floating_ips.py
index ef4a23a..b4bb88e 100644
--- a/tempest/api/network/test_floating_ips.py
+++ b/tempest/api/network/test_floating_ips.py
@@ -15,6 +15,7 @@
 
 from tempest.api.network import base
 from tempest.common import utils
+from tempest.common.utils import data_utils
 from tempest.common.utils import net_utils
 from tempest import config
 from tempest.lib import decorators
@@ -158,11 +159,21 @@
         self.addCleanup(self.floating_ips_client.delete_floatingip,
                         created_floating_ip['id'])
         self.assertEqual(created_floating_ip['router_id'], self.router['id'])
-        network2 = self.create_network()
+        network_name = data_utils.rand_name(self.__class__.__name__)
+        network2 = self.networks_client.create_network(
+            name=network_name)['network']
+        self.addCleanup(self.networks_client.delete_network,
+                        network2['id'])
         subnet2 = self.create_subnet(network2)
+        self.addCleanup(self.subnets_client.delete_subnet, subnet2['id'])
         router2 = self.create_router(external_network_id=self.ext_net_id)
+        self.addCleanup(self.routers_client.delete_router, router2['id'])
         self.create_router_interface(router2['id'], subnet2['id'])
+        self.addCleanup(self.routers_client.remove_router_interface,
+                        router2['id'], subnet_id=subnet2['id'])
         port_other_router = self.create_port(network2)
+        self.addCleanup(self.ports_client.delete_port,
+                        port_other_router['id'])
         # Associate floating IP to the other port on another router
         floating_ip = self.floating_ips_client.update_floatingip(
             created_floating_ip['id'],
diff --git a/tempest/api/network/test_ports.py b/tempest/api/network/test_ports.py
index 5168423..246a5c3 100644
--- a/tempest/api/network/test_ports.py
+++ b/tempest/api/network/test_ports.py
@@ -52,6 +52,21 @@
         ports_list = body['ports']
         self.assertFalse(port_id in [n['id'] for n in ports_list])
 
+    def _create_subnet(self, network, gateway='',
+                       cidr=None, mask_bits=None, **kwargs):
+        subnet = self.create_subnet(network, gateway, cidr, mask_bits)
+        self.addCleanup(self.subnets_client.delete_subnet, subnet['id'])
+        return subnet
+
+    def _create_network(self, network_name=None, **kwargs):
+        network_name = network_name or data_utils.rand_name(
+            self.__class__.__name__)
+        network = self.networks_client.create_network(
+            name=network_name, **kwargs)['network']
+        self.addCleanup(self.networks_client.delete_network,
+                        network['id'])
+        return network
+
     @decorators.attr(type='smoke')
     @decorators.idempotent_id('c72c1c0c-2193-4aca-aaa4-b1442640f51c')
     def test_create_update_delete_port(self):
@@ -73,7 +88,7 @@
     @decorators.idempotent_id('67f1b811-f8db-43e2-86bd-72c074d4a42c')
     def test_create_bulk_port(self):
         network1 = self.network
-        network2 = self.create_network()
+        network2 = self._create_network()
         network_list = [network1['id'], network2['id']]
         port_list = [{'network_id': net_id} for net_id in network_list]
         body = self.ports_client.create_bulk_ports(ports=port_list)
@@ -90,7 +105,7 @@
     @decorators.attr(type='smoke')
     @decorators.idempotent_id('0435f278-40ae-48cb-a404-b8a087bc09b1')
     def test_create_port_in_allowed_allocation_pools(self):
-        network = self.create_network()
+        network = self._create_network()
         net_id = network['id']
         address = self.cidr
         address.prefixlen = self.mask_bits
@@ -100,10 +115,9 @@
             raise exceptions.InvalidConfiguration(msg)
         allocation_pools = {'allocation_pools': [{'start': str(address[2]),
                                                   'end': str(address[-2])}]}
-        subnet = self.create_subnet(network, cidr=address,
-                                    mask_bits=address.prefixlen,
-                                    **allocation_pools)
-        self.addCleanup(self.subnets_client.delete_subnet, subnet['id'])
+        self._create_subnet(network, cidr=address,
+                            mask_bits=address.prefixlen,
+                            **allocation_pools)
         body = self.ports_client.create_port(network_id=net_id)
         self.addCleanup(self.ports_client.delete_port, body['port']['id'])
         port = body['port']
@@ -153,9 +167,8 @@
     @decorators.idempotent_id('e7fe260b-1e79-4dd3-86d9-bec6a7959fc5')
     def test_port_list_filter_by_ip(self):
         # Create network and subnet
-        network = self.create_network()
-        subnet = self.create_subnet(network)
-        self.addCleanup(self.subnets_client.delete_subnet, subnet['id'])
+        network = self._create_network()
+        self._create_subnet(network)
         # Create two ports
         port_1 = self.ports_client.create_port(network_id=network['id'])
         self.addCleanup(self.ports_client.delete_port, port_1['port']['id'])
@@ -187,10 +200,8 @@
         'ip-substring-filtering extension not enabled.')
     def test_port_list_filter_by_ip_substr(self):
         # Create network and subnet
-        network = self.create_network()
-        subnet = self.create_subnet(network)
-        self.addCleanup(self.subnets_client.delete_subnet, subnet['id'])
-
+        network = self._create_network()
+        subnet = self._create_subnet(network)
         # Get two IP addresses
         ip_address_1 = None
         ip_address_2 = None
@@ -261,10 +272,8 @@
     @decorators.idempotent_id('5ad01ed0-0e6e-4c5d-8194-232801b15c72')
     def test_port_list_filter_by_router_id(self):
         # Create a router
-        network = self.create_network()
-        self.addCleanup(self.networks_client.delete_network, network['id'])
-        subnet = self.create_subnet(network)
-        self.addCleanup(self.subnets_client.delete_subnet, subnet['id'])
+        network = self._create_network()
+        self._create_subnet(network)
         router = self.create_router()
         self.addCleanup(self.routers_client.delete_router, router['id'])
         port = self.ports_client.create_port(network_id=network['id'])
@@ -294,12 +303,9 @@
     @decorators.idempotent_id('63aeadd4-3b49-427f-a3b1-19ca81f06270')
     def test_create_update_port_with_second_ip(self):
         # Create a network with two subnets
-        network = self.create_network()
-        self.addCleanup(self.networks_client.delete_network, network['id'])
-        subnet_1 = self.create_subnet(network)
-        self.addCleanup(self.subnets_client.delete_subnet, subnet_1['id'])
-        subnet_2 = self.create_subnet(network)
-        self.addCleanup(self.subnets_client.delete_subnet, subnet_2['id'])
+        network = self._create_network()
+        subnet_1 = self._create_subnet(network)
+        subnet_2 = self._create_subnet(network)
         fixed_ip_1 = [{'subnet_id': subnet_1['id']}]
         fixed_ip_2 = [{'subnet_id': subnet_2['id']}]
 
@@ -323,8 +329,7 @@
         self.assertEqual(2, len(port['fixed_ips']))
 
     def _update_port_with_security_groups(self, security_groups_names):
-        subnet_1 = self.create_subnet(self.network)
-        self.addCleanup(self.subnets_client.delete_subnet, subnet_1['id'])
+        subnet_1 = self._create_subnet(self.network)
         fixed_ip_1 = [{'subnet_id': subnet_1['id']}]
 
         security_groups_list = list()
@@ -413,10 +418,8 @@
         utils.is_extension_enabled('security-group', 'network'),
         'security-group extension not enabled.')
     def test_create_port_with_no_securitygroups(self):
-        network = self.create_network()
-        self.addCleanup(self.networks_client.delete_network, network['id'])
-        subnet = self.create_subnet(network)
-        self.addCleanup(self.subnets_client.delete_subnet, subnet['id'])
+        network = self._create_network()
+        self._create_subnet(network)
         port = self.create_port(network, security_groups=[])
         self.addCleanup(self.ports_client.delete_port, port['id'])
         self.assertIsNotNone(port['security_groups'])
diff --git a/tempest/api/network/test_routers.py b/tempest/api/network/test_routers.py
index abbb779..3ff12e4 100644
--- a/tempest/api/network/test_routers.py
+++ b/tempest/api/network/test_routers.py
@@ -39,6 +39,11 @@
         self.addCleanup(self._cleanup_router, router)
         return router
 
+    def _create_subnet(self, network, gateway='', cidr=None):
+        subnet = self.create_subnet(network, gateway, cidr)
+        self.addCleanup(self.subnets_client.delete_subnet, subnet['id'])
+        return subnet
+
     def _add_router_interface_with_subnet_id(self, router_id, subnet_id):
         interface = self.routers_client.add_router_interface(
             router_id, subnet_id=subnet_id)
@@ -65,12 +70,12 @@
                           'The public_network_id option must be specified.')
     def test_create_show_list_update_delete_router(self):
         # Create a router
-        name = data_utils.rand_name(self.__class__.__name__ + '-router')
+        router_name = data_utils.rand_name(self.__class__.__name__ + '-router')
         router = self._create_router(
-            name=name,
+            name=router_name,
             admin_state_up=False,
             external_network_id=CONF.network.public_network_id)
-        self.assertEqual(router['name'], name)
+        self.assertEqual(router['name'], router_name)
         self.assertEqual(router['admin_state_up'], False)
         self.assertEqual(
             router['external_gateway_info']['network_id'],
@@ -97,8 +102,12 @@
     @decorators.attr(type='smoke')
     @decorators.idempotent_id('b42e6e39-2e37-49cc-a6f4-8467e940900a')
     def test_add_remove_router_interface_with_subnet_id(self):
-        network = self.create_network()
-        subnet = self.create_subnet(network)
+        network_name = data_utils.rand_name(self.__class__.__name__)
+        network = self.networks_client.create_network(
+            name=network_name)['network']
+        self.addCleanup(self.networks_client.delete_network,
+                        network['id'])
+        subnet = self._create_subnet(network)
         router = self._create_router()
         # Add router interface with subnet id
         interface = self.routers_client.add_router_interface(
@@ -116,8 +125,12 @@
     @decorators.attr(type='smoke')
     @decorators.idempotent_id('2b7d2f37-6748-4d78-92e5-1d590234f0d5')
     def test_add_remove_router_interface_with_port_id(self):
-        network = self.create_network()
-        self.create_subnet(network)
+        network_name = data_utils.rand_name(self.__class__.__name__)
+        network = self.networks_client.create_network(
+            name=network_name)['network']
+        self.addCleanup(self.networks_client.delete_network,
+                        network['id'])
+        self._create_subnet(network)
         router = self._create_router()
         port_body = self.ports_client.create_port(
             network_id=network['id'])
@@ -183,13 +196,18 @@
         # Update router extra route, second ip of the range is
         # used as next hop
         for i in range(routes_num):
-            network = self.create_network()
+            network_name = data_utils.rand_name(self.__class__.__name__)
+            network = self.networks_client.create_network(
+                name=network_name)['network']
+            self.addCleanup(self.networks_client.delete_network,
+                            network['id'])
             subnet = self.create_subnet(network, cidr=next_cidr)
             next_cidr = next_cidr.next()
 
             # Add router interface with subnet id
             self.create_router_interface(router['id'], subnet['id'])
-
+            self.addCleanup(self._remove_router_interface_with_subnet_id,
+                            router['id'], subnet['id'])
             cidr = netaddr.IPNetwork(subnet['cidr'])
             next_hop = str(cidr[2])
             destination = str(subnet['cidr'])
@@ -242,13 +260,18 @@
     @decorators.attr(type='smoke')
     @decorators.idempotent_id('802c73c9-c937-4cef-824b-2191e24a6aab')
     def test_add_multiple_router_interfaces(self):
-        network01 = self.create_network(
-            network_name=data_utils.rand_name('router-network01-'))
-        network02 = self.create_network(
-            network_name=data_utils.rand_name('router-network02-'))
-        subnet01 = self.create_subnet(network01)
+        network_name = data_utils.rand_name(self.__class__.__name__)
+        network01 = self.networks_client.create_network(
+            name=network_name)['network']
+        self.addCleanup(self.networks_client.delete_network,
+                        network01['id'])
+        network02 = self.networks_client.create_network(
+            name=data_utils.rand_name(self.__class__.__name__))['network']
+        self.addCleanup(self.networks_client.delete_network,
+                        network02['id'])
+        subnet01 = self._create_subnet(network01)
         sub02_cidr = self.cidr.next()
-        subnet02 = self.create_subnet(network02, cidr=sub02_cidr)
+        subnet02 = self._create_subnet(network02, cidr=sub02_cidr)
         router = self._create_router()
         interface01 = self._add_router_interface_with_subnet_id(router['id'],
                                                                 subnet01['id'])
@@ -261,8 +284,12 @@
 
     @decorators.idempotent_id('96522edf-b4b5-45d9-8443-fa11c26e6eff')
     def test_router_interface_port_update_with_fixed_ip(self):
-        network = self.create_network()
-        subnet = self.create_subnet(network)
+        network_name = data_utils.rand_name(self.__class__.__name__)
+        network = self.networks_client.create_network(
+            name=network_name)['network']
+        self.addCleanup(self.networks_client.delete_network,
+                        network['id'])
+        subnet = self._create_subnet(network)
         router = self._create_router()
         fixed_ip = [{'subnet_id': subnet['id']}]
         interface = self._add_router_interface_with_subnet_id(router['id'],