From: rshri Date: Fri, 13 Jun 2025 11:30:35 +0000 (+0000) Subject: Feature 11055: Update cluster configuration to support the feature X-Git-Tag: v18.0.0~28 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F31%2F15231%2F7;p=osm%2Fdevops.git Feature 11055: Update cluster configuration to support the feature Change-Id: I7a92c29a943d8767524ed40636eb204bd4ec2718 Signed-off-by: rshri --- diff --git a/docker/osm-krm-functions/scripts/library/helper-functions.rc b/docker/osm-krm-functions/scripts/library/helper-functions.rc index f5e4a551..03614d14 100644 --- a/docker/osm-krm-functions/scripts/library/helper-functions.rc +++ b/docker/osm-krm-functions/scripts/library/helper-functions.rc @@ -379,6 +379,47 @@ function add_patch_to_kustomization() { "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${KUSTOMIZATION_NAME}\")" } +function patch_add_value_as_list() { + local KEY_PATH="$1" + local VALUE="$2" + local TARGET_FILTERS="${3:-}" + + yq "(.items[]${TARGET_FILTERS})${KEY_PATH} += [${VALUE}]" +} + +function add_patch_to_kustomization_as_list() { + local KUSTOMIZATION_NAME="$1" + local PATCH_VALUE="$2" + + local VALUE_AS_JSON=$(echo "$PATCH_VALUE" | yq -o json -I0) + + patch_add_value_as_list \ + ".spec.patches" \ + "${VALUE_AS_JSON}" \ + "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${KUSTOMIZATION_NAME}\")" +} + +function add_component_to_kustomization_as_list() { + local KUSTOMIZATION_NAME="$1" + shift + local COMPONENT=("$@") + + local COMPONENT_JSON=$(printf '"%s",' "${COMPONENT[@]}" | sed 's/,$//') + + patch_add_value_as_list \ + ".spec.components" \ + "${COMPONENT_JSON}" \ + "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${KUSTOMIZATION_NAME}\")" +} + +function add_config_to_kustomization() { + local KUSTOMIZATION_NAME="$1" + + yq ' + (.items[] | select(.kind == "Kustomization") | select(.metadata.name == "'"${KUSTOMIZATION_NAME}"'")) + .spec.postBuild.substituteFrom = [{"kind": "ConfigMap", "name": "'"${KUSTOMIZATION_NAME}"'-parameters"}] + ' +} # Helper function to produce a JSON Patch as specified in RFC 6902 function as_json_patch() { diff --git a/docker/osm-krm-functions/scripts/library/krm-functions.rc b/docker/osm-krm-functions/scripts/library/krm-functions.rc index 61f6b696..1a3c0bd0 100644 --- a/docker/osm-krm-functions/scripts/library/krm-functions.rc +++ b/docker/osm-krm-functions/scripts/library/krm-functions.rc @@ -621,8 +621,13 @@ function create_crossplane_cluster() { local MGMT_PROJECT_NAME="${19:-"osm_admin"}" local MGMT_CLUSTER_NAME="${20:-"_management"}" local BASE_TEMPLATES_PATH="${21:-"cloud-resources"}" - local TEMPLATE_MANIFEST_FILENAME="${22:-"${CLUSTER_TYPE,,}01.yaml"}" - local MANIFEST_FILENAME="${23:-"${CLUSTER_TYPE,,}-${CLUSTER_NAME}.yaml"}" + # EKS only + local CLUSTER_IAM_ROLE="${22}" + local CLUSTER_PRIVATE_SUBNETS_ID="${23}" + local CLUSTER_PUBLIC_SUBNETS_ID="${24}" + local CONFIGMAP_NAME="${25}" + local TEMPLATE_MANIFEST_FILENAME="${26:-"${CLUSTER_TYPE,,}01.yaml"}" + local MANIFEST_FILENAME="${27:-"${CLUSTER_TYPE,,}-${CLUSTER_NAME}.yaml"}" # Is the provider type supported? @@ -630,14 +635,90 @@ function create_crossplane_cluster() { CLUSTER_TYPE="${CLUSTER_TYPE,,}" [[ ! ($(echo ${VALID_PROVIDERS[@]} | grep -w "${CLUSTER_TYPE}")) ]] && return 1 - # Determines the source dir for the templates and the target folder in Fleet - local TEMPLATES_DIR="${SW_CATALOGS_REPO_DIR}/${BASE_TEMPLATES_PATH}/${CLUSTER_TYPE}/templates" - local TARGET_FOLDER="${FLEET_REPO_DIR}/${MGMT_PROJECT_NAME}/managed-resources/${MGMT_CLUSTER_NAME}" - # Determine which optional steps may be needed + local IS_EKS=$([[ "${CLUSTER_TYPE}" == "eks" ]]; echo $?) local IS_AKS=$([[ "${CLUSTER_TYPE}" == "aks" ]]; echo $?) local IS_GCP=$([[ "${CLUSTER_TYPE}" == "gcp" ]]; echo $?) + local IS_EKS_AND_IAM=1 + local IAM_COMPONENTS=() + local PATCH_SUBNET=0 + local PATCH_IAM=0 + local PATCH_VALUE="" + local PATCH=1 + local CONFIG=1 + + if [[ "$IS_EKS" -eq 0 ]]; then + + # Check for subnet config + if [[ "$CLUSTER_PRIVATE_SUBNETS_ID" == "default" ]]; then + IS_EKS_AND_IAM=0 + IAM_COMPONENTS+=("../network") + else + PATCH_SUBNET=1 + fi + + # Check for IAM role config + if [[ "$CLUSTER_IAM_ROLE" == "default" ]]; then + IS_EKS_AND_IAM=0 + IAM_COMPONENTS+=("../iam") + else + PATCH_IAM=1 + fi + + # Set PATCH flag if patch is required + if [[ $PATCH_SUBNET -eq 1 || $PATCH_IAM -eq 1 ]]; then + # PATCH=1 + echo "Generating patch..." + + PATCH_VALUE=$(cat <