]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Add stack delete test, and set stack to DELETE_COMPLETE when done.
authorChris Alfonso <calfonso@redhat.com>
Thu, 10 May 2012 18:04:16 +0000 (14:04 -0400)
committerChris Alfonso <calfonso@redhat.com>
Thu, 10 May 2012 18:04:16 +0000 (14:04 -0400)
heat/engine/parser.py
heat/tests/test_stacks.py
heat/tests/v1_1/fakes.py

index da53f0979d95e1cf6b6e4c9a60cd384b7593aaaf..a2828050843e3d8d815b7d56175e44e08b5326b3 100644 (file)
@@ -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()
index 40bfde2cb66c0993ecac38adc21cbf2ad4eb63d9..78d61d92542a237a11334f106c3db8c645a03ee5 100644 (file)
@@ -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__)
index 1820e8dac1c44451d32e53c4499ca8ed1c06b31c..daa40f1d74cb592fe2290a9e3ca778d2f94b6356 100644 (file)
@@ -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):