Move CONF.service_available.ironic to our plugin
This is unwanted in tempest's plugin, bring it here instead.
Also add skip checks for our tests to skip the tests if ironic is not
enabled. This allows the plugin to be installed in a tempest
environment, without breaking if ironic isn't present.
Last, drop 'baremetal' from the test.services decorators used, as it is
no longer in tempest's service list, and we use the skip check mentioned
above instead.
Change-Id: I0b7e32dfad2ed63f9dd4d7cad130da39bc869a8a
Depends-On: Idede322190d57491d4f7e18090aa8c29b5b87353
diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py
index 6ef2f2f..60ee113 100644
--- a/ironic_tempest_plugin/config.py
+++ b/ironic_tempest_plugin/config.py
@@ -18,6 +18,12 @@
from tempest import config # noqa
+service_option = cfg.BoolOpt('ironic',
+ default=False,
+ help='Whether or not Ironic is expected to be '
+ 'available')
+
+
baremetal_group = cfg.OptGroup(name='baremetal',
title='Baremetal provisioning service options',
help='When enabling baremetal tests, Nova '
diff --git a/ironic_tempest_plugin/plugin.py b/ironic_tempest_plugin/plugin.py
new file mode 100644
index 0000000..dbe0f0b
--- /dev/null
+++ b/ironic_tempest_plugin/plugin.py
@@ -0,0 +1,41 @@
+# 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):
+ conf.register_opt(project_config.service_option,
+ group='service_available')
+ 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/tests/api/admin/base.py b/ironic_tempest_plugin/tests/api/admin/base.py
index 86e4144..7aeb63d 100644
--- a/ironic_tempest_plugin/tests/api/admin/base.py
+++ b/ironic_tempest_plugin/tests/api/admin/base.py
@@ -61,6 +61,8 @@
@classmethod
def skip_checks(cls):
super(BaseBaremetalTest, cls).skip_checks()
+ if not CONF.service_available.ironic:
+ raise cls.skipException('Ironic is not enabled.')
if CONF.baremetal.driver not in SUPPORTED_DRIVERS:
skip_msg = ('%s skipped as Ironic driver %s is not supported for '
'testing.' %
diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
index 0ada88e..286750d 100644
--- a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
@@ -56,6 +56,12 @@
credentials = ['primary', 'admin']
@classmethod
+ def skip_checks(cls):
+ super(BaremetalScenarioTest, cls).skip_checks()
+ if not CONF.service_available.ironic:
+ raise cls.skipException('Ironic is not enabled.')
+
+ @classmethod
def setup_clients(cls):
super(BaremetalScenarioTest, cls).setup_clients()
diff --git a/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py b/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py
index eb51922..6d07399 100644
--- a/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py
+++ b/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py
@@ -105,7 +105,7 @@
self.assertEqual(n_port['mac_address'], port['address'])
@test.idempotent_id('549173a5-38ec-42bb-b0e2-c8b9f4a08943')
- @test.services('baremetal', 'compute', 'image', 'network')
+ @test.services('compute', 'image', 'network')
def test_baremetal_server_ops(self):
self.add_keypair()
self.instance, self.node = self.boot_instance()
diff --git a/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy.py b/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy.py
index 3374352..45ad79f 100644
--- a/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy.py
+++ b/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy.py
@@ -80,7 +80,7 @@
self.assertNotIn(success_substring, output)
@test.idempotent_id('26e2f145-2a8e-4dc7-8457-7f2eb2c6749d')
- @test.services('baremetal', 'compute', 'image', 'network')
+ @test.services('compute', 'image', 'network')
def test_baremetal_multitenancy(self):
tenant_cidr = '10.0.100.0/24'