Возможный ответ "до" от Jira API - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь запланировать повторное индексирование Jira Playbook, я также хотел бы, чтобы наш разработчик мог использовать это специально, что они могли бы сделать через AWX, я могу начать -index, но требуется уведомление о завершении переиндексации.

Вот мои команды и выходы 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 может отправить уведомление по электронной почте. Запуск книги воспроизведения вручную запустит переиндексацию, но повторная попытка будет повторена, даже если переиндексация закончилась

1 Ответ

0 голосов
/ 01 апреля 2019

Изменить после комментария пользователя:

Хотя мое предложение, представленное ниже, все еще является хорошей практикой и предотвратит некоторые возможные будущие головные боли, в данном случае оно оказалось не проблемой.

Я не сделалСначала обратите внимание, что вы запрашиваете URL-вызов для возврата статуса 201 или 202, в то время как в документации jira указано, что вы получите 200 .

Вы должны либо:

  • Изменить ожидаемый код возврата: status: 200
  • Полностью отказаться от опции статуса и изменить свое состояние: until: response.status == 200 and (result.json.success | bool)

Исходное предложение (не исправляет, но все еще является хорошей практикой)

В ансибле обычно плохая идея проверять на наличие литерала true или false, потому что ансибл / ямл довольно разрешающийо значениях, которые вы можете использовать для этого (да, истина, Y, 1, 234, нет, ложь, 0, ...), а также потому, что значения иногда можно интерпретировать как чистые строки, а не как логические значения (попробуйте с vars_prompt до understantпроблема, если у вас есть время).

Ansible предоставляет фильтр для проверки логического представления значения.Я не уверен на 100%, что это решит вашу текущую проблему, но я бы попробовал с until: result.json.success | bool

...