discovery: optional support for testing changing driver
Now that we have reset_interfaces in the API, we can try changing the driver after
discovery. This is optional, since reset_interfaces was only introduced in Rocky.
Change-Id: I8718941bb194c8fc0646a1f0bc11ef3468291ccb
diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py
index 7cabf69..a3b5019 100644
--- a/ironic_tempest_plugin/config.py
+++ b/ironic_tempest_plugin/config.py
@@ -195,4 +195,7 @@
default='fake',
help="The driver expected to be set on newly discovered nodes. "
"Only has effect with auto_discovery_feature is True."),
+ cfg.StrOpt('auto_discovery_target_driver',
+ help="The driver to set on the newly discovered nodes. "
+ "Only has effect with auto_discovery_feature is True."),
]
diff --git a/ironic_tempest_plugin/tests/scenario/test_introspection_discovery.py b/ironic_tempest_plugin/tests/scenario/test_introspection_discovery.py
index 2ec91f1..c44844f 100644
--- a/ironic_tempest_plugin/tests/scenario/test_introspection_discovery.py
+++ b/ironic_tempest_plugin/tests/scenario/test_introspection_discovery.py
@@ -37,6 +37,13 @@
discovered_node = self._get_discovery_node()
self.node_info = self._get_node_info(discovered_node)
+ self.default_driver = (
+ CONF.baremetal_introspection.auto_discovery_default_driver
+ )
+ self.expected_driver = (
+ CONF.baremetal_introspection.auto_discovery_target_driver
+ or CONF.baremetal_introspection.auto_discovery_default_driver
+ )
rule = {
"description": "Auto-discovery rule",
@@ -51,14 +58,26 @@
"path": "/name",
"value": self.node_info['name']},
],
- # This flag must be automatically set by the auto-discovery process
"conditions": [
+ # This flag must be automatically set by the auto-discovery
+ # process.
{"op": "eq",
"field": "data://auto_discovered",
- "value": True}
+ "value": True},
+ # Making sure the initial driver matches the expected.
+ {"op": "eq",
+ "field": "node://driver",
+ "value": self.default_driver},
]
}
+ if self.expected_driver != self.default_driver:
+ rule['actions'].append({
+ 'action': 'set-attribute',
+ 'path': '/driver',
+ 'value': self.expected_driver
+ })
+
self.rule_import_from_dict(rule)
self.addCleanup(self.rule_purge)
@@ -141,7 +160,5 @@
self.verify_node_introspection_data(inspected_node)
self.assertEqual(ProvisionStates.ENROLL,
inspected_node['provision_state'])
- self.assertEqual(
- CONF.baremetal_introspection.auto_discovery_default_driver,
- inspected_node['driver'])
+ self.assertEqual(self.expected_driver, inspected_node['driver'])
self.assertEqual('yes', inspected_node['extra']['discovered'])