blob: ef742ef7bb378c906cb4cab4ec7384e8456bc493 [file] [log] [blame]
Thomas Herve0f70c282015-12-09 16:45:30 +01001# Licensed under the Apache License, Version 2.0 (the "License"); you may
2# not use this file except in compliance with the License. You may obtain
3# a copy of the License at
4#
5# http://www.apache.org/licenses/LICENSE-2.0
6#
7# Unless required by applicable law or agreed to in writing, software
8# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10# License for the specific language governing permissions and limitations
11# under the License.
12
Steve Baker6f68c362016-06-22 10:42:43 +120013import time
Ala Rezmerita706fce92016-06-30 10:31:54 +020014import uuid
Steve Baker6f68c362016-06-22 10:42:43 +120015
Thomas Herve0f70c282015-12-09 16:45:30 +010016from oslo_concurrency import processutils
17
18from heat_integrationtests.functional import functional_base
19
20
21class PurgeTest(functional_base.FunctionalTestsBase):
22 template = '''
23heat_template_version: 2014-10-16
24parameters:
25resources:
26 test_resource:
27 type: OS::Heat::TestResource
28'''
29
30 def test_purge(self):
31 stack_identifier = self.stack_create(template=self.template)
32 self._stack_delete(stack_identifier)
33 stacks = dict((stack.id, stack) for stack in
34 self.client.stacks.list(show_deleted=True))
35 self.assertIn(stack_identifier.split('/')[1], stacks)
Steve Baker6f68c362016-06-22 10:42:43 +120036 time.sleep(1)
Thomas Herve0f70c282015-12-09 16:45:30 +010037 cmd = "heat-manage purge_deleted 0"
38 processutils.execute(cmd, shell=True)
39 stacks = dict((stack.id, stack) for stack in
40 self.client.stacks.list(show_deleted=True))
41 self.assertNotIn(stack_identifier.split('/')[1], stacks)
42
43 # Test with tags
44 stack_identifier = self.stack_create(template=self.template,
45 tags="foo,bar")
46 self._stack_delete(stack_identifier)
Steve Baker6f68c362016-06-22 10:42:43 +120047 time.sleep(1)
Thomas Herve0f70c282015-12-09 16:45:30 +010048 cmd = "heat-manage purge_deleted 0"
49 processutils.execute(cmd, shell=True)
50 stacks = dict((stack.id, stack) for stack in
51 self.client.stacks.list(show_deleted=True))
52 self.assertNotIn(stack_identifier.split('/')[1], stacks)
Ala Rezmerita706fce92016-06-30 10:31:54 +020053
54 def test_purge_project_id(self):
55 stack_identifier = self.stack_create(template=self.template)
56 self._stack_delete(stack_identifier)
57 stacks = dict((stack.id, stack) for stack in
58 self.client.stacks.list(show_deleted=True))
59 self.assertIn(stack_identifier.split('/')[1], stacks)
60 fake_project_id = uuid.uuid4().hex
61 time.sleep(1)
62 cmd = "heat-manage purge_deleted -p %s 0" % fake_project_id
63 processutils.execute(cmd, shell=True)
64
65 stacks = dict((stack.id, stack) for stack in
66 self.client.stacks.list(show_deleted=True))
67 self.assertIn(stack_identifier.split('/')[1], stacks)
68
69 time.sleep(1)
70 cmd = "heat-manage purge_deleted 0"
71 processutils.execute(cmd, shell=True)
72 stacks = dict((stack.id, stack) for stack in
73 self.client.stacks.list(show_deleted=True))
74 self.assertNotIn(stack_identifier.split('/')[1], stacks)
75
76 # Test with tags
77 stack_identifier = self.stack_create(template=self.template,
78 tags="foo,bar")
79 self._stack_delete(stack_identifier)
80
81 time.sleep(1)
82 cmd = "heat-manage purge_deleted -p %s 0" % fake_project_id
83 processutils.execute(cmd, shell=True)
84 stacks = dict((stack.id, stack) for stack in
85 self.client.stacks.list(show_deleted=True))
86 self.assertIn(stack_identifier.split('/')[1], stacks)
87
88 time.sleep(1)
89 cmd = "heat-manage purge_deleted 0"
90 processutils.execute(cmd, shell=True)
91 stacks = dict((stack.id, stack) for stack in
92 self.client.stacks.list(show_deleted=True))
93 self.assertNotIn(stack_identifier.split('/')[1], stacks)