Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Nicolas Wavrant
slapos
Commits
9d56815d
Commit
9d56815d
authored
Nov 08, 2016
by
Nicolas Wavrant
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slaprunner: runner-importer now writes an exit message when it fails.
This message is also available via a promise
parent
33da48d5
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
11 deletions
+28
-11
software/slaprunner/common.cfg
software/slaprunner/common.cfg
+2
-2
software/slaprunner/instance-runner-import.cfg.in
software/slaprunner/instance-runner-import.cfg.in
+5
-1
software/slaprunner/template/runner-import.sh.jinja2
software/slaprunner/template/runner-import.sh.jinja2
+21
-8
No files found.
software/slaprunner/common.cfg
View file @
9d56815d
...
@@ -68,7 +68,7 @@ recipe = hexagonit.recipe.download
...
@@ -68,7 +68,7 @@ recipe = hexagonit.recipe.download
ignore-existing = true
ignore-existing = true
url = ${:_profile_base_location_}/template/runner-import.sh.jinja2
url = ${:_profile_base_location_}/template/runner-import.sh.jinja2
download-only = true
download-only = true
md5sum =
52ae874aad06acd2a9cc0eb2b2bd29b1
md5sum =
111e03674234f061f27a635fab35d4b2
filename = runner-import.sh.jinja2
filename = runner-import.sh.jinja2
mode = 0644
mode = 0644
...
@@ -76,7 +76,7 @@ mode = 0644
...
@@ -76,7 +76,7 @@ mode = 0644
recipe = slapos.recipe.template
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-runner-import.cfg.in
url = ${:_profile_base_location_}/instance-runner-import.cfg.in
output = ${buildout:directory}/instance-runner-import.cfg
output = ${buildout:directory}/instance-runner-import.cfg
md5sum =
e75257bb7590ae1f0c518d2c05ee634c
md5sum =
aecce333fa1df40dc4cefdf5a30ab214
mode = 0644
mode = 0644
[template-runner-export-script]
[template-runner-export-script]
...
...
software/slaprunner/instance-runner-import.cfg.in
View file @
9d56815d
...
@@ -81,6 +81,8 @@ wrapper = $${:rendered}
...
@@ -81,6 +81,8 @@ wrapper = $${:rendered}
mode = 700
mode = 700
restore-exit-code-file = $${directory:srv}/$${:restore-exit-code-file-basename}
restore-exit-code-file = $${directory:srv}/$${:restore-exit-code-file-basename}
restore-exit-code-file-basename = importer-exit-code-file
restore-exit-code-file-basename = importer-exit-code-file
restore-error-message-file = $${directory:srv}/$${:restore-error-message-file-basename}
restore-error-message-file-basename = importer-error-message-file
resilient-log-basename = resilient.log
resilient-log-basename = resilient.log
context =
context =
key backend_url slaprunner:access-url
key backend_url slaprunner:access-url
...
@@ -93,6 +95,7 @@ context =
...
@@ -93,6 +95,7 @@ context =
raw shell_binary ${bash:location}/bin/bash
raw shell_binary ${bash:location}/bin/bash
raw rsync_binary ${rsync:location}/bin/rsync
raw rsync_binary ${rsync:location}/bin/rsync
raw restore_exit_code_file $${:restore-exit-code-file}
raw restore_exit_code_file $${:restore-exit-code-file}
raw restore_error_message_file $${:restore-error-message-file}
[importer-consistency-promise]
[importer-consistency-promise]
# Test that the importer script and "after-import" subscripts
# Test that the importer script and "after-import" subscripts
...
@@ -109,7 +112,8 @@ input = inline: #!/bin/sh
...
@@ -109,7 +112,8 @@ input = inline: #!/bin/sh
echo "Consistency check is too old.";
echo "Consistency check is too old.";
exit 1;
exit 1;
else
else
echo "Error during import. Please check here : $RESILIENT_LOG_URL";
cat $${importer:restore-error-message-file}
echo "More information can be found here : $RESILIENT_LOG_URL";
exit $(cat $EXIT_CODE_FILE);
exit $(cat $EXIT_CODE_FILE);
fi
fi
fi
fi
...
...
software/slaprunner/template/runner-import.sh.jinja2
View file @
9d56815d
...
@@ -9,13 +9,23 @@ exec > >(tee -ai {{ output_log_file }})
...
@@ -9,13 +9,23 @@ exec > >(tee -ai {{ output_log_file }})
exec 2>&1
exec 2>&1
RESTORE_EXIT_CODE_FILE="{{ restore_exit_code_file }}"
RESTORE_EXIT_CODE_FILE="{{ restore_exit_code_file }}"
RESTORE_ERROR_MESSAGE_FILE="{{ restore_error_message_file }}"
ERROR_MESSAGE=""
fail_with_exit_code () {
fail_with_exit_code () {
echo 1 > $RESTORE_EXIT_CODE_FILE
echo 1 > $RESTORE_EXIT_CODE_FILE
echo -e "Failure during step : $ERROR_MESSAGE" > $RESTORE_ERROR_MESSAGE_FILE
}
}
trap fail_with_exit_code ERR
trap fail_with_exit_code ERR
log_message () {
ERROR_MESSAGE=$1
echo -e $1
}
# Delete the error message file, to not keep it even after a successful build
rm $RESTORE_ERROR_MESSAGE_FILE || true
srv_directory={{ directory['srv'] }}
srv_directory={{ directory['srv'] }}
restore_element () {
restore_element () {
backup_path=$1
backup_path=$1
...
@@ -35,7 +45,10 @@ restore_element () {
...
@@ -35,7 +45,10 @@ restore_element () {
echo -e "\n\nrunner-import run at : $(date)"
echo -e "\n\nrunner-import run at : $(date)"
log_message "Restoring WebRunner content..."
restore_element {{ directory['backup'] }}/runner/ $srv_directory/runner instance project proxy.db
restore_element {{ directory['backup'] }}/runner/ $srv_directory/runner instance project proxy.db
log_message "Restoring WebRunner config (etc directory)..."
restore_element {{ directory['backup'] }}/etc/ {{ directory['etc'] }} config.json
restore_element {{ directory['backup'] }}/etc/ {{ directory['etc'] }} config.json
cp -r {{ directory['backup'] }}/etc/.??* {{ directory['etc'] }};
cp -r {{ directory['backup'] }}/etc/.??* {{ directory['etc'] }};
...
@@ -48,10 +61,10 @@ if [ ! -e "$runner_import_restore" ]; then
...
@@ -48,10 +61,10 @@ if [ ! -e "$runner_import_restore" ]; then
touch $runner_import_restore
touch $runner_import_restore
chmod +x $runner_import_restore
chmod +x $runner_import_restore
fi
fi
echo "Running $runner_import_restore scrip
t..."
log_message "Running $runner_impor
t..."
$srv_directory/runner-import-restore || RESTORE_EXIT_CODE=$?
$srv_directory/runner-import-restore || RESTORE_EXIT_CODE=$?
echo "Updating slapproxy database, software release and instances
..."
log_message "Updating slapproxy database
..."
HOME="{{ directory['home'] }}"
HOME="{{ directory['home'] }}"
# XXX Hardcoded
# XXX Hardcoded
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
...
@@ -77,14 +90,14 @@ $SQLITE3 $DATABASE "update partition_network11 set address='$IPV6' where netmask
...
@@ -77,14 +90,14 @@ $SQLITE3 $DATABASE "update partition_network11 set address='$IPV6' where netmask
MASTERURL="http://{{ ipv4 }}:{{ proxy_port }}"
MASTERURL="http://{{ ipv4 }}:{{ proxy_port }}"
echo "Building newest softwar
e..."
log_message "Building newest Software Releas
e..."
$SLAPOS node software --cfg {{ supervisord['slapos-cfg'] }} --all --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-sr-log'] }} --pidfile {{ supervisord['slapgrid-sr-pid'] }} >/dev/null 2>&1 ||
$SLAPOS node software --cfg {{ supervisord['slapos-cfg'] }} --all --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-sr-log'] }} --pidfile {{ supervisord['slapgrid-sr-pid'] }} >/dev/null 2>&1 ||
$SLAPOS node software --cfg {{ supervisord['slapos-cfg'] }} --all --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-sr-log'] }} --pidfile {{ supervisord['slapgrid-sr-pid'] }} >/dev/null 2>&1 ||
$SLAPOS node software --cfg {{ supervisord['slapos-cfg'] }} --all --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-sr-log'] }} --pidfile {{ supervisord['slapgrid-sr-pid'] }} >/dev/null 2>&1 ||
$SLAPOS node software --cfg {{ supervisord['slapos-cfg'] }} --all --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-sr-log'] }} --pidfile {{ supervisord['slapgrid-sr-pid'] }} >/dev/null 2>&1 ||
$SLAPOS node software --cfg {{ supervisord['slapos-cfg'] }} --all --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-sr-log'] }} --pidfile {{ supervisord['slapgrid-sr-pid'] }} >/dev/null 2>&1 ||
(tail -n 200 {{ supervisord['slapgrid-sr-log'] }} && false)
(tail -n 200 {{ supervisord['slapgrid-sr-log'] }} && false)
# Remove defined scripts to force buildout to recreate them to have updated paths
# Remove defined scripts to force buildout to recreate them to have updated paths
rm $srv_directory/runner/instance/slappart*/srv/runner-import-restore || true
rm $srv_directory/runner/instance/slappart*/srv/runner-import-restore || true
echo "Running slapos node instance
..."
log_message "Fixing Instances as needed after import
..."
# XXX hardcoded
# XXX hardcoded
$SLAPOS node instance --cfg {{ supervisord['slapos-cfg'] }} --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-cp-log'] }} --pidfile {{ supervisord['slapgrid-cp-pid'] }} >/dev/null 2>&1 ||
$SLAPOS node instance --cfg {{ supervisord['slapos-cfg'] }} --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-cp-log'] }} --pidfile {{ supervisord['slapgrid-cp-pid'] }} >/dev/null 2>&1 ||
$SLAPOS node instance --cfg {{ supervisord['slapos-cfg'] }} --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-cp-log'] }} --pidfile {{ supervisord['slapgrid-cp-pid'] }} >/dev/null 2>&1 ||
$SLAPOS node instance --cfg {{ supervisord['slapos-cfg'] }} --master-url=$MASTERURL --logfile {{ supervisord['slapgrid-cp-log'] }} --pidfile {{ supervisord['slapgrid-cp-pid'] }} >/dev/null 2>&1 ||
...
@@ -92,21 +105,21 @@ $SLAPOS node instance --cfg {{ supervisord['slapos-cfg'] }} --master-url=$MASTER
...
@@ -92,21 +105,21 @@ $SLAPOS node instance --cfg {{ supervisord['slapos-cfg'] }} --master-url=$MASTER
(tail -n 200 {{ supervisord['slapgrid-cp-log'] }} && false)
(tail -n 200 {{ supervisord['slapgrid-cp-log'] }} && false)
# Invoke defined scripts for each partition inside of slaprunner
# Invoke defined scripts for each partition inside of slaprunner
echo
"Invoke custom import scripts defined by each instances..."
log_message
"Invoke custom import scripts defined by each instances..."
for partition in $srv_directory/runner/instance/slappart*/
for partition in $srv_directory/runner/instance/slappart*/
do
do
script=$partition/srv/runner-import-restore
script=$partition/srv/runner-import-restore
if [ -e "$script" ]; then
if [ -e "$script" ]; then
echo "Running $script
script..."
log_message "Running $
script..."
$script || RESTORE_EXIT_CODE=$?
$script || RESTORE_EXIT_CODE=$?
fi
fi
done
done
# Change back slapproxy database to have all instances started
# Change back slapproxy database to have all instances started
echo "Start instances
..."
log_message "Set instances as to start after takeover
..."
$SQLITE3 $DATABASE "update partition11 set requested_state='started';"
$SQLITE3 $DATABASE "update partition11 set requested_state='started';"
# Write exit code to an arbitrary file that will be checked by promise/monitor
# Write exit code to an arbitrary file that will be checked by promise/monitor
echo "Write
status file... End"
log_message "Writing
status file... End"
echo $RESTORE_EXIT_CODE > $RESTORE_EXIT_CODE_FILE
echo $RESTORE_EXIT_CODE > $RESTORE_EXIT_CODE_FILE
exit $RESTORE_EXIT_CODE
exit $RESTORE_EXIT_CODE
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment