---

- name: reset | stop services
  service:
    name: "{{ item }}"
    state: stopped
  with_items:
    - kubelet
    - etcd
  failed_when: false

- name: reset | remove services
  file:
    path: "/etc/systemd/system/{{ item }}.service"
    state: absent
  with_items:
    - kubelet
    - etcd
  register: services_removed

- name: reset | remove docker dropins
  file:
    path: "/etc/systemd/system/docker.service.d/{{ item }}"
    state: absent
  with_items:
    - docker-dns.conf
    - docker-options.conf
  register: docker_dropins_removed

- name: reset | systemctl daemon-reload
  command: systemctl daemon-reload
  when: services_removed.changed or docker_dropins_removed.changed

- name: reset | remove all containers
  shell: "{{ docker_bin_dir }}/docker ps -aq | xargs -r docker rm -fv"

- name: reset | restart docker if needed
  service:
    name: docker
    state: restarted
  when: docker_dropins_removed.changed

- name: reset | gather mounted kubelet dirs
  shell: mount | grep /var/lib/kubelet | awk '{print $3}' | tac
  check_mode: no
  register: mounted_dirs

- name: reset | unmount kubelet dirs
  command: umount {{item}}
  with_items: '{{ mounted_dirs.stdout_lines }}'

- name: reset | delete some files and directories
  file:
    path: "{{ item }}"
    state: absent
  with_items:
    - "{{kube_config_dir}}"
    - /var/lib/kubelet
    - /var/lib/etcd
    - /etc/ssl/etcd
    - /var/log/calico
    - /etc/cni
    - /etc/nginx
    - /etc/dnsmasq.d
    - /etc/dnsmasq.conf
    - /etc/dnsmasq.d-available
    - /etc/etcd.env
    - /etc/calico
    - /opt/cni
    - /etc/dhcp/dhclient.d/zdnsupdate.sh
    - /etc/dhcp/dhclient-exit-hooks.d/zdnsupdate
    - "{{ bin_dir }}/kubelet"

- name: reset | remove dns settings from dhclient.conf
  blockinfile:
    dest: "{{ item }}"
    state: absent
    follow: yes
    marker: "# Ansible entries {mark}"
  failed_when: false
  with_items:
    - /etc/dhclient.conf
    - /etc/dhcp/dhclient.conf

- name: reset | remove host entries from /etc/hosts
  blockinfile:
    dest: "/etc/hosts"
    state: absent
    follow: yes
    marker: "# Ansible inventory hosts {mark}"

- name: reset | Restart network
  service:
    name: >-
      {% if ansible_os_family == "RedHat" -%}
      network
      {%- elif ansible_os_family == "Debian" -%}
      networking
      {%- endif %}
    state: restarted
  when: ansible_os_family not in ["CoreOS", "Container Linux by CoreOS"]
