]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commit
teuthology/task/install: implement LooseVersion and use it
authorKefu Chai <tchaikov@gmail.com>
Thu, 18 Dec 2025 09:05:58 +0000 (17:05 +0800)
committerKefu Chai <tchaikov@gmail.com>
Thu, 18 Dec 2025 13:47:46 +0000 (21:47 +0800)
commit90ad9bab15deb70ecdba9514aedc521e566d1aee
treed85b67f04e4fab949aebd38f6ddbd452a0618511
parent258eb6279f4d7fcd4b45c82e521f2a2e799d7f33
teuthology/task/install: implement LooseVersion and use it

The distutils module was deprecated in Python 3.10 and removed in
Python 3.12. This commit replaces the deprecated distutils.version
imports with the a homebrew LooseVersion implementation.

Changes:
- implement LooseVersion which is able to parse versions like
  '10.2.2-63-g8542898-1trusty'.
- Replace distutils.version.LooseVersion with
  teuthology.util.version.LooseVersion packaging.version.LooseVersion

Fixes:
```
Traceback (most recent call last):
  File "/home/jenkins-build/build/workspace/ceph-api/build/../qa/tasks/vstart_runner.py", line 81, in <module>
    from teuthology.orchestra.remote import RemoteShell
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/orchestra/remote.py", line 6, in <module>
    import teuthology.lock.util
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/lock/util.py", line 6, in <module>
    import teuthology.provision.downburst
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/provision/__init__.py", line 4, in <module>
    import teuthology.exporter
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/exporter.py", line 11, in <module>
    import teuthology.dispatcher
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/dispatcher/__init__.py", line 22, in <module>
    from teuthology.dispatcher import supervisor
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/dispatcher/supervisor.py", line 18, in <module>
    from teuthology.task import internal
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/task/internal/__init__.py", line 27, in <module>
    from teuthology.task.internal.redhat import (setup_cdn_repo, setup_base_repo,            # noqa
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/task/internal/redhat.py", line 13, in <module>
    from teuthology.task.install.redhat import set_deb_repo
  File "/tmp/tmp.xwxq8FOScf/teuthology/teuthology/task/install/__init__.py", line 14, in <module>
    from distutils.version import LooseVersion
ModuleNotFoundError: No module named 'distutils'
```

Related: https://peps.python.org/pep-0632/

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
teuthology/task/install/__init__.py
teuthology/task/install/rpm.py
teuthology/util/version.py [new file with mode: 0644]