diff --git a/vmware_nsx_tempest/lib/feature_manager.py b/vmware_nsx_tempest/lib/feature_manager.py index 6ca3c1a..70cf9c1 100644 --- a/vmware_nsx_tempest/lib/feature_manager.py +++ b/vmware_nsx_tempest/lib/feature_manager.py @@ -69,12 +69,12 @@ class FeatureManager(traffic_manager.TrafficManager): net_client.endpoint_type, **_params) cls.load_balancers_client = \ - load_balancers_client.get_client(cls.manager) - cls.listeners_client = listeners_client.get_client(cls.manager) - cls.pools_client = pools_client.get_client(cls.manager) - cls.members_client = members_client.get_client(cls.manager) + load_balancers_client.get_client(cls.os_primary) + cls.listeners_client = listeners_client.get_client(cls.os_primary) + cls.pools_client = pools_client.get_client(cls.os_primary) + cls.members_client = members_client.get_client(cls.os_primary) cls.health_monitors_client = \ - health_monitors_client.get_client(cls.manager) + health_monitors_client.get_client(cls.os_primary) # # L2Gateway base class. To get basics of L2GW. diff --git a/vmware_nsx_tempest/tests/dvs/scenario/test_network_basic_ops.py b/vmware_nsx_tempest/tests/dvs/scenario/test_network_basic_ops.py index b8e48cd..3f48204 100644 --- a/vmware_nsx_tempest/tests/dvs/scenario/test_network_basic_ops.py +++ b/vmware_nsx_tempest/tests/dvs/scenario/test_network_basic_ops.py @@ -15,11 +15,11 @@ import netaddr from oslo_log import log as logging +from tempest.common import utils from tempest import config from tempest import exceptions from tempest.lib.common.utils import data_utils from tempest.lib import decorators -from tempest import test from vmware_nsx_tempest.tests.scenario import manager @@ -56,7 +56,7 @@ class TestDvsNetworkBasicOps(manager.NetworkScenarioTest): def _create_network(self, network_name=None): """Wrapper utility that returns a test admin provider network.""" network_name = network_name or data_utils.rand_name('test-adm-net-') - if test.is_extension_enabled('provider', 'network'): + if utils.is_extension_enabled('provider', 'network'): body = {'name': network_name} body.update({'provider:network_type': 'flat', 'provider:physical_network': 'dvs', @@ -168,7 +168,7 @@ class TestDvsNetworkBasicOps(manager.NetworkScenarioTest): should_connect) @decorators.attr(type='smoke') - @test.services('compute', 'network') + @utils.services('compute', 'network') @decorators.idempotent_id('b977dce6-6527-4676-9b66-862b22058f0f') def test_network_basic_ops(self): """ diff --git a/vmware_nsx_tempest/tests/nsxv/scenario/test_deployments.py b/vmware_nsx_tempest/tests/nsxv/scenario/test_deployments.py index ab384b2..fb44f88 100644 --- a/vmware_nsx_tempest/tests/nsxv/scenario/test_deployments.py +++ b/vmware_nsx_tempest/tests/nsxv/scenario/test_deployments.py @@ -15,8 +15,8 @@ import time +from tempest.common import utils from tempest import config -from tempest import test from tempest.lib.common.utils import data_utils from tempest.lib import decorators @@ -86,7 +86,7 @@ class TestSimpleFlatNetwork(dmgr.TopoDeployScenarioManager): self.waitfor_host_connected(host_ip) @decorators.idempotent_id('bc081b8d-49eb-4710-9442-c6b225ef16f0') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_simple_flat_network(self): # provider actions self.net_network = self.create_network() @@ -129,7 +129,7 @@ class TestTenantConnectivity(dmgr.TopoDeployScenarioManager): super(TestTenantConnectivity, self).tearDown() @decorators.idempotent_id('3c6cd4fe-de25-47ef-b638-a6bbb312da09') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_tenant_connectivity(self): LOG.debug(Z_DEPLOY_TOPO, "tenant connectivity") client_mgr = self.manager @@ -285,7 +285,7 @@ class TestMultiTenantsNetwork(dmgr.TopoDeployScenarioManager): return T @decorators.idempotent_id('19d19cd0-9686-49c9-acea-a9db28f7458c') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_multi_tenants_network(self): LOG.debug(Z_DEPLOY_TOPO, "multi tenant network") self.green = self.create_project_network_env( @@ -410,7 +410,7 @@ class TestProviderRouterTenantNetwork(dmgr.TopoDeployScenarioManager): return tenant @decorators.idempotent_id('a31712de-33ad-4dc2-9755-1a0631a4f66a') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_provider_router_project_network(self): # provider router owned by admin_manager self.p_router = self._create_router( @@ -456,7 +456,7 @@ class TestTenantConnectivityWithExclusiveRouter( super(TestTenantConnectivityWithExclusiveRouter, cls).skip_checks() for ext in ['nsxv-router-type']: - if not test.is_extension_enabled(ext, 'network'): + if not utils.is_extension_enabled(ext, 'network'): msg = "%s extension not enabled." % ext raise cls.skipException(msg) @@ -476,7 +476,7 @@ class TestMultiTenantsNetworkWithExclusiveRouter( super(TestMultiTenantsNetworkWithExclusiveRouter, cls).skip_checks() for ext in ['nsxv-router-type']: - if not test.is_extension_enabled(ext, 'network'): + if not utils.is_extension_enabled(ext, 'network'): msg = "%s extension not enabled." % ext raise cls.skipException(msg) @@ -496,7 +496,7 @@ class TestProviderExclusiveRouterTenantNetwork( super(TestProviderExclusiveRouterTenantNetwork, cls).skip_checks() for ext in ['nsxv-router-type']: - if not test.is_extension_enabled(ext, 'network'): + if not utils.is_extension_enabled(ext, 'network'): msg = "%s extension not enabled." % ext raise cls.skipException(msg) @@ -518,7 +518,7 @@ class TestTenantConnectivityWithDistributedRouter( super(TestTenantConnectivityWithDistributedRouter, cls).skip_checks() for ext in ['dvr', 'nsxv-router-type']: - if not test.is_extension_enabled(ext, 'network'): + if not utils.is_extension_enabled(ext, 'network'): msg = "%s extension not enabled." % ext raise cls.skipException(msg) @@ -538,7 +538,7 @@ class TestMultiTenantsNetworkWithDistributedRouter( super(TestMultiTenantsNetworkWithDistributedRouter, cls).skip_checks() for ext in ['dvr', 'nsxv-router-type']: - if not test.is_extension_enabled(ext, 'network'): + if not utils.is_extension_enabled(ext, 'network'): msg = "%s extension not enabled." % ext raise cls.skipException(msg) @@ -558,7 +558,7 @@ class TestProviderDistributedRouterTenantNetwork( super(TestProviderDistributedRouterTenantNetwork, cls).skip_checks() for ext in ['dvr', 'nsxv-router-type']: - if not test.is_extension_enabled(ext, 'network'): + if not utils.is_extension_enabled(ext, 'network'): msg = "%s extension not enabled." % ext raise cls.skipException(msg) diff --git a/vmware_nsx_tempest/tests/nsxv/scenario/test_dvr_basic_ops.py b/vmware_nsx_tempest/tests/nsxv/scenario/test_dvr_basic_ops.py index e04cb91..fffd19f 100644 --- a/vmware_nsx_tempest/tests/nsxv/scenario/test_dvr_basic_ops.py +++ b/vmware_nsx_tempest/tests/nsxv/scenario/test_dvr_basic_ops.py @@ -18,10 +18,10 @@ import re import time from oslo_log import log as logging +from tempest.common import utils from tempest import config from tempest.lib.common.utils import data_utils from tempest.lib import decorators -from tempest import test from vmware_nsx_tempest.tests.nsxv.scenario import ( network_addon_methods as HELO) @@ -87,7 +87,7 @@ class TestDvrBasicOps(manager.NetworkScenarioTest): 'public_network_id must be defined.') raise cls.skipException(msg) for ext in ['router', 'security-group', 'dvr']: - if not test.is_extension_enabled(ext, 'network'): + if not utils.is_extension_enabled(ext, 'network'): msg = "%s extension not enabled." % ext raise cls.skipException(msg) @@ -331,7 +331,7 @@ class TestDvrBasicOps(manager.NetworkScenarioTest): raise @decorators.idempotent_id('62eb50a8-45f3-4eec-acc4-f01cee10a011') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_dvr_network_basic_ops(self): """ For a freshly-booted VM with an IP address ("port") on a given @@ -388,7 +388,7 @@ class TestDvrBasicOps(manager.NetworkScenarioTest): "floating ip") @decorators.idempotent_id('d99b62ec-28ce-44db-a195-edb74037a354') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_dvr_connectivity_between_vms_on_different_networks(self): """ For a freshly-booted VM with an IP address ("port") on a given @@ -435,7 +435,7 @@ class TestDvrBasicOps(manager.NetworkScenarioTest): should_connect=True) @decorators.idempotent_id('a73fd605-d55e-4151-b25e-41e7a7ff2258') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_dvr_update_router_admin_state(self): """ 1. Check public connectivity before updating diff --git a/vmware_nsx_tempest/tests/nsxv/scenario/test_lbaas_l7_switching_ops.py b/vmware_nsx_tempest/tests/nsxv/scenario/test_lbaas_l7_switching_ops.py index 47150ba..69fec3c 100644 --- a/vmware_nsx_tempest/tests/nsxv/scenario/test_lbaas_l7_switching_ops.py +++ b/vmware_nsx_tempest/tests/nsxv/scenario/test_lbaas_l7_switching_ops.py @@ -11,8 +11,8 @@ # under the License. import time +from tempest.common import utils from tempest.lib import decorators -from tempest import test from vmware_nsx_tempest.common import constants from vmware_nsx_tempest.services.lbaas import l7policies_client @@ -185,7 +185,7 @@ class TestL7SwitchingOps(lbaas_ops.LBaasRoundRobinBaseTest): self.check_l7_switching('api/v2', reject_name_list, 6) @decorators.idempotent_id('a51e23e4-16b5-41c7-878d-59b9e943e3ba') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_lbaas_l7_switching_ops_REDIRECT_TO_POOL(self): self.create_lbaas_networks() self.start_web_servers() @@ -197,7 +197,7 @@ class TestL7SwitchingOps(lbaas_ops.LBaasRoundRobinBaseTest): self.validate_l7_switching(constants.REDIRECT_TO_POOL) @decorators.idempotent_id('f11e19e4-16b5-41c7-878d-59b9e943e3ce') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_lbaas_l7_switching_ops_REJECT(self): self.create_lbaas_networks() self.start_web_servers() diff --git a/vmware_nsx_tempest/tests/nsxv/scenario/test_lbaas_round_robin_ops.py b/vmware_nsx_tempest/tests/nsxv/scenario/test_lbaas_round_robin_ops.py index 60128bc..30fbba0 100644 --- a/vmware_nsx_tempest/tests/nsxv/scenario/test_lbaas_round_robin_ops.py +++ b/vmware_nsx_tempest/tests/nsxv/scenario/test_lbaas_round_robin_ops.py @@ -12,12 +12,12 @@ import tempfile import time +from tempest.common import utils from tempest.common import waiters 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 import test import urllib3 from vmware_nsx_tempest.services.lbaas import health_monitors_client @@ -48,7 +48,7 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager): def skip_checks(cls): super(LBaasRoundRobinBaseTest, cls).skip_checks() cfg = CONF.network - if not test.is_extension_enabled('lbaasv2', 'network'): + if not utils.is_extension_enabled('lbaasv2', 'network'): msg = 'lbaasv2 extension is not enabled.' raise cls.skipException(msg) if not (cfg.project_networks_reachable or cfg.public_network_id): @@ -387,7 +387,7 @@ class TestLBaasRoundRobinOps(LBaasRoundRobinBaseTest): """ @decorators.idempotent_id('077d2a5c-4938-448f-a80f-8e65f5cc49d7') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_lbaas_round_robin_ops(self): self.create_lbaas_networks() self.start_web_servers(self.rr_server_list) diff --git a/vmware_nsx_tempest/tests/nsxv/scenario/test_v1_lbaas_basic_ops.py b/vmware_nsx_tempest/tests/nsxv/scenario/test_v1_lbaas_basic_ops.py index 479b40c..451f61b 100644 --- a/vmware_nsx_tempest/tests/nsxv/scenario/test_v1_lbaas_basic_ops.py +++ b/vmware_nsx_tempest/tests/nsxv/scenario/test_v1_lbaas_basic_ops.py @@ -22,12 +22,12 @@ import time #import urllib.request import six +from tempest.common import utils from tempest import config from tempest import exceptions from tempest.lib.common.utils import data_utils from tempest.lib.common.utils import test_utils from tempest.lib import decorators -from tempest import test from vmware_nsx_tempest.services import load_balancer_v1_client as LBV1C from vmware_nsx_tempest.tests.nsxv.scenario import ( @@ -54,7 +54,7 @@ class TestLBaaSBasicOps(manager.NetworkScenarioTest): def skip_checks(cls): super(TestLBaaSBasicOps, cls).skip_checks() cfg = CONF.network - if not test.is_extension_enabled('lbaas', 'network'): + if not utils.is_extension_enabled('lbaas', 'network'): msg = 'LBaaS Extension is not enabled' raise cls.skipException(msg) if not (cfg.project_networks_reachable or cfg.public_network_id): @@ -422,7 +422,7 @@ class TestLBaaSBasicOps(manager.NetworkScenarioTest): self.assertGreater(counter, 0, 'Member %s never balanced' % member) @decorators.idempotent_id('e81b5af1-d854-4e16-9d2d-16187bdf1334') - @test.services('compute', 'network') + @utils.services('compute', 'network') def test_load_balancer_basic(self): self._create_server('server1') self._start_servers() diff --git a/vmware_nsx_tempest/tests/nsxv3/scenario/test_client_cert_mgmt_ops.py b/vmware_nsx_tempest/tests/nsxv3/scenario/test_client_cert_mgmt_ops.py index 2fb4bda..fb78787 100644 --- a/vmware_nsx_tempest/tests/nsxv3/scenario/test_client_cert_mgmt_ops.py +++ b/vmware_nsx_tempest/tests/nsxv3/scenario/test_client_cert_mgmt_ops.py @@ -16,8 +16,8 @@ from oslo_log import log as logging +from tempest.common import utils from tempest import config -from tempest import test from tempest.lib import decorators @@ -46,7 +46,7 @@ class TestCertificateMgmt(manager.NetworkScenarioTest): msg = ('Either project_networks_reachable must be true, or\ public_network_id must be defined.') raise cls.skipException(msg) - if not test.is_extension_enabled('qos', 'network'): + if not utils.is_extension_enabled('qos', 'network'): msg = "q-qos extension not enabled." raise cls.skipException(msg) diff --git a/vmware_nsx_tempest/tests/nsxv3/scenario/test_mdproxy.py b/vmware_nsx_tempest/tests/nsxv3/scenario/test_mdproxy.py index 1f74662..1d77255 100644 --- a/vmware_nsx_tempest/tests/nsxv3/scenario/test_mdproxy.py +++ b/vmware_nsx_tempest/tests/nsxv3/scenario/test_mdproxy.py @@ -13,9 +13,9 @@ # under the License. from oslo_log import log as logging +from tempest.common import utils from tempest import config from tempest.lib import decorators -from tempest import test from vmware_nsx_tempest.common import constants from vmware_nsx_tempest.lib import feature_manager @@ -185,7 +185,7 @@ class TestMDProxy(feature_manager.FeatureManager): self.verify_md_proxy_logical_ports_on_backend(tenant_id, network_id) @decorators.idempotent_id("e9a93161-d852-414d-aa55-36d465ea45df") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_ping(self): self.deploy_mdproxy_topology() # Verify ssh connection and basic mdproxy data. @@ -199,7 +199,7 @@ class TestMDProxy(feature_manager.FeatureManager): ssh_client=ssh_client) @decorators.idempotent_id("743f34a6-58b8-4288-a07f-7bee21c55051") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_verify_backend(self): self.deploy_mdproxy_topology() # Verify ssh, detailed metadata and verify backend data @@ -216,8 +216,9 @@ class TestMDProxy(feature_manager.FeatureManager): network_id = self.topology_networks["network_mdproxy"]["id"] self.verify_md_proxy_logical_ports_on_backend(tenant_id, network_id) + @decorators.skip_because(bug="2004971") @decorators.idempotent_id("fce2acc8-b850-40fe-bf02-958dd3cd4343") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_server_on_two_ls(self): router_mdproxy = self.create_topology_router("router_mdproxy") network_mdproxy = self.create_topology_network("network_mdproxy") @@ -247,7 +248,7 @@ class TestMDProxy(feature_manager.FeatureManager): fixed_ip=fixed_ip_1) @decorators.idempotent_id("67332752-1295-42cb-a8c3-99210fb6b00b") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_isolated_network(self): # Deploy topology without tier1 router self.deploy_mdproxy_topology_2() @@ -258,7 +259,7 @@ class TestMDProxy(feature_manager.FeatureManager): @decorators.idempotent_id("cc8d2ab8-0bea-4e32-bf80-c9c46a7612b7") @decorators.attr(type=["negative"]) - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_delete_when_ls_bounded(self): self.deploy_mdproxy_topology_2() md_proxy_uuid = self.nsx.get_md_proxies()[0]["id"] @@ -268,7 +269,7 @@ class TestMDProxy(feature_manager.FeatureManager): constants.MD_ERROR_CODE_WHEN_LS_BOUNDED) @decorators.idempotent_id("501fc3ea-696b-4e9e-b383-293ab94e2545") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_multiple_ports_on_network(self): self.deploy_mdproxy_topology() # Boot 2nd vm on same network @@ -303,7 +304,7 @@ class TestMDProxy(feature_manager.FeatureManager): self.verify_md_proxy_logical_ports_on_backend(tenant_id, network_id) @decorators.idempotent_id("eae21afc-50ea-42e5-9c49-2ee38cee9f06") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_multiple_metadata_ports(self): self.deploy_mdproxy_topology_3() # Verify 1st instance on the network1 @@ -331,7 +332,7 @@ class TestMDProxy(feature_manager.FeatureManager): @decorators.idempotent_id("29d44d7c-6ea1-4b30-a6c3-a2695c2486fe") @decorators.attr(type=["negative"]) - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_incorrect_password(self): self.deploy_mdproxy_topology() ssh_client = self.verify_server_ssh( @@ -342,32 +343,37 @@ class TestMDProxy(feature_manager.FeatureManager): self._verify_md(md_url=md_url_pubic_ipv4, expected_value="", ssh_client=ssh_client, sub_result="403 Forbidden") + @decorators.skip_because(bug="2004971") @decorators.idempotent_id("74e5d545-3ccc-46c8-9bda-16ccf8730a5b") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_cirros_kvm_server_image(self): image_id = self.get_glance_image_id(["cirros", "kvm"]) self.metadata_test_on_various_glance_image(image_id) + @decorators.skip_because(bug="2004971") @decorators.idempotent_id("35babffc-f098-4705-82b7-ab96a6f4fdd8") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_debian_esx_server_image(self): image_id = self.get_glance_image_id(["debian", "esx"]) self.metadata_test_on_various_glance_image(image_id) + @decorators.skip_because(bug="2004971") @decorators.idempotent_id("71ba325f-083b-4247-9192-a9f54d3ecfd2") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_debian_kvm_server_image(self): image_id = self.get_glance_image_id(["debian", "kvm"]) self.metadata_test_on_various_glance_image(image_id) + @decorators.skip_because(bug="2004971") @decorators.idempotent_id("dfed6074-c4a1-4bf7-a805-80a191ea7875") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_xenial_esx_server_image(self): image_id = self.get_glance_image_id(["xenial", "esx"]) self.metadata_test_on_various_glance_image(image_id) + @decorators.skip_because(bug="2004971") @decorators.idempotent_id("55829b7f-1535-41d8-833f-b20ac0ee48e0") - @test.services("compute", "network") + @utils.services("compute", "network") def test_mdproxy_with_xenial_kvm_server_image(self): image_id = self.get_glance_image_id(["xenial", "kvm"]) self.metadata_test_on_various_glance_image(image_id) diff --git a/vmware_nsx_tempest/tests/nsxv3/scenario/test_router_nonat_ops.py b/vmware_nsx_tempest/tests/nsxv3/scenario/test_router_nonat_ops.py index 8820637..ca88b5b 100644 --- a/vmware_nsx_tempest/tests/nsxv3/scenario/test_router_nonat_ops.py +++ b/vmware_nsx_tempest/tests/nsxv3/scenario/test_router_nonat_ops.py @@ -17,12 +17,12 @@ import collections from oslo_log import log as logging +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 -from tempest import test from vmware_nsx_tempest.services import nsxv3_client from vmware_nsx_tempest.tests.scenario import manager @@ -59,7 +59,7 @@ class TestRouterNoNATOps(manager.NetworkScenarioTest): 'public_network_id must be defined.') raise cls.skipException(msg) for ext in ['router', 'security-group']: - if not test.is_extension_enabled(ext, 'network'): + if not utils.is_extension_enabled(ext, 'network'): msg = "%s extension not enabled." % ext raise cls.skipException(msg) diff --git a/vmware_nsx_tempest/tests/scenario/manager.py b/vmware_nsx_tempest/tests/scenario/manager.py index 95e04a0..9fcc005 100644 --- a/vmware_nsx_tempest/tests/scenario/manager.py +++ b/vmware_nsx_tempest/tests/scenario/manager.py @@ -47,45 +47,45 @@ class ScenarioTest(tempest.test.BaseTestCase): def setup_clients(cls): super(ScenarioTest, cls).setup_clients() # Clients (in alphabetical order) - cls.flavors_client = cls.manager.flavors_client + cls.flavors_client = cls.os_primary.flavors_client cls.compute_floating_ips_client = ( - cls.manager.compute_floating_ips_client) + cls.os_primary.compute_floating_ips_client) if CONF.service_available.glance: # Check if glance v1 is available to determine which client to use. if CONF.image_feature_enabled.api_v1: - cls.image_client = cls.manager.image_client + cls.image_client = cls.os_primary.image_client elif CONF.image_feature_enabled.api_v2: - cls.image_client = cls.manager.image_client_v2 + cls.image_client = cls.os_primary.image_client_v2 else: raise lib_exc.InvalidConfiguration( 'Either api_v1 or api_v2 must be True in ' '[image-feature-enabled].') # Compute image client - cls.compute_images_client = cls.manager.compute_images_client - cls.keypairs_client = cls.manager.keypairs_client + cls.compute_images_client = cls.os_primary.compute_images_client + cls.keypairs_client = cls.os_primary.keypairs_client # Nova security groups client cls.compute_security_groups_client = ( - cls.manager.compute_security_groups_client) + cls.os_primary.compute_security_groups_client) cls.compute_security_group_rules_client = ( - cls.manager.compute_security_group_rules_client) - cls.servers_client = cls.manager.servers_client - cls.interface_client = cls.manager.interfaces_client + cls.os_primary.compute_security_group_rules_client) + cls.servers_client = cls.os_primary.servers_client + cls.interface_client = cls.os_primary.interfaces_client # Neutron network client - cls.networks_client = cls.manager.networks_client - cls.ports_client = cls.manager.ports_client - cls.routers_client = cls.manager.routers_client - cls.subnets_client = cls.manager.subnets_client - cls.floating_ips_client = cls.manager.floating_ips_client - cls.security_groups_client = cls.manager.security_groups_client + cls.networks_client = cls.os_primary.networks_client + cls.ports_client = cls.os_primary.ports_client + cls.routers_client = cls.os_primary.routers_client + cls.subnets_client = cls.os_primary.subnets_client + cls.floating_ips_client = cls.os_primary.floating_ips_client + cls.security_groups_client = cls.os_primary.security_groups_client cls.security_group_rules_client = ( - cls.manager.security_group_rules_client) + cls.os_primary.security_group_rules_client) if CONF.volume_feature_enabled.api_v2: - cls.volumes_client = cls.manager.volumes_v2_client - cls.snapshots_client = cls.manager.snapshots_v2_client + cls.volumes_client = cls.os_primary.volumes_v2_client + cls.snapshots_client = cls.os_primary.snapshots_v2_client else: - cls.volumes_client = cls.manager.volumes_client - cls.snapshots_client = cls.manager.snapshots_client + cls.volumes_client = cls.os_primary.volumes_client + cls.snapshots_client = cls.os_primary.snapshots_client # ## Test functions library #