diff --git a/tempest/api/network/base.py b/tempest/api/network/base.py index b798cb248f..b4ea29bd31 100644 --- a/tempest/api/network/base.py +++ b/tempest/api/network/base.py @@ -105,7 +105,7 @@ class BaseNetworkTest(tempest.test.BaseTestCase): # Clean up metering labels for metering_label in cls.metering_labels: cls._try_delete_resource( - cls.admin_client.delete_metering_label, + cls.admin_metering_labels_client.delete_metering_label, metering_label['id']) # Clean up ports for port in cls.ports: @@ -272,11 +272,12 @@ class BaseAdminNetworkTest(BaseNetworkTest): cls.admin_subnets_client = cls.os_adm.subnets_client cls.admin_ports_client = cls.os_adm.ports_client cls.admin_floating_ips_client = cls.os_adm.floating_ips_client + cls.admin_metering_labels_client = cls.os_adm.metering_labels_client @classmethod def create_metering_label(cls, name, description): """Wrapper utility that returns a test metering label.""" - body = cls.admin_client.create_metering_label( + body = cls.admin_metering_labels_client.create_metering_label( description=description, name=data_utils.rand_name("metering-label")) metering_label = body['metering_label'] diff --git a/tempest/api/network/test_metering_extensions.py b/tempest/api/network/test_metering_extensions.py index a213f92d07..c4021b43c1 100644 --- a/tempest/api/network/test_metering_extensions.py +++ b/tempest/api/network/test_metering_extensions.py @@ -51,9 +51,11 @@ class MeteringTestJSON(base.BaseAdminNetworkTest): def _delete_metering_label(self, metering_label_id): # Deletes a label and verifies if it is deleted or not - self.admin_client.delete_metering_label(metering_label_id) + self.admin_metering_labels_client.delete_metering_label( + metering_label_id) # Asserting that the label is not found in list after deletion - labels = self.admin_client.list_metering_labels(id=metering_label_id) + labels = self.admin_metering_labels_client.list_metering_labels( + id=metering_label_id) self.assertEqual(len(labels['metering_labels']), 0) def _delete_metering_label_rule(self, metering_label_rule_id): @@ -68,7 +70,7 @@ class MeteringTestJSON(base.BaseAdminNetworkTest): @test.idempotent_id('e2fb2f8c-45bf-429a-9f17-171c70444612') def test_list_metering_labels(self): # Verify label filtering - body = self.admin_client.list_metering_labels(id=33) + body = self.admin_metering_labels_client.list_metering_labels(id=33) metering_labels = body['metering_labels'] self.assertEqual(0, len(metering_labels)) @@ -77,21 +79,22 @@ class MeteringTestJSON(base.BaseAdminNetworkTest): # Creates a label name = data_utils.rand_name('metering-label-') description = "label created by tempest" - body = self.admin_client.create_metering_label(name=name, - description=description) + body = self.admin_metering_labels_client.create_metering_label( + name=name, description=description) metering_label = body['metering_label'] self.addCleanup(self._delete_metering_label, metering_label['id']) # Assert whether created labels are found in labels list or fail # if created labels are not found in labels list - labels = (self.admin_client.list_metering_labels( + labels = (self.admin_metering_labels_client.list_metering_labels( id=metering_label['id'])) self.assertEqual(len(labels['metering_labels']), 1) @test.idempotent_id('30abb445-0eea-472e-bd02-8649f54a5968') def test_show_metering_label(self): # Verifies the details of a label - body = self.admin_client.show_metering_label(self.metering_label['id']) + body = self.admin_metering_labels_client.show_metering_label( + self.metering_label['id']) metering_label = body['metering_label'] self.assertEqual(self.metering_label['id'], metering_label['id']) self.assertEqual(self.metering_label['tenant_id'], diff --git a/tempest/clients.py b/tempest/clients.py index 2566d79a3e..8f63ab151b 100644 --- a/tempest/clients.py +++ b/tempest/clients.py @@ -107,6 +107,8 @@ from tempest.services.image.v2.json.image_client import ImageClientV2 from tempest.services.messaging.json.messaging_client import \ MessagingClient from tempest.services.network.json.floating_ips_client import FloatingIPsClient +from tempest.services.network.json.metering_labels_client import \ + MeteringLabelsClient from tempest.services.network.json.network_client import NetworkClient from tempest.services.network.json.networks_client import NetworksClient from tempest.services.network.json.ports_client import PortsClient @@ -230,6 +232,14 @@ class Manager(manager.Manager): build_interval=CONF.network.build_interval, build_timeout=CONF.network.build_timeout, **self.default_params) + self.metering_labels_client = MeteringLabelsClient( + 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/cleanup_service.py b/tempest/cmd/cleanup_service.py index ba6bf6c010..f2dd7af87b 100644 --- a/tempest/cmd/cleanup_service.py +++ b/tempest/cmd/cleanup_service.py @@ -387,6 +387,7 @@ class NetworkService(BaseService): self.subnets_client = manager.subnets_client self.ports_client = manager.ports_client self.floating_ips_client = manager.floating_ips_client + self.metering_labels_client = manager.metering_labels_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)): @@ -600,7 +601,7 @@ class NetworkMeteringLabelRuleService(NetworkService): class NetworkMeteringLabelService(NetworkService): def list(self): - client = self.client + client = self.metering_labels_client labels = client.list_metering_labels() labels = labels['metering_labels'] labels = self._filter_by_tenant_id(labels) @@ -608,7 +609,7 @@ class NetworkMeteringLabelService(NetworkService): return labels def delete(self): - client = self.client + client = self.metering_labels_client labels = self.list() for label in labels: try: diff --git a/tempest/services/network/json/metering_labels_client.py b/tempest/services/network/json/metering_labels_client.py new file mode 100644 index 0000000000..2e5cdae5b6 --- /dev/null +++ b/tempest/services/network/json/metering_labels_client.py @@ -0,0 +1,33 @@ +# 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 MeteringLabelsClient(base.BaseNetworkClient): + + def create_metering_label(self, **kwargs): + uri = '/metering/metering-labels' + post_data = {'metering_label': kwargs} + return self.create_resource(uri, post_data) + + def show_metering_label(self, metering_label_id, **fields): + uri = '/metering/metering-labels/%s' % metering_label_id + return self.show_resource(uri, **fields) + + def delete_metering_label(self, metering_label_id): + uri = '/metering/metering-labels/%s' % metering_label_id + return self.delete_resource(uri) + + def list_metering_labels(self, **filters): + uri = '/metering/metering-labels' + return self.list_resources(uri, **filters) diff --git a/tempest/services/network/json/network_client.py b/tempest/services/network/json/network_client.py index 5a4229c8d1..b5251432c3 100644 --- a/tempest/services/network/json/network_client.py +++ b/tempest/services/network/json/network_client.py @@ -35,23 +35,6 @@ class NetworkClient(base.BaseNetworkClient): quotas """ - def create_metering_label(self, **kwargs): - uri = '/metering/metering-labels' - post_data = {'metering_label': kwargs} - return self.create_resource(uri, post_data) - - def show_metering_label(self, metering_label_id, **fields): - uri = '/metering/metering-labels/%s' % metering_label_id - return self.show_resource(uri, **fields) - - def delete_metering_label(self, metering_label_id): - uri = '/metering/metering-labels/%s' % metering_label_id - return self.delete_resource(uri) - - def list_metering_labels(self, **filters): - uri = '/metering/metering-labels' - return self.list_resources(uri, **filters) - def create_metering_label_rule(self, **kwargs): uri = '/metering/metering-label-rules' post_data = {'metering_label_rule': kwargs}