'''Return a human-readable string representation of the stack'''
return 'Stack "%s"' % self.name
+ def resource_by_refid(self, refid):
+ '''
+ Return the resource in this stack with the specified
+ refid, or None if not found
+ '''
+ for r in self.resources.values():
+ if r.state in (
+ r.CREATE_IN_PROGRESS,
+ r.CREATE_COMPLETE,
+ r.UPDATE_IN_PROGRESS,
+ r.UPDATE_COMPLETE) and r.FnGetRefId() == refid:
+ return r
+
def validate(self):
'''
http://docs.amazonwebservices.com/AWSCloudFormation/latest/\
self.stack.update({})
self.assertEqual(self.stack.state, parser.Stack.UPDATE_FAILED)
+ @stack_delete_after
+ def test_resource_by_refid(self):
+ tmpl = {'Resources': {'AResource': {'Type': 'GenericResourceType'}}}
+
+ self.stack = parser.Stack(self.ctx, 'resource_by_refid_stack',
+ template.Template(tmpl))
+ self.stack.store()
+ self.stack.create()
+ self.assertEqual(self.stack.state, parser.Stack.CREATE_COMPLETE)
+ self.assertTrue('AResource' in self.stack)
+ resource = self.stack['AResource']
+ resource.resource_id_set('aaaa')
+ self.assertNotEqual(None, resource)
+ self.assertEqual(resource, self.stack.resource_by_refid('aaaa'))
+
+ resource.state = resource.DELETE_IN_PROGRESS
+ self.assertEqual(None, self.stack.resource_by_refid('aaaa'))
+
+ self.assertEqual(None, self.stack.resource_by_refid('bbbb'))
+
@stack_delete_after
def test_update_add(self):
tmpl = {'Resources': {'AResource': {'Type': 'GenericResourceType'}}}