]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
tests : convert most remaining tests to inline templates
authorSteven Hardy <shardy@redhat.com>
Tue, 7 May 2013 15:43:40 +0000 (16:43 +0100)
committerSteven Hardy <shardy@redhat.com>
Wed, 8 May 2013 07:32:16 +0000 (08:32 +0100)
Convert all except the test_template_format test to minimal
inline templates

Change-Id: I73f263d3d7d24eaa2c20eed171b7486cfa873f9a

heat/tests/test_nokey.py
heat/tests/test_quantum.py
heat/tests/test_s3.py
heat/tests/test_swift.py
heat/tests/test_volume.py

index 24321939a2cb752fa749729fea23bb5bb4345174..cc90891c4902e113f3d74adf18d1fac303d5e9f1 100644 (file)
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-
-import os
-
 from heat.tests.v1_1 import fakes
 from heat.engine.resources import instance as instances
 from heat.common import template_format
-from heat.engine import parser
 from heat.engine import scheduler
 from heat.openstack.common import uuidutils
 from heat.tests.common import HeatTestCase
 from heat.tests.utils import setup_dummy_db
+from heat.tests.utils import parse_stack
+
+
+nokey_template = '''
+{
+  "AWSTemplateFormatVersion" : "2010-09-09",
+  "Description" : "NoKey Test",
+  "Parameters" : {},
+  "Resources" : {
+    "WebServer": {
+      "Type": "AWS::EC2::Instance",
+      "Properties": {
+        "ImageId" : "foo",
+        "InstanceType"   : "m1.large",
+        "UserData"       : "some data"
+      }
+    }
+  }
+}
+'''
 
 
 class nokeyTest(HeatTestCase):
     def setUp(self):
         super(nokeyTest, self).setUp()
         self.fc = fakes.FakeClient()
-        self.path = os.path.dirname(os.path.realpath(__file__)).\
-            replace('heat/tests', 'templates')
         setup_dummy_db()
 
     def test_nokey_create(self):
-        f = open("%s/WordPress_NoKey.template" % self.path)
-        t = template_format.parse(f.read())
-        f.close()
 
         stack_name = 'instance_create_test_nokey_stack'
-        template = parser.Template(t)
-        params = parser.Parameters(stack_name, template, {})
-        stack = parser.Stack(None, stack_name, template, params,
-                             stack_id=uuidutils.generate_uuid())
+        t = template_format.parse(nokey_template)
+        stack = parse_stack(t, stack_name=stack_name,
+                            stack_id=uuidutils.generate_uuid())
 
         t['Resources']['WebServer']['Properties']['ImageId'] = 'CentOS 5.2'
         t['Resources']['WebServer']['Properties']['InstanceType'] = \
index 694e17184bae70c8554ed0bd34b474c455c819f8..f83ab6ddca1d18bfbc03809c4a2a45ac37b531ac 100644 (file)
 #    under the License.
 
 
-import os
-
 from testtools import skipIf
 
-from heat.common import context
 from heat.common import exception
 from heat.common import template_format
 from heat.engine import properties
@@ -26,9 +23,98 @@ from heat.engine.resources.quantum import net
 from heat.engine.resources.quantum import floatingip
 from heat.engine.resources.quantum import port
 from heat.engine.resources.quantum.quantum import QuantumResource as qr
-from heat.engine import parser
 from heat.tests.common import HeatTestCase
 from heat.tests.utils import setup_dummy_db
+from heat.tests.utils import parse_stack
+
+quantum_template = '''
+{
+  "AWSTemplateFormatVersion" : "2010-09-09",
+  "Description" : "Template to test Quantum resources",
+  "Parameters" : {},
+  "Resources" : {
+    "network": {
+      "Type": "OS::Quantum::Net",
+      "Properties": {
+        "name": "the_network"
+      }
+    },
+    "unnamed_network": {
+      "Type": "OS::Quantum::Net"
+    },
+    "admin_down_network": {
+      "Type": "OS::Quantum::Net",
+      "Properties": {
+        "admin_state_up": false
+      }
+    },
+    "subnet": {
+      "Type": "OS::Quantum::Subnet",
+      "Properties": {
+        "network_id": { "Ref" : "network" },
+        "ip_version": 4,
+        "cidr": "10.0.3.0/24",
+        "allocation_pools": [{"start": "10.0.3.20", "end": "10.0.3.150"}]
+      }
+    },
+    "port": {
+      "Type": "OS::Quantum::Port",
+      "Properties": {
+        "device_id": "d6b4d3a5-c700-476f-b609-1493dd9dadc0",
+        "name": "port1",
+        "network_id": { "Ref" : "network" },
+        "fixed_ips": [{
+          "subnet_id": { "Ref" : "subnet" },
+          "ip_address": "10.0.3.21"
+        }]
+      }
+    },
+    "router": {
+      "Type": "OS::Quantum::Router"
+    },
+    "router_interface": {
+      "Type": "OS::Quantum::RouterInterface",
+      "Properties": {
+        "router_id": { "Ref" : "router" },
+        "subnet_id": { "Ref" : "subnet" }
+      }
+    }
+  }
+}
+'''
+
+quantum_floating_template = '''
+{
+  "AWSTemplateFormatVersion" : "2010-09-09",
+  "Description" : "Template to test Quantum resources",
+  "Parameters" : {},
+  "Resources" : {
+    "port_floating": {
+      "Type": "OS::Quantum::Port",
+      "Properties": {
+        "network_id": "xyz1234",
+        "fixed_ips": [{
+          "subnet_id": "12.12.12.0",
+          "ip_address": "10.0.0.10"
+        }]
+      }
+    },
+    "floating_ip": {
+      "Type": "OS::Quantum::FloatingIP",
+      "Properties": {
+        "floating_network_id": "abcd1234",
+      }
+    },
+    "floating_ip_assoc": {
+      "Type": "OS::Quantum::FloatingIPAssociation",
+      "Properties": {
+        "floatingip_id": { "Ref" : "floating_ip" },
+        "port_id": { "Ref" : "port_floating" }
+      }
+    }
+  }
+}
+'''
 
 
 class FakeQuantum():
@@ -101,28 +187,6 @@ class QuantumTest(HeatTestCase):
         self.m.StubOutWithMock(net.Net, 'quantum')
         setup_dummy_db()
 
-    def load_template(self):
-        self.path = os.path.dirname(os.path.realpath(__file__)).\
-            replace('heat/tests', 'templates')
-        f = open("%s/Quantum.template" % self.path)
-        t = template_format.parse(f.read())
-        f.close()
-        return t
-
-    def parse_stack(self, t):
-        ctx = context.RequestContext.from_dict({
-            'tenant': 'test_tenant',
-            'username': 'test_username',
-            'password': 'password',
-            'auth_url': 'http://localhost:5000/v2.0'})
-        stack_name = 'test_stack'
-        tmpl = parser.Template(t)
-        params = parser.Parameters(stack_name, tmpl,
-                                   {'external_network': 'abcd1234'})
-        stack = parser.Stack(ctx, stack_name, tmpl, params)
-
-        return stack
-
     def create_net(self, t, stack, resource_name):
         resource = net.Net('test_net', t['Resources'][resource_name], stack)
         scheduler.TaskRunner(resource.create)()
@@ -170,8 +234,8 @@ class QuantumTest(HeatTestCase):
         net.Net.quantum().MultipleTimes().AndReturn(fq)
 
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(quantum_template)
+        stack = parse_stack(t)
         resource = self.create_net(t, stack, 'network')
 
         resource.validate()
@@ -203,30 +267,6 @@ class QuantumFloatingIPTest(HeatTestCase):
         self.m.StubOutWithMock(port.Port, 'quantum')
         setup_dummy_db()
 
-    def load_template(self, name='Quantum'):
-        self.path = os.path.dirname(os.path.realpath(__file__)).\
-            replace('heat/tests', 'templates')
-        f = open("%s/%s.template" % (self.path, name))
-        t = template_format.parse(f.read())
-        f.close()
-        return t
-
-    def parse_stack(self, t):
-        ctx = context.RequestContext.from_dict({
-            'tenant': 'test_tenant',
-            'username': 'test_username',
-            'password': 'password',
-            'auth_url': 'http://localhost:5000/v2.0'})
-        stack_name = 'test_stack'
-        tmpl = parser.Template(t)
-        params = parser.Parameters(stack_name, tmpl,
-                                   {'external_network': 'abcd1234',
-                                    'internal_network': 'xyz1234',
-                                    'internal_subnet': '12.12.12.0'})
-        stack = parser.Stack(ctx, stack_name, tmpl, params)
-
-        return stack
-
     def test_floating_ip(self):
         if net.clients.quantumclient is None:
             raise SkipTest
@@ -236,8 +276,8 @@ class QuantumFloatingIPTest(HeatTestCase):
 
         self.m.ReplayAll()
 
-        t = self.load_template('Quantum_floating')
-        stack = self.parse_stack(t)
+        t = template_format.parse(quantum_floating_template)
+        stack = parse_stack(t)
 
         fip = stack['floating_ip']
         scheduler.TaskRunner(fip.create)()
@@ -271,8 +311,8 @@ class QuantumFloatingIPTest(HeatTestCase):
 
         self.m.ReplayAll()
 
-        t = self.load_template('Quantum_floating')
-        stack = self.parse_stack(t)
+        t = template_format.parse(quantum_floating_template)
+        stack = parse_stack(t)
 
         p = stack['port_floating']
         scheduler.TaskRunner(p.create)()
@@ -309,8 +349,8 @@ class QuantumFloatingIPTest(HeatTestCase):
 
         self.m.ReplayAll()
 
-        t = self.load_template('Quantum_floating')
-        stack = self.parse_stack(t)
+        t = template_format.parse(quantum_floating_template)
+        stack = parse_stack(t)
 
         fip = stack['floating_ip']
         scheduler.TaskRunner(fip.create)()
index e60874ca60649f54333864af38ddf0dd4cf89c98..f12597ccc4e84c3cf9535ffb4eafd98b759c08b2 100644 (file)
 #    under the License.
 
 
-import os
 import re
 
 import mox
 
 from testtools import skipIf
 
-from heat.common import context
 from heat.common import template_format
 from heat.openstack.common.importutils import try_import
 from heat.engine.resources import s3
-from heat.engine import parser
 from heat.engine import scheduler
 from heat.tests.common import HeatTestCase
 from heat.tests.utils import setup_dummy_db
+from heat.tests.utils import parse_stack
 
 swiftclient = try_import('swiftclient.client')
 
+swift_template = '''
+{
+  "AWSTemplateFormatVersion" : "2010-09-09",
+  "Description" : "Template to test S3 Bucket resources",
+  "Resources" : {
+    "S3BucketWebsite" : {
+      "Type" : "AWS::S3::Bucket",
+      "DeletionPolicy" : "Delete",
+      "Properties" : {
+        "AccessControl" : "PublicRead",
+        "WebsiteConfiguration" : {
+          "IndexDocument" : "index.html",
+          "ErrorDocument" : "error.html"
+         }
+      }
+    },
+    "S3Bucket" : {
+      "Type" : "AWS::S3::Bucket",
+      "Properties" : {
+        "AccessControl" : "Private"
+      }
+    }
+  }
+}
+'''
+
 
 class s3Test(HeatTestCase):
     @skipIf(swiftclient is None, 'unable to import swiftclient')
@@ -44,24 +68,6 @@ class s3Test(HeatTestCase):
         self.container_pattern = 'test_stack-test_resource-[0-9a-z]+'
         setup_dummy_db()
 
-    def load_template(self):
-        self.path = os.path.dirname(os.path.realpath(__file__)).\
-            replace('heat/tests', 'templates')
-        f = open("%s/S3_Single_Instance.template" % self.path)
-        t = template_format.parse(f.read())
-        f.close()
-        return t
-
-    def parse_stack(self, t):
-        ctx = context.RequestContext.from_dict({
-            'tenant': 'test_tenant',
-            'username': 'test_username',
-            'password': 'password',
-            'auth_url': 'http://localhost:5000/v2.0'})
-        stack = parser.Stack(ctx, 'test_stack', parser.Template(t))
-
-        return stack
-
     def create_resource(self, t, stack, resource_name):
         resource = s3.S3Bucket('test_resource',
                                t['Resources'][resource_name],
@@ -73,8 +79,8 @@ class s3Test(HeatTestCase):
     @skipIf(swiftclient is None, 'unable to import swiftclient')
     def test_create_container_name(self):
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(swift_template)
+        stack = parse_stack(t)
         resource = s3.S3Bucket('test_resource',
                                t['Resources']['S3Bucket'],
                                stack)
@@ -94,8 +100,8 @@ class s3Test(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(swift_template)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'S3Bucket')
 
         ref_id = resource.FnGetRefId()
@@ -129,10 +135,10 @@ class s3Test(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
+        t = template_format.parse(swift_template)
         properties = t['Resources']['S3Bucket']['Properties']
         properties['AccessControl'] = 'PublicRead'
-        stack = self.parse_stack(t)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'S3Bucket')
         resource.delete()
         self.m.VerifyAll()
@@ -147,10 +153,10 @@ class s3Test(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
+        t = template_format.parse(swift_template)
         properties = t['Resources']['S3Bucket']['Properties']
         properties['AccessControl'] = 'PublicReadWrite'
-        stack = self.parse_stack(t)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'S3Bucket')
         resource.delete()
         self.m.VerifyAll()
@@ -165,10 +171,10 @@ class s3Test(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
+        t = template_format.parse(swift_template)
         properties = t['Resources']['S3Bucket']['Properties']
         properties['AccessControl'] = 'AuthenticatedRead'
-        stack = self.parse_stack(t)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'S3Bucket')
         resource.delete()
         self.m.VerifyAll()
@@ -186,8 +192,8 @@ class s3Test(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(swift_template)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'S3BucketWebsite')
         resource.delete()
         self.m.VerifyAll()
@@ -204,8 +210,8 @@ class s3Test(HeatTestCase):
                 swiftclient.ClientException('Test delete failure'))
 
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(swift_template)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'S3Bucket')
         resource.delete()
 
@@ -224,11 +230,11 @@ class s3Test(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
+        t = template_format.parse(swift_template)
 
         bucket = t['Resources']['S3Bucket']
         bucket['DeletionPolicy'] = 'Retain'
-        stack = self.parse_stack(t)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'S3Bucket')
         # if delete_container is called, mox verify will succeed
         resource.delete()
index aa34bcc636327e5bfb3b43883b73a635fa40f6ae..48ad89545fa214bd7e2f1d2880dc61581790d7f6 100644 (file)
 #    under the License.
 
 
-import os
 import re
 
 import mox
 
 from testtools import skipIf
 
-from heat.common import context
 from heat.common import template_format
 from heat.openstack.common.importutils import try_import
 from heat.engine.resources import swift
-from heat.engine import parser
 from heat.engine import scheduler
 from heat.tests.common import HeatTestCase
 from heat.tests.utils import setup_dummy_db
+from heat.tests.utils import parse_stack
 
 swiftclient = try_import('swiftclient.client')
 
+swift_template = '''
+{
+  "AWSTemplateFormatVersion" : "2010-09-09",
+  "Description" : "Template to test OS::Swift::Container resources",
+  "Resources" : {
+    "SwiftContainerWebsite" : {
+      "Type" : "OS::Swift::Container",
+      "DeletionPolicy" : "Delete",
+      "Properties" : {
+        "X-Container-Read" : ".r:*",
+        "X-Container-Meta" : {
+          "Web-Index" : "index.html",
+          "Web-Error" : "error.html"
+         }
+      }
+    },
+    "SwiftContainer" : {
+      "Type" : "OS::Swift::Container",
+      "Properties" : {
+      }
+    }
+  }
+}
+'''
+
 
 class swiftTest(HeatTestCase):
     @skipIf(swiftclient is None, 'unable to import swiftclient')
@@ -45,24 +68,6 @@ class swiftTest(HeatTestCase):
         self.container_pattern = 'test_stack-test_resource-[0-9a-z]+'
         setup_dummy_db()
 
-    def load_template(self):
-        self.path = os.path.dirname(os.path.realpath(__file__)).\
-            replace('heat/tests', 'templates')
-        f = open("%s/Swift.template" % self.path)
-        t = template_format.parse(f.read())
-        f.close()
-        return t
-
-    def parse_stack(self, t):
-        ctx = context.RequestContext.from_dict({
-            'tenant': 'test_tenant',
-            'username': 'test_username',
-            'password': 'password',
-            'auth_url': 'http://localhost:5000/v2.0'})
-        stack = parser.Stack(ctx, 'test_stack', parser.Template(t))
-
-        return stack
-
     def create_resource(self, t, stack, resource_name):
         resource = swift.SwiftContainer(
             'test_resource',
@@ -75,8 +80,8 @@ class swiftTest(HeatTestCase):
     @skipIf(swiftclient is None, 'unable to import swiftclient')
     def test_create_container_name(self):
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(swift_template)
+        stack = parse_stack(t)
         resource = swift.SwiftContainer(
             'test_resource',
             t['Resources']['SwiftContainer'],
@@ -129,8 +134,8 @@ class swiftTest(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(swift_template)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'SwiftContainer')
 
         ref_id = resource.FnGetRefId()
@@ -167,10 +172,10 @@ class swiftTest(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
+        t = template_format.parse(swift_template)
         properties = t['Resources']['SwiftContainer']['Properties']
         properties['X-Container-Read'] = '.r:*'
-        stack = self.parse_stack(t)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'SwiftContainer')
         resource.delete()
         self.m.VerifyAll()
@@ -185,11 +190,11 @@ class swiftTest(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
+        t = template_format.parse(swift_template)
         properties = t['Resources']['SwiftContainer']['Properties']
         properties['X-Container-Read'] = '.r:*'
         properties['X-Container-Write'] = '.r:*'
-        stack = self.parse_stack(t)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'SwiftContainer')
         resource.delete()
         self.m.VerifyAll()
@@ -207,8 +212,8 @@ class swiftTest(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(swift_template)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'SwiftContainerWebsite')
         resource.delete()
         self.m.VerifyAll()
@@ -225,8 +230,8 @@ class swiftTest(HeatTestCase):
                 swiftclient.ClientException('Test delete failure'))
 
         self.m.ReplayAll()
-        t = self.load_template()
-        stack = self.parse_stack(t)
+        t = template_format.parse(swift_template)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'SwiftContainer')
         resource.delete()
 
@@ -245,11 +250,11 @@ class swiftTest(HeatTestCase):
             mox.Regex(self.container_pattern)).AndReturn(None)
 
         self.m.ReplayAll()
-        t = self.load_template()
+        t = template_format.parse(swift_template)
 
         container = t['Resources']['SwiftContainer']
         container['DeletionPolicy'] = 'Retain'
-        stack = self.parse_stack(t)
+        stack = parse_stack(t)
         resource = self.create_resource(t, stack, 'SwiftContainer')
         # if delete_container is called, mox verify will succeed
         resource.delete()
index 624cb20c7443a7f102822bbc7400401e1f460ea3..880244b8ada8502d3f18e5efbc52a79e47b42754 100644 (file)
 #    under the License.
 
 
-import os
-
 import eventlet
 
 from testtools import skipIf
 
-from heat.common import context
 from heat.common import exception
 from heat.common import template_format
-from heat.engine import parser
 from heat.engine import scheduler
 from heat.engine.resources import volume as vol
 from heat.engine import clients
@@ -30,12 +26,48 @@ from heat.openstack.common.importutils import try_import
 from heat.tests.common import HeatTestCase
 from heat.tests.v1_1 import fakes
 from heat.tests.utils import setup_dummy_db
+from heat.tests.utils import parse_stack
 
 from cinderclient.v1 import client as cinderclient
 
 
 volume_backups = try_import('cinderclient.v1.volume_backups')
 
+volume_template = '''
+{
+  "AWSTemplateFormatVersion" : "2010-09-09",
+  "Description" : "Volume Test",
+  "Parameters" : {},
+  "Resources" : {
+    "WikiDatabase": {
+      "Type": "AWS::EC2::Instance",
+      "Properties": {
+        "ImageId" : "foo",
+        "InstanceType"   : "m1.large",
+        "KeyName"        : "test",
+        "UserData"       : "some data"
+      }
+    },
+    "DataVolume" : {
+      "Type" : "AWS::EC2::Volume",
+      "Properties" : {
+        "Size" : "1",
+        "AvailabilityZone" : "nova",
+        "Tags" : [{ "Key" : "Usage", "Value" : "Wiki Data Volume" }]
+      }
+    },
+    "MountPoint" : {
+      "Type" : "AWS::EC2::VolumeAttachment",
+      "Properties" : {
+        "InstanceId" : { "Ref" : "WikiDatabase" },
+        "VolumeId"  : { "Ref" : "DataVolume" },
+        "Device" : "/dev/vdc"
+      }
+    }
+  }
+}
+'''
+
 
 class VolumeTest(HeatTestCase):
     def setUp(self):
@@ -52,26 +84,6 @@ class VolumeTest(HeatTestCase):
         self.m.StubOutWithMock(eventlet, 'sleep')
         setup_dummy_db()
 
-    def load_template(self):
-        self.path = os.path.dirname(os.path.realpath(__file__)).\
-            replace('heat/tests', 'templates')
-        f = open("%s/WordPress_2_Instances_With_EBS.template" % self.path)
-        t = template_format.parse(f.read())
-        f.close()
-        return t
-
-    def parse_stack(self, t, stack_name):
-        ctx = context.RequestContext.from_dict({
-            'tenant': 'test_tenant',
-            'username': 'test_username',
-            'password': 'password',
-            'auth_url': 'http://localhost:5000/v2.0'})
-        template = parser.Template(t)
-        params = parser.Parameters(stack_name, template, {'KeyName': 'test'})
-        stack = parser.Stack(ctx, stack_name, template, params)
-
-        return stack
-
     def create_volume(self, t, stack, resource_name):
         resource = vol.Volume(resource_name,
                               t['Resources'][resource_name],
@@ -112,8 +124,8 @@ class VolumeTest(HeatTestCase):
             clients.cinder_exceptions.NotFound('Not found'))
         self.m.ReplayAll()
 
-        t = self.load_template()
-        stack = self.parse_stack(t, stack_name)
+        t = template_format.parse(volume_template)
+        stack = parse_stack(t, stack_name=stack_name)
 
         resource = self.create_volume(t, stack, 'DataVolume')
         self.assertEqual(fv.status, 'available')
@@ -145,8 +157,8 @@ class VolumeTest(HeatTestCase):
 
         self.m.ReplayAll()
 
-        t = self.load_template()
-        stack = self.parse_stack(t, stack_name)
+        t = template_format.parse(volume_template)
+        stack = parse_stack(t, stack_name=stack_name)
 
         resource = vol.Volume('DataVolume',
                               t['Resources']['DataVolume'],
@@ -181,8 +193,8 @@ class VolumeTest(HeatTestCase):
 
         self.m.ReplayAll()
 
-        t = self.load_template()
-        stack = self.parse_stack(t, stack_name)
+        t = template_format.parse(volume_template)
+        stack = parse_stack(t, stack_name=stack_name)
 
         scheduler.TaskRunner(stack['DataVolume'].create)()
         self.assertEqual(fv.status, 'available')
@@ -225,8 +237,8 @@ class VolumeTest(HeatTestCase):
 
         self.m.ReplayAll()
 
-        t = self.load_template()
-        stack = self.parse_stack(t, stack_name)
+        t = template_format.parse(volume_template)
+        stack = parse_stack(t, stack_name=stack_name)
 
         scheduler.TaskRunner(stack['DataVolume'].create)()
         self.assertEqual(fv.status, 'available')
@@ -260,9 +272,9 @@ class VolumeTest(HeatTestCase):
         self.cinder_fc.volumes.delete('vol-123').AndReturn(None)
         self.m.ReplayAll()
 
-        t = self.load_template()
+        t = template_format.parse(volume_template)
         t['Resources']['DataVolume']['DeletionPolicy'] = 'Snapshot'
-        stack = self.parse_stack(t, stack_name)
+        stack = parse_stack(t, stack_name=stack_name)
 
         resource = self.create_volume(t, stack, 'DataVolume')
 
@@ -290,9 +302,9 @@ class VolumeTest(HeatTestCase):
         eventlet.sleep(1).AndReturn(None)
         self.m.ReplayAll()
 
-        t = self.load_template()
+        t = template_format.parse(volume_template)
         t['Resources']['DataVolume']['DeletionPolicy'] = 'Snapshot'
-        stack = self.parse_stack(t, stack_name)
+        stack = parse_stack(t, stack_name=stack_name)
 
         resource = self.create_volume(t, stack, 'DataVolume')
 
@@ -315,9 +327,9 @@ class VolumeTest(HeatTestCase):
 
         self.m.ReplayAll()
 
-        t = self.load_template()
+        t = template_format.parse(volume_template)
         t['Resources']['DataVolume']['DeletionPolicy'] = 'Snapshot'
-        stack = self.parse_stack(t, stack_name)
+        stack = parse_stack(t, stack_name=stack_name)
         resource = vol.Volume('DataVolume',
                               t['Resources']['DataVolume'],
                               stack)
@@ -348,9 +360,9 @@ class VolumeTest(HeatTestCase):
 
         self.m.ReplayAll()
 
-        t = self.load_template()
+        t = template_format.parse(volume_template)
         t['Resources']['DataVolume']['Properties']['SnapshotId'] = 'backup-123'
-        stack = self.parse_stack(t, stack_name)
+        stack = parse_stack(t, stack_name=stack_name)
 
         self.create_volume(t, stack, 'DataVolume')
         self.assertEqual(fv.status, 'available')