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=()
117 COMPONENTS="controlpanel a1controller a1simulator policymanagementservice informationservice rappcatalogueservice rappcatalogueenhancedservice nonrtricgateway dmaapadapterservice dmaapmediatorservice helmmanager orufhrecovery ransliceassurance capifcore rappmanager dmeparticipant"
118 for component in $COMPONENTS; do
119 echo "Packaging NONRTRIC component [$component]"
120 helm dep up $ROOT_DIR/../nonrtric/helm/$component
121 VERSION=$(cat $ROOT_DIR/../nonrtric/helm/$component/Chart.yaml | grep version | awk '{print $2}')
122 helm package -d /tmp $ROOT_DIR/../nonrtric/helm/$component
123 resp_code=$(curl -s -o /dev/null -w "%{http_code}" --data-binary @/tmp/$component-$VERSION.tgz $CM_CHART_POST_URL)
124 echo "Chart upload status of $component is $resp_code"
125 if [ "$resp_code" -eq 409 ]; then
126 charts_already_exists+=("$component")
130 if [ ${#charts_already_exists[@]} -gt 0 ]; then
131 echo "----------------------------------- WARNING!!! -------------------------------------------"
132 echo "The following charts already exists in ChartMuseum '${charts_already_exists[@]}'."
133 echo "The current build of the charts hasn't been updated because the charts already exist."
134 echo "It is recommended to delete the charts from ChartMuseum before the build."
135 echo "------------------------------------------------------------------------------------------"
138 helm dep up $ROOT_DIR/../nonrtric/helm/nonrtric
140 helm repo index ${HELM_LOCAL_REPO}
142 # Make sure that helm local repo is added
143 helm repo add local $CM_CHART_GET_URL --force-update
145 echo "Finished Packaging NONRTRIC components [$COMPONENTS]"
148 COMMON_BLOCK=$(cat $OVERRIDEYAML | awk '/^common:/{getline; while ($0 ~ /^ +.*|^ *$/) {print $0; if (getline == 0) {break}}}')
149 NAMESPACE_BLOCK=$(cat $OVERRIDEYAML | awk '/^ namespace:/{getline; while ($0 ~ /^ .*|^ *$/) {print $0; if (getline == 0) {break}}}')
150 NONRTRIC_NAMESPACE=$(echo "$NAMESPACE_BLOCK" | awk '/^ *nonrtric:/{print $2}')
151 RELEASE_PREFIX=$(echo "$COMMON_BLOCK" | awk '/^ *releasePrefix:/{print $2}')
152 INSTALL_KONG=$(cat $OVERRIDEYAML | awk '/^ installKong:/{print $2}')
153 INSTALL_RANPM=$(cat $OVERRIDEYAML | awk '/^ installRanpm:/{print $2}')
155 if ! kubectl get ns ${NONRTRIC_NAMESPACE:-nonrtric}> /dev/null 2>&1; then
156 kubectl create ns ${NONRTRIC_NAMESPACE:-nonrtric}
158 if ! kubectl get ns onap > /dev/null 2>&1; then
159 kubectl create ns onap
162 echo "Install Kong- $INSTALL_KONG"
164 if [ "$INSTALL_KONG" = true ];then
165 echo "Installing Kong"
166 helm repo add kong https://charts.konghq.com --force-update
168 helm install kong-nonrtric --namespace ${NONRTRIC_NAMESPACE:-nonrtric} kong/kong --set ingressController.installCRDs=false --set admin.enabled=true
171 kubectl create configmap -n ${NONRTRIC_NAMESPACE:-nonrtric} nonrtric-recipe --from-file=recipe=$OVERRIDEYAML
173 echo "Deploying NONRTRIC"
175 echo "Install Ranpm- $INSTALL_RANPM"
177 if [ "$INSTALL_RANPM" = true ];then
178 echo "Running install-ranpm.sh"
179 chmod +x ${ROOT_DIR}/../ranpm/install/install-ranpm.sh
180 ${ROOT_DIR}/../ranpm/install/install-ranpm.sh
181 echo "install-ranpm.sh completed"
185 if [ -z $IS_HELM3 ];then
186 HELM_NAME_OPT="--name"
189 echo "helm install -f $OVERRIDEYAML --namespace ${NONRTRIC_NAMESPACE:-nonrtric} ${HELM_NAME_OPT} ${RELEASE_PREFIX} $ROOT_DIR/../nonrtric/helm/nonrtric"
190 helm install -f $OVERRIDEYAML --namespace "${NONRTRIC_NAMESPACE:-nonrtric}" ${HELM_NAME_OPT} "${RELEASE_PREFIX}" "$ROOT_DIR/../nonrtric/helm/nonrtric"