From 9b02230477391cd4bda861bb3e6a5d2640407363 Mon Sep 17 00:00:00 2001 From: Alexei Znamensky <103110+russoz@users.noreply.github.com> Date: Sun, 4 Jul 2021 02:31:30 +1200 Subject: [PATCH] snap - fixed param order (#2918) * fixed param order * added changelog fragment * rebased and uncommented tests per PR * added /snap link in RH * typo in tests * Update tests/integration/targets/snap/tasks/default.yml Co-authored-by: Felix Fontein --- .../fragments/2918-snap-param-order.yml | 2 + plugins/modules/packaging/os/snap.py | 8 +- .../targets/snap/tasks/default.yml | 6 ++ tests/integration/targets/snap/tasks/main.yml | 92 +++++++++---------- 4 files changed, 58 insertions(+), 50 deletions(-) create mode 100644 changelogs/fragments/2918-snap-param-order.yml diff --git a/changelogs/fragments/2918-snap-param-order.yml b/changelogs/fragments/2918-snap-param-order.yml new file mode 100644 index 0000000000..85b907f8b6 --- /dev/null +++ b/changelogs/fragments/2918-snap-param-order.yml @@ -0,0 +1,2 @@ +bugfixes: + - snap - fixed the order of the ``--classic`` parameter in the command line invocation (https://github.com/ansible-collections/community.general/issues/2916). diff --git a/plugins/modules/packaging/os/snap.py b/plugins/modules/packaging/os/snap.py index 8051b90445..6da8b0e766 100644 --- a/plugins/modules/packaging/os/snap.py +++ b/plugins/modules/packaging/os/snap.py @@ -133,10 +133,10 @@ class Snap(CmdStateModuleHelper): module = dict( argument_spec={ 'name': dict(type='list', elements='str', required=True), - 'state': dict(type='str', required=False, default='present', + 'state': dict(type='str', default='present', choices=['absent', 'present', 'enabled', 'disabled']), - 'classic': dict(type='bool', required=False, default=False), - 'channel': dict(type='str', required=False, default='stable'), + 'classic': dict(type='bool', default=False), + 'channel': dict(type='str', default='stable'), }, supports_check_mode=True, ) @@ -205,7 +205,7 @@ class Snap(CmdStateModuleHelper): self.vars.snaps_installed = actionable_snaps if self.module.check_mode: return - params = ['classic', 'channel', 'state'] # get base cmd parts + params = ['state', 'classic', 'channel'] # get base cmd parts has_one_pkg_params = bool(self.vars.classic) or self.vars.channel != 'stable' has_multiple_snaps = len(actionable_snaps) > 1 if has_one_pkg_params and has_multiple_snaps: diff --git a/tests/integration/targets/snap/tasks/default.yml b/tests/integration/targets/snap/tasks/default.yml index 4cc38f7bf2..938addc33a 100644 --- a/tests/integration/targets/snap/tasks/default.yml +++ b/tests/integration/targets/snap/tasks/default.yml @@ -10,6 +10,12 @@ name: snapd state: started +- name: Create link /snap + file: + src: /var/lib/snapd/snap + dest: /snap + state: link + - name: Inform that snap is installed set_fact: has_snap: true diff --git a/tests/integration/targets/snap/tasks/main.yml b/tests/integration/targets/snap/tasks/main.yml index 6e877cd0de..0f8c9b4c26 100644 --- a/tests/integration/targets/snap/tasks/main.yml +++ b/tests/integration/targets/snap/tasks/main.yml @@ -96,50 +96,50 @@ - remove_again is not changed - remove_again_check is not changed -# - name: Make sure package from classic snap is not installed -# community.general.snap: -# name: nvim -# state: absent -# -# - name: Install package from classic snap -# community.general.snap: -# name: nvim -# state: present -# classic: true -# register: classic_install -# -# # testing classic idempotency -# - name: Install package from classic snap again -# community.general.snap: -# name: nvim -# state: present -# classic: true -# register: classic_install_again -# -# - name: Assert package has been installed just once -# assert: -# that: -# - classic_install is changed -# - classic_install_again is not changed -# -# # this is just testing if a package which has been installed -# # with true classic can be removed without setting classic to true -# - name: Remove package from classic snap without setting classic to true -# community.general.snap: -# name: nvim -# state: absent -# register: classic_remove_without_true_classic -# -# - name: Remove package from classic snap with setting classic to true -# community.general.snap: -# name: nvim -# state: absent -# classic: true -# register: classic_remove_with_true_classic -# -# - name: Assert package has been removed without setting classic to true -# assert: -# that: -# - classic_remove_without_ture_classic is changed -# - classic_remove_with_ture_classic is not changed + - name: Make sure package from classic snap is not installed + community.general.snap: + name: nvim + state: absent + + - name: Install package from classic snap + community.general.snap: + name: nvim + state: present + classic: true + register: classic_install + + # testing classic idempotency + - name: Install package from classic snap again + community.general.snap: + name: nvim + state: present + classic: true + register: classic_install_again + + - name: Assert package has been installed just once + assert: + that: + - classic_install is changed + - classic_install_again is not changed + + # this is just testing if a package which has been installed + # with true classic can be removed without setting classic to true + - name: Remove package from classic snap without setting classic to true + community.general.snap: + name: nvim + state: absent + register: classic_remove_without_true_classic + + - name: Remove package from classic snap with setting classic to true + community.general.snap: + name: nvim + state: absent + classic: true + register: classic_remove_with_true_classic + + - name: Assert package has been removed without setting classic to true + assert: + that: + - classic_remove_without_true_classic is changed + - classic_remove_with_true_classic is not changed when: has_snap