# -*- coding: utf-8 -*- # Copyright 2017 Objectif Libre # # 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.lib.common.utils import data_utils from tempest.lib import decorators from cloudkitty_tempest_plugin.tests.api import base class CloudkittyAdminAPITest(base.BaseRatingTest): credentials = ['admin'] @decorators.idempotent_id('9c1d4c27-6e7c-42d7-b663-d88f097b7131') def test_get_collector_mappings(self): self.rating_client.get_collector_mappings() def _find_item(self, haystack, needle, key, assert_method): found = False for item in haystack: try: if item[key] == needle: found = True except KeyError: continue assert_method(found) @decorators.idempotent_id('af902c86-6022-4b94-a716-ec7932d5ae78') def test_create_get_delete_collector_mapping(self): mapping = self.rating_client.create_collector_mapping( collector=data_utils.rand_name('gnocchi'), service=data_utils.rand_name('compute'), ) self._created_resources['collector_mapping'].append( mapping['service'], ) mappings = self.rating_client.get_collector_mappings() self._find_item(mappings['mappings'], mapping['service'], 'service', self.assertTrue) self.rating_client.delete_collector_mapping(mapping['service']) mappings = self.rating_client.get_collector_mappings() self._find_item(mappings['mappings'], mapping['service'], 'service', self.assertFalse) @decorators.idempotent_id('3fd83647-3058-4450-9588-a528557585c5') def test_get_collector_state(self): collector = self.rating_client.get_collector_state( collector=data_utils.rand_name('gnocchi'), ) self.assertFalse(collector['enabled']) @decorators.idempotent_id('71131104-fdae-43ec-9bed-c8d1d5ba7eb0') def test_set_collector_state(self): collector_name = data_utils.rand_name('gnocchi') self.rating_client.set_collector_state( collector=collector_name, enabled=True, ) collector = self.rating_client.get_collector_state(collector_name) self.assertTrue(collector['enabled']) self.rating_client.set_collector_state( collector=collector_name, enabled=False, ) collector = self.rating_client.get_collector_state(collector_name) self.assertFalse(collector['enabled']) @decorators.idempotent_id('fba44b6a-6ca4-4155-b5c6-c4eb2465e4fb') def test_get_rating_modules(self): modules = self.rating_client.get_rating_module() self._find_item(modules['modules'], 'hashmap', 'module_id', self.assertTrue) self._find_item(modules['modules'], 'pyscripts', 'module_id', self.assertTrue) self._find_item(modules['modules'], 'noop', 'module_id', self.assertTrue) self.assertEqual( 'hashmap', self.rating_client.get_rating_module('hashmap')['module_id'], ) self.assertEqual( 'pyscripts', self.rating_client.get_rating_module('pyscripts')['module_id'], ) @decorators.idempotent_id('7fc9e020-9547-4a66-a691-94cab7181358') def test_update_rating_module(self): self.rating_client.update_rating_module('hashmap', enabled=True) module = self.rating_client.get_rating_module('hashmap') self.assertTrue(module['enabled']) self.rating_client.update_rating_module('hashmap', enabled=False) module = self.rating_client.get_rating_module('hashmap') self.assertFalse(module['enabled']) @decorators.idempotent_id('daeef22b-d52d-4e89-abb0-ae492e4648d4') def test_reload_rating_modules(self): self.rating_client.reload_rating_modules() @base.skipIf('skip_rating_tests', 'Rating role was not given to CloudKitty') @decorators.idempotent_id('e439019e-9e8a-4bcd-aa83-95bdba6e6115') def test_get_rated_tenants(self): rated_tenants = self.rating_client.get_rated_tenants()['body'] self.assertGreater(len(rated_tenants), 0) class CloudkittyPrimaryAPITest(base.BaseRatingTest): credentials = ['primary'] @decorators.idempotent_id('3285bccf-d043-4ad1-b64f-af4db8317cf9') def test_get_config(self): self.rating_client.get_config() @decorators.idempotent_id('43b03099-0493-4291-9749-85cd8d512811') def test_get_services(self): self.rating_client.get_service() @decorators.idempotent_id('64ecae87-0138-41bd-829f-91302dae7802') def test_get_service(self): self.rating_client.get_service('compute') @decorators.idempotent_id('cccbff8a-24b2-4251-8f7b-ea941d048b9d') def test_report_summary(self): self.rating_client.get_report_summary() @decorators.idempotent_id('2492dfd7-0688-4957-93ac-8c91933c28f5') def test_report_total(self): self.rating_client.get_report_total() @decorators.idempotent_id('e233139b-3c75-4b70-b1f5-0776ef32c916') def test_get_storage_dataframes(self): self.rating_client.get_storage_dataframes()