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
class InspectionRule(_common.Resource):
class InspectionRule(resource.Resource):
resources_key = 'inspection_rules'
base_path = '/inspection_rules'

View File

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

View File

@@ -19,15 +19,15 @@ class TestBareMetalChassis(base.BaseBaremetalTest):
def test_chassis_create_get_delete(self):
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.operator_cloud.baremetal.delete_chassis(
self.system_admin_cloud.baremetal.delete_chassis(
chassis, ignore_missing=False
)
self.assertRaises(
exceptions.NotFoundException,
self.operator_cloud.baremetal.get_chassis,
self.system_admin_cloud.baremetal.get_chassis,
chassis.id,
)
@@ -35,44 +35,46 @@ class TestBareMetalChassis(base.BaseBaremetalTest):
chassis = self.create_chassis()
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)
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)
def test_chassis_patch(self):
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)
)
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)
def test_chassis_negative_non_existing(self):
uuid = "5c9dcd04-2073-49bc-9618-99ae634d8971"
self.assertRaises(
exceptions.NotFoundException,
self.operator_cloud.baremetal.get_chassis,
self.system_admin_cloud.baremetal.get_chassis,
uuid,
)
self.assertRaises(
exceptions.NotFoundException,
self.operator_cloud.baremetal.find_chassis,
self.system_admin_cloud.baremetal.find_chassis,
uuid,
ignore_missing=False,
)
self.assertRaises(
exceptions.NotFoundException,
self.operator_cloud.baremetal.delete_chassis,
self.system_admin_cloud.baremetal.delete_chassis,
uuid,
ignore_missing=False,
)
self.assertIsNone(self.operator_cloud.baremetal.find_chassis(uuid))
self.assertIsNone(self.operator_cloud.baremetal.delete_chassis(uuid))
self.assertIsNone(self.system_admin_cloud.baremetal.find_chassis(uuid))
self.assertIsNone(
self.system_admin_cloud.baremetal.delete_chassis(uuid)
)
class TestBareMetalChassisFields(base.BaseBaremetalTest):
@@ -80,7 +82,7 @@ class TestBareMetalChassisFields(base.BaseBaremetalTest):
def test_chassis_fields(self):
self.create_chassis(description='something')
result = self.operator_cloud.baremetal.chassis(
result = self.system_admin_cloud.baremetal.chassis(
fields=['uuid', 'extra']
)
for ch in result:

View File

@@ -19,10 +19,10 @@ class TestBareMetalConductor(base.BaseBaremetalTest):
def test_list_get_conductor(self):
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]
self.assertIn(node.conductor, hostname_list)
conductor1 = self.operator_cloud.baremetal.get_conductor(
conductor1 = self.system_admin_cloud.baremetal.get_conductor(
node.conductor
)
self.assertIsNotNone(conductor1.conductor_group)

View File

@@ -17,9 +17,6 @@ from openstack.tests.functional.baremetal import base
class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
min_microversion = '1.55'
def setUp(self):
super().setUp()
def test_baremetal_deploy_create_get_delete(self):
steps = [
{
@@ -34,16 +31,16 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
deploy_template = self.create_deploy_template(
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
)
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
)
self.assertRaises(
exceptions.NotFoundException,
self.operator_cloud.baremetal.get_deploy_template,
self.system_admin_cloud.baremetal.get_deploy_template,
deploy_template.id,
)
@@ -65,20 +62,20 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
deploy_template2 = self.create_deploy_template(
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]
self.assertIn(deploy_template1.id, ids)
self.assertIn(deploy_template2.id, ids)
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:
self.assertIsNotNone(dp.id)
self.assertIsNotNone(dp.name)
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:
self.assertIsNotNone(dp.id)
@@ -101,16 +98,20 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
self.assertFalse(deploy_template.extra)
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)
deploy_template = self.operator_cloud.baremetal.get_deploy_template(
deploy_template.id
deploy_template = (
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
)
@@ -130,13 +131,17 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
)
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)
deploy_template = self.operator_cloud.baremetal.get_deploy_template(
deploy_template.id
deploy_template = (
self.system_admin_cloud.baremetal.get_deploy_template(
deploy_template.id
)
)
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.operator_cloud.baremetal.patch_deploy_template(
deploy_template, dict(path='/extra/answer', op='add', value=42)
deploy_template = (
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(name, deploy_template.name)
deploy_template = self.operator_cloud.baremetal.get_deploy_template(
deploy_template.id
deploy_template = (
self.system_admin_cloud.baremetal.get_deploy_template(
deploy_template.id
)
)
self.assertEqual({'answer': 42}, deploy_template.extra)
@@ -168,15 +177,15 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
uuid = "bbb45f41-d4bc-4307-8d1d-32f95ce1e920"
self.assertRaises(
exceptions.NotFoundException,
self.operator_cloud.baremetal.get_deploy_template,
self.system_admin_cloud.baremetal.get_deploy_template,
uuid,
)
self.assertRaises(
exceptions.NotFoundException,
self.operator_cloud.baremetal.delete_deploy_template,
self.system_admin_cloud.baremetal.delete_deploy_template,
uuid,
ignore_missing=False,
)
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):
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.assertNotEqual([], driver.hosts)
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])
def test_driver_negative_non_existing(self):
self.assertRaises(
exceptions.NotFoundException,
self.operator_cloud.baremetal.get_driver,
self.system_admin_cloud.baremetal.get_driver,
'not-a-driver',
)
@@ -37,7 +37,7 @@ class TestBareMetalDriverDetails(base.BaseBaremetalTest):
min_microversion = '1.30'
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)
for iface in ('boot', 'deploy', 'management', 'power'):
self.assertIn(
@@ -49,7 +49,7 @@ class TestBareMetalDriverDetails(base.BaseBaremetalTest):
self.assertNotEqual([], driver.hosts)
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]
for iface in ('boot', 'deploy', 'management', 'power'):
self.assertIn(

View File

@@ -33,14 +33,16 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
priority=100,
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.conn.baremetal.delete_inspection_rule(
self.system_admin_cloud.baremetal.delete_inspection_rule(
inspection_rule, ignore_missing=False
)
self.assertRaises(
exceptions.NotFoundException,
self.conn.baremetal.get_inspection_rule,
self.system_admin_cloud.baremetal.get_inspection_rule,
inspection_rule.id,
)
@@ -64,20 +66,20 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
conditions=conditions,
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]
self.assertIn(inspection_rule1.id, ids)
self.assertIn(inspection_rule2.id, ids)
inspection_rules_with_details = self.conn.baremetal.inspection_rules(
details=True
inspection_rules_with_details = (
self.system_admin_cloud.baremetal.inspection_rules(details=True)
)
for rule in inspection_rules_with_details:
self.assertIsNotNone(rule.id)
self.assertIsNotNone(rule.description)
inspection_rule_with_fields = self.conn.baremetal.inspection_rules(
fields=['uuid']
inspection_rule_with_fields = (
self.system_admin_cloud.baremetal.inspection_rules(fields=['uuid'])
)
for rule in inspection_rule_with_fields:
self.assertIsNotNone(rule.id)
@@ -97,41 +99,48 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
conditions=conditions,
description="Test inspection rule",
)
self.assertFalse(inspection_rule.extra)
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(
'Updated inspection rule', inspection_rule.description
)
inspection_rule = self.conn.baremetal.get_inspection_rule(
inspection_rule.id
inspection_rule = (
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
)
def test_baremetal_inspection_rule_update(self):
actions = [{"op": "set-attribute", "args": ["/driver", "idrac"]}]
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(
actions=actions, conditions=conditions, phase="main", priority=100
)
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)
inspection_rule = self.conn.baremetal.get_inspection_rule(
inspection_rule.id
inspection_rule = (
self.system_admin_cloud.baremetal.get_inspection_rule(
inspection_rule.id
)
)
self.assertEqual(150, inspection_rule.priority)
@@ -160,19 +169,24 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
updated_actions = [
{
"op": "set-attribute",
"loop": [],
"args": ["/driver", "fake"],
}
]
inspection_rule = self.conn.baremetal.patch_inspection_rule(
inspection_rule,
dict(path='/actions', op='add', value=updated_actions),
inspection_rule = (
self.system_admin_cloud.baremetal.patch_inspection_rule(
inspection_rule,
dict(path='/actions', op='add', value=updated_actions),
)
)
self.assertEqual(updated_actions, inspection_rule.actions)
self.assertEqual(description, inspection_rule.description)
inspection_rule = self.conn.baremetal.get_inspection_rule(
inspection_rule.id
inspection_rule = (
self.system_admin_cloud.baremetal.get_inspection_rule(
inspection_rule.id
)
)
self.assertEqual(updated_actions, inspection_rule.actions)
@@ -180,13 +194,15 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
uuid = "bbb45f41-d4bc-4307-8d1d-32f95ce1e920"
self.assertRaises(
exceptions.NotFoundException,
self.conn.baremetal.get_inspection_rule,
self.system_admin_cloud.baremetal.get_inspection_rule,
uuid,
)
self.assertRaises(
exceptions.NotFoundException,
self.conn.baremetal.delete_inspection_rule,
self.system_admin_cloud.baremetal.delete_inspection_rule,
uuid,
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):
super().setUp()
self.node = self.create_node(network_interface='noop')
self.device_type = "CDROM"
self.image_url = "http://image"
self.device_type = 'cdrom'
self.image_url = 'http://image'
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
)
res = self.conn.baremetal.detach_vmedia_from_node(self.node)
self.assertNone(res)
res = self.operator_cloud.baremetal.detach_vmedia_from_node(self.node)
self.assertIsNone(res)
def test_node_vmedia_negative(self):
uuid = "5c9dcd04-2073-49bc-9618-99ae634d8971"
self.assertRaises(
exceptions.ResourceNotFound,
self.conn.baremetal.attach_vmedia_to_node,
self.operator_cloud.baremetal.attach_vmedia_to_node,
uuid,
self.device_type,
self.image_url,
)
self.assertRaises(
exceptions.ResourceNotFound,
self.conn.baremetal.detach_vmedia_from_node,
self.operator_cloud.baremetal.detach_vmedia_from_node,
uuid,
)

View File

@@ -17,9 +17,6 @@ from openstack.tests.functional.baremetal import base
class TestBareMetalRunbook(base.BaseBaremetalTest):
min_microversion = '1.92'
def setUp(self):
super().setUp()
def test_baremetal_runbook_create_get_delete(self):
steps = [
{
@@ -28,16 +25,18 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}]
},
"priority": 150,
"order": 150,
}
]
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.conn.baremetal.delete_runbook(runbook, ignore_missing=False)
self.operator_cloud.baremetal.delete_runbook(
runbook, ignore_missing=False
)
self.assertRaises(
exceptions.NotFoundException,
self.conn.baremetal.get_runbook,
self.operator_cloud.baremetal.get_runbook,
runbook.id,
)
@@ -49,23 +48,27 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}]
},
"priority": 150,
"order": 150,
}
]
runbook1 = self.create_runbook(name='CUSTOM_RUNBOOK1', 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]
self.assertIn(runbook1.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:
self.assertIsNotNone(runbook.id)
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:
self.assertIsNotNone(runbook.id)
self.assertIsNone(runbook.name)
@@ -78,19 +81,21 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}]
},
"priority": 150,
"order": 150,
}
]
runbook = self.create_runbook(name='CUSTOM_RUNBOOK4', steps=steps)
self.assertFalse(runbook.extra)
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)
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):
steps = [
@@ -100,16 +105,16 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}]
},
"priority": 150,
"order": 150,
}
]
runbook = self.create_runbook(name='CUSTOM_RUNBOOK4', steps=steps)
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)
runbook = self.conn.baremetal.get_runbook(runbook.id)
runbook = self.operator_cloud.baremetal.get_runbook(runbook.id)
self.assertEqual({'answer': 42}, runbook.extra)
def test_runbook_patch(self):
@@ -121,33 +126,33 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}]
},
"priority": 150,
"order": 150,
}
]
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)
)
self.assertEqual({'answer': 42}, runbook.extra)
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)
def test_runbook_negative_non_existing(self):
uuid = "b4145fbb-d4bc-0d1d-4382-e1e922f9035c"
self.assertRaises(
exceptions.NotFoundException,
self.conn.baremetal.get_runbook,
self.operator_cloud.baremetal.get_runbook,
uuid,
)
self.assertRaises(
exceptions.NotFoundException,
self.conn.baremetal.delete_runbook,
self.operator_cloud.baremetal.delete_runbook,
uuid,
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):
steps = [
@@ -157,20 +162,23 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": {
"settings": [{"name": "LogicalProc", "value": "Enabled"}]
},
"priority": 150,
"order": 150,
}
]
runbook = self.create_runbook(
name='CUSTOM_PROJ_AWESOME',
steps=steps,
owner=self.conn.current_project_id,
runbook = self.operator_cloud.baremetal.create_runbook(
name='CUSTOM_PROJ_AWESOME', steps=steps
)
self.addCleanup(
lambda: self.operator_cloud.baremetal.delete_runbook(
runbook.id, ignore_missing=True
)
)
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
loaded = self.conn.baremetal.get_runbook(runbook.id)
loaded = self.operator_cloud.baremetal.get_runbook(runbook.id)
self.assertEqual(loaded.id, runbook.id)
def test_runbook_rbac_system_scoped(self):
@@ -181,14 +189,22 @@ class TestBareMetalRunbook(base.BaseBaremetalTest):
"args": {
"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.assertIsNone(runbook.owner)
# 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)

View File

@@ -854,7 +854,7 @@ class TestCase(base.TestCase):
)
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.
# When we can make that on-demand through a descriptor object,
# drop this to 0.

View File

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