From 18f1d496aacdb8ba9cf3fc20018a417b86e4c981 Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Tue, 24 Nov 2015 10:23:58 +0100 Subject: add rpm_q module to query rpm database --- library/rpm_q.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 library/rpm_q.py diff --git a/library/rpm_q.py b/library/rpm_q.py new file mode 100644 index 000000000..7e184579a --- /dev/null +++ b/library/rpm_q.py @@ -0,0 +1,66 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# (c) 2015, Tobias Florek +# Licensed under the terms of the MIT License + +from ansible.module_utils.basic import * + +DOCUMENTATION = """ +--- +module: rpm_q +short_description: Query the RPM database +author: Tobias Florek +options: + name: + description: + - The name of the package to query + required: true + state: + description: + - Whether the package is supposed to be installed or not + choices: [present, absent] + default: present +""" + +EXAMPLES = """ +- rpm_q: name=ansible state=present +- rpm_q: name=ansible state=absent +""" + +import os + +RPM_BINARY = '/bin/rpm' + +def main(): + """ + Checks rpm -q for the named package and returns the installed packages + or None if not installed. + """ + module = AnsibleModule( + argument_spec=dict( + name=dict(required=True), + state=dict(default='present', choices=['present', 'absent']) + ), + supports_check_mode=True + ) + + name = module.params['name'] + state = module.params['state'] + + rc, out, err = module.run_command([RPM_BINARY, '-q', name]) + + installed = out.rstrip('\n').split('\n') + + if rc != 0: + if state == 'present': + module.fail_json(msg="%s is not installed" % name, stdout=out, stderr=err, rc=rc) + else: + module.exit_json(changed=False) + elif state == 'present': + module.exit_json(changed=False, installed_versions=installed) + else: + module.fail_json(msg="%s is installed", installed_versions=installed) + +if __name__ == '__main__': + main() -- cgit v1.2.3 From f834279d5010f5a8b1a1cd7c75adaa7b0dce7fed Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Mon, 18 Jul 2016 10:10:16 +0200 Subject: make rpm-q module pylint warning-free --- library/rpm_q.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/rpm_q.py b/library/rpm_q.py index 7e184579a..ca3d0dd89 100644 --- a/library/rpm_q.py +++ b/library/rpm_q.py @@ -3,7 +3,12 @@ # (c) 2015, Tobias Florek # Licensed under the terms of the MIT License +""" +An ansible module to query the RPM database. For use, when yum/dnf are not +available. +""" +# pylint: disable=redefined-builtin,wildcard-import,unused-wildcard-import from ansible.module_utils.basic import * DOCUMENTATION = """ @@ -28,8 +33,6 @@ EXAMPLES = """ - rpm_q: name=ansible state=absent """ -import os - RPM_BINARY = '/bin/rpm' def main(): @@ -48,6 +51,7 @@ def main(): name = module.params['name'] state = module.params['state'] + # pylint: disable=invalid-name rc, out, err = module.run_command([RPM_BINARY, '-q', name]) installed = out.rstrip('\n').split('\n') -- cgit v1.2.3