MCPcopy Create free account
hub / github.com/saltstack/salt / _get_upgradable

Function _get_upgradable

salt/modules/aptpkg.py:1436–1481  ·  view source on GitHub ↗

Utility function to get upgradable packages Sample return data: { 'pkgname': '1.2.3-45', ... }

(dist_upgrade=True, **kwargs)

Source from the content-addressed store, hash-verified

1434
1435
1436def _get_upgradable(dist_upgrade=True, **kwargs):
1437 """
1438 Utility function to get upgradable packages
1439
1440 Sample return data:
1441 { 'pkgname': '1.2.3-45', ... }
1442 """
1443
1444 cmd = ["apt-get", "--just-print"]
1445 if dist_upgrade:
1446 cmd.append("dist-upgrade")
1447 else:
1448 cmd.append("upgrade")
1449 try:
1450 cmd.extend(["-o", f"APT::Default-Release={kwargs['fromrepo']}"])
1451 except KeyError:
1452 pass
1453
1454 call = _call_apt(cmd)
1455 if call["retcode"] != 0:
1456 msg = "Failed to get upgrades"
1457 for key in ("stderr", "stdout"):
1458 if call[key]:
1459 msg += ": " + call[key]
1460 break
1461 raise CommandExecutionError(msg)
1462 else:
1463 out = call["stdout"]
1464
1465 # rexp parses lines that look like the following:
1466 # Conf libxfont1 (1:1.4.5-1 Debian:testing [i386])
1467 rexp = re.compile(r"(?m)^Conf ([^ ]+) \(([^ ]+)") # Package name # Version
1468 keys = ["name", "version"]
1469
1470 def _get(line, k):
1471 return line[keys.index(k)]
1472
1473 upgrades = rexp.findall(out)
1474
1475 ret = {}
1476 for line in upgrades:
1477 name = _get(line, "name")
1478 version_num = _get(line, "version")
1479 ret[name] = version_num
1480
1481 return ret
1482
1483
1484def list_upgrades(refresh=True, dist_upgrade=True, **kwargs):

Callers 1

list_upgradesFunction · 0.85

Calls 5

_call_aptFunction · 0.85
_getFunction · 0.85
appendMethod · 0.45
extendMethod · 0.45

Tested by

no test coverage detected