summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@open-infrastructure.net>2017-03-07 15:29:13 +0000
committerDaniel Baumann <daniel.baumann@open-infrastructure.net>2017-04-03 10:09:13 +0000
commit7e9400406ab4a7213d4ca1c7af576bfa601a1712 (patch)
tree58de4e9b84383a0971f5707e50182041681e90e1
parentAllowing @NAME@ variable in preseed files to allow for more flexibel preseed ... (diff)
downloadcompute-tools-7e9400406ab4a7213d4ca1c7af576bfa601a1712.tar.xz
compute-tools-7e9400406ab4a7213d4ca1c7af576bfa601a1712.zip
Allowing multiple container commands to be executed in a row.
Signed-off-by: Daniel Baumann <daniel.baumann@open-infrastructure.net>
-rwxr-xr-xbin/container103
-rw-r--r--share/man/container-create.1.txt3
-rw-r--r--share/man/container.1.txt1
3 files changed, 57 insertions, 50 deletions
diff --git a/bin/container b/bin/container
index a23f274..1b57193 100755
--- a/bin/container
+++ b/bin/container
@@ -33,66 +33,69 @@ then
fi
# Command
-COMMAND="${1}"
-
-if [ ! -e "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" ]
-then
- echo "'${COMMAND}': no such ${PROGRAM} command" >&2
- exit 1
-fi
+COMMANDS="${1}"
# Options
shift 1
OPTIONS="${@}"
-# Pre hooks
-for FILE in "${HOOKS}/pre-${PROGRAM}".* "${HOOKS}/${NAME}.pre-${PROGRAM}"
+for COMMAND in $(echo ${COMMANDS} | sed -e 's|,| |g')
do
- if [ -x "${FILE}" ]
+ if [ ! -e "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" ]
then
- "${FILE}"
+ echo "'${COMMAND}': no such ${PROGRAM} command" >&2
+ exit 1
fi
-done
-# Notification
-if echo "${OPTIONS}" | grep -qs "\--no-notification"
-then
- OPTIONS="$(echo "${OPTIONS}" | sed -e 's|--no-notification||')"
-else
- case "${COMMAND}" in
- create|remove|rm|restart|start|stop)
- USER="${SUDO_USER:-${USER}}"
- DATE="$(date +%Y-%m-%d\ %H:%M:%S)"
- HOST="$(hostname -f)"
-
- # logfile
- echo "${DATE} ${HOST} ${USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${SOFTWARE}/${PROGRAM}.log"
-
- # irc
- if [ -e /usr/bin/irk ] && [ -e "/etc/default/${SOFTWARE}" ]
- then
- . /etc/default/${SOFTWARE}
-
- if [ -n "${IRK_TARGETS}" ]
+ # Pre hooks
+ for FILE in "${HOOKS}/pre-${PROGRAM}".* "${HOOKS}/${NAME}.pre-${PROGRAM}"
+ do
+ if [ -x "${FILE}" ]
+ then
+ "${FILE}"
+ fi
+ done
+
+ # Notification
+ if echo "${OPTIONS}" | grep -qs "\--no-notification"
+ then
+ OPTIONS="$(echo "${OPTIONS}" | sed -e 's|--no-notification||')"
+ else
+ case "${COMMAND}" in
+ create|remove|rm|restart|start|stop)
+ USER="${SUDO_USER:-${USER}}"
+ DATE="$(date +%Y-%m-%d\ %H:%M:%S)"
+ HOST="$(hostname -f)"
+
+ # logfile
+ echo "${DATE} ${HOST} ${USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${SOFTWARE}/${PROGRAM}.log"
+
+ # irc
+ if [ -e /usr/bin/irk ] && [ -e "/etc/default/${SOFTWARE}" ]
then
- for TARGET in ${IRK_TARGETS}
- do
- irk ${TARGET} "\x0300${USER}\x03@\x0312${HOST}:\x03 \x0303${PROGRAM}\x03 \x0307${COMMAND}\x03 ${OPTIONS}"
- done
+ . /etc/default/${SOFTWARE}
+
+ if [ -n "${IRK_TARGETS}" ]
+ then
+ for TARGET in ${IRK_TARGETS}
+ do
+ irk ${TARGET} "\x0300${USER}\x03@\x0312${HOST}:\x03 \x0303${PROGRAM}\x03 \x0307${COMMAND}\x03 ${OPTIONS}"
+ done
+ fi
fi
- fi
- ;;
- esac
-fi
-
-# Run
-exec "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" "${OPTIONS}"
-
-# Post hooks
-for FILE in "${HOOKS}/post-${PROGRAM}".* "${HOOKS}/${NAME}.post-${PROGRAM}"
-do
- if [ -x "${FILE}" ]
- then
- "${FILE}"
+ ;;
+ esac
fi
+
+ # Run
+ exec "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" "${OPTIONS}"
+
+ # Post hooks
+ for FILE in "${HOOKS}/post-${PROGRAM}".* "${HOOKS}/${NAME}.post-${PROGRAM}"
+ do
+ if [ -x "${FILE}" ]
+ then
+ "${FILE}"
+ fi
+ done
done
diff --git a/share/man/container-create.1.txt b/share/man/container-create.1.txt
index 9176b84..a45c1f2 100644
--- a/share/man/container-create.1.txt
+++ b/share/man/container-create.1.txt
@@ -88,6 +88,9 @@ EXAMPLES
*Create example.net container using debconf script:*::
sudo container create -n example.net -s debconf
+*Create example.net container with the default create script and start it:*::
+ sudo container create,start -n example.net
+
SEE ALSO
--------
container-tools(7),
diff --git a/share/man/container.1.txt b/share/man/container.1.txt
index 7708c6a..fa94d7f 100644
--- a/share/man/container.1.txt
+++ b/share/man/container.1.txt
@@ -30,6 +30,7 @@ container - Manage systemd-nspawn containers
SYNOPSIS
--------
*container* 'COMMAND' ['OPTIONS']
+*container* 'COMMAND1','COMMAND2',... 'COMMANDn'
DESCRIPTION