---
- name: Flannel | delete default docker bridge
  command: ip link delete docker0
  failed_when: false
  notify: Flannel | restart docker

- name: Flannel | restart docker
  command: /bin/true
  notify:
    - Flannel | reload systemd
    - Flannel | reload docker.socket
    - Flannel | reload docker
    - Flannel | pause while Docker restarts
    - Flannel | wait for docker

- name : Flannel | reload systemd
  shell: systemctl daemon-reload

- name: Flannel | reload docker.socket
  service:
    name: docker.socket
    state: restarted
  when: ansible_os_family in ['CoreOS', 'Container Linux by CoreOS']

- name: Flannel | reload docker
  service:
    name: docker
    state: restarted

- name: Flannel | pause while Docker restarts
  pause:
    seconds: 10
    prompt: "Waiting for docker restart"

- name: Flannel | wait for docker
  command: "{{ docker_bin_dir }}/docker images"
  register: docker_ready
  retries: 10
  delay: 5
  until: docker_ready.rc == 0

- name: Flannel | reload kubelet
  service:
    name: kubelet
    state: restarted

---
- name: Flannel | delete default docker bridge
  command: ip link delete docker0
  failed_when: false
  notify: Flannel | restart docker

- name: Flannel | restart docker
  command: /bin/true
  notify:
    - Flannel | reload systemd
    - Flannel | reload docker.socket
    - Flannel | reload docker
    - Flannel | reload docker (atomic)
    - Flannel | pause while Docker restarts
    - Flannel | wait for docker

- name : Flannel | reload systemd
  shell: systemctl daemon-reload

- name: Flannel | reload docker.socket
  service:
    name: docker.socket
    state: restarted
  when: ansible_os_family in ['CoreOS', 'Container Linux by CoreOS']

- name: Flannel | reload docker
  service:
    name: docker
    state: restarted
  when: not is_atomic

- name: Flannel | reload docker (atomic)
  shell: systemctl stop docker && runc list | awk '!/ID/ {print $1}' | xargs -n 1 -I ID runc kill ID KILL && systemctl start docker
  when: is_atomic

- name: Flannel | pause while Docker restarts
  pause:
    seconds: 10
    prompt: "Waiting for docker restart"

- name: Flannel | wait for docker
  command: "{{ docker_bin_dir }}/docker images"
  register: docker_ready
  retries: 10
  delay: 5
  until: docker_ready.rc == 0

- name: Flannel | reload kubelet
  service:
    name: kubelet
    state: restarted

Fix docker restart in atomic
Fix docker restart in atomic

In atomic, containers are left running when docker is restarted.
When docker is restarted after the flannel config is put in place,
the docker0 interface isn't re-IPed because docker sees the running
containers and won't update the previous config.

This patch kills all the running containers after docker is stopped.
We can't simply `docker stop` the running containers, as they respawn
before we've got a chance to stop the docker daemon, so we need to
use runc to do this after dockerd is stopped.
