Skip to content

Commit 2cd0b0c

Browse files
committed
metadata files routines
1 parent 8d6fb94 commit 2cd0b0c

File tree

58 files changed

+7797
-2
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+7797
-2
lines changed

src/gardenlinux/constants.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,9 @@
155155

156156
GLVD_BASE_URL = "https://glvd.ingress.glvd.gardnlinux.shoot.canary.k8s-hana.ondemand.com/v1"
157157
GL_DEB_REPO_BASE_URL = "https://packages.gardenlinux.io/gardenlinux"
158+
159+
GARDENLINUX_GITHUB_RELEASE_BUCKET_NAME = "gardenlinux-github-releases"
160+
161+
# https://github.com/gardenlinux/gardenlinux/issues/3044
162+
# Empty string is the 'legacy' variant with traditional root fs and still needed/supported
163+
IMAGE_VARIANTS = ["", "_usi", "_tpm2_trustedboot"]

src/gardenlinux/github/release_notes/helpers.py

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
11
import gzip
22
import io
3+
import shutil
4+
from pathlib import Path
35

46
import requests
7+
from git import Repo
58

69
from gardenlinux.apt import DebsrcFile, GardenLinuxRepo
710
from gardenlinux.apt.package_repo_info import compare_repo
8-
from gardenlinux.constants import GL_DEB_REPO_BASE_URL, REQUESTS_TIMEOUTS
11+
from gardenlinux.constants import (
12+
GARDENLINUX_GITHUB_RELEASE_BUCKET_NAME,
13+
GL_DEB_REPO_BASE_URL,
14+
IMAGE_VARIANTS,
15+
REQUESTS_TIMEOUTS,
16+
)
17+
from gardenlinux.features import CName
18+
from gardenlinux.flavors import Parser as FlavorsParser
19+
from gardenlinux.logger import LoggerSetup
20+
from gardenlinux.s3 import S3Artifacts
21+
22+
LOGGER = LoggerSetup.get_logger("gardenlinux.github.release_notes.helpers", "INFO")
923

1024

1125
def get_package_list(gardenlinux_version):
@@ -33,3 +47,72 @@ def compare_apt_repo_versions(previous_version, current_version):
3347
for pkg in pkg_diffs:
3448
output += f"|{pkg[0]} | {pkg[1] if pkg[1] is not None else '-'} | {pkg[2] if pkg[2] is not None else '-'} |\n"
3549
return output
50+
51+
52+
def download_all_metadata_files(version, commitish):
53+
repo = Repo(".")
54+
commit = repo.commit(commitish)
55+
flavors_data = commit.tree["flavors.yaml"].data_stream.read().decode("utf-8")
56+
flavors = FlavorsParser(flavors_data).filter(only_publish=True)
57+
58+
local_dest_path = Path("s3_downloads")
59+
if local_dest_path.exists():
60+
shutil.rmtree(local_dest_path)
61+
local_dest_path.mkdir(mode=0o755, exist_ok=False)
62+
63+
s3_artifacts = S3Artifacts(GARDENLINUX_GITHUB_RELEASE_BUCKET_NAME)
64+
65+
commitish_short = commitish[:8]
66+
67+
for flavor in flavors:
68+
cname = CName(flavor[1], flavor[0], "{0}-{1}".format(version, commitish_short))
69+
LOGGER.debug(f"{flavor=} {version=} {commitish=}")
70+
# Filter by image variants - only download if the flavor matches one of the variants
71+
flavor_matches_variant = False
72+
for variant_suffix in IMAGE_VARIANTS:
73+
if variant_suffix == "":
74+
last_part = cname.cname.split("-")[-1]
75+
if "_" not in last_part:
76+
flavor_matches_variant = True
77+
break
78+
elif variant_suffix in cname.cname:
79+
# Specific variant (any non-empty string in IMAGE_VARIANTS)
80+
flavor_matches_variant = True
81+
break
82+
83+
if not flavor_matches_variant:
84+
LOGGER.info(
85+
f"Skipping flavor {cname.cname} - not matching image variants filter"
86+
)
87+
continue
88+
89+
try:
90+
download_metadata_file(
91+
s3_artifacts, cname.cname, version, commitish_short, local_dest_path
92+
)
93+
except IndexError:
94+
LOGGER.warn(f"No artifacts found for flavor {cname.cname}, skipping...")
95+
continue
96+
97+
return [str(artifact) for artifact in local_dest_path.iterdir()]
98+
99+
100+
def download_metadata_file(
101+
s3_artifacts, cname, version, commitish_short, artifacts_dir
102+
):
103+
"""
104+
Download metadata file (s3_metadata.yaml)
105+
"""
106+
LOGGER.debug(
107+
f"{s3_artifacts=} | {cname=} | {version=} | {commitish_short=} | {artifacts_dir=}"
108+
)
109+
release_object = list(
110+
s3_artifacts._bucket.objects.filter(
111+
Prefix=f"meta/singles/{cname}-{version}-{commitish_short}"
112+
)
113+
)[0]
114+
LOGGER.debug(f"{release_object.bucket_name=} | {release_object.key=}")
115+
116+
s3_artifacts._bucket.download_file(
117+
release_object.key, artifacts_dir.joinpath(f"{cname}.s3_metadata.yaml")
118+
)
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
architecture: amd64
2+
base_image: null
3+
build_committish: 75df9f401a842914563f312899ec3ce34b24515c
4+
build_timestamp: '2025-09-08T11:13:14.341330'
5+
gardenlinux_epoch: 1877
6+
logs: null
7+
modifiers:
8+
- log
9+
- sap
10+
- ssh
11+
- _legacy
12+
- _nopkg
13+
- _prod
14+
- _slim
15+
- base
16+
- server
17+
- cloud
18+
- ali
19+
- multipath
20+
- iscsi
21+
- nvme
22+
- gardener
23+
paths:
24+
- md5sum: 509c00f64279214b2b2da852eff090a5
25+
name: ali-gardener_prod-amd64-1877.3-75df9f40.manifest
26+
s3_bucket_name: gardenlinux-github-releases
27+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.manifest
28+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
29+
suffix: .manifest
30+
- md5sum: ad6ef2a783c3ff41121c4b737676e856
31+
name: ali-gardener_prod-amd64-1877.3-75df9f40.chroot.test.xml
32+
s3_bucket_name: gardenlinux-github-releases
33+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.chroot.test.xml
34+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
35+
suffix: .chroot.test.xml
36+
- md5sum: 82fa064efdb35805324dbd2ddb44798b
37+
name: ali-gardener_prod-amd64-1877.3-75df9f40.requirements
38+
s3_bucket_name: gardenlinux-github-releases
39+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.requirements
40+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
41+
suffix: .requirements
42+
- md5sum: ed2508739ef125509598fd59501cfab1
43+
name: ali-gardener_prod-amd64-1877.3-75df9f40.chroot.test.log
44+
s3_bucket_name: gardenlinux-github-releases
45+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.chroot.test.log
46+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
47+
suffix: .chroot.test.log
48+
- md5sum: 1f4b5a08ab62b46d129ca5d50687b0d8
49+
name: ali-gardener_prod-amd64-1877.3-75df9f40.qcow2
50+
s3_bucket_name: gardenlinux-github-releases
51+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.qcow2
52+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
53+
suffix: .qcow2
54+
- md5sum: 6fc647efdb84e2510c30eff2741a573c
55+
name: ali-gardener_prod-amd64-1877.3-75df9f40.manifest.log
56+
s3_bucket_name: gardenlinux-github-releases
57+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.manifest.log
58+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
59+
suffix: .manifest.log
60+
- md5sum: 99ffb5ea74e0799faca2737dc3bf8d89
61+
name: ali-gardener_prod-amd64-1877.3-75df9f40.qcow2.log
62+
s3_bucket_name: gardenlinux-github-releases
63+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.qcow2.log
64+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
65+
suffix: .qcow2.log
66+
- md5sum: 6fc647efdb84e2510c30eff2741a573c
67+
name: ali-gardener_prod-amd64-1877.3-75df9f40.requirements.log
68+
s3_bucket_name: gardenlinux-github-releases
69+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.requirements.log
70+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
71+
suffix: .requirements.log
72+
- md5sum: 6fc647efdb84e2510c30eff2741a573c
73+
name: ali-gardener_prod-amd64-1877.3-75df9f40.tar.log
74+
s3_bucket_name: gardenlinux-github-releases
75+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.tar.log
76+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
77+
suffix: .tar.log
78+
- md5sum: d2dab0252d2b9b7542a8255a1e7e4aa7
79+
name: ali-gardener_prod-amd64-1877.3-75df9f40.release
80+
s3_bucket_name: gardenlinux-github-releases
81+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.release
82+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
83+
suffix: .release
84+
- md5sum: 008002e0d4cf9a832756ae303b597e56
85+
name: ali-gardener_prod-amd64-1877.3-75df9f40.tar
86+
s3_bucket_name: gardenlinux-github-releases
87+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.tar
88+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
89+
suffix: .tar
90+
- md5sum: 6fc647efdb84e2510c30eff2741a573c
91+
name: ali-gardener_prod-amd64-1877.3-75df9f40.release.log
92+
s3_bucket_name: gardenlinux-github-releases
93+
s3_key: objects/ali-gardener_prod-amd64-1877.3-75df9f40/ali-gardener_prod-amd64-1877.3-75df9f40.release.log
94+
sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
95+
suffix: .release.log
96+
platform: ali
97+
published_image_metadata:
98+
published_alicloud_images:
99+
- image_id: m-m5efm8l2bltkbloui235
100+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
101+
region_id: cn-qingdao
102+
- image_id: m-2zee5ebi20ltzy5et7in
103+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
104+
region_id: cn-beijing
105+
- image_id: m-8vbddy2wfex9nb29afcy
106+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
107+
region_id: cn-zhangjiakou
108+
- image_id: m-hp3bx14og6cw9thujw1d
109+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
110+
region_id: cn-huhehaote
111+
- image_id: m-0jlh1iq2f3bryb5okjdk
112+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
113+
region_id: cn-wulanchabu
114+
- image_id: m-bp13aseh5a2wn0s5rdz6
115+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
116+
region_id: cn-hangzhou
117+
- image_id: m-uf61jbe9n8a9291h4u21
118+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
119+
region_id: cn-shanghai
120+
- image_id: m-gc77bfbctuzphl2bpk0o
121+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
122+
region_id: cn-nanjing
123+
- image_id: m-wz9gio8m5ey0foj0g4xx
124+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
125+
region_id: cn-shenzhen
126+
- image_id: m-f8zdn54v0blnsafxb1t5
127+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
128+
region_id: cn-heyuan
129+
- image_id: m-7xv0q5feffsxxyttxdy9
130+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
131+
region_id: cn-guangzhou
132+
- image_id: m-gw07bfbctuzphl2bpk0p
133+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
134+
region_id: cn-fuzhou
135+
- image_id: m-n4a1u2avlb9pq0u5bdms
136+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
137+
region_id: cn-wuhan-lr
138+
- image_id: m-2vc5saul2saa2z57h216
139+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
140+
region_id: cn-chengdu
141+
- image_id: m-j6c4zk6mwb2673iq5wrz
142+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
143+
region_id: cn-hongkong
144+
- image_id: m-6weibwo3vrt7ar7nelc9
145+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
146+
region_id: ap-northeast-1
147+
- image_id: m-mj73oldn06th2vy0ymhv
148+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
149+
region_id: ap-northeast-2
150+
- image_id: m-t4ngrf81d0fohwq493pw
151+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
152+
region_id: ap-southeast-1
153+
- image_id: m-8psd64gzc1eru0qld7cc
154+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
155+
region_id: ap-southeast-3
156+
- image_id: m-5tsdd6k3z1vvdyyio7zn
157+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
158+
region_id: ap-southeast-6
159+
- image_id: m-k1aj4usnhqcssa2fpy0c
160+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
161+
region_id: ap-southeast-5
162+
- image_id: m-0jo6uwekvn0gnwhwnq3s
163+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
164+
region_id: ap-southeast-7
165+
- image_id: m-0xi8netpfc2fdwfstz3c
166+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
167+
region_id: us-east-1
168+
- image_id: m-rj9gwpx907qv6p6x8w45
169+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
170+
region_id: us-west-1
171+
- image_id: m-4hfi34x77oaeznwuulq6
172+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
173+
region_id: na-south-1
174+
- image_id: m-d7o2ny5xc0m3kacxjbem
175+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
176+
region_id: eu-west-1
177+
- image_id: m-eb39mgohcec6gaynet9l
178+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
179+
region_id: me-east-1
180+
- image_id: m-gw86dlqmpaugljiykx91
181+
image_name: gardenlinux-ali-gardener_prod-amd64-1877.3-75df9f40
182+
region_id: eu-central-1
183+
require_uefi: false
184+
s3_bucket: gardenlinux-github-releases
185+
s3_key: meta/singles/ali-gardener_prod-amd64-1877.3-75df9f40
186+
secureboot: false
187+
test_result: null
188+
version: '1877.3'

0 commit comments

Comments
 (0)