salt: [BUG] [v3005.1] salt-ssh crashes when dependency importlib_metadata is at version >=5.0.0

Description With Salt 3005 and importlib_metadata 5.0.0 I get this crash when running salt-ssh:

# time salt-ssh '*' state.apply setup
/usr/lib/python3.8/site-packages/_distutils_hack/__init__.py:33: UserWarning: Setuptools is replacing distutils.
  warnings.warn("Setuptools is replacing distutils.")
[ERROR   ] 'EntryPoints' object has no attribute 'items'
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/salt/utils/parsers.py", line 212, in parse_args
    mixin_after_parsed_func(self)
  File "/usr/lib/python3.8/site-packages/salt/utils/parsers.py", line 905, in __setup_logging
    salt._logging.setup_logging()
  File "/usr/lib/python3.8/site-packages/salt/_logging/impl.py", line 971, in setup_logging
    setup_extended_logging(opts)
  File "/usr/lib/python3.8/site-packages/salt/_logging/impl.py", line 878, in setup_extended_logging
    providers = salt.loader.log_handlers(opts)
  File "/usr/lib/python3.8/site-packages/salt/loader/__init__.py", line 857, in log_handlers
    _module_dirs(
  File "/usr/lib/python3.8/site-packages/salt/loader/__init__.py", line 153, in _module_dirs
    for entry_point in entrypoints.iter_entry_points("salt.loader"):
  File "/usr/lib/python3.8/site-packages/salt/utils/entrypoints.py", line 29, in _wrapped
    return f(*args, **kwargs)
  File "/usr/lib/python3.8/site-packages/salt/utils/entrypoints.py", line 41, in iter_entry_points
    for entry_point_group, entry_points_list in entry_points.items():
AttributeError: 'EntryPoints' object has no attribute 'items'
Usage: salt-ssh [options] '<target>' <function> [arguments]

After downgrading importlib_metadata to 4.13.0 things are working fine again. Please make Salt work with importlib_metadata >=5.0.0. Thank you!

Related: https://github.com/python/importlib_metadata/issues/409

Setup (Please provide relevant configs and/or SLS files (be sure to remove sensitive info. There is no general set-up of Salt.)

Please be as specific as possible and give set-up details.

  • on-prem machine
  • VM (Virtualbox, KVM, etc. please specify)
  • VM running on a cloud service, please be explicit and add details
  • container (Kubernetes, Docker, containerd, etc. please specify)
  • or a combination, please be explicit
  • jails if it is FreeBSD
  • classic packaging
  • onedir packaging
  • used bootstrap to install

Steps to Reproduce the behavior See description

Expected behavior No crash

Screenshots none

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
PASTE HERE

Additional context Add any other context about the problem here.

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 2
  • Comments: 23 (5 by maintainers)

Commits related to this issue

Most upvoted comments

Seeing this on Salt 3003.5 + Ubuntu 20.04 too:

root@ip-10-0-2-153:/home/ubuntu# salt-call --versions
Traceback (most recent call last):
  File "/usr/bin/salt-call", line 11, in <module>
    load_entry_point('salt==3003.5', 'console_scripts', 'salt-call')()
  File "/usr/lib/python3/dist-packages/salt/scripts.py", line 449, in salt_call
    client.run()
  File "/usr/lib/python3/dist-packages/salt/cli/call.py", line 22, in run
    self.parse_args()
  File "/usr/lib/python3/dist-packages/salt/utils/parsers.py", line 177, in parse_args
    self.print_versions_report()
  File "/usr/lib/python3/dist-packages/salt/utils/parsers.py", line 246, in print_versions_report
    print("\n".join(version.versions_report()), file=file, flush=True)
  File "/usr/lib/python3/dist-packages/salt/version.py", line 801, in versions_report
    ver_info = versions_information(
  File "/usr/lib/python3/dist-packages/salt/version.py", line 791, in versions_information
    extensions_info = extensions_information()
  File "/usr/lib/python3/dist-packages/salt/version.py", line 767, in extensions_information
    for entry_point in salt.utils.entrypoints.iter_entry_points("salt.loader"):
  File "/usr/lib/python3/dist-packages/salt/utils/entrypoints.py", line 62, in iter_entry_points
    for entry_point_group, entry_points_list in entry_points.items():
AttributeError: 'EntryPoints' object has no attribute 'items'

Downgrading importlib_metadata:

root@ip-10-0-2-153:/home/ubuntu# pip3 install 'importlib_metadata==4.13.0'
Collecting importlib_metadata==4.13.0
  Downloading importlib_metadata-4.13.0-py3-none-any.whl (23 kB)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.8/dist-packages (from importlib_metadata==4.13.0) (3.9.0)
Installing collected packages: importlib_metadata
  Attempting uninstall: importlib_metadata
    Found existing installation: importlib-metadata 5.0.0
    Uninstalling importlib-metadata-5.0.0:
      Successfully uninstalled importlib-metadata-5.0.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
launchpadlib 1.10.13 requires testresources, which is not installed.
Successfully installed importlib_metadata-4.13.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

WARNING: Running pip as the ‘root’ user can result in broken permissions and conflicting behaviour with the system package

(I know, I know)

After downgrade:


root@ip-10-0-2-153:/home/ubuntu# salt-call --versions
Salt Version:
          Salt: 3003.5
 
Dependency Versions:
          cffi: 1.15.1
      cherrypy: Not Installed
      dateutil: 2.7.3
     docker-py: 4.1.0
         gitdb: Not Installed
     gitpython: Not Installed
        Jinja2: 2.10.1
       libgit2: Not Installed
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 0.6.2
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     pycparser: 2.21
      pycrypto: Not Installed
  pycryptodome: 3.6.1
        pygit2: Not Installed
        Python: 3.8.10 (default, Mar 15 2022, 12:22:08)
  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.11.0-1028-aws
        system: Linux
       version: Ubuntu 20.04 focal

I would welcome 3005.2

Since salt is broken and a fix is already merged, can you release a new hotfix/minor version?

@hartwork Sorry, I’ll backport the patches like suse did when I find the time 😃 Forgot this issue.