#!/bin/bash
#
# lib/cinder_backends/glusterfs
# Configure the glusterfs backend

# Enable with:
#
#   CINDER_ENABLED_BACKENDS+=,glusterfs:<volume-type-name>

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

# CINDER_CONF
# CINDER_CONF_DIR
# CINDER_GLUSTERFS_SHARES - Contents of glusterfs shares config file

# configure_cinder_backend_glusterfs - Configure Cinder for GlusterFS backends

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


# Entry Points
# ------------

# configure_cinder_backend_glusterfs - Set config files, create data dirs, etc
function configure_cinder_backend_glusterfs {
    local be_name=$1
    iniset $CINDER_CONF $be_name volume_backend_name $be_name
    iniset $CINDER_CONF $be_name volume_driver "cinder.volume.drivers.glusterfs.GlusterfsDriver"
    iniset $CINDER_CONF $be_name glusterfs_shares_config "$CINDER_CONF_DIR/glusterfs-shares-$be_name.conf"

    if [[ -n "$CINDER_GLUSTERFS_SHARES" ]]; then
        CINDER_GLUSTERFS_SHARES=$(echo $CINDER_GLUSTERFS_SHARES | tr ";" "\n")
        echo "$CINDER_GLUSTERFS_SHARES" | tee "$CINDER_CONF_DIR/glusterfs-shares-$be_name.conf"
    fi
}


# Restore xtrace
$_XTRACE_CINDER_GLUSTERFS

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