description "lxc"
author "Serge Hallyn <serge.hallyn@canonical.com>"

start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]

env LXC_AUTO="false"

# These can be overridden in /etc/default/lxc

# BOOTGROUPS - What groups should start on bootup?
#	Comma separated list of groups.
#	Leading comma, trailing comma or embedded double
#	comma indicates when the NULL group should be run.
# Example (default): boot the onboot group first then the NULL group
env BOOTGROUPS="onboot,"

# SHUTDOWNDELAY - Wait time for a container to shut down.
#	Container shutdown can result in lengthy system
#	shutdown times.  Even 5 seconds per container can be
#	too long.
env SHUTDOWNDELAY=5

# OPTIONS can be used for anything else.
#	If you want to boot everything then
#	options can be "-a" or "-a -A".
env OPTIONS=

# STOPOPTS are stop options.  The can be used for anything else to stop.
#	If you want to kill containers fast, use -k
env STOPOPTS="-a -A -s"

pre-start script
	[ -f /etc/default/lxc ] && . /etc/default/lxc

	# don't load profiles if mount mediation is not supported
	SYSF=/sys/kernel/security/apparmor/features/mount/mask
	if [ -f $SYSF ]; then
		if [ -x /lib/apparmor/profile-load ]; then
			/lib/apparmor/profile-load usr.bin.lxc-start
			/lib/apparmor/profile-load lxc-containers
		elif [ -x /lib/init/apparmor-profile-load ]; then
			/lib/init/apparmor-profile-load usr.bin.lxc-start
			/lib/init/apparmor-profile-load lxc-containers
		fi
	fi

	[ "x$LXC_AUTO" = "xtrue" ] || exit 0

	if [ -n "$BOOTGROUPS" ]
	then
		BOOTGROUPS="-g $BOOTGROUPS"
	fi

	# Process the "onboot" group first then the NULL group.
	lxc-autostart -L $OPTIONS $BOOTGROUPS | while read line; do
		set -- $line
		(start lxc-instance NAME=$1 && sleep $2) || true
	done
end script

# The stop is serialized and can take excessive time.  We need to avoid
# delaying the system shutdown / reboot as much as we can since it's not
# parallelized...  Even 5 second timeout may be too long.
post-stop script
	[ -f /etc/default/lxc ] && . /etc/default/lxc

	if [ -n "$SHUTDOWNDELAY" ]
	then
		SHUTDOWNDELAY="-t $SHUTDOWNDELAY"
	fi

	lxc-autostart $STOPOPTS $SHUTDOWNDELAY || true
end script
