- name: Wait for Node Registration
  command: >
      {{ openshift.common.client_binary }} get node {{ item | lower }}
  register: omd_get_node
  until: omd_get_node.rc == 0
  retries: 50
  delay: 5
  changed_when: false
  with_items: "{{ openshift_nodes }}"

- name: Set node schedulability
  command: >
    {{ openshift.common.admin_binary }} manage-node {{ item.openshift.common.hostname | lower }} --schedulable={{ 'true' if item.openshift.node.schedulable | bool else 'false' }}
  with_items:
    -  "{{ openshift_node_vars }}"
  when: item.openshift.common.hostname is defined

- name: Label nodes
  command: >
    {{ openshift.common.client_binary }} label --overwrite node {{ item.openshift.common.hostname | lower }} {{ item.openshift.node.labels | oo_combine_dict  }}
  with_items:
    -  "{{ openshift_node_vars }}"
  when: item.openshift.common.hostname is defined and 'labels' in item.openshift.node and item.openshift.node.labels != {}

---
- name: Create temp directory for kubeconfig
  command: mktemp -d /tmp/openshift-ansible-XXXXXX
  register: mktemp
  changed_when: False

- set_fact:
    openshift_manage_node_kubeconfig: "{{ mktemp.stdout }}/admin.kubeconfig"

- name: Copy the admin client config(s)
  command: >
    cp {{ openshift.common.config_base }}/master/admin.kubeconfig {{ openshift_manage_node_kubeconfig }}
  changed_when: False

- name: Wait for Node Registration
  command: >
    {{ openshift.common.client_binary }} get node {{ item | lower }}
    --config={{ openshift_manage_node_kubeconfig }}
    -n default
  register: omd_get_node
  until: omd_get_node.rc == 0
  retries: 50
  delay: 5
  changed_when: false
  with_items: "{{ openshift_nodes }}"

- name: Set node schedulability
  command: >
    {{ openshift.common.admin_binary }} manage-node {{ item.openshift.common.hostname | lower }} --schedulable={{ 'true' if item.openshift.node.schedulable | bool else 'false' }}
    --config={{ openshift_manage_node_kubeconfig }}
    -n default
  with_items:
    -  "{{ openshift_node_vars }}"
  when: item.openshift.common.hostname is defined

- name: Label nodes
  command: >
    {{ openshift.common.client_binary }} label --overwrite node {{ item.openshift.common.hostname | lower }} {{ item.openshift.node.labels | oo_combine_dict  }}
    --config={{ openshift_manage_node_kubeconfig }}
    -n default
  with_items:
    -  "{{ openshift_node_vars }}"
  when: item.openshift.common.hostname is defined and 'labels' in item.openshift.node and item.openshift.node.labels != {}

- name: Delete temp directory
  file:
    name: "{{ mktemp.stdout }}"
    state: absent
  changed_when: False

Copy admin kubeconfig in openshift_manage_node role.
Copy admin kubeconfig in openshift_manage_node role.
