diff --git a/devstack/lib/ironic b/devstack/lib/ironic index 3ceff51191..4d440e531d 100644 --- a/devstack/lib/ironic +++ b/devstack/lib/ironic @@ -1693,6 +1693,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" @@ -1713,7 +1715,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'