aece9ff9ef
When the tls-proxy service is enabled then a separate set of ports is used internally vs externally. The services listen on the internal port and a proxy (stud) listen on the "standard" port and forward requests to the internal port. An incorrect environment variable was being used to set the internal port in the sahara configuration so it wasn't listening on the correct port, causing stack.sh to fail because it thought the service wasn't up (at least not on the right port). Change-Id: I3384039392be786d3c189f3e4f84e069ddaf4339 Closes-Bug: #1458984
260 lines
8.3 KiB
Bash
260 lines
8.3 KiB
Bash
#!/bin/bash
|
|
#
|
|
# lib/sahara
|
|
|
|
# Dependencies:
|
|
# ``functions`` file
|
|
# ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined
|
|
|
|
# ``stack.sh`` calls the entry points in this order:
|
|
#
|
|
# install_sahara
|
|
# install_python_saharaclient
|
|
# configure_sahara
|
|
# sahara_register_images
|
|
# start_sahara
|
|
# stop_sahara
|
|
# cleanup_sahara
|
|
|
|
# Save trace setting
|
|
XTRACE=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
|
|
# Defaults
|
|
# --------
|
|
|
|
# Set up default repos
|
|
|
|
# Set up default directories
|
|
GITDIR["python-saharaclient"]=$DEST/python-saharaclient
|
|
SAHARA_DIR=$DEST/sahara
|
|
|
|
SAHARA_CONF_DIR=${SAHARA_CONF_DIR:-/etc/sahara}
|
|
SAHARA_CONF_FILE=${SAHARA_CONF_DIR}/sahara.conf
|
|
|
|
if is_ssl_enabled_service "sahara" || is_service_enabled tls-proxy; then
|
|
SAHARA_SERVICE_PROTOCOL="https"
|
|
fi
|
|
SAHARA_SERVICE_HOST=${SAHARA_SERVICE_HOST:-$SERVICE_HOST}
|
|
SAHARA_SERVICE_PORT=${SAHARA_SERVICE_PORT:-8386}
|
|
SAHARA_SERVICE_PORT_INT=${SAHARA_SERVICE_PORT_INT:-18386}
|
|
SAHARA_SERVICE_PROTOCOL=${SAHARA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
|
|
|
|
SAHARA_AUTH_CACHE_DIR=${SAHARA_AUTH_CACHE_DIR:-/var/cache/sahara}
|
|
|
|
SAHARA_ENABLED_PLUGINS=${SAHARA_ENABLED_PLUGINS:-vanilla,hdp,cdh,spark,fake}
|
|
|
|
# Support entry points installation of console scripts
|
|
if [[ -d $SAHARA_DIR/bin ]]; then
|
|
SAHARA_BIN_DIR=$SAHARA_DIR/bin
|
|
else
|
|
SAHARA_BIN_DIR=$(get_python_exec_prefix)
|
|
fi
|
|
|
|
# Tell Tempest this project is present
|
|
TEMPEST_SERVICES+=,sahara
|
|
|
|
# Functions
|
|
# ---------
|
|
|
|
# create_sahara_accounts() - Set up common required sahara accounts
|
|
#
|
|
# Tenant User Roles
|
|
# ------------------------------
|
|
# service sahara admin
|
|
function create_sahara_accounts {
|
|
|
|
create_service_user "sahara"
|
|
|
|
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
|
|
|
# TODO: remove "data_processing" service when #1356053 will be fixed
|
|
local sahara_service_old=$(openstack service create \
|
|
"data_processing" \
|
|
--name "sahara" \
|
|
--description "Sahara Data Processing" \
|
|
-f value -c id
|
|
)
|
|
local sahara_service_new=$(openstack service create \
|
|
"data-processing" \
|
|
--name "sahara" \
|
|
--description "Sahara Data Processing" \
|
|
-f value -c id
|
|
)
|
|
get_or_create_endpoint $sahara_service_old \
|
|
"$REGION_NAME" \
|
|
"$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
|
|
"$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
|
|
"$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s"
|
|
get_or_create_endpoint $sahara_service_new \
|
|
"$REGION_NAME" \
|
|
"$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
|
|
"$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
|
|
"$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s"
|
|
fi
|
|
}
|
|
|
|
# cleanup_sahara() - Remove residual data files, anything left over from
|
|
# previous runs that would need to clean up.
|
|
function cleanup_sahara {
|
|
|
|
# Cleanup auth cache dir
|
|
sudo rm -rf $SAHARA_AUTH_CACHE_DIR
|
|
}
|
|
|
|
# configure_sahara() - Set config files, create data dirs, etc
|
|
function configure_sahara {
|
|
sudo install -d -o $STACK_USER $SAHARA_CONF_DIR
|
|
|
|
if [[ -f $SAHARA_DIR/etc/sahara/policy.json ]]; then
|
|
cp -p $SAHARA_DIR/etc/sahara/policy.json $SAHARA_CONF_DIR
|
|
fi
|
|
|
|
# Create auth cache dir
|
|
sudo install -d -o $STACK_USER -m 700 $SAHARA_AUTH_CACHE_DIR
|
|
rm -rf $SAHARA_AUTH_CACHE_DIR/*
|
|
|
|
configure_auth_token_middleware $SAHARA_CONF_FILE sahara $SAHARA_AUTH_CACHE_DIR
|
|
|
|
iniset_rpc_backend sahara $SAHARA_CONF_FILE DEFAULT
|
|
|
|
# Set configuration to send notifications
|
|
|
|
if is_service_enabled ceilometer; then
|
|
iniset $SAHARA_CONF_FILE DEFAULT enable_notifications "true"
|
|
iniset $SAHARA_CONF_FILE DEFAULT notification_driver "messaging"
|
|
fi
|
|
|
|
iniset $SAHARA_CONF_FILE DEFAULT verbose True
|
|
iniset $SAHARA_CONF_FILE DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
|
|
|
iniset $SAHARA_CONF_FILE DEFAULT plugins $SAHARA_ENABLED_PLUGINS
|
|
|
|
iniset $SAHARA_CONF_FILE database connection `database_connection_url sahara`
|
|
|
|
if is_service_enabled neutron; then
|
|
iniset $SAHARA_CONF_FILE DEFAULT use_neutron true
|
|
|
|
if is_ssl_enabled_service "neutron" || is_service_enabled tls-proxy; then
|
|
iniset $SAHARA_CONF_FILE neutron ca_file $SSL_BUNDLE_FILE
|
|
fi
|
|
else
|
|
iniset $SAHARA_CONF_FILE DEFAULT use_neutron false
|
|
fi
|
|
|
|
if is_service_enabled heat; then
|
|
iniset $SAHARA_CONF_FILE DEFAULT infrastructure_engine heat
|
|
|
|
if is_ssl_enabled_service "heat" || is_service_enabled tls-proxy; then
|
|
iniset $SAHARA_CONF_FILE heat ca_file $SSL_BUNDLE_FILE
|
|
fi
|
|
else
|
|
iniset $SAHARA_CONF_FILE DEFAULT infrastructure_engine direct
|
|
fi
|
|
|
|
if is_ssl_enabled_service "cinder" || is_service_enabled tls-proxy; then
|
|
iniset $SAHARA_CONF_FILE cinder ca_file $SSL_BUNDLE_FILE
|
|
fi
|
|
|
|
if is_ssl_enabled_service "nova" || is_service_enabled tls-proxy; then
|
|
iniset $SAHARA_CONF_FILE nova ca_file $SSL_BUNDLE_FILE
|
|
fi
|
|
|
|
if is_ssl_enabled_service "swift" || is_service_enabled tls-proxy; then
|
|
iniset $SAHARA_CONF_FILE swift ca_file $SSL_BUNDLE_FILE
|
|
fi
|
|
|
|
if is_ssl_enabled_service "key" || is_service_enabled tls-proxy; then
|
|
iniset $SAHARA_CONF_FILE keystone ca_file $SSL_BUNDLE_FILE
|
|
fi
|
|
|
|
# Register SSL certificates if provided
|
|
if is_ssl_enabled_service sahara; then
|
|
ensure_certificates SAHARA
|
|
|
|
iniset $SAHARA_CONF_FILE ssl cert_file "$SAHARA_SSL_CERT"
|
|
iniset $SAHARA_CONF_FILE ssl key_file "$SAHARA_SSL_KEY"
|
|
fi
|
|
|
|
iniset $SAHARA_CONF_FILE DEFAULT use_syslog $SYSLOG
|
|
|
|
# Format logging
|
|
if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ]; then
|
|
setup_colorized_logging $SAHARA_CONF_FILE DEFAULT
|
|
fi
|
|
|
|
if is_service_enabled tls-proxy; then
|
|
# Set the service port for a proxy to take the original
|
|
iniset $SAHARA_CONF_FILE DEFAULT port $SAHARA_SERVICE_PORT_INT
|
|
fi
|
|
|
|
recreate_database sahara
|
|
$SAHARA_BIN_DIR/sahara-db-manage --config-file $SAHARA_CONF_FILE upgrade head
|
|
}
|
|
|
|
# install_sahara() - Collect source and prepare
|
|
function install_sahara {
|
|
git_clone $SAHARA_REPO $SAHARA_DIR $SAHARA_BRANCH
|
|
setup_develop $SAHARA_DIR
|
|
}
|
|
|
|
# install_python_saharaclient() - Collect source and prepare
|
|
function install_python_saharaclient {
|
|
if use_library_from_git "python-saharaclient"; then
|
|
git_clone_by_name "python-saharaclient"
|
|
setup_dev_lib "python-saharaclient"
|
|
fi
|
|
}
|
|
|
|
# sahara_register_images() - Registers images in sahara image registry
|
|
function sahara_register_images {
|
|
if is_service_enabled heat && [[ ! -z "$HEAT_CFN_IMAGE_URL" ]]; then
|
|
# Register heat image for Fake plugin
|
|
local fake_plugin_properties="--property _sahara_tag_0.1=True"
|
|
fake_plugin_properties+=" --property _sahara_tag_fake=True"
|
|
fake_plugin_properties+=" --property _sahara_username=fedora"
|
|
openstack --os-url $GLANCE_SERVICE_PROTOCOL://$GLANCE_HOSTPORT image set $(basename "$HEAT_CFN_IMAGE_URL" ".qcow2") $fake_plugin_properties
|
|
fi
|
|
}
|
|
|
|
# start_sahara() - Start running processes, including screen
|
|
function start_sahara {
|
|
local service_port=$SAHARA_SERVICE_PORT
|
|
local service_protocol=$SAHARA_SERVICE_PROTOCOL
|
|
if is_service_enabled tls-proxy; then
|
|
service_port=$SAHARA_SERVICE_PORT_INT
|
|
service_protocol="http"
|
|
fi
|
|
|
|
run_process sahara "$SAHARA_BIN_DIR/sahara-all --config-file $SAHARA_CONF_FILE"
|
|
run_process sahara-api "$SAHARA_BIN_DIR/sahara-api --config-file $SAHARA_CONF_FILE"
|
|
run_process sahara-eng "$SAHARA_BIN_DIR/sahara-engine --config-file $SAHARA_CONF_FILE"
|
|
|
|
echo "Waiting for Sahara to start..."
|
|
if ! wait_for_service $SERVICE_TIMEOUT $service_protocol://$SAHARA_SERVICE_HOST:$service_port; then
|
|
die $LINENO "Sahara did not start"
|
|
fi
|
|
|
|
# Start proxies if enabled
|
|
if is_service_enabled tls-proxy; then
|
|
start_tls_proxy '*' $SAHARA_SERVICE_PORT $SAHARA_SERVICE_HOST $SAHARA_SERVICE_PORT_INT &
|
|
fi
|
|
}
|
|
|
|
# stop_sahara() - Stop running processes
|
|
function stop_sahara {
|
|
# Kill the Sahara screen windows
|
|
stop_process sahara
|
|
stop_process sahara-api
|
|
stop_process sahara-eng
|
|
}
|
|
|
|
|
|
# Restore xtrace
|
|
$XTRACE
|
|
|
|
# Local variables:
|
|
# mode: shell-script
|
|
# End:
|