版权 2015 Hewlett-Packard Development Company, L.P.
根据 Apache 许可证 2.0 版(“许可证”)授权;除非符合许可证,否则您不得使用此文件。您可以从以下位置获取许可证的副本:
https://apache.org/licenses/LICENSE-2.0
除非适用法律或书面协议要求,根据许可证分发的软件以“原样”分发,不提供任何形式的保证或条件,无论是明示的还是暗示的。有关许可证下权限和限制的具体语言,请参阅许可证。
functions - Grenade 特定的函数
以下变量假定由某些函数定义
- GRENADE_DIR
- TARGET_DEVSTACK_DIR
- MYSQL_PASSWORD
- SAVE_DIR
# 分隔符 #!/bin/bash # 分隔符 _XTRACE_GRENADE_FUNCTIONS=$(set +o
| grep
xtrace
) set +o
xtrace
# 分隔符 GRENADE_DIR=$(cd $(dirname
"${BASH_SOURCE:-$0}") && pwd) source ${TARGET_DEVSTACK_DIR}/functions
source ${TARGET_DEVSTACK_DIR}/lib/stack
source ${GRENADE_DIR}/inc/upgrade
source ${GRENADE_DIR}/inc/plugin
# 分隔符 function source_quiet
{ XTRACE=$(set +o
| grep
xtrace
) set +o
xtrace
source $@ $XTRACE } # 分隔符 function ping_check_public
{ local ip=$1 local boot_timeout=$2 local expected=${3:-"True"} local check_command="" if [[ "$expected" = "True" ]]; then check_command="while ! ping -c1 -w1 $ip; do sleep 1; done" else check_command="while ping -c1 -w1 $ip; do sleep 1; done" fi if !
timeout
$boot_timeout sh
-c
"$check_command"; then if [[ "$expected" = "True" ]]; then # 分隔符 local fip=$(openstack
floating
ip
list
--floating-ip-address
$ip -f
value
-c
Port
) local server=$(openstack
port
show
$fip -f
value
-c
device_id
) openstack
console
log
show
$server die
$LINENO "[Fail] Couldn't ping server" else die
$LINENO "[Fail] Could ping server" fi fi } # 分隔符 function save_data
{ local release=$1 local dir=$2 echo_summary
"正在转储 $release 数据库" mkdir
-p
$SAVE_DIR local db_type=$( set +o
xtrace
&& source $dir/stackrc
&& echo $DATABASE_TYPE) if [[ "${db_type}" == "mysql" ]]; then save_mysql_dbs
$release $dir else echo_summary
"TODO: 保存 $db_type 数据库的状态" fi } function worlddump
{ local name=$1 if [[ -n
"$name" ]]; then name="-n $name" fi if [[ -x
$TARGET_DEVSTACK_DIR/tools/worlddump.py
]]; then $TARGET_DEVSTACK_DIR/tools/worlddump.py
$name -d
$LOGDIR sleep
1 else echo "警告:尝试 worlddump 但找不到 $TARGET_DEVSTACK_DIR/tools/worlddump.py" fi } # 分隔符 trap exit_trap
EXIT
function exit_trap
{ # 分隔符 local r=$? # 分隔符 set +o
xtrace
# 分隔符 set +o
errexit
if [[ $r -ne
0 ]]; then # 分隔符 local frame=0 while caller $frame; do ((frame++
)); done echo "退出代码:$r" worlddump
fi exit $r } function run_tempest
{ local release_dir
release_dir=$1 cd $release_dir/tempest
# 分隔符 unset TEMPEST_VENV_UPPER_CONSTRAINTS
# 分隔符 TEMPEST_VENV_UPPER_CONSTRAINTS=$(set +o
xtrace
&& source $release_dir/devstack/stackrc
&& echo $TEMPEST_VENV_UPPER_CONSTRAINTS) # 分隔符 if [[ "$TEMPEST_VENV_UPPER_CONSTRAINTS" !
= "master" ]]; then echo "正在使用 $TEMPEST_VENV_UPPER_CONSTRAINTS 约束在 Tempest 虚拟环境中。" # 分隔符 export UPPER_CONSTRAINTS_FILE=$TEMPEST_VENV_UPPER_CONSTRAINTS export TOX_CONSTRAINTS_FILE=$TEMPEST_VENV_UPPER_CONSTRAINTS else # 分隔符 export UPPER_CONSTRAINTS_FILE=https://releases.openstack.org/constraints/upper/master
export TOX_CONSTRAINTS_FILE=https://releases.openstack.org/constraints/upper/master
fi tox
-esmoke
--
--concurrency
=$TEMPEST_CONCURRENCY } FSSH="ssh -v -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" # 分隔符 $_XTRACE_GRENADE_FUNCTIONS # 分隔符