[GLOBAL] Migrate to helm v3
[oom.git] / kubernetes / helm / plugins / deploy / deploy.sh
index 3bcb404..13b0ed8 100755 (executable)
@@ -2,7 +2,7 @@
 
 usage() {
 cat << EOF
-Install (or upgrade) an umbrella Helm Chart, and its subcharts, as separate Helm Releases 
+Install (or upgrade) an umbrella Helm Chart, and its subcharts, as separate Helm Releases
 
 The umbrella Helm Chart is broken apart into a parent release and subchart releases.
 Subcharts the are disabled (<chart>.enabled=false) will not be installed or upgraded.
@@ -22,13 +22,13 @@ You can specify the '--values'/'-f' flag multiple times. The priority will be gi
 last (right-most) file specified. For example, if both myvalues.yaml and override.yaml
 contained a key called 'Test', the value set in override.yaml would take precedence:
 
-       $ helm deploy demo ./onap --namespace onap -f openstack.yaml -f overrides.yaml
+    $ helm deploy demo ./onap --namespace onap -f openstack.yaml -f overrides.yaml
 
 You can specify the '--set' flag multiple times. The priority will be given to the
 last (right-most) set specified. For example, if both 'bar' and 'newbar' values are
 set for a key called 'foo', the 'newbar' value would take precedence:
 
-       $ helm deploy demo local/onap --namespace onap -f overrides.yaml --set log.enabled=false --set vid.enabled=false
+    $ helm deploy demo local/onap --namespace onap -f overrides.yaml --set log.enabled=false --set vid.enabled=false
 
 Usage:
   helm deploy [RELEASE] [CHART] [flags]
@@ -49,14 +49,14 @@ generate_overrides() {
   for index in "${!SUBCHART_NAMES[@]}"; do
     START=${SUBCHART_NAMES[index]}
     END=${SUBCHART_NAMES[index+1]}
-    if [[ $START == "global:" ]]; then
+    if [ "$START" = "global:" ]; then
       echo "global:" > $GLOBAL_OVERRIDES
       cat $COMPUTED_OVERRIDES | sed '/common:/,/consul:/d' \
         | sed -n '/^'"$START"'/,/'log:'/p' | sed '1d;$d' >> $GLOBAL_OVERRIDES
     else
-      SUBCHART_DIR="$CACHE_SUBCHART_DIR/$(cut -d':' -f1 <<<"$START")"
-      if [[ -d "$SUBCHART_DIR" ]]; then
-        if [[ -z "$END" ]]; then
+      SUBCHART_DIR="$CACHE_SUBCHART_DIR/$(echo "$START" |cut -d':' -f1)"
+      if [ -d "$SUBCHART_DIR" ]; then
+        if [ -z "$END" ]; then
           cat $COMPUTED_OVERRIDES | sed -n '/^'"$START"'/,/'"$END"'/p' \
             | sed '1d;$d' | cut -c3- > $SUBCHART_DIR/subchart-overrides.yaml
         else
@@ -70,39 +70,37 @@ generate_overrides() {
 resolve_deploy_flags() {
   flags=($1)
   n=${#flags[*]}
-  for (( i = 0; i < n; i++ )); do
+  i=0 ; while [ "$i" -lt "$n" ]; do
     PARAM=${flags[i]}
-    if [[ $PARAM == "-f" || \
-          $PARAM == "--values" || \
-          $PARAM == "--set" || \
-          $PARAM == "--set-string" || \
-          $PARAM == "--version" ]]; then
+    if [ "$PARAM" = "-f" ] || \
+       [ "$PARAM" = "--values" ] || \
+       [ "$PARAM" = "--set" ] || \
+       [ "$PARAM" = "--set-string" ] || \
+       [ "$PARAM" = "--version" ]; then
        # skip param and its value
        i=$((i + 1))
     else
       DEPLOY_FLAGS="$DEPLOY_FLAGS $PARAM"
     fi
+    i=$((i+1))
   done
   echo "$DEPLOY_FLAGS"
 }
 
 deploy() {
   # validate params
-  if [[ -z "$1" || -z "$2" ]]; then
+  if [ -z "$1" ] || [ -z "$2" ]; then
     usage
-    exit 0
+    exit 1
   fi
 
   RELEASE=$1
   CHART_URL=$2
-  FLAGS=${@:3}
-  CHART_REPO="$(cut -d'/' -f1 <<<"$CHART_URL")"
-  CHART_NAME="$(cut -d'/' -f2 <<<"$CHART_URL")"
-  if [[ $HELM_VER == "v3."* ]]; then
-    CACHE_DIR=~/.local/share/helm/plugins/deploy/cache
-  else
-    CACHE_DIR=~/.helm/plugins/deploy/cache
-  fi
+  FLAGS=$(echo ${@} | sed 's/^ *[^ ]* *[^ ]* *//')
+  CHART_REPO="$(echo "$CHART_URL" | cut -d'/' -f1)"
+  CHART_NAME="$(echo "$CHART_URL" | cut -d'/' -f2)"
+
+  CACHE_DIR=~/.local/share/helm/plugins/deploy/cache
   echo "Use cache dir: $CACHE_DIR"
   CHART_DIR=$CACHE_DIR/$CHART_NAME
   CACHE_SUBCHART_DIR=$CHART_DIR-subcharts
@@ -110,23 +108,23 @@ deploy() {
 
   # determine if verbose output is enabled
   VERBOSE="false"
-  if [[ $FLAGS = *"--verbose"* ]]; then
+  if expr "$FLAGS" : ".*--verbose.*" ; then
     FLAGS="$(echo $FLAGS| sed -n 's/--verbose//p')"
     VERBOSE="true"
   fi
   # determine if delay for deployment is enabled
   DELAY="false"
-  if [[ $FLAGS = *"--delay"* ]]; then
+  if expr "$FLAGS" : ".*--delay.*" ; then
     FLAGS="$(echo $FLAGS| sed -n 's/--delay//p')"
     DELAY="true"
   fi
   # determine if set-last-applied flag is enabled
   SET_LAST_APPLIED="false"
-  if [[ $FLAGS = *"--set-last-applied"* ]]; then
+  if expr "$FLAGS" : ".*--set-last-applied.*" ; then
     FLAGS="$(echo $FLAGS| sed -n 's/--set-last-applied//p')"
     SET_LAST_APPLIED="true"
   fi
-  if [[ $FLAGS = *"--dry-run"* ]]; then
+  if expr "$FLAGS" : ".*--dry-run.*" ; then
     VERBOSE="true"
     FLAGS="$FLAGS --debug"
   fi
@@ -146,10 +144,10 @@ deploy() {
   DEPLOY_FLAGS=$(resolve_deploy_flags "$FLAGS")
 
   # determine if upgrading individual subchart or entire parent + subcharts
-  SUBCHART_RELEASE="$(cut -d'-' -f2 <<<"$RELEASE")"
+  SUBCHART_RELEASE="$(echo "$RELEASE" |cut -d'-' -f2)"
   # update specified subchart without parent
-  RELEASE="$(cut -d'-' -f1 <<<"$RELEASE")"
-  if [[ $SUBCHART_RELEASE == $RELEASE ]]; then
+  RELEASE="$(echo "$RELEASE" |cut -d'-' -f1)"
+  if [ "$SUBCHART_RELEASE" = "$RELEASE" ]; then
     SUBCHART_RELEASE=
   fi
 
@@ -157,7 +155,7 @@ deploy() {
   rm -rf $CACHE_DIR
 
   # fetch umbrella chart (parent chart containing subcharts)
-  if [[ -d "$CHART_URL" ]]; then
+  if [ -d "$CHART_URL" ]; then
     mkdir -p $CHART_DIR
     cp -R $CHART_URL/* $CHART_DIR/
 
@@ -180,9 +178,11 @@ deploy() {
   # temp hack - parent chart needs common subchart
   mv $CACHE_SUBCHART_DIR/common $CHART_DIR/charts/
 
-  # disable dependencies
-  rm $CHART_DIR/requirements.lock
-  mv $CHART_DIR/requirements.yaml $CHART_DIR/requirements.deploy
+ # disable dependencies
+  rm $CHART_DIR/Chart.lock
+  sed -n '1,/dependencies:/p;/description:/,$p' $CHART_DIR/Chart.yaml | grep -v dependencies > $CHART_DIR/deploy_Chart.yaml
+  mv $CHART_DIR/Chart.yaml $CHART_DIR/Chart.deploy
+  mv $CHART_DIR/deploy_Chart.yaml $CHART_DIR/Chart.yaml
 
   # compute overrides for parent and all subcharts
   COMPUTED_OVERRIDES=$CACHE_DIR/$CHART_NAME/computed-overrides.yaml
@@ -194,20 +194,20 @@ deploy() {
   generate_overrides $COMPUTED_OVERRIDES $GLOBAL_OVERRIDES
 
   # upgrade/install parent chart first
-  if [[ -z "$SUBCHART_RELEASE" ]]; then
+  if [ -z "$SUBCHART_RELEASE" ]; then
     LOG_FILE=$LOG_DIR/${RELEASE}.log
     :> $LOG_FILE
 
     helm upgrade -i $RELEASE $CHART_DIR $DEPLOY_FLAGS -f $COMPUTED_OVERRIDES \
      > $LOG_FILE.log 2>&1
 
-    if [[ $VERBOSE == "true" ]]; then
+    if [ "$VERBOSE" = "true" ]; then
       cat $LOG_FILE
     else
       echo "release \"$RELEASE\" deployed"
     fi
     # Add annotation last-applied-configuration if set-last-applied flag is set
-    if [[ $SET_LAST_APPLIED == "true" ]]; then
+    if [ "$SET_LAST_APPLIED" = "true" ]; then
       helm get manifest ${RELEASE} \
       | kubectl apply set-last-applied --create-annotation -n onap -f - \
       > $LOG_FILE.log 2>&1
@@ -223,12 +223,12 @@ deploy() {
     SUBCHART_OVERRIDES=$CACHE_SUBCHART_DIR/$subchart/subchart-overrides.yaml
 
     SUBCHART_ENABLED=0
-    if [[ -f $SUBCHART_OVERRIDES ]]; then
+    if [ -f $SUBCHART_OVERRIDES ]; then
       SUBCHART_ENABLED=$(cat $SUBCHART_OVERRIDES | grep -c "^enabled: true")
     fi
 
-    if [[ $SUBCHART_ENABLED -eq 1 ]]; then
-      if [[ -z "$SUBCHART_RELEASE" || $SUBCHART_RELEASE == "$subchart" ]]; then
+    if [ $SUBCHART_ENABLED -eq 1 ]; then
+      if [ -z "$SUBCHART_RELEASE" ] || [ "$SUBCHART_RELEASE" = "$subchart" ]; then
         LOG_FILE=$LOG_DIR/"${RELEASE}-${subchart}".log
         :> $LOG_FILE
 
@@ -236,41 +236,33 @@ deploy() {
          $DEPLOY_FLAGS -f $GLOBAL_OVERRIDES -f $SUBCHART_OVERRIDES \
          > $LOG_FILE 2>&1
 
-        if [[ $VERBOSE == "true" ]]; then
+        if [ "$VERBOSE" = "true" ]; then
           cat $LOG_FILE
         else
           echo "release \"${RELEASE}-${subchart}\" deployed"
         fi
-       # Add annotation last-applied-configuration if set-last-applied flag is set
-        if [[ $SET_LAST_APPLIED == "true" ]]; then
+        # Add annotation last-applied-configuration if set-last-applied flag is set
+        if [ "$SET_LAST_APPLIED" = "true" ]; then
           helm get manifest "${RELEASE}-${subchart}" \
           | kubectl apply set-last-applied --create-annotation -n onap -f - \
-             > $LOG_FILE.log 2>&1
+          > $LOG_FILE.log 2>&1
         fi
       fi
-         if [[ $DELAY == "true" ]]; then
-               echo sleep 3m
-               sleep 3m
-         fi
+      if [ "$DELAY" = "true" ]; then
+        echo sleep 3m
+        sleep 180
+      fi
     else
       array=($(echo "$ALL_HELM_RELEASES" | grep "${RELEASE}-${subchart}"))
       n=${#array[*]}
-      for (( i = n-1; i >= 0; i-- )); do
-        if [[ $HELM_VER == "v3."* ]]; then
-          helm del "${array[i]}" 
-        else
-          helm del "${array[i]}" --purge
-        fi
+      for i in $(seq $(($n-1)) -1 0); do
+        helm del "${array[i]}"
       done
     fi
   done
 
   # report on success/failures of installs/upgrades
-  if [[ $HELM_VER == "v3."* ]]; then
-    helm ls --all-namespaces | grep -i FAILED | grep $RELEASE
-  else
-    helm ls | grep FAILED | grep $RELEASE
-  fi
+  helm ls --all-namespaces | grep -i FAILED | grep $RELEASE
 }
 HELM_VER=$(helm version --template "{{.Version}}")
 echo $HELM_VER
@@ -286,7 +278,7 @@ case "${1:-"help"}" in
     usage
     ;;
   *)
-    deploy $1 $2 ${@:3}
+    deploy $1 $2 $(echo ${@} | sed 's/^ *[^ ]* *[^ ]* *//')
     ;;
 esac