diff --git a/lib/ansible/modules/extras/packaging/os/slackpkg.py b/lib/ansible/modules/extras/packaging/os/slackpkg.py index 943042172ab..577b46d705b 100644 --- a/lib/ansible/modules/extras/packaging/os/slackpkg.py +++ b/lib/ansible/modules/extras/packaging/os/slackpkg.py @@ -5,8 +5,8 @@ # Written by Kim Nørgaard # Based on pkgng module written by bleader # that was based on pkgin module written by Shaun Zinck -# that was based on pacman module written by Afterburn -# that was based on apt module written by Matthew Williams +# that was based on pacman module written by Afterburn +# that was based on apt module written by Matthew Williams # # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,7 +29,7 @@ short_description: Package manager for Slackware >= 12.2 description: - Manage binary packages for Slackware using 'slackpkg' which is available in versions after 12.2. -version_added: "1.6" +version_added: "2.0" options: name: description: @@ -50,7 +50,8 @@ options: default: false choices: [ true, false ] -author: Kim Nørgaard +author: Kim Nørgaard (@KimNorgaard) +requirements: [ "Slackware" >= 12.2 ] notes: [] ''' @@ -58,23 +59,19 @@ EXAMPLES = ''' # Install package foo - slackpkg: name=foo state=present -# Remove packages foo and bar +# Remove packages foo and bar - slackpkg: name=foo,bar state=absent ''' -import json -import shlex -import os -import sys - def query_package(module, slackpkg_path, name): import glob import platform machine = platform.machine() - packages = glob.glob("/var/log/packages/%s-*-[%s|noarch]*" % (name, machine)) + packages = glob.glob("/var/log/packages/%s-*-[%s|noarch]*" % (name, + machine)) if len(packages) > 0: return True @@ -83,7 +80,7 @@ def query_package(module, slackpkg_path, name): def remove_packages(module, slackpkg_path, packages): - + remove_c = 0 # Using a for loop incase of error, we can report the package that failed for package in packages: @@ -92,11 +89,14 @@ def remove_packages(module, slackpkg_path, packages): continue if not module.check_mode: - rc, out, err = module.run_command("%s -default_answer=y -batch=on remove %s" % (slackpkg_path, package)) + rc, out, err = module.run_command("%s -default_answer=y -batch=on \ + remove %s" % (slackpkg_path, + package)) - if not module.check_mode and query_package(module, slackpkg_path, package): + if not module.check_mode and query_package(module, slackpkg_path, + package): module.fail_json(msg="failed to remove %s: %s" % (package, out)) - + remove_c += 1 if remove_c > 0: @@ -115,55 +115,70 @@ def install_packages(module, slackpkg_path, packages): continue if not module.check_mode: - rc, out, err = module.run_command("%s -default_answer=y -batch=on install %s" % (slackpkg_path, package)) + rc, out, err = module.run_command("%s -default_answer=y -batch=on \ + install %s" % (slackpkg_path, + package)) - if not module.check_mode and not query_package(module, slackpkg_path, package): - module.fail_json(msg="failed to install %s: %s" % (package, out), stderr=err) + if not module.check_mode and not query_package(module, slackpkg_path, + package): + module.fail_json(msg="failed to install %s: %s" % (package, out), + stderr=err) install_c += 1 - + if install_c > 0: - module.exit_json(changed=True, msg="present %s package(s)" % (install_c)) + module.exit_json(changed=True, msg="present %s package(s)" + % (install_c)) module.exit_json(changed=False, msg="package(s) already present") -def upgrade_packages(module, slackpkg_path, packages): +def upgrade_packages(module, slackpkg_path, packages): install_c = 0 for package in packages: if not module.check_mode: - rc, out, err = module.run_command("%s -default_answer=y -batch=on upgrade %s" % (slackpkg_path, package)) + rc, out, err = module.run_command("%s -default_answer=y -batch=on \ + upgrade %s" % (slackpkg_path, + package)) - if not module.check_mode and not query_package(module, slackpkg_path, package): - module.fail_json(msg="failed to install %s: %s" % (package, out), stderr=err) + if not module.check_mode and not query_package(module, slackpkg_path, + package): + module.fail_json(msg="failed to install %s: %s" % (package, out), + stderr=err) install_c += 1 - + if install_c > 0: - module.exit_json(changed=True, msg="present %s package(s)" % (install_c)) + module.exit_json(changed=True, msg="present %s package(s)" + % (install_c)) module.exit_json(changed=False, msg="package(s) already present") + def update_cache(module, slackpkg_path): rc, out, err = module.run_command("%s -batch=on update" % (slackpkg_path)) if rc != 0: module.fail_json(msg="Could not update package cache") + def main(): module = AnsibleModule( - argument_spec = dict( - state = dict(default="installed", choices=['installed', 'removed', 'absent', 'present', 'latest']), - name = dict(aliases=["pkg"], required=True), - update_cache = dict(default=False, aliases=["update-cache"], type='bool'), + argument_spec=dict( + state=dict(default="installed", choices=['installed', 'removed', + 'absent', 'present', + 'latest']), + name=dict(aliases=["pkg"], required=True, type='list'), + update_cache=dict(default=False, aliases=["update-cache"], + type='bool'), ), - supports_check_mode = True) + supports_check_mode=True) slackpkg_path = module.get_bin_path('slackpkg', True) p = module.params - pkgs = p['name'].split(",") + pkgs = p['name'] if p["update_cache"]: update_cache(module, slackpkg_path) @@ -171,13 +186,13 @@ def main(): if p['state'] == 'latest': upgrade_packages(module, slackpkg_path, pkgs) - elif p['state'] in [ 'present', 'installed' ]: + elif p['state'] in ['present', 'installed']: install_packages(module, slackpkg_path, pkgs) - elif p["state"] in [ 'removed', 'absent' ]: + elif p["state"] in ['removed', 'absent']: remove_packages(module, slackpkg_path, pkgs) # import module snippets from ansible.module_utils.basic import * - + main()