# 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} MURANO_COMMON_REPO=${MURANO_COMMON_REPO:-${GIT_BASE}/stackforge/murano-common.git} MURANO_COMMON_DIR=$DEST/murano-common # 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} # 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() { 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 \ --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/v1" \ --adminurl "$MURANO_SERVICE_PROTOCOL://$MURANO_SERVICE_HOST:$MURANO_SERVICE_PORT/v1" \ --internalurl "$MURANO_SERVICE_PROTOCOL://$MURANO_SERVICE_HOST:$MURANO_SERVICE_PORT/v1" 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 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 # configure the database. iniset $MURANO_CONF_FILE database connection `database_connection_url murano` } # init_murano() - Initialize databases, etc. function init_murano() { # (re)create Murano database recreate_database murano utf8 # TODO(ruhe): run DB migration script. it doesn't exist yet!!! # $MURANO_BIN_DIR/murano-db-manage --config-file $MURANO_CONF_FILE upgrade head } # install_murano() - Collect source and prepare function install_murano() { git_clone $MURANO_REPO $MURANO_DIR $MURANO_BRANCH setup_develop $MURANO_DIR } # 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" } # 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: