Add devstack plugin

Change-Id: If5f67261448434704352583bc02e74bc61ec7a13
This commit is contained in:
Jaromir Wysoglad 2025-04-24 04:34:42 -04:00 committed by Jaromír Wysoglad
parent ce7fe20d74
commit 144f9094ea
3 changed files with 168 additions and 0 deletions

25
devstack/README.rst Normal file
View File

@ -0,0 +1,25 @@
=========================
Enabling Aetos in DevStack
=========================
1. Download DevStack::
git clone https://opendev.org/openstack/devstack.git
cd devstack
2. Add this repo as an external repository in ``local.conf`` file::
[[local|localrc]]
enable_plugin aetos https://opendev.org/openstack/aetos
To use stable branches, make sure devstack is on that branch, and specify
the branch name to enable_plugin, for example::
enable_plugin aetos https://opendev.org/openstack/aetos stable/2025.1
There are some options, defined in
``aetos/devstack/settings``, they can be used to configure the installation
of Aetos. If you don't want to use their default value, you can set a new
one in ``local.conf``.
3. Run ``stack.sh``.

130
devstack/plugin.sh Normal file
View File

@ -0,0 +1,130 @@
# 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

13
devstack/settings Normal file
View File

@ -0,0 +1,13 @@
# Aetos service
enable_service aetos
# Default directories
AETOS_DIR=$DEST/aetos
AETOS_CONF_DIR=/etc/aetos
AETOS_CONF=$AETOS_CONF_DIR/aetos.conf
AETOS_UWSGI_CONF=$AETOS_CONF_DIR/aetos-uwsgi.ini
AETOS_UWSGI=aetos.wsgi.api:application
# Aetos connection info.
AETOS_SERVICE_PROTOCOL=http
AETOS_SERVICE_HOST=${AETOS_SERVICE_HOST:-$SERVICE_HOST}