#!/bin/bash

# Copyright (C) 2015 NIWA Hideyuki

LIBDIR="/var/lib/fulcon/"

CPUSETDIR="/sys/fs/cgroup/cpuset"
if [ -d $CPUSETDIR/system.slice/docker.service/docker ]; then
	CPUSETDIR=$CPUSETDIR/system.slice/docker.service/docker
	CPUSETSUFFIX=""
elif [ -d $CPUSETDIR/docker ]; then
	CPUSETDIR=$CPUSETDIR/docker
	CPUSETSUFFIX=""
else
	CPUSETDIR=$CPUSETDIR/system.slice
	CPUSETSUFFIX="docker-"
fi

if [ $# -ne 2 -a $# -ne 1 ]; then
	echo "usage: cpuset CONTAINER_NAME [VALUE]"
	echo "error: VALUE must be 1 or [2-5] or [3,8]"
	exit 1
fi

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

ARGN=$#

NAME=$1
if [ $ARGN -eq 1 ]; then
	if [ -f $LIBDIR/container/$NAME/resource/cpuset ]; then
		cat $LIBDIR/container/$NAME/resource/cpuset | \
			awk '{printf "CPUSET : %s\n",$1}'
	fi
elif [ $ARGN -eq 2 ]; then
	VAL=$2
	if [ -f $LIBDIR/container/$NAME/resource/cpuset ]; then
		echo $VAL > $LIBDIR/container/$NAME/resource/cpuset 
	fi
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 $CPUSETDIR
ls ${CPUSUFFIX}${DID}*  >& /dev/null
if [ $? -ne 0 ]; then
	exit 0
fi

for i in ${CPUSUFFIX}${DID}*
do
	if [ $ARGN -eq 2 ]; then
		echo $VAL > $i/cpuset.cpus
		cat $i/cpuset.cpus > $LIBDIR/container/$NAME/resource/cpuset 
	fi
done 
exit 0

