重新调度失败的 Teuthology 任务
Ceph 的 集成测试 可能会因为环境问题(网络不可用、软件包未构建等)而失败。如果七十个任务中有六个失败,可以重新运行这些失败的测试,而不是重新调度整个套件。可以使用 teuthology-suite 的 **–filter** 选项,以及一个以逗号分隔的失败任务描述列表来完成此操作。
任务描述可以从 Web 界面 复制/粘贴,也可以从 paddles json 输出中提取,方法如下:
$ run=loic-2015-03-03_12:46:38-rgw-firefly-backports---basic-multi $ paddles=http://paddles.front.sepia.ceph.com $ eval filter=$(curl --silent $paddles/runs/$run/jobs/?status=fail | jq '.[].description' | \ while read description ; do echo -n $description, ; done | \ sed -e 's/,$//')
其中 **paddles** URL 输出每项任务的 JSON 描述,格式如下:
[ { "os_type": "ubuntu", "nuke_on_error": true, "status": "pass", "failure_reason": null, "success": true, ... "description": "rgw/multifs/{clusters/fixed-2.yaml}" }, { "os_type": "ubuntu", ...
URL 的 **jobs/?status=fail** 部分选择 **"success":false** 的任务。 jq 表达式显示描述字段 ( **.[].description** ),每行一个。这些行被聚合到一个以逗号分隔的列表中 ( **while read description ; do echo -n $description, ; done** ),并删除尾随逗号 ( **sed -e 's/,$//'** )。filter 变量设置为结果行并进行 eval 以去除引号 ( **eval filter=$(..)** )。
用于调度整个套件的命令可以通过添加 **--filter="$filter"** 参数来重用,并且只会运行失败的任务。
$ ./virtualenv/bin/teuthology-suite --filter="$filter" \ --priority 101 --suite rgw --suite-branch firefly \ --machine-type plana,burnupi,mira \ --distro ubuntu --email loic@dachary.org \ --owner loic@dachary.org \ --ceph firefly-backports ... Suite rgw in suites/rgw scheduled 6 jobs. Suite rgw in suites/rgw -- 56 jobs were filtered out.