2016-04-26 116 views
3

我正在进行REST调用,并希望在继续之前检查我的请求是否完成。在响应中,我得到了一个“PENDING”或“IN_PROGRESS”作为request_status。我想等到我完成“完成”或“失败”。为此,我想等,同时得到一个“待定”或“IN_PROGRESS”如何在Ansible的do-until循环中指定多个条件

我试过很多的变化,但无法成功,最后一次尝试是如下:

- name: Wait for the cluster deployment (this will take a while) 
    uri: 
     url: http://localhost:8080/api/v1/clusters/{{ cluster_name }}/requests/1 
     method: GET 
     user: admin 
     password: admin 
     HEADER_X-Requested-By: Ansible 
     force_basic_auth: yes 
     status_code: 200, 201, 202 
     return_content: yes 
    register: response 
    until: "'{{ (response.content | from_json).Requests.request_status }}' != 'PENDING' AND '{{ (response.content | from_json).Requests.request_status }}' != 'IN_PROGRESS'" 
    retries: 3 
    delay: 5 

且误差!

“的条件检查'{{(response.content | from_json).Requests.request_status}} '= 'PENDING' 和'{{ (response.content | from_json)。请求。 request_status}}'!= 'IN_PROGRESS''失败,错误是:templa te模板错误 字符串:预期标记'语句块结束',得到'AND'。字符串:{!% 如果 '已完成'= 'PENDING' 和 '已完成'= 'IN_PROGRESS' %}真 {%其他%}假{%ENDIF%}”

所以,我的问题是我怎么能在Ansible指定一个do-until循环多个条件

回答

3

好发现问题

更改 “和” “和” 工作

到:?。““{{ (response.content | from_json).Requests.request_status}}' !='PENDING'and'{{(response.content | from_json).Requests.request_status}}”!= 'IN_PROGRESS'”

+1

当您使用神社,实际上是执行Python。对于'和'逻辑正确的蟒蛇白话,实际上就是'和',不是'AND',很高兴你明白了,只是你应该知道;) – sircapsalot