OSDN Git Service

addition of pull command
authorniwa-hideyuki <niwa.hideyuki@jp.fujitsu.com>
Sun, 2 Nov 2014 05:34:31 +0000 (14:34 +0900)
committerniwa-hideyuki <niwa.hideyuki@jp.fujitsu.com>
Sun, 2 Nov 2014 05:34:31 +0000 (14:34 +0900)
lxcf/lib/lxcf-pull [new file with mode: 0755]

diff --git a/lxcf/lib/lxcf-pull b/lxcf/lib/lxcf-pull
new file mode 100755 (executable)
index 0000000..2cb313d
--- /dev/null
@@ -0,0 +1,103 @@
+#!/bin/bash
+# copyright (C) 2014 FUJITSU LIMITED All Rights Reserved
+
+# 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; version 2
+# of the License.
+# 
+# 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
+# 02110-1301, USA.
+
+# check distro
+DISTRO=`/usr/lib64/lxcf/lxcf-distro`
+
+# check root
+if [ ${EUID:-${UID}} != 0 ]; then
+    echo "error: Because you are not root, you cannot execute this command. "
+    exit 1
+fi
+
+# check options
+FLG_F=0 
+FLG_P=0 ; PASSWORD=""
+FLG_N=0 ; NEWNAME=""
+FLG_S=0 ; SILENT=""
+
+
+while getopts fp:n:s OPT ; do
+  case $OPT in
+  f) FLG_F=1 ;;
+  p) FLG_P=1 ; PSASSWORD=$OPTARG ;;
+  n) FLG_N=1 ; NEWNAME=$OPTARG ;;
+  s) FLG_S=1 ; SILENT="-s" ;;
+  esac
+done
+shift $((OPTIND - 1))
+
+# check args
+if [ $# -ne 2 ]; then
+       echo "usage lxcf pull [ -f ] [ -p PASSWORD ] [ -n NEW_SNAP_NAME ] SERVER_NAME:PORT SNAPSHOT_NAME"
+       exit 1
+fi
+
+lsdir() {
+  ls -f --ind=none $1 | sed '/^\.\{1,2\}$/d'
+}
+
+
+# When uuid is specified, the container name is returned. 
+uuid2name() {
+  NAME=$1
+  if [ -d /opt/lxcf/${NAME} ]; then
+    echo -n $NAME
+    return
+  fi
+  for i in `lsdir /etc/lxcf/rsc`
+  do
+     if [ x$NAME == x`cat /etc/lxcf/rsc/${i}/uuid` ]; then
+       echo -n $i
+       return
+     fi
+  done
+  echo -n $NAME
+}
+
+# start  containers of args
+
+SERVERNAME=$1
+SNAPNAME=$2
+
+if [ $FLG_N -eq 0 ]; then
+       NEWNAME=$SERVERNAME
+fi
+
+if [ -f /opt/lxcf_rep/$NEWNAME ];  then
+       echo "error:" $SNEWNAME "already exists. "
+       exit -1
+fi
+
+if [ $FLG_F -eq 0  -a -f /opt/lxcf_rep/$SNAPNAME ]; then
+       echo "error:" $SNAPNAME "already exists. "
+       exit -1
+fi
+
+pushd  /opt/lxcf_rep >& /dev/null
+
+curl -# $SILENT -F "password=\'${PASSWORD}\'" -o $NEWNAME http://${SERVERNAME}/lxcfv1/pull_data/${SNAPNAME}
+
+echo
+curl -s http://${SERVERNAME}/lxcfv1/pull_data/${SNAPNAME} |  \
+       awk 'BEGIN{f=1}{if ($0~/pre/){f=f*(-1)}else if (f == -1) print}'
+
+popd >& /dev/null
+
+exit 0
+