From 691de301ce1b3f50c696d62e74401c3c5d165799 Mon Sep 17 00:00:00 2001 From: Yuiko Takada Date: Tue, 17 Nov 2015 14:12:53 +0900 Subject: [PATCH] Use Tempest plugin interface Make use of the Tempest plugin interface. This patch set creates some directories and files for Tempest plugin interface which are generated by tempest-plugin-cookiecutter(See [1] and [2]), which uses ironic_tempest_plugin as new top folder for all Tempest tests, and also makes possible to import config values from Tempest and use them. Copying Ironic tests in Tempest to Ironic tree and removing existing Ironic tests in Tempest will be done after merging this patch set. [1]: https://github.com/openstack/tempest-plugin-cookiecutter [2]: http://docs.openstack.org/developer/tempest/plugin.html Change-Id: I6a26b1d1fcf088d5218b92e13911c48708af4ec8 --- ironic_tempest_plugin/README.rst | 6 ++ ironic_tempest_plugin/__init__.py | 0 ironic_tempest_plugin/config.py | 62 +++++++++++++++++++ ironic_tempest_plugin/plugin.py | 39 ++++++++++++ ironic_tempest_plugin/services/__init__.py | 0 ironic_tempest_plugin/tests/__init__.py | 0 ironic_tempest_plugin/tests/api/__init__.py | 0 .../tests/scenario/__init__.py | 0 setup.cfg | 3 + 9 files changed, 110 insertions(+) create mode 100644 ironic_tempest_plugin/README.rst create mode 100644 ironic_tempest_plugin/__init__.py create mode 100644 ironic_tempest_plugin/config.py create mode 100644 ironic_tempest_plugin/plugin.py create mode 100644 ironic_tempest_plugin/services/__init__.py create mode 100644 ironic_tempest_plugin/tests/__init__.py create mode 100644 ironic_tempest_plugin/tests/api/__init__.py create mode 100644 ironic_tempest_plugin/tests/scenario/__init__.py diff --git a/ironic_tempest_plugin/README.rst b/ironic_tempest_plugin/README.rst new file mode 100644 index 000000000..b6a6cf1b8 --- /dev/null +++ b/ironic_tempest_plugin/README.rst @@ -0,0 +1,6 @@ +=============================================== +Tempest Integration of Ironic +=============================================== + +This directory contains Tempest tests to cover the Ironic project. + diff --git a/ironic_tempest_plugin/__init__.py b/ironic_tempest_plugin/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py new file mode 100644 index 000000000..436db88ca --- /dev/null +++ b/ironic_tempest_plugin/config.py @@ -0,0 +1,62 @@ +# Copyright 2015 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. + +from oslo_config import cfg + +from tempest import config # noqa + + +baremetal_group = cfg.OptGroup(name='baremetal', + title='Baremetal provisioning service options', + help='When enabling baremetal tests, Nova ' + 'must be configured to use the Ironic ' + 'driver. The following parameters for the ' + '[compute] section must be disabled: ' + 'console_output, interface_attach, ' + 'live_migration, pause, rescue, resize, ' + 'shelve, snapshot, and suspend') + +BaremetalGroup = [ + cfg.StrOpt('catalog_type', + default='baremetal', + help="Catalog type of the baremetal provisioning service"), + cfg.BoolOpt('driver_enabled', + default=True, + help="Whether the Ironic nova-compute driver is enabled"), + cfg.StrOpt('driver', + default='fake', + help="Driver name which Ironic uses"), + cfg.StrOpt('endpoint_type', + default='publicURL', + choices=['public', 'admin', 'internal', + 'publicURL', 'adminURL', 'internalURL'], + help="The endpoint type to use for the baremetal provisioning " + "service"), + cfg.IntOpt('active_timeout', + default=300, + help="Timeout for Ironic node to completely provision"), + cfg.IntOpt('association_timeout', + default=30, + help="Timeout for association of Nova instance and Ironic " + "node"), + cfg.IntOpt('power_timeout', + default=60, + help="Timeout for Ironic power transitions."), + cfg.IntOpt('unprovision_timeout', + default=300, + help="Timeout for unprovisioning an Ironic node. " + "Takes longer since Kilo as Ironic performs an extra " + "step in Node cleaning.") +] diff --git a/ironic_tempest_plugin/plugin.py b/ironic_tempest_plugin/plugin.py new file mode 100644 index 000000000..c18f68a5c --- /dev/null +++ b/ironic_tempest_plugin/plugin.py @@ -0,0 +1,39 @@ +# Copyright 2015 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 ironic_tempest_plugin import config as project_config + + +class IronicTempestPlugin(plugins.TempestPlugin): + def load_tests(self): + base_path = os.path.split(os.path.dirname( + os.path.abspath(__file__)))[0] + test_dir = "ironic_tempest_plugin/tests" + full_test_dir = os.path.join(base_path, test_dir) + return full_test_dir, base_path + + def register_opts(self, conf): + config.register_opt_group(conf, project_config.baremetal_group, + project_config.BaremetalGroup) + + def get_opt_lists(self): + return [(project_config.baremetal_group.name, + project_config.BaremetalGroup)] diff --git a/ironic_tempest_plugin/services/__init__.py b/ironic_tempest_plugin/services/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ironic_tempest_plugin/tests/__init__.py b/ironic_tempest_plugin/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ironic_tempest_plugin/tests/api/__init__.py b/ironic_tempest_plugin/tests/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ironic_tempest_plugin/tests/scenario/__init__.py b/ironic_tempest_plugin/tests/scenario/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/setup.cfg b/setup.cfg index a5ecc11fc..1c622ca6d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -86,6 +86,9 @@ ironic.drivers = ironic.database.migration_backend = sqlalchemy = ironic.db.sqlalchemy.migration +tempest.test_plugins = + ironic_tests = ironic_tempest_plugin.plugin:IronicTempestPlugin + [pbr] autodoc_index_modules = True autodoc_exclude_modules =