版权所有 2015 Hewlett-Packard Development Company, L.P.
根据 Apache 许可证 2.0 版(“许可证”)授权;除非符合许可证,否则您不得使用此文件。您可以从以下位置获取许可证的副本:
https://apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,根据许可证分发的软件以“原样”基础分发,不提供任何形式的保证或条件,无论是明示的还是暗示的。请参阅许可证以了解管理许可证下权限和限制的具体语言。
与手榴弹插件相关的函数
以下变量假定由某些函数定义
- 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