diff --git a/bin/install-barbican-exporter.sh b/bin/install-barbican-exporter.sh index 58598850..f9a899e1 100644 --- a/bin/install-barbican-exporter.sh +++ b/bin/install-barbican-exporter.sh @@ -1,28 +1,29 @@ #!/bin/bash -# Description: Fetches the version for SERVICE_NAME from the specified +# Description: Fetches the version for SERVICE_NAME_DEFAULT from the specified # YAML file and executes a helm upgrade/install command with dynamic values files. # Disable SC2124 (unused array), SC2145 (array expansion issue), SC2294 (eval) # shellcheck disable=SC2124,SC2145,SC2294 # Service -SERVICE_NAME="barbican-exporter" +# The service name is used for both the release name and the chart name. +SERVICE_NAME_DEFAULT="barbican-exporter" SERVICE_NAMESPACE="openstack" # Helm -HELM_REPO_NAME="genestack-barbician-exporter-helm-chart" -HELM_REPO_URL="https://github.com/rackerlabs/genestack-barbician-exporter-helm-chart" +HELM_REPO_NAME_DEFAULT="genestack-barbician-exporter-helm-chart" +HELM_REPO_URL_DEFAULT="https://github.com/rackerlabs/genestack-barbician-exporter-helm-chart" # Base directories provided by the environment GENESTACK_BASE_DIR="${GENESTACK_BASE_DIR:-/opt/genestack}" GENESTACK_OVERRIDES_DIR="${GENESTACK_OVERRIDES_DIR:-/etc/genestack}" # Define service-specific override directories based on the framework -SERVICE_BASE_OVERRIDES="${GENESTACK_BASE_DIR}/base-helm-configs/${SERVICE_NAME}" -SERVICE_CUSTOM_OVERRIDES="${GENESTACK_OVERRIDES_DIR}/helm-configs/${SERVICE_NAME}" +SERVICE_BASE_OVERRIDES="${GENESTACK_BASE_DIR}/base-helm-configs/${SERVICE_NAME_DEFAULT}" +SERVICE_CUSTOM_OVERRIDES="${GENESTACK_OVERRIDES_DIR}/helm-configs/${SERVICE_NAME_DEFAULT}" # Define the Global Overrides directory used in the original script -GLOBAL_OVERRIDES="${GENESTACK_OVERRIDES_DIR}/helm-configs/global_overrides" +GLOBAL_OVERRIDES_DIR="${GENESTACK_OVERRIDES_DIR}/helm-configs/global_overrides" # Read the desired chart version from VERSION_FILE VERSION_FILE="${GENESTACK_OVERRIDES_DIR}/helm-chart-versions.yaml" @@ -32,20 +33,55 @@ if [ ! -f "$VERSION_FILE" ]; then exit 1 fi -# Extract version dynamically. -SERVICE_VERSION=$(grep "^[[:space:]]*${SERVICE_NAME}:" "$VERSION_FILE" | sed "s/.*${SERVICE_NAME}: *//") +# Extract version dynamically using the SERVICE_NAME_DEFAULT variable +SERVICE_VERSION=$(grep "^[[:space:]]*${SERVICE_NAME_DEFAULT}:" "$VERSION_FILE" | sed "s/.*${SERVICE_NAME_DEFAULT}: *//") if [ -z "$SERVICE_VERSION" ]; then - echo "Error: Could not extract version for '$SERVICE_NAME' from $VERSION_FILE" >&2 + echo "Error: Could not extract version for '$SERVICE_NAME_DEFAULT' from $VERSION_FILE" >&2 # exit 1 fi -echo "Found version for $SERVICE_NAME: $SERVICE_VERSION" +echo "Found version for $SERVICE_NAME_DEFAULT: $SERVICE_VERSION" + +# Load chart metadata from custom override YAML if defined +for yaml_file in "${SERVICE_CUSTOM_OVERRIDES}"/*.yaml; do + if [ -f "$yaml_file" ]; then + HELM_REPO_URL=$(yq eval '.chart.repo_url // ""' "$yaml_file") + HELM_REPO_NAME=$(yq eval '.chart.repo_name // ""' "$yaml_file") + SERVICE_NAME=$(yq eval '.chart.service_name // ""' "$yaml_file") + break # use the first match and stop + fi +done + +# Fallback to defaults if variables not set +: "${HELM_REPO_URL:=$HELM_REPO_URL_DEFAULT}" +: "${HELM_REPO_NAME:=$HELM_REPO_NAME_DEFAULT}" +: "${SERVICE_NAME:=$SERVICE_NAME_DEFAULT}" + + +# Determine Helm chart path +if [[ "$HELM_REPO_URL" == oci://* ]]; then + # OCI registry path + HELM_CHART_PATH="$HELM_REPO_URL/$HELM_REPO_NAME/$SERVICE_NAME" +else + # --- Helm Repository and Execution --- + helm repo add "$HELM_REPO_NAME" "$HELM_REPO_URL" # uncomment if needed + helm repo update + HELM_CHART_PATH="$HELM_REPO_NAME/$SERVICE_NAME" +fi + + +# Debug output +echo "[DEBUG] HELM_REPO_URL=$HELM_REPO_URL" +echo "[DEBUG] HELM_REPO_NAME=$HELM_REPO_NAME" +echo "[DEBUG] SERVICE_NAME=$SERVICE_NAME" +echo "[DEBUG] HELM_CHART_PATH=$HELM_CHART_PATH" # Prepare an array to collect -f arguments overrides_args=() -# Base Override Files: Check the standard base directory. +# Include all YAML files from the BASE configuration directory +# NOTE: Files in this directory are included first. if [[ -d "$SERVICE_BASE_OVERRIDES" ]]; then echo "Including base overrides from directory: $SERVICE_BASE_OVERRIDES" for file in "$SERVICE_BASE_OVERRIDES"/*.yaml; do @@ -59,22 +95,24 @@ else echo "Warning: Base override directory not found: $SERVICE_BASE_OVERRIDES" fi -# Include Global Overrides -if [[ -d "$GLOBAL_OVERRIDES" ]]; then - echo "Including global overrides from directory: $GLOBAL_OVERRIDES" - for file in "$GLOBAL_OVERRIDES"/*.yaml; do +# Include all YAML files from the GLOBAL configuration directory +# NOTE: Files here override base settings and are applied before service-specific ones. +if [[ -d "$GLOBAL_OVERRIDES_DIR" ]]; then + echo "Including global overrides from directory: $GLOBAL_OVERRIDES_DIR" + for file in "$GLOBAL_OVERRIDES_DIR"/*.yaml; do if [[ -e "$file" ]]; then echo " - $file" overrides_args+=("-f" "$file") fi done else - echo "Warning: Global override directory not found: $GLOBAL_OVERRIDES" + echo "Warning: Global override directory not found: $GLOBAL_OVERRIDES_DIR" fi # Include all YAML files from the custom SERVICE configuration directory +# NOTE: Files here have the highest precedence. if [[ -d "$SERVICE_CUSTOM_OVERRIDES" ]]; then - echo "Including overrides from config directory:" + echo "Including overrides from service config directory:" for file in "$SERVICE_CUSTOM_OVERRIDES"/*.yaml; do if [[ -e "$file" ]]; then echo " - $file" @@ -82,20 +120,16 @@ if [[ -d "$SERVICE_CUSTOM_OVERRIDES" ]]; then fi done else - echo "Warning: Config directory not found: $SERVICE_CUSTOM_OVERRIDES" + echo "Warning: Service config directory not found: $SERVICE_CUSTOM_OVERRIDES" fi echo -# --- Helm Repository and Execution --- -helm repo add "$HELM_REPO_NAME" "$HELM_REPO_URL" -helm repo update - # Collect all --set arguments, executing commands and quoting safely set_args=() helm_command=( - helm upgrade --install "$SERVICE_NAME" "$HELM_REPO_NAME/$SERVICE_NAME" + helm upgrade --install "$SERVICE_NAME_DEFAULT" "$HELM_CHART_PATH" # --version "${SERVICE_VERSION}" --namespace="$SERVICE_NAMESPACE" --timeout 120m @@ -106,7 +140,8 @@ helm_command=( # Post-renderer configuration --post-renderer "$GENESTACK_OVERRIDES_DIR/kustomize/kustomize.sh" - --post-renderer-args "$SERVICE_NAME/overlay" + --post-renderer-args "$SERVICE_NAME_DEFAULT/overlay" + "$@" )