Commit 9e9e4507 authored by Jérome Perrin's avatar Jérome Perrin

Merge remote-tracking branch 'upstream/master' into zope4py2

parents 6b47721a 94324cfb
Pipeline #23919 failed with stage
in 0 seconds
......@@ -16,6 +16,9 @@ parts =
#<= nodejs-X.Y.Z
# nodejs 16 needs gcc > 8.3
[gcc]
min_version = 8.3
[nodejs-16.13.2]
<= nodejs-base
openssl_location = ${openssl:location}
......
......@@ -14,8 +14,8 @@
# not need these here).
[deploy-script-controller-script]
filename = deploy-script-controller
md5sum = 8357771b70efd0740561b1cb46f6955e
md5sum = ca83be8dd6ebebe0fa37ec1266330b0d
[template-deploy-test]
filename = instance.cfg.in
md5sum = 1faa52013b12b1753bcaff0b1309ad90
md5sum = ba11521137356f4361b7d3d304f8fc0c
......@@ -13,10 +13,13 @@
# Format of data-to-vm is shell script:
# URL=<url>\nWAITTIME=<seconds>\nTRIES=<amount>
#
# Expected values in configuration:
# MANDATORY values in configuration:
# * URL - the url of the script to download and test
# OPTIONAL values in configuration:
# * WAITTIME - waiting time, before next try
# * TRIES - amount of tries
# * any other exported variables can be used by the deployment script
# note: you need to export the variables for them to be used in the deployment script
# Possible TODOs:
# * post results on each try
......@@ -24,9 +27,9 @@
LOG_FILE=/var/log/test-script-deployment.log
wget -O /tmp/test-script.cfg.$$ -q http://10.0.2.100/data
wget -O /tmp/test-script.cfg."$$" -q http://10.0.2.100/data
source /tmp/test-script.cfg.$$
source /tmp/test-script.cfg."$$"
if [ -z "$LOG_FILE" ] ; then
echo "Output log file is missing"
......@@ -34,79 +37,73 @@ if [ -z "$LOG_FILE" ] ; then
fi
if [ -z "$URL" ] ; then
echo "URL is missing" >> $LOG_FILE 2>&1
echo "URL is missing." >> "$LOG_FILE" 2>&1
exit 1
fi
if [ -z "$WAITTIME" ] ; then
echo "WAITTIME missing" >> $LOG_FILE 2>&1
exit 1
fi
if [ -z "$TRIES" ] ; then
echo "TRIES missing" >> $LOG_FILE 2>&1
exit 1
fi
export WAITTIME=${WAITTIME:-360}
echo "INFO: WAITTIME is $WAITTIME" >> "$LOG_FILE" 2>&1
export TRIES=${TRIES:-80}
echo "INFO: TRIES is $TRIES" >> "$LOG_FILE" 2>&1
DEPLOYMENT_SCRIPT=/tmp/test-script-deployment.bash.$$
wget -O $DEPLOYMENT_SCRIPT -q $URL
DEPLOYMENT_SCRIPT=/tmp/test-script-deployment.bash."$$"
wget -O "$DEPLOYMENT_SCRIPT" -q "$URL"
if [[ ! -s "$DEPLOYMENT_SCRIPT" ]] ; then
echo "exit 1" > $DEPLOYMENT_SCRIPT
echo "exit 1" > "$DEPLOYMENT_SCRIPT"
fi
function add_log ()
{
LOG_FILE=$1
LOG_FILE="$1"
for f in /opt/slapos/log/slapos-node-{software,instance}.log ; do
echo "Tail of '$f':" >> $LOG_FILE
tail -n 500 $f >> $LOG_FILE
echo "Tail of '$f':" >> "$LOG_FILE"
tail -n 500 "$f" >> "$LOG_FILE"
done
}
function add_checks ()
{
LOG_FILE=$1
echo 'lsof -Pni' >> $LOG_FILE 2>&1
lsof -Pni >> $LOG_FILE 2>&1
echo 'iptables-save' >> $LOG_FILE 2>&1
iptables-save >> $LOG_FILE 2>&1
for f in /tmp/playbook-* ; do echo $f ; cat $f; echo; done >> $LOG_FILE 2>&1
echo 'slapos node status' >> $LOG_FILE 2>&1
slapos node status >> $LOG_FILE 2>&1
LOG_FILE="$1"
echo 'lsof -Pni' >> "$LOG_FILE" 2>&1
lsof -Pni >> "$LOG_FILE" 2>&1
echo 'iptables-save' >> "$LOG_FILE" 2>&1
iptables-save >> "$LOG_FILE" 2>&1
for f in /tmp/playbook-* ; do echo "$f" ; cat "$f"; echo; done >> "$LOG_FILE" 2>&1
echo 'slapos node status' >> "$LOG_FILE" 2>&1
slapos node status >> "$LOG_FILE" 2>&1
}
function upload ()
{
try=$1
LOG_FILE=$2
add_log $LOG_FILE
add_checks $LOG_FILE
try="$1"
LOG_FILE="$2"
add_log "$LOG_FILE"
add_checks "$LOG_FILE"
t=`date '+%Y%m%d%H%S'`
mv $LOG_FILE ${LOG_FILE}.$t
mv "$LOG_FILE" ${LOG_FILE}."$t"
curl -q -X POST --data-urlencode "path=test-script-result/log-file.log.$t" --data-urlencode "content@${LOG_FILE}.$t" http://10.0.2.100/
}
try=1
while true; do
echo "$0: Try $try. Running '/bin/bash $DEPLOYMENT_SCRIPT'" >> $LOG_FILE 2>&1
export TEST_YML_PATH
/bin/bash $DEPLOYMENT_SCRIPT >> $LOG_FILE 2>&1
result=$?
if [ $result == 0 ] ; then
echo "$0: Try $try. Script executed successfully." >> $LOG_FILE 2>&1
upload $try $LOG_FILE
echo "$0: Try $try. Running '/bin/bash $DEPLOYMENT_SCRIPT'" >> "$LOG_FILE" 2>&1
/bin/bash "$DEPLOYMENT_SCRIPT" >> "$LOG_FILE" 2>&1
result="$?"
if [ "$result" == 0 ] ; then
echo "$0: Try $try. Script executed successfully." >> "$LOG_FILE" 2>&1
upload "$try" "$LOG_FILE"
break
fi
if (( try > TRIES )) ; then
echo "$0: Try $try. Amount of tries $TRIES exceeded, giving up." >> $LOG_FILE 2>&1
upload $try $LOG_FILE
upload "$try" "$LOG_FILE"
break
fi
# wait WAITTIME before checking the state
echo "$0: Try $try. Sleeping $WAITTIME before retry." >> $LOG_FILE 2>&1
upload $try $LOG_FILE
sleep $WAITTIME
upload "$try" "$LOG_FILE"
sleep "$WAITTIME"
((try++))
done
exit $result
exit "$result"
......@@ -2,8 +2,7 @@
{% set test_type = slapparameter_dict.get('test-type', 'script-from-url') -%}
{# Choose parameters according to test type -#}
{% if test_type == 'script-from-url' -%}
{% set script_url = slapparameter_dict.get('script-to-test-url') -%}
{% set test_yml_path = '/not/required' -%}
{% set data_to_vm = slapparameter_dict.get('data-to-vm') -%}
{% elif test_type == 'cloned-playbook' -%}
{% set script_url = 'http://10.0.2.100/standalone-local-playbook' -%}
{% set test_yml_path = slapparameter_dict.get('yml-path-to-test') -%}
......@@ -38,10 +37,7 @@ config-bootstrap-script-url = {{ in_vm_test_script }}#{{ in_vm_test_script_md5 }
# Script configuration
config-data-to-vm =
URL={{ script_url }}
WAITTIME={{ waittime }}
TRIES={{ tries }}
TEST_YML_PATH={{ test_yml_path }}
{{ data_to_vm }}
# require HTTP server
config-enable-http-server = true
......
......@@ -48,8 +48,6 @@ context =
raw bin_directory ${buildout:bin-directory}
raw in_vm_test_script ${deploy-script-controller-script:location}
raw in_vm_test_script_md5 ${deploy-script-controller-script:md5sum}
raw waittime ${deploy-script-controller-script:waittime}
raw tries ${deploy-script-controller-script:tries}
section test_image_repository test-image-repository
[test-image-repository]
......
......@@ -43,9 +43,6 @@ output = ${buildout:directory}/template-original.kvm.cfg
[deploy-script-controller-script]
location = ${:_profile_base_location_}/${:filename}
# configuration
waittime = 360
tries = 80
[standalone-local-playbook]
filename = standalone-local-playbook
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment