From ece53fef0bf7bcd18efe7ceb5124a4c78f29e7ce Mon Sep 17 00:00:00 2001 From: Thiago Paiva Date: Mon, 15 Aug 2016 15:23:30 -0300 Subject: [PATCH] Bring configurations from tempest to ironic_tempest_plugin To remove our tests from tempest first we need to bring the configurations that we need to the tempest plugin. Closes-Bug: #1614516 Change-Id: Iad6e16c28cf2a35cc6bf040f57224d32c085b7bc (cherry picked from commit ab6f73f7a06a9c9e497762e1dc917a9626cccd26) --- devstack/lib/ironic | 3 + ironic_tempest_plugin/clients.py | 8 ++- ironic_tempest_plugin/config.py | 60 +++++++++---------- .../tests/scenario/baremetal_manager.py | 4 +- .../scenario/test_baremetal_basic_ops.py | 1 + 5 files changed, 40 insertions(+), 36 deletions(-) diff --git a/devstack/lib/ironic b/devstack/lib/ironic index ec30c3e2e8..60cde30aa2 100644 --- a/devstack/lib/ironic +++ b/devstack/lib/ironic @@ -1512,6 +1512,9 @@ function ironic_configure_tempest { image_uuid=$(openstack image show $IRONIC_IMAGE_NAME -f value -c id) iniset $TEMPEST_CONFIG compute image_ref $image_uuid iniset $TEMPEST_CONFIG compute image_ref_alt $image_uuid + + iniset $TEMPEST_CONFIG auth create_isolated_networks False + iniset $TEMPEST_CONFIG network-feature-enabled port_admin_state_change False } # Restore xtrace + pipefail diff --git a/ironic_tempest_plugin/clients.py b/ironic_tempest_plugin/clients.py index 7816a2f589..8ec1db6655 100644 --- a/ironic_tempest_plugin/clients.py +++ b/ironic_tempest_plugin/clients.py @@ -36,9 +36,15 @@ class Manager(clients.Manager): :param service: service name """ super(Manager, self).__init__(credentials, service) + default_params_with_timeout_values = { + 'build_interval': CONF.compute.build_interval, + 'build_timeout': CONF.compute.build_timeout + } + default_params_with_timeout_values.update(self.default_params) + self.baremetal_client = BaremetalClient( self.auth_provider, CONF.baremetal.catalog_type, CONF.identity.region, endpoint_type=CONF.baremetal.endpoint_type, - **self.default_params_with_timeout_values) + **default_params_with_timeout_values) diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py index 00e9a35d2d..6ef2f2f9de 100644 --- a/ironic_tempest_plugin/config.py +++ b/ironic_tempest_plugin/config.py @@ -28,44 +28,38 @@ baremetal_group = cfg.OptGroup(name='baremetal', 'live_migration, pause, rescue, resize, ' 'shelve, snapshot, and suspend') -# NOTE(maurosr): Until liberty-eol we need to keep config options and tests -# on tempest's tree to test stable branches and thus we have to comment the -# options bellow to avoid duplication. Only new options should live here. 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.StrOpt('catalog_type', + default='baremetal', + help="Catalog type of the baremetal provisioning service"), + 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('deploywait_timeout', default=15, help="Timeout for Ironic node to reach the " "wait-callback state after powering on."), - # 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.") + 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."), cfg.StrOpt('min_microversion', help="Lower version of the test target microversion range. " "The format is 'X.Y', where 'X' and 'Y' are int values. " diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py index 3f7c044183..b757d453e7 100644 --- a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py +++ b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py @@ -58,8 +58,8 @@ class BaremetalScenarioTest(manager.ScenarioTest): @classmethod def skip_checks(cls): super(BaremetalScenarioTest, cls).skip_checks() - if not CONF.baremetal.driver_enabled: - msg = 'Ironic not available or Ironic compute driver not enabled' + if CONF.network_feature_enabled.port_admin_state_change: + msg = "Port state change feature isn't supported by Ironic." raise cls.skipException(msg) @classmethod 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 6312500917..741b184c40 100644 --- a/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py +++ b/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py @@ -39,6 +39,7 @@ class BaremetalBasicOps(baremetal_manager.BaremetalScenarioTest): * Monitors the associated Ironic node for power and expected state transitions """ + def rebuild_instance(self, preserve_ephemeral=False): self.rebuild_server(server_id=self.instance['id'], preserve_ephemeral=preserve_ephemeral,