blob: 696e447c24a1300f752be4b684ae52aa5bf70491 [file] [log] [blame]
wriderdb365a72020-01-20 15:28:51 -05001#!/bin/bash
2##############################################################################
3#
4# Copyright (c) 2019 AT&T Intellectual Property.
5#
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
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
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#
18##############################################################################
Zhe Huangfaf7b362020-03-26 17:35:19 -040019# Verifies RIC helm charts
20# Requires Linux with wget and tar.
21# This script should be executed inside the ric-plt/ric-dep bin directory only.
22set -eu
23echo "--> verify-ric-charts"
wriderdb365a72020-01-20 15:28:51 -050024
wriderdb365a72020-01-20 15:28:51 -050025
Zhe Huangfaf7b362020-03-26 17:35:19 -040026# (Optional) provide HELMVERSION as first parameter. It selects the helm client version
27# (Optional) provide OVERRIDEYAML as the second parameter. It allows us to specify an override file to replace values used to render the helm charts
28if [[ "${1:-nope}" != "nope" ]]; then
29 HELMVERSION=$1
30else
vipine38909d2020-12-21 10:35:07 +000031 HELMVERSION=2.17.0
Zhe Huangfaf7b362020-03-26 17:35:19 -040032fi
33if [[ "${2:-nope}" != "nope" ]]; then
34 OVERRIDEYAML=$2
Zhe Huangdbdd2b52020-03-26 16:50:33 -040035fi
36
Zhe Huang1c0c34b2020-04-07 16:50:52 -040037ROOT_DIR="$(pwd)"
Zhe Huangfaf7b362020-03-26 17:35:19 -040038HELM_COMMAND=helm
Zhe Huangdbdd2b52020-03-26 16:50:33 -040039
Zhe Huangfaf7b362020-03-26 17:35:19 -040040if ! $($HELM_COMMAND > /dev/null);then
41 echo "Download and install Helm"
42 if [ ! -e helm-v${HELMVERSION}-linux-amd64.tar.gz ]; then
43 wget -nv https://storage.googleapis.com/kubernetes-helm/helm-v${HELMVERSION}-linux-amd64.tar.gz
44 fi
45 tar -xvf ./helm-v${HELMVERSION}-linux-amd64.tar.gz
46 mv linux-amd64/helm ./
47 HELM_COMMAND=./helm
48 $HELM_COMMAND init -c
49fi
50# Set up ric common template
51# Download it/dep common template charts
52git clone --single-branch --branch master "https://gerrit.o-ran-sc.org/r/it/dep" ./dep
wriderdb365a72020-01-20 15:28:51 -050053
Zhe Huangfaf7b362020-03-26 17:35:19 -040054# Start Helm local repo if there isn't one
Zhe Huang1c0c34b2020-04-07 16:50:52 -040055if [ ! -z $(pgrep "$HELM_COMMAND") ]; then
Zhe Huangfaf7b362020-03-26 17:35:19 -040056 echo "Stopping existing local Helm server."
Zhe Huang1c0c34b2020-04-07 16:50:52 -040057 kill -9 "$(pgrep "$HELM_COMMAND")"
Zhe Huangfaf7b362020-03-26 17:35:19 -040058fi
59if [ ! -d ./charts ]; then
60 mkdir ./charts
61fi
62echo "Starting local Helm server"
63nohup $HELM_COMMAND serve --repo-path charts >& /dev/null &
64# Package ric-common and serve it using Helm local repo
65$HELM_COMMAND package --save=false -d ./charts "$ROOT_DIR/dep/ric-common/Common-Template/helm/ric-common"
66$HELM_COMMAND package --save=false -d ./charts "$ROOT_DIR/dep/ric-common/Common-Template/helm/aux-common"
67$HELM_COMMAND repo index ./charts
68# Make sure that helm local repo is added
69$HELM_COMMAND repo remove local
Zhe Huang59ed8ec2020-12-01 18:36:43 -050070$HELM_COMMAND repo remove stable
Zhe Huangfaf7b362020-03-26 17:35:19 -040071$HELM_COMMAND repo add local http://127.0.0.1:8879/charts
72# Remove it/dep charts
73rm -rf ./dep
Zhe Huangdbdd2b52020-03-26 16:50:33 -040074
wriderdb365a72020-01-20 15:28:51 -050075# Create array of helm charts
Zhe Huangfaf7b362020-03-26 17:35:19 -040076echo "Finding all Helm charts"
wriderdb365a72020-01-20 15:28:51 -050077CHART_ARRAY=()
78while IFS= read -r -d $'\0'; do
79 CHART_ARRAY+=("$REPLY")
Zhe Huangfaf7b362020-03-26 17:35:19 -040080done < <(find "$ROOT_DIR/../" -maxdepth 4 -name Chart.yaml -printf '%h\0')
wriderdb365a72020-01-20 15:28:51 -050081
82echo "***************************************"
wriderdb365a72020-01-20 15:28:51 -050083for dir in "${CHART_ARRAY[@]}"
84do
Zhe Huangfaf7b362020-03-26 17:35:19 -040085 echo "Running helm lint and verification on chart $dir"
86 echo "Update chart dependency"
87 $HELM_COMMAND dep up "$dir"
wriderdb365a72020-01-20 15:28:51 -050088 # Lint clearly marks errors; e.g., [ERROR]
Zhe Huangfaf7b362020-03-26 17:35:19 -040089 echo "Performing Helm lint"
90 if [[ "${OVERRIDEYAML:-nope}" != "nope" ]]; then
Zhe Huang2a9da682020-04-07 17:33:19 -040091 $HELM_COMMAND lint -f "$OVERRIDEYAML" "$dir"
wriderdb365a72020-01-20 15:28:51 -050092 else
Zhe Huang2a9da682020-04-07 17:33:19 -040093 $HELM_COMMAND lint "$dir"
wriderdb365a72020-01-20 15:28:51 -050094 fi
95 echo "***************************************************************************************************************"
Zhe Huangfaf7b362020-03-26 17:35:19 -040096 echo "Rendering Helm charts locally"
97 if [[ "${OVERRIDEYAML:-nope}" != "nope" ]]; then
Zhe Huang2a9da682020-04-07 17:33:19 -040098 $HELM_COMMAND template -f "$OVERRIDEYAML" "$dir"
wriderdb365a72020-01-20 15:28:51 -050099 else
Zhe Huang2a9da682020-04-07 17:33:19 -0400100 $HELM_COMMAND template "$dir"
wriderdb365a72020-01-20 15:28:51 -0500101 fi
102 echo "***************************************************************************************************************"
wriderdb365a72020-01-20 15:28:51 -0500103done
Zhe Huangfaf7b362020-03-26 17:35:19 -0400104echo "--> verify-ric-charts ends"
wriderdb365a72020-01-20 15:28:51 -0500105exit 0
106