From 34218990b8088a5d468c0c1e15ffe8269556f9fe Mon Sep 17 00:00:00 2001 From: Fabian Fulga Date: Tue, 20 Jan 2026 12:43:45 +0000 Subject: [PATCH] Remove enable_repo from osmorphing for all redhat based OSes --- coriolis/osmorphing/oracle.py | 34 ---------------- coriolis/osmorphing/redhat.py | 48 ---------------------- coriolis/tests/osmorphing/test_oracle.py | 52 ------------------------ coriolis/tests/osmorphing/test_redhat.py | 27 ------------ 4 files changed, 161 deletions(-) diff --git a/coriolis/osmorphing/oracle.py b/coriolis/osmorphing/oracle.py index 81f51475b..5b3c2398c 100644 --- a/coriolis/osmorphing/oracle.py +++ b/coriolis/osmorphing/oracle.py @@ -1,8 +1,6 @@ # Copyright 2016 Cloudbase Solutions Srl # All Rights Reserved. -import uuid - from coriolis.osmorphing.osdetect import oracle as oracle_detect from coriolis.osmorphing import redhat @@ -19,35 +17,3 @@ def check_os_supported(cls, detected_os_info): return False return cls._version_supported_util( detected_os_info['release_version'], minimum=6) - - def _get_oracle_repos(self): - repos = [] - major_version = int(self._version.split(".")[0]) - uekr_version = int(major_version) - 2 - if major_version < 8: - repo_file_path = ( - '/etc/yum.repos.d/%s.repo' % str(uuid.uuid4())) - self._exec_cmd_chroot( - "curl -L http://public-yum.oracle.com/public-yum-ol%s.repo " - "-o %s" % (major_version, repo_file_path)) - # During OSMorphing, we temporarily enable needed package repos, - # so we make sure we disable all downloaded repos here. - self._exec_cmd_chroot( - 'sed -i "s/^enabled=1$/enabled=0/g" %s' % repo_file_path) - - repos_to_enable = ["ol%s_software_collections" % major_version, - "ol%s_addons" % major_version, - "ol%s_UEKR" % major_version, - "ol%s_latest" % major_version] - repos = self._find_yum_repos(repos_to_enable) - else: - self._yum_install( - ['oraclelinux-release-el%s' % major_version], - self._find_yum_repos(['ol%s_baseos_latest' % major_version])) - repos_to_enable = ["ol%s_baseos_latest" % major_version, - "ol%s_appstream" % major_version, - "ol%d_addons" % major_version, - "ol%s_UEKR%s" % (major_version, uekr_version)] - repos = self._find_yum_repos(repos_to_enable) - - return repos diff --git a/coriolis/osmorphing/redhat.py b/coriolis/osmorphing/redhat.py index a8369e274..e75c6b7af 100644 --- a/coriolis/osmorphing/redhat.py +++ b/coriolis/osmorphing/redhat.py @@ -205,54 +205,6 @@ def _yum_clean_all(self): if self._test_path('var/cache/yum'): self._exec_cmd_chroot("rm -rf /var/cache/yum") - def _find_yum_repos(self, repos_to_enable=[]): - """ - Looks for required repositories passed as `repos_to_enable` in - /etc/yum.repos.d and returns the found repository names, so they can - be temporarily enabled when installing packages using yum. - - Yum only looks for repos in files with '.repo' extension, anything - else gets ignored, therefore this method should filter files by that - extension. - - Also, yum repository names might be different in some guest releases, - but still be similar. Therefore, repo name substrings should ideally be - passed in `repos_to_enable`. For example, we might be looking for repo - name 'ol7_latest', but the guest has it named as 'public_ol7_latest' in - the repo file. - """ - found_repos = [] - - reposdir_path = 'etc/yum.repos.d' - - repofiles = [ - f for f in self._list_dir(reposdir_path) if f.endswith('.repo')] - installed_repos = [] - for file in repofiles: - path = os.path.join(reposdir_path, file) - try: - content = self._read_file_sudo(path).decode() - except Exception as e: - LOG.warning( - "Could not read yum repository file %s: %s", path, e) - continue - for line in content.splitlines(): - m = re.match(r'^\[(.+)\]$', line) - if m: - installed_repos.append(m.group(1)) - - for repo in repos_to_enable: - available_repos = [ir for ir in installed_repos if repo in ir] - available_repos.sort(key=len) - if available_repos: - found_repos.append(available_repos[0]) - else: - LOG.warn( - "Could not find yum repository while searching for " - "repositories to enable: %s.", repo) - - return found_repos - def _get_repos_to_enable(self): return [] diff --git a/coriolis/tests/osmorphing/test_oracle.py b/coriolis/tests/osmorphing/test_oracle.py index 66455ea87..c918237aa 100644 --- a/coriolis/tests/osmorphing/test_oracle.py +++ b/coriolis/tests/osmorphing/test_oracle.py @@ -3,10 +3,8 @@ from unittest import mock -from coriolis.osmorphing import base from coriolis.osmorphing import oracle from coriolis.osmorphing.osdetect import oracle as oracle_detect -from coriolis.osmorphing import redhat from coriolis.tests import test_base @@ -40,53 +38,3 @@ def test_check_os_not_supported(self): self.detected_os_info) self.assertFalse(result) - - @mock.patch.object(base.BaseLinuxOSMorphingTools, '_exec_cmd_chroot') - @mock.patch.object(redhat.BaseRedHatMorphingTools, '_find_yum_repos') - @mock.patch.object(redhat.BaseRedHatMorphingTools, '_yum_install') - def test__get_oracle_repos(self, mock_yum_install, mock_find_yum_repos, - mock_exec_cmd_chroot): - self.oracle_morphing_tools._version = '10' - - result = self.oracle_morphing_tools._get_oracle_repos() - - self.assertEqual(result, mock_find_yum_repos.return_value) - - mock_find_yum_repos.assert_has_calls([ - mock.call(["ol10_baseos_latest"]), - mock.call([ - "ol10_baseos_latest", - "ol10_appstream", - "ol10_addons", - "ol10_UEKR8" - ]), - ]) - mock_yum_install.assert_called_once_with( - ['oraclelinux-release-el10'], mock_find_yum_repos.return_value) - mock_exec_cmd_chroot.assert_not_called() - - @mock.patch.object(base.BaseLinuxOSMorphingTools, '_exec_cmd_chroot') - @mock.patch.object(redhat.BaseRedHatMorphingTools, '_find_yum_repos') - @mock.patch.object(redhat.BaseRedHatMorphingTools, '_yum_install') - @mock.patch.object(oracle.uuid, 'uuid4') - def test__get_oracle_repos_major_version_lt_8( - self, mock_uuid4, mock_yum_install, mock_find_yum_repos, - mock_exec_cmd_chroot): - result = self.oracle_morphing_tools._get_oracle_repos() - - self.assertEqual(result, mock_find_yum_repos.return_value) - - mock_find_yum_repos.assert_called_once_with([ - "ol6_software_collections", - "ol6_addons", - "ol6_UEKR", - "ol6_latest" - ]) - mock_yum_install.assert_not_called() - mock_exec_cmd_chroot.assert_has_calls([ - mock.call( - "curl -L http://public-yum.oracle.com/public-yum-ol6.repo " - "-o /etc/yum.repos.d/%s.repo" % mock_uuid4.return_value), - mock.call('sed -i "s/^enabled=1$/enabled=0/g" %s' % ( - "/etc/yum.repos.d/%s.repo" % mock_uuid4.return_value)) - ]) diff --git a/coriolis/tests/osmorphing/test_redhat.py b/coriolis/tests/osmorphing/test_redhat.py index c92697c75..d74b590cb 100644 --- a/coriolis/tests/osmorphing/test_redhat.py +++ b/coriolis/tests/osmorphing/test_redhat.py @@ -383,33 +383,6 @@ def test__yum_clean_all_path_not_exists(self, mock_test_path, mock_exec_cmd_chroot.assert_called_once_with("yum clean all") - @mock.patch.object(base.BaseLinuxOSMorphingTools, '_list_dir') - @mock.patch.object(base.BaseLinuxOSMorphingTools, '_read_file_sudo') - def test__find_yum_repos_found(self, mock_read_file_sudo, mock_list_dir): - mock_list_dir.return_value = ['file1.repo', 'file2.repo'] - mock_read_file_sudo.return_value = b'[repo1]\n[repo2]' - repos_to_enable = ['repo1'] - - result = self.morphing_tools._find_yum_repos(repos_to_enable) - - mock_read_file_sudo.assert_has_calls([ - mock.call('etc/yum.repos.d/file1.repo'), - mock.call('etc/yum.repos.d/file2.repo') - ]) - - self.assertEqual(result, ['repo1']) - - @mock.patch.object(base.BaseLinuxOSMorphingTools, '_list_dir') - @mock.patch.object(base.BaseLinuxOSMorphingTools, '_read_file_sudo') - def test__find_yum_repos_not_found(self, mock_read_file_sudo, - mock_list_dir): - mock_list_dir.return_value = ['file1.repo', 'file2.repo'] - mock_read_file_sudo.return_value = b'[repo1]\n[repo2]' - repos_to_enable = ['repo3'] - - with self.assertLogs('coriolis.osmorphing.redhat', level=logging.WARN): - self.morphing_tools._find_yum_repos(repos_to_enable) - @mock.patch.object(redhat.BaseRedHatMorphingTools, '_yum_install') @mock.patch.object(redhat.BaseRedHatMorphingTools, '_yum_clean_all') @mock.patch.object(base.BaseLinuxOSMorphingTools, 'pre_packages_install')