|
|
|
@ -155,7 +155,7 @@ ansible_facts:
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
from ansible.module_utils._text import to_native, to_text
|
|
|
|
|
from ansible.module_utils.basic import AnsibleModule
|
|
|
|
|
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
|
|
|
|
from ansible.module_utils.common.process import get_bin_path
|
|
|
|
|
from ansible.module_utils.facts.packages import LibMgr, CLIMgr, get_all_pkg_managers
|
|
|
|
|
|
|
|
|
@ -174,6 +174,13 @@ class RPM(LibMgr):
|
|
|
|
|
epoch=package[self._lib.RPMTAG_EPOCH],
|
|
|
|
|
arch=package[self._lib.RPMTAG_ARCH],)
|
|
|
|
|
|
|
|
|
|
def is_available(self):
|
|
|
|
|
''' we expect the python bindings installed, but this gives warning if they are missing and we have rpm cli'''
|
|
|
|
|
we_have_lib = super(RPM, self).is_available()
|
|
|
|
|
if not we_have_lib and get_bin_path('rpm'):
|
|
|
|
|
self.warnings.append('Found "rpm" but %s' % (missing_required_lib('rpm')))
|
|
|
|
|
return we_have_lib
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class APT(LibMgr):
|
|
|
|
|
|
|
|
|
@ -195,9 +202,9 @@ class APT(LibMgr):
|
|
|
|
|
''' we expect the python bindings installed, but if there is apt/apt-get give warning about missing bindings'''
|
|
|
|
|
we_have_lib = super(APT, self).is_available()
|
|
|
|
|
if not we_have_lib:
|
|
|
|
|
for exe in ('apt', 'apt-get'):
|
|
|
|
|
for exe in ('apt', 'apt-get', 'aptitude'):
|
|
|
|
|
if get_bin_path(exe):
|
|
|
|
|
self.warnings.append('Found "%s" but python bindings are missing, so we cannot get package information.' % exe)
|
|
|
|
|
self.warnings.append('Found "%s" but %s' % (exe, missing_required_lib('apt')))
|
|
|
|
|
break
|
|
|
|
|
return we_have_lib
|
|
|
|
|
|
|
|
|
@ -291,7 +298,11 @@ def main():
|
|
|
|
|
|
|
|
|
|
unsupported = set(managers).difference(PKG_MANAGER_NAMES)
|
|
|
|
|
if unsupported:
|
|
|
|
|
module.fail_json(msg='Unsupported package managers requested: %s' % (', '.join(unsupported)))
|
|
|
|
|
if 'auto' in module.params['manager']:
|
|
|
|
|
msg = 'Could not auto detect a usable package manager, check warnings for details.'
|
|
|
|
|
else:
|
|
|
|
|
msg = 'Unsupported package managers requested: %s' % (', '.join(unsupported))
|
|
|
|
|
module.fail_json(msg=msg)
|
|
|
|
|
|
|
|
|
|
found = 0
|
|
|
|
|
seen = set()
|
|
|
|
|