Invoke tests with fake interfaces
So it turns out as highlighted by looking at bug 2054722
that you can end up creating nodes with "fake" hardware nodes
in the default config we test in the gate, which end up with
"fake" as the deploy_interface, but if you try to run the
same test against a production configured ironic deployment,
it fails because it likely ends up with a default of "agent"
as the deploy_interface.
Unfortunately, a review of test logs also reveals that the
same basic problem exists with the network_interface field
*as well*, where tests were written expecting the default
to be a fake or noop interface out of the box.
Note: This depends-on is to be removed before mering, it is
enable additional issues to be identified.
Related-Prod: PRODX-47233
Change-Id: Id0051d9b39bc0f46e3afee5bbfa8a2062114df80
diff --git a/ironic_tempest_plugin/tests/api/admin/test_allocations.py b/ironic_tempest_plugin/tests/api/admin/test_allocations.py
index f9e2595..b9ab70b 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_allocations.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_allocations.py
@@ -38,8 +38,15 @@
self.resource_class = uuidutils.generate_uuid()
_, self.chassis = self.create_chassis()
- _, self.node = self.create_node(self.chassis['uuid'],
- resource_class=self.resource_class)
+ _, self.node = self.create_node(
+ self.chassis['uuid'],
+ resource_class=self.resource_class,
+ # Fake deploy interface to avoid stop when automated
+ # cleaning is on.
+ deploy_interface='fake',
+ # noop network interface in case a cleaning/provisioning network
+ # is not defined.
+ network_interface='noop')
self.provide_and_power_off_node(self.node['uuid'])
@@ -75,7 +82,8 @@
@decorators.idempotent_id('eb074d06-e5f4-4fb4-b992-c9929db488ae')
def test_create_allocation_with_traits(self):
_, node2 = self.create_node(self.chassis['uuid'],
- resource_class=self.resource_class)
+ resource_class=self.resource_class,
+ deploy_interface='fake')
self.client.set_node_traits(node2['uuid'], ['CUSTOM_MEOW'])
self.provide_and_power_off_node(node2['uuid'])
@@ -99,7 +107,9 @@
node_name = 'allocation-test-1'
_, node2 = self.create_node(self.chassis['uuid'],
resource_class=self.resource_class,
- name=node_name)
+ name=node_name,
+ deploy_interface='fake',
+ network_interface='noop')
self.provide_and_power_off_node(node2['uuid'])
_, body = self.create_allocation(self.resource_class,
@@ -203,7 +213,8 @@
@decorators.idempotent_id('2378727f-77c3-4289-9562-bd2f3b147a60')
def test_create_allocation_node_mismatch(self):
_, node2 = self.create_node(self.chassis['uuid'],
- resource_class=self.resource_class + 'alt')
+ resource_class=self.resource_class + 'alt',
+ deploy_interface='fake')
# Mismatch between the resource class and the candidate node
_, body = self.create_allocation(
self.resource_class, candidate_nodes=[node2['uuid']])
diff --git a/ironic_tempest_plugin/tests/api/admin/test_nodes.py b/ironic_tempest_plugin/tests/api/admin/test_nodes.py
index 61dfb9e..236ee2f 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_nodes.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_nodes.py
@@ -1047,7 +1047,12 @@
super(TestNodeProtected, self).setUp()
_, self.chassis = self.create_chassis()
- _, self.node = self.create_node(self.chassis['uuid'])
+ _, self.node = self.create_node(
+ self.chassis['uuid'],
+ # Fake deploy interface to bypass cleaning in the test flow.
+ deploy_interface='fake',
+ # Noop network interface to skip networking involvement.
+ network_interface='noop')
self.provide_node(self.node['uuid'])
@decorators.idempotent_id('52f0cb1c-ad7b-43dc-8e22-a76438b67716')
@@ -1117,7 +1122,9 @@
def setUp(self):
super(TestNodesProtectedOldApi, self).setUp()
_, self.chassis = self.create_chassis()
- _, self.node = self.create_node(self.chassis['uuid'])
+ _, self.node = self.create_node(self.chassis['uuid'],
+ deploy_interface='fake',
+ network_interface='noop')
self.deploy_node(self.node['uuid'])
_, self.node = self.client.show_node(self.node['uuid'])
diff --git a/ironic_tempest_plugin/tests/api/admin/test_nodestates.py b/ironic_tempest_plugin/tests/api/admin/test_nodestates.py
index 1da978d..d03a876 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_nodestates.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_nodestates.py
@@ -78,7 +78,9 @@
@decorators.idempotent_id('ccb8fca9-2ba0-480c-a037-34c3bd09dc74')
def test_set_node_provision_state(self):
- _, node = self.create_node(self.chassis['uuid'])
+ _, node = self.create_node(self.chassis['uuid'],
+ deploy_interface='fake',
+ network_interface='noop')
# Nodes appear in NONE state by default until v1.1
self.assertIsNone(node['provision_state'])
provision_states_list = ['active', 'deleted']
@@ -97,7 +99,9 @@
@decorators.idempotent_id('9c414984-f3b6-4b3d-81da-93b60d4662fb')
def test_set_node_provision_state(self):
- _, node = self.create_node(self.chassis['uuid'])
+ _, node = self.create_node(self.chassis['uuid'],
+ deploy_interface='fake',
+ network_interface='noop')
# Nodes appear in AVAILABLE state by default from v1.2 to v1.10
self.assertEqual('available', node['provision_state'])
provision_states_list = ['active', 'deleted']
@@ -116,7 +120,9 @@
@decorators.idempotent_id('3d606003-05ce-4b5a-964d-bdee382fafe9')
def test_set_node_provision_state(self):
- _, node = self.create_node(self.chassis['uuid'])
+ _, node = self.create_node(self.chassis['uuid'],
+ deploy_interface='fake',
+ network_interface='noop')
# Nodes appear in AVAILABLE state by default from v1.2 to v1.10
self.assertEqual('available', node['provision_state'])
# MANAGEABLE state and PROVIDE transition have been added in v1.4
@@ -138,7 +144,9 @@
@decorators.idempotent_id('6c9ce4a3-713b-4c76-91af-18c48d01f1bb')
def test_set_node_provision_state(self):
- _, node = self.create_node(self.chassis['uuid'])
+ _, node = self.create_node(self.chassis['uuid'],
+ deploy_interface='fake',
+ network_interface='noop')
# Nodes appear in AVAILABLE state by default from v1.2 to v1.10
self.assertEqual('available', node['provision_state'])
# INSPECT* states have been added in v1.6
@@ -162,7 +170,9 @@
@decorators.idempotent_id('31f53828-b83d-40c7-98e5-843e28a1b6b9')
def test_set_node_provision_state(self):
- _, node = self.create_node(self.chassis['uuid'])
+ _, node = self.create_node(self.chassis['uuid'],
+ deploy_interface='fake',
+ network_interface='noop')
# Nodes appear in ENROLL state by default from v1.11
self.assertEqual('enroll', node['provision_state'])
provision_states_list = [
diff --git a/ironic_tempest_plugin/tests/api/admin/test_portgroups.py b/ironic_tempest_plugin/tests/api/admin/test_portgroups.py
index 3e21e41..86dccd9 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_portgroups.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_portgroups.py
@@ -29,7 +29,8 @@
api_microversion_fixture.APIMicroversionFixture(
self.min_microversion))
_, self.chassis = self.create_chassis()
- _, self.node = self.create_node(self.chassis['uuid'])
+ _, self.node = self.create_node(self.chassis['uuid'],
+ network_interface='noop')
_, self.portgroup = self.create_portgroup(
self.node['uuid'], address=data_utils.rand_mac_address(),
name=data_utils.rand_name('portgroup'))
diff --git a/ironic_tempest_plugin/tests/api/admin/test_ports.py b/ironic_tempest_plugin/tests/api/admin/test_ports.py
index bb6b6f6..9988279 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_ports.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_ports.py
@@ -25,7 +25,8 @@
super(TestPorts, self).setUp()
_, self.chassis = self.create_chassis()
- _, self.node = self.create_node(self.chassis['uuid'])
+ _, self.node = self.create_node(self.chassis['uuid'],
+ network_interface='noop')
_, self.port = self.create_port(self.node['uuid'],
data_utils.rand_mac_address())
@@ -275,7 +276,8 @@
TestPortsWithPhysicalNetwork.min_microversion)
)
_, self.chassis = self.create_chassis()
- _, self.node = self.create_node(self.chassis['uuid'])
+ _, self.node = self.create_node(self.chassis['uuid'],
+ network_interface='noop')
@decorators.idempotent_id('f1a5d279-c456-4311-ad31-fea09f61c22b')
def test_create_port_with_physical_network(self):
diff --git a/ironic_tempest_plugin/tests/api/admin/test_ports_negative.py b/ironic_tempest_plugin/tests/api/admin/test_ports_negative.py
index bd338f9..8923aa3 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_ports_negative.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_ports_negative.py
@@ -25,7 +25,8 @@
super(TestPortsNegative, self).setUp()
_, self.chassis = self.create_chassis()
- _, self.node = self.create_node(self.chassis['uuid'])
+ _, self.node = self.create_node(self.chassis['uuid'],
+ network_interface='noop')
@decorators.attr(type=['negative'])
@decorators.idempotent_id('0a6ee1f7-d0d9-4069-8778-37f3aa07303a')
diff --git a/ironic_tempest_plugin/tests/api/rbac_defaults/test_nodes.py b/ironic_tempest_plugin/tests/api/rbac_defaults/test_nodes.py
index aab00fe..cd16fe2 100644
--- a/ironic_tempest_plugin/tests/api/rbac_defaults/test_nodes.py
+++ b/ironic_tempest_plugin/tests/api/rbac_defaults/test_nodes.py
@@ -34,7 +34,9 @@
self.reader_client = self.os_project_reader.baremetal.BaremetalClient()
_, self.chassis = self.create_chassis()
# Bare node, no inherent permissions by default for project readers.
- _, self.node = self.create_node(self.chassis['uuid'])
+ _, self.node = self.create_node(self.chassis['uuid'],
+ network_interface='noop',
+ deploy_interface='fake')
# Default policy is:
# ('role:reader and '
@@ -684,7 +686,9 @@
self.client = self.os_system_admin.baremetal.BaremetalClient()
self.reader_client = self.os_system_reader.baremetal.BaremetalClient()
_, self.chassis = self.create_chassis()
- _, self.node = self.create_node(self.chassis['uuid'])
+ _, self.node = self.create_node(self.chassis['uuid'],
+ network_interface='noop',
+ deploy_interface='fake')
def test_reader_cannot_create_node(self):
"""Reader cannot create node