diff --git a/confluent_osdeploy/suse15/profiles/hpc/scripts/functions b/confluent_osdeploy/suse15/profiles/hpc/scripts/functions index 30e4a7b2..b1364bd0 100644 --- a/confluent_osdeploy/suse15/profiles/hpc/scripts/functions +++ b/confluent_osdeploy/suse15/profiles/hpc/scripts/functions @@ -6,6 +6,18 @@ function test_mgr() { return 1 } +function confluentpython() { + if [ -x /usr/libexec/platform-python ]; then + /usr/libexec/platform-python $* + elif [ -x /usr/bin/python3 ]; then + /usr/bin/python3 $* + elif [ -x /usr/bin/python ]; then + /usr/bin/python $* + elif [ -x /usr/bin/python2 ]; then + /usr/bin/python2 $* + fi +} + function set_confluent_vars() { if [ -z "$nodename" ]; then nodename=$(grep ^NODENAME: /etc/confluent/confluent.info | awk '{print $2}') @@ -39,26 +51,15 @@ function set_confluent_vars() { fi } -run_remote() { +fetch_remote() { + curlargs="" + if [ -f /etc/confluent/ca.pem ]; then + curlargs=" --cacert /etc/confluent/ca.pem" + fi set_confluent_vars - requestedcmd="'$*'" - echo - echo '---------------------------------------------------------------------------' - echo Running $requestedcmd from https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/ - tmpdir=$(mktemp -d) - echo Executing in $tmpdir - cd $tmpdir mkdir -p $(dirname $1) - curl -f -sS https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/$1 > $1 - if [ $? != 0 ]; then echo $requestedcmd failed to download; return 1; fi - chmod +x $1 - cmd=$1 - shift - ./$cmd $* - retcode=$? - echo "$requestedcmd exited with code $retcode" - cd - > /dev/null - return $retcode + curl -f -sS $curlargs https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/$1 > $1 + if [ $? != 0 ]; then echo $1 failed to download; return 1; fi } source_remote_parts() { @@ -67,7 +68,7 @@ source_remote_parts() { if [ -f /etc/confluent/apiclient ]; then apiclient=/etc/confluent/apiclient fi - scriptlist=$(/usr/bin/python3 $apiclient /confluent-api/self/scriptlist/$1|sed -e 's/^- //') + scriptlist=$(confluentpython $apiclient /confluent-api/self/scriptlist/$1|sed -e 's/^- //') for script in $scriptlist; do source_remote $1/$script done @@ -80,24 +81,76 @@ run_remote_parts() { if [ -f /etc/confluent/apiclient ]; then apiclient=/etc/confluent/apiclient fi - scriptlist=$(/usr/bin/python3 $apiclient /confluent-api/self/scriptlist/$1|sed -e 's/^- //') + scriptlist=$(confluentpython $apiclient /confluent-api/self/scriptlist/$1|sed -e 's/^- //') for script in $scriptlist; do run_remote $1/$script done unset confluentscripttmpdir } +source_remote() { + set_confluent_vars + echo + echo '---------------------------------------------------------------------------' + echo Sourcing $1 from https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/ + if [ -z "$confluentscripttmpdir" ]; then + confluentscripttmpdir=$(mktemp -d) + fi + echo Sourcing from $confluentscripttmpdir + cd $confluentscripttmpdir + fetch_remote $1 + if [ $? != 0 ]; then echo $1 failed to download; return 1; fi + chmod +x $1 + cmd=$1 + shift + source ./$cmd + cd - > /dev/null + return $retcode +} + +run_remote() { + requestedcmd="'$*'" + set_confluent_vars + echo + echo '---------------------------------------------------------------------------' + echo Running $requestedcmd from https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/ + if [ -z "$confluentscripttmpdir" ]; then + confluentscripttmpdir=$(mktemp -d) + fi + echo Executing in $confluentscripttmpdir + cd $confluentscripttmpdir + fetch_remote $1 + if [ $? != 0 ]; then echo $requestedcmd failed to download; return 1; fi + chmod +x $1 + cmd=$1 + if [ -x /usr/bin/chcon ]; then + chcon system_u:object_r:bin_t:s0 $cmd + fi + shift + ./$cmd $* + retcode=$? + if [ $retcode -ne 0 ]; then + echo "$requestedcmd exited with code $retcode" + fi + cd - > /dev/null + return $retcode +} + run_remote_python() { echo + set_confluent_vars + if [ -f /etc/confluent/ca.pem ]; then + curlargs=" --cacert /etc/confluent/ca.pem" + fi echo '---------------------------------------------------------------------------' echo Running python script "'$*'" from https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/ tmpdir=$(mktemp -d) echo Executing in $tmpdir cd $tmpdir mkdir -p $(dirname $1) - curl -f -sS https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/$1 > $1 + curl -f -sS $curlargs https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/$1 > $1 if [ $? != 0 ]; then echo "'$*'" failed to download; return 1; fi - python3 $* + confluentpython $* retcode=$? echo "'$*' exited with code $retcode" cd - > /dev/null @@ -113,8 +166,8 @@ run_remote_config() { fi echo '---------------------------------------------------------------------------' echo Requesting to run remote configuration for "'$*'" from $confluent_mgr under profile $confluent_profile - python3 $apiclient /confluent-api/self/remoteconfig/"$*" -d {} - python3 $apiclient /confluent-api/self/remoteconfig/status -w 204 + confluentpython $apiclient /confluent-api/self/remoteconfig/"$*" -d {} + confluentpython $apiclient /confluent-api/self/remoteconfig/status -w 204 echo echo 'Completed remote configuration' echo '---------------------------------------------------------------------------'