diff --git a/heat/engine/resource.py b/heat/engine/resource.py index cc5f560f33..3c3b1fd6f3 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -21,6 +21,7 @@ from heat.common import exception from heat.openstack.common import excutils from heat.db import api as db_api from heat.common import identifier +from heat.common import short_id from heat.engine import timestamp from heat.engine.properties import Properties @@ -397,7 +398,11 @@ class Resource(object): self.state_set(self.UPDATE_COMPLETE) def physical_resource_name(self): - return '%s-%s' % (self.stack.name, self.name) + assert self.id is not None + + return '%s-%s-%s' % (self.stack.name, + self.name, + short_id.get_id(self.id)) def validate(self): logger.info('Validating %s' % str(self)) diff --git a/heat/tests/utils.py b/heat/tests/utils.py index 85d6791f3c..396f549071 100644 --- a/heat/tests/utils.py +++ b/heat/tests/utils.py @@ -75,10 +75,23 @@ class PhysName(object): self.resource_name = resource_name def __eq__(self, physical_name): - return physical_name == repr(self) + try: + stack, res, short_id = str(physical_name).rsplit('-', 2) + except ValueError: + return False + + if self.stack_name != stack or self.resource_name != res: + return False + + if len(short_id) != 12: + return False + + return True def __ne__(self, physical_name): return not self.__eq__(physical_name) def __repr__(self): - return '%s-%s' % (self.stack_name, self.resource_name) + return '%s-%s-%s' % (self.stack_name, + self.resource_name, + 'x' * 12)