From: yshah Date: Fri, 13 Jun 2025 14:56:25 +0000 (+0000) Subject: Feature: 11055 Support of several node groups in clusters created by OSM X-Git-Tag: v18.0.0~27 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F33%2F15233%2F7;p=osm%2Fdevops.git Feature: 11055 Support of several node groups in clusters created by OSM Change-Id: I8c02465364c4b465a6503b19c8983e1587eaa5d4 Signed-off-by: yshah --- diff --git a/docker/osm-krm-functions/scripts/library/krm-functions.rc b/docker/osm-krm-functions/scripts/library/krm-functions.rc index 1a3c0bd0..1d457053 100644 --- a/docker/osm-krm-functions/scripts/library/krm-functions.rc +++ b/docker/osm-krm-functions/scripts/library/krm-functions.rc @@ -112,6 +112,179 @@ function add_providerconfig_for_gcp() { } +# Create remote NodeGroup in AWS +function create_nodegroup() { + local NODEGROUP_NAME="$1" + local NODEGROUP_KUSTOMIZATION_NAME="$2" + local CLUSTER_NAME="$3" + local CLUSTER_TYPE="$4" + local PROVIDERCONFIG_NAME="${5:-default}" + local VM_SIZE="$6" + local NODE_COUNT="$7" + local CLUSTER_LOCATION="$8" + local CONFIGMAP_NAME="${9}" + local NODEGROUP_ROLE="${10}" + local PUBLIC_KEY_MGMT="${11:-"${PUBLIC_KEY_MGMT}"}" + local PUBLIC_KEY_NEW_CLUSTER="${12}" + local PRIVATE_KEY_NEW_CLUSTER="${13:-"${PRIVATE_KEY_NEW_CLUSTER}"}" + local AKS_RG_NAME="${14:-""}" + local GKE_PREEMPTIBLE_NODES="${15:-""}" + local FLEET_REPO_DIR="${16:-"${FLEET_REPO_DIR}"}" + local FLEET_REPO_URL="${17:-""}" + local SW_CATALOGS_REPO_DIR="${18:-"${SW_CATALOGS_REPO_DIR}"}" + local SW_CATALOGS_REPO_URL="${19:-""}" + local SKIP_BOOTSTRAP="${20:"false"}" + local MGMT_PROJECT_NAME="${21:-"osm_admin"}" + local MGMT_CLUSTER_NAME="${22:-"_management"}" + local BASE_TEMPLATES_PATH="${23:-"cloud-resources"}" + local TEMPLATE_MANIFEST_FILENAME="${24:-"nodegroup.yaml"}" + local MANIFEST_FILENAME="${25:-"${NODEGROUP_NAME}.yaml"}" + + # Is the provider type supported? + local VALID_PROVIDERS=("eks" "aks" "gke") + 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}/eks-nodegroup/templates" + local TARGET_FOLDER="${FLEET_REPO_DIR}/${MGMT_PROJECT_NAME}/managed-resources/${MGMT_CLUSTER_NAME}/${CLUSTER_NAME}" + + local IS_NODEGROUP_ROLE=$([[ "${NODEGROUP_ROLE}" != "default" ]]; echo $?) + local IS_DEFAULT_NODEGROUP_ROLE=$([[ "${NODEGROUP_ROLE}" == "default" ]]; echo $?) + + local PATCH_VALUE="" + local COMPONENT=() + if [[ "${IS_NODEGROUP_ROLE}" == "0" ]]; + then + PATCH_VALUE=$(cat <