]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Use a physical name matching class in unit tests
authorZane Bitter <zbitter@redhat.com>
Wed, 5 Jun 2013 08:15:56 +0000 (10:15 +0200)
committerZane Bitter <zbitter@redhat.com>
Wed, 5 Jun 2013 08:15:56 +0000 (10:15 +0200)
This gives us the flexibility to change the format of the physical resource
name.

Change-Id: Ie36453345149291fe04d89b52d7966816e03cda6

12 files changed:
heat/tests/test_engine_service.py
heat/tests/test_instance.py
heat/tests/test_instance_network.py
heat/tests/test_loadbalancer.py
heat/tests/test_nested_stack.py
heat/tests/test_nokey.py
heat/tests/test_quantum.py
heat/tests/test_security_group.py
heat/tests/test_user.py
heat/tests/test_volume.py
heat/tests/test_vpc.py
heat/tests/utils.py

index 3d51cd2615bcdd9644f3e4c9335a4f0ac4217e19..b98ffd7fa3419f17a151a61fd37622efdbf66e97 100644 (file)
@@ -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(
index c9aacecbca00a43aa79f8a0475d0ba53389f3f15..6266c102695ed5641e714d89a991d623b001a4be 100644 (file)
@@ -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(
index f643db84dfb8a34ca63391a5ebc636c15e217d38..97d8c4f625cbda5ea94c143f1ea9960437dbbaf1 100644 (file)
@@ -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'}],
index 453e310921ed59b6e4daee7cc4867cdaee1070c5..b2b22a503a5db4bccb845ddc9333f101186d8c2f 100644 (file)
@@ -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])
index 83f46de88fa0bf8348ca6ed5d50709273c89984a..71933bacc0db570c79585ba4356e1f1fb4c32d13 100644 (file)
@@ -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()
index cc90891c4902e113f3d74adf18d1fac303d5e9f1..ca660c73a60efb47f3af0ae5a3f462d62f4570eb 100644 (file)
@@ -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(
index 0b815ecbcb393038d22868e7267e2ab6f5d28dc7..fd8412014b7198b4b2efd33008476f5e023d1c8a 100644 (file)
@@ -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",
index e25ea1705387ae697fbeec0fe0dc59452b27451a..8c27d421491193cde57eb98f78557339a7fa0d5a 100644 (file)
@@ -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'
index 080aee3a8b67247b1c2fcafbcbfb56af8b6dd43d..c444df669bf55b3d693b45be85f71f6f4f1d4bd4 100644 (file)
@@ -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
 
index 61f0761c404367040c7c16e1a33555986e195128..d52dc621f9fb132acc1679be364b73236bd1a6b2 100644 (file)
@@ -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)
index 63d013799987ddbebc9d1ad0a3aabb480b88538a..41193b6442e723f199f5693a400f220f70f6b27b 100644 (file)
@@ -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',
index aaec95b536c998426f721d695c004f41fd332b13..eb253de81345193c7785a46e9ae2147e0201fc8c 100644 (file)
@@ -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)