diff options
25 files changed, 1000 insertions, 5 deletions
diff --git a/examples/launchconfig1.yaml b/examples/launchconfig1.yaml index 9127eab9..70ea2463 100644 --- a/examples/launchconfig1.yaml +++ b/examples/launchconfig1.yaml @@ -1,3 +1,4 @@ +HeatTemplateFormatVersion: '2012-12-12' Parameters: A: Type: String diff --git a/examples/launchconfig1_hot.yaml b/examples/launchconfig1_hot.yaml new file mode 100644 index 00000000..1354f469 --- /dev/null +++ b/examples/launchconfig1_hot.yaml @@ -0,0 +1,24 @@ +heat_template_version: 2013-05-23 +parameters: + A: + type: string + default: test1 + B: + type: string + default: test2 + resource1Image: + type: string + default: resource1 +resources: + notcomputeConfigBase: + type: AWS::AutoScaling::LaunchConfiguration + metadata: + OpenStack::Role: notcomputeConfig + a: {get_param: A} + b: {get_param: B} + resource1: + type: OS::Nova::Server + properties: + flavor: test_flavor + image: {get_param: resource1Image} + key_name: test_key diff --git a/examples/launchconfig2.yaml b/examples/launchconfig2.yaml index 1681637b..3ced0cc4 100644 --- a/examples/launchconfig2.yaml +++ b/examples/launchconfig2.yaml @@ -1,3 +1,4 @@ +HeatTemplateFormatVersion: '2012-12-12' Parameters: C: Type: String diff --git a/examples/launchconfig2_hot.yaml b/examples/launchconfig2_hot.yaml new file mode 100644 index 00000000..3bd5549d --- /dev/null +++ b/examples/launchconfig2_hot.yaml @@ -0,0 +1,20 @@ +heat_template_version: 2013-05-23 +parameters: + C: + type: string + default: test3 + resource2Image: + type: string + default: resource2 +resources: + notcomputeConfigMixin: + type: AWS::AutoScaling::LaunchConfiguration + metadata: + OpenStack::Role: notcomputeConfig + c: {get_param: C} + resource2: + type: OS::Nova::Server + properties: + flavor: test_flavor + image: {get_param: resource2Image} + key_name: test_key diff --git a/examples/launchconfig_result_hot.yaml b/examples/launchconfig_result_hot.yaml new file mode 100644 index 00000000..e3019f20 --- /dev/null +++ b/examples/launchconfig_result_hot.yaml @@ -0,0 +1,43 @@ +description: examples/launchconfig1_hot.yaml,examples/launchconfig2_hot.yaml +heat_template_version: '2013-05-23' +parameters: + A: + default: test1 + type: string + B: + default: test2 + type: string + C: + default: test3 + type: string + resource1Image: + default: resource1 + type: string + resource2Image: + default: resource2 + type: string +resources: + notcomputeConfig: + metadata: + OpenStack::Role: notcomputeConfig + a: + get_param: A + b: + get_param: B + c: + get_param: C + type: AWS::AutoScaling::LaunchConfiguration + resource1: + properties: + flavor: test_flavor + image: + get_param: resource1Image + key_name: test_key + type: OS::Nova::Server + resource2: + properties: + flavor: test_flavor + image: + get_param: resource2Image + key_name: test_key + type: OS::Nova::Server diff --git a/examples/lib_hot.yaml b/examples/lib_hot.yaml new file mode 100644 index 00000000..b5af05e4 --- /dev/null +++ b/examples/lib_hot.yaml @@ -0,0 +1,13 @@ +parameters: + ImportantValue: + default: a_default + type: string + BImage: + type: string +resources: + GenericB: + type: OS::Nova::Server + properties: + image: {get_param: BImage} + metadata: + my_meta: {get_param: ImportantValue} diff --git a/examples/scale1.yaml b/examples/scale1.yaml index bbe618da..6acb6049 100644 --- a/examples/scale1.yaml +++ b/examples/scale1.yaml @@ -1,3 +1,4 @@ +HeatTemplateFormatVersion: '2012-12-12' Resources: ComputeUser: Type: AWS::IAM::User diff --git a/examples/scale1_hot.yaml b/examples/scale1_hot.yaml new file mode 100644 index 00000000..5597bbbf --- /dev/null +++ b/examples/scale1_hot.yaml @@ -0,0 +1,32 @@ +heat_template_version: 2013-05-23 +resources: + ComputeUser: + type: AWS::IAM::User + properties: + Policies: [ { get_param: ComputeAccessPolicy } ] + GlobalAccessPolicy: + type: OS::Heat::AccessPolicy + NovaCompute0Key: + type: FileInclude + Path: examples/scale2_hot.yaml + SubKey: resources.NovaCompute0Key + NovaCompute0CompletionCondition: + type: FileInclude + Path: examples/scale2_hot.yaml + SubKey: resources.NovaCompute0CompletionCondition + NovaCompute0CompletionHandle: + type: FileInclude + Path: examples/scale2_hot.yaml + SubKey: resources.NovaCompute0CompletionHandle + NovaCompute0Config: + type: FileInclude + Path: examples/scale2_hot.yaml + SubKey: resources.NovaCompute0Config + parameters: + ComputeImage: "123" + RabbitUserName: "guest" + RabbitPassword: "guest" + NovaCompute0: + type: FileInclude + Path: examples/scale2_hot.yaml + SubKey: resources.NovaCompute0 diff --git a/examples/scale2_hot.yaml b/examples/scale2_hot.yaml new file mode 100644 index 00000000..8800a6c8 --- /dev/null +++ b/examples/scale2_hot.yaml @@ -0,0 +1,69 @@ +heat_template_version: 2013-05-23 +parameters: + ComputeImage: + type: string + RabbitUserName: + type: string + RabbitPassword: + type: string + hidden: true +resources: + ComputeAccessPolicy: + type: OS::Heat::AccessPolicy + properties: + AllowedResources: [ NovaCompute0 ] + NovaCompute0Key: + type: AWS::IAM::AccessKey + properties: + UserName: + get_param: ComputeUser + NovaCompute0CompletionCondition: + type: AWS::CloudFormation::WaitCondition + depends_on: notcompute + properties: + Handle: {get_resource: NovaCompute0CompletionHandle} + Count: '1' + Timeout: '1800' + NovaCompute0CompletionHandle: + type: AWS::CloudFormation::WaitConditionHandle + NovaCompute0: + type: OS::Nova::Server + properties: + image: + get_param: ComputeImage + metadata: + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute0Key + secret_access_key: + get_attr: [ NovaCompute0Key, SecretAccessKey ] + stack_name: {get_param: 'AWS::StackName'} + path: NovaCompute0Config.Metadata + NovaCompute0Config: + type: AWS::AutoScaling::LaunchConfiguration + metadata: + completion-handle: + get_resource: NovaCompute0CompletionHandle + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute0Key + secret_access_key: + get_attr: [ NovaCompute0Key, SecretAccessKey ] + stack_name: {get_param: 'AWS::StackName'} + path: NovaCompute0Config.Metadata + neutron: + ovs: + local_ip: + Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute0 + - networks + rabbit: + username: {get_param: RabbitUserName} + password: {get_param: RabbitPassword} + diff --git a/examples/scale_map.yaml b/examples/scale_map.yaml index 7c79ad57..08bcbf7c 100644 --- a/examples/scale_map.yaml +++ b/examples/scale_map.yaml @@ -1,3 +1,4 @@ +HeatTemplateFormatVersion: '2012-12-12' Resources: ComputeUser: Type: AWS::IAM::User diff --git a/examples/scale_map2_hot.yaml b/examples/scale_map2_hot.yaml new file mode 100644 index 00000000..b2b6dfbb --- /dev/null +++ b/examples/scale_map2_hot.yaml @@ -0,0 +1,54 @@ +heat_template_version: 2013-05-23 +parameters: + AllHosts: + type: string + ComputeImage: + type: string +resources: + ComputeAccessPolicy: + type: OS::Heat::AccessPolicy + properties: + AllowedResources: [ NovaCompute0 ] + NovaCompute0Key: + type: AWS::IAM::AccessKey + properties: + UserName: + get_param: ComputeUser + NovaCompute0CompletionCondition: + type: AWS::CloudFormation::WaitCondition + depends_on: notcompute + properties: + Handle: {get_resource: NovaCompute0CompletionHandle} + Count: '1' + Timeout: '1800' + NovaCompute0CompletionHandle: + type: AWS::CloudFormation::WaitConditionHandle + NovaCompute0: + type: OS::Nova::Server + properties: + image: + get_param: ComputeImage + metadata: + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute0Key + secret_access_key: + get_attr: [ NovaCompute0Key, SecretAccessKey ] + stack_name: {get_param: 'AWS::StackName'} + path: NovaCompute0Config.Metadata + NovaCompute0Config: + type: AWS::AutoScaling::LaunchConfiguration + metadata: + completion-handle: + get_resource: NovaCompute0CompletionHandle + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute0Key + secret_access_key: + get_attr: [ NovaCompute0Key, SecretAccessKey ] + stack_name: {get_param: 'AWS::StackName'} + path: NovaCompute0Config.Metadata + hosts: + get_param: AllHosts diff --git a/examples/scale_map_hot.yaml b/examples/scale_map_hot.yaml new file mode 100644 index 00000000..282d49bb --- /dev/null +++ b/examples/scale_map_hot.yaml @@ -0,0 +1,56 @@ +heat_template_version: 2013-05-23 +resources: + ComputeUser: + type: AWS::IAM::User + properties: + Policies: [ { get_param: ComputeAccessPolicy } ] + GlobalAccessPolicy: + type: OS::Heat::AccessPolicy + NovaCompute0Key: + type: FileInclude + Path: examples/scale_map2_hot.yaml + SubKey: resources.NovaCompute0Key + NovaCompute0CompletionCondition: + type: FileInclude + Path: examples/scale_map2_hot.yaml + SubKey: resources.NovaCompute0CompletionCondition + NovaCompute0CompletionHandle: + type: FileInclude + Path: examples/scale_map2_hot.yaml + SubKey: resources.NovaCompute0CompletionHandle + NovaCompute0Config: + type: FileInclude + Path: examples/scale_map2_hot.yaml + SubKey: resources.NovaCompute0Config + parameters: + AllHosts: + list_join: + - "\n" + - Merge::Map: + NovaCompute0: + list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute0 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute0 + - show + - list_join: + - '.' + - - Fn::Select: + - name + - get_attr: + - NovaCompute0 + - show + - 'local' + NovaCompute0: + type: FileInclude + Path: examples/scale_map2_hot.yaml + SubKey: resources.NovaCompute0 diff --git a/examples/scale_map_result_hot.yaml b/examples/scale_map_result_hot.yaml new file mode 100644 index 00000000..5976e54e --- /dev/null +++ b/examples/scale_map_result_hot.yaml @@ -0,0 +1,367 @@ +description: examples/scale_map_hot.yaml +heat_template_version: '2013-05-23' +resources: + ComputeUser: + properties: + Policies: + - get_param: ComputeAccessPolicy + type: AWS::IAM::User + GlobalAccessPolicy: + type: OS::Heat::AccessPolicy + NovaCompute0: + metadata: + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute0Key + path: NovaCompute0Config.Metadata + secret_access_key: + get_attr: + - NovaCompute0Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + properties: + image: + get_param: ComputeImage + type: OS::Nova::Server + NovaCompute0CompletionCondition: + depends_on: notcompute + properties: + Count: '1' + Handle: + get_resource: NovaCompute0CompletionHandle + Timeout: '1800' + type: AWS::CloudFormation::WaitCondition + NovaCompute0CompletionHandle: + type: AWS::CloudFormation::WaitConditionHandle + NovaCompute0Config: + metadata: + completion-handle: + get_resource: NovaCompute0CompletionHandle + hosts: + list_join: + - ' + + ' + - - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute0 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute0 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute0 + - show + - local + - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute1 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute1 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute1 + - show + - local + - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute2 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute2 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute2 + - show + - local + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute0Key + path: NovaCompute0Config.Metadata + secret_access_key: + get_attr: + - NovaCompute0Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + type: AWS::AutoScaling::LaunchConfiguration + NovaCompute0Key: + properties: + UserName: + get_param: ComputeUser + type: AWS::IAM::AccessKey + NovaCompute1: + metadata: + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute1Key + path: NovaCompute1Config.Metadata + secret_access_key: + get_attr: + - NovaCompute1Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + properties: + image: + get_param: ComputeImage + type: OS::Nova::Server + NovaCompute1CompletionCondition: + depends_on: notcompute + properties: + Count: '1' + Handle: + get_resource: NovaCompute1CompletionHandle + Timeout: '1800' + type: AWS::CloudFormation::WaitCondition + NovaCompute1CompletionHandle: + type: AWS::CloudFormation::WaitConditionHandle + NovaCompute1Config: + metadata: + completion-handle: + get_resource: NovaCompute1CompletionHandle + hosts: + list_join: + - ' + + ' + - - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute0 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute0 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute0 + - show + - local + - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute1 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute1 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute1 + - show + - local + - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute2 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute2 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute2 + - show + - local + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute1Key + path: NovaCompute1Config.Metadata + secret_access_key: + get_attr: + - NovaCompute1Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + type: AWS::AutoScaling::LaunchConfiguration + NovaCompute1Key: + properties: + UserName: + get_param: ComputeUser + type: AWS::IAM::AccessKey + NovaCompute2: + metadata: + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute2Key + path: NovaCompute2Config.Metadata + secret_access_key: + get_attr: + - NovaCompute2Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + properties: + image: + get_param: ComputeImage + type: OS::Nova::Server + NovaCompute2CompletionCondition: + depends_on: notcompute + properties: + Count: '1' + Handle: + get_resource: NovaCompute2CompletionHandle + Timeout: '1800' + type: AWS::CloudFormation::WaitCondition + NovaCompute2CompletionHandle: + type: AWS::CloudFormation::WaitConditionHandle + NovaCompute2Config: + metadata: + completion-handle: + get_resource: NovaCompute2CompletionHandle + hosts: + list_join: + - ' + + ' + - - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute0 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute0 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute0 + - show + - local + - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute1 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute1 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute1 + - show + - local + - list_join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute2 + - networks + - Fn::Select: + - name + - get_attr: + - NovaCompute2 + - show + - list_join: + - . + - - Fn::Select: + - name + - get_attr: + - NovaCompute2 + - show + - local + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute2Key + path: NovaCompute2Config.Metadata + secret_access_key: + get_attr: + - NovaCompute2Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + type: AWS::AutoScaling::LaunchConfiguration + NovaCompute2Key: + properties: + UserName: + get_param: ComputeUser + type: AWS::IAM::AccessKey diff --git a/examples/scale_result_hot.yaml b/examples/scale_result_hot.yaml new file mode 100644 index 00000000..17c05147 --- /dev/null +++ b/examples/scale_result_hot.yaml @@ -0,0 +1,193 @@ +description: examples/scale1_hot.yaml +heat_template_version: '2013-05-23' +resources: + ComputeUser: + properties: + Policies: + - get_param: ComputeAccessPolicy + type: AWS::IAM::User + GlobalAccessPolicy: + type: OS::Heat::AccessPolicy + NovaCompute0: + metadata: + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute0Key + path: NovaCompute0Config.Metadata + secret_access_key: + get_attr: + - NovaCompute0Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + properties: + image: + get_param: ComputeImage + type: OS::Nova::Server + NovaCompute0CompletionCondition: + depends_on: notcompute + properties: + Count: '1' + Handle: + get_resource: NovaCompute0CompletionHandle + Timeout: '1800' + type: AWS::CloudFormation::WaitCondition + NovaCompute0CompletionHandle: + type: AWS::CloudFormation::WaitConditionHandle + NovaCompute0Config: + metadata: + completion-handle: + get_resource: NovaCompute0CompletionHandle + neutron: + ovs: + local_ip: + Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute0 + - networks + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute0Key + path: NovaCompute0Config.Metadata + secret_access_key: + get_attr: + - NovaCompute0Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + rabbit: + password: guest + username: guest + type: AWS::AutoScaling::LaunchConfiguration + NovaCompute0Key: + properties: + UserName: + get_param: ComputeUser + type: AWS::IAM::AccessKey + NovaCompute1: + metadata: + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute1Key + path: NovaCompute1Config.Metadata + secret_access_key: + get_attr: + - NovaCompute1Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + properties: + image: + get_param: ComputeImage + type: OS::Nova::Server + NovaCompute1CompletionCondition: + depends_on: notcompute + properties: + Count: '1' + Handle: + get_resource: NovaCompute1CompletionHandle + Timeout: '1800' + type: AWS::CloudFormation::WaitCondition + NovaCompute1CompletionHandle: + type: AWS::CloudFormation::WaitConditionHandle + NovaCompute1Config: + metadata: + completion-handle: + get_resource: NovaCompute1CompletionHandle + neutron: + ovs: + local_ip: + Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute1 + - networks + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute1Key + path: NovaCompute1Config.Metadata + secret_access_key: + get_attr: + - NovaCompute1Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + rabbit: + password: guest + username: guest + type: AWS::AutoScaling::LaunchConfiguration + NovaCompute1Key: + properties: + UserName: + get_param: ComputeUser + type: AWS::IAM::AccessKey + NovaCompute2: + metadata: + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute2Key + path: NovaCompute2Config.Metadata + secret_access_key: + get_attr: + - NovaCompute2Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + properties: + image: + get_param: ComputeImage + type: OS::Nova::Server + NovaCompute2CompletionCondition: + depends_on: notcompute + properties: + Count: '1' + Handle: + get_resource: NovaCompute2CompletionHandle + Timeout: '1800' + type: AWS::CloudFormation::WaitCondition + NovaCompute2CompletionHandle: + type: AWS::CloudFormation::WaitConditionHandle + NovaCompute2Config: + metadata: + completion-handle: + get_resource: NovaCompute2CompletionHandle + neutron: + ovs: + local_ip: + Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - get_attr: + - NovaCompute2 + - networks + os-collect-config: + cfn: + access_key_id: + get_resource: NovaCompute2Key + path: NovaCompute2Config.Metadata + secret_access_key: + get_attr: + - NovaCompute2Key + - SecretAccessKey + stack_name: + get_param: AWS::StackName + rabbit: + password: guest + username: guest + type: AWS::AutoScaling::LaunchConfiguration + NovaCompute2Key: + properties: + UserName: + get_param: ComputeUser + type: AWS::IAM::AccessKey diff --git a/examples/source.yaml b/examples/source.yaml index 89707a7b..88f0bde7 100644 --- a/examples/source.yaml +++ b/examples/source.yaml @@ -1,7 +1,8 @@ +HeatTemplateFormatVersion: '2012-12-12' Parameters: SourceImage: - Type: String - Default: my_image + Type: String + Default: my_image Resources: A: Type: OS::Nova::Server diff --git a/examples/source2_hot.yaml b/examples/source2_hot.yaml new file mode 100644 index 00000000..e3861a6c --- /dev/null +++ b/examples/source2_hot.yaml @@ -0,0 +1,4 @@ +__include__: + path: examples/lib_hot.yaml + params: + ImportantValue: Foo diff --git a/examples/source2_lib_result_hot.yaml b/examples/source2_lib_result_hot.yaml new file mode 100644 index 00000000..3f891e47 --- /dev/null +++ b/examples/source2_lib_result_hot.yaml @@ -0,0 +1,16 @@ +description: examples/source2_hot.yaml +heat_template_version: '2013-05-23' +parameters: + BImage: + type: string + ImportantValue: + default: a_default + type: string +resources: + GenericB: + metadata: + my_meta: Foo + properties: + image: + get_param: BImage + type: OS::Nova::Server diff --git a/examples/source_hot.yaml b/examples/source_hot.yaml new file mode 100644 index 00000000..e8dd59a3 --- /dev/null +++ b/examples/source_hot.yaml @@ -0,0 +1,16 @@ +heat_template_version: 2013-05-23 +parameters: + SourceImage: + type: string + default: my_image +resources: + A: + type: OS::Nova::Server + properties: + image: {get_param: SourceImage} + B: + type: FileInclude + Path: examples/lib_hot.yaml + SubKey: resources.GenericB + parameters: + ImportantValue: {list_join: [ '', ['one', 'two', 'three']]} diff --git a/examples/source_include_subkey.yaml b/examples/source_include_subkey.yaml index be344cd8..37591d80 100644 --- a/examples/source_include_subkey.yaml +++ b/examples/source_include_subkey.yaml @@ -1,3 +1,4 @@ +HeatTemplateFormatVersion: '2012-12-12' Parameters: Foo: Type: String diff --git a/examples/source_include_subkey_hot.yaml b/examples/source_include_subkey_hot.yaml new file mode 100644 index 00000000..b330efe6 --- /dev/null +++ b/examples/source_include_subkey_hot.yaml @@ -0,0 +1,11 @@ +heat_template_version: 2013-05-23 +parameters: + Foo: + type: string +resources: + __include__: + path: examples/lib_hot.yaml + subkey: resources + params: + BImage: + get_param: Foo diff --git a/examples/source_include_subkey_result_hot.yaml b/examples/source_include_subkey_result_hot.yaml new file mode 100644 index 00000000..f8853c23 --- /dev/null +++ b/examples/source_include_subkey_result_hot.yaml @@ -0,0 +1,14 @@ +description: examples/source_include_subkey_hot.yaml +heat_template_version: '2013-05-23' +parameters: + Foo: + type: string +resources: + GenericB: + metadata: + my_meta: + get_param: ImportantValue + properties: + image: + get_param: Foo + type: OS::Nova::Server diff --git a/examples/source_lib_result.yaml b/examples/source_lib_result.yaml index ceb8a321..5844c813 100644 --- a/examples/source_lib_result.yaml +++ b/examples/source_lib_result.yaml @@ -1,9 +1,9 @@ Description: examples/source.yaml HeatTemplateFormatVersion: '2012-12-12' Parameters: - Default: my_image - SourceImage: null - Type: String + SourceImage: + Default: my_image + Type: String Resources: A: Properties: diff --git a/examples/source_lib_result_hot.yaml b/examples/source_lib_result_hot.yaml new file mode 100644 index 00000000..4c07da0c --- /dev/null +++ b/examples/source_lib_result_hot.yaml @@ -0,0 +1,24 @@ +description: examples/source_hot.yaml +heat_template_version: '2013-05-23' +parameters: + SourceImage: + default: my_image + type: string +resources: + A: + properties: + image: + get_param: SourceImage + type: OS::Nova::Server + B: + metadata: + my_meta: + list_join: + - '' + - - one + - two + - three + properties: + image: + get_param: BImage + type: OS::Nova::Server diff --git a/test_merge.bash b/test_merge.bash index 19d75377..d076f50a 100755 --- a/test_merge.bash +++ b/test_merge.bash @@ -30,6 +30,12 @@ run_test "python $merge_py examples/source_include_subkey.yaml" examples/source_ run_test "python $merge_py examples/launchconfig1.yaml examples/launchconfig2.yaml" examples/launchconfig_result.yaml run_test "python $merge_py --scale NovaCompute=3 examples/scale1.yaml" examples/scale_result.yaml run_test "python $merge_py --scale NovaCompute=3 examples/scale_map.yaml" examples/scale_map_result.yaml +run_test "python $merge_py --hot examples/source_hot.yaml" examples/source_lib_result_hot.yaml +run_test "python $merge_py --hot examples/source2_hot.yaml" examples/source2_lib_result_hot.yaml +run_test "python $merge_py --hot examples/source_include_subkey_hot.yaml" examples/source_include_subkey_result_hot.yaml +run_test "python $merge_py --hot examples/launchconfig1_hot.yaml examples/launchconfig2_hot.yaml" examples/launchconfig_result_hot.yaml +run_test "python $merge_py --hot --scale NovaCompute=3 examples/scale1_hot.yaml" examples/scale_result_hot.yaml +run_test "python $merge_py --hot --scale NovaCompute=3 examples/scale_map_hot.yaml" examples/scale_map_result_hot.yaml echo trap - EXIT exit $fail diff --git a/tripleo_heat_merge/merge.py b/tripleo_heat_merge/merge.py index d919d02c..077bcb1c 100644 --- a/tripleo_heat_merge/merge.py +++ b/tripleo_heat_merge/merge.py @@ -23,6 +23,25 @@ class Cfn(object): get_attr = 'Fn::GetAtt' +class Hot(object): + + base_template = { + 'heat_template_version': '2013-05-23', + 'description': [] + } + get_resource = 'get_resource' + get_param = 'get_param' + description = 'description' + parameters = 'parameters' + outputs = 'outputs' + resources = 'resources' + type = 'type' + properties = 'properties' + metadata = 'metadata' + depends_on = 'depends_on' + get_attr = 'get_attr' + + lang = Cfn() @@ -241,7 +260,15 @@ def main(argv=None): help="Change parameters in templates to match resource names. This was " " the default at one time but it causes issues when parameter " " names need to remain stable.") + parser.add_argument( + '--hot', action='store_true', default=False, + help="Assume source templates are in the HOT format, and generate a " + "HOT template artifact.") args = parser.parse_args(argv) + if args.hot: + global lang + lang = Hot() + templates = args.templates scaling = parse_scaling(args.scale) merged_template = merge(templates, args.master_role, args.slave_roles, |