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:
@@ -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'
|
||||
|
||||
|
@@ -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
|
||||
)
|
||||
)
|
||||
|
@@ -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:
|
||||
|
@@ -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)
|
||||
|
@@ -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 = (
|
||||
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 = (
|
||||
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,14 +131,18 @@ class TestBareMetalDeployTemplate(base.BaseBaremetalTest):
|
||||
)
|
||||
deploy_template.extra = {'answer': 42}
|
||||
|
||||
deploy_template = self.operator_cloud.baremetal.update_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 = (
|
||||
self.system_admin_cloud.baremetal.get_deploy_template(
|
||||
deploy_template.id
|
||||
)
|
||||
)
|
||||
self.assertEqual({'answer': 42}, deploy_template.extra)
|
||||
|
||||
def test_deploy_template_patch(self):
|
||||
@@ -153,30 +158,34 @@ 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 = (
|
||||
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 = (
|
||||
self.system_admin_cloud.baremetal.get_deploy_template(
|
||||
deploy_template.id
|
||||
)
|
||||
)
|
||||
self.assertEqual({'answer': 42}, deploy_template.extra)
|
||||
|
||||
def test_deploy_template_negative_non_existing(self):
|
||||
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)
|
||||
)
|
||||
|
@@ -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(
|
||||
|
@@ -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,42 +99,49 @@ 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 = (
|
||||
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 = (
|
||||
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 = (
|
||||
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 = (
|
||||
self.system_admin_cloud.baremetal.get_inspection_rule(
|
||||
inspection_rule.id
|
||||
)
|
||||
)
|
||||
self.assertEqual(150, inspection_rule.priority)
|
||||
|
||||
def test_inspection_rule_patch(self):
|
||||
@@ -160,33 +169,40 @@ class TestBareMetalInspectionRule(base.BaseBaremetalTest):
|
||||
updated_actions = [
|
||||
{
|
||||
"op": "set-attribute",
|
||||
"loop": [],
|
||||
"args": ["/driver", "fake"],
|
||||
}
|
||||
]
|
||||
|
||||
inspection_rule = self.conn.baremetal.patch_inspection_rule(
|
||||
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 = (
|
||||
self.system_admin_cloud.baremetal.get_inspection_rule(
|
||||
inspection_rule.id
|
||||
)
|
||||
)
|
||||
self.assertEqual(updated_actions, inspection_rule.actions)
|
||||
|
||||
def test_inspection_rule_negative_non_existing(self):
|
||||
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)
|
||||
)
|
||||
|
@@ -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,
|
||||
)
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user