Skip to content

Commit 9f71d9e

Browse files
authored
K8SPSMDB-1498 Update versions for PSMDB 1.22.0 release (#500) (#502)
* K8SPSMDB-1498 Update versions for PSMDB 1.22.0 release * Update Mongo 7 image * Update operator and pbm hashes * Update Mongo 8 hashes
1 parent 54e8c19 commit 9f71d9e

5 files changed

Lines changed: 271 additions & 1 deletion

File tree

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import json
2+
import requests
3+
import sys
4+
import argparse
5+
6+
parser = argparse.ArgumentParser(
7+
description="Validate image hashes against Docker Hub manifest digests"
8+
)
9+
parser.add_argument("-f", "--file", required=True, help="Path to the JSON file")
10+
args = parser.parse_args()
11+
12+
json_file = args.file
13+
14+
with open(json_file) as f:
15+
data = json.load(f)
16+
17+
18+
def get_digest(image, arch="amd64"):
19+
repo, tag = image.split(":")
20+
21+
token_url = f"https://auth.docker.io/token?service=registry.docker.io&scope=repository:{repo}:pull"
22+
token = requests.get(token_url).json()["token"]
23+
24+
headers = {
25+
"Authorization": f"Bearer {token}",
26+
"Accept": "application/vnd.docker.distribution.manifest.list.v2+json",
27+
}
28+
r = requests.get(
29+
f"https://registry-1.docker.io/v2/{repo}/manifests/{tag}", headers=headers
30+
)
31+
r.raise_for_status()
32+
manifest_list = r.json()
33+
34+
if "manifests" in manifest_list:
35+
for m in manifest_list["manifests"]:
36+
if m["platform"]["architecture"] == arch:
37+
return m["digest"]
38+
raise ValueError(f"No manifest found for architecture {arch} in {image}")
39+
else:
40+
return r.headers["Docker-Content-Digest"]
41+
42+
43+
errors = []
44+
45+
46+
def check_hash(image, arch, expected_hash):
47+
try:
48+
digest = get_digest(image, arch)
49+
expected_digest = f"sha256:{expected_hash}"
50+
if digest == expected_digest:
51+
print(f"✅ {image} ({arch}) OK")
52+
return
53+
54+
print(f"❌ {image} ({arch}) mismatch: expected {expected_digest}, got {digest}")
55+
errors.append((image, arch, expected_hash, digest))
56+
except Exception as e:
57+
print(f"⚠️ Failed to check {image} ({arch}): {e}")
58+
errors.append((image, arch, expected_hash, "ERROR"))
59+
60+
61+
for version in data["versions"]:
62+
for product, versions in version["matrix"].items():
63+
for ver, details in versions.items():
64+
image = details["image_path"]
65+
66+
hash_checks = [
67+
("amd64", details.get("image_hash")),
68+
("arm64", details.get("image_hash_arm64")),
69+
]
70+
71+
checked_any_hash = False
72+
for arch, expected_hash in hash_checks:
73+
if expected_hash is None:
74+
continue
75+
76+
checked_any_hash = True
77+
check_hash(image, arch, expected_hash)
78+
79+
if not checked_any_hash:
80+
print(f"❌ {image} has no image_hash/image_hash_arm64")
81+
errors.append((image, "hash", "defined", "MISSING"))
82+
83+
if errors:
84+
print("\n❌ Some images did not match:")
85+
for img, arch, exp, got in errors:
86+
print(f"- {img} ({arch}): expected sha256:{exp}, got {got}")
87+
sys.exit(1)
88+
else:
89+
print("\nAll image hashes match Docker Hub!")

api-tests/apply_route_test.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func TestApplyShouldReturnJustOneVersion(t *testing.T) {
3636

3737
psmdbParams := &version_service.VersionServiceApplyParams{
3838
Apply: "latest",
39-
OperatorVersion: "1.21.2",
39+
OperatorVersion: "1.22.0",
4040
Product: "psmdb-operator",
4141
}
4242
psmdbParams.WithTimeout(2 * time.Second)
@@ -450,6 +450,7 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
450450
version string
451451
}{
452452
// test latest
453+
{"latest", "1.22.0", nil, "8.0.19-7"},
453454
{"latest", "1.21.2", nil, "8.0.17-6"},
454455
{"latest", "1.21.1", nil, "8.0.12-4"},
455456
{"latest", "1.21.0", nil, "8.0.12-4"},
@@ -473,13 +474,15 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
473474
{"latest", "1.7.0", nil, "4.4.3-5"},
474475
{"latest", "1.6.0", nil, "4.4.2-4"},
475476
{"latest", "1.5.0", nil, "4.2.8-8"},
477+
{"latest", "1.22.0", &v80, "8.0.19-7"},
476478
{"latest", "1.21.2", &v80, "8.0.17-6"},
477479
{"latest", "1.21.1", &v80, "8.0.12-4"},
478480
{"latest", "1.21.0", &v80, "8.0.12-4"},
479481
{"latest", "1.20.1", &v80, "8.0.8-3"},
480482
{"latest", "1.20.0", &v80, "8.0.8-3"},
481483
{"latest", "1.19.1", &v80, "8.0.4-1"},
482484
{"latest", "1.19.0", &v80, "8.0.4-1"},
485+
{"latest", "1.22.0", &v70, "7.0.30-16"},
483486
{"latest", "1.21.2", &v70, "7.0.28-15"},
484487
{"latest", "1.21.1", &v70, "7.0.24-13"},
485488
{"latest", "1.21.0", &v70, "7.0.24-13"},
@@ -492,6 +495,7 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
492495
{"latest", "1.16.2", &v70, "7.0.8-5"},
493496
{"latest", "1.16.1", &v70, "7.0.8-5"},
494497
{"latest", "1.16.0", &v70, "7.0.8-5"},
498+
{"latest", "1.22.0", &v60, "6.0.27-21"},
495499
{"latest", "1.21.2", &v60, "6.0.27-21"},
496500
{"latest", "1.21.1", &v60, "6.0.25-20"},
497501
{"latest", "1.21.0", &v60, "6.0.25-20"},
@@ -545,6 +549,7 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
545549
{"latest", "1.5.0", &v36, "3.6.19-7.0"},
546550

547551
// test recommended
552+
{"recommended", "1.22.0", nil, "8.0.19-7"},
548553
{"recommended", "1.21.2", nil, "8.0.17-6"},
549554
{"recommended", "1.21.1", nil, "8.0.12-4"},
550555
{"recommended", "1.21.0", nil, "8.0.12-4"},
@@ -568,9 +573,11 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
568573
{"recommended", "1.7.0", nil, "4.4.3-5"},
569574
{"recommended", "1.6.0", nil, "4.4.2-4"},
570575
{"recommended", "1.5.0", nil, "4.2.8-8"},
576+
{"recommended", "1.22.0", &v80, "8.0.19-7"},
571577
{"recommended", "1.21.2", &v80, "8.0.17-6"},
572578
{"recommended", "1.21.1", &v80, "8.0.12-4"},
573579
{"recommended", "1.21.0", &v80, "8.0.12-4"},
580+
{"recommended", "1.22.0", &v70, "7.0.30-16"},
574581
{"recommended", "1.21.2", &v70, "7.0.28-15"},
575582
{"recommended", "1.21.1", &v70, "7.0.24-13"},
576583
{"recommended", "1.21.0", &v70, "7.0.24-13"},
@@ -582,6 +589,7 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
582589
{"recommended", "1.16.2", &v70, "7.0.8-5"},
583590
{"recommended", "1.16.1", &v70, "7.0.8-5"},
584591
{"recommended", "1.16.0", &v70, "7.0.8-5"},
592+
{"recommended", "1.22.0", &v60, "6.0.27-21"},
585593
{"recommended", "1.21.2", &v60, "6.0.27-21"},
586594
{"recommended", "1.21.1", &v60, "6.0.25-20"},
587595
{"recommended", "1.21.0", &v60, "6.0.25-20"},
@@ -636,13 +644,15 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
636644
{"recommended", "1.5.0", &v36, "3.6.19-7.0"},
637645

638646
// test exact
647+
{"8.0.19-7", "1.22.0", nil, "8.0.19-7"},
639648
{"8.0.17-6", "1.21.2", nil, "8.0.17-6"},
640649
{"8.0.12-4", "1.21.1", nil, "8.0.12-4"},
641650
{"8.0.12-4", "1.21.0", nil, "8.0.12-4"},
642651
{"8.0.8-3", "1.20.1", nil, "8.0.8-3"},
643652
{"8.0.8-3", "1.20.0", nil, "8.0.8-3"},
644653
{"8.0.4-1", "1.19.1", nil, "8.0.4-1"},
645654
{"8.0.4-1", "1.19.0", nil, "8.0.4-1"},
655+
{"7.0.30-16", "1.22.0", nil, "7.0.30-16"},
646656
{"7.0.28-15", "1.21.2", nil, "7.0.28-15"},
647657
{"7.0.24-13", "1.21.1", nil, "7.0.24-13"},
648658
{"7.0.24-13", "1.21.0", nil, "7.0.24-13"},
@@ -655,6 +665,7 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
655665
{"7.0.8-5", "1.16.2", nil, "7.0.8-5"},
656666
{"7.0.8-5", "1.16.1", nil, "7.0.8-5"},
657667
{"7.0.8-5", "1.16.0", nil, "7.0.8-5"},
668+
{"6.0.27-21", "1.22.0", nil, "6.0.27-21"},
658669
{"6.0.27-21", "1.21.2", nil, "6.0.27-21"},
659670
{"6.0.25-20", "1.21.1", nil, "6.0.25-20"},
660671
{"6.0.25-20", "1.21.0", nil, "6.0.25-20"},
@@ -712,13 +723,15 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
712723
{"3.6.18-5.0", "1.5.0", nil, "3.6.18-5.0"},
713724

714725
//test with suffix
726+
{"8.0-latest", "1.22.0", nil, "8.0.19-7"},
715727
{"8.0-latest", "1.21.2", nil, "8.0.17-6"},
716728
{"8.0-latest", "1.21.1", nil, "8.0.12-4"},
717729
{"8.0-latest", "1.21.0", nil, "8.0.12-4"},
718730
{"8.0-latest", "1.20.1", nil, "8.0.8-3"},
719731
{"8.0-latest", "1.20.0", nil, "8.0.8-3"},
720732
{"8.0-latest", "1.19.1", nil, "8.0.4-1"},
721733
{"8.0-latest", "1.19.0", nil, "8.0.4-1"},
734+
{"7.0-latest", "1.22.0", nil, "7.0.30-16"},
722735
{"7.0-latest", "1.21.2", nil, "7.0.28-15"},
723736
{"7.0-latest", "1.21.1", nil, "7.0.24-13"},
724737
{"7.0-latest", "1.21.0", nil, "7.0.24-13"},
@@ -731,6 +744,7 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
731744
{"7.0-latest", "1.16.2", nil, "7.0.8-5"},
732745
{"7.0-latest", "1.16.1", nil, "7.0.8-5"},
733746
{"7.0-latest", "1.16.0", nil, "7.0.8-5"},
747+
{"6.0-latest", "1.22.0", nil, "6.0.27-21"},
734748
{"6.0-latest", "1.21.2", nil, "6.0.27-21"},
735749
{"6.0-latest", "1.21.1", nil, "6.0.25-20"},
736750
{"6.0-latest", "1.21.0", nil, "6.0.25-20"},
@@ -787,9 +801,11 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
787801
{"3.6-latest", "1.6.0", nil, "3.6.21-10.0"},
788802
{"3.6-latest", "1.5.0", nil, "3.6.19-7.0"},
789803

804+
{"8.0-recommended", "1.22.0", nil, "8.0.19-7"},
790805
{"8.0-recommended", "1.21.2", nil, "8.0.17-6"},
791806
{"8.0-recommended", "1.21.1", nil, "8.0.12-4"},
792807
{"8.0-recommended", "1.21.0", nil, "8.0.12-4"},
808+
{"7.0-recommended", "1.22.0", nil, "7.0.30-16"},
793809
{"7.0-recommended", "1.21.2", nil, "7.0.28-15"},
794810
{"7.0-recommended", "1.21.1", nil, "7.0.24-13"},
795811
{"7.0-recommended", "1.21.0", nil, "7.0.24-13"},
@@ -802,6 +818,8 @@ func TestApplyPsmdbReturnedVersions(t *testing.T) {
802818
{"7.0-recommended", "1.16.2", nil, "7.0.8-5"},
803819
{"7.0-recommended", "1.16.1", nil, "7.0.8-5"},
804820
{"7.0-recommended", "1.16.0", nil, "7.0.8-5"},
821+
{"6.0-recommended", "1.22.0", nil, "6.0.27-21"},
822+
{"6.0-recommended", "1.21.2", nil, "6.0.27-21"},
805823
{"6.0-recommended", "1.21.1", nil, "6.0.25-20"},
806824
{"6.0-recommended", "1.21.0", nil, "6.0.25-20"},
807825
{"6.0-recommended", "1.20.1", nil, "6.0.21-18"},

api-tests/operator_route_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ func TestOperatorRouteShouldReturnRightOperatorVersion(t *testing.T) {
5858
{"psmdb-operator", "1.21.0"},
5959
{"psmdb-operator", "1.21.1"},
6060
{"psmdb-operator", "1.21.2"},
61+
{"psmdb-operator", "1.22.0"},
6162
{"pg-operator", "1.1.0"},
6263
{"pg-operator", "1.2.0"},
6364
{"pg-operator", "1.3.0"},
@@ -187,6 +188,7 @@ func TestOperatorRoutePsmdbShouldReturnNotEmptyResponses(t *testing.T) {
187188
{"psmdb-operator", "1.21.0"},
188189
{"psmdb-operator", "1.21.1"},
189190
{"psmdb-operator", "1.21.2"},
191+
{"psmdb-operator", "1.22.0"},
190192
}
191193

192194
for _, c := range cases {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

0 commit comments

Comments
 (0)