zuul: Make openstacksdk-functional-devstack-ironic voting

Some actions require a system scoped token. We also need to fix some
outdated references that have crept in while this job has been broken
before returning the job to the voting list.

Change-Id: Ib6fa256d2ecb46e0966a7b3e533e1e996bc1c164
Depends-on: https://review.opendev.org/c/openstack/devstack/+/942840
This commit is contained in:
Stephen Finucane
2025-05-30 12:38:11 +01:00
parent 41959b9912
commit 198cb9e024
11 changed files with 171 additions and 126 deletions

View File

@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
from openstack import resource from openstack import resource
class InspectionRule(_common.Resource): class InspectionRule(resource.Resource):
resources_key = 'inspection_rules' resources_key = 'inspection_rules'
base_path = '/inspection_rules' base_path = '/inspection_rules'

View File

@@ -34,9 +34,9 @@ class BaseBaremetalTest(base.BaseFunctionalTest):
return allocation return allocation
def create_chassis(self, **kwargs): def create_chassis(self, **kwargs):
chassis = self.operator_cloud.baremetal.create_chassis(**kwargs) chassis = self.system_admin_cloud.baremetal.create_chassis(**kwargs)
self.addCleanup( self.addCleanup(
lambda: self.operator_cloud.baremetal.delete_chassis( lambda: self.system_admin_cloud.baremetal.delete_chassis(
chassis.id, ignore_missing=True chassis.id, ignore_missing=True
) )
) )
@@ -110,12 +110,12 @@ class BaseBaremetalTest(base.BaseFunctionalTest):
def create_deploy_template(self, **kwargs): def create_deploy_template(self, **kwargs):
"""Create a new deploy_template from attributes.""" """Create a new deploy_template from attributes."""
deploy_template = self.operator_cloud.baremetal.create_deploy_template( deploy_template = (
**kwargs self.system_admin_cloud.baremetal.create_deploy_template(**kwargs)
) )
self.addCleanup( self.addCleanup(
lambda: self.operator_cloud.baremetal.delete_deploy_template( lambda: self.system_admin_cloud.baremetal.delete_deploy_template(
deploy_template.id, ignore_missing=True deploy_template.id, ignore_missing=True
) )
) )
@@ -124,10 +124,10 @@ class BaseBaremetalTest(base.BaseFunctionalTest):
def create_runbook(self, **kwargs): def create_runbook(self, **kwargs):
"""Create a new runbook from attributes.""" """Create a new runbook from attributes."""
runbook = self.conn.baremetal.create_runbook(**kwargs) runbook = self.operator_cloud.baremetal.create_runbook(**kwargs)
self.addCleanup( self.addCleanup(
lambda: self.conn.baremetal.delete_runbook( lambda: self.operator_cloud.baremetal.delete_runbook(
runbook.id, ignore_missing=True runbook.id, ignore_missing=True
) )
) )
@@ -136,10 +136,12 @@ class BaseBaremetalTest(base.BaseFunctionalTest):
def create_inspection_rule(self, **kwargs): def create_inspection_rule(self, **kwargs):
"""Create a new inspection_rule from attributes.""" """Create a new inspection_rule from attributes."""
inspection_rule = self.conn.baremetal.create_inspection_rule(**kwargs) inspection_rule = (
self.system_admin_cloud.baremetal.create_inspection_rule(**kwargs)
)
self.addCleanup( self.addCleanup(
lambda: self.conn.baremetal.delete_inspection_rule( lambda: self.system_admin_cloud.baremetal.delete_inspection_rule(
inspection_rule.id, ignore_missing=True inspection_rule.id, ignore_missing=True
) )
) )

View File

@@ -19,15 +19,15 @@ class TestBareMetalChassis(base.BaseBaremetalTest):
def test_chassis_create_get_delete(self): def test_chassis_create_get_delete(self):
chassis = self.create_chassis() chassis = self.create_chassis()
loaded = self.operator_cloud.baremetal.get_chassis(chassis.id) loaded = self.system_admin_cloud.baremetal.get_chassis(chassis.id)
self.assertEqual(loaded.id, chassis.id) self.assertEqual(loaded.id, chassis.id)
self.operator_cloud.baremetal.delete_chassis( self.system_admin_cloud.baremetal.delete_chassis(
chassis, ignore_missing=False chassis, ignore_missing=False
) )
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.operator_cloud.baremetal.get_chassis, self.system_admin_cloud.baremetal.get_chassis,
chassis.id, chassis.id,
) )
@@ -35,44 +35,46 @@ class TestBareMetalChassis(base.BaseBaremetalTest):
chassis = self.create_chassis() chassis = self.create_chassis()
chassis.extra = {'answer': 42} chassis.extra = {'answer': 42}
chassis = self.operator_cloud.baremetal.update_chassis(chassis) chassis = self.system_admin_cloud.baremetal.update_chassis(chassis)
self.assertEqual({'answer': 42}, chassis.extra) self.assertEqual({'answer': 42}, chassis.extra)
chassis = self.operator_cloud.baremetal.get_chassis(chassis.id) chassis = self.system_admin_cloud.baremetal.get_chassis(chassis.id)
self.assertEqual({'answer': 42}, chassis.extra) self.assertEqual({'answer': 42}, chassis.extra)
def test_chassis_patch(self): def test_chassis_patch(self):
chassis = self.create_chassis() chassis = self.create_chassis()
chassis = self.operator_cloud.baremetal.patch_chassis( chassis = self.system_admin_cloud.baremetal.patch_chassis(
chassis, dict(path='/extra/answer', op='add', value=42) chassis, dict(path='/extra/answer', op='add', value=42)
) )
self.assertEqual({'answer': 42}, chassis.extra) self.assertEqual({'answer': 42}, chassis.extra)
chassis = self.operator_cloud.baremetal.get_chassis(chassis.id) chassis = self.system_admin_cloud.baremetal.get_chassis(chassis.id)
self.assertEqual({'answer': 42}, chassis.extra) self.assertEqual({'answer': 42}, chassis.extra)
def test_chassis_negative_non_existing(self): def test_chassis_negative_non_existing(self):
uuid = "5c9dcd04-2073-49bc-9618-99ae634d8971" uuid = "5c9dcd04-2073-49bc-9618-99ae634d8971"
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.operator_cloud.baremetal.get_chassis, self.system_admin_cloud.baremetal.get_chassis,
uuid, uuid,
) )
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.operator_cloud.baremetal.find_chassis, self.system_admin_cloud.baremetal.find_chassis,
uuid, uuid,
ignore_missing=False, ignore_missing=False,
) )
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.operator_cloud.baremetal.delete_chassis, self.system_admin_cloud.baremetal.delete_chassis,
uuid, uuid,
ignore_missing=False, ignore_missing=False,
) )
self.assertIsNone(self.operator_cloud.baremetal.find_chassis(uuid)) self.assertIsNone(self.system_admin_cloud.baremetal.find_chassis(uuid))
self.assertIsNone(self.operator_cloud.baremetal.delete_chassis(uuid)) self.assertIsNone(
self.system_admin_cloud.baremetal.delete_chassis(uuid)
)
class TestBareMetalChassisFields(base.BaseBaremetalTest): class TestBareMetalChassisFields(base.BaseBaremetalTest):
@@ -80,7 +82,7 @@ class TestBareMetalChassisFields(base.BaseBaremetalTest):
def test_chassis_fields(self): def test_chassis_fields(self):
self.create_chassis(description='something') self.create_chassis(description='something')
result = self.operator_cloud.baremetal.chassis( result = self.system_admin_cloud.baremetal.chassis(
fields=['uuid', 'extra'] fields=['uuid', 'extra']
) )
for ch in result: for ch in result:

View File

@@ -19,10 +19,10 @@ class TestBareMetalConductor(base.BaseBaremetalTest):
def test_list_get_conductor(self): def test_list_get_conductor(self):
node = self.create_node(name='node-name') node = self.create_node(name='node-name')
conductors = self.operator_cloud.baremetal.conductors() conductors = self.system_admin_cloud.baremetal.conductors()
hostname_list = [conductor.hostname for conductor in conductors] hostname_list = [conductor.hostname for conductor in conductors]
self.assertIn(node.conductor, hostname_list) self.assertIn(node.conductor, hostname_list)
conductor1 = self.operator_cloud.baremetal.get_conductor( conductor1 = self.system_admin_cloud.baremetal.get_conductor(
node.conductor node.conductor
) )
self.assertIsNotNone(conductor1.conductor_group) self.assertIsNotNone(conductor1.conductor_group)

View File

@@ -17,9 +17,6 @@ from openstack.tests.functional.baremetal import base
class TestBareMetalDeployTemplate(base.BaseBaremetalTest): class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
min_microversion = '1.55' min_microversion = '1.55'
def setUp(self):
super().setUp()
def test_baremetal_deploy_create_get_delete(self): def test_baremetal_deploy_create_get_delete(self):
steps = [ steps = [
{ {
@@ -34,16 +31,16 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
deploy_template = self.create_deploy_template( deploy_template = self.create_deploy_template(
name='CUSTOM_DEPLOY_TEMPLATE', steps=steps name='CUSTOM_DEPLOY_TEMPLATE', steps=steps
) )
loaded = self.operator_cloud.baremetal.get_deploy_template( loaded = self.system_admin_cloud.baremetal.get_deploy_template(
deploy_template.id deploy_template.id
) )
self.assertEqual(loaded.id, deploy_template.id) self.assertEqual(loaded.id, deploy_template.id)
self.operator_cloud.baremetal.delete_deploy_template( self.system_admin_cloud.baremetal.delete_deploy_template(
deploy_template, ignore_missing=False deploy_template, ignore_missing=False
) )
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.operator_cloud.baremetal.get_deploy_template, self.system_admin_cloud.baremetal.get_deploy_template,
deploy_template.id, deploy_template.id,
) )
@@ -65,20 +62,20 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
deploy_template2 = self.create_deploy_template( deploy_template2 = self.create_deploy_template(
name='CUSTOM_DEPLOY_TEMPLATE2', steps=steps name='CUSTOM_DEPLOY_TEMPLATE2', steps=steps
) )
deploy_templates = self.operator_cloud.baremetal.deploy_templates() deploy_templates = self.system_admin_cloud.baremetal.deploy_templates()
ids = [template.id for template in deploy_templates] ids = [template.id for template in deploy_templates]
self.assertIn(deploy_template1.id, ids) self.assertIn(deploy_template1.id, ids)
self.assertIn(deploy_template2.id, ids) self.assertIn(deploy_template2.id, ids)
deploy_templates_with_details = ( deploy_templates_with_details = (
self.operator_cloud.baremetal.deploy_templates(details=True) self.system_admin_cloud.baremetal.deploy_templates(details=True)
) )
for dp in deploy_templates_with_details: for dp in deploy_templates_with_details:
self.assertIsNotNone(dp.id) self.assertIsNotNone(dp.id)
self.assertIsNotNone(dp.name) self.assertIsNotNone(dp.name)
deploy_tempalte_with_fields = ( deploy_tempalte_with_fields = (
self.operator_cloud.baremetal.deploy_templates(fields=['uuid']) self.system_admin_cloud.baremetal.deploy_templates(fields=['uuid'])
) )
for dp in deploy_tempalte_with_fields: for dp in deploy_tempalte_with_fields:
self.assertIsNotNone(dp.id) self.assertIsNotNone(dp.id)
@@ -101,16 +98,20 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
self.assertFalse(deploy_template.extra) self.assertFalse(deploy_template.extra)
deploy_template.extra = {'answer': 42} deploy_template.extra = {'answer': 42}
deploy_template = self.operator_cloud.baremetal.update_deploy_template( deploy_template = (
deploy_template self.system_admin_cloud.baremetal.update_deploy_template(
deploy_template
)
) )
self.assertEqual({'answer': 42}, deploy_template.extra) self.assertEqual({'answer': 42}, deploy_template.extra)
deploy_template = self.operator_cloud.baremetal.get_deploy_template( deploy_template = (
deploy_template.id self.system_admin_cloud.baremetal.get_deploy_template(
deploy_template.id
)
) )
self.operator_cloud.baremetal.delete_deploy_template( self.system_admin_cloud.baremetal.delete_deploy_template(
deploy_template.id, ignore_missing=False deploy_template.id, ignore_missing=False
) )
@@ -130,13 +131,17 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
) )
deploy_template.extra = {'answer': 42} deploy_template.extra = {'answer': 42}
deploy_template = self.operator_cloud.baremetal.update_deploy_template( deploy_template = (
deploy_template self.system_admin_cloud.baremetal.update_deploy_template(
deploy_template
)
) )
self.assertEqual({'answer': 42}, deploy_template.extra) self.assertEqual({'answer': 42}, deploy_template.extra)
deploy_template = self.operator_cloud.baremetal.get_deploy_template( deploy_template = (
deploy_template.id self.system_admin_cloud.baremetal.get_deploy_template(
deploy_template.id
)
) )
self.assertEqual({'answer': 42}, deploy_template.extra) self.assertEqual({'answer': 42}, deploy_template.extra)
@@ -153,14 +158,18 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
} }
] ]
deploy_template = self.create_deploy_template(name=name, steps=steps) deploy_template = self.create_deploy_template(name=name, steps=steps)
deploy_template = self.operator_cloud.baremetal.patch_deploy_template( deploy_template = (
deploy_template, dict(path='/extra/answer', op='add', value=42) self.system_admin_cloud.baremetal.patch_deploy_template(
deploy_template, dict(path='/extra/answer', op='add', value=42)
)
) )
self.assertEqual({'answer': 42}, deploy_template.extra) self.assertEqual({'answer': 42}, deploy_template.extra)
self.assertEqual(name, deploy_template.name) self.assertEqual(name, deploy_template.name)
deploy_template = self.operator_cloud.baremetal.get_deploy_template( deploy_template = (
deploy_template.id self.system_admin_cloud.baremetal.get_deploy_template(
deploy_template.id
)
) )
self.assertEqual({'answer': 42}, deploy_template.extra) self.assertEqual({'answer': 42}, deploy_template.extra)
@@ -168,15 +177,15 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
uuid = "bbb45f41-d4bc-4307-8d1d-32f95ce1e920" uuid = "bbb45f41-d4bc-4307-8d1d-32f95ce1e920"
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.operator_cloud.baremetal.get_deploy_template, self.system_admin_cloud.baremetal.get_deploy_template,
uuid, uuid,
) )
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.operator_cloud.baremetal.delete_deploy_template, self.system_admin_cloud.baremetal.delete_deploy_template,
uuid, uuid,
ignore_missing=False, ignore_missing=False,
) )
self.assertIsNone( self.assertIsNone(
self.operator_cloud.baremetal.delete_deploy_template(uuid) self.system_admin_cloud.baremetal.delete_deploy_template(uuid)
) )

View File

@@ -17,18 +17,18 @@ from openstack.tests.functional.baremetal import base
class TestBareMetalDriver(base.BaseBaremetalTest): class TestBareMetalDriver(base.BaseBaremetalTest):
def test_fake_hardware_get(self): def test_fake_hardware_get(self):
driver = self.operator_cloud.baremetal.get_driver('fake-hardware') driver = self.system_admin_cloud.baremetal.get_driver('fake-hardware')
self.assertEqual('fake-hardware', driver.name) self.assertEqual('fake-hardware', driver.name)
self.assertNotEqual([], driver.hosts) self.assertNotEqual([], driver.hosts)
def test_fake_hardware_list(self): def test_fake_hardware_list(self):
drivers = self.operator_cloud.baremetal.drivers() drivers = self.system_admin_cloud.baremetal.drivers()
self.assertIn('fake-hardware', [d.name for d in drivers]) self.assertIn('fake-hardware', [d.name for d in drivers])
def test_driver_negative_non_existing(self): def test_driver_negative_non_existing(self):
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.operator_cloud.baremetal.get_driver, self.system_admin_cloud.baremetal.get_driver,
'not-a-driver', 'not-a-driver',
) )
@@ -37,7 +37,7 @@ class TestBareMetalDriverDetails(base.BaseBaremetalTest):
min_microversion = '1.30' min_microversion = '1.30'
def test_fake_hardware_get(self): def test_fake_hardware_get(self):
driver = self.operator_cloud.baremetal.get_driver('fake-hardware') driver = self.system_admin_cloud.baremetal.get_driver('fake-hardware')
self.assertEqual('fake-hardware', driver.name) self.assertEqual('fake-hardware', driver.name)
for iface in ('boot', 'deploy', 'management', 'power'): for iface in ('boot', 'deploy', 'management', 'power'):
self.assertIn( self.assertIn(
@@ -49,7 +49,7 @@ class TestBareMetalDriverDetails(base.BaseBaremetalTest):
self.assertNotEqual([], driver.hosts) self.assertNotEqual([], driver.hosts)
def test_fake_hardware_list_details(self): def test_fake_hardware_list_details(self):
drivers = self.operator_cloud.baremetal.drivers(details=True) drivers = self.system_admin_cloud.baremetal.drivers(details=True)
driver = [d for d in drivers if d.name == 'fake-hardware'][0] driver = [d for d in drivers if d.name == 'fake-hardware'][0]
for iface in ('boot', 'deploy', 'management', 'power'): for iface in ('boot', 'deploy', 'management', 'power'):
self.assertIn( self.assertIn(

View File

@@ -33,14 +33,16 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
priority=100, priority=100,
sensitive=False, sensitive=False,
) )
loaded = self.conn.baremetal.get_inspection_rule(inspection_rule.id) loaded = self.system_admin_cloud.baremetal.get_inspection_rule(
inspection_rule.id
)
self.assertEqual(loaded.id, inspection_rule.id) self.assertEqual(loaded.id, inspection_rule.id)
self.conn.baremetal.delete_inspection_rule( self.system_admin_cloud.baremetal.delete_inspection_rule(
inspection_rule, ignore_missing=False inspection_rule, ignore_missing=False
) )
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.conn.baremetal.get_inspection_rule, self.system_admin_cloud.baremetal.get_inspection_rule,
inspection_rule.id, inspection_rule.id,
) )
@@ -64,20 +66,20 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
conditions=conditions, conditions=conditions,
description="Test inspection rule 2", description="Test inspection rule 2",
) )
inspection_rules = self.conn.baremetal.inspection_rules() inspection_rules = self.system_admin_cloud.baremetal.inspection_rules()
ids = [rule.id for rule in inspection_rules] ids = [rule.id for rule in inspection_rules]
self.assertIn(inspection_rule1.id, ids) self.assertIn(inspection_rule1.id, ids)
self.assertIn(inspection_rule2.id, ids) self.assertIn(inspection_rule2.id, ids)
inspection_rules_with_details = self.conn.baremetal.inspection_rules( inspection_rules_with_details = (
details=True self.system_admin_cloud.baremetal.inspection_rules(details=True)
) )
for rule in inspection_rules_with_details: for rule in inspection_rules_with_details:
self.assertIsNotNone(rule.id) self.assertIsNotNone(rule.id)
self.assertIsNotNone(rule.description) self.assertIsNotNone(rule.description)
inspection_rule_with_fields = self.conn.baremetal.inspection_rules( inspection_rule_with_fields = (
fields=['uuid'] self.system_admin_cloud.baremetal.inspection_rules(fields=['uuid'])
) )
for rule in inspection_rule_with_fields: for rule in inspection_rule_with_fields:
self.assertIsNotNone(rule.id) self.assertIsNotNone(rule.id)
@@ -97,41 +99,48 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
conditions=conditions, conditions=conditions,
description="Test inspection rule", description="Test inspection rule",
) )
self.assertFalse(inspection_rule.extra)
inspection_rule.description = 'Updated inspection rule' inspection_rule.description = 'Updated inspection rule'
inspection_rule = self.conn.baremetal.update_inspection_rule( inspection_rule = (
inspection_rule self.system_admin_cloud.baremetal.update_inspection_rule(
inspection_rule
)
) )
self.assertEqual( self.assertEqual(
'Updated inspection rule', inspection_rule.description 'Updated inspection rule', inspection_rule.description
) )
inspection_rule = self.conn.baremetal.get_inspection_rule( inspection_rule = (
inspection_rule.id self.system_admin_cloud.baremetal.get_inspection_rule(
inspection_rule.id
)
) )
self.conn.baremetal.delete_inspection_rule( self.system_admin_cloud.baremetal.delete_inspection_rule(
inspection_rule.id, ignore_missing=False inspection_rule.id, ignore_missing=False
) )
def test_baremetal_inspection_rule_update(self): def test_baremetal_inspection_rule_update(self):
actions = [{"op": "set-attribute", "args": ["/driver", "idrac"]}] actions = [{"op": "set-attribute", "args": ["/driver", "idrac"]}]
conditions = [ conditions = [
{"op": "ge", "args": ["node:memory_mb", 4096], "multiple": "all"} {"op": "gt", "args": ["node:memory_mb", 4096], "multiple": "all"}
] ]
inspection_rule = self.create_inspection_rule( inspection_rule = self.create_inspection_rule(
actions=actions, conditions=conditions, phase="main", priority=100 actions=actions, conditions=conditions, phase="main", priority=100
) )
inspection_rule.priority = 150 inspection_rule.priority = 150
inspection_rule = self.conn.baremetal.update_inspection_rule( inspection_rule = (
inspection_rule self.system_admin_cloud.baremetal.update_inspection_rule(
inspection_rule
)
) )
self.assertEqual(150, inspection_rule.priority) self.assertEqual(150, inspection_rule.priority)
inspection_rule = self.conn.baremetal.get_inspection_rule( inspection_rule = (
inspection_rule.id self.system_admin_cloud.baremetal.get_inspection_rule(
inspection_rule.id
)
) )
self.assertEqual(150, inspection_rule.priority) self.assertEqual(150, inspection_rule.priority)
@@ -160,19 +169,24 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
updated_actions = [ updated_actions = [
{ {
"op": "set-attribute", "op": "set-attribute",
"loop": [],
"args": ["/driver", "fake"], "args": ["/driver", "fake"],
} }
] ]
inspection_rule = self.conn.baremetal.patch_inspection_rule( inspection_rule = (
inspection_rule, self.system_admin_cloud.baremetal.patch_inspection_rule(
dict(path='/actions', op='add', value=updated_actions), inspection_rule,
dict(path='/actions', op='add', value=updated_actions),
)
) )
self.assertEqual(updated_actions, inspection_rule.actions) self.assertEqual(updated_actions, inspection_rule.actions)
self.assertEqual(description, inspection_rule.description) self.assertEqual(description, inspection_rule.description)
inspection_rule = self.conn.baremetal.get_inspection_rule( inspection_rule = (
inspection_rule.id self.system_admin_cloud.baremetal.get_inspection_rule(
inspection_rule.id
)
) )
self.assertEqual(updated_actions, inspection_rule.actions) self.assertEqual(updated_actions, inspection_rule.actions)
@@ -180,13 +194,15 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
uuid = "bbb45f41-d4bc-4307-8d1d-32f95ce1e920" uuid = "bbb45f41-d4bc-4307-8d1d-32f95ce1e920"
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.conn.baremetal.get_inspection_rule, self.system_admin_cloud.baremetal.get_inspection_rule,
uuid, uuid,
) )
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.conn.baremetal.delete_inspection_rule, self.system_admin_cloud.baremetal.delete_inspection_rule,
uuid, uuid,
ignore_missing=False, ignore_missing=False,
) )
self.assertIsNone(self.conn.baremetal.delete_inspection_rule(uuid)) self.assertIsNone(
self.system_admin_cloud.baremetal.delete_inspection_rule(uuid)
)

View File

@@ -473,28 +473,28 @@ class TestBareMetalVirtualMedia(base.BaseBaremetalTest):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.node = self.create_node(network_interface='noop') self.node = self.create_node(network_interface='noop')
self.device_type = "CDROM" self.device_type = 'cdrom'
self.image_url = "http://image" self.image_url = 'http://image'
def test_node_vmedia_attach_detach(self): def test_node_vmedia_attach_detach(self):
self.conn.baremetal.attach_vmedia_to_node( self.operator_cloud.baremetal.attach_vmedia_to_node(
self.node, self.device_type, self.image_url self.node, self.device_type, self.image_url
) )
res = self.conn.baremetal.detach_vmedia_from_node(self.node) res = self.operator_cloud.baremetal.detach_vmedia_from_node(self.node)
self.assertNone(res) self.assertIsNone(res)
def test_node_vmedia_negative(self): def test_node_vmedia_negative(self):
uuid = "5c9dcd04-2073-49bc-9618-99ae634d8971" uuid = "5c9dcd04-2073-49bc-9618-99ae634d8971"
self.assertRaises( self.assertRaises(
exceptions.ResourceNotFound, exceptions.ResourceNotFound,
self.conn.baremetal.attach_vmedia_to_node, self.operator_cloud.baremetal.attach_vmedia_to_node,
uuid, uuid,
self.device_type, self.device_type,
self.image_url, self.image_url,
) )
self.assertRaises( self.assertRaises(
exceptions.ResourceNotFound, exceptions.ResourceNotFound,
self.conn.baremetal.detach_vmedia_from_node, self.operator_cloud.baremetal.detach_vmedia_from_node,
uuid, uuid,
) )

View File

@@ -17,9 +17,6 @@ from openstack.tests.functional.baremetal import base
class TestBareMetalRunbook(base.BaseBaremetalTest): class TestBareMetalRunbook(base.BaseBaremetalTest):
min_microversion = '1.92' min_microversion = '1.92'
def setUp(self):
super().setUp()
def test_baremetal_runbook_create_get_delete(self): def test_baremetal_runbook_create_get_delete(self):
steps = [ steps = [
{ {
@@ -28,16 +25,18 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": { "args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}] "settings": [{"name": "LogicalProc", "value": "Enabled"}]
}, },
"priority": 150, "order": 150,
} }
] ]
runbook = self.create_runbook(name='CUSTOM_RUNBOOK', steps=steps) runbook = self.create_runbook(name='CUSTOM_RUNBOOK', steps=steps)
loaded = self.conn.baremetal.get_runbook(runbook.id) loaded = self.operator_cloud.baremetal.get_runbook(runbook.id)
self.assertEqual(loaded.id, runbook.id) self.assertEqual(loaded.id, runbook.id)
self.conn.baremetal.delete_runbook(runbook, ignore_missing=False) self.operator_cloud.baremetal.delete_runbook(
runbook, ignore_missing=False
)
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.conn.baremetal.get_runbook, self.operator_cloud.baremetal.get_runbook,
runbook.id, runbook.id,
) )
@@ -49,23 +48,27 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": { "args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}] "settings": [{"name": "LogicalProc", "value": "Enabled"}]
}, },
"priority": 150, "order": 150,
} }
] ]
runbook1 = self.create_runbook(name='CUSTOM_RUNBOOK1', steps=steps) runbook1 = self.create_runbook(name='CUSTOM_RUNBOOK1', steps=steps)
runbook2 = self.create_runbook(name='CUSTOM_RUNBOOK2', steps=steps) runbook2 = self.create_runbook(name='CUSTOM_RUNBOOK2', steps=steps)
runbooks = self.conn.baremetal.runbooks() runbooks = self.operator_cloud.baremetal.runbooks()
ids = [runbook.id for runbook in runbooks] ids = [runbook.id for runbook in runbooks]
self.assertIn(runbook1.id, ids) self.assertIn(runbook1.id, ids)
self.assertIn(runbook2.id, ids) self.assertIn(runbook2.id, ids)
runbooks_with_details = self.conn.baremetal.runbooks(details=True) runbooks_with_details = self.operator_cloud.baremetal.runbooks(
details=True
)
for runbook in runbooks_with_details: for runbook in runbooks_with_details:
self.assertIsNotNone(runbook.id) self.assertIsNotNone(runbook.id)
self.assertIsNotNone(runbook.name) self.assertIsNotNone(runbook.name)
runbook_with_fields = self.conn.baremetal.runbooks(fields=['uuid']) runbook_with_fields = self.operator_cloud.baremetal.runbooks(
fields=['uuid']
)
for runbook in runbook_with_fields: for runbook in runbook_with_fields:
self.assertIsNotNone(runbook.id) self.assertIsNotNone(runbook.id)
self.assertIsNone(runbook.name) self.assertIsNone(runbook.name)
@@ -78,19 +81,21 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": { "args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}] "settings": [{"name": "LogicalProc", "value": "Enabled"}]
}, },
"priority": 150, "order": 150,
} }
] ]
runbook = self.create_runbook(name='CUSTOM_RUNBOOK4', steps=steps) runbook = self.create_runbook(name='CUSTOM_RUNBOOK4', steps=steps)
self.assertFalse(runbook.extra) self.assertFalse(runbook.extra)
runbook.extra = {'answer': 42} runbook.extra = {'answer': 42}
runbook = self.conn.baremetal.update_runbook(runbook) runbook = self.operator_cloud.baremetal.update_runbook(runbook)
self.assertEqual({'answer': 42}, runbook.extra) self.assertEqual({'answer': 42}, runbook.extra)
runbook = self.conn.baremetal.get_runbook(runbook.id) runbook = self.operator_cloud.baremetal.get_runbook(runbook.id)
self.conn.baremetal.delete_runbook(runbook.id, ignore_missing=False) self.operator_cloud.baremetal.delete_runbook(
runbook.id, ignore_missing=False
)
def test_baremetal_runbook_update(self): def test_baremetal_runbook_update(self):
steps = [ steps = [
@@ -100,16 +105,16 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": { "args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}] "settings": [{"name": "LogicalProc", "value": "Enabled"}]
}, },
"priority": 150, "order": 150,
} }
] ]
runbook = self.create_runbook(name='CUSTOM_RUNBOOK4', steps=steps) runbook = self.create_runbook(name='CUSTOM_RUNBOOK4', steps=steps)
runbook.extra = {'answer': 42} runbook.extra = {'answer': 42}
runbook = self.conn.baremetal.update_runbook(runbook) runbook = self.operator_cloud.baremetal.update_runbook(runbook)
self.assertEqual({'answer': 42}, runbook.extra) self.assertEqual({'answer': 42}, runbook.extra)
runbook = self.conn.baremetal.get_runbook(runbook.id) runbook = self.operator_cloud.baremetal.get_runbook(runbook.id)
self.assertEqual({'answer': 42}, runbook.extra) self.assertEqual({'answer': 42}, runbook.extra)
def test_runbook_patch(self): def test_runbook_patch(self):
@@ -121,33 +126,33 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": { "args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}] "settings": [{"name": "LogicalProc", "value": "Enabled"}]
}, },
"priority": 150, "order": 150,
} }
] ]
runbook = self.create_runbook(name=name, steps=steps) runbook = self.create_runbook(name=name, steps=steps)
runbook = self.conn.baremetal.patch_runbook( runbook = self.operator_cloud.baremetal.patch_runbook(
runbook, dict(path='/extra/answer', op='add', value=42) runbook, dict(path='/extra/answer', op='add', value=42)
) )
self.assertEqual({'answer': 42}, runbook.extra) self.assertEqual({'answer': 42}, runbook.extra)
self.assertEqual(name, runbook.name) self.assertEqual(name, runbook.name)
runbook = self.conn.baremetal.get_runbook(runbook.id) runbook = self.operator_cloud.baremetal.get_runbook(runbook.id)
self.assertEqual({'answer': 42}, runbook.extra) self.assertEqual({'answer': 42}, runbook.extra)
def test_runbook_negative_non_existing(self): def test_runbook_negative_non_existing(self):
uuid = "b4145fbb-d4bc-0d1d-4382-e1e922f9035c" uuid = "b4145fbb-d4bc-0d1d-4382-e1e922f9035c"
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.conn.baremetal.get_runbook, self.operator_cloud.baremetal.get_runbook,
uuid, uuid,
) )
self.assertRaises( self.assertRaises(
exceptions.NotFoundException, exceptions.NotFoundException,
self.conn.baremetal.delete_runbook, self.operator_cloud.baremetal.delete_runbook,
uuid, uuid,
ignore_missing=False, ignore_missing=False,
) )
self.assertIsNone(self.conn.baremetal.delete_runbook(uuid)) self.assertIsNone(self.operator_cloud.baremetal.delete_runbook(uuid))
def test_runbook_rbac_project_scoped(self): def test_runbook_rbac_project_scoped(self):
steps = [ steps = [
@@ -157,20 +162,23 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": { "args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}] "settings": [{"name": "LogicalProc", "value": "Enabled"}]
}, },
"priority": 150, "order": 150,
} }
] ]
runbook = self.create_runbook( runbook = self.operator_cloud.baremetal.create_runbook(
name='CUSTOM_PROJ_AWESOME', name='CUSTOM_PROJ_AWESOME', steps=steps
steps=steps, )
owner=self.conn.current_project_id, self.addCleanup(
lambda: self.operator_cloud.baremetal.delete_runbook(
runbook.id, ignore_missing=True
)
) )
self.assertFalse(runbook.public) self.assertFalse(runbook.public)
self.assertEqual(self.conn.current_project_id, runbook.owner) self.assertEqual(self.operator_cloud.current_project_id, runbook.owner)
# is accessible to the owner # is accessible to the owner
loaded = self.conn.baremetal.get_runbook(runbook.id) loaded = self.operator_cloud.baremetal.get_runbook(runbook.id)
self.assertEqual(loaded.id, runbook.id) self.assertEqual(loaded.id, runbook.id)
def test_runbook_rbac_system_scoped(self): def test_runbook_rbac_system_scoped(self):
@@ -181,14 +189,22 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": { "args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}] "settings": [{"name": "LogicalProc", "value": "Enabled"}]
}, },
"priority": 150, "order": 150,
} }
] ]
runbook = self.create_runbook(name='CUSTOM_SYS_AWESOME', steps=steps) runbook = self.system_admin_cloud.baremetal.create_runbook(
name='CUSTOM_SYS_AWESOME', steps=steps
)
self.addCleanup(
lambda: self.system_admin_cloud.baremetal.delete_runbook(
runbook.id, ignore_missing=True
)
)
self.assertFalse(runbook.public) self.assertFalse(runbook.public)
self.assertIsNone(runbook.owner) self.assertIsNone(runbook.owner)
# is accessible to system-scoped users # is accessible to system-scoped users
loaded = self.conn.baremetal.get_runbook(runbook.id) loaded = self.system_admin_cloud.baremetal.get_runbook(runbook.id)
self.assertEqual(loaded.id, runbook.id) self.assertEqual(loaded.id, runbook.id)

View File

@@ -854,7 +854,7 @@ class TestCase(base.TestCase):
) )
def assert_no_calls(self): def assert_no_calls(self):
# TODO(mordred) For now, creating the adapter for self.conn is # TODO(mordred) For now, creating the adapter for connections is
# triggering catalog lookups. Make sure no_calls is only 2. # triggering catalog lookups. Make sure no_calls is only 2.
# When we can make that on-demand through a descriptor object, # When we can make that on-demand through a descriptor object,
# drop this to 0. # drop this to 0.

View File

@@ -30,8 +30,7 @@
# [1] https://review.opendev.org/c/openstack/masakari/+/949153 # [1] https://review.opendev.org/c/openstack/masakari/+/949153
- openstacksdk-functional-devstack-masakari: - openstacksdk-functional-devstack-masakari:
voting: false voting: false
- openstacksdk-functional-devstack-ironic: - openstacksdk-functional-devstack-ironic
voting: false
- osc-functional-devstack-tips: - osc-functional-devstack-tips:
voting: false voting: false
- ansible-collections-openstack-functional-devstack: - ansible-collections-openstack-functional-devstack:
@@ -42,3 +41,4 @@
- openstacksdk-functional-devstack - openstacksdk-functional-devstack
- openstacksdk-functional-devstack-networking - openstacksdk-functional-devstack-networking
- openstacksdk-functional-devstack-networking-ext - openstacksdk-functional-devstack-networking-ext
- openstacksdk-functional-devstack-ironic