designate-tempest-plugin/designate_tempest_plugin/plugin.py
Michael Johnson a3a236331c Make the API tests compatible with scoped tokens
This patch makes the API tests compatible with keystone scoped
tokens and the new RBAC defaults.

For example, admin system scoped tokens do not have a project_id associated
with them requiring some tests to be updated to not assume the admin
credential always has a project_id.

This patch also makes some sections consistently ordered across files.

Change-Id: Ie2c7402967f40bb90e0d97dad1c3d59f82cb6d80
2021-09-23 21:48:41 +00:00

98 lines
3.7 KiB
Python

# Copyright 2016 NEC Corporation. All rights reserved.
#
# 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.
import os
from tempest import config
from tempest.test_discover import plugins
from designate_tempest_plugin import config as project_config
from designate_tempest_plugin.services.dns import v2 as dns_v2_services
class DesignateTempestPlugin(plugins.TempestPlugin):
"""
A DesignateTempestPlugin class provides the basic hooks for an external
plugin to provide tempest the necessary information to run the plugin.
"""
def load_tests(self):
"""
Method to return the information necessary to load the tests in the
plugin.
:return: a tuple with the first value being the test_dir and the second
being the top_level
:return type: tuple
"""
base_path = os.path.split(os.path.dirname(
os.path.abspath(__file__)))[0]
test_dir = "designate_tempest_plugin/tests"
full_test_dir = os.path.join(base_path, test_dir)
return full_test_dir, base_path
def register_opts(self, conf):
"""
Add additional configuration options to tempest.
This method will be run for the plugin during the register_opts()
function in tempest.config
Parameters:
conf (ConfigOpts): The conf object that can be used to register
additional options on.
"""
config.register_opt_group(conf, project_config.service_available_group,
project_config.ServiceAvailableGroup)
config.register_opt_group(conf, project_config.dns_group,
project_config.DnsGroup)
config.register_opt_group(conf, project_config.dns_feature_group,
project_config.DnsFeatureGroup)
config.register_opt_group(conf, project_config.enforce_scope_group,
project_config.EnforceScopeGroup)
def get_opt_lists(self):
"""
Get a list of options for sample config generation
Return option_list: A list of tuples with the group name
and options in that group.
Return type: list
"""
return [
(project_config.service_available_group.name,
project_config.ServiceAvailableGroup),
(project_config.dns_group.name,
project_config.DnsGroup),
(project_config.dns_feature_group.name,
project_config.DnsFeatureGroup),
]
def get_service_clients(self):
dns_config = config.service_client_config('dns')
admin_params = {
'name': 'dns_admin',
'service_version': 'dns.admin',
'module_path': 'designate_tempest_plugin.services.dns.admin',
'client_names': ['QuotasClient']
}
v2_params = {
'name': 'dns_v2',
'service_version': 'dns.v2',
'module_path': 'designate_tempest_plugin.services.dns.v2',
'client_names': dns_v2_services.__all__
}
admin_params.update(dns_config)
v2_params.update(dns_config)
return [admin_params, v2_params]