description "Track if upstart is running in a container"

start on mounted MOUNTPOINT=/run

env container
env LIBVIRT_LXC_UUID

emits container
emits not-container

pre-start script
    # The "standard" way of telling if we are in a container
    # is to check for "container" in init's environment.
    # The code below is for cases where it's not set.

    # Detect old-style libvirt
    if [ -z "$container" ]; then
        [ -n "$LIBVIRT_LXC_UUID" ] && container=lxc-libvirt
    fi

    # Detect OpenVZ containers
    if [ -z "$container" ]; then
        [ -d /proc/vz ] && [ ! -d /proc/bc ] && container=openvz
    fi

    # Detect Vserver containers
    if [ -z "$container" ]; then
        VXID="$(cat /proc/self/status | grep ^VxID | cut -f2)" || true
        [ "${VXID:-0}" -gt 1 ] && container=vserver
    fi

    if [ -n "$container" ]; then
        echo "$container" > /run/container_type || true
        initctl emit --no-wait container CONTAINER=$container
        exit 0
    fi

    # If not a container, stop there
    rm -f /run/container_type
    initctl emit --no-wait not-container
    stop
end script
