Added Savanna Project

Added services Savanna, Savanna Dashboard, Savanna python client.

Implements blueprint devstack-savanna-support
Implements blueprint devstack-integration

Change-Id: I8725f59a0cc9aef4817988470313136c56711cf1
This commit is contained in:
Denis Egorenko 2013-10-01 16:03:39 +00:00
parent 67f7da2de2
commit a45a0a0276
4 changed files with 241 additions and 0 deletions

43
exercises/savanna.sh Executable file
View File

@ -0,0 +1,43 @@
#!/usr/bin/env bash
# **savanna.sh**
# Sanity check that Savanna started if enabled
echo "*********************************************************************"
echo "Begin DevStack Exercise: $0"
echo "*********************************************************************"
# This script exits on an error so that errors don't compound and you see
# only the first error that occurred.
set -o errexit
# Print the commands being run so that we can see the command that triggers
# an error. It is also useful for following allowing as the install occurs.
set -o xtrace
# Settings
# ========
# Keep track of the current directory
EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
# Import common functions
source $TOP_DIR/functions
# Import configuration
source $TOP_DIR/openrc
# Import exercise configuration
source $TOP_DIR/exerciserc
is_service_enabled savanna || exit 55
curl http://$SERVICE_HOST:8386/ 2>/dev/null | grep -q 'Auth' || die $LINENO "Savanna API not functioning!"
set +o xtrace
echo "*********************************************************************"
echo "SUCCESS: End DevStack Exercise: $0"
echo "*********************************************************************"

31
extras.d/70-savanna.sh Normal file
View File

@ -0,0 +1,31 @@
# savanna.sh - DevStack extras script to install Savanna
if is_service_enabled savanna; then
if [[ "$1" == "source" ]]; then
# Initial source
source $TOP_DIR/lib/savanna
source $TOP_DIR/lib/savanna-dashboard
elif [[ "$1" == "stack" && "$2" == "install" ]]; then
echo_summary "Installing Savanna"
install_savanna
if is_service_enabled horizon; then
install_savanna_dashboard
fi
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
echo_summary "Configuring Savanna"
configure_savanna
if is_service_enabled horizon; then
configure_savanna_dashboard
fi
elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
echo_summary "Initializing Savanna"
start_savanna
fi
if [[ "$1" == "unstack" ]]; then
stop_savanna
if is_service_enabled horizon; then
cleanup_savanna_dashboard
fi
fi
fi

97
lib/savanna Normal file
View File

@ -0,0 +1,97 @@
# lib/savanna
# Dependencies:
# ``functions`` file
# ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined
# ``ADMIN_{TENANT_NAME|PASSWORD}`` must be defined
# ``stack.sh`` calls the entry points in this order:
#
# install_savanna
# configure_savanna
# start_savanna
# stop_savanna
# Save trace setting
XTRACE=$(set +o | grep xtrace)
set +o xtrace
# Defaults
# --------
# Set up default repos
SAVANNA_REPO=${SAVANNA_REPO:-${GIT_BASE}/openstack/savanna.git}
SAVANNA_BRANCH=${SAVANNA_BRANCH:-master}
# Set up default directories
SAVANNA_DIR=$DEST/savanna
SAVANNA_CONF_DIR=${SAVANNA_CONF_DIR:-/etc/savanna}
SAVANNA_CONF_FILE=savanna.conf
ADMIN_TENANT_NAME=${ADMIN_TENANT_NAME:-admin}
ADMIN_NAME=${ADMIN_NAME:-admin}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-nova}
SAVANNA_DEBUG=${SAVANNA_DEBUG:-True}
# Support entry points installation of console scripts
if [[ -d $SAVANNA_DIR/bin ]]; then
SAVANNA_BIN_DIR=$SAVANNA_DIR/bin
else
SAVANNA_BIN_DIR=$(get_python_exec_prefix)
fi
# Functions
# ---------
# configure_savanna() - Set config files, create data dirs, etc
function configure_savanna() {
if [[ ! -d $SAVANNA_CONF_DIR ]]; then
sudo mkdir -p $SAVANNA_CONF_DIR
fi
sudo chown $STACK_USER $SAVANNA_CONF_DIR
# Copy over savanna configuration file and configure common parameters.
cp $SAVANNA_DIR/etc/savanna/savanna.conf.sample $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE
iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT os_admin_password $ADMIN_PASSWORD
iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT os_admin_username $ADMIN_NAME
iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT os_admin_tenant_name $ADMIN_TENANT_NAME
iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT debug $SAVANNA_DEBUG
recreate_database savanna utf8
iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE database sql_connection `database_connection_url savanna`
inicomment $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE database connection
if is_service_enabled neutron; then
iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT use_neutron true
iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT use_floating_ips true
fi
iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT use_syslog $SYSLOG
}
# install_savanna() - Collect source and prepare
function install_savanna() {
git_clone $SAVANNA_REPO $SAVANNA_DIR $SAVANNA_BRANCH
setup_develop $SAVANNA_DIR
}
# start_savanna() - Start running processes, including screen
function start_savanna() {
screen_it savanna "cd $SAVANNA_DIR && $SAVANNA_BIN_DIR/savanna-api --config-file $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE"
}
# stop_savanna() - Stop running processes
function stop_savanna() {
# Kill the Savanna screen windows
screen -S $SCREEN_NAME -p savanna -X kill
}
# Restore xtrace
$XTRACE
# Local variables:
# mode: shell-script
# End:

70
lib/savanna-dashboard Normal file
View File

@ -0,0 +1,70 @@
# lib/savanna-dashboard
# Dependencies:
# ``functions`` file
# ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined
# ``SERVICE_HOST
# ``stack.sh`` calls the entry points in this order:
#
# install_savanna_dashboard
# configure_savanna_dashboard
# cleanup_savanna_dashboard
# Save trace setting
XTRACE=$(set +o | grep xtrace)
set +o xtrace
source $TOP_DIR/lib/horizon
# Defaults
# --------
# Set up default repos
SAVANNA_DASHBOARD_REPO=${SAVANNA_DASHBOARD_REPO:-${GIT_BASE}/openstack/savanna-dashboard.git}
SAVANNA_DASHBOARD_BRANCH=${SAVANNA_DASHBOARD_BRANCH:-master}
SAVANNA_PYTHONCLIENT_REPO=${SAVANNA_PYTHONCLIENT_REPO:-${GIT_BASE}/openstack/python-savannaclient.git}
SAVANNA_PYTHONCLIENT_BRANCH=${SAVANNA_PYTHONCLIENT_BRANCH:-master}
# Set up default directories
SAVANNA_DASHBOARD_DIR=$DEST/savanna_dashboard
SAVANNA_PYTHONCLIENT_DIR=$DEST/python-savannaclient
# Functions
# ---------
function configure_savanna_dashboard() {
echo -e "SAVANNA_URL = \"http://$SERVICE_HOST:8386/v1.1\"\nAUTO_ASSIGNMENT_ENABLED = False" >> $HORIZON_DIR/openstack_dashboard/local/local_settings.py
echo -e "HORIZON_CONFIG['dashboards'] += ('savanna',)\nINSTALLED_APPS += ('savannadashboard',)" >> $HORIZON_DIR/openstack_dashboard/settings.py
if is_service_enabled neutron; then
echo -e "SAVANNA_USE_NEUTRON = True" >> $HORIZON_DIR/openstack_dashboard/local/local_settings.py
fi
}
# install_savanna_dashboard() - Collect source and prepare
function install_savanna_dashboard() {
install_python_savannaclient
git_clone $SAVANNA_DASHBOARD_REPO $SAVANNA_DASHBOARD_DIR $SAVANNA_DASHBOARD_BRANCH
setup_develop $SAVANNA_DASHBOARD_DIR
}
function install_python_savannaclient() {
git_clone $SAVANNA_PYTHONCLIENT_REPO $SAVANNA_PYTHONCLIENT_DIR $SAVANNA_PYTHONCLIENT_BRANCH
setup_develop $SAVANNA_PYTHONCLIENT_DIR
}
# Cleanup file settings.py from Savanna
function cleanup_savanna_dashboard() {
sed -i '/savanna/d' $HORIZON_DIR/openstack_dashboard/settings.py
}
# Restore xtrace
$XTRACE
# Local variables:
# mode: shell-script
# End: