blob: 954dbde2d1ceaab10ad9e96098c8260016cee865 [file] [log] [blame]
Mohammed Naserbd5eaa12022-08-30 03:03:49 -04001#!/usr/bin/env python3
2
3import glob
4import json
5import requests
6import sys
7
8MATRIX = []
9
10RELEASES = sorted([r.split("/")[-1] for r in glob.glob("images/openstack/releases/*")])
11PROJECTS = sorted([r.split("/")[-1] for r in glob.glob("images/openstack/projects/*")])
12
13DATA = {}
14
Mohammed Naser81d183d2022-08-30 03:14:11 -040015if sys.argv[1] == "promote":
16 for release in RELEASES:
17 for project in PROJECTS:
18 ref = (
19 open(f"images/openstack/projects/{project}/{release}/ref", "r")
20 .read()
21 .strip()
22 )
23
24 r = requests.get(
25 f"https://quay.io/api/v1/repository/vexxhost/{project}/tag/?specificTag={release}"
26 )
27 tags = r.json().get("tags")
28 if len(tags) == 0:
29 MATRIX += [
30 {
31 "release": release,
32 "project": project,
33 }
34 ]
35 sha1_manifest_digest = tags[0].get("manifest_digest")
36
37 r = requests.get(
38 f"https://quay.io/api/v1/repository/vexxhost/{project}/tag/?specificTag={ref}"
39 )
40 tags = r.json().get("tags")
41 release_manifest_digest = tags[0].get("manifest_digest")
42
43 if release_manifest_digest != sha1_manifest_digest:
44 MATRIX += [
45 {
46 "release": release,
47 "project": project,
48 }
49 ]
50elif sys.argv[1] == "build":
Mohammed Naserbd5eaa12022-08-30 03:03:49 -040051 for release in RELEASES:
52 for project in PROJECTS:
53 ref = (
54 open(f"images/openstack/projects/{project}/{release}/ref", "r")
55 .read()
56 .strip()
57 )
58
59 r = requests.get(
60 f"https://quay.io/api/v1/repository/vexxhost/{project}/tag/?specificTag={ref}"
61 )
62
63 if r.json().get("tags") == []:
64 MATRIX += [
65 {
66 "release": release,
67 "project": project,
68 }
69 ]
70
Mohammed Naserbd5eaa12022-08-30 03:03:49 -040071
Mohammed Naser81d183d2022-08-30 03:14:11 -040072if len(MATRIX) != 0:
73 DATA = {
74 "fail-fast": False,
75 "matrix": {
76 "include": MATRIX,
77 },
78 }
Mohammed Naserbd5eaa12022-08-30 03:03:49 -040079json.dump(DATA, sys.stdout, separators=(",", ":"))