@@ -179,11 +179,9 @@ def get_installed_packages(self):
179179 LOG .trace (utils .get_exception_details ())
180180 self .installed_packages = []
181181
182- def _yum_install (self , package_names , enable_repos = [] ):
182+ def _yum_install (self , package_names ):
183183 try :
184- yum_cmd = 'yum install %s -y%s' % (
185- " " .join (package_names ),
186- "" .join ([" --enablerepo=%s" % r for r in enable_repos ]))
184+ yum_cmd = 'yum install %s -y' % " " .join (package_names )
187185 self ._exec_cmd_chroot (yum_cmd )
188186 except exception .CoriolisException as err :
189187 raise exception .FailedPackageInstallationException (
@@ -205,56 +203,29 @@ def _yum_clean_all(self):
205203 if self ._test_path ('var/cache/yum' ):
206204 self ._exec_cmd_chroot ("rm -rf /var/cache/yum" )
207205
208- def _find_yum_repos (self , repos_to_enable = []):
209- """
210- Looks for required repositories passed as `repos_to_enable` in
211- /etc/yum.repos.d and returns the found repository names, so they can
212- be temporarily enabled when installing packages using yum.
213-
214- Yum only looks for repos in files with '.repo' extension, anything
215- else gets ignored, therefore this method should filter files by that
216- extension.
217-
218- Also, yum repository names might be different in some guest releases,
219- but still be similar. Therefore, repo name substrings should ideally be
220- passed in `repos_to_enable`. For example, we might be looking for repo
221- name 'ol7_latest', but the guest has it named as 'public_ol7_latest' in
222- the repo file.
223- """
224- found_repos = []
206+ def _get_repos_to_enable (self ):
207+ return []
225208
226- reposdir_path = 'etc/yum.repos.d'
209+ def enable_repos (self , repo_names ):
210+ """Enable repositories using subscription-manager for
211+ Red Hat Enterprise Linux.
227212
228- repofiles = [
229- f for f in self ._list_dir (reposdir_path ) if f .endswith ('.repo' )]
230- installed_repos = []
231- for file in repofiles :
232- path = os .path .join (reposdir_path , file )
213+ This method should be overridden by subclasses that use different
214+ repository management tools.
215+ """
216+ if not repo_names :
217+ return
218+
219+ for repo in repo_names :
220+ cmd = 'subscription-manager repos --enable=%s' % repo
233221 try :
234- content = self ._read_file_sudo (path ).decode ()
235- except Exception as e :
222+ self ._exec_cmd_chroot (cmd )
223+ LOG .info ("Enabled repository '%s' using subscription-manager" ,
224+ repo )
225+ except exception .CoriolisException as err :
236226 LOG .warning (
237- "Could not read yum repository file %s: %s" , path , e )
238- continue
239- for line in content .splitlines ():
240- m = re .match (r'^\[(.+)\]$' , line )
241- if m :
242- installed_repos .append (m .group (1 ))
243-
244- for repo in repos_to_enable :
245- available_repos = [ir for ir in installed_repos if repo in ir ]
246- available_repos .sort (key = len )
247- if available_repos :
248- found_repos .append (available_repos [0 ])
249- else :
250- LOG .warn (
251- "Could not find yum repository while searching for "
252- "repositories to enable: %s." , repo )
253-
254- return found_repos
255-
256- def _get_repos_to_enable (self ):
257- return []
227+ "Failed to enable repository '%s' with: %s" ,
228+ repo , err )
258229
259230 def pre_packages_install (self , package_names ):
260231 super (BaseRedHatMorphingTools , self ).pre_packages_install (
@@ -272,8 +243,9 @@ def post_packages_install(self, package_names):
272243 package_names )
273244
274245 def install_packages (self , package_names ):
275- enable_repos = self ._get_repos_to_enable ()
276- self ._yum_install (package_names , enable_repos )
246+ repos_to_enable = self ._get_repos_to_enable ()
247+ self .enable_repos (repos_to_enable )
248+ self ._yum_install (package_names )
277249
278250 def uninstall_packages (self , package_names ):
279251 self ._yum_uninstall (package_names )
0 commit comments