---
- name: Kubernetes Apps | Lay Down Netchecker Template
  template:
    src: "{{item.file}}"
    dest: "{{kube_config_dir}}/{{item.file}}"
  with_items:
    - {file: netchecker-agent-ds.yml.j2, type: ds, name: netchecker-agent}
    - {file: netchecker-agent-hostnet-ds.yml.j2, type: ds, name: netchecker-agent-hostnet}
    - {file: netchecker-server-sa.yml.j2, type: sa, name: netchecker-server}
    - {file: netchecker-server-clusterrole.yml.j2, type: clusterrole, name: netchecker-server}
    - {file: netchecker-server-clusterrolebinding.yml.j2, type: clusterrolebinding, name: netchecker-server}
    - {file: netchecker-server-deployment.yml.j2, type: deployment, name: netchecker-server}
    - {file: netchecker-server-svc.yml.j2, type: svc, name: netchecker-service}
  register: manifests
  when:
    - inventory_hostname == groups['kube-master'][0]
    - rbac_enabled or item.type not in rbac_resources

- name: Kubernetes Apps | Purge old Netchecker server
  kube:
    name: "netchecker-server"
    namespace: "{{ netcheck_namespace }}"
    kubectl: "{{bin_dir}}/kubectl"
    resource: "po"
    state: absent
  when: inventory_hostname == groups['kube-master'][0]

# FIXME: remove if kubernetes/features#124 is implemented
- name: Kubernetes Apps | Purge old Netchecker daemonsets
  kube:
    name: "{{item.item.name}}"
    namespace: "{{netcheck_namespace}}"
    kubectl: "{{bin_dir}}/kubectl"
    resource: "{{item.item.type}}"
    filename: "{{kube_config_dir}}/{{item.item.file}}"
    state: absent
  with_items: "{{ manifests.results }}"
  when: inventory_hostname == groups['kube-master'][0] and item.item.type == "ds" and item.changed

- name: Kubernetes Apps | Start Netchecker Resources
  kube:
    name: "{{item.item.name}}"
    namespace: "{{netcheck_namespace}}"
    kubectl: "{{bin_dir}}/kubectl"
    resource: "{{item.item.type}}"
    filename: "{{kube_config_dir}}/{{item.item.file}}"
    state: "{{item.changed | ternary('latest','present') }}"
  with_items: "{{ manifests.results }}"
  failed_when: manifests|failed and "Error from server (AlreadyExists)" not in manifests.msg
  when: inventory_hostname == groups['kube-master'][0]
