Merge "Update Cirros to 0.5.2"
diff --git a/lib/glance b/lib/glance
index fcf778d..0ef42b0 100644
--- a/lib/glance
+++ b/lib/glance
@@ -131,7 +131,7 @@
# runs that a clean run would need to clean up
function cleanup_glance {
# delete image files (glance)
- sudo rm -rf $GLANCE_CACHE_DIR $GLANCE_IMAGE_DIR
+ sudo rm -rf $GLANCE_CACHE_DIR $GLANCE_IMAGE_DIR $(glance_remote_conf '')
# Cleanup multiple stores directories
if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "True" ]]; then
@@ -361,6 +361,11 @@
if [[ "$GLANCE_STANDALONE" == False ]]; then
write_local_uwsgi_http_config "$GLANCE_UWSGI_CONF" "$GLANCE_UWSGI" "/image"
+ # Grab our uwsgi listen address and use that to fill out our
+ # worker_self_reference_url config
+ iniset $GLANCE_API_CONF DEFAULT worker_self_reference_url \
+ $(awk '-F= ' '/^http-socket/ { print "http://"$2}' \
+ $GLANCE_UWSGI_CONF)
else
write_local_proxy_http_config glance "http://$GLANCE_SERVICE_HOST:$GLANCE_SERVICE_PORT_INT" "/image"
iniset $GLANCE_API_CONF DEFAULT bind_host $GLANCE_SERVICE_LISTEN_ADDRESS
@@ -456,6 +461,64 @@
setup_develop $GLANCE_DIR
}
+# glance_remote_conf() - Return the path to an alternate config file for
+# the remote glance clone
+function glance_remote_conf {
+ echo "$(dirname ${GLANCE_CONF_DIR})/glance-remote/"$(basename "$1")
+}
+
+# start_glance_remote_clone() - Clone the regular glance api worker
+function start_glance_remote_clone {
+ local glance_remote_conf glance_remote_port
+
+ glance_remote_conf_dir=$(glance_remote_conf '')
+ glance_remote_port=$(get_random_port)
+
+ # Clone the existing ready-to-go glance-api setup
+ sudo rm -Rf $glance_remote_conf_dir
+ sudo cp -r "$GLANCE_CONF_DIR" $glance_remote_conf_dir
+ sudo chown $STACK_USER -R $glance_remote_conf_dir
+
+ # Point this worker at different data dirs
+ remote_data="${DATA_DIR}/glance-remote"
+ mkdir -p $remote_data/os_glance_tasks_store \
+ $remote_data/os_glance_staging_store
+ iniset $(glance_remote_conf 'glance-api.conf') os_glance_staging_store \
+ filesystem_store_datadir ${remote_data}/os_glance_staging_store
+ iniset $(glance_remote_conf 'glance-api.conf') os_glance_tasks_store \
+ filesystem_store_datadir ${remote_data}/os_glance_tasks_store
+
+ # Change our uwsgi to our new port
+ sed -ri "s/^(http-socket.*):[0-9]+/\1:$glance_remote_port/" \
+ $(glance_remote_conf $GLANCE_UWSGI_CONF)
+
+ # Update the self-reference url with our new port
+ iniset $(glance_remote_conf $GLANCE_API_CONF) DEFAULT \
+ worker_self_reference_url \
+ $(awk '-F= ' '/^http-socket/ { print "http://"$2 }' \
+ $(glance_remote_conf $GLANCE_UWSGI_CONF))
+
+ # We need to create the systemd service for the clone, but then
+ # change it to include an Environment line to point the WSGI app
+ # at the alternate config directory.
+ write_uwsgi_user_unit_file devstack@g-api-r.service "$(which uwsgi) \
+ --procname-prefix \
+ glance-api-remote \
+ --ini $(glance_remote_conf $GLANCE_UWSGI_CONF)" \
+ "" "$STACK_USER"
+ iniset -sudo ${SYSTEMD_DIR}/devstack@g-api-r.service \
+ "Service" "Environment" "OS_GLANCE_CONFIG_DIR=$glance_remote_conf_dir"
+
+ # Reload and restart with the new config
+ $SYSTEMCTL daemon-reload
+ $SYSTEMCTL restart devstack@g-api-r
+
+ get_or_create_service glance_remote image_remote "Alternate glance"
+ get_or_create_endpoint image_remote $REGION_NAME \
+ $(awk '-F= ' '/^http-socket/ { print "http://"$2 }' \
+ $(glance_remote_conf $GLANCE_UWSGI_CONF))
+}
+
# start_glance() - Start running processes
function start_glance {
local service_protocol=$GLANCE_SERVICE_PROTOCOL
@@ -471,6 +534,11 @@
run_process g-api "$GLANCE_BIN_DIR/glance-api --config-dir=$GLANCE_CONF_DIR"
fi
+ if is_service_enabled g-api-r; then
+ echo "Starting the g-api-r clone service..."
+ start_glance_remote_clone
+ fi
+
echo "Waiting for g-api ($GLANCE_SERVICE_HOST) to start..."
if ! wait_for_service $SERVICE_TIMEOUT $GLANCE_URL; then
die $LINENO "g-api did not start"
@@ -480,6 +548,7 @@
# stop_glance() - Stop running processes
function stop_glance {
stop_process g-api
+ stop_process g-api-r
}
# Restore xtrace
diff --git a/lib/tempest b/lib/tempest
index 9ccd19b..5de8848 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -111,6 +111,21 @@
echo $size | python3 -c "import math; print(int(math.ceil(float(int(input()) / 1024.0 ** 3))))"
}
+function set_tempest_venv_constraints {
+ local tmp_c
+ tmp_c=$1
+ if [[ $TEMPEST_VENV_UPPER_CONSTRAINTS == "master" ]]; then
+ (cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > $tmp_c
+ else
+ echo "Using $TEMPEST_VENV_UPPER_CONSTRAINTS constraints in Tempest virtual env."
+ cat $TEMPEST_VENV_UPPER_CONSTRAINTS > $tmp_c
+ # NOTE: setting both tox env var and once Tempest start using new var
+ # TOX_CONSTRAINTS_FILE then we can remove the old one.
+ export UPPER_CONSTRAINTS_FILE=$TEMPEST_VENV_UPPER_CONSTRAINTS
+ export TOX_CONSTRAINTS_FILE=$TEMPEST_VENV_UPPER_CONSTRAINTS
+ fi
+}
+
# configure_tempest() - Set config files, create data dirs, etc
function configure_tempest {
if [[ "$INSTALL_TEMPEST" == "True" ]]; then
@@ -349,6 +364,11 @@
fi
iniset $TEMPEST_CONFIG image-feature-enabled import_image $GLANCE_USE_IMPORT_WORKFLOW
iniset $TEMPEST_CONFIG image-feature-enabled os_glance_reserved True
+ if is_service_enabled g-api-r; then
+ iniset $TEMPEST_CONFIG image alternate_image_endpoint \
+ "image_remote"
+ fi
+
# Compute
iniset $TEMPEST_CONFIG compute image_ref $image_uuid
iniset $TEMPEST_CONFIG compute image_ref_alt $image_uuid_alt
@@ -608,10 +628,9 @@
tox -revenv-tempest --notest
fi
- # The requirements might be on a different branch, while tempest needs master requirements.
local tmp_u_c_m
tmp_u_c_m=$(mktemp -t tempest_u_c_m.XXXXXXXXXX)
- (cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > $tmp_u_c_m
+ set_tempest_venv_constraints $tmp_u_c_m
tox -evenv-tempest -- pip install -c $tmp_u_c_m -r requirements.txt
rm -f $tmp_u_c_m
@@ -692,6 +711,10 @@
# TEMPEST_DIR already exist until RECLONE is true.
git checkout $TEMPEST_BRANCH
+ local tmp_u_c_m
+ tmp_u_c_m=$(mktemp -t tempest_u_c_m.XXXXXXXXXX)
+ set_tempest_venv_constraints $tmp_u_c_m
+
tox -r --notest -efull
# TODO: remove the trailing pip constraint when a proper fix
# arrives for bug https://bugs.launchpad.net/devstack/+bug/1906322
@@ -699,8 +722,9 @@
# NOTE(mtreinish) Respect constraints in the tempest full venv, things that
# are using a tox job other than full will not be respecting constraints but
# running pip install -U on tempest requirements
- $TEMPEST_DIR/.tox/tempest/bin/pip install -c $REQUIREMENTS_DIR/upper-constraints.txt -r requirements.txt
+ $TEMPEST_DIR/.tox/tempest/bin/pip install -c $tmp_u_c_m -r requirements.txt
PROJECT_VENV["tempest"]=${TEMPEST_DIR}/.tox/tempest
+ rm -f $tmp_u_c_m
popd
}
@@ -708,10 +732,9 @@
function install_tempest_plugins {
pushd $TEMPEST_DIR
if [[ $TEMPEST_PLUGINS != 0 ]] ; then
- # The requirements might be on a different branch, while tempest & tempest plugins needs master requirements.
local tmp_u_c_m
tmp_u_c_m=$(mktemp -t tempest_u_c_m.XXXXXXXXXX)
- (cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > $tmp_u_c_m
+ set_tempest_venv_constraints $tmp_u_c_m
tox -evenv-tempest -- pip install -c $tmp_u_c_m $TEMPEST_PLUGINS
rm -f $tmp_u_c_m
echo "Checking installed Tempest plugins:"
diff --git a/stackrc b/stackrc
index 1bcc302..d7d070a 100644
--- a/stackrc
+++ b/stackrc
@@ -298,6 +298,7 @@
# Tempest test suite
TEMPEST_REPO=${TEMPEST_REPO:-${GIT_BASE}/openstack/tempest.git}
TEMPEST_BRANCH=${TEMPEST_BRANCH:-$BRANCHLESS_TARGET_BRANCH}
+TEMPEST_VENV_UPPER_CONSTRAINTS=${TEMPEST_VENV_UPPER_CONSTRAINTS:-master}
##############