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
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
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")
+ 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
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")
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))
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:
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"),