|
@@ -34,6 +34,7 @@ import json # noqa: F401
|
|
|
import os # noqa: F401
|
|
|
import re # noqa: F401
|
|
|
import shutil # noqa: F401
|
|
|
+import tempfile # noqa: F401
|
|
|
|
|
|
try:
|
|
|
import ruamel.yaml as yaml # noqa: F401
|
|
@@ -421,15 +422,16 @@ class RepoqueryCLI(object):
|
|
|
class Repoquery(RepoqueryCLI):
|
|
|
''' Class to wrap the repoquery
|
|
|
'''
|
|
|
- # pylint: disable=too-many-arguments
|
|
|
+ # pylint: disable=too-many-arguments,too-many-instance-attributes
|
|
|
def __init__(self, name, query_type, show_duplicates,
|
|
|
- match_version, verbose):
|
|
|
+ match_version, ignore_excluders, verbose):
|
|
|
''' Constructor for YumList '''
|
|
|
super(Repoquery, self).__init__(None)
|
|
|
self.name = name
|
|
|
self.query_type = query_type
|
|
|
self.show_duplicates = show_duplicates
|
|
|
self.match_version = match_version
|
|
|
+ self.ignore_excluders = ignore_excluders
|
|
|
self.verbose = verbose
|
|
|
|
|
|
if self.match_version:
|
|
@@ -437,6 +439,8 @@ class Repoquery(RepoqueryCLI):
|
|
|
|
|
|
self.query_format = "%{version}|%{release}|%{arch}|%{repo}|%{version}-%{release}"
|
|
|
|
|
|
+ self.tmp_file = None
|
|
|
+
|
|
|
def build_cmd(self):
|
|
|
''' build the repoquery cmd options '''
|
|
|
|
|
@@ -448,6 +452,9 @@ class Repoquery(RepoqueryCLI):
|
|
|
if self.show_duplicates:
|
|
|
repo_cmd.append('--show-duplicates')
|
|
|
|
|
|
+ if self.ignore_excluders:
|
|
|
+ repo_cmd.append('--config=' + self.tmp_file.name)
|
|
|
+
|
|
|
repo_cmd.append(self.name)
|
|
|
|
|
|
return repo_cmd
|
|
@@ -519,6 +526,20 @@ class Repoquery(RepoqueryCLI):
|
|
|
def repoquery(self):
|
|
|
'''perform a repoquery '''
|
|
|
|
|
|
+ if self.ignore_excluders:
|
|
|
+ # Duplicate yum.conf and reset exclude= line to an empty string
|
|
|
+ # to clear a list of all excluded packages
|
|
|
+ self.tmp_file = tempfile.NamedTemporaryFile()
|
|
|
+
|
|
|
+ with open("/etc/yum.conf", "r") as file_handler:
|
|
|
+ yum_conf_lines = file_handler.readlines()
|
|
|
+
|
|
|
+ yum_conf_lines = ["exclude=" if l.startswith("exclude=") else l for l in yum_conf_lines]
|
|
|
+
|
|
|
+ with open(self.tmp_file.name, "w") as file_handler:
|
|
|
+ file_handler.writelines(yum_conf_lines)
|
|
|
+ file_handler.flush()
|
|
|
+
|
|
|
repoquery_cmd = self.build_cmd()
|
|
|
|
|
|
rval = self._repoquery_cmd(repoquery_cmd, True, 'raw')
|
|
@@ -541,6 +562,9 @@ class Repoquery(RepoqueryCLI):
|
|
|
else:
|
|
|
rval['package_found'] = False
|
|
|
|
|
|
+ if self.ignore_excluders:
|
|
|
+ self.tmp_file.close()
|
|
|
+
|
|
|
return rval
|
|
|
|
|
|
@staticmethod
|
|
@@ -552,6 +576,7 @@ class Repoquery(RepoqueryCLI):
|
|
|
params['query_type'],
|
|
|
params['show_duplicates'],
|
|
|
params['match_version'],
|
|
|
+ params['ignore_excluders'],
|
|
|
params['verbose'],
|
|
|
)
|
|
|
|
|
@@ -592,6 +617,7 @@ def main():
|
|
|
verbose=dict(default=False, required=False, type='bool'),
|
|
|
show_duplicates=dict(default=False, required=False, type='bool'),
|
|
|
match_version=dict(default=None, required=False, type='str'),
|
|
|
+ ignore_excluders=dict(default=False, required=False, type='bool'),
|
|
|
),
|
|
|
supports_check_mode=False,
|
|
|
required_if=[('show_duplicates', True, ['name'])],
|