Replace custom cinder driver configs

The devstack/lib/cinder file has a number of third party
driver config options hard-coded in it.  Rather than add
yet another if driver== statement here let's use plugin
files and do something similar to what's already
in place for nova_hypervisors and neutron plugins.

This works the same way folks were implementing their
drivers already, the key is to use a CINDER_DRIVER
variable in your localrc file that matches the name
of the lib/cinder_plugin file to use.

The existing third party driver entries that were
in lib/cinder have been migrated to cooresponding
plugin files.

Change-Id: I4ee51ea542d5aa63879afd5297311a9df727c57f
This commit is contained in:
john-griffith 2014-01-23 11:31:10 -07:00 committed by Walter A. Boring IV
parent b4b9146de2
commit d0860cc26d
7 changed files with 273 additions and 36 deletions

View File

@ -27,6 +27,12 @@ set +o xtrace
# set up default driver # set up default driver
CINDER_DRIVER=${CINDER_DRIVER:-default} CINDER_DRIVER=${CINDER_DRIVER:-default}
CINDER_PLUGINS=$TOP_DIR/lib/cinder_plugins
# grab plugin config if specified via cinder_driver
if [[ -r $CINDER_PLUGINS/$CINDER_DRIVER ]]; then
source $CINDER_PLUGINS/$CINDER_DRIVER
fi
# set up default directories # set up default directories
CINDER_DIR=$DEST/cinder CINDER_DIR=$DEST/cinder
@ -300,42 +306,8 @@ function configure_cinder() {
setup_colorized_logging $CINDER_CONF DEFAULT "project_id" "user_id" setup_colorized_logging $CINDER_CONF DEFAULT "project_id" "user_id"
fi fi
if [ "$CINDER_DRIVER" == "XenAPINFS" ]; then if [[ -r $CINDER_PLUGINS/$CINDER_DRIVER ]]; then
( configure_cinder_driver
set -u
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.xenapi.sm.XenAPINFSDriver"
iniset $CINDER_CONF DEFAULT xenapi_connection_url "$CINDER_XENAPI_CONNECTION_URL"
iniset $CINDER_CONF DEFAULT xenapi_connection_username "$CINDER_XENAPI_CONNECTION_USERNAME"
iniset $CINDER_CONF DEFAULT xenapi_connection_password "$CINDER_XENAPI_CONNECTION_PASSWORD"
iniset $CINDER_CONF DEFAULT xenapi_nfs_server "$CINDER_XENAPI_NFS_SERVER"
iniset $CINDER_CONF DEFAULT xenapi_nfs_serverpath "$CINDER_XENAPI_NFS_SERVERPATH"
)
elif [ "$CINDER_DRIVER" == "nfs" ]; then
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.nfs.NfsDriver"
iniset $CINDER_CONF DEFAULT nfs_shares_config "$CINDER_CONF_DIR/nfs_shares.conf"
echo "$CINDER_NFS_SERVERPATH" | sudo tee "$CINDER_CONF_DIR/nfs_shares.conf"
sudo chmod 666 $CINDER_CONF_DIR/nfs_shares.conf
elif [ "$CINDER_DRIVER" == "sheepdog" ]; then
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.sheepdog.SheepdogDriver"
elif [ "$CINDER_DRIVER" == "glusterfs" ]; then
# To use glusterfs, set the following in localrc:
# CINDER_DRIVER=glusterfs
# CINDER_GLUSTERFS_SHARES="127.0.0.1:/vol1;127.0.0.1:/vol2"
# Shares are <host>:<volume> and separated by semicolons.
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.glusterfs.GlusterfsDriver"
iniset $CINDER_CONF DEFAULT glusterfs_shares_config "$CINDER_CONF_DIR/glusterfs_shares"
touch $CINDER_CONF_DIR/glusterfs_shares
if [ ! -z "$CINDER_GLUSTERFS_SHARES" ]; then
CINDER_GLUSTERFS_SHARES=$(echo $CINDER_GLUSTERFS_SHARES | tr ";" "\n")
echo "$CINDER_GLUSTERFS_SHARES" > $CINDER_CONF_DIR/glusterfs_shares
fi
elif [ "$CINDER_DRIVER" == "vsphere" ]; then
echo_summary "Using VMware vCenter driver"
iniset $CINDER_CONF DEFAULT vmware_host_ip "$VMWAREAPI_IP"
iniset $CINDER_CONF DEFAULT vmware_host_username "$VMWAREAPI_USER"
iniset $CINDER_CONF DEFAULT vmware_host_password "$VMWAREAPI_PASSWORD"
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver"
fi fi
if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then

View File

@ -0,0 +1,44 @@
# lib/cinder_plugins/XenAPINFS
# Configure the XenAPINFS driver
# Enable with:
#
# CINDER_DRIVER=XenAPINFS
# 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() {
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.xenapi.sm.XenAPINFSDriver"
iniset $CINDER_CONF DEFAULT xenapi_connection_url "$CINDER_XENAPI_CONNECTION_URL"
iniset $CINDER_CONF DEFAULT xenapi_connection_username "$CINDER_XENAPI_CONNECTION_USERNAME"
iniset $CINDER_CONF DEFAULT xenapi_connection_password "$CINDER_XENAPI_CONNECTION_PASSWORD"
iniset $CINDER_CONF DEFAULT xenapi_nfs_server "$CINDER_XENAPI_NFS_SERVER"
iniset $CINDER_CONF DEFAULT xenapi_nfs_serverpath "$CINDER_XENAPI_NFS_SERVERPATH"
}
# Restore xtrace
$MY_XTRACE
# Local variables:
# mode: shell-script
# End:

View File

@ -0,0 +1,50 @@
# lib/cinder_plugins/glusterfs
# Configure the glusterfs driver
# Enable with:
#
# CINDER_DRIVER=glusterfs
# 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 glusterfs, set the following in localrc:
# CINDER_DRIVER=glusterfs
# CINDER_GLUSTERFS_SHARES="127.0.0.1:/vol1;127.0.0.1:/vol2"
# Shares are <host>:<volume> and separated by semicolons.
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.glusterfs.GlusterfsDriver"
iniset $CINDER_CONF DEFAULT glusterfs_shares_config "$CINDER_CONF_DIR/glusterfs_shares"
touch $CINDER_CONF_DIR/glusterfs_shares
if [ ! -z "$CINDER_GLUSTERFS_SHARES" ]; then
CINDER_GLUSTERFS_SHARES=$(echo $CINDER_GLUSTERFS_SHARES | tr ";" "\n")
echo "$CINDER_GLUSTERFS_SHARES" > $CINDER_CONF_DIR/glusterfs_shares
fi
}
# Restore xtrace
$MY_XTRACE
# Local variables:
# mode: shell-script
# End:

42
lib/cinder_plugins/nfs Normal file
View File

@ -0,0 +1,42 @@
# lib/cinder_plugins/nfs
# Configure the nfs driver
# Enable with:
#
# CINDER_DRIVER=nfs
# 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() {
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.nfs.NfsDriver"
iniset $CINDER_CONF DEFAULT nfs_shares_config "$CINDER_CONF_DIR/nfs_shares.conf"
echo "$CINDER_NFS_SERVERPATH" | sudo tee "$CINDER_CONF_DIR/nfs_shares.conf"
sudo chmod 660 $CINDER_CONF_DIR/nfs_shares.conf
}
# Restore xtrace
$MY_XTRACE
# Local variables:
# mode: shell-script
# End:

View File

@ -0,0 +1,39 @@
# lib/cinder_plugins/sheepdog
# Configure the sheepdog driver
# Enable with:
#
# CINDER_DRIVER=sheepdog
# 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() {
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.sheepdog.SheepdogDriver"
}
# Restore xtrace
$MY_XTRACE
# Local variables:
# mode: shell-script
# End:

View File

@ -0,0 +1,48 @@
# 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:

View File

@ -0,0 +1,42 @@
# lib/cinder_plugins/vsphere
# Configure the vsphere driver
# Enable with:
#
# CINDER_DRIVER=vsphere
# 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() {
iniset $CINDER_CONF DEFAULT vmware_host_ip "$VMWAREAPI_IP"
iniset $CINDER_CONF DEFAULT vmware_host_username "$VMWAREAPI_USER"
iniset $CINDER_CONF DEFAULT vmware_host_password "$VMWAREAPI_PASSWORD"
iniset $CINDER_CONF DEFAULT volume_driver "cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver"
}
# Restore xtrace
$MY_XTRACE
# Local variables:
# mode: shell-script
# End: