#!/sbin/openrc-run
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

name="$RC_SVCNAME"
description="Run OpenNebula contextualization scripts."

: ${mount_dir:="/mnt/context"}
: ${device_label:="CONTEXT"}
: ${scripts_dir:="/etc/one-context.d"}
: ${execute_provided_scripts:="yes"}

depend() {
	need localmount
	before netmount
	provide net
}

start() {
	ebegin "Starting $name"

	local device="$(blkid -l -t LABEL="$device_label" -o device)"
	if [ -z "$device" ]; then
		eerror "Device with label $device_label does not exist"
		return 1
	fi

	if ! mountpoint -q "$mount_dir"; then
		mkdir -p "$mount_dir"
		mount -t iso9660 -o ro "$device" "$mount_dir" || return 1
	fi

	if [ ! -e "$mount_dir"/context.sh ]; then
		eerror "File $mount_dir/context.sh does not exist"
		return 1
	fi

	set -a  # auto-export variables
	. "$mount_dir"/context.sh
	set +a  # disable auto-export

	export MOUNT_DIR="$mount_dir"

	local script; for script in "$scripts_dir"/*; do
		[ -x "$script" ] && { "$script" || ewarn "Script $script failed"; }
	done

	if yesno "$execute_provided_scripts"; then
		local tmpdir="$(mktemp -d)"
		cd "$mount_dir"

		local script; for script in ${INIT_SCRIPTS:-init.sh}; do
			[ -e "$script" ] || continue

			install -m 755 -D "$script" "$tmpdir/$script"
			"$tmpdir/$script" || ewarn "Script $script failed"
			rm "$tmpdir/$script"
		done

		cd - >/dev/null
		rmdir "$tmpdir" 2>/dev/null
	fi

	umount "$mount_dir"
	rmdir "$mount_dir" 2>/dev/null

	eend 0
}
