#!/bin/sh

### BEGIN INIT INFO
# Provides:             lxc-docker
# Required-Start:       $syslog $remote_fs
# Required-Stop:        $syslog $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Linux container runtime
# Description:          Linux container runtime
### END INIT INFO

DOCKER=/usr/bin/lxc-docker

# Check lxc-docker is present
[ -x $DOCKER ] || (log_failure_msg "lxc-docker not present"; exit 1)

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

# Get lsb functions
. /lib/lsb/init-functions

check_root_id ()
{
  if [ "$(id -u)" != "0" ]; then
    log_failure_msg "LXC Docker must be run as root"; exit 1
  fi
}

case "$1" in
  start)
    check_root_id || exit 1
    log_begin_msg "Starting LXC Docker"
    mount | grep cgroup >/dev/null || mount -t cgroup none /sys/fs/cgroup
    start-stop-daemon --start --background --exec "$DOCKER" -- -d
    log_end_msg $?
    ;;

  stop)
    check_root_id || exit 1
    log_begin_msg "Stopping LXC Docker"
    docker_pid=`pgrep -f "$DOCKER -d"`
    [ -n "$docker_pid" ] && kill $docker_pid
    log_end_msg $?
    ;;

  restart)
    check_root_id || exit 1
    docker_pid=`pgrep -f "$DOCKER -d"`
    [ -n "$docker_pid" ] && /etc/init.d/lxc-docker stop
    /etc/init.d/lxc-docker start
    ;;

  force-reload)
    check_root_id || exit 1
    /etc/init.d/lxc-docker restart
    ;;

  status)
    docker_pid=`pgrep -f "$DOCKER -d"`
    if [ -z "$docker_pid" ] ; then
      echo "lxc-docker not running"
    else
      echo "lxc-docker running (pid $docker_pid)"
    fi
    ;;

  *)
    echo "Usage: /etc/init.d/lxc-docker {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0
