mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 13:22:48 +00:00
YUM - handle enable of non-existent repo (#53286)
This commit is contained in:
committed by
Martin Krizek
parent
5ef2c5314e
commit
666dfdc551
@@ -332,7 +332,7 @@ EXAMPLES = '''
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.module_utils._text import to_native, to_text
|
||||
from ansible.module_utils.urls import fetch_url
|
||||
from ansible.module_utils.yumdnf import YumDnf, yumdnf_argument_spec
|
||||
|
||||
@@ -390,6 +390,26 @@ class YumModule(YumDnf):
|
||||
self.pkg_mgr_name = "yum"
|
||||
self.lockfile = '/var/run/yum.pid'
|
||||
|
||||
def _enablerepos_with_error_checking(self, yumbase):
|
||||
# NOTE: This seems unintuitive, but it mirrors yum's CLI bahavior
|
||||
if len(self.enablerepo) == 1:
|
||||
try:
|
||||
yumbase.repos.enableRepo(self.enablerepo[0])
|
||||
except yum.Errors.YumBaseError as e:
|
||||
if u'repository not found' in to_text(e):
|
||||
self.module.fail_json(msg="Repository %s not found." % self.enablerepo[0])
|
||||
else:
|
||||
raise e
|
||||
else:
|
||||
for rid in self.enablerepo:
|
||||
try:
|
||||
yumbase.repos.enableRepo(rid)
|
||||
except yum.Errors.YumBaseError as e:
|
||||
if u'repository not found' in to_text(e):
|
||||
self.module.warn("Repository %s not found." % rid)
|
||||
else:
|
||||
raise e
|
||||
|
||||
def yum_base(self):
|
||||
my = yum.YumBase()
|
||||
my.preconf.debuglevel = 0
|
||||
@@ -459,8 +479,7 @@ class YumModule(YumDnf):
|
||||
my = self.yum_base()
|
||||
for rid in self.disablerepo:
|
||||
my.repos.disableRepo(rid)
|
||||
for rid in self.enablerepo:
|
||||
my.repos.enableRepo(rid)
|
||||
self._enablerepos_with_error_checking(my)
|
||||
|
||||
e, m, _ = my.rpmdb.matchPackageNames([pkgspec])
|
||||
pkgs = e + m
|
||||
@@ -514,8 +533,7 @@ class YumModule(YumDnf):
|
||||
my = self.yum_base()
|
||||
for rid in self.disablerepo:
|
||||
my.repos.disableRepo(rid)
|
||||
for rid in self.enablerepo:
|
||||
my.repos.enableRepo(rid)
|
||||
self._enablerepos_with_error_checking(my)
|
||||
|
||||
e, m, _ = my.pkgSack.matchPackageNames([pkgspec])
|
||||
pkgs = e + m
|
||||
@@ -554,8 +572,7 @@ class YumModule(YumDnf):
|
||||
my = self.yum_base()
|
||||
for rid in self.disablerepo:
|
||||
my.repos.disableRepo(rid)
|
||||
for rid in self.enablerepo:
|
||||
my.repos.enableRepo(rid)
|
||||
self._enablerepos_with_error_checking(my)
|
||||
|
||||
pkgs = my.returnPackagesByDep(pkgspec) + my.returnInstalledPackagesByDep(pkgspec)
|
||||
if not pkgs:
|
||||
@@ -595,8 +612,7 @@ class YumModule(YumDnf):
|
||||
my = self.yum_base()
|
||||
for rid in self.disablerepo:
|
||||
my.repos.disableRepo(rid)
|
||||
for rid in self.enablerepo:
|
||||
my.repos.enableRepo(rid)
|
||||
self._enablerepos_with_error_checking(my)
|
||||
|
||||
try:
|
||||
pkgs = my.returnPackagesByDep(req_spec) + my.returnInstalledPackagesByDep(req_spec)
|
||||
@@ -1438,8 +1454,7 @@ class YumModule(YumDnf):
|
||||
current_repos = my.repos.repos.keys()
|
||||
if self.enablerepo:
|
||||
try:
|
||||
for rid in self.enablerepo:
|
||||
my.repos.enableRepo(rid)
|
||||
self._enablerepos_with_error_checking(my)
|
||||
new_repos = my.repos.repos.keys()
|
||||
for i in new_repos:
|
||||
if i not in current_repos:
|
||||
|
||||
Reference in New Issue
Block a user