#!/bin/bash
#
# lib/cinder_backups/ceph
# Configure the ceph backup driver

# Enable with:
#
#   CINDER_BACKUP_DRIVER=ceph

# Dependencies:
#
# - ``functions`` file
# - ``cinder`` configurations

# Save trace setting
_XTRACE_CINDER_CEPH=$(set +o | grep xtrace)
set +o xtrace

# Defaults
# --------

CINDER_BAK_CEPH_POOL=${CINDER_BAK_CEPH_POOL:-backups}
CINDER_BAK_CEPH_POOL_PG=${CINDER_BAK_CEPH_POOL_PG:-8}
CINDER_BAK_CEPH_POOL_PGP=${CINDER_BAK_CEPH_POOL_PGP:-8}
CINDER_BAK_CEPH_USER=${CINDER_BAK_CEPH_USER:-cinder-bak}


function configure_cinder_backup_ceph {
    # Execute this part only when cephadm is not used
    if [[ "$CEPHADM_DEPLOY" = "False" ]]; then
        sudo ceph -c ${CEPH_CONF_FILE} osd pool create ${CINDER_BAK_CEPH_POOL} ${CINDER_BAK_CEPH_POOL_PG} ${CINDER_BAK_CEPH_POOL_PGP}
        if [[ "$REMOTE_CEPH" = "False" && "$CEPH_REPLICAS" -ne 1 ]]; then
            sudo ceph -c ${CEPH_CONF_FILE} osd pool set ${CINDER_BAK_CEPH_POOL} crush_ruleset ${RULE_ID}
        fi
        sudo ceph -c ${CEPH_CONF_FILE} auth get-or-create client.${CINDER_BAK_CEPH_USER} mon "allow r" osd "allow class-read object_prefix rbd_children, allow rwx pool=${CINDER_BAK_CEPH_POOL}, allow rwx pool=${CINDER_CEPH_POOL}" | sudo tee ${CEPH_CONF_DIR}/ceph.client.${CINDER_BAK_CEPH_USER}.keyring
        sudo chown $(whoami):$(whoami) ${CEPH_CONF_DIR}/ceph.client.${CINDER_BAK_CEPH_USER}.keyring
    fi

    iniset $CINDER_CONF DEFAULT backup_driver "cinder.backup.drivers.ceph.CephBackupDriver"
    iniset $CINDER_CONF DEFAULT backup_ceph_conf "$CEPH_CONF_FILE"
    iniset $CINDER_CONF DEFAULT backup_ceph_pool "$CINDER_BAK_CEPH_POOL"
    iniset $CINDER_CONF DEFAULT backup_ceph_user "$CINDER_BAK_CEPH_USER"
    iniset $CINDER_CONF DEFAULT backup_ceph_stripe_unit 0
    iniset $CINDER_CONF DEFAULT backup_ceph_stripe_count 0
    iniset $CINDER_CONF DEFAULT restore_discard_excess_bytes True
}

# init_cinder_backup_ceph: nothing to do
# cleanup_cinder_backup_ceph: nothing to do

# Restore xtrace
$_XTRACE_CINDER_CEPH

# Local variables:
# mode: shell-script
# End:
