salt
salt copied to clipboard
[BUG] Salt-minion throws exception on pkg.install
Description Stacktrace (from minion version 3007.1):
Traceback (most recent call last):
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/state.py", line 2428, in call
ret = self.states[cdata["full"]](
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 160, in __call__
ret = self.loader.run(run_func, *args, **kwargs)
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1269, in run
return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1284, in _run_as
return _func_or_method(*args, **kwargs)
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1317, in wrapper
return f(*args, **kwargs)
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/states/pkg.py", line 1934, in installed
pkg_ret = __salt__["pkg.install"](
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 160, in __call__
ret = self.loader.run(run_func, *args, **kwargs)
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1269, in run
return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1284, in _run_as
return _func_or_method(*args, **kwargs)
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/aptpkg.py", line 807, in install
_latest_version = latest_version(name, refresh=False, show_installed=True)
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/aptpkg.py", line 494, in latest_version
short_names = [nom.split(":", maxsplit=1)[0] for nom in names]
File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/aptpkg.py", line 494, in <listcomp>
short_names = [nom.split(":", maxsplit=1)[0] for nom in names]
AttributeError: 'NoneType' object has no attribute 'split'
In essence, salt/states/pkg.py:1934 (call to __salt__["pkg.install"]) explicitly sets name to None. This value is propagated through salt/modules/aptpkg.py:807 (install()), to latest_version() in the same file. latest_version() receives a list containing the None from its names parameter, and blows up.
Setup SLS snippet:
Install unattended-upgrades:
pkg.installed:
- pkgs:
- ubuntu-standard
- unattended-upgrades
- version: latest
- refresh: True
Expected behavior No exception, installs packages to minion.
Versions Report Salt Minion version: 3007.1
Salt Master Version: 3002.9
Dependency Versions: cffi: Not Installed cherrypy: Not Installed dateutil: 2.7.3 docker-py: Not Installed gitdb: Not Installed gitpython: Not Installed Jinja2: 2.10.1 libgit2: 0.28.3 M2Crypto: Not Installed Mako: Not Installed msgpack: 0.6.2 msgpack-pure: Not Installed mysql-python: Not Installed pycparser: Not Installed pycrypto: Not Installed pycryptodome: 3.6.1 pygit2: 1.0.3 Python: 3.8.10 (default, Jul 29 2024, 17:02:10) python-gnupg: 0.4.5 PyYAML: 5.3.1 PyZMQ: 18.1.1 smmap: Not Installed timelib: Not Installed Tornado: 4.5.3 ZMQ: 4.3.2
System Versions: dist: ubuntu 20.04 focal locale: utf-8 machine: x86_64 release: 5.15.0-1038-gcp system: Linux version: Ubuntu 20.04 focal
Hi there! Welcome to the Salt Community! Thank you for making your first contribution. We have a lengthy process for issues and PRs. Someone from the Core Team will follow up as soon as possible. In the meantime, here’s some information that may help as you continue your Salt journey. Please be sure to review our Code of Conduct. Also, check out some of our community resources including:
- Community Wiki
- Salt’s Contributor Guide
- Join our Community Slack
- IRC on LiberaChat
- Salt Project YouTube channel
- Salt Project Twitch channel
There are lots of ways to get involved in our community. Every month, there are around a dozen opportunities to meet with other contributors and the Salt Core team and collaborate in real time. The best way to keep track is by subscribing to the Salt Community Events Calendar. If you have additional questions, email us at [email protected]. We’re glad you’ve joined our community and look forward to doing awesome things with you!
I managed to circumvent the problem by adding a check in salt/modules/aptpkg.py l.494:
short_names = [nom.split(":", maxsplit=1)[0] for nom in names if nom]
To exclude the None-value