From 2e040e9de393eae5c1dfdfb8169fc38dfb4231ad Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Tue, 5 May 2015 14:46:28 -0400 Subject: [PATCH] Update scan facts to include the service scanner which was inexplicably missing, update scan_packages to match the footprint of scan_services (makes searching easier) --- awx/playbooks/scan_facts.yml | 1 + awx/plugins/library/scan_packages.py | 48 ++++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/awx/playbooks/scan_facts.yml b/awx/playbooks/scan_facts.yml index cd33098771..ffbe4512fd 100644 --- a/awx/playbooks/scan_facts.yml +++ b/awx/playbooks/scan_facts.yml @@ -4,6 +4,7 @@ scan_use_recursive: false tasks: - scan_packages: + - scan_services: - scan_files: path: '{{ scan_file_path }}' get_checksum: '{{ scan_use_checksum }}' diff --git a/awx/plugins/library/scan_packages.py b/awx/plugins/library/scan_packages.py index 8fb2a68008..8077cfe45d 100755 --- a/awx/plugins/library/scan_packages.py +++ b/awx/plugins/library/scan_packages.py @@ -3,10 +3,47 @@ import os from ansible.module_utils.basic import * # noqa +DOCUMENTATION = ''' +--- +module: scan_packages +short_description: Return installed packages information as fact data +description: + - Return information about installed packages as fact data +version_added: "1.9" +options: +requirements: [ ] +author: Matthew Jones +''' + +EXAMPLES = ''' +# Example fact output: +# host | success >> { +# "ansible_facts": { +# "services": [ +# { +# "source": "apt", +# "version": "1.0.6-5", +# "architecture": "amd64", +# "name": "libbz2-1.0" +# }, +# { +# "source": "apt", +# "version": "2.7.1-4ubuntu1", +# "architecture": "amd64", +# "name": "patch" +# }, +# { +# "source": "apt", +# "version": "4.8.2-19ubuntu1", +# "architecture": "amd64", +# "name": "gcc-4.8-base" +# }, ... ] } } +''' + def rpm_package_list(): import rpm trans_set = rpm.TransactionSet() - installed_packages = {} + installed_packages = [] for package in trans_set.dbMatch(): package_details = dict(name=package[rpm.RPMTAG_NAME], version=package[rpm.RPMTAG_VERSION], @@ -14,16 +51,13 @@ def rpm_package_list(): epoch=package[rpm.RPMTAG_EPOCH], arch=package[rpm.RPMTAG_ARCH], source='rpm') - if package['name'] not in installed_packages: - installed_packages[package['name']] = [package_details] - else: - installed_packages[package['name']].append(package_details) + installed_packages.append(package_details) return installed_packages def deb_package_list(): import apt apt_cache = apt.Cache() - installed_packages = {} + installed_packages = [] apt_installed_packages = [pk for pk in apt_cache.keys() if apt_cache[pk].is_installed] for package in apt_installed_packages: ac_pkg = apt_cache[package].installed @@ -31,7 +65,7 @@ def deb_package_list(): version=ac_pkg.version, architecture=ac_pkg.architecture, source='apt') - installed_packages[package] = [package_details] + installed_packages.append(package_details) return installed_packages def main():