예제 #1
0
    def setUp(self):
        super(TemplateSeedTests, self).setUp()

        self.seed_template = parser.parse_template(SEED_TEMPLATE)
        self.role_template = parser.parse_template(ROLE_TEMPLATE)
        self.destination_template = heat.Template()
        self.environment = heat.Environment()
예제 #2
0
    def test_compose_nested_resource(self):
        # Setup
        t = heat.Template()
        t.add_resource(heat.Resource('r1', 't1'))

        # With add_scaling enabled, the plan will automatically wrap the
        # added template in a grouping resource, so we can use that as the
        # test data.
        p = plan.DeploymentPlan(add_scaling=True)
        p.add_template('ns1', t, 't.yaml')

        # Test
        composed = composer.compose_template(p.master_template)

        # Verify
        template = yaml.safe_load(composed)

        self.assertEqual(1, len(template['resources']))
        wrapper_resource_name = plan._generate_group_id(
            plan._generate_resource_id('ns1'))
        group_resource = template['resources'][wrapper_resource_name]
        self.assertEqual(p.master_template.resources[0].resource_type,
                         group_resource['type'])

        self.assertTrue('resource_def' in group_resource['properties'])
        nested_resource_details = group_resource['properties']['resource_def']
        self.assertEqual(ns_utils.apply_resource_alias_namespace('ns1'),
                         nested_resource_details['type'])
예제 #3
0
    def test_add_remove_output(self):
        t = heat.Template()
        o = heat.Output('n', 'v')

        # Test Add
        t.add_output(o)
        self.assertEqual(1, len(t.outputs))
        self.assertEqual(o, t.outputs[0])
예제 #4
0
    def test_existing_pieces(self):
        # Test
        t = heat.Template()
        e = heat.Environment()
        p = plan.DeploymentPlan(master_template=t, environment=e)

        # Verify
        self.assertTrue(p.master_template is t)
        self.assertTrue(p.environment is e)
예제 #5
0
    def _generate_template(self):
        t = heat.Template()

        t.add_parameter(heat.Parameter('param-1', 'type-1'))
        t.add_parameter(heat.Parameter('param-2', 'type-2'))

        t.add_output(heat.Output('out-1', 'value-1'))
        t.add_output(heat.Output('out-2', 'value-2'))

        return t
예제 #6
0
    def test_add_template_with_colliding_namespace(self):
        # Test
        p = plan.DeploymentPlan()
        p.environment.add_parameter(
            heat.EnvironmentParameter('ns1::param-1', 'value-1'))
        t = heat.Template()
        t.add_parameter(heat.Parameter('param-2', 'type-1'))

        # Verify
        self.assertRaises(ValueError, p.add_template, 'ns1', t,
                          'template-1.yaml')
예제 #7
0
    def test_find_output_by_name(self):
        # Setup
        t = heat.Template()
        t.add_output(heat.Output('a', 'a1'))
        t.add_output(heat.Output('b', 'b1'))

        # Test
        found = t.find_output_by_name('b')

        # Verify
        self.assertEqual(found.value, 'b1')
예제 #8
0
    def test_remove_resource_by_id(self):
        # Test
        t = heat.Template()
        t.add_resource(heat.Resource('id1', 't1'))
        t.add_resource(heat.Resource('id2', 't2'))

        t.remove_resource_by_id('id1')

        # Verify
        self.assertEqual(1, len(t.resources))
        self.assertEqual(t.resources[0].resource_type, 't2')
예제 #9
0
    def test_find_parameter_group_by_label(self):
        # Setup
        t = heat.Template()
        t.add_parameter_group(heat.ParameterGroup('a', description='a1'))
        t.add_parameter_group(heat.ParameterGroup('b', description='b1'))

        # Test
        found = t.find_parameter_group_by_label('b')

        # Verify
        self.assertTrue(found is not None)
        self.assertEqual(found.description, 'b1')
예제 #10
0
    def test_find_resource_by_id(self):
        # Setup
        t = heat.Template()
        t.add_resource(heat.Resource('a', 'a1'))
        t.add_resource(heat.Resource('b', 'b1'))

        # Test
        found = t.find_resource_by_id('b')

        # Verify
        self.assertTrue(found is not None)
        self.assertEqual(found.resource_type, 'b1')
예제 #11
0
    def test_find_parameter_by_name(self):
        # Setup
        t = heat.Template()
        t.add_parameter(heat.Parameter('a', 'a1'))
        t.add_parameter(heat.Parameter('b', 'b1'))

        # Test
        found = t.find_parameter_by_name('b')

        # Verify
        self.assertTrue(found is not None)
        self.assertEqual(found.param_type, 'b1')
예제 #12
0
    def test_add_remove_resource(self):
        t = heat.Template()
        r = heat.Resource('id', 't')

        # Test Add
        t.add_resource(r)
        self.assertEqual(1, len(t.resources))
        self.assertEqual(r, t.resources[0])

        # Test Remove
        t.remove_resource(r)
        self.assertEqual(0, len(t.resources))
예제 #13
0
    def test_add_remove_parameter(self):
        t = heat.Template()
        p = heat.Parameter('test-param', 'test-type')

        # Test Add
        t.add_parameter(p)
        self.assertEqual(1, len(t.parameters))
        self.assertEqual(p, t.parameters[0])

        # Test Remove
        t.remove_parameter(p)
        self.assertEqual(0, len(t.parameters))
예제 #14
0
    def test_add_remove_parameter_group(self):
        t = heat.Template()
        pg = heat.ParameterGroup('test-label', 'test-desc')

        # Test Add
        t.add_parameter_group(pg)
        self.assertEqual(1, len(t.parameter_groups))
        self.assertEqual(pg, t.parameter_groups[0])

        # Test Remove
        t.remove_parameter_group(pg)
        self.assertEqual(0, len(t.parameter_groups))
예제 #15
0
    def test_init(self):
        # Test
        t = heat.Template(description='test template')
        str(t)  # should not raise an exception

        # Verify
        self.assertEqual(t.version, heat.DEFAULT_VERSION)
        self.assertEqual(t.description, 'test template')
        self.assertEqual(0, len(t.parameters))
        self.assertEqual(0, len(t.parameter_groups))
        self.assertEqual(0, len(t.resources))
        self.assertEqual(0, len(t.outputs))
예제 #16
0
    def test_remove_parameters_by_namespace(self):
        # Setup
        t = heat.Template()
        p1 = heat.Parameter(ns.apply_template_namespace('ns1', 'foo'), 't')
        p2 = heat.Parameter(ns.apply_template_namespace('ns2', 'bar'), 't')
        p3 = heat.Parameter(ns.apply_template_namespace('ns1', 'baz'), 't')

        t.add_parameter(p1)
        t.add_parameter(p2)
        t.add_parameter(p3)

        # Test
        t.remove_parameters_by_namespace('ns1')

        # Verify
        self.assertEqual(1, len(t.parameters))
        self.assertEqual(p2, t.parameters[0])
예제 #17
0
    def test_remove_outputs_by_namespace(self):
        # Setup
        t = heat.Template()

        o1 = heat.Output(ns.apply_template_namespace('ns1', 'foo'), 'v')
        o2 = heat.Output(ns.apply_template_namespace('ns2', 'bar'), 'v')
        o3 = heat.Output(ns.apply_template_namespace('ns1', 'foo'), 'v')

        t.add_output(o1)
        t.add_output(o2)
        t.add_output(o3)

        # Test
        t.remove_outputs_by_namespace('ns1')

        # Verify
        self.assertEqual(1, len(t.outputs))
        self.assertEqual(o2, t.outputs[0])
예제 #18
0
    def test_add_template_with_default_parameter_value(self):
        # Test
        p = plan.DeploymentPlan()
        t = heat.Template()
        t.add_parameter(heat.Parameter('param-1', 'type-1', default='d1'))
        t.add_parameter(heat.Parameter('param-2', 'type-2'))
        p.add_template('ns1', t, 'template-1.yaml')

        # Verify
        p1 = p.environment.parameters[0]
        self.assertEqual(ns_utils.apply_template_namespace('ns1', 'param-1'),
                         p1.name)
        self.assertEqual('d1', p1.value)

        p2 = p.environment.parameters[1]
        self.assertEqual(ns_utils.apply_template_namespace('ns1', 'param-2'),
                         p2.name)
        self.assertEqual('', p2.value)
예제 #19
0
    def _sample_template(self):
        t = heat.Template(description='template-desc')

        # Complex Parameter
        param = heat.Parameter('p1',
                               't1',
                               description='desc-1',
                               label='l1',
                               default='def-1',
                               hidden=True)
        param.add_constraint(
            heat.ParameterConstraint('t1', 'def-1', description='desc-1'))
        t.add_parameter(param)

        # Simple Parameter
        t.add_parameter(heat.Parameter('p2', 't2'))

        # Simple Parameter Group
        t.add_parameter_group(heat.ParameterGroup('l1'))

        # Complex Parameter Group
        group = heat.ParameterGroup('l2', description='d2')
        group.add_parameter_name('foo', 'bar', 'baz')
        t.add_parameter_group(group)

        # Complex Resource
        resource = heat.Resource('r1',
                                 't1',
                                 metadata='m1',
                                 depends_on='r2',
                                 update_policy={'u1': 'u2'},
                                 deletion_policy={'d1': 'd2'})
        t.add_resource(resource)

        # Simple Resource
        t.add_resource(heat.Resource('r2', 't2'))

        # Complex Output
        t.add_output(heat.Output('n1', 'v1', description='desc-1'))

        # Simple Output
        t.add_output(heat.Output('n2', 'v2'))

        return t
예제 #20
0
 def test_remove_parameter_not_found(self):
     t = heat.Template()
     self.assertRaises(ValueError, t.remove_parameter,
                       heat.Parameter('n', 't'))
예제 #21
0
 def test_remove_output_not_found(self):
     t = heat.Template()
     self.assertRaises(ValueError, t.remove_output, heat.Output('n', 'v'))
예제 #22
0
 def test_find_resource_by_id_missing(self):
     t = heat.Template()
     found = t.find_resource_by_id('missing')
     self.assertEqual(found, None)
예제 #23
0
 def test_find_parameter_by_name_missing(self):
     t = heat.Template()
     found = t.find_parameter_by_name('missing')
     self.assertEqual(found, None)
예제 #24
0
 def test_find_parameter_group_by_label_missing(self):
     t = heat.Template()
     found = t.find_parameter_group_by_label('missing')
     self.assertEqual(found, None)