install -m 755 subcmd/erase $(DESTDIR)$(libdir)/fulcon/sbin/erase
install -m 755 subcmd/start $(DESTDIR)$(libdir)/fulcon/sbin/start
install -m 755 subcmd/stop $(DESTDIR)$(libdir)/fulcon/sbin/stop
+ install -m 755 subcmd/restart $(DESTDIR)$(libdir)/fulcon/sbin/restart
install -m 755 subcmd/suspend $(DESTDIR)$(libdir)/fulcon/sbin/suspend
install -m 755 subcmd/resume $(DESTDIR)$(libdir)/fulcon/sbin/resume
install -m 755 subcmd/rename $(DESTDIR)$(libdir)/fulcon/sbin/rename
install -m 755 slot-os/list $(DESTDIR)$(libdir)/slot-os/sbin/list
install -m 755 slot-os/start $(DESTDIR)$(libdir)/slot-os/sbin/start
install -m 755 slot-os/stop $(DESTDIR)$(libdir)/slot-os/sbin/stop
+ install -m 755 slot-os/restart $(DESTDIR)$(libdir)/slot-os/sbin/restart
install -m 755 slot-os/suspend $(DESTDIR)$(libdir)/slot-os/sbin/suspend
install -m 755 slot-os/resume $(DESTDIR)$(libdir)/slot-os/sbin/resume
install -m 755 slot-os/update-prog $(DESTDIR)$(libdir)/slot-os/sbin/update-prog
STAT=`fulcon list | awk '($1=="'$NAME'"){print $2}'`
if [ x"$STAT" != x"PAUSED" ]; then
- echo "error: not PAUSED"
+ echo "error: not PAUSED $NAME"
exit -1
fi
STAT=`fulcon list | awk '($1=="'$NAME'"){print $2}'`
if [ x"$STAT" != x"RUNNING" ]; then
- echo "error: not RUNNING"
+ echo "error: not RUNNING $NAME"
exit -1
fi
--- /dev/null
+#!/bin/bash
+
+# Copyright (C) 2016 NIWA Hideyuki
+
+FULCONDRIVER=`fulcon driver-name`
+PATH=/usr/lib/slot-os/lib:/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
+
+FULCONDIR=/var/lib/fulcon
+SLOTOSDIR=/var/lib/slot-os
+
+usage()
+{
+ echo "usage: restart NUMBER ..."
+ echo "usage: restart all"
+}
+
+lsdir() {
+ ls -f --ind=none $1 | sed '/^\.\{1,2\}$/d'
+}
+
+
+if [ $# -lt 1 ]; then
+ usage
+ exit -1
+fi
+
+RCODE=0
+
+SNUMS=$*
+if [ x"$1" == x"all" ]; then
+ SNUMS=`ls $SLOTOSDIR/slot | sort -n`
+fi
+
+for SNUM in $SNUMS
+do
+ if [ ! -x $SLOTOSDIR/slot/$SNUM ]; then
+ printf "error: slot%2d is not exist\n" $SNUM
+ RCODE=-1
+ continue
+ fi
+
+ NAME=`cat $SLOTOSDIR/slot/$SNUM/fulcon`
+ if [ x"$NAME" == x"-" -o x"$NAME" == x"" ]; then
+ printf "error: slot%2d has not a container\n" $SNUM
+ RCODE=-1
+ continue
+ fi
+
+ rm -rf $SLOTOSDIR/slot/$SNUM/net
+ mkdir -p $FULCONDIR/container/$NAME/net
+ cp -pr $FULCONDIR/container/$NAME/net $SLOTOSDIR/slot/$SNUM/
+
+ fulcon restart $NAME
+
+done
+
+exit $RCODE
+
usage()
{
echo "usage: resume NUMBER ..."
+ echo "usage: resume all"
}
lsdir() {
RCODE=0
SNUMS=$*
+if [ x"$1" == x"all" ]; then
+ SNUMS=`ls $SLOTOSDIR/slot | sort -n`
+fi
+
for SNUM in $SNUMS
do
if [ ! -x $SLOTOSDIR/slot/$SNUM ]; then
usage()
{
echo "usage: suspend NUMBER ..."
+ echo "usage: suspend all"
}
lsdir() {
RCODE=0
SNUMS=$*
+if [ x"$1" == x"all" ]; then
+ SNUMS=`ls $SLOTOSDIR/slot | sort -n`
+fi
+
for SNUM in $SNUMS
do
if [ ! -x $SLOTOSDIR/slot/$SNUM ]; then
--- /dev/null
+#!/bin/bash
+
+# Copyright (C) 2015-2016 NIWA Hideyuki
+
+FULCONDRIVER=`fulcon driver-name`
+PATH=/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
+
+usage()
+{
+ echo "usage: restart NAME NAME ..."
+ echo " restart [-n REPEAT_NUMBER] NAME ..."
+}
+
+lsdir() {
+ ls -f --ind=none $1 | sed '/^\.\{1,2\}$/d'
+}
+
+# check options
+OPT_FLG=""
+FLG_N=0
+RNUM=0
+
+while getopts n: OPT
+do
+ case $OPT in
+ "n" ) FLG_N=1 ; RNUM=$OPTARG ;;
+ \? ) usage; exit -1;;
+ esac
+done
+
+shift `expr $OPTIND - 1`
+
+if [ $FLG_N -eq 1 ]; then
+ if [ $# -ne 1 ]; then
+ usage
+ exit -1
+ fi
+ NAME=$1
+ NAME=`echo $NAME | sed -e "s/'//g" -e 's/\"//g' -e 's/;//g' -e 's/&//g' -e 's/|//g'`
+ if [ $RNUM -gt 0 -a $RNUM -lt 1000 ]; then
+ for i in `seq $RNUM`
+ do
+ N=`printf "%04d" $i`
+ if [ x"`fulcon-status $NAME$N`" == x"RUNNING" ]; then
+ lib-stop $NAME$N
+ fi
+ lib-start $OPT_FLG $NAME$N
+ if [ $? -ne 0 ]; then
+ continue
+ fi
+
+ NETDIR=$FULCONDIR/container/$NAME$N/net
+ ls $NETDIR/* >& /dev/null
+ if [ $? -eq 0 ]; then
+ for j in `lsdir $NETDIR`
+ do
+ sed -i -e "s/'//g" -e 's/\"//g' -e 's/;//g' -e 's/&//g' -e 's/|//g' $NETDIR/$j >& /dev/null
+ net-add $NAME$N `cut -d ' ' -f 3- $NETDIR/$j`
+ done
+ fi
+ done;
+ exit 0
+ else
+ echo "REPEAT_NUMBER must be [1...999]"
+ exit -1
+ fi
+
+fi
+
+if [ $# -ge 1 ]; then
+ NAMES=$@
+else
+ usage
+ exit -1
+fi
+
+if [ x"$NAMES" == x"start" ]; then
+ usage
+ exit -1
+fi
+
+NAMES=`echo $NAMES | sed -e "s/'//g" -e 's/\"//g' -e 's/;//g' -e 's/&//g' -e 's/|//g'`
+for i in $NAMES
+do
+ if [ x"`fulcon-status $i`" == x"RUNNING" ]; then
+ lib-stop $i
+ fi
+ lib-start $OPT_FLG $i
+ if [ $? -ne 0 ]; then
+ continue
+ fi
+
+ NETDIR=$FULCONDIR/container/$i/net/
+ ls $NETDIR/* >& /dev/null
+ if [ $? -eq 0 ]; then
+ for j in `lsdir $NETDIR`
+ do
+ sed -i -e 's/\$//g' -e 's/`//g' -e "s/'//g" -e 's/\"//g' -e 's/;//g' -e 's/&//g' -e 's/|//g' $NETDIR/$j >& /dev/null
+ fulcon net-add $i `cut -d ' ' -f 3- $NETDIR/$j`
+ fulcon net-info $i >& /dev/null
+ done
+ fi
+done
+
+exit 0
+
+
#!/bin/bash
-# Copyright (C) 2015-2016 NIWA Hideyuki
+# Copyright (C) 2016 NIWA Hideyuki
FULCONDRIVER=`fulcon driver-name`
PATH=/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
usage()
{
- echo "usage: resume NAME"
+ echo "usage: resume [-n REPEAT_NUMBER] NAME ..."
}
-if [ $# -eq 1 ]; then
+# check options
+OPT_FLG=""
+FLG_N=0
+RNUM=0
+
+while getopts n: OPT
+do
+ case $OPT in
+ "n" ) FLG_N=1; RNUM=$OPTARG;;
+ \? ) usage; exit -1;;
+ esac
+done
+
+shift `expr $OPTIND - 1`
+
+if [ $FLG_N -eq 1 ]; then
+ if [ $# -ne 1 ]; then
+ usage
+ exit -1
+ fi
+ NAME=$1
+ if [ $RNUM -gt 0 -a $RNUM -lt 1000 ]; then
+ for i in `seq $RNUM`
+ do
+ N=`printf "%04d" $i`
+ lib-resume $NAME$N
+ if [ $? -eq 0 ]; then
+ echo resume $NAME$N
+ fi
+ done;
+ exit 0
+ else
+ echo "REPEAT_NUMBER must be [1...999]"
+ exit -1
+ fi
+
+fi
+
+if [ $# -ge 1 ]; then
NAMES=$@
else
usage
exit -1
fi
-. lib-resume $NAMES
+if [ x"$NAMES" == x"resume" ]; then
+ usage
+ exit -1
+fi
+
+for i in $NAMES
+do
+ lib-resume $OPT_FLG $i
+ if [ $? -eq 0 ]; then
+ echo resume $i
+ fi
+done
exit 0
+
N=`printf "%04d" $i`
lib-stop $NAME$N
done;
+ echo stop $NAME$N
exit 0
else
echo "REPEAT_NUMBER must be [1...999]"
for i in $NAMES
do
lib-stop $OPT_FLG $i
+ echo stop $i
done
exit 0
#!/bin/bash
-# Copyright (C) 2015-2016 NIWA Hideyuki
+# Copyright (C) 2016 NIWA Hideyuki
FULCONDRIVER=`fulcon driver-name`
PATH=/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
usage()
{
- echo "usage: suspend NAME"
+ echo "usage: suspend [-n REPEAT_NUMBER] NAME ..."
}
-if [ $# -eq 1 ]; then
+# check options
+OPT_FLG=""
+FLG_N=0
+RNUM=0
+
+while getopts n: OPT
+do
+ case $OPT in
+ "n" ) FLG_N=1; RNUM=$OPTARG;;
+ \? ) usage; exit -1;;
+ esac
+done
+
+shift `expr $OPTIND - 1`
+
+if [ $FLG_N -eq 1 ]; then
+ if [ $# -ne 1 ]; then
+ usage
+ exit -1
+ fi
+ NAME=$1
+ if [ $RNUM -gt 0 -a $RNUM -lt 1000 ]; then
+ for i in `seq $RNUM`
+ do
+ N=`printf "%04d" $i`
+ lib-suspend $NAME$N
+ if [ $? -eq 0 ]; then
+ echo suspend $NAME$N
+ fi
+ done;
+ exit 0
+ else
+ echo "REPEAT_NUMBER must be [1...999]"
+ exit -1
+ fi
+
+fi
+
+if [ $# -ge 1 ]; then
NAMES=$@
else
usage
exit -1
fi
-. lib-suspend $NAMES
+if [ x"$NAMES" == x"suspend" ]; then
+ usage
+ exit -1
+fi
+
+for i in $NAMES
+do
+ lib-suspend $OPT_FLG $i
+ if [ $? -eq 0 ]; then
+ echo suspend $i
+ fi
+done
exit 0
+