diff --git a/SOURCES/leapp-repository-0.16.0-elevate.patch b/SOURCES/leapp-repository-0.16.0-elevate.patch index 56a90c4..b3f2be3 100644 --- a/SOURCES/leapp-repository-0.16.0-elevate.patch +++ b/SOURCES/leapp-repository-0.16.0-elevate.patch @@ -836,7 +836,7 @@ index c9c2741..911d11d 100644 diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py -index 75ffa6a..35154be 100644 +index 75ffa6a..2aae399 100644 --- a/commands/upgrade/util.py +++ b/commands/upgrade/util.py @@ -2,18 +2,25 @@ import functools @@ -936,7 +936,7 @@ index 75ffa6a..35154be 100644 + msg = "{} - Please check the above details".format(err.message) + sys.stderr.write("\n") + sys.stderr.write(pretty_block_text(msg, color="", width=len(msg))) -+ logger.error(e.message) ++ logger.error(err.message) + finally: + pass + @@ -1587,10 +1587,10 @@ index 0000000..4651580 + clmysqlrepositorysetup.process() diff --git a/repos/system_upgrade/cloudlinux/actors/clmysqlrepositorysetup/libraries/clmysqlrepositorysetup.py b/repos/system_upgrade/cloudlinux/actors/clmysqlrepositorysetup/libraries/clmysqlrepositorysetup.py new file mode 100644 -index 0000000..1d5e4a0 +index 0000000..901bf6a --- /dev/null +++ b/repos/system_upgrade/cloudlinux/actors/clmysqlrepositorysetup/libraries/clmysqlrepositorysetup.py -@@ -0,0 +1,254 @@ +@@ -0,0 +1,241 @@ +import os + +from leapp.models import ( @@ -1605,35 +1605,19 @@ index 0000000..1d5e4a0 +from leapp.libraries.common import repofileutils +from leapp import reporting +from leapp.libraries.common.clmysql import get_clmysql_type, get_pkg_prefix, MODULE_STREAMS ++from leapp.libraries.common.cl_repofileutils import ( ++ create_leapp_repofile_copy, ++ REPO_DIR, ++ LEAPP_COPY_SUFFIX, ++ REPOFILE_SUFFIX, ++) + -+REPO_DIR = '/etc/yum.repos.d' -+TEMP_DIR = '/var/lib/leapp/yum_custom_repofiles' -+REPOFILE_SUFFIX = ".repo" -+LEAPP_COPY_SUFFIX = "_leapp_custom.repo" +CL_MARKERS = ['cl-mysql', 'cl-mariadb', 'cl-percona'] +MARIA_MARKERS = ['MariaDB'] +MYSQL_MARKERS = ['mysql-community'] +OLD_MYSQL_VERSIONS = ['5.7', '5.6', '5.5'] + + -+def produce_leapp_repofile_copy(repofile_data, repo_name): -+ """ -+ Create a copy of an existing Yum repository config file, modified -+ to be used during the Leapp transaction. -+ It will be placed inside the isolated overlay environment Leapp runs the upgrade from. -+ """ -+ if not os.path.isdir(TEMP_DIR): -+ os.makedirs(TEMP_DIR) -+ leapp_repofile = repo_name + LEAPP_COPY_SUFFIX -+ leapp_repo_path = os.path.join(TEMP_DIR, leapp_repofile) -+ if os.path.exists(leapp_repo_path): -+ os.unlink(leapp_repo_path) -+ -+ api.current_logger().debug('Producing a Leapp repofile copy: {}'.format(leapp_repo_path)) -+ repofileutils.save_repofile(repofile_data, leapp_repo_path) -+ api.produce(CustomTargetRepositoryFile(file=leapp_repo_path)) -+ -+ +def build_install_list(prefix): + """ + Find the installed cl-mysql packages that match the active @@ -1702,7 +1686,8 @@ index 0000000..1d5e4a0 + + if any(repo.enabled for repo in repofile_data.data): + mysql_types.append('cloudlinux') -+ produce_leapp_repofile_copy(repofile_data, repofile_name) ++ leapp_repocopy = create_leapp_repofile_copy(repofile_data, repofile_name) ++ api.produce(CustomTargetRepositoryFile(file=leapp_repocopy)) + else: + api.current_logger().debug("No repos from CloudLinux repofile {} enabled, ignoring".format( + repofile_name @@ -1735,7 +1720,8 @@ index 0000000..1d5e4a0 + # Since MariaDB URLs have major versions written in, we need a new repo file + # to feed to the target userspace. + mysql_types.append('mariadb') -+ produce_leapp_repofile_copy(repofile_data, repofile_name) ++ leapp_repocopy = create_leapp_repofile_copy(repofile_data, repofile_name) ++ api.produce(CustomTargetRepositoryFile(file=leapp_repocopy)) + else: + api.current_logger().debug("No repos from MariaDB repofile {} enabled, ignoring".format( + repofile_name @@ -1785,7 +1771,8 @@ index 0000000..1d5e4a0 + + if any(repo.enabled for repo in repofile_data.data): + mysql_types.append('mysql') -+ produce_leapp_repofile_copy(repofile_data, repofile_name) ++ leapp_repocopy = create_leapp_repofile_copy(repofile_data, repofile_name) ++ api.produce(CustomTargetRepositoryFile(file=leapp_repocopy)) + else: + api.current_logger().debug("No repos from MySQL repofile {} enabled, ignoring".format( + repofile_name @@ -1996,19 +1983,24 @@ index 0000000..e946c2b + registerpackageworkarounds.process() diff --git a/repos/system_upgrade/cloudlinux/actors/registerpackageworkarounds/libraries/registerpackageworkarounds.py b/repos/system_upgrade/cloudlinux/actors/registerpackageworkarounds/libraries/registerpackageworkarounds.py new file mode 100644 -index 0000000..358403b +index 0000000..c11a65c --- /dev/null +++ b/repos/system_upgrade/cloudlinux/actors/registerpackageworkarounds/libraries/registerpackageworkarounds.py -@@ -0,0 +1,38 @@ +@@ -0,0 +1,45 @@ +from leapp.actors import Actor +from leapp.models import InstalledRPM, DNFWorkaround, PreRemovedRpmPackages +from leapp.libraries.stdlib import api + +# NOTE: The related packages are listed both here *and* in the workaround script! +# If the list changes, it has to change in both places. ++# Script location: repos\system_upgrade\cloudlinux\tools\remove-problem-packages +# This is a limitation of the current DNFWorkaround implementation. +# TODO: unify the list in one place. A separate common file, perhaps? -+TO_REINSTALL = ['gettext-devel'] # These packages will be marked for installation ++TO_REINSTALL = [ ++ "gettext-devel", ++ "alt-ruby31-rubygem-rack", ++ "alt-ruby31-rubygem-rackup", ++] # These packages will be marked for installation +TO_DELETE = [] # These won't be + + @@ -2019,9 +2011,11 @@ index 0000000..358403b + # Only produce a message if a package is actually about to be uninstalled + for rpm_pkgs in api.consume(InstalledRPM): + for pkg in rpm_pkgs.items: -+ if (pkg.name in pkg_list): ++ if pkg.name in pkg_list: + preremoved_pkgs.items.append(pkg) -+ api.current_logger().debug("Listing package {} to be pre-removed".format(pkg.name)) ++ api.current_logger().debug( ++ "Listing package {} to be pre-removed".format(pkg.name) ++ ) + if preremoved_pkgs.items: + api.produce(preremoved_pkgs) + @@ -2034,8 +2028,8 @@ index 0000000..358403b + # yum doesn't consider attempting to remove a non-existent package to be an error + # we can safely give it the entire package list without checking if all are installed + DNFWorkaround( -+ display_name='problem package modification', -+ script_path=api.get_tool_path('remove-problem-packages'), ++ display_name="problem package modification", ++ script_path=api.get_tool_path("remove-problem-packages"), + ) + ) diff --git a/repos/system_upgrade/cloudlinux/actors/replacerpmnewconfigs/actor.py b/repos/system_upgrade/cloudlinux/actors/replacerpmnewconfigs/actor.py @@ -2331,23 +2325,62 @@ index 0000000..202e5f7 + scanrolloutrepositories.process() diff --git a/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/libraries/scanrolloutrepositories.py b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/libraries/scanrolloutrepositories.py new file mode 100644 -index 0000000..cc2d1e9 +index 0000000..f941a1d --- /dev/null +++ b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/libraries/scanrolloutrepositories.py -@@ -0,0 +1,46 @@ +@@ -0,0 +1,69 @@ +import os + +from leapp.models import ( + CustomTargetRepositoryFile, + CustomTargetRepository, -+ UsedRepositories ++ UsedRepositories, +) +from leapp.libraries.stdlib import api +from leapp.libraries.common import repofileutils + -+REPO_DIR = '/etc/yum.repos.d' -+ROLLOUT_MARKER = 'rollout' -+CL_MARKERS = ['cloudlinux', 'imunify'] ++from leapp.libraries.common.cl_repofileutils import ( ++ is_rollout_repository, ++ create_leapp_repofile_copy, ++ REPO_DIR, ++ REPOFILE_SUFFIX, ++) ++ ++ ++def process_repodata(rollout_repodata): ++ for repo in rollout_repodata.data: ++ # On some systems, $releasever gets replaced by a string like "8.6", but we want ++ # specifically "8" for rollout repositories - URLs with "8.6" don't exist. ++ repo.baseurl = repo.baseurl.replace("$releasever", "8") ++ ++ for repo in rollout_repodata.data: ++ api.produce( ++ CustomTargetRepository( ++ repoid=repo.repoid, ++ name=repo.name, ++ baseurl=repo.baseurl, ++ enabled=repo.enabled, ++ ) ++ ) ++ ++ rollout_reponame = rollout_repodata.file[:-len(REPOFILE_SUFFIX)] ++ leapp_repocopy_path = create_leapp_repofile_copy(rollout_repodata, rollout_reponame) ++ api.produce(CustomTargetRepositoryFile(file=leapp_repocopy_path)) ++ ++ ++def process_repofile(repofile, used_list): ++ full_rollout_repo_path = os.path.join(REPO_DIR, repofile) ++ rollout_repodata = repofileutils.parse_repofile(full_rollout_repo_path) ++ ++ # Ignore the repositories (and their files) that are enabled, but have no packages installed from them. ++ if not any(repo.repoid in used_list for repo in rollout_repodata.data): ++ api.current_logger().debug( ++ "No used repositories found in {}, skipping".format(repofile) ++ ) ++ return ++ ++ api.current_logger().debug("Rollout file {} has used repositories, adding".format(repofile)) ++ process_repodata(rollout_repodata) + + +def process(): @@ -2356,31 +2389,1390 @@ index 0000000..cc2d1e9 + for used_repo in used_repos.repositories: + used_list.append(used_repo.repository) + -+ for reponame in os.listdir(REPO_DIR): -+ if ROLLOUT_MARKER not in reponame or not any(mark in reponame for mark in CL_MARKERS): ++ for repofile in os.listdir(REPO_DIR): ++ if not is_rollout_repository(repofile): + continue + -+ api.current_logger().debug("Detected a rollout repository file: {}".format(reponame)) ++ api.current_logger().debug( ++ "Detected a rollout repository file: {}".format(repofile) ++ ) + -+ full_repo_path = os.path.join(REPO_DIR, reponame) -+ repofile = repofileutils.parse_repofile(full_repo_path) ++ process_repofile(repofile, used_list) +diff --git a/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/cloudlinux-rollout.repo b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/cloudlinux-rollout.repo +new file mode 100644 +index 0000000..1951053 +--- /dev/null ++++ b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/cloudlinux-rollout.repo +@@ -0,0 +1,512 @@ ++[cloudlinux-rollout-1] ++name=CloudLinux-8 - Gradual Rollout Slot 1 ++baseurl=https://rollout.cloudlinux.com/slot-1/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True + -+ # Ignore the repositories that are enabled, but have no packages installed from them. -+ if not any(repo.repoid in used_list for repo in repofile.data): -+ api.current_logger().debug("No used repositories found in {}, skipping".format(reponame)) -+ continue -+ else: -+ api.current_logger().debug("Rollout file {} has used repositories, adding".format(reponame)) ++[cloudlinux-rollout-1-source] ++name=CloudLinux-8 - Gradual Rollout Slot 1 Source ++baseurl=https://rollout.cloudlinux.com/slot-1/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True + -+ for repo in repofile.data: -+ api.produce(CustomTargetRepository( -+ repoid=repo.repoid, -+ name=repo.name, -+ baseurl=repo.baseurl, -+ enabled=repo.enabled, -+ )) ++[cloudlinux-rollout-1-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 1 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-1-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True + -+ api.produce(CustomTargetRepositoryFile(file=full_repo_path)) ++ ++[cloudlinux-rollout-2] ++name=CloudLinux-8 - Gradual Rollout Slot 2 ++baseurl=https://rollout.cloudlinux.com/slot-2/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-2-source] ++name=CloudLinux-8 - Gradual Rollout Slot 2 Source ++baseurl=https://rollout.cloudlinux.com/slot-2/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-2-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 2 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-2-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-3] ++name=CloudLinux-8 - Gradual Rollout Slot 3 ++baseurl=https://rollout.cloudlinux.com/slot-3/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-3-source] ++name=CloudLinux-8 - Gradual Rollout Slot 3 Source ++baseurl=https://rollout.cloudlinux.com/slot-3/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-3-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 3 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-3-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-4] ++name=CloudLinux-8 - Gradual Rollout Slot 4 ++baseurl=https://rollout.cloudlinux.com/slot-4/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-4-source] ++name=CloudLinux-8 - Gradual Rollout Slot 4 Source ++baseurl=https://rollout.cloudlinux.com/slot-4/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-4-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 4 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-4-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-5] ++name=CloudLinux-8 - Gradual Rollout Slot 5 ++baseurl=https://rollout.cloudlinux.com/slot-5/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-5-source] ++name=CloudLinux-8 - Gradual Rollout Slot 5 Source ++baseurl=https://rollout.cloudlinux.com/slot-5/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-5-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 5 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-5-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-6] ++name=CloudLinux-8 - Gradual Rollout Slot 6 ++baseurl=https://rollout.cloudlinux.com/slot-6/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-6-source] ++name=CloudLinux-8 - Gradual Rollout Slot 6 Source ++baseurl=https://rollout.cloudlinux.com/slot-6/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-6-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 6 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-6-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-7] ++name=CloudLinux-8 - Gradual Rollout Slot 7 ++baseurl=https://rollout.cloudlinux.com/slot-7/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-7-source] ++name=CloudLinux-8 - Gradual Rollout Slot 7 Source ++baseurl=https://rollout.cloudlinux.com/slot-7/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-7-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 7 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-7-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-8] ++name=CloudLinux-8 - Gradual Rollout Slot 8 ++baseurl=https://rollout.cloudlinux.com/slot-8/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-8-source] ++name=CloudLinux-8 - Gradual Rollout Slot 8 Source ++baseurl=https://rollout.cloudlinux.com/slot-8/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-8-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 8 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-8-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-9] ++name=CloudLinux-8 - Gradual Rollout Slot 9 ++baseurl=https://rollout.cloudlinux.com/slot-9/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-9-source] ++name=CloudLinux-8 - Gradual Rollout Slot 9 Source ++baseurl=https://rollout.cloudlinux.com/slot-9/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-9-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 9 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-9-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-10] ++name=CloudLinux-8 - Gradual Rollout Slot 10 ++baseurl=https://rollout.cloudlinux.com/slot-10/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-10-source] ++name=CloudLinux-8 - Gradual Rollout Slot 10 Source ++baseurl=https://rollout.cloudlinux.com/slot-10/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-10-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 10 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-10-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-11] ++name=CloudLinux-8 - Gradual Rollout Slot 11 ++baseurl=https://rollout.cloudlinux.com/slot-11/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-11-source] ++name=CloudLinux-8 - Gradual Rollout Slot 11 Source ++baseurl=https://rollout.cloudlinux.com/slot-11/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-11-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 11 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-11-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-12] ++name=CloudLinux-8 - Gradual Rollout Slot 12 ++baseurl=https://rollout.cloudlinux.com/slot-12/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-12-source] ++name=CloudLinux-8 - Gradual Rollout Slot 12 Source ++baseurl=https://rollout.cloudlinux.com/slot-12/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-12-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 12 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-12-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-13] ++name=CloudLinux-8 - Gradual Rollout Slot 13 ++baseurl=https://rollout.cloudlinux.com/slot-13/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-13-source] ++name=CloudLinux-8 - Gradual Rollout Slot 13 Source ++baseurl=https://rollout.cloudlinux.com/slot-13/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-13-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 13 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-13-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-14] ++name=CloudLinux-8 - Gradual Rollout Slot 14 ++baseurl=https://rollout.cloudlinux.com/slot-14/8/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-14-source] ++name=CloudLinux-8 - Gradual Rollout Slot 14 Source ++baseurl=https://rollout.cloudlinux.com/slot-14/8/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-14-bypass] ++name=CloudLinux-8 - Gradual Rollout Slot 14 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-14-bypass/8/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True +diff --git a/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/imunify-new-rollout.repo b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/imunify-new-rollout.repo +new file mode 100644 +index 0000000..674802b +--- /dev/null ++++ b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/imunify-new-rollout.repo +@@ -0,0 +1,63 @@ ++[imunify360-rollout-5] ++name=Imunify360 - Gradual Rollout Slot 5 ++baseurl=https://download.imunify360.com/el/8/slot-5/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-5-bypass] ++name=Imunify360 - Gradual Rollout Slot 5 Bypass ++baseurl=https://download.imunify360.com/el/8/slot-5-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-6] ++name=Imunify360 - Gradual Rollout Slot ++baseurl=https://download.imunify360.com/el/8/slot-6/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-6-bypass] ++name=Imunify360 - Gradual Rollout Slot 6 Bypass ++baseurl=https://download.imunify360.com/el/8/slot-6-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-7] ++name=Imunify360 - Gradual Rollout Slot 7 ++baseurl=https://download.imunify360.com/el/8/slot-7/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-7-bypass] ++name=Imunify360 - Gradual Rollout Slot 7 Bypass ++baseurl=https://download.imunify360.com/el/8/slot-7-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-8] ++name=Imunify360 - Gradual Rollout Slot 8 ++baseurl=https://download.imunify360.com/el/8/slot-8/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-8-bypass] ++name=Imunify360 - Gradual Rollout Slot 8 Bypass ++baseurl=https://download.imunify360.com/el/8/slot-8-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True +\ No newline at end of file +diff --git a/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/imunify-rollout.repo b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/imunify-rollout.repo +new file mode 100644 +index 0000000..6308a41 +--- /dev/null ++++ b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/after/imunify-rollout.repo +@@ -0,0 +1,63 @@ ++[imunify360-rollout-1] ++name=Imunify360 - Gradual Rollout Slot 1 ++baseurl=https://download.imunify360.com/el/8/slot-1/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-1-bypass] ++name=Imunify360 - Gradual Rollout Slot 1 Bypass ++baseurl=https://download.imunify360.com/el/8/slot-1-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-2] ++name=Imunify360 - Gradual Rollout Slot 2 ++baseurl=https://download.imunify360.com/el/8/slot-2/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-2-bypass] ++name=Imunify360 - Gradual Rollout Slot 2 Bypass ++baseurl=https://download.imunify360.com/el/8/slot-2-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-3] ++name=Imunify360 - Gradual Rollout Slot 3 ++baseurl=https://download.imunify360.com/el/8/slot-3/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-3-bypass] ++name=Imunify360 - Gradual Rollout Slot 3 Bypass ++baseurl=https://download.imunify360.com/el/8/slot-3-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-4] ++name=Imunify360 - Gradual Rollout Slot 4 ++baseurl=https://download.imunify360.com/el/8/slot-4/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-4-bypass] ++name=Imunify360 - Gradual Rollout Slot 4 Bypass ++baseurl=https://download.imunify360.com/el/8/slot-4-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True +\ No newline at end of file +diff --git a/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/cloudlinux-rollout.repo b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/cloudlinux-rollout.repo +new file mode 100644 +index 0000000..e058414 +--- /dev/null ++++ b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/cloudlinux-rollout.repo +@@ -0,0 +1,512 @@ ++[cloudlinux-rollout-1] ++name=CloudLinux-$releasever - Gradual Rollout Slot 1 ++baseurl=https://rollout.cloudlinux.com/slot-1/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-1-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 1 Source ++baseurl=https://rollout.cloudlinux.com/slot-1/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-1-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 1 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-1-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-2] ++name=CloudLinux-$releasever - Gradual Rollout Slot 2 ++baseurl=https://rollout.cloudlinux.com/slot-2/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-2-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 2 Source ++baseurl=https://rollout.cloudlinux.com/slot-2/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-2-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 2 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-2-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-3] ++name=CloudLinux-$releasever - Gradual Rollout Slot 3 ++baseurl=https://rollout.cloudlinux.com/slot-3/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-3-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 3 Source ++baseurl=https://rollout.cloudlinux.com/slot-3/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-3-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 3 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-3-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-4] ++name=CloudLinux-$releasever - Gradual Rollout Slot 4 ++baseurl=https://rollout.cloudlinux.com/slot-4/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-4-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 4 Source ++baseurl=https://rollout.cloudlinux.com/slot-4/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-4-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 4 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-4-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-5] ++name=CloudLinux-$releasever - Gradual Rollout Slot 5 ++baseurl=https://rollout.cloudlinux.com/slot-5/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-5-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 5 Source ++baseurl=https://rollout.cloudlinux.com/slot-5/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-5-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 5 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-5-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-6] ++name=CloudLinux-$releasever - Gradual Rollout Slot 6 ++baseurl=https://rollout.cloudlinux.com/slot-6/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-6-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 6 Source ++baseurl=https://rollout.cloudlinux.com/slot-6/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-6-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 6 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-6-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-7] ++name=CloudLinux-$releasever - Gradual Rollout Slot 7 ++baseurl=https://rollout.cloudlinux.com/slot-7/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-7-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 7 Source ++baseurl=https://rollout.cloudlinux.com/slot-7/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-7-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 7 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-7-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-8] ++name=CloudLinux-$releasever - Gradual Rollout Slot 8 ++baseurl=https://rollout.cloudlinux.com/slot-8/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-8-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 8 Source ++baseurl=https://rollout.cloudlinux.com/slot-8/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-8-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 8 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-8-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-9] ++name=CloudLinux-$releasever - Gradual Rollout Slot 9 ++baseurl=https://rollout.cloudlinux.com/slot-9/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-9-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 9 Source ++baseurl=https://rollout.cloudlinux.com/slot-9/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-9-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 9 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-9-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++ ++[cloudlinux-rollout-10] ++name=CloudLinux-$releasever - Gradual Rollout Slot 10 ++baseurl=https://rollout.cloudlinux.com/slot-10/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-10-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 10 Source ++baseurl=https://rollout.cloudlinux.com/slot-10/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-10-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 10 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-10-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-11] ++name=CloudLinux-$releasever - Gradual Rollout Slot 11 ++baseurl=https://rollout.cloudlinux.com/slot-11/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-11-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 11 Source ++baseurl=https://rollout.cloudlinux.com/slot-11/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-11-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 11 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-11-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-12] ++name=CloudLinux-$releasever - Gradual Rollout Slot 12 ++baseurl=https://rollout.cloudlinux.com/slot-12/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-12-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 12 Source ++baseurl=https://rollout.cloudlinux.com/slot-12/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-12-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 12 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-12-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-13] ++name=CloudLinux-$releasever - Gradual Rollout Slot 13 ++baseurl=https://rollout.cloudlinux.com/slot-13/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-13-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 13 Source ++baseurl=https://rollout.cloudlinux.com/slot-13/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-13-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 13 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-13-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-14] ++name=CloudLinux-$releasever - Gradual Rollout Slot 14 ++baseurl=https://rollout.cloudlinux.com/slot-14/$releasever/$basearch/ ++enabled=1 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-14-source] ++name=CloudLinux-$releasever - Gradual Rollout Slot 14 Source ++baseurl=https://rollout.cloudlinux.com/slot-14/$releasever/Sources/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True ++ ++[cloudlinux-rollout-14-bypass] ++name=CloudLinux-$releasever - Gradual Rollout Slot 14 Bypass ++baseurl=https://rollout.cloudlinux.com/slot-14-bypass/$releasever/$basearch/ ++enabled=0 ++gpgcheck=1 ++gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CloudLinux ++sslcacert=/etc/sysconfig/rhn/cl-rollout-ca.pem ++sslclientcert=/etc/sysconfig/rhn/cl-rollout.pem ++sslclientkey=/etc/sysconfig/rhn/cl-rollout-key.pem ++sslverify=0 ++skip_if_unavailable=True +diff --git a/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/imunify-new-rollout.repo b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/imunify-new-rollout.repo +new file mode 100644 +index 0000000..585acd5 +--- /dev/null ++++ b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/imunify-new-rollout.repo +@@ -0,0 +1,63 @@ ++[imunify360-rollout-5] ++name=Imunify360 - Gradual Rollout Slot 5 ++baseurl=https://download.imunify360.com/el/$releasever/slot-5/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-5-bypass] ++name=Imunify360 - Gradual Rollout Slot 5 Bypass ++baseurl=https://download.imunify360.com/el/$releasever/slot-5-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-6] ++name=Imunify360 - Gradual Rollout Slot ++baseurl=https://download.imunify360.com/el/$releasever/slot-6/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-6-bypass] ++name=Imunify360 - Gradual Rollout Slot 6 Bypass ++baseurl=https://download.imunify360.com/el/$releasever/slot-6-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-7] ++name=Imunify360 - Gradual Rollout Slot 7 ++baseurl=https://download.imunify360.com/el/$releasever/slot-7/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-7-bypass] ++name=Imunify360 - Gradual Rollout Slot 7 Bypass ++baseurl=https://download.imunify360.com/el/$releasever/slot-7-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-8] ++name=Imunify360 - Gradual Rollout Slot 8 ++baseurl=https://download.imunify360.com/el/$releasever/slot-8/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-8-bypass] ++name=Imunify360 - Gradual Rollout Slot 8 Bypass ++baseurl=https://download.imunify360.com/el/$releasever/slot-8-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True +\ No newline at end of file +diff --git a/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/imunify-rollout.repo b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/imunify-rollout.repo +new file mode 100644 +index 0000000..dfe6e40 +--- /dev/null ++++ b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/files/before/imunify-rollout.repo +@@ -0,0 +1,63 @@ ++[imunify360-rollout-1] ++name=Imunify360 - Gradual Rollout Slot 1 ++baseurl=https://download.imunify360.com/el/$releasever/slot-1/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-1-bypass] ++name=Imunify360 - Gradual Rollout Slot 1 Bypass ++baseurl=https://download.imunify360.com/el/$releasever/slot-1-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-2] ++name=Imunify360 - Gradual Rollout Slot 2 ++baseurl=https://download.imunify360.com/el/$releasever/slot-2/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-2-bypass] ++name=Imunify360 - Gradual Rollout Slot 2 Bypass ++baseurl=https://download.imunify360.com/el/$releasever/slot-2-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-3] ++name=Imunify360 - Gradual Rollout Slot 3 ++baseurl=https://download.imunify360.com/el/$releasever/slot-3/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-3-bypass] ++name=Imunify360 - Gradual Rollout Slot 3 Bypass ++baseurl=https://download.imunify360.com/el/$releasever/slot-3-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-4] ++name=Imunify360 - Gradual Rollout Slot 4 ++baseurl=https://download.imunify360.com/el/$releasever/slot-4/x86_64/ ++enabled=1 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True ++ ++[imunify360-rollout-4-bypass] ++name=Imunify360 - Gradual Rollout Slot 4 Bypass ++baseurl=https://download.imunify360.com/el/$releasever/slot-4-bypass/x86_64/ ++enabled=0 ++gpgcheck=1 ++gpgkey=https://repo.imunify360.cloudlinux.com/defense360/RPM-GPG-KEY-CloudLinux ++skip_if_unavailable=True +\ No newline at end of file +diff --git a/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/test_releasever_replace.py b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/test_releasever_replace.py +new file mode 100644 +index 0000000..5bcb9cf +--- /dev/null ++++ b/repos/system_upgrade/cloudlinux/actors/scanrolloutrepositories/tests/test_releasever_replace.py +@@ -0,0 +1,52 @@ ++from leapp.libraries.actor import scanrolloutrepositories ++from leapp.libraries.common import cl_repofileutils ++from leapp.libraries.common.testutils import produce_mocked ++from leapp.libraries.stdlib import api ++ ++from leapp.models import ( ++ CustomTargetRepository, ++ CustomTargetRepositoryFile, ++ RepositoryData, ++ RepositoryFile, ++) ++ ++_REPODATA = [ ++ RepositoryData(repoid="repo1", name="repo1name", baseurl="repo1url/$releasever/64", enabled=True), ++ RepositoryData(repoid="repo2", name="repo2name", baseurl="repo2url/$releasever/64", enabled=False), ++] ++ ++_REPOFILE = RepositoryFile(file="test_rollout.repo", data=_REPODATA) ++ ++ ++class LoggerMocked(object): ++ def __init__(self): ++ self.infomsg = None ++ self.debugmsg = None ++ ++ def info(self, msg): ++ self.infomsg = msg ++ ++ def debug(self, msg): ++ self.debugmsg = msg ++ ++ def __call__(self): ++ return self ++ ++ ++def test_valid_repofile_exists(monkeypatch): ++ def create_leapp_repofile_copy_mocked(): ++ return "/leapp_copy_path/newrepo.repo" ++ ++ monkeypatch.setattr(api, 'produce', produce_mocked()) ++ monkeypatch.setattr(cl_repofileutils, 'create_leapp_repofile_copy', create_leapp_repofile_copy_mocked) ++ monkeypatch.setattr(api, 'current_logger', LoggerMocked()) ++ ++ scanrolloutrepositories.process_repodata(_REPOFILE) ++ ++ assert api.produce.called == len(_REPODATA) + 1 ++ ++ for datapoint in api.produce.model_instances: ++ if isinstance(datapoint, CustomTargetRepository): ++ assert "/8/64" in datapoint.baseurl ++ if isinstance(datapoint, CustomTargetRepositoryFile): ++ assert datapoint.file == "/leapp_copy_path/newrepo.repo" +\ No newline at end of file diff --git a/repos/system_upgrade/cloudlinux/actors/switchclnchannel/actor.py b/repos/system_upgrade/cloudlinux/actors/switchclnchannel/actor.py new file mode 100644 index 0000000..79eb3e4 @@ -2491,7 +3883,7 @@ index 0000000..c6590d2 + ) diff --git a/repos/system_upgrade/cloudlinux/libraries/backup.py b/repos/system_upgrade/cloudlinux/libraries/backup.py new file mode 100644 -index 0000000..249c99e +index 0000000..9002f56 --- /dev/null +++ b/repos/system_upgrade/cloudlinux/libraries/backup.py @@ -0,0 +1,49 @@ @@ -2509,7 +3901,7 @@ index 0000000..249c99e +BACKUP_DIR = "/var/lib/leapp/cl_backup" + + -+def backup_file(source, destination, dir=None): ++def backup_file(source, destination, backup_directory=""): + # type: (str, str, str) -> None + """ + Backup file to a backup directory. @@ -2518,18 +3910,18 @@ index 0000000..249c99e + :param destination: Destination name of a file in the backup directory. + :param dir: Backup directory override, defaults to None + """ -+ if not dir: -+ dir = BACKUP_DIR -+ if not os.path.isdir(dir): -+ os.makedirs(dir) ++ if not backup_directory: ++ backup_directory = BACKUP_DIR ++ if not os.path.isdir(backup_directory): ++ os.makedirs(backup_directory) + -+ dest_path = os.path.join(dir, destination) ++ dest_path = os.path.join(backup_directory, destination) + + api.current_logger().debug('Backing up file: {} to {}'.format(source, dest_path)) + shutil.copy(source, dest_path) + + -+def restore_file(source, destination, dir=None): ++def restore_file(source, destination, backup_directory=""): + # type: (str, str, str) -> None + """ + Restore file from a backup directory. @@ -2538,12 +3930,53 @@ index 0000000..249c99e + :param destination: Destination path to restore the file to. + :param dir: Backup directory override, defaults to None + """ -+ if not dir: -+ dir = BACKUP_DIR -+ src_path = os.path.join(dir, source) ++ if not backup_directory: ++ backup_directory = BACKUP_DIR ++ src_path = os.path.join(backup_directory, source) + + api.current_logger().debug('Restoring file: {} to {}'.format(src_path, destination)) + shutil.copy(src_path, destination) +diff --git a/repos/system_upgrade/cloudlinux/libraries/cl_repofileutils.py b/repos/system_upgrade/cloudlinux/libraries/cl_repofileutils.py +new file mode 100644 +index 0000000..eb274f5 +--- /dev/null ++++ b/repos/system_upgrade/cloudlinux/libraries/cl_repofileutils.py +@@ -0,0 +1,35 @@ ++import os ++import os.path ++ ++from leapp.libraries.stdlib import api ++from leapp.libraries.common import repofileutils ++ ++ROLLOUT_MARKER = 'rollout' ++CL_MARKERS = ['cloudlinux', 'imunify'] ++ ++REPO_DIR = '/etc/yum.repos.d' ++TEMP_DIR = '/var/lib/leapp/yum_custom_repofiles' ++LEAPP_COPY_SUFFIX = "_leapp_custom.repo" ++REPOFILE_SUFFIX = ".repo" ++ ++ ++def is_rollout_repository(repofile): ++ return ROLLOUT_MARKER in repofile and any(mark in repofile for mark in CL_MARKERS) ++ ++ ++def create_leapp_repofile_copy(repofile_data, repo_name): ++ """ ++ Create a copy of an existing Yum repository config file, modified ++ to be used during the Leapp transaction. ++ It will be placed inside the isolated overlay environment Leapp runs the upgrade from. ++ """ ++ if not os.path.isdir(TEMP_DIR): ++ os.makedirs(TEMP_DIR) ++ leapp_repofile = repo_name + LEAPP_COPY_SUFFIX ++ leapp_repo_path = os.path.join(TEMP_DIR, leapp_repofile) ++ if os.path.exists(leapp_repo_path): ++ os.unlink(leapp_repo_path) ++ ++ api.current_logger().debug('Producing a Leapp repofile copy: {}'.format(leapp_repo_path)) ++ repofileutils.save_repofile(repofile_data, leapp_repo_path) ++ return leapp_repo_path diff --git a/repos/system_upgrade/cloudlinux/libraries/cllaunch.py b/repos/system_upgrade/cloudlinux/libraries/cllaunch.py new file mode 100644 index 0000000..6cbab5d @@ -2723,14 +4156,16 @@ index 0000000..5cc475d + version = fields.Nullable(fields.String(default=None)) # used for cl-mysql diff --git a/repos/system_upgrade/cloudlinux/tools/remove-problem-packages b/repos/system_upgrade/cloudlinux/tools/remove-problem-packages new file mode 100755 -index 0000000..38eba60 +index 0000000..ed8c523 --- /dev/null +++ b/repos/system_upgrade/cloudlinux/tools/remove-problem-packages -@@ -0,0 +1,4 @@ +@@ -0,0 +1,6 @@ +#!/usr/bin/bash -e + +# can't be removed in the main transaction due to errors in %preun +yum -y --setopt=tsflags=noscripts remove gettext-devel ++# can be removed normally ++yum -y remove alt-ruby31-rubygem-rack alt-ruby31-rubygem-rackup diff --git a/repos/system_upgrade/common/actors/addupgradebootentry/libraries/addupgradebootentry.py b/repos/system_upgrade/common/actors/addupgradebootentry/libraries/addupgradebootentry.py index a2cede0..5ff1c76 100644 --- a/repos/system_upgrade/common/actors/addupgradebootentry/libraries/addupgradebootentry.py @@ -4826,6 +6261,40 @@ index 0000000..32ccf58 + # self.produce(vendor_repomap_collection) + # for repomap in vendor_repomap_collection.maps: + # self.produce(repomap) +diff --git a/repos/system_upgrade/common/actors/xfsinfoscanner/libraries/xfsinfoscanner.py b/repos/system_upgrade/common/actors/xfsinfoscanner/libraries/xfsinfoscanner.py +index 9fff656..d5594bf 100644 +--- a/repos/system_upgrade/common/actors/xfsinfoscanner/libraries/xfsinfoscanner.py ++++ b/repos/system_upgrade/common/actors/xfsinfoscanner/libraries/xfsinfoscanner.py +@@ -1,4 +1,4 @@ +-from leapp.libraries.stdlib import api, run ++from leapp.libraries.stdlib import api, run, CalledProcessError + from leapp.models import StorageInfo, XFSPresence + + +@@ -21,11 +21,18 @@ def scan_xfs_mount(data): + + + def is_xfs_without_ftype(mp): +- for l in run(['/usr/sbin/xfs_info', '{}'.format(mp)], split=True)['stdout']: +- if 'ftype=0' in l: +- return True +- +- return False ++ try: ++ for l in run(['/usr/sbin/xfs_info', '{}'.format(mp)], split=True)['stdout']: ++ if 'ftype=0' in l: ++ return True ++ return False ++ # xfs_info can sometimes throw errors like the following if fed a CageFS mountpoint. ++ # xfs_info: /usr/share/cagefs-skeleton/var/www/cgi-bin\040(deleted) is not a mounted XFS filesystem ++ except CalledProcessError as err: ++ if "cagefs" in mp: ++ api.current_logger().info("CageFS XFS mountpoint {} ignored in scanner".format(mp)) ++ return False ++ raise err + + + def scan_xfs(): diff --git a/repos/system_upgrade/common/files/rhel_upgrade.py b/repos/system_upgrade/common/files/rhel_upgrade.py index 62221a7..f5b4c70 100644 --- a/repos/system_upgrade/common/files/rhel_upgrade.py