# This deletes *ALL* Origin, Atomic Enterprise Platform and OpenShift
# Enterprise content installed by ansible.  This includes:
#
#    configuration
#    containers
#    example templates and imagestreams
#    images
#    RPMs
---
- hosts:
    - OSEv3:children

  sudo: yes

  tasks:
    - name: Detecting Operating System
      shell: ls /run/ostree-booted
      ignore_errors: yes
      failed_when: false
      register: ostree_output

      # Since we're not calling openshift_facts we'll do this for now
    - set_fact:
        is_atomic: "{{ ostree_output.rc == 0 }}"
    - set_fact:
        is_containerized: "{{ is_atomic or containerized | default(false) | bool }}"

    - name: Remove br0 interface
      shell: ovs-vsctl del-br br0
      changed_when: False
      failed_when: False

    - name: Stop services
      service: name={{ item }} state=stopped
      with_items:
        - atomic-enterprise-master
        - atomic-enterprise-node
        - atomic-openshift-master
        - atomic-openshift-master-api
        - atomic-openshift-master-controllers
        - atomic-openshift-node
        - etcd
        - haproxy
        - openshift-master
        - openshift-master-api
        - openshift-master-controllers
        - openshift-node
        - openvswitch
        - origin-master
        - origin-master-api
        - origin-master-controllers
        - origin-node
        - pcsd
      failed_when: false

    - name: Remove packages
      action: "{{ ansible_pkg_mgr }} name={{ item }} state=absent"
      when: not is_atomic | bool
      with_items:
        - atomic-enterprise
        - atomic-enterprise-master
        - atomic-enterprise-node
        - atomic-enterprise-sdn-ovs
        - atomic-openshift
        - atomic-openshift-clients
        - atomic-openshift-master
        - atomic-openshift-node
        - atomic-openshift-sdn-ovs
        - corosync
        - etcd
        - haproxy
        - openshift
        - openshift-master
        - openshift-node
        - openshift-sdn
        - openshift-sdn-ovs
        - openvswitch
        - origin
        - origin-clients
        - origin-master
        - origin-node
        - origin-sdn-ovs
        - pacemaker
        - pcs
        - tuned-profiles-atomic-enterprise-node
        - tuned-profiles-atomic-openshift-node
        - tuned-profiles-openshift-node
        - tuned-profiles-origin-node

    - name: Remove linux interfaces
      shell: ip link del "{{ item }}"
      changed_when: False
      failed_when: False
      with_items:
        - lbr0
        - vlinuxbr
        - vovsbr

    - shell: systemctl reset-failed
      changed_when: False

    - shell: systemctl daemon-reload
      changed_when: False

    - shell: find /var/lib/origin/openshift.local.volumes -type d -exec umount {} \; 2>/dev/null || true
      changed_when: False

    - shell: find /var/lib/atomic-enterprise/openshift.local.volumes -type d -exec umount {} \; 2>/dev/null || true
      changed_when: False

    - shell: find /var/lib/openshift/openshift.local.volumes -type d -exec umount {} \; 2>/dev/null || true
      changed_when: False

    - shell: docker rm -f "{{ item }}"-master "{{ item }}"-node
      changed_when: False
      failed_when: False
      with_items:
        - openshift-enterprise
        - atomic-enterprise
        - origin

    - shell: docker ps -a | grep Exited | egrep "{{ item }}" | awk '{print $1}'
      changed_when: False
      failed_when: False
      register: exited_containers_to_delete
      with_items:
        - aep3.*/aep
        - openshift3/ose
        - openshift/origin

    - shell: "docker rm {{ item.stdout_lines | join(' ') }}"
      changed_when: False
      failed_when: False
      with_items: "{{ exited_containers_to_delete.results }}"

    - shell: docker images | egrep {{ item }} | awk '{ print $3 }'
      changed_when: False
      failed_when: False
      register: images_to_delete
      with_items:
        - registry\.access\..*redhat\.com/openshift3
        - registry\.access\..*redhat\.com/aep3
        - registry\.access\..*redhat\.com/rhel7/etcd
        - docker.io/openshift

    - shell:  "docker rmi -f {{ item.stdout_lines | join(' ') }}"
      changed_when: False
      failed_when: False
      with_items: "{{ images_to_delete.results }}"
    
    - name: Remove sdn drop files
      file: 
        path: /run/openshift-sdn
        state: absent
        
    - name: restart docker
      service:
        name: docker
        state: restarted

    - name: Remove remaining files
      file: path={{ item }} state=absent
      with_items:
        - "~{{ ansible_ssh_user }}/.kube"
        - /etc/ansible/facts.d/openshift.fact
        - /etc/atomic-enterprise
        - /etc/corosync
        - /etc/etcd
        - /etc/openshift
        - /etc/openshift-sdn
        - /etc/origin
        - /etc/systemd/system/atomic-openshift-master.service
        - /etc/systemd/system/atomic-openshift-master-api.service
        - /etc/systemd/system/atomic-openshift-master-controllers.service
        - /etc/systemd/system/atomic-openshift-node.service
        - /etc/systemd/system/etcd_container.service
        - /etc/systemd/system/openvswitch.service
        - /etc/sysconfig/atomic-enterprise-master
        - /etc/sysconfig/atomic-enterprise-master-api
        - /etc/sysconfig/atomic-enterprise-master-controllers
        - /etc/sysconfig/atomic-enterprise-node
        - /etc/sysconfig/atomic-openshift-master
        - /etc/sysconfig/atomic-openshift-master-api
        - /etc/sysconfig/atomic-openshift-master-controllers
        - /etc/sysconfig/atomic-openshift-node
        - /etc/sysconfig/openshift-master
        - /etc/sysconfig/openshift-node
        - /etc/sysconfig/origin-master
        - /etc/sysconfig/origin-master-api
        - /etc/sysconfig/origin-master-controllers
        - /etc/sysconfig/origin-node
        - /etc/systemd/system/atomic-openshift-node.service.wants
        - /root/.kube
        - /run/openshift-sdn
        - /usr/share/openshift/examples
        - /var/lib/atomic-enterprise
        - /var/lib/etcd
        - /var/lib/openshift
        - /var/lib/origin
        - /var/lib/pacemaker
        - /usr/lib/systemd/system/atomic-openshift-master-api.service
        - /usr/lib/systemd/system/atomic-openshift-master-controllers.service
        - /usr/lib/systemd/system/origin-master-api.service
        - /usr/lib/systemd/system/origin-master-controllers.service

    # Since we are potentially removing the systemd unit files for separated
    # master-api and master-controllers services, so we need to reload the
    # systemd configuration manager
    - name: Reload systemd manager configuration
      command: systemctl daemon-reload

- hosts: nodes
  sudo: yes
  tasks:
    - name: restart docker
      service: name=docker state=restarted