deb-murano/contrib/devstack/lib/murano
Alexander Tivelkov dfe024d2d3 Removed version prefix from the endpoint urls
The service endpoint being registered in Keystone should not contain the version suffix,
as the different versions of an API should co-exist at the same endpoint

Partial-Bug: #1318794
Closes-Bug: #1320937
Change-Id: I853dfa30d1ad3538fad55826bb498dedae3e14f6
2014-05-22 14:33:39 +04:00

194 lines
6.3 KiB
Plaintext

# lib/murano
# Dependencies:
# ``functions`` file
# ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined
# ``stack.sh`` calls the entry points in this order:
#
# install_murano
# configure_murano
# start_murano
# stop_murano
# Save trace setting
XTRACE=$(set +o | grep xtrace)
set -o xtrace
# Defaults
# --------
# Set up default repos
MURANO_REPO=${MURANO_REPO:-${GIT_BASE}/stackforge/murano-api.git}
MURANO_BRANCH=${MURANO_BRANCH:-master}
# Set up default directories
MURANO_DIR=$DEST/murano-api
MURANO_CONF_DIR=${MURANO_CONF_DIR:-/etc/murano}
MURANO_CONF_FILE=${MURANO_CONF_DIR}/murano-api.conf
MURANO_DEBUG=${MURANO_DEBUG:-True}
MURANO_SERVICE_HOST=${MURANO_SERVICE_HOST:-$SERVICE_HOST}
MURANO_SERVICE_PORT=${MURANO_SERVICE_PORT:-8082}
MURANO_SERVICE_PROTOCOL=${MURANO_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
MURANO_ADMIN_USER=${MURANO_ADMIN_USER:-murano}
# MURANO_RABBIT_VHOST allows to specify a separate virtual host for Murano services.
# This is not required if all OpenStack services are deployed by devstack scripts
# on a single node. In this case '/' virtual host (which is the default) is enough.
# The problem arise when Murano installed in 'devbox' mode, allowing two or more
# devboxes to use one common OpenStack host. In this case it's better devboxes
# use separated virtual hosts, to avoid conflicts between Murano services.
# This couldn't be done using exitsting variables, so that's why this variable was added.
MURANO_RABBIT_VHOST=${MURANO_RABBIT_VHOST:-''}
# Support entry points installation of console scripts
if [[ -d $MURANO_DIR/bin ]]; then
MURANO_BIN_DIR=$MURANO_DIR/bin
else
MURANO_BIN_DIR=$(get_python_exec_prefix)
fi
# create_murano_accounts() - Set up common required murano accounts
#
# Tenant User Roles
# ------------------------------
# service murano admin
function create_murano_accounts() {
if ! is_service_enabled key; then
return
fi
SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
MURANO_USER=$(openstack user create \
$MURANO_ADMIN_USER \
--password "$SERVICE_PASSWORD" \
--project $SERVICE_TENANT \
--email murano@example.com \
| grep " id " | get_field 2)
openstack role add \
$ADMIN_ROLE \
--project $SERVICE_TENANT \
--user $MURANO_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
MURANO_SERVICE=$(openstack service create \
murano \
--type=application_catalog \
--description="Application Catalog" \
| grep " id " | get_field 2)
openstack endpoint create \
$MURANO_SERVICE \
--region RegionOne \
--publicurl "$MURANO_SERVICE_PROTOCOL://$MURANO_SERVICE_HOST:$MURANO_SERVICE_PORT" \
--adminurl "$MURANO_SERVICE_PROTOCOL://$MURANO_SERVICE_HOST:$MURANO_SERVICE_PORT" \
--internalurl "$MURANO_SERVICE_PROTOCOL://$MURANO_SERVICE_HOST:$MURANO_SERVICE_PORT"
fi
}
function mkdir_chown_stack {
if [[ ! -d "$1" ]]; then
sudo mkdir -p "$1"
fi
sudo chown $STACK_USER "$1"
}
# Entry points
# ------------
# configure_murano() - Set config files, create data dirs, etc
function configure_murano {
mkdir_chown_stack "$MURANO_CONF_DIR"
# Copy over Murano configuration file and configure common parameters.
cp $MURANO_DIR/etc/murano/murano-api.conf.sample $MURANO_CONF_FILE
cp $MURANO_DIR/etc/murano/murano-api-paste.ini $MURANO_CONF_DIR
iniset $MURANO_CONF_FILE DEFAULT debug $MURANO_DEBUG
iniset $MURANO_CONF_FILE DEFAULT use_syslog $SYSLOG
# Murano Api Configuration
#-------------------------
# Setup keystone_authtoken section
iniset $MURANO_CONF_FILE keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
iniset $MURANO_CONF_FILE keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
iniset $MURANO_CONF_FILE keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
iniset $MURANO_CONF_FILE keystone_authtoken cafile $KEYSTONE_SSL_CA
iniset $MURANO_CONF_FILE keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
iniset $MURANO_CONF_FILE keystone_authtoken admin_user $MURANO_ADMIN_USER
iniset $MURANO_CONF_FILE keystone_authtoken admin_password $SERVICE_PASSWORD
# configure the rpc service.
iniset_rpc_backend muranoapi $MURANO_CONF_FILE DEFAULT
# TODO(ruhe): get rid of this ugly workaround
inicomment $MURANO_CONF_FILE DEFAULT rpc_backend
# Set non-default rabbit virtual host if required
if [[ -n "$MURANO_RABBIT_VHOST" ]]; then
iniset $MURANO_CONF_FILE DEFAULT rabbit_virtual_host $MURANO_RABBIT_VHOST
fi
# Configure notifications for status information during provisioning
iniset $MURANO_CONF_FILE DEFAULT notification_driver messagingv2
# configure the database.
iniset $MURANO_CONF_FILE database connection `database_connection_url murano`
# Configure keystone auth url
iniset $MURANO_CONF_FILE keystone auth_url "http://${KEYSTONE_AUTH_HOST}:5000/v2.0"
}
# init_murano() - Initialize databases, etc.
function init_murano() {
# (re)create Murano database
recreate_database murano utf8
$MURANO_BIN_DIR/murano-manage --config-file $MURANO_CONF_FILE db-sync
$MURANO_BIN_DIR/murano-manage --config-file $MURANO_CONF_FILE import-package $MURANO_DIR/meta/io.murano
}
# install_murano() - Collect source and prepare
function install_murano() {
git_clone $MURANO_REPO $MURANO_DIR $MURANO_BRANCH
# TODO(ruhe): use setup_develop once Murano requirements match with global-requirement.txt
# both functions (setup_develop and setup_package) are defined at:
# http://git.openstack.org/cgit/openstack-dev/devstack/tree/functions-common
setup_package $MURANO_DIR -e
}
# start_murano() - Start running processes, including screen
function start_murano() {
screen_it murano-api "cd $MURANO_DIR && $MURANO_BIN_DIR/murano-api --config-file $MURANO_CONF_DIR/murano-api.conf"
screen_it murano-engine "cd $MURANO_DIR && $MURANO_BIN_DIR/murano-engine --config-file $MURANO_CONF_DIR/murano-api.conf"
}
# stop_murano() - Stop running processes
function stop_murano() {
# Kill the Murano screen windows
screen -S $SCREEN_NAME -p murano-api -X kill
}
# Restore xtrace
$XTRACE
# Local variables:
# mode: shell-script
# End: