diff --git a/ironic_tempest_plugin/README.rst b/ironic_tempest_plugin/README.rst new file mode 100644 index 0000000000..b6a6cf1b8e --- /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 0000000000..e69de29bb2 diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py new file mode 100644 index 0000000000..436db88ca2 --- /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 0000000000..c18f68a5c9 --- /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 0000000000..e69de29bb2 diff --git a/ironic_tempest_plugin/tests/__init__.py b/ironic_tempest_plugin/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ironic_tempest_plugin/tests/api/__init__.py b/ironic_tempest_plugin/tests/api/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ironic_tempest_plugin/tests/scenario/__init__.py b/ironic_tempest_plugin/tests/scenario/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/setup.cfg b/setup.cfg index a5ecc11fc9..1c622ca6de 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 =