[BUG] Salt-minion throws exception on pkg.install
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 5.6k
- Avg merge
- 2d 44m
- Merged PRs (30d)
- 80
Description
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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with salt/states/pkg.py:1934 and follow the call into salt/modules/aptpkg.py:807 and latest_version() at line 494. Reproduce the failure with the provided pkg.installed SLS on the stated Salt and Ubuntu versions, then verify the same package installation with version: latest completes without an exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devops, infrastructure
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 52/100