2016-10-31 18:38:31 +01:00
|
|
|
# UNINSTALL 'python2-dnf'
|
|
|
|
# The `dnf` module has the smarts to auto-install the relevant python
|
|
|
|
# bindings. To test, we will first uninstall python2-dnf (so that the tests
|
|
|
|
# on python2 will require python2-dnf)
|
|
|
|
- name: check python2-dnf with rpm
|
|
|
|
shell: rpm -q python2-dnf
|
|
|
|
register: rpm_result
|
|
|
|
ignore_errors: true
|
|
|
|
|
|
|
|
# Don't uninstall python2-dnf with the `dnf` module in case it needs to load
|
|
|
|
# some dnf python files after the package is uninstalled.
|
|
|
|
- name: uninstall python2-dnf with shell
|
|
|
|
shell: dnf -y remove python2-dnf
|
|
|
|
when: rpm_result|success
|
|
|
|
|
|
|
|
# UNINSTALL
|
|
|
|
# With 'python2-dnf' uninstalled, the first call to 'dnf' should install
|
|
|
|
# python2-dnf.
|
|
|
|
- name: uninstall sos
|
|
|
|
dnf:
|
|
|
|
name: sos
|
|
|
|
state: removed
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: check sos with rpm
|
|
|
|
shell: rpm -q sos
|
|
|
|
failed_when: False
|
|
|
|
register: rpm_result
|
|
|
|
|
|
|
|
- debug: var=dnf_result
|
|
|
|
- debug: var=rpm_result
|
|
|
|
|
|
|
|
- name: verify uninstallation of sos
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.failed | default(False)"
|
|
|
|
- "rpm_result.rc == 1"
|
|
|
|
|
|
|
|
# UNINSTALL AGAIN
|
|
|
|
- name: uninstall sos
|
|
|
|
dnf:
|
|
|
|
name: sos
|
|
|
|
state: removed
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: verify no change on re-uninstall
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.changed"
|
|
|
|
|
|
|
|
# INSTALL
|
|
|
|
- name: install sos
|
|
|
|
dnf:
|
|
|
|
name: sos
|
|
|
|
state: present
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: check sos with rpm
|
|
|
|
shell: rpm -q sos
|
|
|
|
failed_when: False
|
|
|
|
register: rpm_result
|
|
|
|
|
|
|
|
- debug: var=dnf_result
|
|
|
|
- debug: var=rpm_result
|
|
|
|
|
|
|
|
- name: verify installation of sos
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.failed | default(False)"
|
|
|
|
- "dnf_result.changed"
|
|
|
|
- "rpm_result.rc == 0"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'results' in dnf_result"
|
|
|
|
|
|
|
|
# INSTALL AGAIN
|
|
|
|
- name: install sos again
|
|
|
|
dnf:
|
|
|
|
name: sos
|
|
|
|
state: present
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: verify no change on second install
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.changed"
|
|
|
|
|
|
|
|
# Multiple packages
|
|
|
|
- name: uninstall sos and sharutils
|
|
|
|
dnf: name=sos,sharutils state=removed
|
|
|
|
register: dnf_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
|
|
|
|
dnf: name=sos,sharutils state=present
|
|
|
|
register: dnf_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:
|
|
|
|
- "not dnf_result.failed | default(False)"
|
|
|
|
- "dnf_result.changed"
|
|
|
|
- "rpm_sos_result.rc == 0"
|
|
|
|
- "rpm_sharutils_result.rc == 0"
|
|
|
|
|
|
|
|
- name: uninstall sos and sharutils
|
|
|
|
dnf: name=sos,sharutils state=removed
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: install sos and sharutils as list
|
|
|
|
dnf:
|
|
|
|
name:
|
|
|
|
- sos
|
|
|
|
- sharutils
|
|
|
|
state: present
|
|
|
|
register: dnf_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:
|
|
|
|
- "not dnf_result.failed | default(False)"
|
|
|
|
- "dnf_result.changed"
|
|
|
|
- "rpm_sos_result.rc == 0"
|
|
|
|
- "rpm_sharutils_result.rc == 0"
|
|
|
|
|
|
|
|
- name: uninstall sos and sharutils
|
|
|
|
dnf:
|
|
|
|
name: "sos,sharutils"
|
|
|
|
state: removed
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: install sos and sharutils as comma separated with spaces
|
|
|
|
dnf:
|
|
|
|
name: "sos, sharutils"
|
|
|
|
state: present
|
|
|
|
register: dnf_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:
|
|
|
|
- "not dnf_result.failed | default(False)"
|
|
|
|
- "dnf_result.changed"
|
|
|
|
- "rpm_sos_result.rc == 0"
|
|
|
|
- "rpm_sharutils_result.rc == 0"
|
|
|
|
|
|
|
|
- name: uninstall sos and sharutils
|
|
|
|
dnf:
|
|
|
|
name:
|
|
|
|
- sos
|
|
|
|
- sharutils
|
|
|
|
state: removed
|
|
|
|
|
|
|
|
- name: install non-existent rpm
|
|
|
|
dnf:
|
|
|
|
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
|
2017-01-05 09:24:20 +01:00
|
|
|
|
|
|
|
# Install in installroot='/'. This should be identical to default
|
|
|
|
- name: install sos in /
|
|
|
|
dnf: name=sos state=present installroot='/'
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: check sos with rpm in /
|
|
|
|
shell: rpm -q sos --root=/
|
|
|
|
failed_when: False
|
|
|
|
register: rpm_result
|
|
|
|
|
|
|
|
- debug: var=dnf_result
|
|
|
|
- debug: var=rpm_result
|
|
|
|
|
|
|
|
- name: verify installation of sos in /
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.failed | default(False)"
|
|
|
|
- "dnf_result.changed"
|
|
|
|
- "rpm_result.rc == 0"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs in /
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'results' in dnf_result"
|
|
|
|
|
|
|
|
- name: uninstall sos in /
|
|
|
|
dnf: name=sos installroot='/'
|
|
|
|
register: dnf_result
|
2017-07-31 14:54:34 +02:00
|
|
|
|
|
|
|
# GROUP INSTALL
|
2017-08-05 06:12:35 +02:00
|
|
|
# Using 'Books and Guides' because it is only 5 packages and a 7.3 M download on Fedora 26.
|
|
|
|
# It also doesn't install anything that will tamper with our Python environment.
|
|
|
|
- name: install Books and Guides group
|
2017-07-31 14:54:34 +02:00
|
|
|
dnf:
|
2017-08-05 06:12:35 +02:00
|
|
|
name: "@Books and Guides"
|
2017-07-31 14:54:34 +02:00
|
|
|
state: present
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- debug: var=dnf_result
|
|
|
|
|
|
|
|
- name: verify installation of the group
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.failed | default(False)"
|
|
|
|
- "dnf_result.changed"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'results' in dnf_result"
|
|
|
|
|
2017-08-31 17:34:46 +02:00
|
|
|
- name: install the group again
|
|
|
|
dnf:
|
|
|
|
name: "@Books and Guides"
|
|
|
|
state: present
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: verify nothing changed
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.changed"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'msg' in dnf_result"
|
|
|
|
|
|
|
|
- name: install the group again but also with a package that is not yet installed
|
|
|
|
dnf:
|
|
|
|
name:
|
|
|
|
- "@Books and Guides"
|
|
|
|
- bc
|
|
|
|
state: present
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: verify bc is installed
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "dnf_result.changed"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'results' in dnf_result"
|
|
|
|
|
|
|
|
- name: try to install the group again, with --check to check 'changed'
|
|
|
|
dnf:
|
|
|
|
name: "@Books and Guides"
|
|
|
|
state: present
|
|
|
|
check_mode: yes
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- name: verify nothing changed
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.changed"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'msg' in dnf_result"
|
|
|
|
|
2017-07-31 14:54:34 +02:00
|
|
|
# cleanup until https://github.com/ansible/ansible/issues/27377 is resolved
|
2017-08-05 06:12:35 +02:00
|
|
|
- shell: dnf -y group install "Books and Guides" && dnf -y group remove "Books and Guides"
|
2017-07-31 14:54:34 +02:00
|
|
|
|
|
|
|
# GROUP UPGRADE - this will go to the same method as group install
|
|
|
|
# but through group_update - it is its invocation we're testing here
|
|
|
|
# see commit 119c9e5d6eb572c4a4800fbe8136095f9063c37b
|
2017-08-05 06:12:35 +02:00
|
|
|
- name: install latest Books and Guides
|
2017-07-31 14:54:34 +02:00
|
|
|
dnf:
|
2017-08-05 06:12:35 +02:00
|
|
|
name: "@Books and Guides"
|
2017-07-31 14:54:34 +02:00
|
|
|
state: latest
|
|
|
|
register: dnf_result
|
|
|
|
|
|
|
|
- debug: var=dnf_result
|
|
|
|
|
|
|
|
- name: verify installation of the group
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.failed | default(False)"
|
|
|
|
- "dnf_result.changed"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'results' in dnf_result"
|
|
|
|
|
|
|
|
# cleanup until https://github.com/ansible/ansible/issues/27377 is resolved
|
2017-08-05 06:12:35 +02:00
|
|
|
- shell: dnf -y group install "Books and Guides" && dnf -y group remove "Books and Guides"
|
2017-08-31 17:34:46 +02:00
|
|
|
|
|
|
|
- name: try to install non existing group
|
|
|
|
dnf:
|
|
|
|
name: "@non-existing-group"
|
|
|
|
state: present
|
|
|
|
register: dnf_result
|
|
|
|
ignore_errors: True
|
|
|
|
|
|
|
|
- name: verify installation of the non existing group failed
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "not dnf_result.changed"
|
|
|
|
- "dnf_result|failed"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'msg' in dnf_result"
|
|
|
|
|
|
|
|
- name: try to install non existing file
|
|
|
|
dnf:
|
|
|
|
name: /tmp/non-existing-1.0.0.fc26.noarch.rpm
|
|
|
|
state: present
|
|
|
|
register: dnf_result
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: verify installation failed
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "dnf_result|failed"
|
|
|
|
- "not dnf_result.changed"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'msg' in dnf_result"
|
|
|
|
|
|
|
|
- name: try to install from non existing url
|
|
|
|
dnf:
|
|
|
|
name: http://non-existing.com/non-existing-1.0.0.fc26.noarch.rpm
|
|
|
|
state: present
|
|
|
|
register: dnf_result
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: verify installation failed
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "dnf_result|failed"
|
|
|
|
- "not dnf_result.changed"
|
|
|
|
|
|
|
|
- name: verify dnf module outputs
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- "'changed' in dnf_result"
|
|
|
|
- "'msg' in dnf_result"
|