mirror of
https://github.com/xcat2/confluent.git
synced 2024-11-28 20:39:40 +00:00
d17b1d060c
The 'profile' variable notably induces dracut to be excruciatingly slow, mitigate chance by putting confluent before apikey, mgr, and profile. Further, it has been requested to have the scripts use same name on server for directory moving forward. Implement this request while allowing existing OS profiles to keep working.
134 lines
4.4 KiB
Plaintext
134 lines
4.4 KiB
Plaintext
function set_confluent_vars() {
|
|
if [ -z "$confluent_mgr" ]; then
|
|
confluent_mgr=$(grep ^deploy_server: /etc/confluent/confluent.deploycfg | sed -e 's/[^ ]*: //')
|
|
fi
|
|
if [ -z "$confluent_profile" ]; then
|
|
confluent_profile=$(grep ^profile: /etc/confluent/confluent.deploycfg | sed -e 's/[^ ]*: //')
|
|
fi
|
|
}
|
|
|
|
fetch_remote() {
|
|
curlargs=""
|
|
if [ -f /etc/confluent/ca.pem ]; then
|
|
curlargs=" --cacert /etc/confluent/ca.pem"
|
|
fi
|
|
set_confluent_vars
|
|
mkdir -p $(dirname $1)
|
|
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() {
|
|
confluentscripttmpdir=$(mktemp -d)
|
|
scriptlist=$(/usr/libexec/platform-python /etc/confluent/apiclient /confluent-api/self/scriptlist/$1|sed -e 's/^- //')
|
|
for script in $scriptlist; do
|
|
source_remote $1/$script
|
|
done
|
|
unset confluentscripttmpdir
|
|
}
|
|
|
|
run_remote_parts() {
|
|
confluentscripttmpdir=$(mktemp -d)
|
|
scriptlist=$(/usr/libexec/platform-python /etc/confluent/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 $curlargs https://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/$1 > $1
|
|
if [ $? != 0 ]; then echo "'$*'" failed to download; return 1; fi
|
|
if [ -x /usr/libexec/platform-python ]; then
|
|
/usr/libexec/platform-python $*
|
|
else
|
|
/usr/bin/python $*
|
|
fi
|
|
retcode=$?
|
|
echo "'$*' exited with code $retcode"
|
|
cd - > /dev/null
|
|
return $retcode
|
|
}
|
|
|
|
run_remote_config() {
|
|
echo
|
|
set_confluent_vars
|
|
apiclient=/opt/confluent/bin/apiclient
|
|
if [ -f /etc/confluent/apiclient ]; then
|
|
apiclient=/etc/confluent/apiclient
|
|
fi
|
|
echo '---------------------------------------------------------------------------'
|
|
echo Requesting to run remote configuration for "'$*'" from $confluent_mgr under profile $confluent_profile
|
|
if [ -x /usr/libexec/platform-python ]; then
|
|
/usr/libexec/platform-python $apiclient /confluent-api/self/remoteconfig/"$*" -d {}
|
|
/usr/libexec/platform-python $apiclient /confluent-api/self/remoteconfig/status -w 204
|
|
else
|
|
/usr/bin/python $apiclient /confluent-api/self/remoteconfig/"$*" -d {}
|
|
/usr/bin/python $apiclient /confluent-api/self/remoteconfig/status -w 204
|
|
fi
|
|
echo
|
|
echo 'Completed remote configuration'
|
|
echo '---------------------------------------------------------------------------'
|
|
return
|
|
}
|
|
|