2017-01-05 7 views
1

Я использую модуль uniible uri для выполнения запроса POST. Запрос возвращает статус 201 или 208, и для выполнения задачи должен быть рассмотрен оба кода состояния. Как я могу указать несколько значений status_code или как это сделать?Несколько status_code в модуле Ansible uri

- 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 

ответ

3

Per uri module manual:

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 
+0

пытался это сделать, но он говорит, что status_code не задан –

+0

Вы должны избавиться от этой линии в целом. И поэтому, когда вы спрашиваете о StackOverflow, вы должны включить проверяемый пример с полученной вами ошибкой. – techraf

+0

Я думаю, что это «failed_when», который терпит неудачу, но да, @drishtiahuja нужно лучше сообщить проблему. – tedder42

0

Решение с использованием failed_when

The failed_when потребности использовать not in и result.status оценить это правильно так:

failed_when: result.status not in [201,208]

Проблема с кодом в вопросе Первая проблема заключается в том, что нельзя ссылаться на status_code. Однако вы можете ссылаться на status, используя зарегистрированный объект result. Так тогда failed_when statemment будет выглядеть так: failed_when: result.status != 201 or result.status != 208

Однако, это все еще терпит неудачу, когда 201 или 208 возвращаются, так как если status является 208 то не равен 201 и result.status != 201 условно терпит неудачу (и наоборот).

+0

«status_code - недопустимый атрибут для модуля uri» - как это? –

+0

@ KonstantinSuvorov спасибо, как только я сделал минимальный, полный и проверенный пример, я понял, что у меня есть атрибут кода состояния, примененный к уровню 'task', а не как часть атрибутов модуля' uri'. Я удалил эту неправильную информацию из своего ответа. – darkwing

 Смежные вопросы

  • Нет связанных вопросов^_^