lib/sahara
e263c82e
 #!/bin/bash
 #
7ff8443e
 # lib/sahara
 
 # Dependencies:
 # ``functions`` file
 # ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined
 
 # ``stack.sh`` calls the entry points in this order:
 #
 # install_sahara
a90898d9
 # install_python_saharaclient
7ff8443e
 # configure_sahara
b3130482
 # sahara_register_images
7ff8443e
 # start_sahara
 # stop_sahara
 # cleanup_sahara
 
 # Save trace setting
 XTRACE=$(set +o | grep xtrace)
 set +o xtrace
 
 
 # Defaults
 # --------
 
 # Set up default repos
a90898d9
 
7ff8443e
 # Set up default directories
ee5ae7b9
 GITDIR["python-saharaclient"]=$DEST/python-saharaclient
7ff8443e
 SAHARA_DIR=$DEST/sahara
a90898d9
 
7ff8443e
 SAHARA_CONF_DIR=${SAHARA_CONF_DIR:-/etc/sahara}
 SAHARA_CONF_FILE=${SAHARA_CONF_DIR}/sahara.conf
 
 SAHARA_SERVICE_HOST=${SAHARA_SERVICE_HOST:-$SERVICE_HOST}
 SAHARA_SERVICE_PORT=${SAHARA_SERVICE_PORT:-8386}
 SAHARA_SERVICE_PROTOCOL=${SAHARA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
 
 SAHARA_AUTH_CACHE_DIR=${SAHARA_AUTH_CACHE_DIR:-/var/cache/sahara}
 
10f41613
 SAHARA_ENABLED_PLUGINS=${SAHARA_ENABLED_PLUGINS:-vanilla,hdp,fake}
 
7ff8443e
 # 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 {
 
16ef9760
     local service_tenant=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
     local admin_role=$(openstack role list | awk "/ admin / { print \$2 }")
7ff8443e
 
16ef9760
     local sahara_user=$(get_or_create_user "sahara" \
         "$SERVICE_PASSWORD" $service_tenant)
     get_or_add_user_role $admin_role $sahara_user $service_tenant
7ff8443e
 
     if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
0abde393
 
16ef9760
         local sahara_service=$(get_or_create_service "sahara" \
0abde393
             "data_processing" "Sahara Data Processing")
16ef9760
         get_or_create_endpoint $sahara_service \
0abde393
             "$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"
7ff8443e
     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 {
 
     if [[ ! -d $SAHARA_CONF_DIR ]]; then
         sudo mkdir -p $SAHARA_CONF_DIR
     fi
     sudo chown $STACK_USER $SAHARA_CONF_DIR
 
627ca74b
     if [[ -f $SAHARA_DIR/etc/sahara/policy.json ]]; then
         cp -p $SAHARA_DIR/etc/sahara/policy.json $SAHARA_CONF_DIR
     fi
 
7ff8443e
     # Copy over sahara configuration file and configure common parameters.
51ebda6c
     cp $SAHARA_DIR/etc/sahara/sahara.conf.sample $SAHARA_CONF_FILE
7ff8443e
 
     # Create auth cache dir
     sudo mkdir -p $SAHARA_AUTH_CACHE_DIR
     sudo chown $STACK_USER $SAHARA_AUTH_CACHE_DIR
28d4392d
     sudo chmod 700 $SAHARA_AUTH_CACHE_DIR
7ff8443e
     rm -rf $SAHARA_AUTH_CACHE_DIR/*
 
0595237e
     configure_auth_token_middleware $SAHARA_CONF_FILE sahara $SAHARA_AUTH_CACHE_DIR
7ff8443e
 
e50fcb12
     # 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"
         iniset_rpc_backend sahara $SAHARA_CONF_FILE DEFAULT
     fi
 
3cd59e12
     iniset $SAHARA_CONF_FILE DEFAULT verbose True
     iniset $SAHARA_CONF_FILE DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
7ff8443e
 
10f41613
     iniset $SAHARA_CONF_FILE DEFAULT plugins $SAHARA_ENABLED_PLUGINS
 
7ff8443e
     iniset $SAHARA_CONF_FILE database connection `database_connection_url sahara`
 
     if is_service_enabled neutron; then
         iniset $SAHARA_CONF_FILE DEFAULT use_neutron true
         iniset $SAHARA_CONF_FILE DEFAULT use_floating_ips true
0943e076
     else
         iniset $SAHARA_CONF_FILE DEFAULT use_neutron false
         iniset $SAHARA_CONF_FILE DEFAULT use_floating_ips false
7ff8443e
     fi
 
     if is_service_enabled heat; then
         iniset $SAHARA_CONF_FILE DEFAULT infrastructure_engine heat
     else
         iniset $SAHARA_CONF_FILE DEFAULT infrastructure_engine direct
     fi
 
     iniset $SAHARA_CONF_FILE DEFAULT use_syslog $SYSLOG
 
b4bef1fd
     # Format logging
     if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ]; then
         setup_colorized_logging $SAHARA_CONF_FILE DEFAULT
     fi
 
157c84b8
     recreate_database sahara
7ff8443e
     $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
 }
 
a90898d9
 # install_python_saharaclient() - Collect source and prepare
 function install_python_saharaclient {
ee5ae7b9
     if use_library_from_git "python-saharaclient"; then
         git_clone_by_name "python-saharaclient"
         setup_dev_lib "python-saharaclient"
     fi
a90898d9
 }
 
b3130482
 # 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
 }
 
7ff8443e
 # start_sahara() - Start running processes, including screen
 function start_sahara {
2f27a0ed
     run_process sahara "$SAHARA_BIN_DIR/sahara-all --config-file $SAHARA_CONF_FILE"
7ff8443e
 }
 
 # stop_sahara() - Stop running processes
 function stop_sahara {
     # Kill the Sahara screen windows
     screen -S $SCREEN_NAME -p sahara -X kill
 }
 
 
 # Restore xtrace
 $XTRACE
 
 # Local variables:
 # mode: shell-script
 # End: