From: Chris Alfonso Date: Thu, 10 May 2012 18:04:16 +0000 (-0400) Subject: Add stack delete test, and set stack to DELETE_COMPLETE when done. X-Git-Tag: 2014.1~1855 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=74f9579f8988287bf1d96f81f0862236c5535286;p=openstack-build%2Fheat-build.git Add stack delete test, and set stack to DELETE_COMPLETE when done. --- diff --git a/heat/engine/parser.py b/heat/engine/parser.py index da53f097..a2828050 100644 --- a/heat/engine/parser.py +++ b/heat/engine/parser.py @@ -248,6 +248,7 @@ class Stack(object): logger.error('delete: %s' % str(ex)) db_api.stack_delete(None, self.name) + self.status_set(self.DELETE_COMPLETE) def delete(self): pool = eventlet.GreenPool() diff --git a/heat/tests/test_stacks.py b/heat/tests/test_stacks.py index 40bfde2c..78d61d92 100644 --- a/heat/tests/test_stacks.py +++ b/heat/tests/test_stacks.py @@ -6,7 +6,6 @@ import unittest import mox import json import sqlalchemy - from nose.plugins.attrib import attr from nose import with_setup @@ -63,7 +62,63 @@ class instancesTest(unittest.TestCase): assert(stack.resources['WebServer'] != None) assert(stack.resources['WebServer'].instance_id > 0) assert(stack.resources['WebServer'].ipaddress != '0.0.0.0') - + + def test_wordpress_single_instance_stack_delete(self): + f = open('../../templates/WordPress_Single_Instance_gold.template') + t = json.loads(f.read()) + f.close() + + params = {} + parameters = {} + params['KeyStoneCreds'] = None + t['Parameters']['KeyName']['Value'] = 'test' + stack = parser.Stack('test_stack', t, 0, params) + self.m.StubOutWithMock(instances.Instance, 'nova') + instances.Instance.nova().AndReturn(self.fc) + instances.Instance.nova().AndReturn(self.fc) + instances.Instance.nova().AndReturn(self.fc) + instances.Instance.nova().AndReturn(self.fc) + instances.Instance.nova().AndReturn(self.fc) + + instance = stack.resources['WebServer'] + instance.itype_oflavor['m1.large'] = 'm1.large' + instance.stack.resolve_attributes(instance.t) + instance.stack.resolve_joins(instance.t) + instance.stack.resolve_base64(instance.t) + + server_userdata = instance._build_userdata(\ + instance.t['Properties']['UserData']) + self.m.StubOutWithMock(self.fc.servers, 'create') + self.fc.servers.create(image=744, flavor=3, key_name='test',\ + name='WebServer', security_groups=None,\ + userdata=server_userdata).\ + AndReturn(self.fc.servers.list()[2]) + self.m.ReplayAll() + + rt = {} + rt['template'] = stack.t + rt['stack_name'] = stack.name + new_rt = db_api.raw_template_create(None, rt) + + s = {} + s['name'] = stack.name + s['raw_template_id'] = new_rt.id + new_s = db_api.stack_create(None, s) + stack.id = new_s.id + + pt = {} + pt['template'] = stack.t + pt['raw_template_id'] = new_rt.id + new_pt = db_api.parsed_template_create(None, pt) + + stack.create_blocking() + assert(stack.resources['WebServer'] != None) + assert(stack.resources['WebServer'].instance_id > 0) + + stack.delete_blocking() + assert(stack.resources['WebServer'].state == 'DELETE_COMPLETE') + assert(stack.t['stack_status'] == 'DELETE_COMPLETE') + # allows testing of the test directly, shown below if __name__ == '__main__': sys.argv.append(__file__) diff --git a/heat/tests/v1_1/fakes.py b/heat/tests/v1_1/fakes.py index 1820e8da..daa40f1d 100644 --- a/heat/tests/v1_1/fakes.py +++ b/heat/tests/v1_1/fakes.py @@ -270,10 +270,48 @@ class FakeHTTPClient(base_client.HTTPClient): def delete_servers_1234_metadata_key2(self, **kw): return (204, None) - def post_servers_1234_metadata(self, **kw): + def delete_servers_5678(self, **kw): + return (202, None) + + def delete_servers_5678_metadata_test_key(self, **kw): + return (204, None) + + def delete_servers_5678_metadata_key1(self, **kw): + return (204, None) + + def delete_servers_5678_metadata_key2(self, **kw): + return (204, None) + + def get_servers_9999(self, **kw): + r = {'server': self.get_servers_detail()[1]['servers'][0]} + return (200, r) + + def get_servers_5678(self, **kw): + r = {'server': self.get_servers_detail()[1]['servers'][1]} + return (200, r) + + def put_servers_9999(self, body, **kw): + assert body.keys() == ['server'] + fakes.assert_has_keys(body['server'], optional=['name', 'adminPass']) + return (204, None) + + def delete_servers_9999(self, **kw): + return (202, None) + + def delete_servers_9999_metadata_test_key(self, **kw): + return (204, None) + + def delete_servers_9999_metadata_key1(self, **kw): + return (204, None) + + def delete_servers_9999_metadata_key2(self, **kw): + return (204, None) + + + def post_servers_9999_metadata(self, **kw): return (204, {'metadata': {'test_key': 'test_value'}}) - def get_servers_1234_diagnostics(self, **kw): + def get_servers_9999_diagnostics(self, **kw): return (200, 'Fake diagnostics') def get_servers_1234_actions(self, **kw):