blob: 7400185194a35dc69804dd8a4bbee5541f40ffbf [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
31 HELMVERSION=2.12.3
32fi
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
70$HELM_COMMAND repo add local http://127.0.0.1:8879/charts
71# Remove it/dep charts
72rm -rf ./dep
Zhe Huangdbdd2b52020-03-26 16:50:33 -040073
wriderdb365a72020-01-20 15:28:51 -050074# Create array of helm charts
Zhe Huangfaf7b362020-03-26 17:35:19 -040075echo "Finding all Helm charts"
wriderdb365a72020-01-20 15:28:51 -050076CHART_ARRAY=()
77while IFS= read -r -d $'\0'; do
78 CHART_ARRAY+=("$REPLY")
Zhe Huangfaf7b362020-03-26 17:35:19 -040079done < <(find "$ROOT_DIR/../" -maxdepth 4 -name Chart.yaml -printf '%h\0')
wriderdb365a72020-01-20 15:28:51 -050080
81echo "***************************************"
wriderdb365a72020-01-20 15:28:51 -050082for dir in "${CHART_ARRAY[@]}"
83do
Zhe Huangfaf7b362020-03-26 17:35:19 -040084 echo "Running helm lint and verification on chart $dir"
85 echo "Update chart dependency"
86 $HELM_COMMAND dep up "$dir"
wriderdb365a72020-01-20 15:28:51 -050087 # Lint clearly marks errors; e.g., [ERROR]
Zhe Huangfaf7b362020-03-26 17:35:19 -040088 echo "Performing Helm lint"
89 if [[ "${OVERRIDEYAML:-nope}" != "nope" ]]; then
90 $HELM_COMMAND lint -f "$OVERRIDEYAML" "$dir"> /tmp/output 2>&1
wriderdb365a72020-01-20 15:28:51 -050091 else
Zhe Huangfaf7b362020-03-26 17:35:19 -040092 $HELM_COMMAND lint "$dir" > /tmp/output 2>&1
wriderdb365a72020-01-20 15:28:51 -050093 fi
94 echo "***************************************************************************************************************"
95 cat /tmp/output
wriderdb365a72020-01-20 15:28:51 -050096 egrep -q '^Error: [0-9]* chart\(s\) linted, [0-9]* chart\(s\) failed' /tmp/output && exit 1
97 echo "***************************************************************************************************************"
Zhe Huangfaf7b362020-03-26 17:35:19 -040098 echo "Rendering Helm charts locally"
99 if [[ "${OVERRIDEYAML:-nope}" != "nope" ]]; then
100 $HELM_COMMAND template -f "$OVERRIDEYAML" "$dir" > /tmp/output 2>&1
wriderdb365a72020-01-20 15:28:51 -0500101 else
Zhe Huangfaf7b362020-03-26 17:35:19 -0400102 $HELM_COMMAND template "$dir" > /tmp/output 2>&1
wriderdb365a72020-01-20 15:28:51 -0500103 fi
104 echo "***************************************************************************************************************"
105 cat /tmp/output
Zhe Huangfaf7b362020-03-26 17:35:19 -0400106 grep -E -n '%!.\(.*=.*\)' /tmp/output && echo "Error: Type mismatch." && exit 1
wriderdb365a72020-01-20 15:28:51 -0500107 echo "***************************************************************************************************************"
wriderdb365a72020-01-20 15:28:51 -0500108done
Zhe Huangfaf7b362020-03-26 17:35:19 -0400109echo "--> verify-ric-charts ends"
wriderdb365a72020-01-20 15:28:51 -0500110exit 0
111