# UNINSTALL 'yum-utils'
#  The `yum` module has the smarts to auto-install `yum-utils`.  To test, we
#  will first uninstall `yum-utils`.
- name: check yum-utils with rpm
  shell: rpm -q yum-utils
  register: rpm_result
  ignore_errors: true

# Don't uninstall yum-utils with the `yum` module, it would be bad.  The `yum`
# module does some `repoquery` magic after removing a package.  It fails when you
# remove `yum-utils.
- name: uninstall yum-utils with shell
  shell: yum -y remove yum-utils
  when: rpm_result|success

# UNINSTALL
#   With 'yum-utils' uninstalled, the first call to 'yum' should install
#   yum-utils.
- name: uninstall sos
  yum: name=sos state=removed
  register: yum_result

- name: check sos with rpm
  shell: rpm -q sos
  failed_when: False
  register: rpm_result

- debug: var=yum_result
- debug: var=rpm_result

- name: verify uninstallation of sos
  assert:
    that:
        - "yum_result.rc == 0"
        - "rpm_result.rc == 1"

# UNINSTALL AGAIN
- name: uninstall sos again
  yum: name=sos state=removed
  register: yum_result

- name: verify no change on re-uninstall
  assert:
    that:
        - "not yum_result.changed"

# INSTALL
- name: install sos
  yum: name=sos state=present
  register: yum_result

- name: check sos with rpm
  shell: rpm -q sos
  failed_when: False
  register: rpm_result

- debug: var=yum_result
- debug: var=rpm_result

- name: verify installation of sos
  assert:
    that:
        - "yum_result.rc == 0"
        - "yum_result.changed"
        - "rpm_result.rc == 0"

- name: verify yum module outputs
  assert:
    that:
        - "'changed' in yum_result"
        - "'msg' in yum_result"
        - "'rc' in yum_result"
        - "'results' in yum_result"

# INSTALL AGAIN
- name: install sos again
  yum: name=sos state=present
  register: yum_result

- name: verify no change on second install
  assert:
    that:
        - "not yum_result.changed"

# Multiple packages
- name: uninstall sos and sharutils
  yum: name=sos,sharutils state=removed
  register: yum_result

- name: check sos with rpm
  shell: rpm -q sos
  failed_when: False
  register: rpm_sos_result

- name: check sharutils with rpm
  shell: rpm -q sharutils
  failed_when: False
  register: rpm_sharutils_result

- name: verify packages installed
  assert:
    that:
        - "rpm_sos_result.rc != 0"
        - "rpm_sharutils_result.rc != 0"

- name: install sos and sharutils as comma separated
  yum: name=sos,sharutils state=present
  register: yum_result

- name: check sos with rpm
  shell: rpm -q sos
  failed_when: False
  register: rpm_sos_result

- name: check sharutils with rpm
  shell: rpm -q sharutils
  failed_when: False
  register: rpm_sharutils_result

- name: verify packages installed
  assert:
    that:
        - "yum_result.rc == 0"
        - "yum_result.changed"
        - "rpm_sos_result.rc == 0"
        - "rpm_sharutils_result.rc == 0"

- name: uninstall sos and sharutils
  yum: name=sos,sharutils state=removed
  register: yum_result

- name: install sos and sharutils as list
  yum:
    name:
      - sos
      - sharutils
    state: present
  register: yum_result

- name: check sos with rpm
  shell: rpm -q sos
  failed_when: False
  register: rpm_sos_result

- name: check sharutils with rpm
  shell: rpm -q sharutils
  failed_when: False
  register: rpm_sharutils_result

- name: verify packages installed
  assert:
    that:
        - "yum_result.rc == 0"
        - "yum_result.changed"
        - "rpm_sos_result.rc == 0"
        - "rpm_sharutils_result.rc == 0"

- name: uninstall sos and sharutils
  yum: name=sos,sharutils state=removed
  register: yum_result

- name: install sos and sharutils as comma separated with spaces
  yum:
    name: "sos, sharutils"
    state: present
  register: yum_result

- name: check sos with rpm
  shell: rpm -q sos
  failed_when: False
  register: rpm_sos_result

- name: check sos with rpm
  shell: rpm -q sharutils
  failed_when: False
  register: rpm_sharutils_result

- name: verify packages installed
  assert:
    that:
        - "yum_result.rc == 0"
        - "yum_result.changed"
        - "rpm_sos_result.rc == 0"
        - "rpm_sharutils_result.rc == 0"

- name: uninstall sos and sharutils
  yum: name=sos,sharutils state=removed

- name: install non-existent rpm 
  yum: name="{{ item }}"
  with_items:
  - does-not-exist
  register: non_existent_rpm
  ignore_errors: True

- name: check non-existent rpm install failed
  assert:
    that:
    - non_existent_rpm|failed