
This updates the new ensure-quay-repo to run opportunistically if the registry_type image flag is set to quay and the registry credentials matching the container image has an api token defined. This will allow us to include this role in base jobs and it will do what we need it to do without impacting docker based images or quay managed images that don't need automatic creation. Change-Id: Ia419578bf0a27293757c5f723873e9930ee2c489
55 lines
2.1 KiB
YAML
55 lines
2.1 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
|