From 1c29e67c299b3e53d339b2d2426007847917579a Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Wed, 5 Jun 2013 10:15:56 +0200 Subject: [PATCH] Use a physical name matching class in unit tests This gives us the flexibility to change the format of the physical resource name. Change-Id: Ie36453345149291fe04d89b52d7966816e03cda6 --- heat/tests/test_engine_service.py | 4 +- heat/tests/test_instance.py | 3 +- heat/tests/test_instance_network.py | 5 ++- heat/tests/test_loadbalancer.py | 6 ++- heat/tests/test_nested_stack.py | 11 +++-- heat/tests/test_nokey.py | 3 +- heat/tests/test_quantum.py | 20 ++++++---- heat/tests/test_security_group.py | 27 ++++++++----- heat/tests/test_user.py | 27 ++++++++----- heat/tests/test_volume.py | 62 ++++++++++++++++++----------- heat/tests/test_vpc.py | 34 ++++++++++------ heat/tests/utils.py | 15 +++++++ 12 files changed, 141 insertions(+), 76 deletions(-) diff --git a/heat/tests/test_engine_service.py b/heat/tests/test_engine_service.py index 3d51cd26..b98ffd7f 100644 --- a/heat/tests/test_engine_service.py +++ b/heat/tests/test_engine_service.py @@ -35,6 +35,7 @@ from heat.engine.resources import instance as instances from heat.engine import watchrule from heat.openstack.common import threadgroup from heat.tests.common import HeatTestCase +from heat.tests import utils from heat.tests.utils import setup_dummy_db @@ -93,7 +94,8 @@ def setup_mocks(mocks, stack): server_userdata = instance._build_userdata(instance.properties['UserData']) mocks.StubOutWithMock(fc.servers, 'create') fc.servers.create(image=744, flavor=3, key_name='test', - name='%s.WebServer' % stack.name, security_groups=None, + name=utils.PhysName(stack.name, 'WebServer'), + security_groups=None, userdata=server_userdata, scheduler_hints=None, meta=None, nics=None, availability_zone=None).AndReturn( diff --git a/heat/tests/test_instance.py b/heat/tests/test_instance.py index c9aacecb..6266c102 100644 --- a/heat/tests/test_instance.py +++ b/heat/tests/test_instance.py @@ -25,6 +25,7 @@ from heat.engine import resource from heat.engine import scheduler from heat.openstack.common import uuidutils from heat.tests.common import HeatTestCase +from heat.tests import utils from heat.tests.utils import setup_dummy_db @@ -85,7 +86,7 @@ class instancesTest(HeatTestCase): self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create( image=1, flavor=1, key_name='test', - name='%s.%s' % (stack_name, instance.name), + name=utils.PhysName(stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, meta=None, nics=None, availability_zone=None).AndReturn( diff --git a/heat/tests/test_instance_network.py b/heat/tests/test_instance_network.py index f643db84..97d8c4f6 100644 --- a/heat/tests/test_instance_network.py +++ b/heat/tests/test_instance_network.py @@ -21,6 +21,7 @@ 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 import utils from heat.tests.utils import setup_dummy_db @@ -178,7 +179,7 @@ class instancesTest(HeatTestCase): self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create( image=1, flavor=3, key_name='test', - name='%s.%s' % (stack_name, instance.name), + name=utils.PhysName(stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, meta=None, nics=[{'port-id': '64d913c1-bcb1-42d2-8f0a-9593dbcaf251'}], @@ -224,7 +225,7 @@ class instancesTest(HeatTestCase): self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create( image=1, flavor=3, key_name='test', - name='%s.%s' % (stack_name, instance.name), + name=utils.PhysName(stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, meta=None, nics=[{'port-id': '64d913c1-bcb1-42d2-8f0a-9593dbcaf251'}], diff --git a/heat/tests/test_loadbalancer.py b/heat/tests/test_loadbalancer.py index 453e3109..b2b22a50 100644 --- a/heat/tests/test_loadbalancer.py +++ b/heat/tests/test_loadbalancer.py @@ -29,6 +29,7 @@ from heat.engine.resources import loadbalancer as lb from heat.engine.resources import wait_condition as wc from heat.engine.resource import Metadata from heat.tests.common import HeatTestCase +from heat.tests import utils from heat.tests.utils import setup_dummy_db from heat.tests.utils import parse_stack from heat.tests.v1_1 import fakes @@ -109,11 +110,14 @@ class LoadBalancerTest(HeatTestCase): self.m.StubOutWithMock(wc.WaitConditionHandle, 'keystone') wc.WaitConditionHandle.keystone().MultipleTimes().AndReturn(self.fkc) + server_name = utils.PhysName(utils.PhysName('test_stack', + 'LoadBalancer'), + 'LB_instance') clients.OpenStackClients.nova( "compute").MultipleTimes().AndReturn(self.fc) self.fc.servers.create( flavor=2, image=745, key_name='test', - meta=None, nics=None, name=u'test_stack.LoadBalancer.LB_instance', + meta=None, nics=None, name=server_name, scheduler_hints=None, userdata=mox.IgnoreArg(), security_groups=None, availability_zone=None).AndReturn( self.fc.servers.list()[1]) diff --git a/heat/tests/test_nested_stack.py b/heat/tests/test_nested_stack.py index 83f46de8..71933bac 100644 --- a/heat/tests/test_nested_stack.py +++ b/heat/tests/test_nested_stack.py @@ -20,6 +20,7 @@ from heat.engine import parser from heat.engine import resource from heat.common import urlfetch from heat.tests.common import HeatTestCase +from heat.tests import utils from heat.tests.utils import setup_dummy_db @@ -75,8 +76,11 @@ Outputs: stack = self.create_stack(self.test_template) rsrc = stack['the_nested'] - self.assertTrue(rsrc.FnGetRefId().startswith( - 'arn:openstack:heat::aaaa:stacks/test_stack.the_nested/')) + nested_name = utils.PhysName(stack.name, 'the_nested') + self.assertEqual(nested_name, rsrc.physical_resource_name()) + arn_prefix = ('arn:openstack:heat::aaaa:stacks/%s/' % + rsrc.physical_resource_name()) + self.assertTrue(rsrc.FnGetRefId().startswith(arn_prefix)) self.assertRaises(resource.UpdateReplace, rsrc.handle_update, {}, {}, {}) @@ -86,7 +90,6 @@ Outputs: exception.InvalidTemplateAttribute, rsrc.FnGetAtt, 'Foo') rsrc.delete() - self.assertTrue(rsrc.FnGetRefId().startswith( - 'arn:openstack:heat::aaaa:stacks/test_stack.the_nested/')) + self.assertTrue(rsrc.FnGetRefId().startswith(arn_prefix)) self.m.VerifyAll() diff --git a/heat/tests/test_nokey.py b/heat/tests/test_nokey.py index cc90891c..ca660c73 100644 --- a/heat/tests/test_nokey.py +++ b/heat/tests/test_nokey.py @@ -18,6 +18,7 @@ from heat.common import template_format from heat.engine import scheduler from heat.openstack.common import uuidutils from heat.tests.common import HeatTestCase +from heat.tests import utils from heat.tests.utils import setup_dummy_db from heat.tests.utils import parse_stack @@ -71,7 +72,7 @@ class nokeyTest(HeatTestCase): self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create( image=1, flavor=1, key_name=None, - name='%s.%s' % (stack_name, instance.name), + name=utils.PhysName(stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, meta=None, nics=None, availability_zone=None).AndReturn( diff --git a/heat/tests/test_quantum.py b/heat/tests/test_quantum.py index 0b815ecb..fd841201 100644 --- a/heat/tests/test_quantum.py +++ b/heat/tests/test_quantum.py @@ -29,6 +29,7 @@ from heat.engine.resources.quantum import router from heat.engine.resources.quantum.quantum import QuantumResource as qr from heat.openstack.common.importutils import try_import from heat.tests.common import HeatTestCase +from heat.tests import utils from heat.tests.utils import setup_dummy_db from heat.tests.utils import parse_stack @@ -318,7 +319,7 @@ class QuantumSubnetTest(HeatTestCase): quantumclient.Client.create_subnet({ 'subnet': { - 'name': 'test_stack.test_subnet', + 'name': utils.PhysName('test_stack', 'test_subnet'), 'network_id': u'None', 'dns_nameservers': [u'8.8.8.8'], 'allocation_pools': [ @@ -437,12 +438,15 @@ class QuantumRouterTest(HeatTestCase): def test_router(self): quantumclient.Client.create_router({ - 'router': {'name': 'test_stack.router', 'admin_state_up': True} + 'router': { + 'name': utils.PhysName('test_stack', 'router'), + 'admin_state_up': True, + } }).AndReturn({ "router": { "status": "BUILD", "external_gateway_info": None, - "name": "test_stack.router", + "name": utils.PhysName('test_stack', 'router'), "admin_state_up": True, "tenant_id": "3e21026f2dc94372b105808c0e721661", "id": "3e46229d-8fce-4733-819a-b5fe630550f8" @@ -453,7 +457,7 @@ class QuantumRouterTest(HeatTestCase): "router": { "status": "BUILD", "external_gateway_info": None, - "name": "test_stack.router", + "name": utils.PhysName('test_stack', 'router'), "admin_state_up": True, "tenant_id": "3e21026f2dc94372b105808c0e721661", "routes": [], @@ -466,7 +470,7 @@ class QuantumRouterTest(HeatTestCase): "router": { "status": "ACTIVE", "external_gateway_info": None, - "name": "test_stack.router", + "name": utils.PhysName('test_stack', 'router'), "admin_state_up": True, "tenant_id": "3e21026f2dc94372b105808c0e721661", "routes": [], @@ -482,7 +486,7 @@ class QuantumRouterTest(HeatTestCase): "router": { "status": "ACTIVE", "external_gateway_info": None, - "name": "test_stack.router", + "name": utils.PhysName('test_stack', 'router'), "admin_state_up": True, "tenant_id": "3e21026f2dc94372b105808c0e721661", "routes": [], @@ -653,7 +657,7 @@ class QuantumFloatingIPTest(HeatTestCase): 'fixed_ips': [ {'subnet_id': u'12.12.12.0', 'ip_address': u'10.0.0.10'} ], - 'name': u'test_stack.port_floating', + 'name': utils.PhysName('test_stack', 'port_floating'), 'admin_state_up': True}} ).AndReturn({'port': { "status": "BUILD", @@ -725,7 +729,7 @@ class QuantumFloatingIPTest(HeatTestCase): 'fixed_ips': [ {'subnet_id': u'12.12.12.0', 'ip_address': u'10.0.0.10'} ], - 'name': u'test_stack.port_floating', + 'name': utils.PhysName('test_stack', 'port_floating'), 'admin_state_up': True}} ).AndReturn({'port': { "status": "BUILD", diff --git a/heat/tests/test_security_group.py b/heat/tests/test_security_group.py index e25ea170..8c27d421 100644 --- a/heat/tests/test_security_group.py +++ b/heat/tests/test_security_group.py @@ -22,6 +22,7 @@ from heat.engine import resource from heat.tests.common import HeatTestCase from heat.tests.utils import setup_dummy_db from heat.tests.v1_1 import fakes +from heat.tests import utils from heat.tests.utils import stack_delete_after from novaclient.v1_1 import security_groups as nova_sg @@ -137,11 +138,12 @@ Resources: rules=[], )]) clients.OpenStackClients.nova('compute').AndReturn(self.fc) + sg_name = utils.PhysName('test_stack', 'the_sg') nova_sg.SecurityGroupManager.create( - 'test_stack.the_sg', + sg_name, 'HTTP and SSH access').AndReturn(NovaSG( id=2, - name='test_stack.the_sg', + name=sg_name, description='HTTP and SSH access', rules=[])) @@ -155,7 +157,7 @@ Resources: clients.OpenStackClients.nova('compute').AndReturn(self.fc) nova_sg.SecurityGroupManager.get(2).AndReturn(NovaSG( id=2, - name='test_stack.the_sg', + name=sg_name, description='HTTP and SSH access', rules=[{ "from_port": 22, @@ -192,7 +194,7 @@ Resources: sg = stack['the_sg'] self.assertRaises(resource.UpdateReplace, sg.handle_update, {}, {}, {}) - self.assertResourceState(sg, 'test_stack.the_sg') + self.assertResourceState(sg, utils.PhysName('test_stack', 'the_sg')) stack.delete() self.m.VerifyAll() @@ -201,9 +203,10 @@ Resources: def test_security_group_nova_exception(self): #create script clients.OpenStackClients.nova('compute').AndReturn(self.fc) + sg_name = utils.PhysName('test_stack', 'the_sg') nova_sg.SecurityGroupManager.list().AndReturn([NovaSG( id=2, - name='test_stack.the_sg', + name=sg_name, description='HTTP and SSH access', rules=[], )]) @@ -222,7 +225,7 @@ Resources: clients.OpenStackClients.nova('compute').AndReturn(self.fc) nova_sg.SecurityGroupManager.get(2).AndReturn(NovaSG( id=2, - name='test_stack.the_sg', + name=sg_name, description='HTTP and SSH access', rules=[{ "from_port": 22, @@ -265,7 +268,7 @@ Resources: sg = stack['the_sg'] self.assertRaises(resource.UpdateReplace, sg.handle_update, {}, {}, {}) - self.assertResourceState(sg, 'test_stack.the_sg') + self.assertResourceState(sg, utils.PhysName('test_stack', 'the_sg')) self.assertEqual(None, sg.delete()) @@ -278,15 +281,16 @@ Resources: @stack_delete_after def test_security_group_quantum(self): #create script + sg_name = utils.PhysName('test_stack', 'the_sg') quantumclient.Client.create_security_group({ 'security_group': { - 'name': 'test_stack.the_sg', + 'name': sg_name, 'description': 'HTTP and SSH access' } }).AndReturn({ 'security_group': { 'tenant_id': 'f18ca530cc05425e8bac0a5ff92f7e88', - 'name': 'test_stack.the_sg', + 'name': sg_name, 'description': 'HTTP and SSH access', 'security_group_rules': [], 'id': 'aaaa' @@ -417,15 +421,16 @@ Resources: @stack_delete_after def test_security_group_quantum_exception(self): #create script + sg_name = utils.PhysName('test_stack', 'the_sg') quantumclient.Client.create_security_group({ 'security_group': { - 'name': 'test_stack.the_sg', + 'name': sg_name, 'description': 'HTTP and SSH access' } }).AndReturn({ 'security_group': { 'tenant_id': 'f18ca530cc05425e8bac0a5ff92f7e88', - 'name': 'test_stack.the_sg', + 'name': sg_name, 'description': 'HTTP and SSH access', 'security_group_rules': [], 'id': 'aaaa' diff --git a/heat/tests/test_user.py b/heat/tests/test_user.py index 080aee3a..c444df66 100644 --- a/heat/tests/test_user.py +++ b/heat/tests/test_user.py @@ -23,6 +23,7 @@ from heat.engine import scheduler from heat.engine.resources import user from heat.tests.common import HeatTestCase from heat.tests import fakes +from heat.tests import utils from heat.tests.utils import setup_dummy_db from heat.tests.utils import parse_stack @@ -92,7 +93,8 @@ class UserPolicyTestCase(HeatTestCase): def setUp(self): super(UserPolicyTestCase, self).setUp() config.register_engine_opts() - self.fc = fakes.FakeKeystoneClient(username='test_stack.CfnUser') + username = utils.PhysName('test_stack', 'CfnUser') + self.fc = fakes.FakeKeystoneClient(username=username) cfg.CONF.set_default('heat_stack_user_role', 'stack_user_role') setup_dummy_db() @@ -120,7 +122,8 @@ class UserTest(UserPolicyTestCase): rsrc = self.create_user(t, stack, 'CfnUser') self.assertEqual(self.fc.user_id, rsrc.resource_id) - self.assertEqual('test_stack.CfnUser', rsrc.FnGetRefId()) + self.assertEqual(utils.PhysName('test_stack', 'CfnUser'), + rsrc.FnGetRefId()) self.assertEqual('CREATE_COMPLETE', rsrc.state) self.assertRaises(resource.UpdateReplace, @@ -156,7 +159,8 @@ class UserTest(UserPolicyTestCase): rsrc = self.create_user(t, stack, 'CfnUser') self.assertEqual(self.fc.user_id, rsrc.resource_id) - self.assertEqual('test_stack.CfnUser', rsrc.FnGetRefId()) + self.assertEqual(utils.PhysName('test_stack', 'CfnUser'), + rsrc.FnGetRefId()) self.assertEqual('CREATE_COMPLETE', rsrc.state) self.assertEqual([u'WebServerAccessPolicy'], @@ -216,7 +220,8 @@ class UserTest(UserPolicyTestCase): rsrc = self.create_user(t, stack, 'CfnUser') self.assertEqual(self.fc.user_id, rsrc.resource_id) - self.assertEqual('test_stack.CfnUser', rsrc.FnGetRefId()) + self.assertEqual(utils.PhysName('test_stack', 'CfnUser'), + rsrc.FnGetRefId()) self.assertEqual('CREATE_COMPLETE', rsrc.state) self.assertTrue(rsrc.access_allowed('a_resource')) @@ -241,7 +246,8 @@ class UserTest(UserPolicyTestCase): rsrc = self.create_user(t, stack, 'CfnUser') self.assertEqual(self.fc.user_id, rsrc.resource_id) - self.assertEqual('test_stack.CfnUser', rsrc.FnGetRefId()) + self.assertEqual(utils.PhysName('test_stack', 'CfnUser'), + rsrc.FnGetRefId()) self.assertEqual('CREATE_COMPLETE', rsrc.state) self.assertTrue(rsrc.access_allowed('a_resource')) @@ -270,8 +276,9 @@ class AccessKeyTest(UserPolicyTestCase): t = template_format.parse(user_accesskey_template) # Override the Ref for UserName with a hard-coded name, # so we don't need to create the User resource - t['Resources']['HostKeys']['Properties']['UserName'] =\ - 'test_stack.CfnUser' + username = str(utils.PhysName('test_stack', 'CfnUser')) + t['Resources']['HostKeys']['Properties']['UserName'] = username + stack = parse_stack(t) stack.resources['CfnUser'].resource_id = self.fc.user_id stack.resources['CfnUser'].state = 'CREATE_COMPLETE' @@ -286,7 +293,8 @@ class AccessKeyTest(UserPolicyTestCase): self.assertEqual(self.fc.secret, rsrc._secret) - self.assertEqual(rsrc.FnGetAtt('UserName'), 'test_stack.CfnUser') + self.assertEqual(utils.PhysName(stack.name, 'CfnUser'), + rsrc.FnGetAtt('UserName')) rsrc._secret = None self.assertEqual(rsrc.FnGetAtt('SecretAccessKey'), self.fc.secret) @@ -314,8 +322,7 @@ class AccessKeyTest(UserPolicyTestCase): t = template_format.parse(user_accesskey_template) # Set the resource properties UserName to an unknown user - t['Resources']['HostKeys']['Properties']['UserName'] =\ - 'test_stack.NoExist' + t['Resources']['HostKeys']['Properties']['UserName'] = 'NonExistant' stack = parse_stack(t) stack.resources['CfnUser'].resource_id = self.fc.user_id diff --git a/heat/tests/test_volume.py b/heat/tests/test_volume.py index 61f0761c..d52dc621 100644 --- a/heat/tests/test_volume.py +++ b/heat/tests/test_volume.py @@ -27,6 +27,7 @@ from heat.engine import resource from heat.openstack.common.importutils import try_import from heat.tests.common import HeatTestCase from heat.tests.v1_1 import fakes +from heat.tests import utils from heat.tests.utils import setup_dummy_db from heat.tests.utils import parse_stack @@ -111,10 +112,11 @@ class VolumeTest(HeatTestCase): # create script clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) # delete script self.cinder_fc.volumes.get('vol-123').AndReturn(fv) @@ -152,10 +154,11 @@ class VolumeTest(HeatTestCase): # create script clients.OpenStackClients.cinder().AndReturn(self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) self.m.ReplayAll() @@ -179,10 +182,11 @@ class VolumeTest(HeatTestCase): # volume create clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) # create script clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc) @@ -219,10 +223,11 @@ class VolumeTest(HeatTestCase): # volume create clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) # create script clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc) @@ -261,14 +266,15 @@ class VolumeTest(HeatTestCase): fv = FakeVolume('creating', 'available') fva = FakeVolume('in-use', 'available') stack_name = 'test_volume_detach_stack' + vol_name = utils.PhysName(stack_name, 'DataVolume') # volume create clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) # create script clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc) @@ -322,14 +328,15 @@ class VolumeTest(HeatTestCase): fv = FakeVolume('creating', 'available') fva = FakeVolume('in-use', 'available') stack_name = 'test_volume_detach_stack' + vol_name = utils.PhysName(stack_name, 'DataVolume') # volume create clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) # create script clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc) @@ -366,10 +373,11 @@ class VolumeTest(HeatTestCase): # create script clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) # snapshot script self.m.StubOutWithMock(self.cinder_fc.backups, 'create') @@ -397,10 +405,11 @@ class VolumeTest(HeatTestCase): # create script clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) # snapshot script self.cinder_fc.volumes.get('vol-123').AndReturn(fv) @@ -426,10 +435,11 @@ class VolumeTest(HeatTestCase): # create script clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.cinder_fc.volumes.delete('vol-123').AndReturn(None) @@ -464,9 +474,10 @@ class VolumeTest(HeatTestCase): {'volume_id': 'vol-123'}) self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.m.StubOutWithMock(fv, 'update') + vol_name = utils.PhysName(stack_name, 'DataVolume') fv.update( - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name) + display_description=vol_name, + display_name=vol_name) self.m.ReplayAll() @@ -530,10 +541,11 @@ class VolumeTest(HeatTestCase): clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', display_description=None, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_name=vol_name).AndReturn(fv) self.m.ReplayAll() @@ -565,10 +577,11 @@ class VolumeTest(HeatTestCase): clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', display_description=None, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_name=vol_name).AndReturn(fv) self.cinder_fc.volumes.get('vol-123').MultipleTimes().AndReturn(fv) @@ -615,10 +628,11 @@ class VolumeTest(HeatTestCase): # volume create clients.OpenStackClients.cinder().MultipleTimes().AndReturn( self.cinder_fc) + vol_name = utils.PhysName(stack_name, 'DataVolume') self.cinder_fc.volumes.create( size=u'1', availability_zone='nova', - display_description='%s.DataVolume' % stack_name, - display_name='%s.DataVolume' % stack_name).AndReturn(fv) + display_description=vol_name, + display_name=vol_name).AndReturn(fv) # create script clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc) diff --git a/heat/tests/test_vpc.py b/heat/tests/test_vpc.py index 63d01379..41193b64 100644 --- a/heat/tests/test_vpc.py +++ b/heat/tests/test_vpc.py @@ -23,6 +23,7 @@ from heat.engine import parser from heat.engine import resource from heat.engine import scheduler from heat.tests.common import HeatTestCase +from heat.tests import utils from heat.tests.utils import setup_dummy_db try: @@ -87,37 +88,39 @@ class VPCTestBase(HeatTestCase): return stack def mock_create_network(self): + vpc_name = utils.PhysName('test_stack', 'the_vpc') quantumclient.Client.create_network( { - 'network': {'name': 'test_stack.the_vpc'} + 'network': {'name': vpc_name} }).AndReturn({'network': { 'status': 'ACTIVE', 'subnets': [], - 'name': 'name', + 'name': vpc_name, 'admin_state_up': True, 'shared': False, 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', 'id': 'aaaa' }}) quantumclient.Client.create_router( - {'router': {'name': 'test_stack.the_vpc'}}).AndReturn({'router': { + {'router': {'name': vpc_name}}).AndReturn({'router': { 'status': 'ACTIVE', - 'name': 'name', + 'name': vpc_name, 'admin_state_up': True, 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', 'id': 'rrrr' }}) def mock_create_subnet(self): + subnet_name = utils.PhysName('test_stack', 'the_subnet') quantumclient.Client.create_subnet( {'subnet': { 'network_id': u'aaaa', 'cidr': u'10.0.0.0/24', 'ip_version': 4, - 'name': u'test_stack.the_subnet'}}).AndReturn({ + 'name': subnet_name}}).AndReturn({ 'subnet': { 'status': 'ACTIVE', - 'name': 'test_stack.the_subnet', + 'name': subnet_name, 'admin_state_up': True, 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', 'id': 'cccc'}}) @@ -126,9 +129,10 @@ class VPCTestBase(HeatTestCase): {'subnet_id': 'cccc'}).AndReturn(None) def mock_show_subnet(self): + subnet_name = utils.PhysName('test_stack', 'the_subnet') quantumclient.Client.show_subnet('cccc').AndReturn({ 'subnet': { - 'name': 'test_stack.the_subnet', + 'name': subnet_name, 'network_id': 'aaaa', 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', 'allocation_pools': [{'start': '10.0.0.2', @@ -141,15 +145,16 @@ class VPCTestBase(HeatTestCase): }}) def mock_create_security_group(self): + sg_name = utils.PhysName('test_stack', 'the_sg') quantumclient.Client.create_security_group({ 'security_group': { - 'name': 'test_stack.the_sg', + 'name': sg_name, 'description': 'SSH access' } }).AndReturn({ 'security_group': { 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', - 'name': 'test_stack.the_sg', + 'name': sg_name, 'description': 'SSH access', 'security_group_rules': [], 'id': 'eeee' @@ -180,10 +185,11 @@ class VPCTestBase(HeatTestCase): }) def mock_delete_security_group(self): + sg_name = utils.PhysName('test_stack', 'the_sg') quantumclient.Client.show_security_group('eeee').AndReturn({ 'security_group': { 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', - 'name': 'sc1', + 'name': sg_name, 'description': '', 'security_group_rules': [{ 'direction': 'ingress', @@ -406,12 +412,13 @@ Resources: ''' def mock_create_network_interface(self, security_groups=['eeee']): + nic_name = utils.PhysName('test_stack', 'the_nic') port = {'network_id': 'aaaa', 'fixed_ips': [{ 'subnet_id': u'cccc', 'ip_address': u'10.0.0.100' }], - 'name': u'test_stack.the_nic', + 'name': nic_name, 'admin_state_up': True} if security_groups: port['security_groups'] = security_groups @@ -429,7 +436,7 @@ Resources: ], 'id': 'dddd', 'mac_address': 'fa:16:3e:25:32:5d', - 'name': 'test_stack.the_nic', + 'name': nic_name, 'network_id': 'aaaa', 'status': 'ACTIVE', 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f' @@ -616,8 +623,9 @@ Resources: ''' def mock_create_route_table(self): + rt_name = utils.PhysName('test_stack', 'the_route_table') quantumclient.Client.create_router( - {'router': {'name': u'test_stack.the_route_table'}}).AndReturn({ + {'router': {'name': rt_name}}).AndReturn({ 'router': { 'status': 'ACTIVE', 'name': 'name', diff --git a/heat/tests/utils.py b/heat/tests/utils.py index aaec95b5..eb253de8 100644 --- a/heat/tests/utils.py +++ b/heat/tests/utils.py @@ -66,3 +66,18 @@ def parse_stack(t, params={}, stack_name='test_stack', stack_id=None): stack = parser.Stack(ctx, stack_name, template, parameters, stack_id) return stack + + +class PhysName(object): + def __init__(self, stack_name, resource_name): + self.stack_name = stack_name + self.resource_name = resource_name + + def __eq__(self, physical_name): + return physical_name == repr(self) + + def __ne__(self, physical_name): + return not self.__eq__(physical_name) + + def __repr__(self): + return '%s.%s' % (self.stack_name, self.resource_name) -- 2.45.2