# Copyright 2017 The Openstack-Helm Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: setting playbook user info facts before escalating privileges
  set_fact:
    playbook_user_id: "{{ ansible_user_uid }}"
    playbook_group_id: "{{ ansible_user_gid }}"
    playbook_user_dir: "{{ ansible_user_dir }}"
    kube_master: "{{ groups['primary'][0] }}"
    kube_worker: "{{ inventory_hostname }}"
    kube_node_hostname: "{{ ansible_fqdn }}"

- name: deploying kubelet and support assets to node
  include_role:
    name: deploy-kubeadm-aio-common
    tasks_from: main

- name: generating the kubeadm join command for the node
  include: util-generate-join-command.yaml
  delegate_to: "{{ kube_master }}"

- name: joining node to kubernetes cluster
  vars:
    kubeadm_aio_action: join-kube
    kubeadm_aio_join_command: "{{ kubeadm_cluster_join_command }}"
  include: util-run-join-command.yaml

# FIXME(portdirect): running as root for now to unblock the gates, though this
# runs ok under ansible 2.5.4 locally without privileges
- name: waiting for node to be ready
  delegate_to: "{{ kube_master }}"
  become: true
  become_user: root
  shell: kubectl get node "{{ kube_node_hostname }}" -o jsonpath="{$.status.conditions[?(@.reason=='KubeletReady')]['type']}" || echo "Not registered yet"
  environment:
    KUBECONFIG: '/etc/kubernetes/admin.conf'
  register: task_result
  until: task_result.stdout == 'Ready'
  retries: 120
  delay: 5