Split out Neutron networks client
Splitting out a networks client for Neutron.
Partially implements blueprint consistent-service-method-names
Change-Id: Iff82c07bae2b1c82e5ff914ca90fcf5fc7de8daa
diff --git a/tempest/api/compute/servers/test_create_server.py b/tempest/api/compute/servers/test_create_server.py
index 68af81c..2fd7520 100644
--- a/tempest/api/compute/servers/test_create_server.py
+++ b/tempest/api/compute/servers/test_create_server.py
@@ -41,6 +41,7 @@
super(ServersTestJSON, cls).setup_clients()
cls.client = cls.servers_client
cls.network_client = cls.os.network_client
+ cls.networks_client = cls.os.networks_client
@classmethod
def resource_setup(cls):
@@ -69,8 +70,8 @@
def _create_net_subnet_ret_net_from_cidr(self, cidr):
name_net = data_utils.rand_name(self.__class__.__name__)
- net = self.network_client.create_network(name=name_net)
- self.addCleanup(self.network_client.delete_network,
+ net = self.networks_client.create_network(name=name_net)
+ self.addCleanup(self.networks_client.delete_network,
net['network']['id'])
subnet = self.network_client.create_subnet(
diff --git a/tempest/api/network/admin/test_external_network_extension.py b/tempest/api/network/admin/test_external_network_extension.py
index d942641..62aa18e 100644
--- a/tempest/api/network/admin/test_external_network_extension.py
+++ b/tempest/api/network/admin/test_external_network_extension.py
@@ -26,9 +26,10 @@
post_body = {'name': data_utils.rand_name('network-')}
if external:
post_body['router:external'] = external
- body = self.admin_client.create_network(**post_body)
+ body = self.admin_networks_client.create_network(**post_body)
network = body['network']
- self.addCleanup(self.admin_client.delete_network, network['id'])
+ self.addCleanup(
+ self.admin_networks_client.delete_network, network['id'])
return network
@test.idempotent_id('462be770-b310-4df9-9c42-773217e4c8b1')
@@ -47,8 +48,8 @@
network = self._create_network(external=False)
self.assertFalse(network.get('router:external', False))
update_body = {'router:external': True}
- body = self.admin_client.update_network(network['id'],
- **update_body)
+ body = self.admin_networks_client.update_network(network['id'],
+ **update_body)
updated_network = body['network']
# Verify that router:external parameter was updated
self.assertTrue(updated_network['router:external'])
@@ -60,7 +61,7 @@
# List networks as a normal user and confirm the external
# network extension attribute is returned for those networks
# that were created as external
- body = self.client.list_networks()
+ body = self.networks_client.list_networks()
networks_list = [net['id'] for net in body['networks']]
self.assertIn(external_network['id'], networks_list)
self.assertIn(self.network['id'], networks_list)
@@ -76,12 +77,12 @@
external_network = self._create_network()
# Show an external network as a normal user and confirm the
# external network extension attribute is returned.
- body = self.client.show_network(external_network['id'])
+ body = self.networks_client.show_network(external_network['id'])
show_ext_net = body['network']
self.assertEqual(external_network['name'], show_ext_net['name'])
self.assertEqual(external_network['id'], show_ext_net['id'])
self.assertTrue(show_ext_net['router:external'])
- body = self.client.show_network(self.network['id'])
+ body = self.networks_client.show_network(self.network['id'])
show_net = body['network']
# Verify with show that router:external is False for network
self.assertEqual(self.network['name'], show_net['name'])
@@ -96,10 +97,11 @@
"""
# Set cls.client to admin to use base.create_subnet()
client = self.admin_client
- body = client.create_network(**{'router:external': True})
+ body = self.admin_networks_client.create_network(
+ **{'router:external': True})
external_network = body['network']
self.addCleanup(self._try_delete_resource,
- client.delete_network,
+ self.admin_networks_client.delete_network,
external_network['id'])
subnet = self.create_subnet(external_network, client=client,
enable_dhcp=False)
@@ -113,7 +115,7 @@
network=external_network['id'])
self.assertIn(created_floating_ip['id'],
(f['id'] for f in floatingip_list['floatingips']))
- client.delete_network(external_network['id'])
+ self.admin_networks_client.delete_network(external_network['id'])
# Verifies floating ip is deleted
floatingip_list = client.list_floatingips()
self.assertNotIn(created_floating_ip['id'],
diff --git a/tempest/api/network/base.py b/tempest/api/network/base.py
index fa6fa33..39bdcff 100644
--- a/tempest/api/network/base.py
+++ b/tempest/api/network/base.py
@@ -73,6 +73,7 @@
def setup_clients(cls):
super(BaseNetworkTest, cls).setup_clients()
cls.client = cls.os.network_client
+ cls.networks_client = cls.os.networks_client
@classmethod
def resource_setup(cls):
@@ -118,7 +119,7 @@
subnet['id'])
# Clean up networks
for network in cls.networks:
- cls._try_delete_resource(cls.client.delete_network,
+ cls._try_delete_resource(cls.networks_client.delete_network,
network['id'])
super(BaseNetworkTest, cls).resource_cleanup()
@@ -147,7 +148,7 @@
"""Wrapper utility that returns a test network."""
network_name = network_name or data_utils.rand_name('test-network-')
- body = cls.client.create_network(name=network_name)
+ body = cls.networks_client.create_network(name=network_name)
network = body['network']
cls.networks.append(network)
return network
@@ -265,6 +266,7 @@
def setup_clients(cls):
super(BaseAdminNetworkTest, cls).setup_clients()
cls.admin_client = cls.os_adm.network_client
+ cls.admin_networks_client = cls.os_adm.networks_client
@classmethod
def create_metering_label(cls, name, description):
diff --git a/tempest/api/network/test_networks.py b/tempest/api/network/test_networks.py
index 1116573..a4ab43a 100644
--- a/tempest/api/network/test_networks.py
+++ b/tempest/api/network/test_networks.py
@@ -146,7 +146,7 @@
def _delete_network(self, network):
# Deleting network also deletes its subnets if exists
- self.client.delete_network(network['id'])
+ self.networks_client.delete_network(network['id'])
if network in self.networks:
self.networks.remove(network)
for subnet in self.subnets:
@@ -171,7 +171,7 @@
del subnet['dns_nameservers'], compare_args['dns_nameservers']
self._compare_resource_attrs(subnet, compare_args)
- self.client.delete_network(net_id)
+ self.networks_client.delete_network(net_id)
self.networks.pop()
self.subnets.pop()
@@ -186,7 +186,7 @@
self.assertEqual('ACTIVE', network['status'])
# Verify network update
new_name = "New_network"
- body = self.client.update_network(net_id, name=new_name)
+ body = self.networks_client.update_network(net_id, name=new_name)
updated_net = body['network']
self.assertEqual(updated_net['name'], new_name)
# Find a cidr that is not in use yet and create a subnet with it
@@ -202,7 +202,7 @@
@test.idempotent_id('2bf13842-c93f-4a69-83ed-717d2ec3b44e')
def test_show_network(self):
# Verify the details of a network
- body = self.client.show_network(self.network['id'])
+ body = self.networks_client.show_network(self.network['id'])
network = body['network']
for key in ['id', 'name']:
self.assertEqual(network[key], self.network[key])
@@ -211,8 +211,8 @@
def test_show_network_fields(self):
# Verify specific fields of a network
fields = ['id', 'name']
- body = self.client.show_network(self.network['id'],
- fields=fields)
+ body = self.networks_client.show_network(self.network['id'],
+ fields=fields)
network = body['network']
self.assertEqual(sorted(network.keys()), sorted(fields))
for field_name in fields:
@@ -222,7 +222,7 @@
@test.idempotent_id('f7ffdeda-e200-4a7a-bcbe-05716e86bf43')
def test_list_networks(self):
# Verify the network exists in the list of all networks
- body = self.client.list_networks()
+ body = self.networks_client.list_networks()
networks = [network['id'] for network in body['networks']
if network['id'] == self.network['id']]
self.assertNotEmpty(networks, "Created network not found in the list")
@@ -231,7 +231,7 @@
def test_list_networks_fields(self):
# Verify specific fields of the networks
fields = ['id', 'name']
- body = self.client.list_networks(fields=fields)
+ body = self.networks_client.list_networks(fields=fields)
networks = body['networks']
self.assertNotEmpty(networks, "Network list returned is empty")
for network in networks:
@@ -281,7 +281,7 @@
def _try_delete_network(self, net_id):
# delete network, if it exists
try:
- self.client.delete_network(net_id)
+ self.networks_client.delete_network(net_id)
# if network is not found, this means it was deleted in the test
except lib_exc.NotFound:
pass
@@ -290,7 +290,7 @@
def test_delete_network_with_subnet(self):
# Creates a network
name = data_utils.rand_name('network-')
- body = self.client.create_network(name=name)
+ body = self.networks_client.create_network(name=name)
network = body['network']
net_id = network['id']
self.addCleanup(self._try_delete_network, net_id)
@@ -300,7 +300,7 @@
subnet_id = subnet['id']
# Delete network while the subnet still exists
- body = self.client.delete_network(net_id)
+ body = self.networks_client.delete_network(net_id)
# Verify that the subnet got automatically deleted.
self.assertRaises(lib_exc.NotFound, self.client.show_subnet,
@@ -382,7 +382,7 @@
@test.idempotent_id('af774677-42a9-4e4b-bb58-16fe6a5bc1ec')
def test_external_network_visibility(self):
"""Verifies user can see external networks but not subnets."""
- body = self.client.list_networks(**{'router:external': True})
+ body = self.networks_client.list_networks(**{'router:external': True})
networks = [network['id'] for network in body['networks']]
self.assertNotEmpty(networks, "No external networks found")
@@ -426,9 +426,9 @@
def _delete_networks(self, created_networks):
for n in created_networks:
- self.client.delete_network(n['id'])
+ self.networks_client.delete_network(n['id'])
# Asserting that the networks are not found in the list after deletion
- body = self.client.list_networks()
+ body = self.networks_client.list_networks()
networks_list = [network['id'] for network in body['networks']]
for n in created_networks:
self.assertNotIn(n['id'], networks_list)
@@ -461,7 +461,7 @@
created_networks = body['networks']
self.addCleanup(self._delete_networks, created_networks)
# Asserting that the networks are found in the list after creation
- body = self.client.list_networks()
+ body = self.networks_client.list_networks()
networks_list = [network['id'] for network in body['networks']]
for n in created_networks:
self.assertIsNotNone(n['id'])
@@ -630,7 +630,7 @@
self.assertRaisesRegexp(
lib_exc.Conflict,
"There are one or more ports still in use on the network",
- self.client.delete_network,
+ self.networks_client.delete_network,
slaac_network['id'])
@test.idempotent_id('88554555-ebf8-41ef-9300-4926d45e06e9')
diff --git a/tempest/api/network/test_networks_negative.py b/tempest/api/network/test_networks_negative.py
index 94c3f9a..4d1971f 100644
--- a/tempest/api/network/test_networks_negative.py
+++ b/tempest/api/network/test_networks_negative.py
@@ -27,7 +27,7 @@
@test.idempotent_id('9293e937-824d-42d2-8d5b-e985ea67002a')
def test_show_non_existent_network(self):
non_exist_id = data_utils.rand_uuid()
- self.assertRaises(lib_exc.NotFound, self.client.show_network,
+ self.assertRaises(lib_exc.NotFound, self.networks_client.show_network,
non_exist_id)
@test.attr(type=['negative'])
@@ -48,14 +48,16 @@
@test.idempotent_id('98bfe4e3-574e-4012-8b17-b2647063de87')
def test_update_non_existent_network(self):
non_exist_id = data_utils.rand_uuid()
- self.assertRaises(lib_exc.NotFound, self.client.update_network,
- non_exist_id, name="new_name")
+ self.assertRaises(
+ lib_exc.NotFound, self.networks_client.update_network,
+ non_exist_id, name="new_name")
@test.attr(type=['negative'])
@test.idempotent_id('03795047-4a94-4120-a0a1-bd376e36fd4e')
def test_delete_non_existent_network(self):
non_exist_id = data_utils.rand_uuid()
- self.assertRaises(lib_exc.NotFound, self.client.delete_network,
+ self.assertRaises(lib_exc.NotFound,
+ self.networks_client.delete_network,
non_exist_id)
@test.attr(type=['negative'])
diff --git a/tempest/api/network/test_ports.py b/tempest/api/network/test_ports.py
index 6a8fbec..e455ad2 100644
--- a/tempest/api/network/test_ports.py
+++ b/tempest/api/network/test_ports.py
@@ -177,7 +177,7 @@
def test_port_list_filter_by_router_id(self):
# Create a router
network = self.create_network()
- self.addCleanup(self.client.delete_network, network['id'])
+ self.addCleanup(self.networks_client.delete_network, network['id'])
subnet = self.create_subnet(network)
self.addCleanup(self.client.delete_subnet, subnet['id'])
router = self.create_router(data_utils.rand_name('router-'))
@@ -210,7 +210,7 @@
def test_create_update_port_with_second_ip(self):
# Create a network with two subnets
network = self.create_network()
- self.addCleanup(self.client.delete_network, network['id'])
+ self.addCleanup(self.networks_client.delete_network, network['id'])
subnet_1 = self.create_subnet(network)
self.addCleanup(self.client.delete_subnet, subnet_1['id'])
subnet_2 = self.create_subnet(network)
@@ -318,7 +318,7 @@
@test.idempotent_id('4179dcb9-1382-4ced-84fe-1b91c54f5735')
def test_create_port_with_no_securitygroups(self):
network = self.create_network()
- self.addCleanup(self.client.delete_network, network['id'])
+ self.addCleanup(self.networks_client.delete_network, network['id'])
subnet = self.create_subnet(network)
self.addCleanup(self.client.delete_subnet, subnet['id'])
port = self.create_port(network, security_groups=[])
diff --git a/tempest/api/network/test_routers.py b/tempest/api/network/test_routers.py
index ca5a868..29855e1 100644
--- a/tempest/api/network/test_routers.py
+++ b/tempest/api/network/test_routers.py
@@ -188,7 +188,7 @@
gw_port = list_body['ports'][0]
fixed_ips = gw_port['fixed_ips']
self.assertGreaterEqual(len(fixed_ips), 1)
- public_net_body = self.admin_client.show_network(
+ public_net_body = self.admin_networks_client.show_network(
CONF.network.public_network_id)
public_subnet_id = public_net_body['network']['subnets'][0]
self.assertIn(public_subnet_id,
diff --git a/tempest/api/orchestration/base.py b/tempest/api/orchestration/base.py
index f450b0c..4968835 100644
--- a/tempest/api/orchestration/base.py
+++ b/tempest/api/orchestration/base.py
@@ -50,6 +50,8 @@
cls.servers_client = cls.os.servers_client
cls.keypairs_client = cls.os.keypairs_client
cls.network_client = cls.os.network_client
+ cls.networks_client = cls.os.networks_client
+ cls.volumes_client = cls.os.volumes_client
cls.images_v2_client = cls.os.image_client_v2
if CONF.volume_feature_enabled.api_v2:
diff --git a/tempest/api/orchestration/stacks/test_neutron_resources.py b/tempest/api/orchestration/stacks/test_neutron_resources.py
index 8f1f0d6..99c2a97 100644
--- a/tempest/api/orchestration/stacks/test_neutron_resources.py
+++ b/tempest/api/orchestration/stacks/test_neutron_resources.py
@@ -118,7 +118,7 @@
def test_created_network(self):
"""Verifies created network."""
network_id = self.test_resources.get('Network')['physical_resource_id']
- body = self.network_client.show_network(network_id)
+ body = self.networks_client.show_network(network_id)
network = body['network']
self.assertIsInstance(network, dict)
self.assertEqual(network_id, network['id'])
diff --git a/tempest/clients.py b/tempest/clients.py
index 2756fa8..b42c0a6 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -108,6 +108,7 @@
from tempest.services.messaging.json.messaging_client import \
MessagingClient
from tempest.services.network.json.network_client import NetworkClient
+from tempest.services.network.json.networks_client import NetworksClient
from tempest.services.object_storage.account_client import AccountClient
from tempest.services.object_storage.container_client import ContainerClient
from tempest.services.object_storage.object_client import ObjectClient
@@ -197,6 +198,14 @@
build_interval=CONF.network.build_interval,
build_timeout=CONF.network.build_timeout,
**self.default_params)
+ self.networks_client = NetworksClient(
+ self.auth_provider,
+ CONF.network.catalog_type,
+ CONF.network.region or CONF.identity.region,
+ endpoint_type=CONF.network.endpoint_type,
+ build_interval=CONF.network.build_interval,
+ build_timeout=CONF.network.build_timeout,
+ **self.default_params)
self.messaging_client = MessagingClient(
self.auth_provider,
CONF.messaging.catalog_type,
diff --git a/tempest/cmd/account_generator.py b/tempest/cmd/account_generator.py
index ce7728e..c26df96 100755
--- a/tempest/cmd/account_generator.py
+++ b/tempest/cmd/account_generator.py
@@ -93,6 +93,7 @@
from tempest import exceptions as exc
from tempest.services.identity.v2.json import identity_client
from tempest.services.network.json import network_client
+from tempest.services.network.json import networks_client
import tempest_lib.auth
from tempest_lib.common.utils import data_utils
import tempest_lib.exceptions
@@ -136,19 +137,29 @@
**params
)
network_admin = None
+ networks_admin = None
+ neutron_iso_networks = False
if (CONF.service_available.neutron and
CONF.auth.create_isolated_networks):
+ neutron_iso_networks = True
network_admin = network_client.NetworkClient(
_auth,
CONF.network.catalog_type,
CONF.network.region or CONF.identity.region,
endpoint_type='adminURL',
**params)
- return identity_admin, network_admin
+ networks_admin = networks_client.NetworksClient(
+ _auth,
+ CONF.network.catalog_type,
+ CONF.network.region or CONF.identity.region,
+ endpoint_type='adminURL',
+ **params)
+ return identity_admin, neutron_iso_networks, network_admin, networks_admin
def create_resources(opts, resources):
- identity_admin, network_admin = get_admin_clients(opts)
+ (identity_admin, neutron_iso_networks,
+ network_admin, networks_admin) = get_admin_clients(opts)
roles = identity_admin.list_roles()
for u in resources['users']:
u['role_ids'] = []
@@ -187,12 +198,11 @@
u['name'] = random_user_name(opts.tag, u['prefix'])
LOG.info('Users created')
- if network_admin:
+ if neutron_iso_networks:
for u in resources['users']:
tenant = identity_admin.get_tenant_by_name(u['tenant'])
- network_name, router_name = create_network_resources(network_admin,
- tenant['id'],
- u['name'])
+ network_name, router_name = create_network_resources(
+ network_admin, networks_admin, tenant['id'], u['name'])
u['network'] = network_name
u['router'] = router_name
LOG.info('Networks created')
@@ -218,10 +228,11 @@
LOG.info('Resources deployed successfully!')
-def create_network_resources(network_admin_client, tenant_id, name):
+def create_network_resources(network_admin_client, networks_admin_client,
+ tenant_id, name):
def _create_network(name):
- resp_body = network_admin_client.create_network(
+ resp_body = networks_admin_client.create_network(
name=name, tenant_id=tenant_id)
return resp_body['network']
diff --git a/tempest/cmd/cleanup_service.py b/tempest/cmd/cleanup_service.py
index 6d4e3a9..6c79abc 100644
--- a/tempest/cmd/cleanup_service.py
+++ b/tempest/cmd/cleanup_service.py
@@ -83,7 +83,7 @@
def _get_network_id(net_name, tenant_name):
am = clients.AdminManager()
- net_cl = am.network_client
+ net_cl = am.networks_client
id_cl = am.identity_client
networks = net_cl.list_networks()
@@ -381,6 +381,7 @@
def __init__(self, manager, **kwargs):
super(NetworkService, self).__init__(kwargs)
self.client = manager.network_client
+ self.networks_client = manager.networks_client
def _filter_by_conf_networks(self, item_list):
if not item_list or not all(('network_id' in i for i in item_list)):
@@ -390,7 +391,7 @@
not in CONF_NETWORKS]
def list(self):
- client = self.client
+ client = self.networks_client
networks = client.list_networks(**self.tenant_filter)
networks = networks['networks']
# filter out networks declared in tempest.conf
@@ -401,7 +402,7 @@
return networks
def delete(self):
- client = self.client
+ client = self.networks_client
networks = self.list()
for n in networks:
try:
diff --git a/tempest/common/isolated_creds.py b/tempest/common/isolated_creds.py
index a4081c9..3850e0e 100644
--- a/tempest/common/isolated_creds.py
+++ b/tempest/common/isolated_creds.py
@@ -40,8 +40,8 @@
self.default_admin_creds = cred_provider.get_configured_credentials(
'identity_admin', fill_in=True,
identity_version=self.identity_version)
- self.identity_admin_client, self.network_admin_client = (
- self._get_admin_clients())
+ (self.identity_admin_client, self.network_admin_client,
+ self.networks_admin_client) = self._get_admin_clients()
# Domain where isolated credentials are provisioned (v3 only).
# Use that of the admin account is None is configured.
self.creds_domain_name = None
@@ -61,9 +61,9 @@
"""
os = clients.Manager(self.default_admin_creds)
if self.identity_version == 'v2':
- return os.identity_client, os.network_client
+ return os.identity_client, os.network_client, os.networks_client
else:
- return os.identity_v3_client, os.network_client
+ return os.identity_v3_client, os.network_client, os.networks_client
def _create_creds(self, suffix="", admin=False, roles=None):
"""Create random credentials under the following schema.
@@ -158,7 +158,7 @@
return network, subnet, router
def _create_network(self, name, tenant_id):
- resp_body = self.network_admin_client.create_network(
+ resp_body = self.networks_admin_client.create_network(
name=name, tenant_id=tenant_id)
return resp_body['network']
@@ -268,7 +268,7 @@
subnet_name)
def _clear_isolated_network(self, network_id, network_name):
- net_client = self.network_admin_client
+ net_client = self.networks_admin_client
try:
net_client.delete_network(network_id)
except lib_exc.NotFound:
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index 7ab3864..0069da1 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -61,6 +61,7 @@
cls.interface_client = cls.manager.interfaces_client
# Neutron network client
cls.network_client = cls.manager.network_client
+ cls.networks_client = cls.manager.networks_client
# Heat client
cls.orchestration_client = cls.manager.orchestration_client
@@ -582,23 +583,25 @@
super(NetworkScenarioTest, cls).resource_setup()
cls.tenant_id = cls.manager.identity_client.tenant_id
- def _create_network(self, client=None, tenant_id=None,
- namestart='network-smoke-'):
+ def _create_network(self, client=None, networks_client=None,
+ tenant_id=None, namestart='network-smoke-'):
if not client:
client = self.network_client
+ if not networks_client:
+ networks_client = self.networks_client
if not tenant_id:
tenant_id = client.tenant_id
name = data_utils.rand_name(namestart)
- result = client.create_network(name=name, tenant_id=tenant_id)
- network = net_resources.DeletableNetwork(client=client,
- **result['network'])
+ result = networks_client.create_network(name=name, tenant_id=tenant_id)
+ network = net_resources.DeletableNetwork(
+ networks_client=networks_client, **result['network'])
self.assertEqual(network.name, name)
self.addCleanup(self.delete_wrapper, network.delete)
return network
def _list_networks(self, *args, **kwargs):
"""List networks using admin creds """
- networks_list = self.admin_manager.network_client.list_networks(
+ networks_list = self.admin_manager.networks_client.list_networks(
*args, **kwargs)
return networks_list['networks']
@@ -1035,8 +1038,8 @@
router.update(admin_state_up=admin_state_up)
self.assertEqual(admin_state_up, router.admin_state_up)
- def create_networks(self, client=None, tenant_id=None,
- dns_nameservers=None):
+ def create_networks(self, client=None, networks_client=None,
+ tenant_id=None, dns_nameservers=None):
"""Create a network with a subnet connected to a router.
The baremetal driver is a special case since all nodes are
@@ -1061,7 +1064,9 @@
router = None
subnet = None
else:
- network = self._create_network(client=client, tenant_id=tenant_id)
+ network = self._create_network(
+ client=client, networks_client=networks_client,
+ tenant_id=tenant_id)
router = self._get_router(client=client, tenant_id=tenant_id)
subnet_kwargs = dict(network=network, client=client)
@@ -1074,9 +1079,12 @@
def create_server(self, name=None, image=None, flavor=None,
wait_on_boot=True, wait_on_delete=True,
- network_client=None, create_kwargs=None):
+ network_client=None, networks_client=None,
+ create_kwargs=None):
if network_client is None:
network_client = self.network_client
+ if networks_client is None:
+ networks_client = self.networks_client
vnic_type = CONF.network.port_vnic_type
@@ -1112,7 +1120,7 @@
# as we would expect when passing the call to the clients
# with no networks
if not networks:
- networks = network_client.list_networks(filters={
+ networks = networks_client.list_networks(filters={
'router:external': False})
self.assertEqual(1, len(networks),
"There is more than one"
diff --git a/tempest/scenario/test_security_groups_basic_ops.py b/tempest/scenario/test_security_groups_basic_ops.py
index 297076c..a35c0b2 100644
--- a/tempest/scenario/test_security_groups_basic_ops.py
+++ b/tempest/scenario/test_security_groups_basic_ops.py
@@ -249,6 +249,7 @@
server = self.create_server(
name=name,
network_client=tenant.manager.network_client,
+ networks_client=tenant.manager.networks_client,
create_kwargs=create_kwargs)
self.assertEqual(
sorted([s['name'] for s in security_groups]),
@@ -289,7 +290,8 @@
def _create_tenant_network(self, tenant):
network, subnet, router = self.create_networks(
- client=tenant.manager.network_client)
+ client=tenant.manager.network_client,
+ networks_client=tenant.manager.networks_client)
tenant.set_network(network, subnet, router)
def _set_compute_context(self, tenant):
diff --git a/tempest/services/network/json/network_client.py b/tempest/services/network/json/network_client.py
index a345d56..10bd23e 100644
--- a/tempest/services/network/json/network_client.py
+++ b/tempest/services/network/json/network_client.py
@@ -34,28 +34,6 @@
quotas
"""
- def create_network(self, **kwargs):
- uri = '/networks'
- post_data = {'network': kwargs}
- return self.create_resource(uri, post_data)
-
- def update_network(self, network_id, **kwargs):
- uri = '/networks/%s' % network_id
- post_data = {'network': kwargs}
- return self.update_resource(uri, post_data)
-
- def show_network(self, network_id, **fields):
- uri = '/networks/%s' % network_id
- return self.show_resource(uri, **fields)
-
- def delete_network(self, network_id):
- uri = '/networks/%s' % network_id
- return self.delete_resource(uri)
-
- def list_networks(self, **filters):
- uri = '/networks'
- return self.list_resources(uri, **filters)
-
def create_subnet(self, **kwargs):
uri = '/subnets'
post_data = {'subnet': kwargs}
diff --git a/tempest/services/network/json/networks_client.py b/tempest/services/network/json/networks_client.py
new file mode 100644
index 0000000..2907d44
--- /dev/null
+++ b/tempest/services/network/json/networks_client.py
@@ -0,0 +1,38 @@
+# 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.
+
+from tempest.services.network.json import base
+
+
+class NetworksClient(base.BaseNetworkClient):
+
+ def create_network(self, **kwargs):
+ uri = '/networks'
+ post_data = {'network': kwargs}
+ return self.create_resource(uri, post_data)
+
+ def update_network(self, network_id, **kwargs):
+ uri = '/networks/%s' % network_id
+ post_data = {'network': kwargs}
+ return self.update_resource(uri, post_data)
+
+ def show_network(self, network_id, **fields):
+ uri = '/networks/%s' % network_id
+ return self.show_resource(uri, **fields)
+
+ def delete_network(self, network_id):
+ uri = '/networks/%s' % network_id
+ return self.delete_resource(uri)
+
+ def list_networks(self, **filters):
+ uri = '/networks'
+ return self.list_resources(uri, **filters)
diff --git a/tempest/services/network/resources.py b/tempest/services/network/resources.py
index 4d45515..23d936e 100644
--- a/tempest/services/network/resources.py
+++ b/tempest/services/network/resources.py
@@ -41,6 +41,7 @@
def __init__(self, *args, **kwargs):
self.client = kwargs.pop('client', None)
+ self.networks_client = kwargs.pop('networks_client', None)
super(DeletableResource, self).__init__(*args, **kwargs)
def __str__(self):
@@ -72,7 +73,7 @@
class DeletableNetwork(DeletableResource):
def delete(self):
- self.client.delete_network(self.id)
+ self.networks_client.delete_network(self.id)
class DeletableSubnet(DeletableResource):
diff --git a/tempest/tests/test_tenant_isolation.py b/tempest/tests/test_tenant_isolation.py
index cc4de2d..5aba2c7 100644
--- a/tempest/tests/test_tenant_isolation.py
+++ b/tempest/tests/test_tenant_isolation.py
@@ -120,7 +120,7 @@
def _mock_network_create(self, iso_creds, id, name):
net_fix = self.useFixture(mockpatch.PatchObject(
- iso_creds.network_admin_client,
+ iso_creds.networks_admin_client,
'create_network',
return_value={'network': {'id': id, 'name': name}}))
return net_fix
@@ -268,7 +268,7 @@
self._mock_list_role()
self._mock_user_create('1234', 'fake_prim_user')
self._mock_tenant_create('1234', 'fake_prim_tenant')
- net = mock.patch.object(iso_creds.network_admin_client,
+ net = mock.patch.object(iso_creds.networks_admin_client,
'delete_network')
net_mock = net.start()
subnet = mock.patch.object(iso_creds.network_admin_client,
@@ -361,7 +361,7 @@
'IdentityClient.delete_user')
self.patch('tempest.services.identity.v2.json.identity_client.'
'IdentityClient.delete_tenant')
- net = mock.patch.object(iso_creds.network_admin_client,
+ net = mock.patch.object(iso_creds.networks_admin_client,
'delete_network')
net_mock = net.start()
subnet = mock.patch.object(iso_creds.network_admin_client,
@@ -494,7 +494,7 @@
self._mock_list_role()
self._mock_user_create('1234', 'fake_prim_user')
self._mock_tenant_create('1234', 'fake_prim_tenant')
- net = mock.patch.object(iso_creds.network_admin_client,
+ net = mock.patch.object(iso_creds.networks_admin_client,
'delete_network')
net_mock = net.start()
subnet = mock.patch.object(iso_creds.network_admin_client,