# lib/cinder_plugins/solidfire
# Configure the solidfire driver

# Enable with:
#
#   CINDER_DRIVER=solidfire

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

# configure_cinder_driver - make configuration changes, including those to other services

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


# Defaults
# --------

# Set up default directories


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

# configure_cinder_driver - Set config files, create data dirs, etc
function configure_cinder_driver {
    # To use solidfire, set the following in localrc:
    # CINDER_DRIVER=solidfire
    # SAN_IP=<mvip>
    # SAN_LOGIN=<cluster-admin-account>
    # SAN_PASSWORD=<cluster-admin-password>

    iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.solidfire.SolidFireDriver"
    iniset $CINDER_CONF DEFAULT san_ip $SAN_IP
    iniset $CINDER_CONF DEFAULT san_login $SAN_LOGIN
    iniset $CINDER_CONF DEFAULT san_password $SAN_PASSWORD
}

# Restore xtrace
$MY_XTRACE

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