aetos/devstack/plugin.sh
Jaromir Wysoglad 144f9094ea Add devstack plugin
Change-Id: If5f67261448434704352583bc02e74bc61ec7a13
2025-04-25 06:27:32 +00:00

131 lines
3.8 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" "prometheus" "OpenStack Aetos Service"
get_or_create_endpoint 'prometheus' "$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
iniset $AETOS_CONF service_credentials auth_type password
iniset $AETOS_CONF service_credentials username aetos
iniset $AETOS_CONF service_credentials user_domain_id default
iniset $AETOS_CONF service_credentials project_domain_id default
iniset $AETOS_CONF service_credentials password $SERVICE_PASSWORD
iniset $AETOS_CONF service_credentials project_name $SERVICE_PROJECT_NAME
iniset $AETOS_CONF service_credentials region_name $REGION_NAME
iniset $AETOS_CONF service_credentials auth_url $KEYSTONE_SERVICE_URI
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
pip_install uwsgi
}
# start_aetos() - Start running processes, including screen
function start_aetos {
run_process aetos "$AETOS_BIN_DIR/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