# 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
GLUSTERFS_XTRACE=$(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
$GLUSTERFS_XTRACE

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