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. Change-Id: Id0051d9b39bc0f46e3afee5bbfa8a2062114df80
This commit is contained in:
parent
f5bfe9b319
commit
7241770603
@ -38,8 +38,15 @@ class Base(base.BaseBaremetalTest):
|
|||||||
self.resource_class = uuidutils.generate_uuid()
|
self.resource_class = uuidutils.generate_uuid()
|
||||||
|
|
||||||
_, self.chassis = self.create_chassis()
|
_, self.chassis = self.create_chassis()
|
||||||
_, self.node = self.create_node(self.chassis['uuid'],
|
_, self.node = self.create_node(
|
||||||
resource_class=self.resource_class)
|
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'])
|
self.provide_and_power_off_node(self.node['uuid'])
|
||||||
|
|
||||||
|
|
||||||
@ -75,7 +82,8 @@ class TestAllocations(Base):
|
|||||||
@decorators.idempotent_id('eb074d06-e5f4-4fb4-b992-c9929db488ae')
|
@decorators.idempotent_id('eb074d06-e5f4-4fb4-b992-c9929db488ae')
|
||||||
def test_create_allocation_with_traits(self):
|
def test_create_allocation_with_traits(self):
|
||||||
_, node2 = self.create_node(self.chassis['uuid'],
|
_, 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.client.set_node_traits(node2['uuid'], ['CUSTOM_MEOW'])
|
||||||
self.provide_and_power_off_node(node2['uuid'])
|
self.provide_and_power_off_node(node2['uuid'])
|
||||||
|
|
||||||
@ -99,7 +107,9 @@ class TestAllocations(Base):
|
|||||||
node_name = 'allocation-test-1'
|
node_name = 'allocation-test-1'
|
||||||
_, node2 = self.create_node(self.chassis['uuid'],
|
_, node2 = self.create_node(self.chassis['uuid'],
|
||||||
resource_class=self.resource_class,
|
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'])
|
self.provide_and_power_off_node(node2['uuid'])
|
||||||
|
|
||||||
_, body = self.create_allocation(self.resource_class,
|
_, body = self.create_allocation(self.resource_class,
|
||||||
@ -203,7 +213,8 @@ class TestAllocations(Base):
|
|||||||
@decorators.idempotent_id('2378727f-77c3-4289-9562-bd2f3b147a60')
|
@decorators.idempotent_id('2378727f-77c3-4289-9562-bd2f3b147a60')
|
||||||
def test_create_allocation_node_mismatch(self):
|
def test_create_allocation_node_mismatch(self):
|
||||||
_, node2 = self.create_node(self.chassis['uuid'],
|
_, 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
|
# Mismatch between the resource class and the candidate node
|
||||||
_, body = self.create_allocation(
|
_, body = self.create_allocation(
|
||||||
self.resource_class, candidate_nodes=[node2['uuid']])
|
self.resource_class, candidate_nodes=[node2['uuid']])
|
||||||
|
@ -1044,7 +1044,12 @@ class TestNodeProtected(base.BaseBaremetalTest):
|
|||||||
super(TestNodeProtected, self).setUp()
|
super(TestNodeProtected, self).setUp()
|
||||||
|
|
||||||
_, self.chassis = self.create_chassis()
|
_, 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'])
|
self.provide_node(self.node['uuid'])
|
||||||
|
|
||||||
@decorators.idempotent_id('52f0cb1c-ad7b-43dc-8e22-a76438b67716')
|
@decorators.idempotent_id('52f0cb1c-ad7b-43dc-8e22-a76438b67716')
|
||||||
@ -1114,7 +1119,9 @@ class TestNodesProtectedOldApi(base.BaseBaremetalTest):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestNodesProtectedOldApi, self).setUp()
|
super(TestNodesProtectedOldApi, self).setUp()
|
||||||
_, self.chassis = self.create_chassis()
|
_, 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.deploy_node(self.node['uuid'])
|
||||||
_, self.node = self.client.show_node(self.node['uuid'])
|
_, self.node = self.client.show_node(self.node['uuid'])
|
||||||
|
|
||||||
|
@ -78,7 +78,9 @@ class TestNodeStatesV1_1(TestNodeStatesMixin, base.BaseBaremetalTest):
|
|||||||
|
|
||||||
@decorators.idempotent_id('ccb8fca9-2ba0-480c-a037-34c3bd09dc74')
|
@decorators.idempotent_id('ccb8fca9-2ba0-480c-a037-34c3bd09dc74')
|
||||||
def test_set_node_provision_state(self):
|
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
|
# Nodes appear in NONE state by default until v1.1
|
||||||
self.assertIsNone(node['provision_state'])
|
self.assertIsNone(node['provision_state'])
|
||||||
provision_states_list = ['active', 'deleted']
|
provision_states_list = ['active', 'deleted']
|
||||||
@ -97,7 +99,9 @@ class TestNodeStatesV1_2(TestNodeStatesMixin, base.BaseBaremetalTest):
|
|||||||
|
|
||||||
@decorators.idempotent_id('9c414984-f3b6-4b3d-81da-93b60d4662fb')
|
@decorators.idempotent_id('9c414984-f3b6-4b3d-81da-93b60d4662fb')
|
||||||
def test_set_node_provision_state(self):
|
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
|
# Nodes appear in AVAILABLE state by default from v1.2 to v1.10
|
||||||
self.assertEqual('available', node['provision_state'])
|
self.assertEqual('available', node['provision_state'])
|
||||||
provision_states_list = ['active', 'deleted']
|
provision_states_list = ['active', 'deleted']
|
||||||
@ -116,7 +120,9 @@ class TestNodeStatesV1_4(TestNodeStatesMixin, base.BaseBaremetalTest):
|
|||||||
|
|
||||||
@decorators.idempotent_id('3d606003-05ce-4b5a-964d-bdee382fafe9')
|
@decorators.idempotent_id('3d606003-05ce-4b5a-964d-bdee382fafe9')
|
||||||
def test_set_node_provision_state(self):
|
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
|
# Nodes appear in AVAILABLE state by default from v1.2 to v1.10
|
||||||
self.assertEqual('available', node['provision_state'])
|
self.assertEqual('available', node['provision_state'])
|
||||||
# MANAGEABLE state and PROVIDE transition have been added in v1.4
|
# MANAGEABLE state and PROVIDE transition have been added in v1.4
|
||||||
@ -138,7 +144,9 @@ class TestNodeStatesV1_6(TestNodeStatesMixin, base.BaseBaremetalTest):
|
|||||||
|
|
||||||
@decorators.idempotent_id('6c9ce4a3-713b-4c76-91af-18c48d01f1bb')
|
@decorators.idempotent_id('6c9ce4a3-713b-4c76-91af-18c48d01f1bb')
|
||||||
def test_set_node_provision_state(self):
|
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
|
# Nodes appear in AVAILABLE state by default from v1.2 to v1.10
|
||||||
self.assertEqual('available', node['provision_state'])
|
self.assertEqual('available', node['provision_state'])
|
||||||
# INSPECT* states have been added in v1.6
|
# INSPECT* states have been added in v1.6
|
||||||
@ -162,7 +170,9 @@ class TestNodeStatesV1_11(TestNodeStatesMixin, base.BaseBaremetalTest):
|
|||||||
|
|
||||||
@decorators.idempotent_id('31f53828-b83d-40c7-98e5-843e28a1b6b9')
|
@decorators.idempotent_id('31f53828-b83d-40c7-98e5-843e28a1b6b9')
|
||||||
def test_set_node_provision_state(self):
|
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
|
# Nodes appear in ENROLL state by default from v1.11
|
||||||
self.assertEqual('enroll', node['provision_state'])
|
self.assertEqual('enroll', node['provision_state'])
|
||||||
provision_states_list = [
|
provision_states_list = [
|
||||||
|
@ -29,7 +29,8 @@ class TestPortGroups(base.BaseBaremetalTest):
|
|||||||
api_microversion_fixture.APIMicroversionFixture(
|
api_microversion_fixture.APIMicroversionFixture(
|
||||||
self.min_microversion))
|
self.min_microversion))
|
||||||
_, self.chassis = self.create_chassis()
|
_, 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.portgroup = self.create_portgroup(
|
||||||
self.node['uuid'], address=data_utils.rand_mac_address(),
|
self.node['uuid'], address=data_utils.rand_mac_address(),
|
||||||
name=data_utils.rand_name('portgroup'))
|
name=data_utils.rand_name('portgroup'))
|
||||||
|
@ -25,7 +25,8 @@ class TestPorts(base.BaseBaremetalTest):
|
|||||||
super(TestPorts, self).setUp()
|
super(TestPorts, self).setUp()
|
||||||
|
|
||||||
_, self.chassis = self.create_chassis()
|
_, 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'],
|
_, self.port = self.create_port(self.node['uuid'],
|
||||||
data_utils.rand_mac_address())
|
data_utils.rand_mac_address())
|
||||||
|
|
||||||
@ -275,7 +276,8 @@ class TestPortsWithPhysicalNetwork(base.BaseBaremetalTest):
|
|||||||
TestPortsWithPhysicalNetwork.min_microversion)
|
TestPortsWithPhysicalNetwork.min_microversion)
|
||||||
)
|
)
|
||||||
_, self.chassis = self.create_chassis()
|
_, 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')
|
@decorators.idempotent_id('f1a5d279-c456-4311-ad31-fea09f61c22b')
|
||||||
def test_create_port_with_physical_network(self):
|
def test_create_port_with_physical_network(self):
|
||||||
|
@ -25,7 +25,8 @@ class TestPortsNegative(base.BaseBaremetalTest):
|
|||||||
super(TestPortsNegative, self).setUp()
|
super(TestPortsNegative, self).setUp()
|
||||||
|
|
||||||
_, self.chassis = self.create_chassis()
|
_, 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.attr(type=['negative'])
|
||||||
@decorators.idempotent_id('0a6ee1f7-d0d9-4069-8778-37f3aa07303a')
|
@decorators.idempotent_id('0a6ee1f7-d0d9-4069-8778-37f3aa07303a')
|
||||||
|
@ -34,7 +34,9 @@ class TestNodeProjectReader(base.BaseBaremetalRBACTest):
|
|||||||
self.reader_client = self.os_project_reader.baremetal.BaremetalClient()
|
self.reader_client = self.os_project_reader.baremetal.BaremetalClient()
|
||||||
_, self.chassis = self.create_chassis()
|
_, self.chassis = self.create_chassis()
|
||||||
# Bare node, no inherent permissions by default for project readers.
|
# 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:
|
# Default policy is:
|
||||||
# ('role:reader and '
|
# ('role:reader and '
|
||||||
@ -684,7 +686,9 @@ class TestNodeSystemReader(base.BaseBaremetalRBACTest):
|
|||||||
self.client = self.os_system_admin.baremetal.BaremetalClient()
|
self.client = self.os_system_admin.baremetal.BaremetalClient()
|
||||||
self.reader_client = self.os_system_reader.baremetal.BaremetalClient()
|
self.reader_client = self.os_system_reader.baremetal.BaremetalClient()
|
||||||
_, self.chassis = self.create_chassis()
|
_, 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):
|
def test_reader_cannot_create_node(self):
|
||||||
"""Reader cannot create node
|
"""Reader cannot create node
|
||||||
|
Loading…
Reference in New Issue
Block a user