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(
|
def upgrade(
|
||||||
|
name=None,
|
||||||
|
pkgs=None,
|
||||||
refresh=True,
|
refresh=True,
|
||||||
dryrun=False,
|
dryrun=False,
|
||||||
dist_upgrade=False,
|
dist_upgrade=False,
|
||||||
|
@ -1771,6 +1773,27 @@ def upgrade(
|
||||||
|
|
||||||
Run a full system upgrade, a zypper 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
|
refresh
|
||||||
force a refresh if set to True (default).
|
force a refresh if set to True (default).
|
||||||
If set to False it depends on zypper if a refresh is
|
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(
|
__zypper__(systemd_scope=_systemd_scope(), root=root).noraise.call(
|
||||||
*cmd_update + ["--debug-solver"]
|
*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)
|
old = list_pkgs(root=root)
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,9 @@ def configure_loader_modules():
|
||||||
"rpm": None,
|
"rpm": None,
|
||||||
"_systemd_scope": MagicMock(return_value=False),
|
"_systemd_scope": MagicMock(return_value=False),
|
||||||
"osrelease_info": [15, 3],
|
"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(
|
@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", []),
|
("vim", "1.1", "1.2", [], "", []),
|
||||||
("kernel-default", "1.1", "1.1,1.2", ["dummy", "dummy2"]),
|
("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))
|
@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(
|
with patch(
|
||||||
"salt.modules.zypperpkg.__zypper__.noraise.call"
|
"salt.modules.zypperpkg.__zypper__.noraise.call"
|
||||||
) as zypper_mock, patch.object(
|
) as zypper_mock, patch.object(
|
||||||
|
@ -243,7 +247,14 @@ def test_upgrade(package, pre_version, post_version, fromrepo_param):
|
||||||
for repo in fromrepo_param:
|
for repo in fromrepo_param:
|
||||||
expected_call.extend(["--repo", repo])
|
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)
|
zypper_mock.assert_any_call(*expected_call)
|
||||||
assert result == {package: {"old": pre_version, "new": post_version}}
|
assert result == {package: {"old": pre_version, "new": post_version}}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue