#!/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=""
FLG_D=0 ; DETAIL="-#"


while getopts fp:n:sd 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" ;;
  d) FLG_D=1 ; DETAIL="" ;;
  esac
done
shift $((OPTIND - 1))

if [ $FLG_D -eq 1 ]; then
	FLG_S=0; SILENT=""
fi

# check args
if [ $# -ne 2 ]; then
	echo "usage lxcf snapshot-pull [ -f ] [ -s ] [ -d ] [ -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
}

# Reading of config parameter
PROXYNAME=`egrep "^proxy" /etc/lxcf/lxcf.conf | egrep -v "proxy-user" | \
	awk '{print $1}' | awk -F '=' '{print $2}'`
NOPROXY=`egrep "^noproxy" /etc/lxcf/lxcf.conf | \
	awk '{print $1}' | awk -F '=' '{print $2}'`
PROXYUSER=`egrep "^proxy-user" /etc/lxcf/lxcf.conf | \
	awk '{print $1}' | awk -F '=' '{print $2}'`

PROXYARGS="-u $PROXYUSER -x $PROXYNAME --noproxy $NOPROXY"

# start  containers of args

SERVERNAME=$1
SNAPNAME=$2

if [ $FLG_N -eq 0 ]; then
	NEWNAME=$SNAPNAME
fi

if [ $FLG_F -eq 0  -a -f /opt/lxcf_rep/$NEWNAME ]; then
	echo "error:" $NEWNAME "already exists. "
	exit 1
fi

pushd  /opt/lxcf_rep >& /dev/null

RESULT=`curl $PROXYARGS $DETAIL $SILENT -F "password=\'${PASSWORD}\'" \
	-o $NEWNAME http://${SERVERNAME}/lxcfv1/snapshot-pull-data/${SNAPNAME} | \
  awk 'BEGIN{f=1}{if ($0~/pre/){f=f*(-1)}else if (f == -1) print}'`

RESNO=`echo $RESULT | awk '{print $1}' | awk -F '=' '{print $2}'`
echo $RESULT | sed 's/status='${RESNO}'//'

popd >& /dev/null

exit $RESNO

