---
- name: Manage AWX Container Images
  block:
    - name: Export Docker web image if it isnt local and there isnt a registry defined
      docker_image:
        name: "{{ awx_web_image }}"
        tag: "{{ awx_version }}"
        archive_path: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_web_image }}_{{ awx_version }}.tar"
      when: inventory_hostname != "localhost" and docker_registry is not defined
      delegate_to: localhost

    - name: Export Docker task image if it isnt local and there isnt a registry defined
      docker_image:
        name: "{{ awx_task_image }}"
        tag: "{{ awx_version }}"
        archive_path: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_task_image }}_{{ awx_version }}.tar"
      when: inventory_hostname != "localhost" and docker_registry is not defined
      delegate_to: localhost

    - name: Authenticate with Docker registry if registry password given
      docker_login:
        registry: "{{ docker_registry }}"
        username: "{{ docker_registry_username }}"
        password: "{{ docker_registry_password }}"
        reauthorize: yes
      when: docker_registry is defined and docker_registry_password is defined
      delegate_to: localhost

    - name: Set docker base path
      set_fact:
        docker_deploy_base_path: "{{ awx_base_path|default('/tmp') }}/docker_deploy"
      when: ansible_connection != "local" and docker_registry is not defined

    - name: Ensure directory exists
      file:
        path: "{{ docker_deploy_base_path }}"
        state: directory
      when: ansible_connection != "local" and docker_registry is not defined

    - name: Copy web image to docker execution
      copy:
        src: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_web_image }}_{{ awx_version }}.tar"
        dest: "{{ docker_deploy_base_path }}/{{ awx_web_image }}_{{ awx_version }}.tar"
      when: ansible_connection != "local" and docker_registry is not defined

    - name: Copy task image to docker execution
      copy:
        src: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_task_image }}_{{ awx_version }}.tar"
        dest: "{{ docker_deploy_base_path }}"
      when: ansible_connection != "local" and docker_registry is not defined

    - name: Load web image
      docker_image:
        name: "{{ awx_web_image }}"
        tag: "{{ awx_version }}"
        load_path: "{{ docker_deploy_base_path }}/{{ awx_web_image }}_{{ awx_version }}.tar"
        timeout: 300
      when: ansible_connection != "local" and docker_registry is not defined

    - name: Load task image
      docker_image:
        name: "{{ awx_task_image }}"
        tag: "{{ awx_version }}"
        load_path: "{{ docker_deploy_base_path }}/{{ awx_task_image }}_{{ awx_version }}.tar"
        timeout: 300
      when: ansible_connection != "local" and docker_registry is not defined

    - include_role:
        name: image_push
      when: docker_registry is defined and dockerhub_base is not defined

    - name: Set full image path for local install
      set_fact:
        awx_web_docker_actual_image: "{{ awx_web_image }}:{{ awx_version }}"
        awx_task_docker_actual_image: "{{ awx_task_image }}:{{ awx_version }}"
      when: docker_registry is not defined
  when: dockerhub_base is not defined

- name: Set DockerHub Image Paths
  set_fact:
    awx_web_docker_actual_image: "{{ dockerhub_base }}/awx_web:{{ dockerhub_version }}"
    awx_task_docker_actual_image: "{{ dockerhub_base }}/awx_task:{{ dockerhub_version }}"
  when: dockerhub_base is defined
