插件

<stdin> - OpenStack 文档

版权所有 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

树内插件

外部插件

如果没有需要执行的操作则短路

加载所有已知的设置

反向迭代,基于理论上应该以相反的顺序停止服务

我们处于哪个资源阶段

如果我们将不会执行此级别的验证,则提前退出。

注意(sdague):我们可能需要以不同的方式设置 topdir?

初始化 grenade_db 并确保每次运行它都是空白的

手榴弹的外部插件接口

以下允许我们将 PLUGIN_DIR 设置为 gate 到 zuul 检出位置。

注意(sdague):我们故意与 devstack 命名空间冲突,以重用 devstack 架构。我不认为这会给我们带来麻烦,但可能会。所以这里有龙,或者至少是来源不明的小型凶猛蜥蜴。

如果没有需要执行的操作则短路

这允许我们稍后暴露它