From 880370cb14b1bd7a1f88fe8a698f56b130e64ab0 Mon Sep 17 00:00:00 2001 From: luna Date: Sat, 25 Sep 2021 08:35:05 -0300 Subject: [PATCH] Add 'available' as an argument to apk.upgrade (#660) * Add 'available' as an argument to apk.upgrade * Add documentation on 'available' parameter * Add `apk.upgrade` available test. Co-authored-by: Nick Barrett --- pyinfra/operations/apk.py | 9 +++++++-- tests/operations/apk.upgrade/upgrade_available.json | 11 +++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 tests/operations/apk.upgrade/upgrade_available.json diff --git a/pyinfra/operations/apk.py b/pyinfra/operations/apk.py index 6e330c1d6..33a2673cb 100644 --- a/pyinfra/operations/apk.py +++ b/pyinfra/operations/apk.py @@ -9,12 +9,17 @@ @operation -def upgrade(state=None, host=None): +def upgrade(available=False, state=None, host=None): ''' Upgrades all apk packages. + + + available: force all packages to be upgraded (recommended on whole Alpine version upgrades) ''' - yield 'apk upgrade' + if available: + yield 'apk upgrade --available' + else: + yield 'apk upgrade' _upgrade = upgrade # noqa: E305 diff --git a/tests/operations/apk.upgrade/upgrade_available.json b/tests/operations/apk.upgrade/upgrade_available.json new file mode 100644 index 000000000..4ed1c58ae --- /dev/null +++ b/tests/operations/apk.upgrade/upgrade_available.json @@ -0,0 +1,11 @@ +{ + "args": [], + "kwargs": { + "available": true + }, + "commands": [ + "apk upgrade --available" + ], + "idempotent": false, + "disable_itempotent_warning_reason": "package upgrades are always executed" +}