]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
task/install/rpm: add/remove yum repos
authorKyr Shatskyy <kyrylo.shatskyy@clyso.com>
Wed, 3 Sep 2025 21:14:52 +0000 (23:14 +0200)
committerKyr Shatskyy <kyrylo.shatskyy@clyso.com>
Tue, 9 Sep 2025 19:55:21 +0000 (21:55 +0200)
Signed-off-by: Kyr Shatskyy <kyrylo.shatskyy@clyso.com>
teuthology/task/install/rpm.py

index 6a89998006cc04c131ec33f1c7e9de810fffc905..10703625c710aeb33d20a7cb39e6d65c62deb40b 100644 (file)
@@ -50,6 +50,8 @@ def _remove(ctx, config, remote, rpm):
     if repos:
         if dist_release in ['opensuse', 'sle']:
             _zypper_removerepo(remote, repos)
+        if dist_release in ['centos', 'rocky', 'alma']:
+            _yum_removerepo(remote, repos)
         else:
             raise Exception('Custom repos were specified for %s ' % remote_os +
                             'but these are currently not supported')
@@ -114,6 +116,54 @@ def _zypper_wipe_all_repos(remote):
               'sudo rm -f /etc/zypp/repos.d/* || '
               'true')
 
+
+def _yum_addrepo(remote, repo_list):
+    """
+    Add dnf repos to the remote system.
+
+    :param remote: remote node where to add packages
+    :param repo_list: list of dictionaries with keys 'name', 'url'
+    :return:
+    """
+    for repo in repo_list:
+        repo_lines = [f"[{repo['name']}]"]
+        repo_lines += [
+            f"name={repo['name']}",
+            f"baseurl={repo['url']}",
+            "enabled=1",
+            "gpgcheck=0",
+        ]
+        if 'priority' in repo:
+            repo_lines += [f"priority={repo['priority']}"]
+        repo_path=f"/etc/yum.repos.d/{repo['name']}.repo"
+        remote.sudo_write_file(repo_path, "\n".join(repo_lines))
+
+
+def _yum_removerepo(remote, repo_list):
+    """
+    Remove yum repos on the remote system.
+
+    :param remote: remote node where to remove packages from
+    :param repo_list: list of dictionaries with keys 'name', 'url'
+    :return:
+    """
+    for repo in repo_list:
+        repo_path=f"/etc/yum.repos.d/{repo['name']}.repo"
+        remote.run(args=['sudo', 'rm', repo_path])
+
+
+def _yum_wipe_all_repos(remote):
+    """
+    Completely "wipe" (remove) all yum repos
+
+    :param remote: remote node where to wipe zypper repos
+    :return:
+    """
+    log.info("Wiping yum repos (if any)")
+    remote.sh('sudo rm -f /etc/yum.repos.d/* || '
+              'true')
+
+
 def _downgrade_packages(ctx, remote, pkgs, pkg_version, config):
     """
     Downgrade packages listed by 'downgrade_packages'
@@ -192,6 +242,8 @@ def _update_package_list_and_install(ctx, remote, rpm, config):
         if dist_release in ['opensuse', 'sle']:
             _zypper_wipe_all_repos(remote)
             _zypper_addrepo(remote, repos)
+        if dist_release in ['centos', 'rocky', 'alma']:
+            _yum_addrepo(remote, repos)
         else:
             raise Exception('Custom repos were specified for %s ' % remote_os +
                             'but these are currently not supported')