installation of uwsgi from pypi is flaky as the compilation of the uwsgi c module sometimes fails for non determinisic reasons. Devstack already will install uwsgi for us and it will prefer to use the distro package if possible avoiding the need to compile it in the job. this is both faster and more reliable reducing rechecks. Closes-Bug: #2126581 Change-Id: I5048360c698d0c60c1e61f9a1163cfaac3961b6b Signed-off-by: Sean Mooney <work@seanmooney.info>
120 lines
3.3 KiB
Bash
120 lines
3.3 KiB
Bash
# Install and start **Aetos** service in devstack
|
|
#
|
|
# To enable Aetos in devstack add an entry to local.conf that
|
|
# looks like
|
|
#
|
|
# [[local|localrc]]
|
|
# enable_plugin aetos https://opendev.org/openstack/aetos
|
|
|
|
# Support potential entry-points console scripts in VENV or not
|
|
if [[ ${USE_VENV} = True ]]; then
|
|
PROJECT_VENV["aetos"]=${AETOS_DIR}.venv
|
|
AETOS_BIN_DIR=${PROJECT_VENV["aetos"]}/bin
|
|
else
|
|
AETOS_BIN_DIR=$(get_python_exec_prefix)
|
|
fi
|
|
|
|
# Test if any Aetos services are enabled
|
|
# is_aetos_enabled
|
|
function is_aetos_enabled {
|
|
[[ ,${ENABLED_SERVICES} =~ ,"aetos" ]] && return 0
|
|
return 1
|
|
}
|
|
|
|
function aetos_service_url {
|
|
echo "$AETOS_SERVICE_PROTOCOL://$AETOS_SERVICE_HOST/prometheus"
|
|
}
|
|
|
|
# Create aetos related accounts in Keystone
|
|
function _aetos_create_accounts {
|
|
if is_service_enabled aetos; then
|
|
|
|
create_service_user "aetos" "admin"
|
|
|
|
get_or_create_service "aetos" "metric-storage" "OpenStack Aetos Service"
|
|
get_or_create_endpoint 'metric-storage' "$REGION_NAME" "$(aetos_service_url)"
|
|
fi
|
|
}
|
|
|
|
# cleanup_aetos() - Remove residual data files, anything left over
|
|
# from previous runs that a clean run would need to clean up
|
|
function cleanup_aetos {
|
|
remove_uwsgi_config "$AETOS_UWSGI_CONF" "aetos"
|
|
}
|
|
|
|
# Configure Aetos
|
|
function configure_aetos {
|
|
iniset $AETOS_CONF DEFAULT debug "$ENABLE_DEBUG_LOG_LEVEL"
|
|
|
|
# Set up logging
|
|
iniset $AETOS_CONF DEFAULT use_syslog $SYSLOG
|
|
|
|
# Format logging
|
|
setup_logging $AETOS_CONF DEFAULT
|
|
|
|
configure_keystone_authtoken_middleware $AETOS_CONF aetos
|
|
|
|
# iniset creates these files when it's called if they don't exist.
|
|
write_uwsgi_config "$AETOS_UWSGI_CONF" "$AETOS_UWSGI" "/prometheus" "" "aetos"
|
|
}
|
|
|
|
# init_aetos() - Initialize etc.
|
|
function init_aetos {
|
|
# Get aetos keystone settings in place
|
|
_aetos_create_accounts
|
|
}
|
|
|
|
# Install Aetos.
|
|
function install_aetos {
|
|
setup_develop $AETOS_DIR $AETOS_BACKEND
|
|
sudo install -d -o $STACK_USER -m 755 $AETOS_CONF_DIR
|
|
}
|
|
|
|
# start_aetos() - Start running processes, including screen
|
|
function start_aetos {
|
|
run_process aetos "$(which uwsgi) --ini $AETOS_UWSGI_CONF"
|
|
}
|
|
|
|
# configure_tempest_for_aetos()
|
|
function configure_tempest_for_aetos {
|
|
if is_service_enabled tempest; then
|
|
iniset $TEMPEST_CONFIG service_available aetos True
|
|
fi
|
|
}
|
|
|
|
# stop_aetos() - Stop running processes
|
|
function stop_aetos {
|
|
stop_process aetos
|
|
}
|
|
|
|
# This is the main for plugin.sh
|
|
if is_service_enabled aetos; then
|
|
if [[ "$1" == "stack" && "$2" == "install" ]]; then
|
|
echo_summary "Installing Aetos"
|
|
# Use stack_install_service here to account for virtualenv
|
|
stack_install_service aetos
|
|
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
|
|
echo_summary "Configuring Aetos"
|
|
configure_aetos
|
|
elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
|
|
echo_summary "Initializing Aetos"
|
|
# Tidy base for aetos
|
|
init_aetos
|
|
# Start the service
|
|
start_aetos
|
|
elif [[ "$1" == "stack" && "$2" == "test-config" ]]; then
|
|
echo_summary "Configuring Tempest for Aetos"
|
|
configure_tempest_for_aetos
|
|
fi
|
|
|
|
if [[ "$1" == "unstack" ]]; then
|
|
echo_summary "Shutting Down Aetos"
|
|
stop_aetos
|
|
fi
|
|
|
|
if [[ "$1" == "clean" ]]; then
|
|
echo_summary "Cleaning Aetos"
|
|
cleanup_aetos
|
|
fi
|
|
fi
|