From c39e7a939cf39682ef12e7ccb8ffd1d7fe2a4bdd Mon Sep 17 00:00:00 2001 From: Kristian Koehntopp Date: Wed, 26 Aug 2015 21:58:34 +0200 Subject: [PATCH 1/2] add force= option to allow force installation/removal of packages --- packaging/os/opkg.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packaging/os/opkg.py b/packaging/os/opkg.py index 5b75ad1a260..776c9235678 100644 --- a/packaging/os/opkg.py +++ b/packaging/os/opkg.py @@ -77,6 +77,11 @@ def query_package(module, opkg_path, name, state="present"): def remove_packages(module, opkg_path, packages): """ Uninstalls one or more packages if installed. """ + p = module.params + force = p["force"] + if force: + force = "--force-%s" % force + remove_c = 0 # Using a for loop incase of error, we can report the package that failed for package in packages: @@ -84,7 +89,7 @@ def remove_packages(module, opkg_path, packages): if not query_package(module, opkg_path, package): continue - rc, out, err = module.run_command("%s remove %s" % (opkg_path, package)) + rc, out, err = module.run_command("%s remove %s %s" % (opkg_path, force, package)) if query_package(module, opkg_path, package): module.fail_json(msg="failed to remove %s: %s" % (package, out)) @@ -101,13 +106,18 @@ def remove_packages(module, opkg_path, packages): def install_packages(module, opkg_path, packages): """ Installs one or more packages if not already installed. """ + p = module.params + force = p["force"] + if force: + force = "--force-%s" % force + install_c = 0 for package in packages: if query_package(module, opkg_path, package): continue - rc, out, err = module.run_command("%s install %s" % (opkg_path, package)) + rc, out, err = module.run_command("%s install %s %s" % (opkg_path, force, package)) if not query_package(module, opkg_path, package): module.fail_json(msg="failed to install %s: %s" % (package, out)) @@ -125,6 +135,7 @@ def main(): argument_spec = dict( name = dict(aliases=["pkg"], required=True), state = dict(default="present", choices=["present", "installed", "absent", "removed"]), + force = dict(default="", choices=["", "depends", "maintainer", "reinstall", "overwrite", "downgrade", "space", "postinstall", "remove", "checksum", "removal-of-dependent-packages"]), update_cache = dict(default="no", aliases=["update-cache"], type='bool') ) ) From 2da199b51d2ae0ee7b348e1299ecc6ff59895075 Mon Sep 17 00:00:00 2001 From: Kristian Koehntopp Date: Wed, 26 Aug 2015 22:26:02 +0200 Subject: [PATCH 2/2] update inline documentation --- packaging/os/opkg.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packaging/os/opkg.py b/packaging/os/opkg.py index 776c9235678..5fb52eae2eb 100644 --- a/packaging/os/opkg.py +++ b/packaging/os/opkg.py @@ -36,6 +36,12 @@ options: choices: [ 'present', 'absent' ] required: false default: present + force: + description: + - opkg --force parameter used + choices: ["", "depends", "maintainer", "reinstall", "overwrite", "downgrade", "space", "postinstall", "remove", "checksum", "removal-of-dependent-packages"] + required: false + default: absent update_cache: description: - update the package db first @@ -49,6 +55,7 @@ EXAMPLES = ''' - opkg: name=foo state=present update_cache=yes - opkg: name=foo state=absent - opkg: name=foo,bar state=absent +- opkg: name=foo state=present force=overwrite ''' import pipes