This plugin no longer supports python 2 thus usage of six is no longer needed. Change-Id: Ifec8c68edc0c67f0dae937a9cf48598b5725d3f6
85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
# -*- 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 import config
|
|
from tempest.lib import exceptions
|
|
import tempest.test
|
|
|
|
from cloudkitty_tempest_plugin.services import client
|
|
|
|
CONF = config.CONF
|
|
|
|
|
|
def skipIf(flag, reason):
|
|
def decorator(f):
|
|
def wrapper(self, *args, **kwargs):
|
|
if getattr(self, flag):
|
|
self.skipTest(reason)
|
|
else:
|
|
f(self, *args, **kwargs)
|
|
return wrapper
|
|
return decorator
|
|
|
|
|
|
class BaseRatingTest(tempest.test.BaseTestCase):
|
|
"""Base test class for all Rating API tests."""
|
|
client_manager = client.Manager
|
|
|
|
@classmethod
|
|
def setup_clients(cls):
|
|
super(BaseRatingTest, cls).setup_clients()
|
|
os_var = 'os_{}'.format(cls.credentials[0])
|
|
cls.rating_client = getattr(cls, os_var).get_rating_client(
|
|
getattr(cls, 'api_version'))
|
|
|
|
@classmethod
|
|
def setup_credentials(cls):
|
|
super(BaseRatingTest, cls).setup_credentials()
|
|
os_var = 'os_{}'.format(cls.credentials[0])
|
|
project_id = getattr(cls, os_var).credentials.project_id
|
|
cls.skip_rating_tests = False
|
|
try:
|
|
cls.custom_identity_client = client.CustomIdentityClient()
|
|
cls.custom_identity_client.enable_rating(project_id)
|
|
except Exception:
|
|
cls.skip_rating_tests = True
|
|
|
|
@classmethod
|
|
def resource_setup(cls):
|
|
super(BaseRatingTest, cls).resource_setup()
|
|
cls._created_resources = {
|
|
'collector_mapping': list(),
|
|
'hashmap_service': list(),
|
|
'hashmap_field': list(),
|
|
'hashmap_mapping': list(),
|
|
'hashmap_group': list(),
|
|
'hashmap_threshold': list(),
|
|
'pyscript': list(),
|
|
}
|
|
|
|
@classmethod
|
|
def resource_cleanup(cls):
|
|
super(BaseRatingTest, cls).resource_cleanup()
|
|
for method, item_ids in cls._created_resources.items():
|
|
delete_method = 'delete_' + method
|
|
delete_method = getattr(cls.rating_client, delete_method)
|
|
for item_id in item_ids:
|
|
try:
|
|
delete_method(item_id)
|
|
except (exceptions.NotFound,
|
|
exceptions.UnexpectedResponseCode):
|
|
pass
|