---
# PREREQ Node service is ready to run static pods

# INPUT r_etcd_upgrade_version

- include_tasks: runtime.yml

- name: Verify cluster is healthy pre-upgrade
  command: "{{ etcdctlv2 }} cluster-health"

# We removed the ability to detect what was previously 'containerized'
# Need to stop and disable this service, but might not be present.
- name: Stop, disable and mask old etcd service
  systemd:
    name: "{{ item }}"
    state: stopped
    enabled: no
    masked: yes
    daemon_reload: yes
  with_items:
  - etcd
  - etcd_container
  failed_when: False

- name: Remove old etcd service files
  file:
    path: "{{ item }}"
    state: absent
  with_items:
  - "/etc/systemd/system/etcd.service"
  - "/etc/systemd/system/etcd_container.service"

- name: Remove nonexistent services
  command: "systemctl reset-failed"

- name: Configure static definition
  import_tasks: static.yml

- set_fact:
    r_etcd_common_etcd_runtime: static_pod

- name: Verify cluster is healthy
  command: "{{ etcdctlv2 }} cluster-health"
  register: etcdctl
  until: etcdctl.rc == 0 and 'stopped' not in etcdctl.stderr
  retries: 30
  delay: 10

---
# PREREQ Node service is ready to run static pods

# INPUT r_etcd_upgrade_version

- include_tasks: runtime.yml

- name: Verify cluster is healthy pre-upgrade
  command: "{{ etcdctlv2 }} cluster-health"

- name: Check for old etcd service files
  stat:
    path: "{{ item }}"
  with_items:
  - "/etc/systemd/system/etcd.service"
  - "/etc/systemd/system/etcd_container.service"
  register: old_svc_files

- name: Remove old etcd service files
  file:
    path: "{{ item.stat.path }}"
    state: absent
  with_items:
  - "{{ old_svc_files.results }}"
  when:
  - item.stat.exists
  - item.stat.isreg

# We removed the ability to detect what was previously 'containerized'
# Need to stop and disable this service, but might not be present.
- name: Stop, disable and mask old etcd service
  systemd:
    name: "{{ item }}"
    state: stopped
    enabled: no
    masked: yes
    daemon_reload: yes
  with_items:
  - etcd
  - etcd_container
  failed_when: False

- name: Remove nonexistent services
  command: "systemctl reset-failed"

- name: Configure static definition
  import_tasks: static.yml

- set_fact:
    r_etcd_common_etcd_runtime: static_pod

- name: Verify cluster is healthy
  command: "{{ etcdctlv2 }} cluster-health"
  register: etcdctl
  until: etcdctl.rc == 0 and 'stopped' not in etcdctl.stderr
  retries: 30
  delay: 10

Remove old service files before masking them
Remove old service files before masking them

Masking a service creates a symlink from /etc/systemd/system/foo.service
to /dev/null. If we deleted them after masking then the service
effectively becomes unmasked.
