3db2bfe8d1
We try to be smart about when we attempt to create repos in quay. One thing that was missing was checking if necessary info for the API request is present. Skip attempting creating if not present. Change-Id: I61e603c4d07280079e560215685bf09ebc0c4263
58 lines
2.3 KiB
YAML
58 lines
2.3 KiB
YAML
- name: Only run when necessary items are present
|
|
block:
|
|
- name: Set quay_root_url
|
|
set_fact:
|
|
quay_root_url: "https://{{ zj_image.registry }}"
|
|
when: container_registry_credentials[zj_image.registry].api_url is not defined
|
|
|
|
- name: Alias api_url
|
|
set_fact:
|
|
quay_root_url: "{{ container_registry_credentials[zj_image.registry].api_url }}"
|
|
when: container_registry_credentials[zj_image.registry].api_url is defined
|
|
|
|
- name: Set quay_repo_visibility
|
|
set_fact:
|
|
quay_repo_visibility: "public"
|
|
when: zj_image.visibility is not defined
|
|
|
|
- name: Alias visibility
|
|
set_fact:
|
|
quay_repo_visibility: "{{ zj_image.visibility }}"
|
|
when: zj_image.visibility is defined
|
|
|
|
- name: Create the repo in quay
|
|
no_log: true
|
|
uri:
|
|
url: "{{ quay_root_url }}/api/v1/repository"
|
|
method: POST
|
|
body_format: json
|
|
body:
|
|
namespace: "{{ zj_image.namespace }}"
|
|
repository: "{{ zj_image.repo_shortname}}"
|
|
description: "{{ zj_image.repo_description }}"
|
|
visibility: "{{ quay_repo_visibility }}"
|
|
headers:
|
|
Content-Type: application/json
|
|
Authorization: "Bearer {{ container_registry_credentials[zj_image.registry].api_token }}"
|
|
status_code:
|
|
- 201
|
|
# 400 is returned when the repo already exists.
|
|
# We double check this below.
|
|
- 400
|
|
register: quay_repo_create
|
|
delay: 5
|
|
retries: 3
|
|
|
|
- name: Fail if repo doesn't exist and we got a 400 status code
|
|
when:
|
|
- quay_repo_create.status == 400
|
|
- "'error_message' not in quay_repo_create.json or ('error_message' in quay_repo_create.json and quay_repo_create.json.error_message != 'Repository already exists')"
|
|
fail:
|
|
msg: "Could not create {{ quay_root_url }}/{{ zj_image.namespace }}/{{ zj_image.repo_shortname }}"
|
|
when:
|
|
- zj_image.registry == 'quay.io' or (container_registry_credentials[zj_image.registry].type is defined and container_registry_credentials[zj_image.registry].type == 'quay')
|
|
- container_registry_credentials[zj_image.registry].api_token is defined
|
|
- zj_image.namespace is defined
|
|
- zj_image.repo_shortname is defined
|
|
- zj_image.repo_description is defined
|