diff options
Diffstat (limited to '')
-rwxr-xr-x | lib/container/enter | 102 | ||||
-rwxr-xr-x | lib/container/limit | 186 | ||||
-rwxr-xr-x | lib/container/rename | 162 | ||||
-rwxr-xr-x | lib/container/stop | 20 |
4 files changed, 3 insertions, 467 deletions
diff --git a/lib/container/enter b/lib/container/enter deleted file mode 100755 index 4eff504..0000000 --- a/lib/container/enter +++ /dev/null @@ -1,102 +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 - -COMMAND="$(basename ${0})" - -MACHINES="/var/lib/machines" - -Parameters () -{ - LONG_OPTIONS="name:," - OPTIONS="n:," - - 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 - -n|--name) - NAME="${2}" - shift 2 - ;; - - --) - shift 1 - break - ;; - - *) - echo "'${COMMAND}': getopt error" >&2 - exit 1 - ;; - esac - done -} - -Usage () -{ - echo "Usage: container ${COMMAND} -n|--name NAME" >&2 - exit 1 -} - -Parameters "${@}" - -if [ -z "${NAME}" ] -then - Usage -fi - -if [ ! -e "${MACHINES}/${NAME}" ] -then - echo "'${NAME}': no such container" >&2 - exit 1 -fi - -STATE="$(machinectl show ${NAME} 2>&1 | awk -F= '/^State=/ { print $2 }')" - -case "${STATE}" in - running) - ;; - - *) - echo "'${NAME}': container is not running" >&2 - exit 1 - ;; -esac - -LEADER="$(machinectl status ${NAME} | awk '/Leader: / { print $2 }')" - -# Run -if [ -e "${MACHINES}/${NAME}/usr/bin/container-nsenter" ] -then - OPTIONS="/usr/bin/container-nsenter" -else - OPTIONS="" -fi - -nsenter --target ${LEADER} --mount --uts --ipc --net --pid --root --wd=/root ${OPTIONS} diff --git a/lib/container/limit b/lib/container/limit deleted file mode 100755 index 8b5ffd5..0000000 --- a/lib/container/limit +++ /dev/null @@ -1,186 +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 - -COMMAND="$(basename ${0})" - -MACHINES="/var/lib/machines" - -Parameters () -{ - LONG_OPTIONS="name:,blockio-device-weight:,blockio-read-bandwith:,blockio-weight:,blockio-write-bandwith:,cpu-quota:,cpu-shares:,memory-limit:,tasks-max:," - OPTIONS="n:b:c:m: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 - -n|--name) - NAME="${2}" - shift 2 - ;; - - -c|--cpu-quota) - CPU_QUOTA="${2}" - shift 2 - ;; - - --cpu-shares) - CPU_SHARES="${2}" - shift 2 - ;; - - -m|--memory-limit) - MEMORY_LIMIT="${2}" - shift 2 - ;; - - -t|--tasks-max) - TASKS_MAX="${2}" - shift 2 - ;; - - --blockio-device-weight) - BLOCK_IO_DEVICE_WEIGHT="${2}" - shift 2 - ;; - - --blockio-read-bandwith) - BLOCK_IO_READ_BANDWITH="${2}" - shift 2 - ;; - - -b|--blockio-weight) - BLOCK_IO_WEIGHT="${2}" - shift 2 - ;; - - --blockio-write-bandwith) - BLOCK_IO_WRITE_BANDWITH="${2}" - shift 2 - ;; - - --) - shift 1 - break - ;; - - *) - echo "'${COMMAND}': getopt error" >&2 - exit 1 - ;; - esac - done -} - -Usage () -{ - echo "Usage: container ${COMMAND} -n|--name NAME [--blockio-device-weight \"DEVICE WEIGHT\"] [--blockio-read-bandwith \"DEVICE BYTES\"] [-b|--blockio-weight WEIGHT] [--blockio-write-bandwith \"DEVICE BYTES\"] [-c|--cpu-quota QUOTA] [--cpu-shares SHARES] [-m|--memory-limit BYTES] [-t|--tasks-max NUMBER]" >&2 - exit 1 -} - -Parameters "${@}" - -if [ -z "${NAME}" ] -then - Usage -fi - -if [ ! -e "${MACHINES}/${NAME}" ] -then - echo "'${NAME}': no such container" >&2 - exit 1 -fi - -STATE="$(machinectl show ${NAME} 2>&1 | awk -F= '/^State=/ { print $2 }')" - -case "${STATE}" in - running) - ;; - - *) - echo "'${NAME}': container is not running" >&2 - exit 1 - ;; -esac - -if [ -n "${BLOCK_IO_DEVICE_WEIGHT}" ] -then - BLOCK_IO_DEVICE_WEIGHT="BlockIODeviceWeight=${BLOCK_IO_DEVICE_WEIGHT}" - SET_PROPERTY="true" -fi - -if [ -n "${BLOCK_IO_READ_BANDWITH}" ] -then - BLOCK_IO_READ_BANDWITH="BlockIOReadBandwidth=${BLOCK_IO_READ_BANDWITH}" - SET_PROPERTY="true" -fi - -if [ -n "${BLOCK_IO_WEIGHT}" ] -then - BLOCK_IO_WEIGHT="BlockIOWeight=${BLOCK_IO_WEIGHT}" - SET_PROPERTY="true" -fi - -if [ -n "${BLOCK_IO_WRITE_BANDWITH}" ] -then - BLOCK_IO_WRITE_BANDWITH="BlockIOReadBandwidth=${BLOCK_IO_WRITE_BANDWITH}" - SET_PROPERTY="true" -fi - -if [ -n "${CPU_QUOTA}" ] -then - CPU_QUOTA="CPUQuota=${CPU_QUOTA}" - SET_PROPERTY="true" -fi - -if [ -n "${CPU_SHARES}" ] -then - CPU_SHARES="CPUShares=${CPU_SHARES}" - SET_PROPERTY="true" -fi - -if [ -n "${MEMORY_LIMIT}" ] -then - MEMORY_LIMIT="MemoryLimit=${MEMORY_LIMIT}" - SET_PROPERTY="true" -fi - -if [ -n "${TASKS_MAX}" ] -then - TASKS_MAX="TasksMax=${TASKS_MAX}" - SET_PROPERTY="true" -fi - -if [ "${SET_PROPERTY}" != "true" ] -then - Usage -fi - -# Run -systemctl --runtime set-property ${NAME} ${BLOCK_IO_DEVICE_WEIGHT} ${BLOCK_IO_READ_BANDWITH} ${BLOCK_IO_WEIGHT} ${BLOCK_IO_WRITE_BANDWITH} ${CPU_QUOTA} ${CPU_SHARES} ${MEMORY_LIMIT} ${TASKS_MAX} diff --git a/lib/container/rename b/lib/container/rename deleted file mode 100755 index 2d27615..0000000 --- a/lib/container/rename +++ /dev/null @@ -1,162 +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 - -COMMAND="$(basename ${0})" - -CONFIG="/etc/container-tools/config" -MACHINES="/var/lib/machines" - -Parameters () -{ - LONG_OPTIONS="force,new:,old:," - OPTIONS="f,n:,o:," - - 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 - -f|--force) - FORCE="true" - shift 1 - ;; - - -n|--new) - NEW="${2}" - shift 2 - ;; - - -o|--old) - OLD="${2}" - shift 2 - ;; - - --) - shift 1 - break - ;; - - *) - echo "'${COMMAND}': getopt error" >&2 - exit 1 - ;; - esac - done -} - -Usage () -{ - echo "Usage: container ${COMMAND} [-f|--force] -n|--new NAME -o|--old NAME" >&2 - exit 1 -} - -Parameters "${@}" - -if [ -z "${OLD}" ] || [ -z "${NEW}" ] -then - Usage -fi - -if [ ! -e "${MACHINES}/${OLD}" ] -then - echo "'${OLD}': no such container" >&2 - exit 1 -fi - -if [ ! -e "${MACHINES}/${NEW}" ] -then - echo "'${NEW}': container already exists" >&2 - exit 1 -fi - -STATE="$(machinectl show ${OLD} 2>&1 | awk -F= '/^State=/ { print $2 }')" - -case "${STATE}" in - running) - echo "'${OLD}': container is started" >&2 - exit 1 - ;; -esac - -case "${FORCE}" in - true) - ;; - - *) - if container list --other | grep -qs "^${OLD}$" - then - echo -n "'${OLD}': rename remote container to '${NEW}' [y|N]? " - read FORCE - - FORCE="$(echo ${FORCE} | tr [A-Z] [a-z])" - - case "${FORCE}" in - y|yes) - ;; - - *) - exit 1 - ;; - esac - fi - ;; -esac - -# Run -mv "${CONFIG}/${OLD}.conf" "${CONFIG}/${NEW}.conf" -mv "${MACHINES}/${OLD}" "${MACHINES}/${NEW}" - -# Renaming 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 - SOURCE_OLD="$(echo ${BIND} | awk -F: '{ print $1 }')" - SOURCE_NEW="$(echo ${SOURCE_OLD} | sed -e "s|${OLD}|${NEW}|g")" - - if [ "${SOURCE_OLD}" != "${SOURCE_NEW}" ] - then - mv "${SOURCE_OLD}" "${SOURCE_NEW}" - fi - - TARGET_OLD="$(echo ${BIND} | awk -F: '{ print $2 }')" - TARGET_NEW="$(echo ${TARGET_OLD} | sed -e "s|${OLD}|${NEW}|g")" - - if [ "${TARGET_OLD}" != "${TARGET_NEW}" ] - then - mv "${MACHINES}/${NEW}/${TARGET_OLD}" "${MACHINES}/${NEW}/${TARGET_NEW}" - fi - done -fi - -# Updating configuration file -sed -i -e "s|${OLD}|${NEW}|g" "${CONFIG}/${NEW}.conf" diff --git a/lib/container/stop b/lib/container/stop index ec24d51..ba8960d 100755 --- a/lib/container/stop +++ b/lib/container/stop @@ -27,8 +27,8 @@ CLEAN="false" Parameters () { - LONG_OPTIONS="name:,force,clean," - OPTIONS="n:,f," + LONG_OPTIONS="name:,clean," + OPTIONS="n:," PARAMETERS="$(getopt --longoptions ${LONG_OPTIONS} --name=${COMMAND} --options ${OPTIONS} --shell sh -- ${@})" @@ -48,10 +48,6 @@ Parameters () shift 2 ;; - -f|--force) - FORCE="true" - ;; - --clean) # internal option CLEAN="true" @@ -170,15 +166,5 @@ case "${STATE}" in ;; esac -case "${FORCE}" in - true) - MODE="terminate" - ;; - - *) - MODE="poweroff" - ;; -esac - # Run -machinectl ${MODE} ${NAME} +machinectl poweroff ${NAME} |