From 41e60486af83c76f5ac58c5c0bf30ee1835b9d7d Mon Sep 17 00:00:00 2001 From: Eric MacDonald Date: Mon, 22 Jul 2019 15:15:23 -0400 Subject: [PATCH] Fix sourcing openrc in collect The openrc file is being sourced in a short lived shell rather than in the shell of the sourcing code. As a result the environment created by the 'source' does not persist and the inventory request fails which prevents collect from learning/validating remote host names. This update corrects that and makes the code block involved in learning openrc variables a function call rather than inline whenever collect_utils is sourced. Test Plan: PASS: Verify collect all with no openrc already sourced PASS: Verify collect select hosts (same no pre-openrc) PASS: Verify collect self controller (same no pre-openrc) PASS: Verify collect of self on compute Change-Id: I41a097d9d751351f178a1366eb76dfb526c57b19 Closes-Bug: 1837412 Signed-off-by: Eric MacDonald --- tools/collector/centos/build_srpm.data | 2 +- tools/collector/scripts/collect | 1 + tools/collector/scripts/collect_host | 1 + tools/collector/scripts/collect_utils | 49 ++++++++++++++------------ 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/tools/collector/centos/build_srpm.data b/tools/collector/centos/build_srpm.data index 162774048..9add1c8b9 100644 --- a/tools/collector/centos/build_srpm.data +++ b/tools/collector/centos/build_srpm.data @@ -1,2 +1,2 @@ SRC_DIR="scripts" -TIS_PATCH_VER=27 +TIS_PATCH_VER=28 diff --git a/tools/collector/scripts/collect b/tools/collector/scripts/collect index 5d50dbc96..88e373ea6 100755 --- a/tools/collector/scripts/collect +++ b/tools/collector/scripts/collect @@ -84,6 +84,7 @@ fi # pull in common utils and environment source /usr/local/sbin/collect_utils +source_openrc_if_needed function clean_up() { diff --git a/tools/collector/scripts/collect_host b/tools/collector/scripts/collect_host index 3faf250e6..da927d16a 100755 --- a/tools/collector/scripts/collect_host +++ b/tools/collector/scripts/collect_host @@ -12,6 +12,7 @@ # all collectors ; common and user defined. # source /usr/local/sbin/collect_utils +source_openrc_if_needed # # parse input parameters diff --git a/tools/collector/scripts/collect_utils b/tools/collector/scripts/collect_utils index 66c9a3acb..b211fcefc 100755 --- a/tools/collector/scripts/collect_utils +++ b/tools/collector/scripts/collect_utils @@ -55,34 +55,37 @@ MIN_PERCENT_SPACE_REQUIRED=75 COLLECT_LOG=/var/log/collect.log COLLECT_ERROR_LOG=/tmp/collect_error.log +function source_openrc_if_needed +{ + # get the node and subfunction types + nodetype="" + subfunction="" + PLATFORM_CONF=/etc/platform/platform.conf + if [ -e ${PLATFORM_CONF} ] ; then + source ${PLATFORM_CONF} + fi -# get the node and subfunction types -nodetype="" -subfunction="" -PLATFORM_CONF=/etc/platform/platform.conf -if [ -e ${PLATFORM_CONF} ] ; then - source ${PLATFORM_CONF} -fi + if [ "${nodetype}" != "controller" -a "${nodetype}" != "worker" -a "${nodetype}" != "storage" ] ; then + logger -t ${COLLECT_TAG} "could not identify nodetype ($nodetype)" + exit $FAIL_NODETYPE + fi -if [ "${nodetype}" != "controller" -a "${nodetype}" != "worker" -a "${nodetype}" != "storage" ] ; then - logger -t ${COLLECT_TAG} "could not identify nodetype ($nodetype)" - exit $FAIL_NODETYPE -fi + NODETYPE=$nodetype + SUBFUNCTION=$subfunction -NODETYPE=$nodetype -SUBFUNCTION=$subfunction - -ACTIVE=false -if [ "$NODETYPE" == "controller" ] ; then - # get local host activity state - OPENRC="/etc/platform/openrc" - if [ -e "${OPENRC}" ] ; then - rc=`source ${OPENRC}` - if [ "$rc" == "" ] ; then - ACTIVE=true + ACTIVE=false + if [ "$NODETYPE" == "controller" ] ; then + # get local host activity state + OPENRC="/etc/platform/openrc" + if [ -e "${OPENRC}" ] ; then + OS_USERNAME="" + source ${OPENRC} + if [ "${OS_USERNAME}" != "" ] ; then + ACTIVE=true + fi fi fi -fi +} # Setup an expect command completion file.