Jira API的“直到”响应

工作组

我试图安排一个有趣的剧本来重新编制Jira的索引,我还希望我们的开发人员能够通过AWX临时完成此任务,因此我可以开始重新编制索引,但是希望在重新索引完成后发出通知。

这是我的CLI命令和输出:

[root@devjira02 ~]# curl -u admin:admin123! -X GET https://devjira.comapny.com/rest/api/2/reindex/progress
{"progressUrl":"/secure/admin/jira/IndexProgress.jspa?taskId=12720","currentProgress":35,"currentSubTask":"Currently working on: Issue index","type":"BACKGROUND","submittedTime":"2019-04-01T14:23:50.971+0100","startTime":"2019-04-01T14:23:50.973+0100","success":false}

[root@devjira02 ~]# curl -u admin:admin123! -X GET https://devjira.company.com/rest/api/2/reindex/progress
{"progressUrl":"/secure/admin/jira/IndexProgress.jspa?taskId=12720","currentProgress":100,"type":"BACKGROUND","submittedTime":"2019-04-01T14:23:50.971+0100","startTime":"2019-04-01T14:23:50.973+0100","finishTime":"2019-04-01T14:24:33.922+0100","success":true}

我的剧本:

- name: DEV Jira Re-index
  become: true
  become_method: sudo
  become_user: root

  hosts: DEVJIRA02
  gather_facts: yes

  tasks:

    - name: Jira Re-index
      uri:
       url: https://devjira.company.com/rest/api/2/reindex?type=BACKGROUND_PREFERRED
       method: POST
       user: admin
       password: admin123!
       force_basic_auth: yes
       status_code: [201, 202]

    - name: Wait until re-index completes
      uri:
        url: https://devjira.company.com/rest/api/2/reindex/progress
        method: GET
        user: admin
        password: admin123!
        force_basic_auth: yes
        status_code: [201, 202]
        return_content: yes
        body_format: json
      register: result
      until: result.json.success == true
      retries: 180
      delay: 30

希望第二部分重试,直到成功== true为止,此时AWX可以发送通知电子邮件。手动运行剧本将开始重新索引,但是即使重新索引完成,重试也只会重试

Zeitounator

用户评论后编辑:

尽管我的以下建议仍然是好的做法,并且可以避免将来可能出现的一些麻烦,但事实证明,这并不是问题所在。

起初我没注意到你是在请求url调用返回201或202状态,而jira文档指定你将收到200

您应该:

  • 更改预期的返回码: status: 200
  • 完全删除状态选项并更改条件: until: response.status == 200 and (result.json.success | bool)

原始主张(无法解决,但仍是很好的做法)

通常,在ansible中对一个文字进行测试是一个坏主意,true或者false因为ansible / yaml对于您可以使用的值(是,true,Y,1、234,否,false,0,...)相当宽容也因为值有时可以解释为纯字符串,而不是布尔值(如果有时间,可以尝试使用vars_prompt来解决问题)。

Ansible提供了用于测试值的布尔表示形式的过滤器。我不确定100%会解决您当前的问题,但我会尝试until: result.json.success | bool

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章