From 5e2a562fc44c445b452d453f2ea32e6b7655e69f Mon Sep 17 00:00:00 2001 From: Steven Hardy Date: Tue, 7 May 2013 16:43:40 +0100 Subject: [PATCH] tests : convert most remaining tests to inline templates Convert all except the test_template_format test to minimal inline templates Change-Id: I73f263d3d7d24eaa2c20eed171b7486cfa873f9a --- heat/tests/test_nokey.py | 36 +++++---- heat/tests/test_quantum.py | 156 +++++++++++++++++++++++-------------- heat/tests/test_s3.py | 80 ++++++++++--------- heat/tests/test_swift.py | 75 +++++++++--------- heat/tests/test_volume.py | 92 ++++++++++++---------- 5 files changed, 256 insertions(+), 183 deletions(-) diff --git a/heat/tests/test_nokey.py b/heat/tests/test_nokey.py index 24321939..cc90891c 100644 --- a/heat/tests/test_nokey.py +++ b/heat/tests/test_nokey.py @@ -12,37 +12,47 @@ # 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'] = \ diff --git a/heat/tests/test_quantum.py b/heat/tests/test_quantum.py index 694e1718..f83ab6dd 100644 --- a/heat/tests/test_quantum.py +++ b/heat/tests/test_quantum.py @@ -13,11 +13,8 @@ # 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)() diff --git a/heat/tests/test_s3.py b/heat/tests/test_s3.py index e60874ca..f12597cc 100644 --- a/heat/tests/test_s3.py +++ b/heat/tests/test_s3.py @@ -13,24 +13,48 @@ # 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() diff --git a/heat/tests/test_swift.py b/heat/tests/test_swift.py index aa34bcc6..48ad8954 100644 --- a/heat/tests/test_swift.py +++ b/heat/tests/test_swift.py @@ -13,24 +13,47 @@ # 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() diff --git a/heat/tests/test_volume.py b/heat/tests/test_volume.py index 624cb20c..880244b8 100644 --- a/heat/tests/test_volume.py +++ b/heat/tests/test_volume.py @@ -13,16 +13,12 @@ # 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') -- 2.45.2