diff --git a/olm/build-manifests.py b/olm/build-manifests.py index bd20885..5160e86 100755 --- a/olm/build-manifests.py +++ b/olm/build-manifests.py @@ -442,7 +442,14 @@ def generate_csv( def generate_helm_templates(args: argparse.Namespace) -> list[dict]: logging.debug(f"start generate_helm_templates for {args.repo_operator}") template_path = args.repo_operator / "deploy" / "helm" / args.repo_operator.name - helm_template_cmd = ["helm", "template", args.op_name, template_path] + # Path to the default values.yaml used in the operator Helm charts. + helm_values_path = template_path / "values.yaml" + # Path to the custom values for OLM. + olm_values_path = pathlib.Path(__file__).parent / "resources" / "values" / args.repo_operator.name / "values.yaml" + helm_template_cmd = ["helm", "template", args.op_name, + "--values", helm_values_path, + "--values", olm_values_path, + template_path] try: logging.debug("start generate_helm_templates") logging.info(f"Running {helm_template_cmd}") @@ -538,6 +545,7 @@ def quay_image(images: list[tuple[str, str]]) -> list[dict[str, str]]: tag_url = ( f"https://quay.io/api/v1/repository/stackable/{image}/tag?{release_tag}" ) + logging.debug(f"Fetching image manifest from {tag_url}") with urllib.request.urlopen(tag_url) as response: data = json.load(response) if not data["tags"]: @@ -605,25 +613,18 @@ def write_metadata(args: argparse.Namespace) -> None: def main(argv) -> int: - ret = 0 - try: - opts = parse_args(argv[1:]) - logging.basicConfig(encoding="utf-8", level=opts.log_level) - - # logging.debug(f"Options: {opts}") + opts = parse_args(argv[1:]) + logging.basicConfig(encoding="utf-8", level=opts.log_level) - manifests = generate_manifests(opts) + manifests = generate_manifests(opts) - logging.info(f"Removing directory {opts.dest_dir}") - if opts.dest_dir.exists(): - shutil.rmtree(opts.dest_dir) + logging.info(f"Removing directory {opts.dest_dir}") + if opts.dest_dir.exists(): + shutil.rmtree(opts.dest_dir) - write_manifests(opts, manifests) - write_metadata(opts) - except Exception as e: - logging.error(e) - ret = 1 - return ret + write_manifests(opts, manifests) + write_metadata(opts) + return 0 CSV_DISPLAY_NAME = { @@ -637,6 +638,7 @@ def main(argv) -> int: "kafka": "Stackable Operator for Apache Kafka", "nifi": "Stackable Operator for Apache NiFi", "opa": "Stackable Operator for the Open Policy Agent", + "opensearch": "Stackable Operator for OpenSearch", "spark-k8s": "Stackable Operator for Apache Spark", "superset": "Stackable Operator for Apache Superset", "trino": "Stackable Operator for Trino", diff --git a/olm/build-manifests.sh b/olm/build-manifests.sh index 3dc34b4..7173a58 100755 --- a/olm/build-manifests.sh +++ b/olm/build-manifests.sh @@ -38,6 +38,10 @@ OPERATOR="" MANIFESTS_DIR="" METADATA_DIR="" +# Location of the stackable-utils repo. +# Needed to build path to custom OLM values.yaml files. +UTILS_REPO_DIR=$(pwd) + generate_metadata() { # generate metadata @@ -56,7 +60,7 @@ annotations: operators.operatorframework.io.bundle.metadata.v1: metadata/ operators.operatorframework.io.bundle.package.v1: stackable-${OPERATOR} - com.redhat.openshift.versions: v4.11-v4.19 + com.redhat.openshift.versions: v4.18-v4.20 ANNOS popd @@ -75,8 +79,14 @@ generate_manifests() { cat "$OP_ROOT/deploy/helm/$OPERATOR/crds/crds.yaml" | yq -s '.spec.names.kind' fi - # expand config map, roles, service account, etc. - helm template "$OPERATOR" "$OP_ROOT/deploy/helm/$OPERATOR" | yq -s '.metadata.name' + # Expand the Helm chart to individual files by applying both the default values.yaml + # and the OLM specific values.yaml. + # Each document is saved in file named "{.kind}-{.metadata.name}.yaml" to reduce the number of + # name collisions when multiple objects share the same name. + helm template "$OPERATOR" \ + --values "$OP_ROOT/deploy/helm/$OPERATOR/values.yaml" \ + --values "$UTILS_REPO_DIR/olm/resources/values/$OPERATOR/values.yaml" \ + "$OP_ROOT/deploy/helm/$OPERATOR" | yq -s '(.kind // "kind-unknown") + "-" + (.metadata.name // "name-unknown")' popd } @@ -110,6 +120,12 @@ parse_inputs() { OPERATOR="$PRODUCT-operator" MANIFESTS_DIR="$OPENSHIFT_ROOT/operators/stackable-$OPERATOR/$RELEASE_VERSION/manifests" METADATA_DIR="$OPENSHIFT_ROOT/operators/stackable-$OPERATOR/$RELEASE_VERSION/metadata" + + if [ "stackable-utils" != $(basename "$UTILS_REPO_DIR") ]; then + echo "ERROR: Looks like you are not calling this script from the base [stackable-utils] repository." + echo "ERROR: This is required to properly reference files under the [resources] folder." + exit 1 + fi } maybe_print_help() { diff --git a/olm/resources/values/airflow-operator/values.yaml b/olm/resources/values/airflow-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/airflow-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/commons-operator/values.yaml b/olm/resources/values/commons-operator/values.yaml new file mode 100644 index 0000000..178d23e --- /dev/null +++ b/olm/resources/values/commons-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 1024Mi + requests: + memory: 1024Mi diff --git a/olm/resources/values/druid-operator/values.yaml b/olm/resources/values/druid-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/druid-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/hbase-operator/values.yaml b/olm/resources/values/hbase-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/hbase-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/hdfs-operator/values.yaml b/olm/resources/values/hdfs-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/hdfs-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/hive-operator/values.yaml b/olm/resources/values/hive-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/hive-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/kafka-operator/values.yaml b/olm/resources/values/kafka-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/kafka-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/listener-operator/values.yaml b/olm/resources/values/listener-operator/values.yaml new file mode 100644 index 0000000..e81975b --- /dev/null +++ b/olm/resources/values/listener-operator/values.yaml @@ -0,0 +1,29 @@ +csiProvisioner: + controllerService: + resources: + limits: + memory: 256Mi + requests: + memory: 256Mi + + externalProvisioner: + resources: + requests: + memory: 128Mi + limits: + memory: 128Mi + +csiNodeDriver: + nodeService: + resources: + limits: + memory: 256Mi + requests: + memory: 256Mi + + nodeDriverRegistrar: + resources: + requests: + memory: 128Mi + limits: + memory: 128Mi diff --git a/olm/resources/values/nifi-operator/values.yaml b/olm/resources/values/nifi-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/nifi-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/opa-operator/values.yaml b/olm/resources/values/opa-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/opa-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/opensearch-operator/values.yaml b/olm/resources/values/opensearch-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/opensearch-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/secret-operator/values.yaml b/olm/resources/values/secret-operator/values.yaml new file mode 100644 index 0000000..6b6eb74 --- /dev/null +++ b/olm/resources/values/secret-operator/values.yaml @@ -0,0 +1,30 @@ +controllerService: + resources: + limits: + memory: 256Mi + requests: + memory: 256Mi + +csiNodeDriver: + nodeService: + resources: + limits: + memory: 256Mi + requests: + memory: 256Mi + + externalProvisioner: + resources: + requests: + memory: 128Mi + limits: + memory: 128Mi + + nodeDriverRegistrar: + resources: + requests: + memory: 128Mi + limits: + memory: 128Mi + + diff --git a/olm/resources/values/spark-k8s-operator/values.yaml b/olm/resources/values/spark-k8s-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/spark-k8s-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/superset-operator/values.yaml b/olm/resources/values/superset-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/superset-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/trino-operator/values.yaml b/olm/resources/values/trino-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/trino-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi diff --git a/olm/resources/values/zookeeper-operator/values.yaml b/olm/resources/values/zookeeper-operator/values.yaml new file mode 100644 index 0000000..2b44159 --- /dev/null +++ b/olm/resources/values/zookeeper-operator/values.yaml @@ -0,0 +1,5 @@ +resources: + limits: + memory: 256Mi + requests: + memory: 256Mi