Purge deleted stacks for specific project
Add project-id argument to heat-manage purge_deleted command in order
to be able to hard delete DB entries for a specific project.
Change-Id: Ifffe5657a40ce97db9d059ff1516b8e1eb801132
Implements: bp heat-manage-purge-deleted-tenant
diff --git a/functional/test_purge.py b/functional/test_purge.py
index fd652a9..ef742ef 100644
--- a/functional/test_purge.py
+++ b/functional/test_purge.py
@@ -11,6 +11,7 @@
# under the License.
import time
+import uuid
from oslo_concurrency import processutils
@@ -49,3 +50,44 @@
stacks = dict((stack.id, stack) for stack in
self.client.stacks.list(show_deleted=True))
self.assertNotIn(stack_identifier.split('/')[1], stacks)
+
+ def test_purge_project_id(self):
+ stack_identifier = self.stack_create(template=self.template)
+ self._stack_delete(stack_identifier)
+ stacks = dict((stack.id, stack) for stack in
+ self.client.stacks.list(show_deleted=True))
+ self.assertIn(stack_identifier.split('/')[1], stacks)
+ fake_project_id = uuid.uuid4().hex
+ time.sleep(1)
+ cmd = "heat-manage purge_deleted -p %s 0" % fake_project_id
+ processutils.execute(cmd, shell=True)
+
+ stacks = dict((stack.id, stack) for stack in
+ self.client.stacks.list(show_deleted=True))
+ self.assertIn(stack_identifier.split('/')[1], stacks)
+
+ time.sleep(1)
+ cmd = "heat-manage purge_deleted 0"
+ processutils.execute(cmd, shell=True)
+ stacks = dict((stack.id, stack) for stack in
+ self.client.stacks.list(show_deleted=True))
+ self.assertNotIn(stack_identifier.split('/')[1], stacks)
+
+ # Test with tags
+ stack_identifier = self.stack_create(template=self.template,
+ tags="foo,bar")
+ self._stack_delete(stack_identifier)
+
+ time.sleep(1)
+ cmd = "heat-manage purge_deleted -p %s 0" % fake_project_id
+ processutils.execute(cmd, shell=True)
+ stacks = dict((stack.id, stack) for stack in
+ self.client.stacks.list(show_deleted=True))
+ self.assertIn(stack_identifier.split('/')[1], stacks)
+
+ time.sleep(1)
+ cmd = "heat-manage purge_deleted 0"
+ processutils.execute(cmd, shell=True)
+ stacks = dict((stack.id, stack) for stack in
+ self.client.stacks.list(show_deleted=True))
+ self.assertNotIn(stack_identifier.split('/')[1], stacks)