heat_integrationtests.functional.test_template_resource Module¶heat_integrationtests.functional.test_template_resource.NestedAttributesTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that we can use the template resource references.
env_templ = '\nresource_registry:\n  "My::NestedSecret": nested.yaml\n'¶main_templ = '\nheat_template_version: 2014-10-16\nresources:\n  secret2:\n    type: My::NestedSecret\noutputs:\n  old_way:\n    value: { get_attr: [secret2, nested_str]}\n  test_attr1:\n    value: { get_attr: [secret2, resource.secret1, value]}\n  test_attr2:\n    value: { get_attr: [secret2, resource.secret1.value]}\n  test_ref:\n    value: { get_resource: secret2 }\n'¶heat_integrationtests.functional.test_template_resource.TemplateResourceAdoptTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that we can do template resource adopt/abandon.
main_template = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n"¶nested_templ = "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\nResources:\n  RealRandom:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [RealRandom, value]}\n"¶heat_integrationtests.functional.test_template_resource.TemplateResourceCheckTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that we can do template resource check.
main_template = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n"¶nested_templ = "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\nResources:\n  RealRandom:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [RealRandom, value]}\n"¶heat_integrationtests.functional.test_template_resource.TemplateResourceErrorMessageTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that nested stack errors don’t suck.
nested_templ = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  oops:\n    Type: OS::Heat::TestResource\n    Properties:\n      fail: true\n      wait_secs: 2\n"¶template = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  victim:\n    Type: fail.yaml\n"¶heat_integrationtests.functional.test_template_resource.TemplateResourceFacadeTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that we can use ResourceFacade in a HOT template.
main_template = '\nheat_template_version: 2013-05-23\nresources:\n  the_nested:\n    type: the.yaml\n    metadata:\n      foo: bar\noutputs:\n  value:\n    value: {get_attr: [the_nested, output]}\n'¶nested_templ = '\nheat_template_version: 2013-05-23\nresources:\n  test:\n    type: OS::Heat::TestResource\n    properties:\n      value: {"Fn::Select": [foo, {resource_facade: metadata}]}\noutputs:\n  output:\n    value: {get_attr: [test, output]}\n    '¶heat_integrationtests.functional.test_template_resource.TemplateResourceNewParamTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
main_template = '\nheat_template_version: 2013-05-23\nresources:\n  my_resource:\n    type: resource.yaml\n    properties:\n      value1: foo\n'¶main_template_update = '\nheat_template_version: 2013-05-23\nresources:\n  my_resource:\n    type: resource.yaml\n    properties:\n      value1: foo\n      value2: foo\n'¶nested_templ = '\nheat_template_version: 2013-05-23\nparameters:\n  value1:\n    type: string\nresources:\n  test:\n    type: OS::Heat::TestResource\n    properties:\n      value: {get_param: value1}\n'¶nested_templ_update = '\nheat_template_version: 2013-05-23\nparameters:\n  value1:\n    type: string\n  value2:\n    type: string\nresources:\n  test:\n    type: OS::Heat::TestResource\n    properties:\n      value:\n        str_replace:\n          template: VAL1-VAL2\n          params:\n            VAL1: {get_param: value1}\n            VAL2: {get_param: value2}\n'¶nested_templ_update_fail = '\nheat_template_version: 2013-05-23\nparameters:\n  value1:\n    type: string\n  value2:\n    type: string\nresources:\n  test:\n    type: OS::Heat::TestResource\n    properties:\n      fail: True\n      value:\n        str_replace:\n          template: VAL1-VAL2\n          params:\n            VAL1: {get_param: value1}\n            VAL2: {get_param: value2}\n'¶heat_integrationtests.functional.test_template_resource.TemplateResourceRemovedParamTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
main_template = '\nheat_template_version: 2013-05-23\nparameters:\n  value1:\n    type: string\n    default: foo\nresources:\n  my_resource:\n    type: resource.yaml\n    properties:\n       value1: {get_param: value1}\n'¶main_template_update = '\nheat_template_version: 2013-05-23\nresources:\n  my_resource:\n    type: resource.yaml\n'¶nested_templ = '\nheat_template_version: 2013-05-23\nparameters:\n  value1:\n    type: string\n    default: foo\nresources:\n  test:\n    type: OS::Heat::TestResource\n    properties:\n      value: {get_param: value1}\n'¶nested_templ_update = '\nheat_template_version: 2013-05-23\nparameters:\n  value1:\n    type: string\n    default: foo\n  value2:\n    type: string\n    default: bar\nresources:\n  test:\n    type: OS::Heat::TestResource\n    properties:\n      value:\n        str_replace:\n          template: VAL1-VAL2\n          params:\n            VAL1: {get_param: value1}\n            VAL2: {get_param: value2}\n'¶heat_integrationtests.functional.test_template_resource.TemplateResourceSuspendResumeTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that we can do template resource suspend/resume.
main_template = '\nheat_template_version: 2014-10-16\nparameters:\nresources:\n  the_nested:\n    type: the.yaml\n'¶nested_templ = '\nheat_template_version: 2014-10-16\nresources:\n  test_random_string:\n    type: OS::Heat::RandomString\n'¶heat_integrationtests.functional.test_template_resource.TemplateResourceTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that we can use the registry in a nested provider.
env_templ = '\nresource_registry:\n  "OS::Heat::RandomString": nested.yaml\n'¶nested_templ = '\nheat_template_version: 2013-05-23\nresources:\n  secret2:\n    type: OS::Heat::RandomString\noutputs:\n  value:\n    value: { get_attr: [secret2, value] }\n'¶template = '\nheat_template_version: 2013-05-23\nresources:\n  secret1:\n    type: OS::Heat::RandomString\noutputs:\n  secret-out:\n    value: { get_attr: [secret1, value] }\n'¶heat_integrationtests.functional.test_template_resource.TemplateResourceUpdateFailedTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that we can do updates on a nested stack to fix a stack.
main_template = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  keypair:\n    Type: OS::Nova::KeyPair\n    Properties:\n      name: replace-this\n      save_private_key: false\n  server:\n    Type: server_fail.yaml\n    DependsOn: keypair\n"¶nested_templ = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  RealRandom:\n    Type: OS::Heat::RandomString\n"¶heat_integrationtests.functional.test_template_resource.TemplateResourceUpdateTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that we can do template resource updates.
EXPECTED = ('update', 'nochange')¶NOCHANGE = 'nochange'¶UPDATE = 'update'¶attr_change_tmpl = "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\n  two:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n  something_else:\n    Value: just_a_string\n"¶content_change_tmpl = "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\n  two:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: yum\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"¶initial_tmpl = "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\n  two:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"¶main_template = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n      two: your_name\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n"¶main_template_add_prop = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n      two: your_name\n      three: third_name\n\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n"¶main_template_change_prop = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: updated_name\n      two: your_name\n\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n"¶main_template_remove_prop = "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n"¶prop_add_tmpl = "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: yikes\n    Type: String\n  two:\n    Default: foo\n    Type: String\n  three:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: three}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"¶prop_change_tmpl = "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: yikes\n    Type: String\n  two:\n    Default: foo\n    Type: String\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: two}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"¶prop_remove_tmpl = "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: yikes\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"¶scenarios = [('no_changes', {'expect': 'nochange', 'template': "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n      two: your_name\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n", 'provider': "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\n  two:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"}), ('main_tmpl_change', {'expect': 'update', 'template': "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: updated_name\n      two: your_name\n\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n", 'provider': "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\n  two:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"}), ('provider_change', {'expect': 'update', 'template': "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n      two: your_name\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n", 'provider': "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\n  two:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: yum\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"}), ('provider_props_change', {'expect': 'update', 'template': "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n      two: your_name\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n", 'provider': "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: yikes\n    Type: String\n  two:\n    Default: foo\n    Type: String\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: two}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"}), ('provider_props_add', {'expect': 'update', 'template': "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n      two: your_name\n      three: third_name\n\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n", 'provider': "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: yikes\n    Type: String\n  two:\n    Default: foo\n    Type: String\n  three:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: three}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"}), ('provider_props_remove', {'expect': 'nochange', 'template': "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n", 'provider': "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: yikes\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n"}), ('provider_attr_change', {'expect': 'nochange', 'template': "\nHeatTemplateFormatVersion: '2012-12-12'\nResources:\n  the_nested:\n    Type: the.yaml\n    Properties:\n      one: my_name\n      two: your_name\nOutputs:\n  identifier:\n    Value: {Ref: the_nested}\n  value:\n    Value: {'Fn::GetAtt': [the_nested, the_str]}\n", 'provider': "\nHeatTemplateFormatVersion: '2012-12-12'\nParameters:\n  one:\n    Default: foo\n    Type: String\n  two:\n    Default: bar\n    Type: String\n\nResources:\n  NestedResource:\n    Type: OS::Heat::RandomString\n    Properties:\n      salt: {Ref: one}\nOutputs:\n  the_str:\n    Value: {'Fn::GetAtt': [NestedResource, value]}\n  something_else:\n    Value: just_a_string\n"})]¶heat_integrationtests.functional.test_template_resource.ValidateFacadeTest(*args, **kwargs)[source]¶Bases: heat_integrationtests.functional.functional_base.FunctionalTestsBase
Prove that nested stack errors don’t suck.
env = '\nresource_registry:\n  OS::Thingy: facade.yaml\n  resources:\n    thisone:\n      OS::Thingy: concrete.yaml\n'¶templ_facade = '\nheat_template_version: 2015-04-30\nparameters:\n  one:\n    type: string\n  two:\n    type: string\noutputs:\n  here-it-is:\n    value: noop\n'¶template = '\nheat_template_version: 2015-10-15\nresources:\n  thisone:\n    type: OS::Thingy\n    properties:\n      one: pre\n      two: post\noutputs:\n  one:\n    value: {get_attr: [thisone, here-it-is]}\n'¶
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.