2 ################################################################################
3 # Copyright (c) 2023 Nordix Foundation. #
4 # Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. #
6 # Licensed under the Apache License, Version 2.0 (the "License"); #
7 # you may not use this file except in compliance with the License. #
8 # You may obtain a copy of the License at #
10 # http://www.apache.org/licenses/LICENSE-2.0 #
12 # Unless required by applicable law or agreed to in writing, software #
13 # distributed under the License is distributed on an "AS IS" BASIS, #
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
15 # See the License for the specific language governing permissions and #
16 # limitations under the License. #
17 ################################################################################
19 # This script deploys NonRtRic components automatically
23 if [ "$#" -eq 1 ]; then
27 while [ -n "$1" ]; do # while loop starts
34 *) echo "Option $1 not recognized" ;; # In case you typed a different option other than a,b,c
44 if [ -z "$OVERRIDEYAML" ];then
45 echo "****************************************************************************************************************"
47 echo "****************************************************************************************************************"
48 echo "RIC deployment without deployment recipe is currently disabled. Please specify an recipe with the -f option."
49 echo "****************************************************************************************************************"
54 ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
57 rm $ROOT_DIR/../nonrtric/helm/*/charts/*.tgz
59 #ChartMuseum configuration
62 CM_BASE_URL="http://127.0.0.1:$CM_PORT"
63 CM_CHART_GET_URL="$CM_BASE_URL/charts"
64 CM_CHART_POST_URL="$CM_BASE_URL/charts/api/charts"
67 IS_HELM3=$(helm version -c --short|grep -e "^v3")
69 if ! command -v chartmuseum &> /dev/null
72 echo "Installing ChartMuseum binary..."
73 wget https://get.helm.sh/chartmuseum-$CM_VERSION-linux-amd64.tar.gz
74 tar xvfz chartmuseum-$CM_VERSION-linux-amd64.tar.gz
75 sudo mv /tmp/linux-amd64/chartmuseum /usr/local/bin/chartmuseum
78 echo "ChartMuseum is already installed."
81 # Package common templates and serve it using Helm local repo
82 HELM_LOCAL_REPO="./chartstorage"
85 #Start Chart Museum server if there isn't one
86 CHART_MUSEUM_PID=$(lsof -i :"$CM_PORT" | grep "chartmus" | grep -v "grep" | awk '{print $2}')
87 if [ -z "$CHART_MUSEUM_PID" ]; then
88 echo "Starting ChartMuseum on port $CM_PORT..."
89 nohup chartmuseum --port=$CM_PORT --storage="local" --context-path=/charts --storage-local-rootdir=$HELM_LOCAL_REPO >/dev/null 2>&1 &
90 echo $! > $ROOT_DIR/CM_PID.txt
92 echo "ChartMuseum is already running..."
95 # Check if ChartMuseum is ready to serve request
96 command="curl --silent --output /dev/null $CM_BASE_URL"
98 do $command && s=0 && break || s=$? && echo "Failed to establish a connection with the ChartMuseum server. Retrying after 5s" && sleep 5;
103 echo "Cmd to test ChartMuseum failed with ($s): $command"
107 helm repo remove local
108 helm repo add local $CM_CHART_GET_URL
110 echo -e "\nPackaging NONRTRIC common [nonrtric-common]"
111 NONRTRIC_COMMON_CHART_VERSION=$(cat $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common/Chart.yaml | grep version | awk '{print $2}')
112 helm package -d /tmp $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common
113 curl --data-binary @/tmp/nonrtric-common-$NONRTRIC_COMMON_CHART_VERSION.tgz $CM_CHART_POST_URL
115 charts_already_exists=()
122 dmaapadapterservice \
123 dmaapmediatorservice \
129 policymanagementservice \
131 rappcatalogueenhancedservice \
132 rappcatalogueservice \
137 for component in $COMPONENTS; do
138 echo "Packaging NONRTRIC component [$component]"
139 helm dep up $ROOT_DIR/../nonrtric/helm/$component
140 VERSION=$(cat $ROOT_DIR/../nonrtric/helm/$component/Chart.yaml | grep version | awk '{print $2}')
141 helm package -d /tmp $ROOT_DIR/../nonrtric/helm/$component
142 resp_code=$(curl -s -o /dev/null -w "%{http_code}" --data-binary @/tmp/$component-$VERSION.tgz $CM_CHART_POST_URL)
143 echo "Chart upload status of $component is $resp_code"
144 if [ "$resp_code" -eq 409 ]; then
145 charts_already_exists+=("$component")
149 if [ ${#charts_already_exists[@]} -gt 0 ]; then
150 echo "----------------------------------- WARNING!!! -------------------------------------------"
151 echo "The following charts already exists in ChartMuseum '${charts_already_exists[@]}'."
152 echo "The current build of the charts hasn't been updated because the charts already exist."
153 echo "It is recommended to delete the charts from ChartMuseum before the build."
154 echo "------------------------------------------------------------------------------------------"
157 helm dep up $ROOT_DIR/../nonrtric/helm/nonrtric
159 helm repo index ${HELM_LOCAL_REPO}
161 # Make sure that helm local repo is added
162 helm repo add local $CM_CHART_GET_URL --force-update
164 echo "Finished Packaging NONRTRIC components [$COMPONENTS]"
167 COMMON_BLOCK=$(cat $OVERRIDEYAML | awk '/^common:/{getline; while ($0 ~ /^ +.*|^ *$/) {print $0; if (getline == 0) {break}}}')
168 NAMESPACE_BLOCK=$(cat $OVERRIDEYAML | awk '/^ namespace:/{getline; while ($0 ~ /^ .*|^ *$/) {print $0; if (getline == 0) {break}}}')
169 NONRTRIC_NAMESPACE=$(echo "$NAMESPACE_BLOCK" | awk '/^ *nonrtric:/{print $2}')
170 RELEASE_PREFIX=$(echo "$COMMON_BLOCK" | awk '/^ *releasePrefix:/{print $2}')
171 INSTALL_KONG=$(cat $OVERRIDEYAML | awk '/^ installKong:/{print $2}')
172 INSTALL_RANPM=$(cat $OVERRIDEYAML | awk '/^ installRanpm:/{print $2}')
174 if ! kubectl get ns ${NONRTRIC_NAMESPACE:-nonrtric}> /dev/null 2>&1; then
175 kubectl create ns ${NONRTRIC_NAMESPACE:-nonrtric}
178 if ! kubectl get ns onap > /dev/null 2>&1; then
179 kubectl create ns onap
183 if [ -z $IS_HELM3 ];then
184 HELM_NAME_OPT="--name"
187 echo "Install Kong- $INSTALL_KONG"
189 if [ "$INSTALL_KONG" = true ];then
190 echo "Install kongstorage through helm"
191 helm install kongstorage -n "${NONRTRIC_NAMESPACE:-nonrtric}" ${HELM_NAME_OPT} "$ROOT_DIR/../nonrtric/helm/kongstorage"
193 echo "Installing Kong"
194 helm repo add kong https://charts.konghq.com --force-update
196 helm install kong-nonrtric kong/kong -n ${NONRTRIC_NAMESPACE:-nonrtric} -f dep/nonrtric/helm/kongstorage/kongvalues.yaml
199 kubectl create configmap -n ${NONRTRIC_NAMESPACE:-nonrtric} nonrtric-recipe --from-file=recipe=$OVERRIDEYAML
201 echo "Deploying NONRTRIC"
203 echo "Install Ranpm- $INSTALL_RANPM"
205 if [ "$INSTALL_RANPM" = true ];then
206 echo "Running install-ranpm.sh"
207 chmod +x ${ROOT_DIR}/../ranpm/install/install-ranpm.sh
208 ${ROOT_DIR}/../ranpm/install/install-ranpm.sh
209 echo "install-ranpm.sh completed"
212 echo "helm install -f $OVERRIDEYAML --namespace ${NONRTRIC_NAMESPACE:-nonrtric} ${HELM_NAME_OPT} ${RELEASE_PREFIX} $ROOT_DIR/../nonrtric/helm/nonrtric"
213 helm install -f $OVERRIDEYAML -n "${NONRTRIC_NAMESPACE:-nonrtric}" ${HELM_NAME_OPT} "${RELEASE_PREFIX}" "$ROOT_DIR/../nonrtric/helm/nonrtric"