#!/bin/bash

# LXCF - LXC Facility
# 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.

LOGFILE="/var/log/lxcf/lxcf-messages"

# check root
if [ ${EUID:-${UID}} != 0 ]; then
    echo "error: Because you are not root, you cannot execute this command. "
    exit 1
fi

# check args
FLG_H=0
FLG_Q=1
FLG_L=0
FLG_ALL=0

while getopts hqla OPT
do
  case $OPT in
    "h" ) FLG_H=1 ; FLG_Q=0 ;;
    "q" ) FLG_Q=1 ;;
    "l" ) FLG_L=1 ; FLG_Q=0 ;;
    "a" ) FLG_ALL=1 ; FLG_Q=0 ;;
    \?  ) OPT_ERROR=1; break;;
  esac
done
shift `expr $OPTIND - 1`

if [ $OPT_ERROR ]; then
	echo "usage: lxcf queue clear [-h] [-q] [-l] [-a]"
	exit 1
fi

# check args
if [ $# -ne 0 ]; then
	echo "usage: lxcf queue clear [-h] [-q] [-l] [-a]"
	exit 1
fi

TM=`LANG=C date +"%c"`

if [ $FLG_ALL -eq 1 ]; then
  flock $LOGFILE echo "###" $TM "CLEAR" "###" >> $LOGFILE 
  flock /var/lib/lxcf/hqueue cat /var/lib/lxcf/hqueue >> $LOGFILE 
  flock /var/lib/lxcf/qqueue cat /var/lib/lxcf/qqueue >> $LOGFILE 
  flock /var/lib/lxcf/lqueue cat /var/lib/lxcf/lqueue >> $LOGFILE 
  flock $LOGFILE echo "###" "CLEARED" "###" >> $LOGFILE 

  echo "canceled : ALL QUEUE"
  cat /var/lib/lxcf/hqueue 
  cat /var/lib/lxcf/qqueue 
  cat /var/lib/lxcf/lqueue 

  flock /var/lib/lxcf/hqueue cat /dev/null > /var/lib/lxcf/hqueue
  flock /var/lib/lxcf/qqueue cat /dev/null > /var/lib/lxcf/qqueue
  flock /var/lib/lxcf/lqueue cat /dev/null > /var/lib/lxcf/lqueue
  exit 0
fi

if [ $FLG_H -eq 1 ]; then
  flock $LOGFILE echo "###" $TM "CLEAR H-QUEUE" "###" >> $LOGFILE 
  flock /var/lib/lxcf/hqueue cat /var/lib/lxcf/hqueue >> $LOGFILE 
  flock $LOGFILE echo "###" "CLEARED" "###" >> $LOGFILE 

  echo "canceled : H-QUEUE"
  cat /var/lib/lxcf/hqueue

  flock /var/lib/lxcf/hqueue cat /dev/null > /var/lib/lxcf/hqueue
fi
if [ $FLG_Q -eq 1 ]; then
  flock $LOGFILE echo "###" $TM "CLEAR Q-QUEUE" "###" >> $LOGFILE 
  flock /var/lib/lxcf/qqueue cat /var/lib/lxcf/qqueue >> $LOGFILE 
  flock $LOGFILE echo "###" "CLEARED" "###" >> $LOGFILE 

  echo "canceled : Q-QUEUE"
  cat /var/lib/lxcf/qqueue

  flock /var/lib/lxcf/qqueue cat /dev/null > /var/lib/lxcf/qqueue
fi
if [ $FLG_L -eq 1 ]; then
  flock $LOGFILE echo "###" $TM "CLEAR L-QUEUE" "###" >> $LOGFILE 
  flock /var/lib/lxcf/lqueue cat /var/lib/lxcf/lqueue >> $LOGFILE 
  flock $LOGFILE echo "###" "CLEARED" "###" >> $LOGFILE 

  echo "canceled : L-QUEUE"
  cat /var/lib/lxcf/lqueue

  flock /var/lib/lxcf/lqueue cat /dev/null > /var/lib/lxcf/lqueue
fi

exit 0
