From 0b06cdd7b3312f928e246d61ae3a9e1128e51b89 Mon Sep 17 00:00:00 2001 From: Krzysztof Kuzmicki Date: Thu, 30 Sep 2021 14:13:39 +0200 Subject: [PATCH] [ROBOT] ADD BULKPM testsuite to use helm based component services Changes required in OOM before adding BULKPM test cases that use helm based component services Signed-off-by: Krzysztof Kuzmicki Issue-ID: INT-1895 Change-Id: I188c847ff7b4f66c88f2b067c0c05ba1c19ac1d7 --- kubernetes/contrib/tools/registry-initialize.sh | 56 +++++++++++--- kubernetes/robot/demo-k8s.sh | 86 +++++++++++++++++++--- .../config/eteshare/config/robot_properties.py | 10 +++ kubernetes/robot/values.yaml | 4 + 4 files changed, 135 insertions(+), 21 deletions(-) diff --git a/kubernetes/contrib/tools/registry-initialize.sh b/kubernetes/contrib/tools/registry-initialize.sh index 75b36bbc52..45ee44f3c5 100755 --- a/kubernetes/contrib/tools/registry-initialize.sh +++ b/kubernetes/contrib/tools/registry-initialize.sh @@ -21,9 +21,9 @@ usage() { - echo "Chart Base directory must be provided as input!!" + echo "Chart Base directory or helm chart from local repo must be provided as input!!" echo "Usage: registry-initialize.sh -d chartdirectory \ -<-n namespace override> <-r helmrelease override>" +<-n namespace override> <-r helmrelease override> <-p chart name prefix> | <-h helm charts from local repo>" exit 1 } @@ -36,8 +36,10 @@ NAMESPACE=onap RLS_NAME=onap LOGIN="" PASSWORD="" +PREF="" +HELM_REPO=local -while getopts ":d:n:r:" opt; do +while getopts ":d:n:r:p:h:c:" opt; do case $opt in d) BASEDIR="$OPTARG" ;; @@ -45,20 +47,52 @@ while getopts ":d:n:r:" opt; do ;; r) RLS_NAME="$OPTARG" ;; + p) PREF="$OPTARG" + ;; + h) HELM_CHART="$OPTARG" + ;; + c) HELM_REPO="$OPTARG" + ;; \?) echo "Invalid option -$OPTARG" >&2 usage ;; esac done -if [ -z "$BASEDIR" ]; then - exit "Chart base directory provided $BASEDIR is empty" + +if [ -z "$BASEDIR" ] && [ -z "$HELM_CHART" ] ; then + echo "Chart base directory provided $BASEDIR and helm chart from local repo is empty" + exit +fi + +if [ -n "$BASEDIR" ] && [ -n "$HELM_CHART" ] ; then + echo "Both chart base directory $BASEDIR and helm chart from local repo $HELM_CHART cannot be used at the same time " + exit +fi + +if [ -n "$BASEDIR" ]; then + if [ "$(find $BASEDIR -maxdepth 1 -name '*tgz' -print -quit)" ]; then + echo "$BASEDIR valid" + else + echo "No chart package on $BASEDIR provided" + exit + fi +fi + +if [ -n "$HELM_CHART" ]; then + tmp_location=$(mktemp -d) + helm pull $HELM_REPO/$HELM_CHART -d $tmp_location + if [ $? -eq 0 ]; then + echo "Helm chart $HELM_CHART has been pulled out from in $HELM_REPO repo" + BASEDIR=$tmp_location + else + echo "No chart package $HELM_CHART on $HELM_REPO repo" + exit + fi fi -if [ "$(find $BASEDIR -maxdepth 1 -name '*tgz' -print -quit)" ]; then - echo "$BASEDIR valid" -else - exit "No chart package on $BASEDIR provided" +if [ -z "$PREF" ] && [ -z "$HELM_CHART" ] ; then + PREF=dcae fi LOGIN=$(kubectl -n "$NAMESPACE" get secret \ @@ -77,7 +111,7 @@ fi # Expose cluster port via port-forwarding kubectl -n $NAMESPACE port-forward service/chart-museum 27017:80 & if [ $? -ne 0 ]; then - echo "Error in portforwarding; registry cannot be added!!" + echo "Error in port forwarding; registry cannot be added!!" exit 1 fi @@ -96,7 +130,7 @@ fi # Initial scope is pushing only dcae charts # can be expanded to include all onap charts if required -for file in $BASEDIR/dcae*tgz; do +for file in $BASEDIR/$PREF*tgz; do # use helm plugin to push charts helm push $file k8s-registry if [ $? -eq 0 ]; then diff --git a/kubernetes/robot/demo-k8s.sh b/kubernetes/robot/demo-k8s.sh index 439390525f..3cbfb76646 100755 --- a/kubernetes/robot/demo-k8s.sh +++ b/kubernetes/robot/demo-k8s.sh @@ -23,11 +23,32 @@ usage () echo "Usage: demo-k8s.sh [] [execscript]" echo " " echo " demo-k8s.sh init" - echo " - Execute both init_customer + distribute" + echo " - Execute both init_customer + distribute + registrySynch" echo " " echo " demo-k8s.sh init_customer" echo " - Create demo customer (Demonstration) and services, etc." echo " " + echo " demo-k8s.sh registrySynch [ repo | path [ ]" + echo " [ ] ]" + echo " - Synchronize chart museum inside of onap k8s cluster with" + echo " onap helm charts git repository (OOM)" + echo " By default following charts are synchronized:" + echo " - oom/kubernetes/dcaegen2-services/charts/," + echo " - oom/kubernetes/common/common/charts," + echo " - oom/kubernetes/common/postgres/charts/," + echo " - oom/kubernetes/common/repositoryGenerator/charts/," + echo " - oom/kubernetes/common/readinessCheck/charts/," + echo " User is able also to synchronize custom helm charts by providing" + echo " flag 'path' and path to charts into command and chart name/s prefix for example:" + echo " demo-k8s.sh onap registrySynch /home/ubuntu/oom/kubernetes/common/postgres/charts/ postgres" + echo " - Synchronize chart museum inside of onap k8s cluster with" + echo " onap installation server 'local' helm charts repository" + echo " By default following charts are synchronized:" + echo " - local/certInitializer" + echo " User is able also to synchronize custom helm charts by providing" + echo " flag 'repo' and chart name in 'local' repo into command for example:" + echo " demo-k8s.sh onap registrySynch repo certInitializer" + echo " " echo " demo-k8s.sh distribute []" echo " - Distribute demo models (demoVFW and demoVLB)" echo " " @@ -45,17 +66,17 @@ usage () echo " " echo " demo-k8s.sh instantiateVFWdirectso csar_filename" echo " - Instantiate vFW module using direct SO interface using previously distributed model " - echo " that is in /tmp/csar in robot container" + echo " that is in /tmp/csar in robot container" + echo " " + echo " demo-k8s.sh instantiateVLB_CDS" + echo " - Instantiate vLB module using CDS with a preloaded CBA " echo " " - echo " demo-k8s.sh instantiateVLB_CDS" - echo " - Instantiate vLB module using CDS with a preloaded CBA " - echo " " echo " demo-k8s.sh deleteVNF " echo " - Delete the module created by instantiateVFW" echo " " echo " demo-k8s.sh vfwclosedloop " - echo " - vFWCL: Sets the packet generator to high and low rates, and checks whether the policy " - echo " kicks in to modulate the rates back to medium" + echo " - vFWCL: Sets the packet generator to high and low rates, and checks whether the policy " + echo " kicks in to modulate the rates back to medium" echo " " echo " demo-k8s.sh [] execscript" echo " - Optional parameter to execute user custom scripts located in scripts/demoscript directory" @@ -74,7 +95,7 @@ fi echo "Number of parameters:" echo $# -if [ $# -lt 2 ];then +if [ $# -lt 2 ]; then usage exit fi @@ -112,6 +133,7 @@ do ;; init) TAG="InitDemo" + dcaeRegistrySynch=true shift ;; vescollector) @@ -209,6 +231,26 @@ do VARIABLES="$VARIABLES -v PACKET_GENERATOR_HOST:$1 -v pkg_host:$1" shift ;; + registrySynch) + dcaeRegistrySynch=true + echo $dcaeRegistrySynch + shift + echo $1 + if [ "$1" = "path" ]; then + shift + customHelmChartsPath=$1 + shift + customHelmChartsPref=$1 + shift + elif [ "$1" = "repo" ]; then + shift + customHelmChartFromLocalRepo=$1 + echo $customHelmChartFromLocalRepo + shift + else + echo "demo-k8s.sh registrySynch { repo | path [ ] [ ] }" + fi + ;; *) usage exit @@ -218,6 +260,7 @@ done set -x POD=$(kubectl --namespace $NAMESPACE get pods | sed 's/ .*//'| grep robot) +HELM_RELEASE=$(kubectl --namespace onap get pods | sed 's/ .*//' | grep robot | sed 's/-.*//') DIR=$(dirname "$0") SCRIPTDIR=scripts/demoscript @@ -234,6 +277,29 @@ export GLOBAL_BUILD_NUMBER=$(kubectl --namespace $NAMESPACE exec ${POD} -- bas OUTPUT_FOLDER=$(printf %04d $GLOBAL_BUILD_NUMBER)_demo_$key DISPLAY_NUM=$(($GLOBAL_BUILD_NUMBER + 90)) -VARIABLEFILES="-V /share/config/robot_properties.py" +if [ $dcaeRegistrySynch ]; then + CURRENT_DIR=$PWD + PARENT_PATH=${0%/*} + cd $PARENT_PATH + cd ../contrib/tools + if [ -n "$customHelmChartsPath" ]; then + ./registry-initialize.sh -d $customHelmChartsPath -n $NAMESPACE -r $HELM_RELEASE -p customHelmChartsPref + elif [ -n "$customHelmChartFromLocalRepo" ]; then + ./registry-initialize.sh -h $customHelmChartFromLocalRepo -n $NAMESPACE -r $HELM_RELEASE + else + ./registry-initialize.sh -d ../../dcaegen2-services/charts/ -n $NAMESPACE -r $HELM_RELEASE + ./registry-initialize.sh -d ../../dcaegen2-services/charts/ -n $NAMESPACE -r $HELM_RELEASE -p common + ./registry-initialize.sh -h certInitializer -n $NAMESPACE -r $HELM_RELEASE + ./registry-initialize.sh -h repositoryGenerator -n $NAMESPACE -r $HELM_RELEASE + ./registry-initialize.sh -h readinessCheck -n $NAMESPACE -r $HELM_RELEASE + ./registry-initialize.sh -h dcaegen2-services-common -n $NAMESPACE -r $HELM_RELEASE + ./registry-initialize.sh -h postgres -n $NAMESPACE -r $HELM_RELEASE + ./registry-initialize.sh -h serviceAccount -n $NAMESPACE -r $HELM_RELEASE + fi + cd $CURRENT_DIR +fi -kubectl --namespace $NAMESPACE exec ${POD} -- ${ETEHOME}/runTags.sh ${VARIABLEFILES} ${VARIABLES} -d /share/logs/${OUTPUT_FOLDER} -i ${TAG} --display $DISPLAY_NUM 2> ${TAG}.out +if [ -n "$TAG" ]; then + VARIABLEFILES="-V /share/config/robot_properties.py" + kubectl --namespace $NAMESPACE exec ${POD} -- ${ETEHOME}/runTags.sh ${VARIABLEFILES} ${VARIABLES} -d /share/logs/${OUTPUT_FOLDER} -i ${TAG} --display $DISPLAY_NUM 2> ${TAG}.out +fi \ No newline at end of file diff --git a/kubernetes/robot/resources/config/eteshare/config/robot_properties.py b/kubernetes/robot/resources/config/eteshare/config/robot_properties.py index ac663da769..824b96cdf6 100644 --- a/kubernetes/robot/resources/config/eteshare/config/robot_properties.py +++ b/kubernetes/robot/resources/config/eteshare/config/robot_properties.py @@ -230,6 +230,16 @@ GLOBAL_INVENTORY_SERVER_PORT = '{{include "robot.ingress.port" (dict "root" . "h GLOBAL_DEPLOYMENT_HANDLER_SERVER_NAME = '{{include "robot.ingress.svchost" (dict "root" . "hostname" "deployment-handler") }}' GLOBAL_DEPLOYMENT_HANDLER_SERVER_PROTOCOL = "https" GLOBAL_DEPLOYMENT_HANDLER_SERVER_PORT = '{{include "robot.ingress.port" (dict "root" . "hostname" "deployment-handler" "port" 8443) }}' +GLOBAL_K8S_CHART_REPOSTORY_SERVER_NAME = '{{include "robot.ingress.svchost" (dict "root" . "hostname" "chart-museum") }}' +GLOBAL_K8S_CHART_REPOSTORY_SERVER_PROTOCOL = "http" +GLOBAL_K8S_CHART_REPOSTORY_SERVER_PORT = '{{include "robot.ingress.port" (dict "root" . "hostname" "chart-museum" "port" 80) }}' +GLOBAL_K8S_CHART_REPOSTORY_SERVER_USERNAME = '{{ .Values.k8sChartRepoUsername }}' +GLOBAL_K8S_CHART_REPOSTORY_SERVER_PASSWORD = '{{ .Values.k8sChartRepoPassword }}' +# consul info +GLOBAL_CONSUL_SERVER_NAME = '{{include "robot.ingress.svchost" (dict "root" . "hostname" "consul-server-ui") }}' +GLOBAL_CONSUL_SERVER_PROTOCOL = "http" +GLOBAL_CONSUL_SERVER_PORT = '{{include "robot.ingress.port" (dict "root" . "hostname" "consul-server-ui" "port" 8500) }}' + # dcae mod info GLOBAL_DCAEMOD_ONBOARDING_API_SERVER_PROTOCOL = "http" GLOBAL_DCAEMOD_ONBOARDING_API_SERVER_PORT = '{{include "robot.ingress.port" (dict "root" . "hostname" "dcaemod-onboarding-api" "port" 8080) }}' diff --git a/kubernetes/robot/values.yaml b/kubernetes/robot/values.yaml index 9e5f222f48..ed4b5db106 100644 --- a/kubernetes/robot/values.yaml +++ b/kubernetes/robot/values.yaml @@ -373,6 +373,10 @@ oofOsdfPciOptPassword: "demo123456!" oofHomingUsername: "admin1" oofHomingPassword: "plan.15" +#K8S chart repository - ChartMuseum +k8sChartRepoUsername: "onapinitializer" +k8sChartRepoPassword: "demo123456!" + # default number of instances replicaCount: 1 -- 2.16.6