# 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 uninstalltion 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:
        - "'invocation' in yum_result"
        - "'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"
 

