Enable print_output common function to print json and yaml from python dict or list
[osm/osmclient.git] / osmclient / sol005 / osmrepo.py
index d731e30..add5c18 100644 (file)
@@ -16,7 +16,6 @@
 OSM Repo API handling
 """
 import glob
 OSM Repo API handling
 """
 import glob
-import hashlib
 import logging
 from os import listdir, mkdir, getcwd, remove
 from os.path import isfile, isdir, join, abspath
 import logging
 from os import listdir, mkdir, getcwd, remove
 from os.path import isfile, isdir, join, abspath
@@ -29,6 +28,7 @@ from osm_im.validation import Validation as validation_im
 from osmclient.common.exceptions import ClientException
 from osmclient.common.package_tool import PackageTool
 from osmclient.sol005.repo import Repo
 from osmclient.common.exceptions import ClientException
 from osmclient.common.package_tool import PackageTool
 from osmclient.sol005.repo import Repo
+from osmclient.common import utils
 from packaging import version as versioning
 import requests
 import yaml
 from packaging import version as versioning
 import requests
 import yaml
@@ -147,7 +147,6 @@ class OSMRepo(Repo):
         return f_name
 
     def pkg_get(self, pkgtype, name, repo, version, filter):
         return f_name
 
     def pkg_get(self, pkgtype, name, repo, version, filter):
-
         pkg_name = self.get_pkg(pkgtype, name, repo, filter, version)
         if not pkg_name:
             raise ClientException("Package not found")
         pkg_name = self.get_pkg(pkgtype, name, repo, filter, version)
         if not pkg_name:
             raise ClientException("Package not found")
@@ -226,19 +225,6 @@ class OSMRepo(Repo):
             + str(len(glob.glob(destination + "/nst/*/*/metadata.yaml")))
         )
 
             + str(len(glob.glob(destination + "/nst/*/*/metadata.yaml")))
         )
 
-    def md5(self, fname):
-        """
-        Checksum generator
-        :param fname: file path
-        :return: checksum string
-        """
-        self._logger.debug("")
-        hash_md5 = hashlib.md5()
-        with open(fname, "rb") as f:
-            for chunk in iter(lambda: f.read(4096), b""):
-                hash_md5.update(chunk)
-        return hash_md5.hexdigest()
-
     def fields_building(self, descriptor_dict, file, package_type):
         """
         From an artifact descriptor, obtain the fields required for indexing
     def fields_building(self, descriptor_dict, file, package_type):
         """
         From an artifact descriptor, obtain the fields required for indexing
@@ -321,8 +307,8 @@ class OSMRepo(Repo):
             msg = f"Unexpected descriptor format {descriptor_dict}"
             self._logger.error(msg)
             raise ValueError(msg)
             msg = f"Unexpected descriptor format {descriptor_dict}"
             self._logger.error(msg)
             raise ValueError(msg)
-
-        fields["name"] = aux_dict.get("name")
+        # Repo search is based on 'name' entry in index.yaml. It is mandatory then
+        fields["name"] = aux_dict.get("name", aux_dict["product-name"])
         fields["id"] = aux_dict.get("id")
         fields["description"] = aux_dict.get("description")
         fields["vendor"] = aux_dict.get("vendor")
         fields["id"] = aux_dict.get("id")
         fields["description"] = aux_dict.get("description")
         fields["vendor"] = aux_dict.get("vendor")
@@ -371,7 +357,9 @@ class OSMRepo(Repo):
             else:
                 folder, descriptor_file = self.zip_extraction(path)
                 folder = join(origin, folder)
             else:
                 folder, descriptor_file = self.zip_extraction(path)
                 folder = join(origin, folder)
-                self._logger.debug(f"Kind is an artifact (tar.gz). Folder: {folder}. Descriptor_file: {descriptor_file}")
+                self._logger.debug(
+                    f"Kind is an artifact (tar.gz). Folder: {folder}. Descriptor_file: {descriptor_file}"
+                )
 
             self._logger.debug("Opening descriptor file: {}".format(descriptor_file))
 
 
             self._logger.debug("Opening descriptor file: {}".format(descriptor_file))
 
@@ -438,7 +426,7 @@ class OSMRepo(Repo):
                     path = pt.build(path)
                     self._logger.debug(f"Directory path {path}")
                     compressed = True
                     path = pt.build(path)
                     self._logger.debug(f"Directory path {path}")
                     compressed = True
-                fields["checksum"] = self.md5(path)
+                fields["checksum"] = utils.md5(path)
                 self.indexation(destination, path, package_type, fields)
 
         except Exception as e:
                 self.indexation(destination, path, package_type, fields)
 
         except Exception as e:
@@ -543,9 +531,9 @@ class OSMRepo(Repo):
             index["{}_packages".format(package_type)][fields.get("id")] = {
                 fields.get("version"): data_ind
             }
             index["{}_packages".format(package_type)][fields.get("id")] = {
                 fields.get("version"): data_ind
             }
-            index["{}_packages".format(package_type)][fields.get("id")][
-                "latest"
-            ] = fields.get("version")
+            index["{}_packages".format(package_type)][fields.get("id")]["latest"] = (
+                fields.get("version")
+            )
             yaml.safe_dump(
                 index,
                 open(join(destination, "index.yaml"), "w"),
             yaml.safe_dump(
                 index,
                 open(join(destination, "index.yaml"), "w"),