From e546bd7461d138b18809519bbb2c806b0a849496 Mon Sep 17 00:00:00 2001 From: Michael Calmer Date: Thu, 23 Jun 2022 10:45:25 +0200 Subject: [PATCH] add support for gpgautoimport to refresh_db in the zypperpkg module --- salt/modules/zypperpkg.py | 22 ++++++++- tests/unit/modules/test_zypperpkg.py | 67 ++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 2 deletions(-) diff --git a/salt/modules/zypperpkg.py b/salt/modules/zypperpkg.py index cd2ca181718..250b90078e3 100644 --- a/salt/modules/zypperpkg.py +++ b/salt/modules/zypperpkg.py @@ -1398,7 +1398,7 @@ def mod_repo(repo, **kwargs): return repo -def refresh_db(force=None, root=None): +def refresh_db(force=None, root=None, **kwargs): """ Trigger a repository refresh by calling ``zypper refresh``. Refresh will run with ``--force`` if the "force=True" flag is passed on the CLI or @@ -1409,6 +1409,17 @@ def refresh_db(force=None, root=None): {'': Bool} + gpgautoimport : False + If set to True, automatically trust and import public GPG key for + the repository. + + .. versionadded:: 3005 + + repos + Refresh just the specified repos + + .. versionadded:: 3005 + root operate on a different root directory. @@ -1429,11 +1440,18 @@ def refresh_db(force=None, root=None): salt.utils.pkg.clear_rtag(__opts__) ret = {} refresh_opts = ["refresh"] + global_opts = [] if force is None: force = __pillar__.get("zypper", {}).get("refreshdb_force", True) if force: refresh_opts.append("--force") - out = __zypper__(root=root).refreshable.call(*refresh_opts) + repos = kwargs.get("repos", []) + refresh_opts.extend([repos] if not isinstance(repos, list) else repos) + + if kwargs.get("gpgautoimport", False): + global_opts.append("--gpg-auto-import-keys") + + out = __zypper__(root=root).refreshable.call(*global_opts, *refresh_opts) for line in out.splitlines(): if not line: diff --git a/tests/unit/modules/test_zypperpkg.py b/tests/unit/modules/test_zypperpkg.py index 490fce67fc1..0c5c32a918e 100644 --- a/tests/unit/modules/test_zypperpkg.py +++ b/tests/unit/modules/test_zypperpkg.py @@ -391,6 +391,73 @@ class ZypperTestCase(TestCase, LoaderModuleMockMixin): zypper_mock.assert_called_with( ["zypper", "--non-interactive", "refresh", "--force"], **call_kwargs ) + zypper.refresh_db(gpgautoimport=True) + zypper_mock.assert_called_with( + [ + "zypper", + "--non-interactive", + "--gpg-auto-import-keys", + "refresh", + "--force", + ], + **call_kwargs + ) + zypper.refresh_db(gpgautoimport=True, force=True) + zypper_mock.assert_called_with( + [ + "zypper", + "--non-interactive", + "--gpg-auto-import-keys", + "refresh", + "--force", + ], + **call_kwargs + ) + zypper.refresh_db(gpgautoimport=True, force=False) + zypper_mock.assert_called_with( + [ + "zypper", + "--non-interactive", + "--gpg-auto-import-keys", + "refresh", + ], + **call_kwargs + ) + zypper.refresh_db( + gpgautoimport=True, + refresh=True, + repos="mock-repo-name", + root=None, + url="http://repo.url/some/path", + ) + zypper_mock.assert_called_with( + [ + "zypper", + "--non-interactive", + "--gpg-auto-import-keys", + "refresh", + "--force", + "mock-repo-name", + ], + **call_kwargs + ) + zypper.refresh_db( + gpgautoimport=True, + repos="mock-repo-name", + root=None, + url="http://repo.url/some/path", + ) + zypper_mock.assert_called_with( + [ + "zypper", + "--non-interactive", + "--gpg-auto-import-keys", + "refresh", + "--force", + "mock-repo-name", + ], + **call_kwargs + ) def test_info_installed(self): """