detailed,
netslice_subnets,
netslice_vlds,
+ old,
):
"""
**Create a package descriptor**
- detailed: include all possible values for NSD, VNFD, NST
- netslice_subnets: number of netslice_subnets for the NST
- netslice_vlds: number of virtual link descriptors for the NST
+ - old: flag to create a descriptor using the previous OSM format (pre SOL006, OSM<9)
:return: status
"""
file_loader = PackageLoader("osmclient")
env = Environment(loader=file_loader)
if package_type == "ns":
- template = env.get_template("nsd.yaml.j2")
+ template = env.get_template("nsd.yaml.j2" if not old else "nsd_old.yaml.j2")
content = {
"name": package_name,
"vendor": vendor,
"detailed": detailed,
}
elif package_type == "vnf":
- template = env.get_template("vnfd.yaml.j2")
+ template = env.get_template(
+ "vnfd.yaml.j2" if not old else "vnfd_old.yaml.j2"
+ )
content = {
"name": package_name,
"vendor": vendor,
"detailed": detailed,
}
elif package_type == "nst":
+ # TODO: repo-index did not support nst in OSM<9, no changes in template
template = env.get_template("nst.yaml.j2")
content = {
"name": package_name,
"Wrong descriptor type {}. Options: ns, vnf, nst".format(package_type)
)
- # print("To be rendered: {}".format(content))
+ self._logger.debug("To be rendered: {}".format(content))
output = template.render(content)
- # print(output)
+ self._logger.debug(output)
structure = self.discover_folder_structure(
base_directory, package_name, override
f for f in glob.glob(base_directory + "/*.yaml", recursive=recursive)
]
self._logger.info("Base directory: {}".format(base_directory))
- self._logger.info("{} Descriptors found to validate".format(len(descriptors_paths)))
+ self._logger.info(
+ "{} Descriptors found to validate".format(len(descriptors_paths))
+ )
for desc_path in descriptors_paths:
with open(desc_path) as descriptor_file:
descriptor_data = descriptor_file.read()
desc_type = "-"
try:
+ # TODO: refactor validation_im.yaml_validation to @staticmethod
desc_type, descriptor_data = validation_im.yaml_validation(
self, descriptor_data
)
{"type": desc_type, "path": desc_path, "valid": "OK", "error": "-"}
)
except Exception as e:
+ self._logger.error(f"Validation error: {e}", exc_info=True)
table.append(
{
"type": desc_type,
else:
if not os.path.isdir(
"{}/charms/{}".format(package_folder, charmName)
+ ) and not os.path.isfile(
+ "{}/charms/{}".format(package_folder, charmName)
):
raise ClientException(
"The charm: {} referenced in the descriptor file "
self._logger.debug(
"Copying tree: {} -> {}".format(s_charm, d_temp)
)
- shutil.copytree(
- s_charm, d_temp, symlinks=True, ignore=ignore
- )
+ if os.path.isdir(s_charm):
+ shutil.copytree(
+ s_charm, d_temp, symlinks=True, ignore=ignore
+ )
+ else:
+ shutil.copy2(s_charm, d_temp)
self._logger.debug("DONE")
else:
self._logger.debug("Copying tree: {} -> {}".format(s, d))