mirror of
https://github.com/saltstack/salt.git
synced 2025-04-16 09:40:20 +00:00
Add names and pkgs parameters to zypper.upgrade
Fixes https://github.com/saltstack/salt/issues/62030
This commit is contained in:
parent
4398d59c10
commit
bb1fe9cf22
3 changed files with 52 additions and 6 deletions
1
changelog/62030.fixed
Normal file
1
changelog/62030.fixed
Normal file
|
@ -0,0 +1 @@
|
|||
Fix inconsitency regarding name and pkgs parameters between zypperpkg.upgrade() and yumpkg.upgrade()
|
|
@ -1744,6 +1744,8 @@ def install(
|
|||
|
||||
|
||||
def upgrade(
|
||||
name=None,
|
||||
pkgs=None,
|
||||
refresh=True,
|
||||
dryrun=False,
|
||||
dist_upgrade=False,
|
||||
|
@ -1771,6 +1773,27 @@ def upgrade(
|
|||
|
||||
Run a full system upgrade, a zypper upgrade
|
||||
|
||||
name
|
||||
The name of the package to be installed. Note that this parameter is
|
||||
ignored if ``pkgs`` is passed or if ``dryrun`` is set to True.
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' pkg.install name=<package name>
|
||||
|
||||
pkgs
|
||||
A list of packages to install from a software repository. Must be
|
||||
passed as a python list. Note that this parameter is ignored if
|
||||
``dryrun`` is set to True.
|
||||
|
||||
CLI Examples:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' pkg.install pkgs='["foo", "bar"]'
|
||||
|
||||
refresh
|
||||
force a refresh if set to True (default).
|
||||
If set to False it depends on zypper if a refresh is
|
||||
|
@ -1855,6 +1878,17 @@ def upgrade(
|
|||
__zypper__(systemd_scope=_systemd_scope(), root=root).noraise.call(
|
||||
*cmd_update + ["--debug-solver"]
|
||||
)
|
||||
else:
|
||||
if name or pkgs:
|
||||
try:
|
||||
(pkg_params, _) = __salt__["pkg_resource.parse_targets"](
|
||||
name=name, pkgs=pkgs, sources=None, **kwargs
|
||||
)
|
||||
if pkg_params:
|
||||
cmd_update.extend(pkg_params.keys())
|
||||
|
||||
except MinionError as exc:
|
||||
raise CommandExecutionError(exc)
|
||||
|
||||
old = list_pkgs(root=root)
|
||||
|
||||
|
|
|
@ -21,8 +21,9 @@ def configure_loader_modules():
|
|||
"rpm": None,
|
||||
"_systemd_scope": MagicMock(return_value=False),
|
||||
"osrelease_info": [15, 3],
|
||||
"__salt__": {"pkg_resource.parse_targets": pkg_resource.parse_targets},
|
||||
},
|
||||
pkg_resource: {},
|
||||
pkg_resource: {"__grains__": {"os": "SUSE"}},
|
||||
}
|
||||
|
||||
|
||||
|
@ -224,14 +225,17 @@ def test_pkg_list_holds():
|
|||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"package,pre_version,post_version,fromrepo_param",
|
||||
"package,pre_version,post_version,fromrepo_param,name_param,pkgs_param",
|
||||
[
|
||||
("vim", "1.1", "1.2", []),
|
||||
("kernel-default", "1.1", "1.1,1.2", ["dummy", "dummy2"]),
|
||||
("vim", "1.1", "1.2", [], "", []),
|
||||
("kernel-default", "1.1", "1.1,1.2", ["dummy", "dummy2"], "", []),
|
||||
("vim", "1.1", "1.2", [], "vim", []),
|
||||
],
|
||||
)
|
||||
@patch.object(zypper, "refresh_db", MagicMock(return_value=True))
|
||||
def test_upgrade(package, pre_version, post_version, fromrepo_param):
|
||||
def test_upgrade(
|
||||
package, pre_version, post_version, fromrepo_param, name_param, pkgs_param
|
||||
):
|
||||
with patch(
|
||||
"salt.modules.zypperpkg.__zypper__.noraise.call"
|
||||
) as zypper_mock, patch.object(
|
||||
|
@ -243,7 +247,14 @@ def test_upgrade(package, pre_version, post_version, fromrepo_param):
|
|||
for repo in fromrepo_param:
|
||||
expected_call.extend(["--repo", repo])
|
||||
|
||||
result = zypper.upgrade(fromrepo=fromrepo_param)
|
||||
if pkgs_param:
|
||||
expected_call.extend(pkgs_param)
|
||||
elif name_param:
|
||||
expected_call.append(name_param)
|
||||
|
||||
result = zypper.upgrade(
|
||||
name=name_param, pkgs=pkgs_param, fromrepo=fromrepo_param
|
||||
)
|
||||
zypper_mock.assert_any_call(*expected_call)
|
||||
assert result == {package: {"old": pre_version, "new": post_version}}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue