#!/bin/bash

# Copyright (C) 2015 NIWA Hideyuki

LIBDIR="/var/lib/fulcon/"

MEMSETDIR="/sys/fs/cgroup/memory"
if [ -d $MEMSETDIR/system.slice/docker.service/docker ]; then
	MEMSETDIR="$MEMSETDIR/system.slice/docker.service/docker/"
	MEMSETSUFFIX=""
elif [ -d $MEMSETDIR/docker ]; then
	MEMSETDIR=$MEMSETDIR/docker
	MEMSETSUFFIX=""
else
	MEMSETDIR=$MEMSETDIR/system.slice
	MEMSETSUFFIX="docker-"
fi

if [ $# -ne 2 -a $# -ne 1 ]; then
	echo "usage: mem CONTAINER_NAME [VALUE]"
	exit 1
fi

if [ ! -d $MEMSETDIR ]; then
	echo "error:" $MEMSETDIR "is not exist"
	exit 1
fi

ARGN=$#

NAME=$1
if [ $ARGN -eq 1 ]; then
	if [ -f $LIBDIR/container/$NAME/resource/mem ]; then
		cat $LIBDIR/container/$NAME/resource/mem | \
			awk '{printf "MEMORY : %4.2f GB\n",$1/1024.0/1024.0/1024.0}'
	fi
	USEDMEM=`cat $LIBDIR/container/$NAME/resource/mem`

elif [ $ARGN -eq 2 ]; then
	VAL=$2

	parmchk-num-kmg $VAL
	if [ $? -ne 0 ]; then
		echo "error: memory size must be number[kmg]"
		exit -1
	fi
	USEDMEM=$VAL
fi

STATUS=`fulcon list | awk '{if ($1 == "'$NAME'")print $2}'`
if [ x"$STATUS" == x"STOPPED" ]; then
	exit 0
fi


DID=`find-id $NAME`
if [ $? -ne 0 ]; then
	echo "error: can't find a container :" $NAME
	exit -1
fi

cd $MEMSETDIR
ls ${MEMSETSUFFIX}${DID}*  >& /dev/null
if [ $? -ne 0 ]; then
	exit 0
fi

for i in ${MEMSETSUFFIX}${DID}*
do
	if [ $ARGN -eq 2 ]; then
		echo $USEDMEM > $i/memory.limit_in_bytes
		cat $i/memory.limit_in_bytes > $LIBDIR/container/$NAME/resource/mem
	fi
done 
exit 0

