---
# These tasks dispatch to the proper set of docker tasks based on the
# inventory:openshift_docker_use_system_container variable

- include: udev_workaround.yml
  when: docker_udev_workaround | default(False) | bool

- set_fact:
    l_use_system_container: "{{ openshift.docker.use_system_container | default(False) }}"
    l_use_crio: "{{ openshift_use_crio | default(False) }}"
    l_use_crio_only: "{{ openshift_use_crio_only | default(False) }}"

- name: Add enterprise registry, if necessary
  set_fact:
    l2_docker_additional_registries: "{{ l2_docker_additional_registries + [openshift_docker_ent_reg] }}"
  when:
    - openshift.common.deployment_type == 'openshift-enterprise'
    - openshift_docker_ent_reg != ''
    - openshift_docker_ent_reg not in l2_docker_additional_registries
    - not l_use_crio_only

- name: Use Package Docker if Requested
  include: package_docker.yml
  when:
    - not l_use_system_container
    - not l_use_crio_only

- name: Ensure /var/lib/containers exists
  file:
    path: /var/lib/containers
    state: directory

- name: Fix SELinux Permissions on /var/lib/containers
  command: "restorecon -R /var/lib/containers/"
  changed_when: false

- name: Use System Container Docker if Requested
  include: systemcontainer_docker.yml
  when:
    - l_use_system_container
    - not l_use_crio_only

- name: Add CRI-O usage Requested
  include: systemcontainer_crio.yml
  when:
    - l_use_crio
    - openshift_docker_is_node_or_master | bool

- name: stat the docker data dir
  stat:
    path: "{{ docker_default_storage_path }}"
  register: dockerstat

- when:
    - l_use_crio
    - dockerstat.stat.islink is defined and not (dockerstat.stat.islink | bool)
  block:
    - name: stop the current running docker
      systemd:
        state: stopped
        name: "{{ openshift.docker.service_name }}"

    - name: "Ensure {{ docker_alt_storage_path }} exists"
      file:
        path: "{{ docker_alt_storage_path }}"
        state: directory

    - name: "Set the selinux context on {{ docker_alt_storage_path }}"
      command: "semanage fcontext -a -e {{ docker_default_storage_path }} {{ docker_alt_storage_path }}"
      register: results
      failed_when:
        - results.rc == 1
        - "'already exists' not in results.stderr"

    - name: "restorecon the {{ docker_alt_storage_path }}"
      command: "restorecon -r {{ docker_alt_storage_path }}"

    - name: Remove the old docker location
      file:
        state: absent
        path: "{{ docker_default_storage_path }}"

    - name: Setup the link
      file:
        state: link
        src: "{{ docker_alt_storage_path }}"
        path: "{{ docker_default_storage_path }}"

    - name: start docker
      systemd:
        state: started
        name: "{{ openshift.docker.service_name }}"
