- name: test if service accounts exists
  command: >
      {{ openshift.common.client_binary }} get sa {{ item }} -n {{ openshift_serviceaccounts_namespace }}
  with_items: "{{ openshift_serviceaccounts_names }}"
  failed_when: false
  changed_when: false
  register: account_test

- name: create the service account
  shell: >
       echo {{ lookup('template', '../templates/serviceaccount.j2')
       | from_yaml | to_json | quote }} | {{ openshift.common.client_binary }}
       -n {{ openshift_serviceaccounts_namespace }} create -f -
  when: item.1.rc != 0
  with_together:
  - "{{ openshift_serviceaccounts_names }}"
  - "{{ account_test.results }}"

- name: test if scc needs to be updated
  command: >
      {{ openshift.common.client_binary }} get scc {{ item }} -o yaml
  changed_when: false
  failed_when: false
  register: scc_test
  with_items: "{{ openshift_serviceaccounts_sccs }}"

- name: Grant the user access to the appropriate scc
  command: >
      {{ openshift.common.client_binary }} adm policy add-scc-to-user
      {{ item.1.item }} system:serviceaccount:{{ openshift_serviceaccounts_namespace }}:{{ item.0 }}
  when:
  - openshift.common.version_gte_3_1_or_1_1
  - item.1.rc == 0
  - ('system:serviceaccount:' + openshift_serviceaccounts_namespace + ':' + item.0) not in (item.1.stdout | from_yaml).users | default([])
  with_nested:
  - "{{ openshift_serviceaccounts_names }}"
  - "{{ scc_test.results }}"

- include: legacy_add_scc_to_user.yml
  when: not openshift.common.version_gte_3_1_or_1_1
