---
######################################################################
# Users, projects, and privileges

- name: Ensure the CFME user exists
  oc_user:
    state: present
    username: "{{ openshift_cfme_user }}"

- name: Ensure the CFME namespace exists with CFME user as admin
  oc_project:
    state: present
    name: "{{ openshift_cfme_project }}"
    display_name: "{{ openshift_cfme_project_description }}"
    admin: "{{ openshift_cfme_user }}"

- name: Ensure the CFME namespace service account is privileged
  oc_adm_policy_user:
    namespace: "{{ openshift_cfme_project }}"
    user: "{{ openshift_cfme_service_account }}"
    resource_kind: scc
    resource_name: privileged
    state: present

######################################################################
# NFS
# In the case that we are not running on a cloud provider, volumes must be statically provisioned

- include: nfs.yml
  when: not (openshift_cloudprovider_kind is defined and (openshift_cloudprovider_kind == 'aws' or openshift_cloudprovider_kind == 'gce'))

######################################################################
# CFME App Template
#
# Note, this is different from the create_pvs.yml tasks in that the
# application template does not require any jinja2 evaluation.
#
# TODO: Handle the case where the server template is updated in
# openshift-ansible and the change needs to be landed on the managed
# cluster.

- name: Check if the CFME Server template has been created already
  oc_obj:
    namespace: "{{ openshift_cfme_project }}"
    state: list
    kind: template
    name: manageiq
  register: miq_server_check

- name: Copy over CFME Server template
  copy:
    src: miq-template.yaml
    dest: "{{ template_dir }}/miq-template.yaml"

- name: Ensure the server template was read from disk
  debug:
    var=r_openshift_cfme_miq_template_content

- name: Ensure CFME Server Template exists
  oc_obj:
    namespace: "{{ openshift_cfme_project }}"
    kind: template
    name: "manageiq"
    state: present
    content: "{{ r_openshift_cfme_miq_template_content }}"

######################################################################
# Let's do this

- name: Ensure the CFME Server is created
  oc_process:
    namespace: "{{ openshift_cfme_project }}"
    template_name: manageiq
    create: True
    params:
      APPLICATION_IMG_NAME: "{{ openshift_cfme_application_img_name }}"
      POSTGRESQL_IMG_NAME: "{{ openshift_cfme_postgresql_img_name }}"
      MEMCACHED_IMG_NAME: "{{ openshift_cfme_memcached_img_name }}"
      APPLICATION_IMG_TAG: "{{ openshift_cfme_application_img_tag }}"
      POSTGRESQL_IMG_TAG: "{{ openshift_cfme_postgresql_img_tag }}"
      MEMCACHED_IMG_TAG: "{{ openshift_cfme_memcached_img_tag }}"
  register: cfme_new_app_process
  run_once: True
  when:
    # User said to install CFME in their inventory
    - openshift_cfme_install_app | bool
    # # The server app doesn't exist already
    # - not miq_server_check.results.results.0

- debug:
    var: cfme_new_app_process

######################################################################
# Various cleanup steps

# TODO: Not sure what to do about this right now. Might be able to
# just delete it?  This currently warns about "Unable to find
# '<TEMP_DIR>' in expected paths."
- name: Ensure the temporary PV/App templates are erased
  file:
    path: "{{ item }}"
    state: absent
  with_fileglob:
    - "{{ template_dir }}/*.yaml"

- name: Ensure the temporary PV/app template directory is erased
  file:
    path: "{{ template_dir }}"
    state: absent

######################################################################

- name: Status update
  debug:
    msg: >
      CFME has been deployed. Note that there will be a delay before
      it is fully initialized.
