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
    echo_summary 
"Running resource phase: ``$phase``"
    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 
{
    local settings_file=$(caller | awk 
'{print $2}')
    local where=$1
    local path=$(localrc_path 
$where)
    shift
    echo "Adding settings to $where at $path"
    echo "# added by $settings_file" >> 
$path
    echo "$@" >> 
$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