summaryrefslogtreecommitdiffstats
path: root/lib/container
diff options
context:
space:
mode:
authorDaniel Baumann <mail@daniel-baumann.ch>2016-06-01 13:56:41 +0000
committerDaniel Baumann <mail@daniel-baumann.ch>2016-06-01 13:57:06 +0000
commitce88f18bae951a614940e0e4497e9f20aa4011b6 (patch)
tree0953e87b0272059527176120782a8e0e463ccc87 /lib/container
parentReleasing debian version 20160515-1. (diff)
downloadopen-infrastructure-compute-tools-ce88f18bae951a614940e0e4497e9f20aa4011b6.tar.xz
open-infrastructure-compute-tools-ce88f18bae951a614940e0e4497e9f20aa4011b6.zip
Merging upstream version 20160601.
Signed-off-by: Daniel Baumann <mail@daniel-baumann.ch>
Diffstat (limited to 'lib/container')
-rwxr-xr-xlib/container/create31
-rwxr-xr-xlib/container/remove2
-rwxr-xr-xlib/container/stop17
3 files changed, 44 insertions, 6 deletions
diff --git a/lib/container/create b/lib/container/create
index 0b0aa3a..dea1e76 100755
--- a/lib/container/create
+++ b/lib/container/create
@@ -103,11 +103,34 @@ then
exit 1
fi
-SCRIPT="${SCRIPT:-debian}"
-
-if [ ! -e "/usr/share/container-tools/scripts/${SCRIPT}" ]
+if [ -z "${SCRIPT}" ]
then
- echo "'${SCRIPT}': no such script" >&2
+ if [ -e /usr/share/container-tools/scripts/default ]
+ then
+ TARGET="$(basename $(readlink /usr/share/container-tools/scripts/default))"
+
+ case "${TARGET}" in
+ container-tools_script)
+ TARGET="$(basename $(readlink /etc/alternatives/container-tools_script))"
+ ;;
+ esac
+
+ if [ -e "/usr/share/container-tools/scripts/${TARGET}" ]
+ then
+ SCRIPT="${TARGET}"
+ else
+ echo "default -> '${TARGET}': no such script" >&2
+ exit 1
+ fi
+ else
+ SCRIPT="debian"
+ fi
+else
+ if [ ! -e "/usr/share/container-tools/scripts/${SCRIPT}" ]
+ then
+ echo "'${SCRIPT}': no such script" >&2
+ exit 1
+ fi
fi
CNT_AUTO="${CNT_AUTO:-$(hostname -f)}"
diff --git a/lib/container/remove b/lib/container/remove
index d171d87..4f26d43 100755
--- a/lib/container/remove
+++ b/lib/container/remove
@@ -127,5 +127,5 @@ then
fi
# Run
-rm -rf "${MACHINES}/${NAME}"
+rm --preserve-root --one-file-system -rf "${MACHINES}/${NAME}"
rm -f "${CONFIG}/${NAME}.conf"
diff --git a/lib/container/stop b/lib/container/stop
index 67cc403..fb470f6 100755
--- a/lib/container/stop
+++ b/lib/container/stop
@@ -92,9 +92,24 @@ fi
STATE="$(machinectl show ${NAME} 2>&1 | awk -F= '/^State=/ { print $2 }')"
-# Removing network configuration
case "${CLEAN}" in
true)
+ # Removing bind mounts
+ BIND="$(awk -F= '/^bind=/ { print $2 }' ${CONFIG}/${NAME}.conf)"
+
+ if [ -n "${BIND}" ]
+ then
+ BINDS="$(echo ${BIND} | sed -e 's|;| |g')"
+
+ for BIND in ${BINDS}
+ do
+ DIRECTORY="$(echo ${BIND} | awk -F: '{ print $1 }')"
+
+ rmdir --ignore-fail-on-non-empty --parents ${DIRECTORY} > /dev/null 2>&1 || true
+ done
+ fi
+
+ # Removing network configuration
NETWORK_VETH_EXTRA_CONF="$(awk -F= '/^network-veth-extra=/ { print $2 }' ${CONFIG}/${NAME}.conf)"
case "${NETWORK_VETH_EXTRA_CONF}" in