From ddc97334d5c56caa58fdda0590889df653d44d62 Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Mon, 16 Mar 2026 11:35:11 +0100 Subject: [PATCH 1/3] chore: Release 26.3.0-rc1 (#376) Signed-off-by: Nick Larsen --- CHANGELOG.md | 2 ++ Cargo.lock | 6 +++--- Cargo.nix | 6 +++--- Cargo.toml | 2 +- deploy/helm/listener-operator/Chart.yaml | 4 ++-- docs/antora.yml | 3 ++- extra/crds.yaml | 14 +++++++------- tests/release.yaml | 4 ++-- 8 files changed, 22 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 688db996..aef9e4a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [26.3.0-rc1] - 2026-03-16 + ### Added - Add conversion webhook ([#368]). diff --git a/Cargo.lock b/Cargo.lock index 61e0ef11..29ca4742 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -501,7 +501,7 @@ dependencies = [ [[package]] name = "csi-grpc" -version = "0.0.0-dev" +version = "26.3.0-rc1" dependencies = [ "prost", "prost-types", @@ -2971,7 +2971,7 @@ dependencies = [ [[package]] name = "stackable-listener-operator" -version = "0.0.0-dev" +version = "26.3.0-rc1" dependencies = [ "anyhow", "built", @@ -2998,7 +2998,7 @@ dependencies = [ [[package]] name = "stackable-listener-operator-olm-deployer" -version = "0.0.0-dev" +version = "26.3.0-rc1" dependencies = [ "anyhow", "built", diff --git a/Cargo.nix b/Cargo.nix index 3128bffa..226eb002 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -1543,7 +1543,7 @@ rec { }; "csi-grpc" = rec { crateName = "csi-grpc"; - version = "0.0.0-dev"; + version = "26.3.0-rc1"; edition = "2021"; src = lib.cleanSourceWith { filter = sourceFilter; src = ./rust/csi-grpc; }; libName = "csi_grpc"; @@ -9984,7 +9984,7 @@ rec { }; "stackable-listener-operator" = rec { crateName = "stackable-listener-operator"; - version = "0.0.0-dev"; + version = "26.3.0-rc1"; edition = "2021"; crateBin = [ { @@ -10095,7 +10095,7 @@ rec { }; "stackable-listener-operator-olm-deployer" = rec { crateName = "stackable-listener-operator-olm-deployer"; - version = "0.0.0-dev"; + version = "26.3.0-rc1"; edition = "2021"; crateBin = [ { diff --git a/Cargo.toml b/Cargo.toml index 76eee306..9536c206 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["rust/operator-binary", "rust/csi-grpc", "rust/olm-deployer"] resolver = "2" [workspace.package] -version = "0.0.0-dev" +version = "26.3.0-rc1" authors = ["Stackable GmbH "] license = "OSL-3.0" edition = "2021" diff --git a/deploy/helm/listener-operator/Chart.yaml b/deploy/helm/listener-operator/Chart.yaml index c89a40a8..cc6ab0f6 100644 --- a/deploy/helm/listener-operator/Chart.yaml +++ b/deploy/helm/listener-operator/Chart.yaml @@ -1,8 +1,8 @@ --- apiVersion: v2 name: listener-operator -version: "0.0.0-dev" -appVersion: "0.0.0-dev" +version: "26.3.0-rc1" +appVersion: "26.3.0-rc1" description: The Stackable Operator for Stackable Listener Operator home: https://github.com/stackabletech/listener-operator maintainers: diff --git a/docs/antora.yml b/docs/antora.yml index d522680b..dcbff1a3 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1,3 +1,4 @@ --- name: home -version: "nightly" +version: "26.3" +prerelease: false diff --git a/extra/crds.yaml b/extra/crds.yaml index 7893d93f..3f611f3f 100644 --- a/extra/crds.yaml +++ b/extra/crds.yaml @@ -21,8 +21,8 @@ spec: properties: spec: description: |- - Defines a policy for how [Listeners](https://docs.stackable.tech/home/nightly/listener-operator/listener) should be exposed. - Read the [ListenerClass documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass) + Defines a policy for how [Listeners](https://docs.stackable.tech/home/26.3/listener-operator/listener) should be exposed. + Read the [ListenerClass documentation](https://docs.stackable.tech/home/26.3/listener-operator/listenerclass) for more information. properties: loadBalancerAllocateNodePorts: @@ -100,7 +100,7 @@ spec: to override any property that can be set on a Kubernetes Service. This mechanism is similar to the `podOverrides`, which are documented in the - [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides). + [Pod overrides documentation](https://docs.stackable.tech/home/26.3/concepts/overrides#pod-overrides). type: object x-kubernetes-preserve-unknown-fields: true serviceType: @@ -149,12 +149,12 @@ spec: 1. It uses a cluster-level policy object (ListenerClass) to define how exactly the exposure works 2. It has a consistent API for reading back the exposed address(es) of the service 3. The Pod must mount a Volume referring to the Listener, which also allows - ["sticky" scheduling](https://docs.stackable.tech/home/nightly/listener-operator/listener#_sticky_scheduling). + ["sticky" scheduling](https://docs.stackable.tech/home/26.3/listener-operator/listener#_sticky_scheduling). - Learn more in the [Listener documentation](https://docs.stackable.tech/home/nightly/listener-operator/listener). + Learn more in the [Listener documentation](https://docs.stackable.tech/home/26.3/listener-operator/listener). properties: className: - description: The name of the [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass). + description: The name of the [ListenerClass](https://docs.stackable.tech/home/26.3/listener-operator/listenerclass). nullable: true type: string extraPodSelectorLabels: @@ -171,7 +171,7 @@ spec: List entries are arbitrary YAML objects, which need to be valid Kubernetes objects. - Read the [Object overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#object-overrides) + Read the [Object overrides documentation](https://docs.stackable.tech/home/26.3/concepts/overrides#object-overrides) for more information. items: type: object diff --git a/tests/release.yaml b/tests/release.yaml index 5fb9c72a..e33e996b 100644 --- a/tests/release.yaml +++ b/tests/release.yaml @@ -7,6 +7,6 @@ releases: description: Integration test products: commons: - operatorVersion: 0.0.0-dev + operatorVersion: 26.3.0-rc1 listener: - operatorVersion: 0.0.0-dev + operatorVersion: 26.3.0-rc1 From 514ac521b15f6c0f347172f2f917a9a8611b7626 Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Mon, 16 Mar 2026 14:34:18 +0100 Subject: [PATCH 2/3] chore: Release 26.3.0 (#377) Signed-off-by: Nick Larsen --- CHANGELOG.md | 2 ++ Cargo.lock | 6 +++--- Cargo.nix | 6 +++--- Cargo.toml | 2 +- deploy/helm/listener-operator/Chart.yaml | 4 ++-- tests/release.yaml | 4 ++-- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aef9e4a7..5b939b35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [26.3.0] - 2026-03-16 + ## [26.3.0-rc1] - 2026-03-16 ### Added diff --git a/Cargo.lock b/Cargo.lock index 29ca4742..9e4929a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -501,7 +501,7 @@ dependencies = [ [[package]] name = "csi-grpc" -version = "26.3.0-rc1" +version = "26.3.0" dependencies = [ "prost", "prost-types", @@ -2971,7 +2971,7 @@ dependencies = [ [[package]] name = "stackable-listener-operator" -version = "26.3.0-rc1" +version = "26.3.0" dependencies = [ "anyhow", "built", @@ -2998,7 +2998,7 @@ dependencies = [ [[package]] name = "stackable-listener-operator-olm-deployer" -version = "26.3.0-rc1" +version = "26.3.0" dependencies = [ "anyhow", "built", diff --git a/Cargo.nix b/Cargo.nix index 226eb002..fc39d573 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -1543,7 +1543,7 @@ rec { }; "csi-grpc" = rec { crateName = "csi-grpc"; - version = "26.3.0-rc1"; + version = "26.3.0"; edition = "2021"; src = lib.cleanSourceWith { filter = sourceFilter; src = ./rust/csi-grpc; }; libName = "csi_grpc"; @@ -9984,7 +9984,7 @@ rec { }; "stackable-listener-operator" = rec { crateName = "stackable-listener-operator"; - version = "26.3.0-rc1"; + version = "26.3.0"; edition = "2021"; crateBin = [ { @@ -10095,7 +10095,7 @@ rec { }; "stackable-listener-operator-olm-deployer" = rec { crateName = "stackable-listener-operator-olm-deployer"; - version = "26.3.0-rc1"; + version = "26.3.0"; edition = "2021"; crateBin = [ { diff --git a/Cargo.toml b/Cargo.toml index 9536c206..0e3cee7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["rust/operator-binary", "rust/csi-grpc", "rust/olm-deployer"] resolver = "2" [workspace.package] -version = "26.3.0-rc1" +version = "26.3.0" authors = ["Stackable GmbH "] license = "OSL-3.0" edition = "2021" diff --git a/deploy/helm/listener-operator/Chart.yaml b/deploy/helm/listener-operator/Chart.yaml index cc6ab0f6..a74842d0 100644 --- a/deploy/helm/listener-operator/Chart.yaml +++ b/deploy/helm/listener-operator/Chart.yaml @@ -1,8 +1,8 @@ --- apiVersion: v2 name: listener-operator -version: "26.3.0-rc1" -appVersion: "26.3.0-rc1" +version: "26.3.0" +appVersion: "26.3.0" description: The Stackable Operator for Stackable Listener Operator home: https://github.com/stackabletech/listener-operator maintainers: diff --git a/tests/release.yaml b/tests/release.yaml index e33e996b..c52f5599 100644 --- a/tests/release.yaml +++ b/tests/release.yaml @@ -7,6 +7,6 @@ releases: description: Integration test products: commons: - operatorVersion: 26.3.0-rc1 + operatorVersion: 26.3.0 listener: - operatorVersion: 26.3.0-rc1 + operatorVersion: 26.3.0 From d1a48b249444b489a7db4b75aab73d9a480a3ac0 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Thu, 19 Mar 2026 16:04:24 +0100 Subject: [PATCH 3/3] feat(scripts): add generate-olm.py --- scripts/generate-olm.py | 1540 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1540 insertions(+) create mode 100755 scripts/generate-olm.py diff --git a/scripts/generate-olm.py b/scripts/generate-olm.py new file mode 100755 index 00000000..a46b8488 --- /dev/null +++ b/scripts/generate-olm.py @@ -0,0 +1,1540 @@ +#!/usr/bin/env -S uv run --script +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "pyyaml", +# ] +# /// +""" +Generate OpenShift OLM (Operator Lifecycle Manager) manifests for the Stackable Listener Operator. + +The script renders the Helm chart, looks up image digests on +quay.io, and writes a complete OLM bundle under deploy/olm//. + +Usage: + uv run --script scripts/generate-olm.py --version 26.3.0 --output-dir deploy/olm + + # Or directly with python3 (PyYAML must be installed): + python3 scripts/generate-olm.py --version 26.3.0 --openshift-versions v4.18-v4.21 + +Requirements: + - uv (https://docs.astral.sh/uv/) — installs PyYAML automatically + - helm (https://helm.sh) +""" + +import argparse +import subprocess +import urllib.request +import urllib.error +from pathlib import Path + +import yaml + + +SCRIPT_DIR = Path(__file__).parent.resolve() +REPO_ROOT = SCRIPT_DIR.parent +HELM_CHART = REPO_ROOT / "deploy" / "helm" / "listener-operator" +OLM_OUTPUT = REPO_ROOT / "deploy" / "olm" + +# Mapping from OCI registry image repos to quay.io image repos. +# The script replaces oci.stackable.tech images with quay.io images (using digest). +OCI_TO_QUAY: dict[str, str] = { + "oci.stackable.tech/sdp/listener-operator": "quay.io/stackable/listener-operator", + "oci.stackable.tech/sdp/sig-storage/csi-provisioner": "quay.io/stackable/sig-storage/csi-provisioner", + "oci.stackable.tech/sdp/sig-storage/csi-node-driver-registrar": "quay.io/stackable/sig-storage/csi-node-driver-registrar", +} + +# Stackable logo icon (PNG, base64-encoded). Sourced from the 25.11.0 OLM bundle. +_STACKABLE_ICON_B64 = ( + "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" + "AEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0" + "ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQA" + "AAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQ" + "nSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSAB" + "AAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAA" + "RCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdI" + "AAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAA" + "ANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJ" + "EgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAA" + "AEB0ggQAAAAQnSABAAAARCdIAAAAANEJEgAAAEBcSZL8f1HQsc8tcXUVAAAAAElFTkSuQmCC" +) + +# Permissions required by the olm-deployer service account (the bootstrap Deployment). +# This account applies the ConfigMap manifests (DaemonSet, Deployment, CSIDriver, etc.). +DEPLOYER_CLUSTER_PERMISSIONS = [ + { + "apiGroups": ["apps"], + "resources": ["deployments"], + "verbs": ["get", "list", "create", "patch"], + }, + { + "apiGroups": ["apps"], + "resources": ["daemonsets"], + "verbs": ["create", "patch"], + }, + { + "apiGroups": [""], + "resources": ["services"], + "verbs": ["create", "patch"], + }, + { + "apiGroups": ["storage.k8s.io"], + "resources": ["csidrivers", "storageclasses"], + "verbs": ["create", "patch"], + }, + { + "apiGroups": ["listeners.stackable.tech"], + "resources": ["listeners", "listenerclasses"], + "verbs": ["create", "patch"], + }, + { + "apiGroups": ["security.openshift.io"], + "resources": ["securitycontextconstraints"], + "verbs": ["get", "list", "create", "patch"], + }, +] + + +# --------------------------------------------------------------------------- +# Custom YAML representer for literal block scalars (used in ConfigMap data). +# --------------------------------------------------------------------------- + + +class _LiteralStr(str): + """A str subclass that PyYAML will render as a literal block scalar (|).""" + + +def _literal_representer(dumper: yaml.Dumper, data: "_LiteralStr") -> yaml.ScalarNode: + return dumper.represent_scalar("tag:yaml.org,2002:str", data, style="|") + + +yaml.add_representer(_LiteralStr, _literal_representer) + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def get_quay_digest(quay_image: str, tag: str) -> str: + """ + Return the content-addressable digest (sha256:...) for *quay_image*:*tag* + by querying the quay.io Docker Registry HTTP API v2. + """ + if not quay_image.startswith("quay.io/"): + raise ValueError(f"Not a quay.io image reference: {quay_image!r}") + repo = quay_image[len("quay.io/") :] + url = f"https://quay.io/v2/{repo}/manifests/{tag}" + req = urllib.request.Request( + url, + headers={ + "Accept": ( + "application/vnd.docker.distribution.manifest.list.v2+json," + "application/vnd.oci.image.index.v1+json," + "application/vnd.docker.distribution.manifest.v2+json," + "application/vnd.oci.image.manifest.v1+json" + ) + }, + ) + try: + with urllib.request.urlopen(req) as resp: + digest = resp.headers.get("Docker-Content-Digest") + if not digest: + raise RuntimeError( + f"quay.io returned no 'Docker-Content-Digest' header for {quay_image}:{tag}" + ) + return digest + except urllib.error.HTTPError as exc: + raise RuntimeError( + f"Failed to fetch digest for {quay_image}:{tag}: HTTP {exc.code}" + ) from exc + + +def render_helm(version: str) -> list[dict]: + """Render the Helm chart with OpenShift APIs enabled and return parsed YAML docs.""" + result = subprocess.run( + [ + "helm", + "template", + "--name-template", + "listener-operator", + # Enable OpenShift API so that the SCC manifest is included. + "--api-versions", + "security.openshift.io/v1", + "--set", + f"image.tag={version}", + str(HELM_CHART), + ], + capture_output=True, + text=True, + check=True, + cwd=REPO_ROOT, + ) + return [d for d in yaml.safe_load_all(result.stdout) if d is not None] + + +def load_values() -> dict: + with open(HELM_CHART / "values.yaml") as fh: + return yaml.safe_load(fh) + + +def sidecar_image_info(values: dict) -> dict[str, dict[str, str]]: + """Return a dict of sidecar name -> {repo, tag} from values.yaml.""" + return { + "csi-provisioner": { + "repo": values["csiProvisioner"]["externalProvisioner"]["image"][ + "repository" + ], + "tag": values["csiProvisioner"]["externalProvisioner"]["image"]["tag"], + }, + "csi-node-driver-registrar": { + "repo": values["csiNodeDriver"]["nodeDriverRegistrar"]["image"][ + "repository" + ], + "tag": values["csiNodeDriver"]["nodeDriverRegistrar"]["image"]["tag"], + }, + } + + +def replace_image_refs(text: str, image_map: dict[str, str]) -> str: + """Replace every occurrence of an OCI image ref (repo:tag) with its quay.io@digest form.""" + for src, dst in image_map.items(): + text = text.replace(src, dst) + return text + + +def annotate_image_tags(text: str, tag_map: dict[str, str]) -> str: + """ + Append a ``# `` comment to every ``image: `` line whose image + reference appears in *tag_map* (mapping digest-form ref -> human tag). + Existing trailing comments on those lines are left intact. + """ + import re + + lines = text.splitlines(keepends=True) + result = [] + for line in lines: + m = re.match(r"^(\s*image:\s*)(\S+)(\s*)$", line.rstrip("\n")) + if m: + prefix, ref, _tail = m.group(1), m.group(2), m.group(3) + # Strip surrounding quotes if present + bare = ref.strip("'\"") + if bare in tag_map: + line = f"{prefix}{ref} # {tag_map[bare]}\n" + result.append(line) + return "".join(result) + + +# Labels injected by Helm that should not appear in the OLM manifests. +_HELM_LABELS_TO_STRIP: frozenset[str] = frozenset( + { + "helm.sh/chart", + "app.kubernetes.io/managed-by", + } +) + + +def _strip_helm_labels_inplace(obj: object) -> None: + """Recursively remove Helm-managed label keys from every 'labels' mapping in *obj*.""" + if isinstance(obj, dict): + labels = obj.get("labels") + if isinstance(labels, dict): + for key in _HELM_LABELS_TO_STRIP: + labels.pop(key, None) + for value in obj.values(): + _strip_helm_labels_inplace(value) + elif isinstance(obj, list): + for item in obj: + _strip_helm_labels_inplace(item) + + +def strip_helm_labels(doc: dict) -> dict: + """Return a deep copy of *doc* with all Helm-managed labels removed.""" + import copy + + doc = copy.deepcopy(doc) + _strip_helm_labels_inplace(doc) + return doc + + +# --------------------------------------------------------------------------- +# Manifest builders +# --------------------------------------------------------------------------- + + +def build_configmap( + helm_docs: list[dict], image_map: dict[str, str], tag_map: dict[str, str] +) -> dict: + """ + Build the deployer ConfigMap whose entries are the operator's Kubernetes resources. + OLM mounts this ConfigMap into the deployer Pod, which applies the resources. + """ + data: dict[str, _LiteralStr] = {} + + for doc in helm_docs: + kind = doc.get("kind", "") + name = doc.get("metadata", {}).get("name", "") + + if kind == "SecurityContextConstraints": + key = "stackable-listener-operator-scc.yaml" + elif kind == "CSIDriver": + key = "csidriver.yaml" + elif kind == "StorageClass": + key = "storageclass.yaml" + elif kind == "Service": + key = "service.yaml" + elif kind == "DaemonSet": + key = f"{name}.yaml" + elif kind == "Deployment": + key = f"{name}.yaml" + else: + continue + + raw = yaml.dump( + strip_helm_labels(doc), + default_flow_style=False, + allow_unicode=True, + sort_keys=False, + ) + raw = replace_image_refs(raw, image_map) + raw = annotate_image_tags(raw, tag_map) + data[key] = _LiteralStr(raw) + + return { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": {"name": "listener-operator-deployer-manifests"}, + "data": data, + } + + +def _operator_cluster_rules(helm_docs: list[dict]) -> list[dict]: + for doc in helm_docs: + if doc.get("kind") == "ClusterRole": + return doc.get("rules", []) + return [] + + +def build_csv( + version: str, + helm_docs: list[dict], + images: dict[str, str], + icon_b64: str, + openshift_versions: str = "v4.18-v4.21", +) -> dict: + """Build and return the ClusterServiceVersion manifest as a dict.""" + + deployer_deployment = { + "name": f"listener-operator-deployer-{version}", + "spec": { + "replicas": 1, + "strategy": {"type": "Recreate"}, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "listener-operator-deployer", + "app.kubernetes.io/instance": "listener-operator-deployer", + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "listener-operator-deployer", + "app.kubernetes.io/instance": "listener-operator-deployer", + } + }, + "spec": { + "serviceAccountName": "listener-operator-deployer", + "securityContext": {}, + "containers": [ + { + "name": "listener-operator-deployer", + "securityContext": {}, + "image": images["listener-operator"], + "imagePullPolicy": "Always", + "command": ["/usr/bin/bash"], + "args": [ + "-c", + ( + "/usr/local/bin/stackable-listener-operator-olm-deployer run" + " --dir /manifests" + f" --namespace $NAMESPACE" + f" --csv listener-operator.v{version}" + f" --deployer listener-operator-deployer-{version}" + " --keep-alive" + ), + ], + "env": [ + { + "name": "NAMESPACE", + "valueFrom": { + "fieldRef": {"fieldPath": "metadata.namespace"} + }, + } + ], + "resources": { + "limits": {"cpu": "100m", "memory": "512Mi"}, + "requests": {"cpu": "100m", "memory": "512Mi"}, + }, + "volumeMounts": [ + {"name": "manifests", "mountPath": "/manifests"} + ], + } + ], + "volumes": [ + { + "name": "manifests", + "configMap": { + "name": "listener-operator-deployer-manifests" + }, + } + ], + }, + }, + }, + } + + base: dict = { + "apiVersion": "operators.coreos.com/v1alpha1", + "kind": "ClusterServiceVersion", + "metadata": { + "name": f"listener-operator.v{version}", + "labels": { + "operatorframework.io/arch.amd64": "supported", + "operatorframework.io/arch.arm64": "supported", + "operatorframework.io/os.linux": "supported", + }, + "annotations": { + "operatorframework.io/suggested-namespace": "stackable-operators", + "features.operators.openshift.io/cnf": "false", + "features.operators.openshift.io/cni": "false", + "features.operators.openshift.io/csi": "false", + "features.operators.openshift.io/disconnected": "false", + "features.operators.openshift.io/fips-compliant": "false", + "features.operators.openshift.io/proxy-aware": "false", + "features.operators.openshift.io/tls-profiles": "false", + "features.operators.openshift.io/token-auth-aws": "false", + "features.operators.openshift.io/token-auth-azure": "false", + "features.operators.openshift.io/token-auth-gcp": "false", + "support": "Stackable GmbH", + "categories": "Storage", + "capabilities": "Full Lifecycle", + "description": "Stackable Listener Operator", + "repository": "https://github.com/stackabletech/listener-operator", + "com.redhat.openshift.versions": openshift_versions, + }, + }, + "spec": { + "displayName": "Stackable Listener Operator", + "description": ( + "This is an operator for Kubernetes that provisions network listeners" + " according to the cluster policy, and injects connection parameters into Pods." + " The Stackable Listener Operator is part of the Stackable Data Platform, a" + " curated selection of the best open source data apps like Kafka, Druid, Trino" + " or Spark, all working together seamlessly. Based on Kubernetes, it runs" + " everywhere - on prem or in the cloud.\n\n" + "You can install the operator using" + " [stackablectl or helm](https://docs.stackable.tech/home/stable/listener-operator/installation.html).\n\n" + "NOTE:\n" + 'Make sure you install this operator in a namespace called "stackable-operators".' + " Failing to do so will result in a broken installation." + ), + "icon": [{"base64data": icon_b64, "mediatype": "image/png"}], + "keywords": ["listener"], + "maintainers": [{"email": "info@stackable.tech", "name": "Stackable GmbH"}], + "maturity": "stable", + "provider": {"name": "Stackable GmbH", "url": "https://stackable.tech"}, + "version": version, + "minKubeVersion": "1.23.0", + "installModes": [ + {"supported": True, "type": "OwnNamespace"}, + {"supported": True, "type": "SingleNamespace"}, + {"supported": True, "type": "MultiNamespace"}, + # OLM requires AllNamespaces=true when webhooks are present. + {"supported": True, "type": "AllNamespaces"}, + ], + "relatedImages": [ + {"name": "listener-operator", "image": images["listener-operator"]}, + {"name": "csi-provisioner", "image": images["csi-provisioner"]}, + { + "name": "csi-node-driver-registrar", + "image": images["csi-node-driver-registrar"], + }, + ], + "install": { + "strategy": "deployment", + "spec": { + "permissions": [], + "clusterPermissions": [ + { + "serviceAccountName": "listener-operator-serviceaccount", + "rules": _operator_cluster_rules(helm_docs), + }, + { + "serviceAccountName": "listener-operator-deployer", + "rules": DEPLOYER_CLUSTER_PERMISSIONS, + }, + ], + "deployments": [deployer_deployment], + }, + }, + }, + } + + return base + + +# --------------------------------------------------------------------------- +# Output helpers +# --------------------------------------------------------------------------- + + +def _display_path(path: Path) -> str: + """Return a short path for display: repo-relative if possible, else absolute.""" + try: + return str(path.relative_to(REPO_ROOT)) + except ValueError: + return str(path) + + +def write_yaml(path: Path, data: dict) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with open(path, "w") as fh: + fh.write("---\n") + yaml.dump( + data, fh, default_flow_style=False, allow_unicode=True, sort_keys=False + ) + print(f" wrote {_display_path(path)}") + + +def write_text(path: Path, content: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content) + print(f" wrote {_display_path(path)}") + + +# --------------------------------------------------------------------------- +# Main +# --------------------------------------------------------------------------- + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Generate OLM bundle manifests for the Stackable Listener Operator", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=__doc__, + ) + parser.add_argument( + "--version", + "-v", + required=True, + metavar="VERSION", + help="Operator version string, e.g. 26.3.0", + ) + parser.add_argument( + "--openshift-versions", + metavar="RANGE", + default="v4.18-v4.21", + help="Value for com.redhat.openshift.versions (default: v4.18-v4.21)", + ) + parser.add_argument( + "--output-dir", + "-o", + metavar="DIR", + default=str(OLM_OUTPUT), + help=( + "Directory that already exists where the OLM bundle will be written." + " A sub-folder named after the operator version is created inside it." + f" (default: {OLM_OUTPUT.relative_to(REPO_ROOT)})" + ), + ) + args = parser.parse_args() + + version: str = args.version + openshift_versions: str = args.openshift_versions + olm_output = Path(args.output_dir).resolve() + if not olm_output.is_dir(): + parser.error(f"--output-dir does not exist or is not a directory: {olm_output}") + ver_parts = version.split(".") + channel = f"{ver_parts[0]}.{ver_parts[1]}" if len(ver_parts) >= 2 else version + + output_dir = olm_output / version + + print(f"\n=== Generating OLM bundle for listener-operator v{version} ===\n") + + # ------------------------------------------------------------------ + # 1. Load values.yaml + # ------------------------------------------------------------------ + print("[1/4] Reading Helm values.yaml ...") + values = load_values() + sidecars = sidecar_image_info(values) + main_oci_repo: str = values["image"]["repository"] + main_quay_repo = OCI_TO_QUAY[main_oci_repo] + + # ------------------------------------------------------------------ + # 2. Look up quay.io image digests + # ------------------------------------------------------------------ + print("[2/4] Resolving image digests on quay.io ...") + + print(f" {main_quay_repo}:{version}") + main_digest = get_quay_digest(main_quay_repo, version) + print(f" -> {main_digest}") + + final_images: dict[str, str] = { + "listener-operator": f"{main_quay_repo}@{main_digest}", + } + # image_map: OCI repo:tag -> quay.io@digest (for textual substitution) + image_map: dict[str, str] = { + f"{main_oci_repo}:{version}": final_images["listener-operator"], + } + + for sidecar_name, info in sidecars.items(): + quay_repo = OCI_TO_QUAY[info["repo"]] + tag = info["tag"] + print(f" {quay_repo}:{tag}") + digest = get_quay_digest(quay_repo, tag) + print(f" -> {digest}") + ref = f"{quay_repo}@{digest}" + final_images[sidecar_name] = ref + image_map[f"{info['repo']}:{tag}"] = ref + + # ------------------------------------------------------------------ + # 3. Render Helm chart + # ------------------------------------------------------------------ + print("[3/4] Rendering Helm chart ...") + helm_docs = render_helm(version) + print(f" -> {len(helm_docs)} Kubernetes resources") + + # ------------------------------------------------------------------ + # 4. Write output files + # ------------------------------------------------------------------ + print(f"[4/4] Writing OLM bundle to {output_dir} ...") + + # tag_map: quay.io@digest -> human tag (for inline ``# `` comments) + tag_map: dict[str, str] = { + final_images["listener-operator"]: version, + final_images["csi-provisioner"]: sidecars["csi-provisioner"]["tag"], + final_images["csi-node-driver-registrar"]: sidecars[ + "csi-node-driver-registrar" + ]["tag"], + } + + # Deployer ConfigMap + configmap = build_configmap(helm_docs, image_map, tag_map) + write_yaml(output_dir / "manifests" / "listener-operator-manifests.yaml", configmap) + + # ClusterServiceVersion + csv = build_csv( + version, helm_docs, final_images, _STACKABLE_ICON_B64, openshift_versions + ) + csv_filename = f"stackable-listener-operator.v{version}.clusterserviceversion.yaml" + csv_path = output_dir / "manifests" / csv_filename + csv_path.parent.mkdir(parents=True, exist_ok=True) + with open(csv_path, "w") as fh: + fh.write("---\n") + raw_csv = yaml.dump( + csv, default_flow_style=False, allow_unicode=True, sort_keys=False + ) + fh.write(annotate_image_tags(raw_csv, tag_map)) + print(f" wrote {_display_path(csv_path)}") + + # metadata/annotations.yaml + annotations = { + "annotations": { + "operators.operatorframework.io.bundle.channel.default.v1": channel, + "operators.operatorframework.io.bundle.channels.v1": f"stable,{channel}", + "operators.operatorframework.io.bundle.manifests.v1": "manifests/", + "operators.operatorframework.io.bundle.mediatype.v1": "registry+v1", + "operators.operatorframework.io.bundle.metadata.v1": "metadata/", + "operators.operatorframework.io.bundle.package.v1": "stackable-listener-operator", + "com.redhat.openshift.versions": openshift_versions, + } + } + write_yaml(output_dir / "metadata" / "annotations.yaml", annotations) + + +if __name__ == "__main__": + main()