From 8ad0a424b3e3963b9fdda0e1b64d8a065ef978d2 Mon Sep 17 00:00:00 2001 From: Jim Rollenhagen Date: Tue, 29 Nov 2016 16:57:30 -0500 Subject: [PATCH] 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 --- devstack/lib/ironic | 3 ++- ironic_tempest_plugin/config.py | 6 ++++++ ironic_tempest_plugin/plugin.py | 2 ++ ironic_tempest_plugin/tests/api/admin/base.py | 2 ++ ironic_tempest_plugin/tests/scenario/baremetal_manager.py | 6 ++++++ .../tests/scenario/test_baremetal_basic_ops.py | 2 +- .../tests/scenario/test_baremetal_multitenancy.py | 2 +- 7 files changed, 20 insertions(+), 3 deletions(-) diff --git a/devstack/lib/ironic b/devstack/lib/ironic index 078fa3616d..17c2bccac4 100644 --- a/devstack/lib/ironic +++ b/devstack/lib/ironic @@ -1607,6 +1607,8 @@ function cleanup_baremetal_basic_ops { } function ironic_configure_tempest { + iniset $TEMPEST_CONFIG service_available ironic True + local bm_flavor_id bm_flavor_id=$(openstack flavor show baremetal -f value -c id) die_if_not_set $LINENO bm_flavor_id "Failed to get id of baremetal flavor" @@ -1627,7 +1629,6 @@ function ironic_configure_tempest { # tree, but not from our tree. This is a bit inconsistent, we should # fix it. iniset $TEMPEST_CONFIG network shared_physical_network True - iniset $TEMPEST_CONFIG network-feature-enabled port_admin_state_change False } function get_ironic_node_prefix { diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py index 6ef2f2f9de..60ee1137a1 100644 --- a/ironic_tempest_plugin/config.py +++ b/ironic_tempest_plugin/config.py @@ -18,6 +18,12 @@ from oslo_config import cfg 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 index c18f68a5c9..dbe0f0b136 100644 --- a/ironic_tempest_plugin/plugin.py +++ b/ironic_tempest_plugin/plugin.py @@ -31,6 +31,8 @@ class IronicTempestPlugin(plugins.TempestPlugin): 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) diff --git a/ironic_tempest_plugin/tests/api/admin/base.py b/ironic_tempest_plugin/tests/api/admin/base.py index 86e4144e64..7aeb63d42f 100644 --- a/ironic_tempest_plugin/tests/api/admin/base.py +++ b/ironic_tempest_plugin/tests/api/admin/base.py @@ -61,6 +61,8 @@ class BaseBaremetalTest(api_version_utils.BaseMicroversionTest, @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 0ada88e96a..286750ded1 100644 --- a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py +++ b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py @@ -55,6 +55,12 @@ class BaremetalScenarioTest(manager.ScenarioTest): 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 eb51922342..6d07399d96 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 @@ class BaremetalBasicOps(baremetal_manager.BaremetalScenarioTest): 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 33743527b3..45ad79f3e0 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 @@ class BaremetalMultitenancy(baremetal_manager.BaremetalScenarioTest, 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'