grenade/upgrade-glance

86 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# ``upgrade-glance``
# Keep track of the grenade directory
GRENADE_DIR=$(cd $(dirname "$0") && pwd)
# Import common functions
source $GRENADE_DIR/functions
# Determine what system we are running on. This provides ``os_VENDOR``,
# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
# and ``DISTRO``
GetDistro
# Source params
source $GRENADE_DIR/grenaderc
# For debugging
set -o xtrace
# Upgrade Images
# ==============
# Based on http://bcwaldon.cc/2012/09/05/glance-essex-to-folsom-upgrade.html
WORK_GLANCECLIENT_DIR=$START_DIR/python-glanceclient
WORK_GLANCE_DIR=$START_DIR/glance
GLANCE_CONF_DIR=${GLANCE_CONF_DIR:-/etc/glance}
GLANCE_REGISTRY_CONF=${GLANCE_REGISTRY_CONF:-$GLANCE_CONF_DIR/glance-registry.conf}
GLANCE_API_CONF=${GLANCE_API_CONF:-$GLANCE_CONF_DIR/glance-api.conf}
GLANCE_REGISTRY_PASTE_INI=${GLANCE_REGISTRY_PASTE_INI:-$GLANCE_CONF_DIR/glance-registry-paste.ini}
GLANCE_API_PASTE_INI=${GLANCE_API_PASTE_INI:-$GLANCE_CONF_DIR/glance-api-paste.ini}
# Duplicate some setup bits from trunk DevStack
(cd $DEVSTACK_FINAL_DIR; \
DEST=$START_DIR; \
source ./stackrc; \
# install_glance()
RECLONE=yes; \
git_clone $GLANCECLIENT_REPO $WORK_GLANCECLIENT_DIR $GLANCECLIENT_BRANCH; \
git_clone $GLANCE_REPO $WORK_GLANCE_DIR $GLANCE_BRANCH; \
# configure_glance()
setup_develop $WORK_GLANCECLIENT_DIR; \
setup_develop $WORK_GLANCE_DIR; \
)
# Save original files and prepare to upgrade conf files
[[ -r $GLANCE_REGISTRY_CONF.$START_RELEASE ]] || \
cp -p $GLANCE_REGISTRY_CONF $GLANCE_REGISTRY_CONF.$START_RELEASE
[[ -r $GLANCE_API_CONF.$START_RELEASE ]] || \
cp -p $GLANCE_API_CONF $GLANCE_API_CONF.$START_RELEASE
[[ -r $GLANCE_REGISTRY_PASTE_INI.$START_RELEASE ]] || \
cp -p $GLANCE_REGISTRY_PASTE_INI $GLANCE_REGISTRY_PASTE_INI.$START_RELEASE
cp $WORK_GLANCE_DIR/etc/glance-registry-paste.ini $GLANCE_REGISTRY_PASTE_INI
[[ -r $GLANCE_API_PASTE_INI.$START_RELEASE ]] || \
cp -p $GLANCE_API_PASTE_INI $GLANCE_API_PASTE_INI.$START_RELEASE
cp $WORK_GLANCE_DIR/etc/glance-api-paste.ini $GLANCE_API_PASTE_INI
# Migrate the auth info from paste to config
echo -e "\n[keystone_authtoken]" >>$GLANCE_REGISTRY_CONF
echo -e "\n[keystone_authtoken]" >>$GLANCE_API_CONF
for key in auth_host auth_port auth_protocol admin_tenant_name admin_user admin_password; do
iniset $GLANCE_REGISTRY_CONF keystone_authtoken $key $(iniget $GLANCE_REGISTRY_PASTE_INI.$START_RELEASE filter:authtoken $key)
iniset $GLANCE_API_CONF keystone_authtoken $key $(iniget $GLANCE_API_PASTE_INI.$START_RELEASE filter:authtoken $key)
done
# Copy glance-registry sql config to glance-api to enable v2 API
iniset $GLANCE_API_CONF DEFAULT enable_v2_api true
for key in sql_connection sql_idle_timeout sql_max_retries sql_retry_interval db_auto_create; do
VAL=$(iniget $GLANCE_REGISTRY_CONF DEFAULT $key)
[[ -n "$VAL" ]] && iniset $GLANCE_API_CONF DEFAULT $key $VAL
done
# Migrate the database
glance-manage db_sync
echo "glance-registry --config-file=$GLANCE_REGISTRY_CONF"
echo "glance-api --config-file=$GLANCE_API_CONF"