add support for gpgautoimport to refresh_db in the zypperpkg module

This commit is contained in:
Michael Calmer 2022-06-23 10:45:25 +02:00 committed by Daniel Wozniak
parent 37d4aa2615
commit e546bd7461
2 changed files with 87 additions and 2 deletions

View file

@ -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):
{'<database name>': 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:

View file

@ -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):
"""