#! /bin/bash

### BEGIN INIT INFO
# Provides:       ceph ceph-mon ceph-osd
# Required-Start: $network $remote_fs
# Required-Stop:  $network $remote_fs
# Should-Start: network-remotefs
# Should-Stop: network-remotefs
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# Short-Description: Ceph is a distributed object, and block, storage platform
# Description:    Ceph is a distributed object, block, and file storage platform
### END INIT INFO

SYSTEMD_NO_WRAP=1 . /etc/rc.status
rc_reset

action=$1 ; shift

# default cluster name to "ceph"
cluster="ceph"

# Shared variables by many actions
dir_mon="/var/lib/ceph/mon/"
dir_osd="/var/lib/ceph/osd/"
if test -d ${dir_mon} ; then
    lmon=`ls ${dir_mon} | grep ${cluster}`
fi
if test -d ${dir_osd} ; then
    losd=`ls ${dir_osd} | grep ${cluster}`
fi
prefix="${cluster}-"

case $action in start | stop | status | enable | disable | mask | unmask | restart | is-active | is-failed | show | kill | reset-failed  )
    n=0
    if test -n "${lmon}" ; then
        for s in ${lmon#=${prefix}} ; do
            systemctl "${action}" ceph-mon@${s#$prefix}.service
            rc_check
            ((++n))
        done
    fi
    if test -n "${losd}" ; then
        for s in ${losd#=${prefix}} ; do
            systemctl "${action}" ceph-osd@${s#$prefix}.service
            rc_check
            ((++n))
        done
    fi
    if test $n -gt 0 ; then
        rc_status
    else
        rc_status -u
    fi
    systemctl "${action}" ceph.target
    rc_check
;;
*)
    echo "Invalid parameter : $action"
    echo "Valid parameters  : start | stop | status | enable | disable | mask | unmask | restart | is-active | is-failed | show | kill | reset-failed"
;;
esac

rc_exit

