2016-04-26 118 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