summaryrefslogtreecommitdiffstats
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
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>
-rwxr-xr-xbin/container-autostart31
-rwxr-xr-xlib/container/auto90
-rwxr-xr-xlib/container/create12
-rw-r--r--share/config/container.conf.in2
-rw-r--r--share/man/container-auto.1.txt78
-rwxr-xr-xshare/scripts/debconf2
-rwxr-xr-xshare/scripts/debootstrap2
-rw-r--r--share/systemd/container-auto.service (renamed from share/systemd/container-autostart.service)4
8 files changed, 179 insertions, 42 deletions
diff --git a/bin/container-autostart b/bin/container-autostart
deleted file mode 100755
index cf4fec1..0000000
--- a/bin/container-autostart
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/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
-
-HOST="$(hostname -f)"
-
-for CONFIG in /etc/container-tools/config/*.conf
-do
- if grep -Eqs "^ *cnt.autostart=true" "${CONFIG}" || grep -Eqs "^ *cnt.autostart=${HOST}" "${CONFIG}"
- then
- CONTAINER="$(basename ${CONFIG} .conf)"
-
- cnt start -n ${CONTAINER}
- fi
-done
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" \
diff --git a/share/config/container.conf.in b/share/config/container.conf.in
index 5ea342a..dd52adb 100644
--- a/share/config/container.conf.in
+++ b/share/config/container.conf.in
@@ -1,7 +1,7 @@
# container-tools: @NAME@
[start]
-cnt.autostart=@CNT_AUTOSTART@
+cnt.auto=@CNT_AUTO@
cnt.network-bridge=@CNT_NETWORK_BRIDGE@
bind=@BIND@
boot=@BOOT@
diff --git a/share/man/container-auto.1.txt b/share/man/container-auto.1.txt
new file mode 100644
index 0000000..af2d3c7
--- /dev/null
+++ b/share/man/container-auto.1.txt
@@ -0,0 +1,78 @@
+// 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/>.
+
+CONTAINER-START(1)
+==================
+:doctype: manpage
+:man manual: Open Infrastructure
+:man source: container-tools
+:man version: {revnumber}
+
+
+NAME
+----
+container-auto - Start/stop all container automatically at boot/shutdown
+
+
+SYNOPSIS
+--------
+*container auto* ['OPTIONS']
+
+
+DESCRIPTION
+-----------
+The container auto command starts or stops all container on the host system.
+
+
+OPTIONS
+-------
+The following container options are available:
+
+*-s, --start*::
+ Start all container on the host system.
+
+*-t, --stop*::
+ Stop all container on the host system.
+
+
+EXAMPLES
+--------
+*Start all container on the host system:*::
+ sudo container auto --start
+
+*Stop all container on the host system:*::
+ sudo container auto --stop
+
+
+SEE ALSO
+--------
+container-tools(7),
+container(1).
+
+
+HOMEPAGE
+--------
+More information about container-tools and the Open Infrastructure project can be found on the homepage at http://open-infrastructure.net.
+
+
+BUGS
+----
+Bugs can be reported by opening an issue in the GitHub repository at http://github.com/open-infrastructure/container-tools.
+
+
+AUTHORS
+-------
+container-tools was written by Daniel Baumann <daniel.baumann@open-infrastructure.net>.
diff --git a/share/scripts/debconf b/share/scripts/debconf
index 3bacbeb..55c2b8b 100755
--- a/share/scripts/debconf
+++ b/share/scripts/debconf
@@ -46,7 +46,7 @@ Parameters ()
shift 2
;;
- --cnt.autostart)
+ --cnt.auto)
# ignore
shift 2
;;
diff --git a/share/scripts/debootstrap b/share/scripts/debootstrap
index 208e050..0a9e733 100755
--- a/share/scripts/debootstrap
+++ b/share/scripts/debootstrap
@@ -45,7 +45,7 @@ Parameters ()
shift 2
;;
- --cnt.autostart)
+ --cnt.auto)
# ignore
shift 2
;;
diff --git a/share/systemd/container-autostart.service b/share/systemd/container-auto.service
index 076aa41..e9addd7 100644
--- a/share/systemd/container-autostart.service
+++ b/share/systemd/container-auto.service
@@ -5,8 +5,8 @@ After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
-ExecStart=/usr/bin/container-autostart
-#ExecStop=
+ExecStart=/usr/bin/container auto --start
+ExecStop=/usr/bin/container auto --stop
Delegate=yes
StandardOutput=syslog
StandardError=syslog