summaryrefslogtreecommitdiffstats
path: root/lib/container
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@open-infrastructure.net>2016-05-18 17:19:11 +0000
committerDaniel Baumann <daniel.baumann@open-infrastructure.net>2016-06-03 11:36:02 +0000
commit47d54ddd9ab3634aa58315fe4e92d110a0609739 (patch)
tree5d3b894607f0f9e6e9eda54c86f465514ce2aa77 /lib/container
parentRemoving screen session handling in container-autostart program, containers s... (diff)
downloadcompute-tools-47d54ddd9ab3634aa58315fe4e92d110a0609739.tar.xz
compute-tools-47d54ddd9ab3634aa58315fe4e92d110a0609739.zip
Reworking container-autostart program into container auto command.
Signed-off-by: Daniel Baumann <daniel.baumann@open-infrastructure.net>
Diffstat (limited to '')
-rwxr-xr-xlib/container/auto90
-rwxr-xr-xlib/container/create12
2 files changed, 96 insertions, 6 deletions
diff --git a/lib/container/auto b/lib/container/auto
new file mode 100755
index 0000000..247b667
--- /dev/null
+++ b/lib/container/auto
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+# container-tools - Manage systemd-nspawn containers
+# Copyright (C) 2014-2016 Daniel Baumann <daniel.baumann@open-infrastructure.net>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+set -e
+
+COMMAND="$(basename ${0})"
+
+CONFIG="/etc/container-tools/config"
+
+Parameters ()
+{
+ LONG_OPTIONS="start,stop"
+ OPTIONS="s,t"
+
+ PARAMETERS="$(getopt --longoptions ${LONG_OPTIONS} --name=${COMMAND} --options ${OPTIONS} --shell sh -- ${@})"
+
+ if [ "${?}" != "0" ]
+ then
+ echo "'${COMMAND}': getopt exit" >&2
+ exit 1
+ fi
+
+ eval set -- "${PARAMETERS}"
+
+ while true
+ do
+ case "${1}" in
+ -s|--start)
+ ACTION="start"
+ shift 1
+ ;;
+
+ -t|--stop)
+ ACTION="stop"
+ shift 1
+ ;;
+
+ --)
+ shift 1
+ break
+ ;;
+
+ *)
+ echo "'${COMMAND}': getopt error" >&2
+ exit 1
+ ;;
+ esac
+ done
+}
+
+Usage ()
+{
+ echo "Usage: container ${COMMAND} -s|--start -t|--stop" >&2
+ exit 1
+}
+
+Parameters "${@}"
+
+if [ -z "${ACTION}" ]
+then
+ Usage
+fi
+
+HOST="$(hostname -f)"
+
+# Run
+for FILE in "${CONFIG}"/*.conf
+do
+ if grep -Eqs "^ *cnt.auto=true" "${FILE}" || grep -Eqs "^ *cnt.auto=${HOST}" "${FILE}"
+ then
+ CONTAINER="$(basename ${FILE} .conf)"
+
+ cnt ${ACTION} -n ${CONTAINER} || true
+ fi
+done
diff --git a/lib/container/create b/lib/container/create
index 4514a81..0b0aa3a 100755
--- a/lib/container/create
+++ b/lib/container/create
@@ -25,7 +25,7 @@ MACHINES="/var/lib/machines"
Parameters ()
{
- LONG_OPTIONS="name:,cnt.autostart:,bind:,capability:,drop-capability:script:"
+ LONG_OPTIONS="name:,cnt.auto:,bind:,capability:,drop-capability:script:"
OPTIONS="n:,b:,c:,d:,s:"
PARAMETERS="$(getopt --longoptions ${LONG_OPTIONS} --name=${COMMAND} --options ${OPTIONS} --shell sh -- ${@})"
@@ -46,8 +46,8 @@ Parameters ()
shift 2
;;
- --cnt.autostart)
- CNT_AUTOSTART="${2}"
+ --cnt.auto)
+ CNT_AUTO="${2}"
shift 2
;;
@@ -86,7 +86,7 @@ Parameters ()
Usage ()
{
- echo "Usage: container ${COMMAND} -n|--name NAME [--cnt.autostart=true|false|FQDN] [-b|--bind DIRECTORY:DIRECTORY[:OPTIONS]] [-c|--capability CAPABILITY[,CAPABILITY]] [-d|--drop-capability DROP_CAPABILITY[,DROP_CAPABILITY]] [-s|--script SCRIPT] [-- SCRIPT_OPTIONS]" >&2
+ echo "Usage: container ${COMMAND} -n|--name NAME [--cnt.auto=true|false|FQDN] [-b|--bind DIRECTORY:DIRECTORY[:OPTIONS]] [-c|--capability CAPABILITY[,CAPABILITY]] [-d|--drop-capability DROP_CAPABILITY[,DROP_CAPABILITY]] [-s|--script SCRIPT] [-- SCRIPT_OPTIONS]" >&2
exit 1
}
@@ -110,7 +110,7 @@ then
echo "'${SCRIPT}': no such script" >&2
fi
-CNT_AUTOSTART="${CNT_AUTOSTART:-$(hostname -f)}"
+CNT_AUTO="${CNT_AUTO:-$(hostname -f)}"
BINDS="$(echo ${BIND} | sed -e 's|;| |g')"
@@ -127,7 +127,7 @@ done
# config
mkdir -p "${CONFIG}"
-sed -e "s|@CNT_AUTOSTART@|${CNT_AUTOSTART}|g" \
+sed -e "s|@CNT_AUTO@|${CNT_AUTO}|g" \
-e "s|@CNT_NETWORK_BRIDGE@|${CNT_NETWORK_BRIDGE}|g" \
-e "s|@NAME@|${NAME}|g" \
-e "s|@BIND@|${BIND}|g" \