X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fcommon%2Fpackage_tool.py;h=436053c5a442899e8bc08c0533d494f2a04cef14;hb=4054a86e8a9e206b36c53d84d67035646f0beee9;hp=1d7f57f190465c946f863b6b0b558a0270df3417;hpb=70208ca1de7ff0e91a17d8f918d5b6044e9fa388;p=osm%2Fosmclient.git diff --git a/osmclient/common/package_tool.py b/osmclient/common/package_tool.py index 1d7f57f..436053c 100644 --- a/osmclient/common/package_tool.py +++ b/osmclient/common/package_tool.py @@ -54,6 +54,7 @@ class PackageTool(object): detailed, netslice_subnets, netslice_vlds, + old, ): """ **Create a package descriptor** @@ -71,6 +72,7 @@ class PackageTool(object): - 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 """ @@ -79,7 +81,7 @@ class PackageTool(object): 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, @@ -89,7 +91,9 @@ class PackageTool(object): "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, @@ -103,6 +107,7 @@ class PackageTool(object): "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, @@ -117,9 +122,9 @@ class PackageTool(object): "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 @@ -150,12 +155,15 @@ class PackageTool(object): 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 ) @@ -179,6 +187,7 @@ class PackageTool(object): {"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, @@ -533,6 +542,8 @@ class PackageTool(object): 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 " @@ -714,9 +725,12 @@ class PackageTool(object): 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))