Merge pull request #8292 from jimi-c/issue_7863_deb_with_items

Allow deb package installation via with_items
pull/8294/head
James Cammarata 10 years ago
commit 4a8e068855

@ -291,50 +291,61 @@ def install(m, pkgspec, cache, upgrade=False, default_release=None,
else: else:
return (True, dict(changed=False)) return (True, dict(changed=False))
def install_deb(m, debfile, cache, force, install_recommends, dpkg_options): def install_deb(m, debs, cache, force, install_recommends, dpkg_options):
changed=False changed=False
pkg = apt.debfile.DebPackage(debfile) deps_to_install = []
pkgs_to_install = []
# Check if it's already installed for deb_file in debs.split(','):
if pkg.compare_to_version_in_cache() == pkg.VERSION_SAME: pkg = apt.debfile.DebPackage(deb_file)
m.exit_json(changed=False)
# Check if it's already installed
# Check if package is installable if pkg.compare_to_version_in_cache() == pkg.VERSION_SAME:
if not pkg.check(): continue
m.fail_json(msg=pkg._failure_string) # Check if package is installable
if not pkg.check():
(success, retvals) = install(m=m, pkgspec=pkg.missing_deps, m.fail_json(msg=pkg._failure_string)
cache=cache,
install_recommends=install_recommends, # add any missing deps to the list of deps we need
dpkg_options=expand_dpkg_options(dpkg_options)) # to install so they're all done in one shot
if not success: deps_to_install.extend(pkg.missing_deps)
m.fail_json(**retvals)
changed = retvals['changed'] # and add this deb to the list of packages to install
pkgs_to_install.append(deb_file)
options = ' '.join(["--%s"% x for x in dpkg_options.split(",")]) # install the deps through apt
retvals = {}
if m.check_mode: if len(deps_to_install) > 0:
options += " --simulate" (success, retvals) = install(m=m, pkgspec=deps_to_install, cache=cache,
if force: install_recommends=install_recommends,
options += " --force-yes" dpkg_options=expand_dpkg_options(dpkg_options))
if not success:
m.fail_json(**retvals)
changed = retvals.get('changed', False)
if len(pkgs_to_install) > 0:
options = ' '.join(["--%s"% x for x in dpkg_options.split(",")])
if m.check_mode:
options += " --simulate"
if force:
options += " --force-yes"
cmd = "dpkg %s -i %s" % (options, debfile) cmd = "dpkg %s -i %s" % (options, " ".join(pkgs_to_install))
rc, out, err = m.run_command(cmd) rc, out, err = m.run_command(cmd)
if "stdout" in retvals:
stdout = retvals["stdout"] + out
else:
stdout = out
if "stderr" in retvals:
stderr = retvals["stderr"] + err
else:
stderr = err
if "stdout" in retvals: if rc == 0:
stdout = retvals["stdout"] + out m.exit_json(changed=True, stdout=stdout, stderr=stderr)
else: else:
stdout = out m.fail_json(msg="%s failed" % cmd, stdout=stdout, stderr=stderr)
if "stderr" in retvals:
stderr = retvals["stderr"] + err
else:
stderr = err
if rc == 0:
m.exit_json(changed=True, stdout=stdout, stderr=stderr)
else: else:
m.fail_json(msg="%s failed" % cmd, stdout=stdout, stderr=stderr) m.exit_json(changed=changed, stdout=retvals.get('stdout',''), stderr=retvals.get('stderr',''))
def remove(m, pkgspec, cache, purge=False, def remove(m, pkgspec, cache, purge=False,
dpkg_options=expand_dpkg_options(DPKG_OPTIONS)): dpkg_options=expand_dpkg_options(DPKG_OPTIONS)):

Loading…
Cancel
Save