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 <james.gauld@windriver.com>
Change-Id: Ie13c78ae325ce0c2f506b320db3e9b51df3f74f2
This commit is contained in:
Jim Gauld 2021-01-15 16:06:16 -05:00
parent a0736f3dc3
commit 538d47cb81
1 changed files with 24 additions and 5 deletions

View File

@ -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}"