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

1 ответ

Решение

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

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

Сначала я не обратил внимания на то, что вы запрашиваете 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

Другие вопросы по тегам