Glance: Add support to configure multiple file stores
From Train release Glance has added support [0][1] to configure multiple stores of same or different types. This patch enables developers to configure multiple file stores for glance. In order to configure multiple file stores user need to set below options in local.conf GLANCE_ENABLE_MULTIPLE_STORES=True/False To enable multiple stores of glance. GLANCE_MULTIPLE_FILE_STORES=veryfast,fast,cheap,verycheap,slow,veryslow Comma separated list of store identifiers. GLANCE_DEFAULT_BACKEND=fast Default glance store in which image should be stored if store identifier not specified explicilty. Should be one of the store identifier from GLANCE_MULTIPLE_FILE_STORES config option. NOTE: This support is added so that we can start adding tempest/CI tests for glance multiple stores. [0] 515412b59f5b3af07a1787b9f8e85a4d656d3e1c [1] https://docs.openstack.org/glance/train/admin/multistores.html Change-Id: I494f77555cfe9115356ce0ee75c7d7f192141447
This commit is contained in:
parent
b6bd467f74
commit
6f91da9a2d
56
lib/glance
56
lib/glance
@ -41,9 +41,29 @@ else
|
||||
GLANCE_BIN_DIR=$(get_python_exec_prefix)
|
||||
fi
|
||||
|
||||
# Glance multi-store configuration
|
||||
# Boolean flag to enable multiple store configuration for glance
|
||||
GLANCE_ENABLE_MULTIPLE_STORES=$(trueorfalse False GLANCE_ENABLE_MULTIPLE_STORES)
|
||||
|
||||
# Comma separated list for configuring multiple file stores of glance,
|
||||
# for example; GLANCE_MULTIPLE_FILE_STORES = fast,cheap,slow
|
||||
GLANCE_MULTIPLE_FILE_STORES=${GLANCE_MULTIPLE_FILE_STORES:-fast}
|
||||
|
||||
# Default store/backend for glance, must be one of the store specified
|
||||
# in GLANCE_MULTIPLE_FILE_STORES option.
|
||||
GLANCE_DEFAULT_BACKEND=${GLANCE_DEFAULT_BACKEND:-fast}
|
||||
|
||||
GLANCE_CACHE_DIR=${GLANCE_CACHE_DIR:=$DATA_DIR/glance/cache}
|
||||
|
||||
# File path for each store specified in GLANCE_MULTIPLE_FILE_STORES, the store
|
||||
# identifier will be appended to this path at runtime. If GLANCE_MULTIPLE_FILE_STORES
|
||||
# has fast,cheap specified then filepath will be generated like $DATA_DIR/glance/fast
|
||||
# and $DATA_DIR/glance/cheap.
|
||||
GLANCE_MULTISTORE_FILE_IMAGE_DIR=${GLANCE_MULTISTORE_FILE_IMAGE_DIR:=$DATA_DIR/glance}
|
||||
GLANCE_IMAGE_DIR=${GLANCE_IMAGE_DIR:=$DATA_DIR/glance/images}
|
||||
GLANCE_LOCK_DIR=${GLANCE_LOCK_DIR:=$DATA_DIR/glance/locks}
|
||||
GLANCE_STAGING_DIR=${GLANCE_MULTISTORE_FILE_IMAGE_DIR:=$DATA_DIR/os_glance_staging_store}
|
||||
GLANCE_TASKS_DIR=${GLANCE_MULTISTORE_FILE_IMAGE_DIR:=$DATA_DIR/os_glance_tasks_store}
|
||||
|
||||
GLANCE_CONF_DIR=${GLANCE_CONF_DIR:-/etc/glance}
|
||||
GLANCE_METADEF_DIR=$GLANCE_CONF_DIR/metadefs
|
||||
@ -97,6 +117,18 @@ function is_glance_enabled {
|
||||
function cleanup_glance {
|
||||
# delete image files (glance)
|
||||
sudo rm -rf $GLANCE_CACHE_DIR $GLANCE_IMAGE_DIR
|
||||
|
||||
# Cleanup multiple stores directories
|
||||
if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "True" ]]; then
|
||||
local store file_dir
|
||||
for store in $(echo $GLANCE_MULTIPLE_FILE_STORES | tr "," "\n"); do
|
||||
file_dir="${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/${store}/"
|
||||
sudo rm -rf $file_dir
|
||||
done
|
||||
|
||||
# Cleanup reserved stores directories
|
||||
sudo rm -rf $GLANCE_STAGING_DIR $GLANCE_TASKS_DIR
|
||||
fi
|
||||
}
|
||||
|
||||
# configure_glance() - Set config files, create data dirs, etc
|
||||
@ -117,6 +149,16 @@ function configure_glance {
|
||||
iniset_rpc_backend glance $GLANCE_REGISTRY_CONF
|
||||
iniset $GLANCE_REGISTRY_CONF DEFAULT graceful_shutdown_timeout "$SERVICE_GRACEFUL_SHUTDOWN_TIMEOUT"
|
||||
|
||||
# Configure multiple stores
|
||||
if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "True" ]]; then
|
||||
local store enabled_backends
|
||||
enabled_backends=""
|
||||
for store in $(echo $GLANCE_MULTIPLE_FILE_STORES | tr "," "\n"); do
|
||||
enabled_backends+="${store}:file,"
|
||||
done
|
||||
iniset $GLANCE_API_CONF DEFAULT enabled_backends ${enabled_backends::-1}
|
||||
fi
|
||||
|
||||
# Set non-default configuration options for the API server
|
||||
iniset $GLANCE_API_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
||||
iniset $GLANCE_API_CONF database connection $dburl
|
||||
@ -141,8 +183,21 @@ function configure_glance {
|
||||
iniset $GLANCE_API_CONF DEFAULT enable_v1_api False
|
||||
fi
|
||||
|
||||
# Glance multiple store Store specific configs
|
||||
if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "True" ]]; then
|
||||
iniset $GLANCE_API_CONF glance_store default_backend $GLANCE_DEFAULT_BACKEND
|
||||
local store
|
||||
for store in $(echo $GLANCE_MULTIPLE_FILE_STORES | tr "," "\n"); do
|
||||
iniset $GLANCE_API_CONF $store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/${store}/"
|
||||
done
|
||||
|
||||
# Glance configure reserved stores
|
||||
iniset $GLANCE_API_CONF os_glance_staging_store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/os_glance_staging_store/"
|
||||
iniset $GLANCE_API_CONF os_glance_tasks_store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/os_glance_tasks_store/"
|
||||
else
|
||||
# Store specific configs
|
||||
iniset $GLANCE_API_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
|
||||
fi
|
||||
iniset $GLANCE_API_CONF DEFAULT registry_host $(ipv6_unquote $GLANCE_SERVICE_HOST)
|
||||
|
||||
# CORS feature support - to allow calls from Horizon by default
|
||||
@ -152,6 +207,7 @@ function configure_glance {
|
||||
iniset $GLANCE_API_CONF cors allowed_origin "http://$SERVICE_HOST"
|
||||
fi
|
||||
|
||||
# No multiple stores for swift yet
|
||||
# Store the images in swift if enabled.
|
||||
if is_service_enabled s-proxy; then
|
||||
iniset $GLANCE_API_CONF glance_store default_store swift
|
||||
|
Loading…
x
Reference in New Issue
Block a user