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
This commit is contained in:
Yuiko Takada 2015-11-17 14:12:53 +09:00 committed by Mike Turek
parent a74f8169d5
commit 691de301ce
9 changed files with 110 additions and 0 deletions

View File

@ -0,0 +1,6 @@
===============================================
Tempest Integration of Ironic
===============================================
This directory contains Tempest tests to cover the Ironic project.

View File

View File

@ -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.")
]

View File

@ -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)]

View File

View File

@ -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 =