Copyright 2015 Hewlett-Packard Development Company, L.P.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
Functions related to grenade plugins
The following variables are assumed to be defined by certain functions:
- GRENADE_DIR
- SAVE_DIR
- UPGRADE_PROJECTS
- PLUGIN_DIR
- BASE_DEVSTACK_DIR
# DIVIDER
#!/bin/bash
GRENADE_DB=$SAVE_DIR/grenade_db.ini
function load_settings
{
# DIVIDER
local in_tree_plugins=$RC_DIR/projects
for dir
in $in_tree_plugins/*
; do
local settings=$dir/settings
if [[ -e
$settings ]]; then
source $settings
fi
done
# DIVIDER
local plugins="${GRENADE_PLUGINS}"
local plugin
# DIVIDER
if [[ -z
$plugins ]]; then
return
fi
echo "Loading plugin settings"
for plugin
in ${plugins//,/ }; do
local dir=${GITDIR[$plugin]}
# DIVIDER
if [[ -f
$dir/devstack/upgrade/settings
]]; then
echo "Loading settings for $plugin from $dir/devstack/upgrade/settings"
source $dir/devstack/upgrade/settings
fi
done
export UPGRADE_PROJECTS
}
function reverse_list
{
local str=""
local reversed=""
for str
in $@; do
reversed="$str $reversed"
done
echo $reversed
}
function shutdown_services
{
local projects=""
local project=""
projects=`reverse_list
"$UPGRADE_PROJECTS"`
echo "Upgrade projects: $projects"
# DIVIDER
for project
in $projects; do
echo "Looking for $project"
local dir=${PLUGIN_DIR[$project]}
if [[ -z
"$dir" ]]; then
die
$LINENO "Couldn't find project '$project' in plugin list"
fi
local shutdown=$dir/shutdown.sh
if [[ -e
$shutdown ]]; then
TOP_DIR=$BASE_DEVSTACK_DIR $shutdown || die
$LINENO "Failed to shutdown $project"
fi
done
}
function resources
{
# DIVIDER
local phase=$1
local side=$2
local project=""
# DIVIDER
if [[ "$VERIFY_RESOURCES" !
= "True" ]]; then
echo "Skipping resource phase ``$phase`` by configuration"
return
fi
local desc=$phase
if [[ -n
$side ]]; then
desc="$phase $side"
fi
echo_summary
"Running resource phase: ``$desc``"
local projects=$UPGRADE_PROJECTS
if [[ $phase == "destroy" ]];then
projects=`reverse_list
"$UPGRADE_PROJECTS"`
fi
for project
in $projects; do
local dir=${PLUGIN_DIR[$project]}
if [[ -z
"$dir" ]]; then
die
$LINENO "Couldn't find project '$project' in plugin list"
fi
local resource=$dir/resources.sh
if [[ -e
$resource ]]; then
# DIVIDER
TOP_DIR=$BASE_DEVSTACK_DIR LOGDIR=$LOGDIR \
$resource $phase $side || die
$LINENO "Failed to run ``$resource $phase $side``"
fi
done
}
# DIVIDER
function init_grenade_db
{
mkdir -p
$SAVE_DIR
echo "" >
$GRENADE_DB
}
function resource_save
{
local project=$1
local key=$2
local value=$3
iniset
$GRENADE_DB $project $key $value
}
function resource_get
{
local project=$1
local key=$2
local value=$(iniget
$GRENADE_DB $project $key)
echo $value
}
# DIVIDER
function enable_grenade_plugin
{
local name=$1
local url=$2
local branch=${3:-$TARGET_DEVSTACK_BRANCH}
# DIVIDER
local plugin_dir=${PLUGIN_DIR:-$STACK_ROOT/plugins}
GRENADE_PLUGINS+=",$name"
# DIVIDER
GITREPO
[$name]=$url
GITDIR
[$name]=$plugin_dir/
$name
GITBRANCH
[$name]=$branch
}
function devstack_localrc
{
if [ "${GRENADE_USE_EXTERNAL_DEVSTACK}" == "True" ]; then
echo "DevStack is configured externally, ignoring \$(devstack_localrc $@)"
return
fi
local settings_file=$(caller | awk
'{print $2}')
local where=$1
local path=$(localrc_path
$where)
shift
echo "Adding settings to $where at $path"
dsconf setlc_raw
$path "# added by $settings_file"
dsconf setlc_raw
$path "$@"
}
function fetch_grenade_plugins
{
local plugins="${GRENADE_PLUGINS}"
local plugin
# DIVIDER
if [[ -z
$plugins ]]; then
return
fi
echo "Fetching Grenade plugins"
for plugin
in ${plugins//,/ }; do
git_clone_by_name
$plugin
done
}
# DIVIDER
if [[ -f
${GRENADE_DIR}/pluginrc
]]; then
source ${GRENADE_DIR}/pluginrc
fi
# DIVIDER