]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
heat tests : FuncUtils use heat_client in create_stack
authorSteven Hardy <shardy@redhat.com>
Wed, 5 Sep 2012 09:47:46 +0000 (10:47 +0100)
committerSteven Hardy <shardy@redhat.com>
Wed, 5 Sep 2012 12:37:41 +0000 (13:37 +0100)
Use heat_client (not subprocess) to create the stack,
as this will allow easier testing of the boto_client
library and easier checking of create_stack result

Change-Id: Ic3f710ec2e467bcd2fde1a2451709d444b89aca0
Signed-off-by: Steven Hardy <shardy@redhat.com>
heat/tests/functional/util.py

index deba33f8243a6ff079a60fdf5531a89172cd1f1a..fd2b82a36f8c1d55336dcab49dcb27dd3de1153e 100644 (file)
@@ -144,21 +144,35 @@ class FuncUtils:
 
         keyname = self.novaclient.keypairs.list().pop().name
 
-        subprocess.call(['heat', '-d', 'create', self.stackname,
-            '--template-file=' + self.basepath +
-            '/templates/' + template_file,
-            '--parameters=InstanceType=m1.xlarge;DBUsername=' +
-            self.dbusername +
-            ';DBPassword=' + os.environ['OS_PASSWORD'] +
-            ';KeyName=' + keyname +
-            ';LinuxDistribution=' + distribution])
-
         self.heatclient = heat_client.get_client('0.0.0.0', 8000,
             self.creds['username'], self.creds['password'],
             self.creds['tenant'], self.creds['auth_url'],
             self.creds['strategy'], None, None, False)
 
+        assert self.heatclient
+
+        # Dummy up the optparse.Values we get from CLI args in bin/heat
+        stack_paramstr = ';'.join(['InstanceType=m1.xlarge',
+                         'DBUsername=' + self.dbusername,
+                         'DBPassword=' + os.environ['OS_PASSWORD'],
+                         'KeyName=' + keyname,
+                         'LinuxDistribution=' + distribution])
+        template_params = optparse.Values({'parameters': stack_paramstr})
+
+        # Format parameters and create the stack
         parameters = {}
+        parameters['StackName'] = self.stackname
+        template_path = self.basepath + '/templates/' + template_file
+        parameters['TemplateBody'] = open(template_path).read()
+        parameters.update(self.heatclient.format_parameters(template_params))
+        result = self.heatclient.create_stack(**parameters)
+
+        # Check result looks OK
+        root = etree.fromstring(result)
+        create_list = root.xpath('/CreateStackResponse/CreateStackResult' +
+                                 '[StackName="' + self.stackname + '"]')
+        assert create_list
+        assert len(create_list) == 1
 
         alist = None
         tries = 0