# rbdmap - Ceph RBD Mapping
#
# This script does not manage mount and unmount fs which depends on rbd device.
# You should use _netdev option in fstab to mount and umount in the correct order.

description "ceph rbd mapping"

start on (started networking
    and remote-filesystems)
stop on unmounted-remote-filesystems

env RBDMAPFILE="/etc/ceph/rbdmap"

pre-start script
    if [ ! -f "$RBDMAPFILE" ]; then
        exit 0
    fi

    while read DEV PARAMS; do
        case "$DEV" in
          ""|\#*)
            continue
            ;;
          */*)
            ;;
          *)
            DEV=rbd/$DEV
            ;;
        esac
        for PARAM in $(echo $PARAMS | tr ',' '\n'); do
            CMDPARAMS="$CMDPARAMS --$(echo $PARAM | tr '=' ' ')"
        done
        if [ ! -b /dev/rbd/$DEV ]; then
            echo "rbd map $DEV"
            rbd map $DEV $CMDPARAMS
        fi
    done < $RBDMAPFILE
end script

post-stop script
    if ls /dev/rbd[0-9]* >/dev/null 2>&1; then
        for DEV in /dev/rbd[0-9]*; do
            echo "rbd unmap $DEV"
            rbd unmap $DEV
        done
    fi
end script

