From 538d47cb81317976a7ed31024a05d2fc6bf373bb Mon Sep 17 00:00:00 2001 From: Jim Gauld Date: Fri, 15 Jan 2021 16:06:16 -0500 Subject: [PATCH] collect is missing helmv2 output This adds helm v2 outputs that we used to have before helm v3 upversion. This gives 'helm status' and 'helm get values' per application using helmv2-cli. This changes helm v3 commands to run as user sysadmin since helm is configured for sysadmin and not root. Otherwise there is missing environment and helm files when run via collect sudo. This corrects one complex expression that does not properly evaluate since it requires being run through command line first. Expressions like CMD="command1 | command2" needs to be run as: eval ${CMD} instead of just: ${CMD} e.g., eval "cat filename | python -m json.tool" Closes-Bug: 1911933 Signed-off-by: Jim Gauld Change-Id: Ie13c78ae325ce0c2f506b320db3e9b51df3f74f2 --- .../scripts/collect_containerization.sh | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/tools/collector/scripts/collect_containerization.sh b/tools/collector/scripts/collect_containerization.sh index a62833ba..bed99973 100755 --- a/tools/collector/scripts/collect_containerization.sh +++ b/tools/collector/scripts/collect_containerization.sh @@ -49,9 +49,9 @@ CMD="crictl ps -a" delimiter ${LOGFILE_IMG} "${CMD}" ${CMD} 2>>${COLLECT_ERROR_LOG} >>${LOGFILE_IMG} -CMD="cat /var/lib/kubelet/cpu_manager_state | python -mjson.tool" +CMD="cat /var/lib/kubelet/cpu_manager_state | python -m json.tool" delimiter ${LOGFILE_HOST} "${CMD}" -${CMD} 2>>${COLLECT_ERROR_LOG} >>${LOGFILE_HOST} +eval ${CMD} 2>>${COLLECT_ERROR_LOG} >>${LOGFILE_HOST} ############################################################################### # Active Controller @@ -136,21 +136,39 @@ if [ "$nodetype" = "controller" -a "${ACTIVE}" = true ] ; then > ${HELM_DIR}/${APPNAME}.v${APPREVISION} done <<< "${APPLIST}" elif [[ $HELM_VERSION =~ v3 ]]; then - CMD="helm list --all --all-namespaces" + # NOTE: helm environment not configured for root user + CMD="sudo -u sysadmin KUBECONFIG=${KUBECONFIG} helm list --all --all-namespaces" delimiter ${LOGFILE_HELM} "${CMD}" ${CMD} 2>>${COLLECT_ERROR_LOG} >>${LOGFILE_HELM} - CMD="helm repo list" + CMD="sudo -u sysadmin KUBECONFIG=${KUBECONFIG} helm search repo" + delimiter ${LOGFILE_HELM} "${CMD}" + ${CMD} 2>>${COLLECT_ERROR_LOG} >>${LOGFILE_HELM} + + CMD="sudo -u sysadmin KUBECONFIG=${KUBECONFIG} helm repo list" delimiter ${LOGFILE_HELM} "${CMD}" ${CMD} 2>>${COLLECT_ERROR_LOG} >>${LOGFILE_HELM} fi HELM2CLI=$(which helmv2-cli) if [ $? -eq 0 ]; then - CMD="helmv2-cli -- helm list" + CMD="helmv2-cli -- helm version --short" delimiter ${LOGFILE_HELM} "${CMD}" ${CMD} 2>>${COLLECT_ERROR_LOG} >>${LOGFILE_HELM} + CMD="helmv2-cli -- helm list -a" + delimiter ${LOGFILE_HELM} "${CMD}" + mapfile -t ARR < <( ${CMD} 2>>${COLLECT_ERROR_LOG} ) + printf "%s\n" "${ARR[@]}" >> ${LOGFILE_HELM} + for((i=1; i < ${#ARR[@]}; i++)) + do + APPNAME=$(echo ${ARR[$i]} | awk '{print $1}') + APPREVISION=$(echo ${ARR[$i]} | awk '{print $2}') + ${HELM2CLI} -- helm status ${APPNAME} > ${HELM_DIR}/${APPNAME}.status + ${HELM2CLI} -- helm get values ${APPNAME} --revision ${APPREVISION} \ + > ${HELM_DIR}/${APPNAME}.v${APPREVISION} + done <<< "${APPLIST}" + CMD="helmv2-cli -- helm search" delimiter ${LOGFILE_HELM} "${CMD}" ${CMD} 2>>${COLLECT_ERROR_LOG} >>${LOGFILE_HELM} @@ -164,6 +182,7 @@ if [ "$nodetype" = "controller" -a "${ACTIVE}" = true ] ; then delimiter ${LOGFILE} "${CMD}" ${CMD} 2>>${COLLECT_ERROR_LOG} + # NOTE(LP1911935): The following etcdctl command is not producing output. export ETCDCTL_API=3 CMD="etcdctl --endpoints=localhost:2379 get / --prefix" delimiter ${LOGFILE} "${CMD}"