我正在使用ansible uri模块发出POST请求。请求返回201或208的状态,并且应该考虑两个状态代码以使任务通过。如何指定多个status_code值或如何实现此目的?
- uri:
url: "http://mywebsite.org/api/hooks/release/builtin/"
method: POST
HEADER_Content-Type: "application/json"
body: '{"version": "6.2.10"}'
body_format: json
status_code: 208
register: result
failed_when: status_code != 201 or status_code != 208
答案 0 :(得分:6)
status_code
一个有效的数字HTTP状态代码,表示请求成功。 也可以是逗号分隔的状态代码列表。
所以:
- uri:
url: "http://mywebsite.org/api/hooks/release/builtin/"
method: POST
HEADER_Content-Type: "application/json"
body: '{"version": "6.2.10"}'
body_format: json
status_code: 201, 208
register: result
答案 1 :(得分:0)
使用failed_when
的解决方案 failed_when
需要使用not in
和result.status
来正确评估此内容:
failed_when: result.status not in [201,208]
问题中的代码问题
第一个问题是status_code
不能像这样被引用。但是,您可以使用已注册的status
对象引用result
。那么failed_when
状态将如下所示:
failed_when: result.status != 201 or result.status != 208
但是,当201
或208
返回时,如果status
为208
则不等于201
和{{} 1}}条件失败(反之亦然)。
答案 2 :(得分:0)
值得注意的是,您还可以使用更传统的ansible列表格式(每行一项)提供状态代码:
- uri:
url: "http://mywebsite.org/api/hooks/release/builtin/"
method: POST
HEADER_Content-Type: "application/json"
body: '{"version": "6.2.10"}'
body_format: json
status_code:
- 201
- 208
- 409
register: result