+ resources = r.get_nested_yaml(base_dir).get("resources", {})
+ for nrid, nresource_dict in resources.items(): # iterate through nested file until found target r type
+
+ if (
+ nresource_dict.get("type")
+ and nresource_dict.get("type") != nresource_type
+ ):
+ continue
+
+ for nparam in prop_iterator(nresource_dict, *nprops): # get iterator of all target parameters
+ if nparam: # iterator yields None if parameter isn't found
+ for k1, v1 in properties.items(): # found nparam, now comparing to parent template
+ if isinstance(v1, dict) and "get_param" in v1:
+ parameter = v1.get("get_param")
+ # k1: nested resource parameter definition
+ # parameter: parent parameter name
+ # nparam: nested parameter name
+
+ # resolve list params like [param, { get_param: index }]
+ if isinstance(nparam, list):
+ nparam = nparam[0]
+ if isinstance(parameter, list):
+ parameter = parameter[0]
+
+ if k1 != nparam: # we only care about the parameter we found in nested template
+ continue
+
+ if k1 != parameter:
+ msg = (
+ "{} property {} cannot change when passed into "
+ "a nested template. Nested parameter change detected in "
+ "resource {}: parent parameter = {}, nested parameter = {}".format(
+ nresource_type,
+ nprops,
+ resource_id,
+ parameter,
+ nparam,
+ )
+ )
+ invalid_parameters.append(msg)
+
+ assert not invalid_parameters, "\n".join(invalid_parameters)
+
+
+# @validates("R-708564")
+# def test_parameter_name_doesnt_change_in_nested_template(yaml_file):
+# check_nested_parameter_doesnt_change(yaml_file)
+
+@validates("R-708564")
+def test_server_name_parameter_name_doesnt_change_in_nested_template(heat_template):
+ check_nested_parameter_doesnt_change(heat_template, "OS::Nova::Server", "name")
+
+
+@validates("R-708564")
+def test_server_image_parameter_name_doesnt_change_in_nested_template(heat_template):
+ check_nested_parameter_doesnt_change(heat_template, "OS::Nova::Server", "image")
+
+
+@validates("R-708564")
+def test_server_flavor_parameter_name_doesnt_change_in_nested_template(heat_template):
+ check_nested_parameter_doesnt_change(heat_template, "OS::Nova::Server", "flavor")
+
+
+@validates("R-708564")
+def test_server_metadata_vnf_id_parameter_name_doesnt_change_in_nested_template(
+ heat_template
+):
+ check_nested_parameter_doesnt_change(
+ heat_template, "OS::Nova::Server", "metadata", "vnf_id"
+ )
+
+
+@validates("R-708564")
+def test_server_metadata_vf_module_id_parameter_name_doesnt_change_in_nested_template(
+ heat_template
+):
+ check_nested_parameter_doesnt_change(
+ heat_template, "OS::Nova::Server", "metadata", "vf_module_id"
+ )
+
+
+@validates("R-708564")
+def test_server_metadata_vnf_name_parameter_name_doesnt_change_in_nested_template(
+ heat_template
+):
+ check_nested_parameter_doesnt_change(
+ heat_template, "OS::Nova::Server", "metadata", "vnf_name"
+ )
+
+
+@validates("R-708564")
+def test_server_metadata_vf_module_name_parameter_name_doesnt_change_in_nested_template(
+ heat_template
+):
+ check_nested_parameter_doesnt_change(
+ heat_template, "OS::Nova::Server", "metadata", "vf_module_name"
+ )
+
+
+@validates("R-708564")
+def test_server_metadata_vm_role_parameter_name_doesnt_change_in_nested_template(
+ heat_template
+):
+ check_nested_parameter_doesnt_change(
+ heat_template, "OS::Nova::Server", "metadata", "vm_role"
+ )
+
+
+@validates("R-708564")
+def test_server_metadata_vf_module_index_parameter_name_doesnt_change_in_nested_template(
+ heat_template
+):
+ check_nested_parameter_doesnt_change(
+ heat_template, "OS::Nova::Server", "metadata", "vf_module_index"
+ )
+
+
+@validates("R-708564")
+def test_server_metadata_workload_context_parameter_name_doesnt_change_in_nested_template(
+ heat_template
+):
+ check_nested_parameter_doesnt_change(
+ heat_template, "OS::Nova::Server", "metadata", "workload_context"
+ )
+
+
+@validates("R-708564")
+def test_server_metadata_environment_context_parameter_name_doesnt_change_in_nested_template(
+ heat_template
+):
+ check_nested_parameter_doesnt_change(
+ heat_template, "OS::Nova::Server", "metadata", "environment_context"