#!/usr/bin/env python3 import sys from pathlib import Path import yaml chart_dir = Path(sys.argv[1]) rendered_path = Path(sys.argv[2]) chart = yaml.safe_load((chart_dir / "Chart.yaml").read_text()) values = yaml.safe_load((chart_dir / "values.yaml").read_text()) documents = [doc for doc in yaml.safe_load_all(rendered_path.read_text()) if doc] by_kind = {(doc["kind"], doc["metadata"]["name"]): doc for doc in documents} name = "matrix-alertmanager-receiver" deployment = by_kind[("Deployment", name)] service = by_kind[("Service", name)] service_monitor = by_kind[("ServiceMonitor", name)] config = by_kind[("ConfigMap", name)]["data"]["config.yaml"] container = deployment["spec"]["template"]["spec"]["containers"][0] service_port = service["spec"]["ports"][0] app_config = yaml.safe_load(config) assert container["image"] == f'{values["image"]["repository"]}:{chart["appVersion"]}' assert deployment["spec"]["replicas"] == 1 assert deployment["spec"]["selector"]["matchLabels"] == service["spec"]["selector"] assert deployment["spec"]["selector"]["matchLabels"]["app.kubernetes.io/name"] == chart["name"] assert container["ports"][0]["containerPort"] == service_port["port"] assert service_port["targetPort"] == container["ports"][0]["name"] assert container["readinessProbe"]["httpGet"]["path"] == "/metrics" assert container["livenessProbe"]["httpGet"]["path"] == "/metrics" assert container["env"][0]["valueFrom"]["secretKeyRef"]["key"] == values["matrix"]["accessTokenSecret"]["key"] assert "access-token: ${MATRIX_ACCESS_TOKEN}" in config assert app_config["matrix"]["access-token"] == "${MATRIX_ACCESS_TOKEN}" assert service_monitor["spec"]["endpoints"][0]["port"] == service_port["name"] assert service_monitor["spec"]["endpoints"][0]["path"] == "/metrics"