Skip to content
Snippets Groups Projects
Unverified Commit 2710e984 authored by Max Gautier's avatar Max Gautier
Browse files

download_hash: argument handling with argparse

Allow the script to be called with a list of components, to only
download new versions checksums for those.
By default, we get new versions checksums for all supported (by the
script) components.
parent da0e445d
Branches
Tags
No related merge requests found
...@@ -8,6 +8,7 @@ import sys ...@@ -8,6 +8,7 @@ import sys
from itertools import count, groupby from itertools import count, groupby
from collections import defaultdict from collections import defaultdict
import argparse
import requests import requests
from ruamel.yaml import YAML from ruamel.yaml import YAML
from packaging.version import Version from packaging.version import Version
...@@ -28,7 +29,6 @@ def open_checksums_yaml(): ...@@ -28,7 +29,6 @@ def open_checksums_yaml():
def version_compare(version): def version_compare(version):
return Version(version.removeprefix("v")) return Version(version.removeprefix("v"))
def download_hash(minors):
downloads = { downloads = {
"containerd_archive": "https://github.com/containerd/containerd/releases/download/v{version}/containerd-{version}-{os}-{arch}.tar.gz.sha256sum", "containerd_archive": "https://github.com/containerd/containerd/releases/download/v{version}/containerd-{version}-{os}-{arch}.tar.gz.sha256sum",
"kubeadm": "https://dl.k8s.io/release/{version}/bin/linux/{arch}/kubeadm.sha256", "kubeadm": "https://dl.k8s.io/release/{version}/bin/linux/{arch}/kubeadm.sha256",
...@@ -36,6 +36,8 @@ def download_hash(minors): ...@@ -36,6 +36,8 @@ def download_hash(minors):
"kubelet": "https://dl.k8s.io/release/{version}/bin/linux/{arch}/kubelet.sha256", "kubelet": "https://dl.k8s.io/release/{version}/bin/linux/{arch}/kubelet.sha256",
"runc": "https://github.com/opencontainers/runc/releases/download/{version}/runc.sha256sum", "runc": "https://github.com/opencontainers/runc/releases/download/{version}/runc.sha256sum",
} }
def download_hash(only_downloads: [str]) -> None:
# Handle hashes not directly in one url per hash. Return dict of hashs indexed by arch # Handle hashes not directly in one url per hash. Return dict of hashs indexed by arch
download_hash_extract = { download_hash_extract = {
"runc": lambda hashes : { "runc": lambda hashes : {
...@@ -47,7 +49,8 @@ def download_hash(minors): ...@@ -47,7 +49,8 @@ def download_hash(minors):
data, yaml = open_checksums_yaml() data, yaml = open_checksums_yaml()
for download, url in downloads.items(): for download, url in (downloads if only_downloads == []
else {k:downloads[k] for k in downloads.keys() & only_downloads}).items():
checksum_name = f"{download}_checksums" checksum_name = f"{download}_checksums"
for arch, versions in data[checksum_name].items(): for arch, versions in data[checksum_name].items():
for minor, patches in groupby(versions.copy().keys(), lambda v : '.'.join(v.split('.')[:-1])): for minor, patches in groupby(versions.copy().keys(), lambda v : '.'.join(v.split('.')[:-1])):
...@@ -88,15 +91,8 @@ def download_hash(minors): ...@@ -88,15 +91,8 @@ def download_hash(minors):
yaml.dump(data, checksums_yml) yaml.dump(data, checksums_yml)
print(f"\n\nUpdated {CHECKSUMS_YML}\n") print(f"\n\nUpdated {CHECKSUMS_YML}\n")
parser = argparse.ArgumentParser(description=f"Add new patch versions hashes in {CHECKSUMS_YML}")
parser.add_argument('binaries', nargs='*', choices=downloads.keys())
def usage(): args = parser.parse_args()
print(f"USAGE:\n {sys.argv[0]} [k8s_version1] [[k8s_version2]....[k8s_versionN]]") download_hash(args.binaries)
def main(argv=None):
download_hash(sys.argv[1:])
return 0
if __name__ == "__main__":
sys.exit(main())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment