#!/bin/sh
# Nico Schottelius, 2018-02-20
# Copyright ungleich glarus ag

set -e
set -x

tmpdir=$(mktemp -d)

# XFS based partition scheme
for dev in $(fdisk -l | awk '$6 ~/Ceph/ { print $1 }'); do
    if mount | grep ^$dev ; then
        echo Skipping $dev, already mounted
        continue
    fi
    mount "$dev" "$tmpdir"
    id=$(cat "${tmpdir}/whoami")

    # Chown the dev device to be accessible for ceph
    chown ceph:ceph "${tmpdir}/block"

    umount "$dev"

    dir="/var/lib/ceph/osd/ceph-$id"
    mkdir -p "$dir"
    mount "$dev" "$dir"

    if [ -e /etc/monit ]; then
        /opt/ungleich-tools/monit-ceph-create-start "osd.$id"
    else
        /etc/init.d/ceph start "osd.$id"
    fi
done

# LVM based / manual does not work atm:
# + grep ceph.block_device
# + sed -e s/.*ceph.osd_id=// -e s/,.*//
# + ceph-volume lvm activate --no-systemd 112
# -->  UnboundLocalError: local variable 'tags' referenced before assignment

# Activate all volumes in the OS
vgchange -ay
# Using this with a fake /bin/systemctl
ceph-volume lvm activate --all

for osdid in $(lvs -o lv_tags | grep ceph.block_device| sed -e 's/.*ceph.osd_id=//' -e 's/,.*//'); do
   #ceph-volume lvm activate --no-systemd $osdid
   /opt/ungleich-tools/monit-ceph-create-start "osd.$osdid"
done

rmdir "$tmpdir"
