Don't obtain resources through stack.resources

A particular logical resource name can be looked up by subscripting the
stack object directly.

Change-Id: I621280318cfb104ab9bfe1ae7c31fe2b5e55cfc6
This commit is contained in:
Zane Bitter 2013-10-04 16:38:40 +02:00
parent fa31873529
commit ec29941bb8
18 changed files with 124 additions and 124 deletions

View File

@ -283,7 +283,7 @@ class Resource(object):
value, att = value
try:
target = self.stack.resources[value]
target = self.stack[value]
except KeyError:
raise exception.InvalidTemplateReference(
resource=value,

View File

@ -60,7 +60,7 @@ class User(resource.Resource):
continue
try:
policy_rsrc = self.stack.resources[policy]
policy_rsrc = self.stack[policy]
except KeyError:
logger.error("Policy %s does not exist in stack %s" %
(policy, self.stack.name))
@ -124,7 +124,7 @@ class User(resource.Resource):
logger.warning("Ignoring policy %s, " % policy
+ "must be string resource name")
continue
policy_rsrc = self.stack.resources[policy]
policy_rsrc = self.stack[policy]
if not policy_rsrc.access_allowed(resource_name):
return False
return True

View File

@ -113,20 +113,20 @@ class AutoScalingTest(HeatTestCase):
def create_scaling_group(self, t, stack, resource_name):
# create the launch configuration resource
conf = stack.resources['LaunchConfig']
conf = stack['LaunchConfig']
self.assertEqual(None, conf.validate())
scheduler.TaskRunner(conf.create)()
self.assertEqual((conf.CREATE, conf.COMPLETE), conf.state)
# create the group resource
rsrc = stack.resources[resource_name]
rsrc = stack[resource_name]
self.assertEqual(None, rsrc.validate())
scheduler.TaskRunner(rsrc.create)()
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
return rsrc
def create_scaling_policy(self, t, stack, resource_name):
rsrc = stack.resources[resource_name]
rsrc = stack[resource_name]
self.assertEqual(None, rsrc.validate())
scheduler.TaskRunner(rsrc.create)()
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
@ -477,12 +477,12 @@ class AutoScalingTest(HeatTestCase):
self.m.ReplayAll()
conf = stack.resources['LaunchConfig']
conf = stack['LaunchConfig']
self.assertEqual(None, conf.validate())
scheduler.TaskRunner(conf.create)()
self.assertEqual((conf.CREATE, conf.COMPLETE), conf.state)
rsrc = stack.resources['WebServerGroup']
rsrc = stack['WebServerGroup']
self.assertEqual(None, rsrc.validate())
self.assertRaises(exception.ResourceFailure,
scheduler.TaskRunner(rsrc.create))
@ -814,7 +814,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_create(2)
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0', 'WebServerGroup-1'],
rsrc.get_instance_names())
@ -848,7 +848,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_meta_expected(now, 'ExactCapacity : 2')
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0', 'WebServerGroup-1'],
rsrc.get_instance_names())
@ -887,7 +887,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_create(2)
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0', 'WebServerGroup-1'],
rsrc.get_instance_names())
@ -941,7 +941,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_meta_expected(now, 'ExactCapacity : 2')
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0', 'WebServerGroup-1'],
rsrc.get_instance_names())
@ -999,7 +999,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_create(2)
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0', 'WebServerGroup-1'],
rsrc.get_instance_names())
@ -1052,7 +1052,7 @@ class AutoScalingTest(HeatTestCase):
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0'], rsrc.get_instance_names())
# Scale up one
@ -1090,7 +1090,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_create(2)
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0', 'WebServerGroup-1'],
rsrc.get_instance_names())
@ -1123,7 +1123,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_create(1)
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0'], rsrc.get_instance_names())
# Scale up one
@ -1179,7 +1179,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_create(1)
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0'], rsrc.get_instance_names())
# Scale up one
@ -1238,7 +1238,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_create(1)
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0'], rsrc.get_instance_names())
# Create the scaling policy (with Cooldown=0) and scale up one
@ -1297,7 +1297,7 @@ class AutoScalingTest(HeatTestCase):
self._stub_create(1)
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0'], rsrc.get_instance_names())
# Create the scaling policy no Cooldown property, should behave the
@ -1363,7 +1363,7 @@ class AutoScalingTest(HeatTestCase):
self.m.ReplayAll()
rsrc = self.create_scaling_group(t, stack, 'WebServerGroup')
stack.resources['WebServerGroup'] = rsrc
stack['WebServerGroup'] = rsrc
self.assertEqual(['WebServerGroup-0'], rsrc.get_instance_names())
# Create initial scaling policy

View File

@ -217,18 +217,18 @@ class InstanceGroupTest(HeatTestCase):
cookie).MultipleTimes().AndReturn(True)
def get_launch_conf_name(self, stack, ig_name):
return stack.resources[ig_name].properties['LaunchConfigurationName']
return stack[ig_name].properties['LaunchConfigurationName']
def test_parse_without_update_policy(self):
tmpl = template_format.parse(asg_tmpl_without_updt_policy)
stack = utils.parse_stack(tmpl)
grp = stack.resources['WebServerGroup']
grp = stack['WebServerGroup']
self.assertFalse(grp.update_policy['AutoScalingRollingUpdate'])
def test_parse_with_update_policy(self):
tmpl = template_format.parse(asg_tmpl_with_updt_policy_1)
stack = utils.parse_stack(tmpl)
grp = stack.resources['WebServerGroup']
grp = stack['WebServerGroup']
self.assertTrue(grp.update_policy)
self.assertTrue(len(grp.update_policy) == 1)
self.assertTrue('AutoScalingRollingUpdate' in grp.update_policy)
@ -241,7 +241,7 @@ class InstanceGroupTest(HeatTestCase):
def test_parse_with_default_update_policy(self):
tmpl = template_format.parse(asg_tmpl_with_default_updt_policy)
stack = utils.parse_stack(tmpl)
grp = stack.resources['WebServerGroup']
grp = stack['WebServerGroup']
self.assertTrue(grp.update_policy)
self.assertTrue(len(grp.update_policy) == 1)
self.assertTrue('AutoScalingRollingUpdate' in grp.update_policy)
@ -263,7 +263,7 @@ class InstanceGroupTest(HeatTestCase):
current_stack = utils.parse_stack(current_tmpl)
# get the json snippet for the current InstanceGroup resource
current_grp = current_stack.resources['WebServerGroup']
current_grp = current_stack['WebServerGroup']
current_snippets = dict((r.name, r.parsed_template())
for r in current_stack)
current_grp_json = current_snippets[current_grp.name]
@ -274,7 +274,7 @@ class InstanceGroupTest(HeatTestCase):
# get the updated json snippet for the InstanceGroup resource in the
# context of the current stack
updated_grp = updated_stack.resources['WebServerGroup']
updated_grp = updated_stack['WebServerGroup']
updated_grp_json = current_stack.resolve_runtime_data(updated_grp.t)
# identify the template difference
@ -302,28 +302,28 @@ class InstanceGroupTest(HeatTestCase):
# setup stack from the initial template
tmpl = template_format.parse(asg_tmpl_with_updt_policy_1)
stack = utils.parse_stack(tmpl)
nested = stack.resources['WebServerGroup'].nested()
nested = stack['WebServerGroup'].nested()
# test stack create
# test the number of instance creation
# test that physical resource name of launch configuration is used
size = int(stack.resources['WebServerGroup'].properties['MinSize'])
size = int(stack['WebServerGroup'].properties['MinSize'])
self._stub_create(size)
self.m.ReplayAll()
stack.create()
self.m.VerifyAll()
self.assertEqual(stack.state, ('CREATE', 'COMPLETE'))
conf = stack.resources['LaunchConfig']
conf = stack['LaunchConfig']
conf_name_pattern = '%s-LaunchConfig-[a-zA-Z0-9]+$' % stack.name
regex_pattern = re.compile(conf_name_pattern)
self.assertTrue(regex_pattern.match(conf.FnGetRefId()))
nested = stack.resources['WebServerGroup'].nested()
self.assertTrue(len(nested.resources), size)
nested = stack['WebServerGroup'].nested()
self.assertTrue(len(nested), size)
# test stack update
# test that update policy is updated
# test that launch configuration is replaced
current_grp = stack.resources['WebServerGroup']
current_grp = stack['WebServerGroup']
self.assertTrue('AutoScalingRollingUpdate'
in current_grp.update_policy)
current_policy = current_grp.update_policy['AutoScalingRollingUpdate']
@ -334,7 +334,7 @@ class InstanceGroupTest(HeatTestCase):
updated_stack = utils.parse_stack(updated_tmpl)
stack.update(updated_stack)
self.assertEqual(stack.state, ('UPDATE', 'COMPLETE'))
updated_grp = stack.resources['WebServerGroup']
updated_grp = stack['WebServerGroup']
self.assertTrue('AutoScalingRollingUpdate'
in updated_grp.update_policy)
updated_policy = updated_grp.update_policy['AutoScalingRollingUpdate']
@ -348,27 +348,27 @@ class InstanceGroupTest(HeatTestCase):
# setup stack from the initial template
tmpl = template_format.parse(asg_tmpl_with_updt_policy_1)
stack = utils.parse_stack(tmpl)
nested = stack.resources['WebServerGroup'].nested()
nested = stack['WebServerGroup'].nested()
# test stack create
# test the number of instance creation
# test that physical resource name of launch configuration is used
size = int(stack.resources['WebServerGroup'].properties['MinSize'])
size = int(stack['WebServerGroup'].properties['MinSize'])
self._stub_create(size)
self.m.ReplayAll()
stack.create()
self.m.VerifyAll()
self.assertEqual(stack.state, ('CREATE', 'COMPLETE'))
conf = stack.resources['LaunchConfig']
conf = stack['LaunchConfig']
conf_name_pattern = '%s-LaunchConfig-[a-zA-Z0-9]+$' % stack.name
regex_pattern = re.compile(conf_name_pattern)
self.assertTrue(regex_pattern.match(conf.FnGetRefId()))
nested = stack.resources['WebServerGroup'].nested()
self.assertTrue(len(nested.resources), size)
nested = stack['WebServerGroup'].nested()
self.assertTrue(len(nested), size)
# test stack update
# test that update policy is removed
current_grp = stack.resources['WebServerGroup']
current_grp = stack['WebServerGroup']
self.assertTrue('AutoScalingRollingUpdate'
in current_grp.update_policy)
current_policy = current_grp.update_policy['AutoScalingRollingUpdate']
@ -378,5 +378,5 @@ class InstanceGroupTest(HeatTestCase):
updated_stack = utils.parse_stack(updated_tmpl)
stack.update(updated_stack)
self.assertEqual(stack.state, ('UPDATE', 'COMPLETE'))
updated_grp = stack.resources['WebServerGroup']
updated_grp = stack['WebServerGroup']
self.assertFalse(updated_grp.update_policy['AutoScalingRollingUpdate'])

View File

@ -131,7 +131,7 @@ def setup_mocks(mocks, stack):
mocks.StubOutWithMock(instances.Instance, 'nova')
instances.Instance.nova().MultipleTimes().AndReturn(fc)
instance = stack.resources['WebServer']
instance = stack['WebServer']
user_data = instance.properties['UserData']
server_userdata = nova_utils.build_userdata(instance, user_data)
instance.mime_string = server_userdata
@ -239,9 +239,9 @@ class StackCreateTest(HeatTestCase):
stack.store()
stack.create()
self.assertNotEqual(stack.resources['WebServer'], None)
self.assertTrue(stack.resources['WebServer'].resource_id > 0)
self.assertNotEqual(stack.resources['WebServer'].ipaddress, '0.0.0.0')
self.assertNotEqual(stack['WebServer'], None)
self.assertTrue(stack['WebServer'].resource_id > 0)
self.assertNotEqual(stack['WebServer'].ipaddress, '0.0.0.0')
def test_wordpress_single_instance_stack_delete(self):
ctx = utils.dummy_context()
@ -254,8 +254,8 @@ class StackCreateTest(HeatTestCase):
db_s = db_api.stack_get(ctx, stack_id)
self.assertNotEqual(db_s, None)
self.assertNotEqual(stack.resources['WebServer'], None)
self.assertTrue(stack.resources['WebServer'].resource_id > 0)
self.assertNotEqual(stack['WebServer'], None)
self.assertTrue(stack['WebServer'].resource_id > 0)
self.m.StubOutWithMock(fc.client, 'get_servers_9999')
get = fc.client.get_servers_9999
@ -263,7 +263,7 @@ class StackCreateTest(HeatTestCase):
mox.Replay(get)
stack.delete()
rsrc = stack.resources['WebServer']
rsrc = stack['WebServer']
self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state)
self.assertEqual((stack.DELETE, stack.COMPLETE), rsrc.state)
self.assertEqual(None, db_api.stack_get(ctx, stack_id))
@ -385,7 +385,7 @@ class StackServiceCreateUpdateDeleteTest(HeatTestCase):
stack = get_wordpress_stack(stack_name, self.ctx)
# force check for credentials on create
stack.resources['WebServer'].requires_deferred_auth = True
stack['WebServer'].requires_deferred_auth = True
self.m.StubOutWithMock(parser, 'Template')
self.m.StubOutWithMock(environment, 'Environment')
@ -697,7 +697,7 @@ class StackServiceCreateUpdateDeleteTest(HeatTestCase):
old_stack = get_wordpress_stack(stack_name, self.ctx)
# force check for credentials on create
old_stack.resources['WebServer'].requires_deferred_auth = True
old_stack['WebServer'].requires_deferred_auth = True
sid = old_stack.store()
s = db_api.stack_get(self.ctx, sid)
@ -730,7 +730,7 @@ class StackServiceCreateUpdateDeleteTest(HeatTestCase):
def test_validate_deferred_auth_context_trusts(self):
stack = get_wordpress_stack('test_deferred_auth', self.ctx)
stack.resources['WebServer'].requires_deferred_auth = True
stack['WebServer'].requires_deferred_auth = True
ctx = utils.dummy_context(user=None, password=None)
cfg.CONF.set_default('deferred_auth_method', 'trusts')
@ -739,7 +739,7 @@ class StackServiceCreateUpdateDeleteTest(HeatTestCase):
def test_validate_deferred_auth_context_not_required(self):
stack = get_wordpress_stack('test_deferred_auth', self.ctx)
stack.resources['WebServer'].requires_deferred_auth = False
stack['WebServer'].requires_deferred_auth = False
ctx = utils.dummy_context(user=None, password=None)
cfg.CONF.set_default('deferred_auth_method', 'password')
@ -749,7 +749,7 @@ class StackServiceCreateUpdateDeleteTest(HeatTestCase):
def test_validate_deferred_auth_context_missing_credentials(self):
stack = get_wordpress_stack('test_deferred_auth', self.ctx)
stack.resources['WebServer'].requires_deferred_auth = True
stack['WebServer'].requires_deferred_auth = True
cfg.CONF.set_default('deferred_auth_method', 'password')
# missing username

View File

@ -83,7 +83,7 @@ class InstanceGroupTest(HeatTestCase):
def create_resource(self, t, stack, resource_name):
# subsequent resources may need to reference previous created resources
# use the stack's resource objects instead of instantiating new ones
rsrc = stack.resources[resource_name]
rsrc = stack[resource_name]
self.assertEqual(None, rsrc.validate())
scheduler.TaskRunner(rsrc.create)()
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
@ -146,7 +146,7 @@ class InstanceGroupTest(HeatTestCase):
stack = utils.parse_stack(t)
conf = self.create_resource(t, stack, 'JobServerConfig')
rsrc = stack.resources['JobServerGroup']
rsrc = stack['JobServerGroup']
self.m.StubOutWithMock(instance.Instance, 'handle_create')
not_found = exception.ImageNotFound(image_name='bla')
@ -218,11 +218,11 @@ class InstanceGroupTest(HeatTestCase):
exception.ResourceFailure,
self.create_resource, t, stack, 'JobServerGroup')
rsrc = stack.resources['JobServerGroup']
rsrc = stack['JobServerGroup']
self.assertEqual((rsrc.CREATE, rsrc.FAILED), rsrc.state)
# The failed inner resource remains
child_resource = rsrc.nested().resources['JobServerGroup-0']
child_resource = rsrc.nested()['JobServerGroup-0']
self.assertEqual((child_resource.CREATE, child_resource.FAILED),
child_resource.state)
@ -262,7 +262,7 @@ class InstanceGroupTest(HeatTestCase):
self.assertEqual((rsrc.UPDATE, rsrc.FAILED), rsrc.state)
# The failed inner resource remains
child_resource = rsrc.nested().resources['JobServerGroup-1']
child_resource = rsrc.nested()['JobServerGroup-1']
self.assertEqual((child_resource.CREATE, child_resource.FAILED),
child_resource.state)

View File

@ -211,18 +211,18 @@ class InstanceGroupTest(HeatTestCase):
cookie).MultipleTimes().AndReturn(True)
def get_launch_conf_name(self, stack, ig_name):
return stack.resources[ig_name].properties['LaunchConfigurationName']
return stack[ig_name].properties['LaunchConfigurationName']
def test_parse_without_update_policy(self):
tmpl = template_format.parse(ig_tmpl_without_updt_policy)
stack = utils.parse_stack(tmpl)
grp = stack.resources['JobServerGroup']
grp = stack['JobServerGroup']
self.assertFalse(grp.update_policy['RollingUpdate'])
def test_parse_with_update_policy(self):
tmpl = template_format.parse(ig_tmpl_with_updt_policy_1)
stack = utils.parse_stack(tmpl)
grp = stack.resources['JobServerGroup']
grp = stack['JobServerGroup']
self.assertTrue(grp.update_policy)
self.assertTrue(len(grp.update_policy) == 1)
self.assertTrue('RollingUpdate' in grp.update_policy)
@ -235,7 +235,7 @@ class InstanceGroupTest(HeatTestCase):
def test_parse_with_default_update_policy(self):
tmpl = template_format.parse(ig_tmpl_with_default_updt_policy)
stack = utils.parse_stack(tmpl)
grp = stack.resources['JobServerGroup']
grp = stack['JobServerGroup']
self.assertTrue(grp.update_policy)
self.assertTrue(len(grp.update_policy) == 1)
self.assertTrue('RollingUpdate' in grp.update_policy)
@ -257,7 +257,7 @@ class InstanceGroupTest(HeatTestCase):
current_stack = utils.parse_stack(current_tmpl)
# get the json snippet for the current InstanceGroup resource
current_grp = current_stack.resources['JobServerGroup']
current_grp = current_stack['JobServerGroup']
current_snippets = dict((r.name, r.parsed_template())
for r in current_stack)
current_grp_json = current_snippets[current_grp.name]
@ -268,7 +268,7 @@ class InstanceGroupTest(HeatTestCase):
# get the updated json snippet for the InstanceGroup resource in the
# context of the current stack
updated_grp = updated_stack.resources['JobServerGroup']
updated_grp = updated_stack['JobServerGroup']
updated_grp_json = current_stack.resolve_runtime_data(updated_grp.t)
# identify the template difference
@ -296,28 +296,28 @@ class InstanceGroupTest(HeatTestCase):
# setup stack from the initial template
tmpl = template_format.parse(ig_tmpl_with_updt_policy_1)
stack = utils.parse_stack(tmpl)
nested = stack.resources['JobServerGroup'].nested()
nested = stack['JobServerGroup'].nested()
# test stack create
# test the number of instance creation
# test that physical resource name of launch configuration is used
size = int(stack.resources['JobServerGroup'].properties['Size'])
size = int(stack['JobServerGroup'].properties['Size'])
self._stub_create(size)
self.m.ReplayAll()
stack.create()
self.m.VerifyAll()
self.assertEqual(stack.state, ('CREATE', 'COMPLETE'))
conf = stack.resources['JobServerConfig']
conf = stack['JobServerConfig']
conf_name_pattern = '%s-JobServerConfig-[a-zA-Z0-9]+$' % stack.name
regex_pattern = re.compile(conf_name_pattern)
self.assertTrue(regex_pattern.match(conf.FnGetRefId()))
nested = stack.resources['JobServerGroup'].nested()
self.assertTrue(len(nested.resources), size)
nested = stack['JobServerGroup'].nested()
self.assertTrue(len(nested), size)
# test stack update
# test that update policy is updated
# test that launch configuration is replaced
current_grp = stack.resources['JobServerGroup']
current_grp = stack['JobServerGroup']
self.assertTrue('RollingUpdate' in current_grp.update_policy)
current_policy = current_grp.update_policy['RollingUpdate']
self.assertTrue(current_policy and len(current_policy) > 0)
@ -327,7 +327,7 @@ class InstanceGroupTest(HeatTestCase):
updated_stack = utils.parse_stack(updated_tmpl)
stack.update(updated_stack)
self.assertEqual(stack.state, ('UPDATE', 'COMPLETE'))
updated_grp = stack.resources['JobServerGroup']
updated_grp = stack['JobServerGroup']
self.assertTrue('RollingUpdate' in updated_grp.update_policy)
updated_policy = updated_grp.update_policy['RollingUpdate']
self.assertTrue(updated_policy and len(updated_policy) > 0)
@ -340,27 +340,27 @@ class InstanceGroupTest(HeatTestCase):
# setup stack from the initial template
tmpl = template_format.parse(ig_tmpl_with_updt_policy_1)
stack = utils.parse_stack(tmpl)
nested = stack.resources['JobServerGroup'].nested()
nested = stack['JobServerGroup'].nested()
# test stack create
# test the number of instance creation
# test that physical resource name of launch configuration is used
size = int(stack.resources['JobServerGroup'].properties['Size'])
size = int(stack['JobServerGroup'].properties['Size'])
self._stub_create(size)
self.m.ReplayAll()
stack.create()
self.m.VerifyAll()
self.assertEqual(stack.state, ('CREATE', 'COMPLETE'))
conf = stack.resources['JobServerConfig']
conf = stack['JobServerConfig']
conf_name_pattern = '%s-JobServerConfig-[a-zA-Z0-9]+$' % stack.name
regex_pattern = re.compile(conf_name_pattern)
self.assertTrue(regex_pattern.match(conf.FnGetRefId()))
nested = stack.resources['JobServerGroup'].nested()
self.assertTrue(len(nested.resources), size)
nested = stack['JobServerGroup'].nested()
self.assertTrue(len(nested), size)
# test stack update
# test that update policy is removed
current_grp = stack.resources['JobServerGroup']
current_grp = stack['JobServerGroup']
self.assertTrue('RollingUpdate' in current_grp.update_policy)
current_policy = current_grp.update_policy['RollingUpdate']
self.assertTrue(current_policy and len(current_policy) > 0)
@ -369,5 +369,5 @@ class InstanceGroupTest(HeatTestCase):
updated_stack = utils.parse_stack(updated_tmpl)
stack.update(updated_stack)
self.assertEqual(stack.state, ('UPDATE', 'COMPLETE'))
updated_grp = stack.resources['JobServerGroup']
updated_grp = stack['JobServerGroup']
self.assertFalse(updated_grp.update_policy['RollingUpdate'])

View File

@ -239,7 +239,7 @@ class instancesTest(HeatTestCase):
# create network interface
scheduler.TaskRunner(nic.create)()
stack.resources["nic1"] = nic
stack["nic1"] = nic
scheduler.TaskRunner(instance.create)()
return instance

View File

@ -172,8 +172,8 @@ class MetadataRefreshTest(HeatTestCase):
self.assertEqual(self.stack.state,
(self.stack.CREATE, self.stack.COMPLETE))
s1 = self.stack.resources['S1']
s2 = self.stack.resources['S2']
s1 = self.stack['S1']
s2 = self.stack['S2']
files = s1.metadata['AWS::CloudFormation::Init']['config']['files']
cont = files['/tmp/random_file']['content']
self.assertEqual((s2.CREATE, s2.COMPLETE), s2.state)

View File

@ -161,7 +161,7 @@ Outputs:
stack.create()
self.assertEquals(stack.state, (stack.CREATE, stack.COMPLETE))
self.assertIn('NestedResource',
stack.resources['the_nested'].nested().resources)
stack['the_nested'].nested())
self.m.VerifyAll()

View File

@ -665,20 +665,20 @@ class StackTest(HeatTestCase):
def test_total_resources_nested(self):
self._setup_nested('zyzzyx')
self.assertEqual(4, self.stack.total_resources())
self.assertNotEqual(None, self.stack.resources['A'].nested())
self.assertNotEqual(None, self.stack['A'].nested())
self.assertEqual(
2, self.stack.resources['A'].nested().total_resources())
2, self.stack['A'].nested().total_resources())
self.assertEqual(
4,
self.stack.resources['A'].nested().root_stack.total_resources())
self.stack['A'].nested().root_stack.total_resources())
@utils.stack_delete_after
def test_root_stack(self):
self._setup_nested('toor')
self.assertEqual(self.stack, self.stack.root_stack)
self.assertNotEqual(None, self.stack.resources['A'].nested())
self.assertNotEqual(None, self.stack['A'].nested())
self.assertEqual(
self.stack, self.stack.resources['A'].nested().root_stack)
self.stack, self.stack['A'].nested().root_stack)
@utils.stack_delete_after
def test_load_parent_resource(self):

View File

@ -182,12 +182,12 @@ class ServerTagsTest(HeatTestCase):
t['Resources']['WebServer']['Properties']['Tags'] = intags
# create the launch configuration
conf = stack.resources['Config']
conf = stack['Config']
self.assertEqual(None, conf.validate())
scheduler.TaskRunner(conf.create)()
self.assertEqual((conf.CREATE, conf.COMPLETE), conf.state)
group = stack.resources['WebServer']
group = stack['WebServer']
nova_tags['metering.groupname'] = utils.PhysName(stack.name,
group.name)
@ -229,11 +229,11 @@ class ServerTagsTest(HeatTestCase):
t['Resources']['WebServer']['Properties']['Tags'] += intags
# create the launch configuration
conf = stack.resources['Config']
conf = stack['Config']
self.assertEqual(None, conf.validate())
scheduler.TaskRunner(conf.create)()
self.assertEqual((conf.CREATE, conf.COMPLETE), conf.state)
group = stack.resources['WebServer']
group = stack['WebServer']
group_refid = utils.PhysName(stack.name, group.name)

View File

@ -96,7 +96,7 @@ class SignalTest(HeatTestCase):
self.m.ReplayAll()
self.stack.create()
rsrc = self.stack.resources['signal_handler']
rsrc = self.stack['signal_handler']
created_time = datetime.datetime(2012, 11, 29, 13, 49, 37)
rsrc.created_time = created_time
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
@ -123,7 +123,7 @@ class SignalTest(HeatTestCase):
self.m.ReplayAll()
self.stack.create()
rsrc = self.stack.resources['signal_handler']
rsrc = self.stack['signal_handler']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
first_url = rsrc.FnGetAtt('AlarmUrl')
@ -138,7 +138,7 @@ class SignalTest(HeatTestCase):
self.m.ReplayAll()
self.stack.create()
rsrc = self.stack.resources['signal_handler']
rsrc = self.stack['signal_handler']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
rsrc.delete()
@ -162,7 +162,7 @@ class SignalTest(HeatTestCase):
self.m.ReplayAll()
self.stack.create()
rsrc = self.stack.resources['signal_handler']
rsrc = self.stack['signal_handler']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
self.assertTrue(rsrc.requires_deferred_auth)
@ -179,7 +179,7 @@ class SignalTest(HeatTestCase):
self.m.ReplayAll()
self.stack.create()
rsrc = self.stack.resources['resource_X']
rsrc = self.stack['resource_X']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
err_metadata = {'Data': 'foo', 'Status': 'SUCCESS', 'UniqueId': '123'}
@ -197,7 +197,7 @@ class SignalTest(HeatTestCase):
self.m.ReplayAll()
self.stack.create()
rsrc = self.stack.resources['signal_handler']
rsrc = self.stack['signal_handler']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
# manually override the action to DELETE
rsrc.action = rsrc.DELETE
@ -226,7 +226,7 @@ class SignalTest(HeatTestCase):
self.m.ReplayAll()
self.stack.create()
rsrc = self.stack.resources['signal_handler']
rsrc = self.stack['signal_handler']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
self.assertRaises(exception.ResourceFailure,

View File

@ -144,7 +144,7 @@ class SqlAlchemyTest(HeatTestCase):
self._mock_create(self.m)
self.m.ReplayAll()
stack.create()
rsrc = stack.resources['WebServer']
rsrc = stack['WebServer']
db_api.resource_data_set(rsrc, 'test', 'test_data')
self.assertEqual('test_data', db_api.resource_data_get(rsrc, 'test'))
db_api.resource_data_delete(rsrc, 'test')

View File

@ -145,7 +145,7 @@ class JsonYamlResolvedCompareTest(HeatTestCase):
self.assertEqual(set(stack1.resources.keys()),
set(stack2.resources.keys()))
for key in stack1.resources:
self.assertEqual(stack1.resources[key].t, stack2.resources[key].t)
self.assertEqual(stack1[key].t, stack2[key].t)
@skipIf(clients.neutronclient is None, 'neutronclient unavailable')
def test_neutron_resolved(self):

View File

@ -337,7 +337,7 @@ class AccessKeyTest(UserPolicyTestCase):
# Set the resource properties UserName to an unknown user
t['Resources']['HostKeys']['Properties']['UserName'] = 'NonExistant'
stack = utils.parse_stack(t)
stack.resources['CfnUser'].resource_id = self.fc.user_id
stack['CfnUser'].resource_id = self.fc.user_id
rsrc = user.AccessKey('HostKeys',
t['Resources']['HostKeys'],

View File

@ -551,14 +551,14 @@ class validateTest(HeatTestCase):
t = template_format.parse(test_template_volumeattach % 'vdq')
stack = parser.Stack(self.ctx, 'test_stack', parser.Template(t))
volumeattach = stack.resources['MountPoint']
volumeattach = stack['MountPoint']
self.assertTrue(volumeattach.validate() is None)
def test_validate_volumeattach_invalid(self):
t = template_format.parse(test_template_volumeattach % 'sda')
stack = parser.Stack(self.ctx, 'test_stack', parser.Template(t))
volumeattach = stack.resources['MountPoint']
volumeattach = stack['MountPoint']
self.assertRaises(exception.StackValidationFailed,
volumeattach.validate)
@ -716,7 +716,7 @@ class validateTest(HeatTestCase):
instances.Instance.nova().AndReturn(self.fc)
self.m.ReplayAll()
resource = stack.resources['Instance']
resource = stack['Instance']
self.assertRaises(exception.UserKeyPairMissing, resource.validate)
def test_unregistered_image(self):
@ -731,7 +731,7 @@ class validateTest(HeatTestCase):
instances.Instance.nova().AndReturn(self.fc)
self.m.ReplayAll()
resource = stack.resources['Instance']
resource = stack['Instance']
self.assertRaises(exception.ImageNotFound, resource.validate)
self.m.VerifyAll()
@ -762,7 +762,7 @@ class validateTest(HeatTestCase):
instances.Instance.nova().AndReturn(self.fc)
self.m.ReplayAll()
resource = stack.resources['Instance']
resource = stack['Instance']
self.assertRaises(exception.NoUniqueImageFound, resource.validate)
self.m.VerifyAll()
@ -777,7 +777,7 @@ class validateTest(HeatTestCase):
instances.Instance.nova().AndReturn(self.fc)
self.m.ReplayAll()
resource = stack.resources['Instance']
resource = stack['Instance']
self.assertRaises(exception.ResourcePropertyConflict,
resource.validate)
@ -791,7 +791,7 @@ class validateTest(HeatTestCase):
instances.Instance.nova().AndReturn(self.fc)
self.m.ReplayAll()
resource = stack.resources['Instance']
resource = stack['Instance']
self.assertRaises(exception.ResourcePropertyConflict,
resource.validate)

View File

@ -135,7 +135,7 @@ class WaitConditionTest(HeatTestCase):
self.stack.create()
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertEqual(rsrc.state,
(rsrc.CREATE, rsrc.COMPLETE))
@ -155,7 +155,7 @@ class WaitConditionTest(HeatTestCase):
self.stack.create()
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.FAILED))
reason = rsrc.status_reason
self.assertTrue(reason.startswith('WaitConditionFailure:'))
@ -178,7 +178,7 @@ class WaitConditionTest(HeatTestCase):
self.stack.create()
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertEqual(rsrc.state,
(rsrc.CREATE, rsrc.COMPLETE))
@ -198,7 +198,7 @@ class WaitConditionTest(HeatTestCase):
self.stack.create()
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.FAILED))
reason = rsrc.status_reason
self.assertTrue(reason.startswith('WaitConditionFailure:'))
@ -232,7 +232,7 @@ class WaitConditionTest(HeatTestCase):
self.stack.create()
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.FAILED))
reason = rsrc.status_reason
@ -250,13 +250,13 @@ class WaitConditionTest(HeatTestCase):
self.m.ReplayAll()
self.stack.create()
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
wc_att = rsrc.FnGetAtt('Data')
self.assertEqual(wc_att, unicode({}))
handle = self.stack.resources['WaitHandle']
handle = self.stack['WaitHandle']
self.assertEqual(handle.state, (rsrc.CREATE, rsrc.COMPLETE))
test_metadata = {'Data': 'foo', 'Reason': 'bar',
@ -288,7 +288,7 @@ class WaitConditionTest(HeatTestCase):
stack_id=stack_id)
self.m.ReplayAll()
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertRaises(ValueError, rsrc.handle_create)
self.m.VerifyAll()
@ -307,7 +307,7 @@ class WaitConditionTest(HeatTestCase):
self.stack = self.create_stack(template=json.dumps(t), stub=False,
stack_id=stack_id)
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertRaises(ValueError, rsrc.handle_create)
self.m.VerifyAll()
@ -326,7 +326,7 @@ class WaitConditionTest(HeatTestCase):
self.stack = self.create_stack(stack_id=stack_id,
template=json.dumps(t), stub=False)
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertRaises(ValueError, rsrc.handle_create)
self.m.VerifyAll()
@ -345,7 +345,7 @@ class WaitConditionTest(HeatTestCase):
self.stack = self.create_stack(stack_id=stack_id,
template=json.dumps(t), stub=False)
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertRaises(ValueError, rsrc.handle_create)
self.m.VerifyAll()
@ -363,7 +363,7 @@ class WaitConditionTest(HeatTestCase):
self.stack = self.create_stack(stack_id=stack_id,
template=json.dumps(t), stub=False)
rsrc = self.stack.resources['WaitForTheHandle']
rsrc = self.stack['WaitForTheHandle']
self.assertRaises(ValueError, rsrc.handle_create)
self.m.VerifyAll()
@ -424,7 +424,7 @@ class WaitConditionHandleTest(HeatTestCase):
self.stack = self.create_stack(stack_id=stack_id,
stack_name=stack_name)
rsrc = self.stack.resources['WaitHandle']
rsrc = self.stack['WaitHandle']
# clear the url
db_api.resource_data_set(rsrc, 'ec2_signed_url', None, False)
@ -452,7 +452,7 @@ class WaitConditionHandleTest(HeatTestCase):
@utils.stack_delete_after
def test_metadata_update(self):
self.stack = self.create_stack()
rsrc = self.stack.resources['WaitHandle']
rsrc = self.stack['WaitHandle']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
test_metadata = {'Data': 'foo', 'Reason': 'bar',
@ -467,7 +467,7 @@ class WaitConditionHandleTest(HeatTestCase):
@utils.stack_delete_after
def test_metadata_update_invalid(self):
self.stack = self.create_stack()
rsrc = self.stack.resources['WaitHandle']
rsrc = self.stack['WaitHandle']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
# metadata_update should raise a ValueError if the metadata
@ -511,7 +511,7 @@ class WaitConditionHandleTest(HeatTestCase):
@utils.stack_delete_after
def test_get_status(self):
self.stack = self.create_stack()
rsrc = self.stack.resources['WaitHandle']
rsrc = self.stack['WaitHandle']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
# UnsetStubs, don't want get_status stubbed anymore..
@ -538,7 +538,7 @@ class WaitConditionHandleTest(HeatTestCase):
@utils.stack_delete_after
def test_get_status_reason(self):
self.stack = self.create_stack()
rsrc = self.stack.resources['WaitHandle']
rsrc = self.stack['WaitHandle']
self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
test_metadata = {'Data': 'foo', 'Reason': 'bar',