2016-04-26 11 views
3

Ich mache einen REST-Anruf und möchte überprüfen, ob meine Anfrage abgeschlossen ist, bevor Sie fortfahren. In der Antwort habe ich entweder einen "PENDING" oder "IN_PROGRESS" als request_status erhalten. Ich möchte warten bis ich entweder ein "COMPLETED" oder "FAILED" bekomme. Zu diesem Zweck möchte ich warten, während ein „pending“ oder „IN_PROGRESS“ gettingWie Sie mehrere Bedingungen in einer Do-in-Schleife in Ansible eingeben

Ich habe versucht, viele Variationen konnte aber nicht gelungen, und der letzte Versuch war wie folgt:

- 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 

Und der Fehler :

„Die bedingte Check '' {{(response.content | from_json) .Requests.request_status}} '= 'PENDING' UND' {{ (response.content | from_json) .Requests. request_status}} '! = ' IN_PROGRESS '' ist fehlgeschlagen. Der Fehler lautet: templa te Fehler beim Templating string: erwartetes Token 'Ende des Anweisungsblocks', bekam 'AND'. String: {!% wenn 'ABGESCHLOSSEN' = 'PENDING' UND 'ABGESCHLOSSEN' = 'IN_PROGRESS' %} Echtes {% else%} Falsch {% endif%}“

Also, meine Frage ist wie kann ich mehrere Bedingungen in einer do-until-Schleife in ansible angeben

Antwort

3

Ok, das Problem gefunden

Ändern "und" to "und" arbeitete

bis:?.. „" {{ (response.content | from_json) .Requests.request_status}} ' ! = 'PENDING' und '{{response.content | from_json) .Requests.request_status}}‘! = 'IN_PROGRESS'“

+1

wenn Sie Jinja verwenden, werden Sie tatsächlich Python ausführen. Den richtigen Python Mundart für die 'und' Logik ist buchstäblich' und', nicht "UND". froh, dass du es herausgefunden hast. obwohl du es wissen solltest;) – sircapsalot