- vdu["cloud-init"] = clout_init_content
- # remnove unused by RO configuration, monitoring, scaling
- vnfd_RO.pop("vnf-configuration", None)
- vnfd_RO.pop("monitoring-param", None)
- vnfd_RO.pop("scaling-group-descriptor", None)
+ elif vdu.get("cloud-init"):
+ cloud_init_content = vdu["cloud-init"]
+ else:
+ continue
+
+ env = Environment()
+ ast = env.parse(cloud_init_content)
+ mandatory_vars = meta.find_undeclared_variables(ast)
+ if mandatory_vars:
+ for var in mandatory_vars:
+ if not additionalParams or var not in additionalParams.keys():
+ raise LcmException("Variable '{}' defined at vnfd[id={}]:vdu[id={}]:cloud-init/cloud-init-"
+ "file, must be provided in the instantiation parameters inside the "
+ "'additionalParamsForVnf' block".format(var, vnfd["id"], vdu["id"]))
+ template = Template(cloud_init_content)
+ cloud_init_content = template.render(additionalParams)
+ vdu["cloud-init"] = cloud_init_content
+