#!/bin/bash
# Default Values
source /usr/share/ceph-tools/_ct-common

help_msg () {
    printf """
usage: $0 [-h] $CT_HELP_DESCR ...

Description         Emptying an OSD server

Optional
$CT_HELP_MSG

Example
  $0 $CT_HELP_EXAMPLE
"""
}

ct_help $@
shift $?

echo "Set balancer Off"
ceph balancer off

OSDLIST=$(ceph osd tree-from $(hostname -s) |grep up| awk '{print $1}')
for i in $OSDLIST
do
  ct_healthy_wait
  echo "Set osd.${i} DOWN"
  systemctl stop ceph-osd@${i}.service
  ceph osd out $i
  sleep 10
done

ct_healthy_wait 0
echo "Set balancer On"
ceph balancer on

ct_healthy_wait 0

OSDLIST=$(ceph osd tree-from $(hostname -s)| awk '{print $1}')
for i in $OSDLIST
do
  echo "Set ceph-osd@${i}.service Disable"
  systemctl disable ceph-osd@${i}.service
  sleep 2
done

for i in $(ls /etc/systemd/system/ceph-osd@*.service)
do 
  rm /etc/systemd/system/$i
  sleep 2
done

ceph osd set norebalance
ceph balancer off

ceph tell 'osd.*' injectargs '--osd-max-backfills=1'

sleep 10

for i in $OSDLIST
do
  echo "Set Destroy and purge osd.${i}"
  ceph osd destroy $i --yes-i-really-mean-it
  sleep 2
  ceph osd purge $i --yes-i-really-mean-it
done

sleep 30

echo "Remapped"
ct-upmap-remapped | sh
ct-upmap-remapped | sh
ct-upmap-remapped | sh

ceph osd unset norebalance

ct_healthy_wait 0

ceph balancer on

ceph tell 'osd.*' injectargs '--osd-max-backfills=4'

ct_on_exit 0
