Skip to content

Commit fca8ae1

Browse files
committed
feat: update product version loading to support both old and new configurations
1 parent b7113c3 commit fca8ae1

File tree

1 file changed

+47
-23
lines changed

1 file changed

+47
-23
lines changed

stack_scanner/main.py

Lines changed: 47 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -88,29 +88,53 @@ def main():
8888
f"{release}-{arch}",
8989
)
9090

91-
# Load product versions using boil
92-
result = subprocess.run(
93-
["cargo", "boil", "show", "images"],
94-
cwd="docker-images",
95-
capture_output=True,
96-
text=True,
97-
)
98-
if result.returncode != 0:
99-
print("Failed to get product versions:", result.stderr)
100-
sys.exit(1)
101-
product_versions = json.loads(result.stdout)
102-
103-
for product_name, versions in product_versions.items():
104-
if product_name in excluded_products:
105-
continue
106-
for version in versions:
107-
product_version = f"{version}-stackable{release}"
108-
scan_image(
109-
secobserve_api_token,
110-
f"{REGISTRY_URL}/sdp/{product_name}:{product_version}-{arch}",
111-
product_name,
112-
f"{product_version}-{arch}",
113-
)
91+
# Check if conf.py exists (old format) or use boil (new format)
92+
conf_py_path = "docker-images/conf.py"
93+
if os.path.exists(conf_py_path):
94+
# Use old conf.py based approach
95+
print("Using conf.py based configuration")
96+
from image_tools.args import load_configuration
97+
sys.path.append("docker-images")
98+
product_versions_config = load_configuration(conf_py_path)
99+
100+
for product in product_versions_config.products:
101+
product_name: str = product["name"]
102+
if product_name in excluded_products:
103+
continue
104+
for version_dict in product.get("versions", []):
105+
version: str = version_dict["product"]
106+
product_version = f"{version}-stackable{release}"
107+
scan_image(
108+
secobserve_api_token,
109+
f"{REGISTRY_URL}/sdp/{product_name}:{product_version}-{arch}",
110+
product_name,
111+
f"{product_version}-{arch}",
112+
)
113+
else:
114+
# Use new boil based approach
115+
print("Using boil based configuration")
116+
result = subprocess.run(
117+
["cargo", "boil", "show", "images"],
118+
cwd="docker-images",
119+
capture_output=True,
120+
text=True,
121+
)
122+
if result.returncode != 0:
123+
print("Failed to get product versions:", result.stderr)
124+
sys.exit(1)
125+
product_versions = json.loads(result.stdout)
126+
127+
for product_name, versions in product_versions.items():
128+
if product_name in excluded_products:
129+
continue
130+
for version in versions:
131+
product_version = f"{version}-stackable{release}"
132+
scan_image(
133+
secobserve_api_token,
134+
f"{REGISTRY_URL}/sdp/{product_name}:{product_version}-{arch}",
135+
product_name,
136+
f"{product_version}-{arch}",
137+
)
114138

115139

116140
def scan_image(

0 commit comments

Comments
 (0)