From 15a9a2823dd313a35a334a7e4a328c7e6d656365 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 6 Dec 2016 23:57:58 +0100 Subject: Renaming container rename command to move for consistency. Signed-off-by: Daniel Baumann --- Makefile | 2 +- lib/container/move | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++ lib/container/rename | 162 --------------------------------------------------- 3 files changed, 163 insertions(+), 163 deletions(-) create mode 100755 lib/container/move delete mode 100755 lib/container/rename diff --git a/Makefile b/Makefile index fd16b73..6c95f4a 100644 --- a/Makefile +++ b/Makefile @@ -104,8 +104,8 @@ install: build ln -sf container-create-debconf.1 $(DESTDIR)/usr/share/man/man1/container-create-progress-linux.1 ln -sf list $(DESTDIR)/usr/lib/$(SOFTWARE)/container/ls + ln -sf move $(DESTDIR)/usr/lib/$(SOFTWARE)/container/mv ln -sf remove $(DESTDIR)/usr/lib/$(SOFTWARE)/container/rm - ln -sf rename $(DESTDIR)/usr/lib/$(SOFTWARE)/container/mv ln -sf version $(DESTDIR)/usr/lib/$(SOFTWARE)/container/ver mkdir -p $(DESTDIR)/lib/systemd/system diff --git a/lib/container/move b/lib/container/move new file mode 100755 index 0000000..467d687 --- /dev/null +++ b/lib/container/move @@ -0,0 +1,162 @@ +#!/bin/sh + +# container-tools - Manage systemd-nspawn containers +# Copyright (C) 2014-2016 Daniel Baumann +# +# 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 . + +set -e + +COMMAND="$(basename ${0})" + +CONFIG="/etc/container-tools/config" +MACHINES="/var/lib/machines" + +Parameters () +{ + GETOPT_LONGOPTIONS="force,new:,old:," + GETOPT_OPTIONS="f,n:,o:," + + PARAMETERS="$(getopt --longoptions ${GETOPT_LONGOPTIONS} --name=${COMMAND} --options ${GETOPT_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/rename b/lib/container/rename deleted file mode 100755 index 467d687..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 -# -# 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 . - -set -e - -COMMAND="$(basename ${0})" - -CONFIG="/etc/container-tools/config" -MACHINES="/var/lib/machines" - -Parameters () -{ - GETOPT_LONGOPTIONS="force,new:,old:," - GETOPT_OPTIONS="f,n:,o:," - - PARAMETERS="$(getopt --longoptions ${GETOPT_LONGOPTIONS} --name=${COMMAND} --options ${GETOPT_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" -- cgit v1.2.3