Merge "Delete created allocations"
diff --git a/ironic_tempest_plugin/tests/api/admin/base.py b/ironic_tempest_plugin/tests/api/admin/base.py
index 746eea6..8cc8aec 100644
--- a/ironic_tempest_plugin/tests/api/admin/base.py
+++ b/ironic_tempest_plugin/tests/api/admin/base.py
@@ -104,7 +104,7 @@
cls.power_timeout = CONF.baremetal.power_timeout
cls.unprovision_timeout = CONF.baremetal.unprovision_timeout
cls.created_objects = {}
- for resource in RESOURCE_TYPES:
+ for resource in RESOURCE_TYPES + ['allocation']:
cls.created_objects[resource] = set()
cls.deployed_nodes = set()
@@ -122,6 +122,14 @@
except lib_exc.BadRequest:
pass
+ # Delete allocations explicitly after unprovisioning instances, but
+ # before deleting nodes.
+ for allocation in cls.created_objects['allocation']:
+ try:
+ cls.client.delete_allocation(allocation)
+ except lib_exc.NotFound:
+ pass
+
for node in cls.created_objects['node']:
try:
cls.client.update_node(node, instance_uuid=None)
@@ -452,3 +460,15 @@
res=resource,
uuid=uuid)
self.assertEqual(expected_link, link)
+
+ @classmethod
+ @creates('allocation')
+ def create_allocation(cls, resource_class, **kwargs):
+ """Wrapper utility for creating test allocations.
+
+ :param resource_class: Resource class to request.
+ :param kwargs: Other fields to pass.
+ :return: A tuple with the server response and the created allocation.
+ """
+ resp, body = cls.client.create_allocation(resource_class, **kwargs)
+ return resp, body
diff --git a/ironic_tempest_plugin/tests/api/admin/test_allocations.py b/ironic_tempest_plugin/tests/api/admin/test_allocations.py
index a6e8e9c..b65c96f 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_allocations.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_allocations.py
@@ -46,7 +46,7 @@
@decorators.idempotent_id('9203ea28-3c61-4108-8498-22247b654ff6')
def test_create_show_allocation(self):
self.assertIsNone(self.node['allocation_uuid'])
- _, body = self.client.create_allocation(self.resource_class)
+ _, body = self.create_allocation(self.resource_class)
uuid = body['uuid']
self.assertTrue(uuid)
@@ -74,8 +74,8 @@
self.client.set_node_traits(node2['uuid'], ['CUSTOM_MEOW'])
self.provide_node(node2['uuid'])
- _, body = self.client.create_allocation(self.resource_class,
- traits=['CUSTOM_MEOW'])
+ _, body = self.create_allocation(self.resource_class,
+ traits=['CUSTOM_MEOW'])
uuid = body['uuid']
self.assertTrue(uuid)
@@ -97,8 +97,8 @@
name=node_name)
self.provide_node(node2['uuid'])
- _, body = self.client.create_allocation(self.resource_class,
- candidate_nodes=[node_name])
+ _, body = self.create_allocation(self.resource_class,
+ candidate_nodes=[node_name])
uuid = body['uuid']
self.assertTrue(uuid)
@@ -114,23 +114,21 @@
@decorators.idempotent_id('84eb3c21-4e16-4f33-9551-dce0f8689462')
def test_delete_allocation(self):
- _, body = self.client.create_allocation(self.resource_class)
+ _, body = self.create_allocation(self.resource_class)
self.client.delete_allocation(body['uuid'])
self.assertRaises(lib_exc.NotFound, self.client.show_allocation,
body['uuid'])
@decorators.idempotent_id('5e30452d-ee92-4342-82c1-5eea5e55c937')
def test_delete_allocation_by_name(self):
- _, body = self.client.create_allocation(self.resource_class,
- name='banana')
+ _, body = self.create_allocation(self.resource_class, name='banana')
self.client.delete_allocation('banana')
self.assertRaises(lib_exc.NotFound, self.client.show_allocation,
'banana')
@decorators.idempotent_id('fbbc13bc-86da-438b-af01-d1bc1bab57d6')
def test_show_by_name(self):
- _, body = self.client.create_allocation(self.resource_class,
- name='banana')
+ _, body = self.create_allocation(self.resource_class, name='banana')
_, loaded_body = self.client.show_allocation('banana')
# The allocation will likely have been processed by this time, so do
# not compare the whole body.
@@ -139,7 +137,7 @@
@decorators.idempotent_id('4ca123c4-160d-4d8d-a3f7-15feda812263')
def test_list_allocations(self):
- _, body = self.client.create_allocation(self.resource_class)
+ _, body = self.create_allocation(self.resource_class)
_, listing = self.client.list_allocations()
self.assertIn(body['uuid'],
@@ -152,8 +150,8 @@
@decorators.idempotent_id('092b7148-9ff0-4107-be57-2cfcd21eb5d7')
def test_list_allocations_by_state(self):
- _, body = self.client.create_allocation(self.resource_class)
- _, body2 = self.client.create_allocation(self.resource_class + 'foo2')
+ _, body = self.create_allocation(self.resource_class)
+ _, body2 = self.create_allocation(self.resource_class + 'foo2')
waiters.wait_for_allocation(self.client, body['uuid'])
waiters.wait_for_allocation(self.client, body2['uuid'],
@@ -177,7 +175,7 @@
@decorators.attr(type=['negative'])
@decorators.idempotent_id('bf7e1375-019a-466a-a294-9c1052827ada')
def test_create_allocation_resource_class_mismatch(self):
- _, body = self.client.create_allocation(self.resource_class + 'foo')
+ _, body = self.create_allocation(self.resource_class + 'foo')
_, body = waiters.wait_for_allocation(self.client, body['uuid'],
expect_error=True)
@@ -187,7 +185,7 @@
@decorators.attr(type=['negative'])
@decorators.idempotent_id('b4eeddee-ca34-44f9-908b-490b78b18486')
def test_create_allocation_traits_mismatch(self):
- _, body = self.client.create_allocation(
+ _, body = self.create_allocation(
self.resource_class, traits=['CUSTOM_DOES_NOT_EXIST'])
_, body = waiters.wait_for_allocation(self.client, body['uuid'],
@@ -201,7 +199,7 @@
_, node2 = self.create_node(self.chassis['uuid'],
resource_class=self.resource_class + 'alt')
# Mismatch between the resource class and the candidate node
- _, body = self.client.create_allocation(
+ _, body = self.create_allocation(
self.resource_class, candidate_nodes=[node2['uuid']])
_, body = waiters.wait_for_allocation(self.client, body['uuid'],