From e530847e3952f934a22bb3be684e1c30cfe911e7 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Wed, 8 Jun 2016 18:29:01 +0200 Subject: [PATCH] gh-39: execute reconf when context changes --- base/usr/sbin/one-contextd | 47 +++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/base/usr/sbin/one-contextd b/base/usr/sbin/one-contextd index 3b7b104..0a71cdd 100755 --- a/base/usr/sbin/one-contextd +++ b/base/usr/sbin/one-contextd @@ -36,29 +36,50 @@ function execute_scripts { done } -function start { +function get_new_context { CONTEXT_DEV=`blkid -l -t LABEL="CONTEXT" -o device` if [ -e "$CONTEXT_DEV" ]; then mount -t iso9660 -L CONTEXT -o ro /mnt if [ -f /mnt/context.sh ]; then - export_rc_vars /mnt/context.sh - cp /mnt/context.sh /tmp/context.sh + cp /mnt/context.sh /tmp/context.sh.new fi - execute_scripts "$1" - - umount /mnt - elif curl -o /tmp/context.sh http://169.254.169.254/latest/user-data ; then - export_rc_vars /tmp/context.sh - execute_scripts "$1" + echo "umount /mnt" > /tmp/end_context + elif curl -o /tmp/context.sh.new http://169.254.169.254/latest/user-data ; then + echo -n "" elif type vmtoolsd ; then vmtoolsd --cmd 'info-get guestinfo.opennebula.context' | \ - openssl base64 -d > /tmp/context.sh - export_rc_vars /tmp/context.sh - execute_scripts "$1" + openssl base64 -d > /tmp/context.sh.new + fi +} + +function check_context { + if [ -s "/tmp/context.sh.new" ]; then + diff /tmp/context.sh /tmp/context.sh.new && return 1 + return 0 + else + return 1 fi } +function run_context { + cp /tmp/context.sh.new /tmp/context.sh + + export_rc_vars /tmp/context.sh + execute_scripts "$1" +} + +function end_context { + if [ -e "/tmp/end_context" ]; then + sh "/tmp/end_context" + rm "/tmp/end_context" + fi + [ -e "/tmp/context.sh.new" ] && rm "/tmp/context.sh.new" +} + COMMAND="$1" -start "$COMMAND" +get_new_context +check_context && run_context "$COMMAND" +end_context +