summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael DeHaan <michael.dehaan@gmail.com>2013-03-31 19:20:11 -0700
committerMichael DeHaan <michael.dehaan@gmail.com>2013-03-31 19:20:11 -0700
commit1ad61b3e19de06b361d96fc967ac98fd9878f3ae (patch)
tree301e0c20752c2b793cf70966fe9f1f9f17dd43e6
parent304c447bd2d188fb35fe98b6758aa095712798d4 (diff)
parent9289db18b466b23dd9b08bb026323f2cc4f29486 (diff)
downloadansible-1ad61b3e19de06b361d96fc967ac98fd9878f3ae.tar.gz
Merge pull request #2541 from lorin/apt-upgrade
Use aptitude safe-upgrade for apt upgrade=yes
-rw-r--r--library/apt27
1 files changed, 19 insertions, 8 deletions
diff --git a/library/apt b/library/apt
index 691f60d3cf..d9207253ba 100644
--- a/library/apt
+++ b/library/apt
@@ -69,7 +69,7 @@ options:
choices: [ "yes", "no" ]
upgrade:
description:
- - 'If yes, performs an apt-get upgrade. If dist, performs an apt-get dist-upgrade. Note: This does not upgrade a specific package, use state=latest for that.'
+ - 'If yes, performs an aptitude safe-upgrade. If dist, performs an apt-get dist-upgrade. Note: This does not upgrade a specific package, use state=latest for that.'
version_added: "1.1"
required: false
default: no
@@ -91,6 +91,7 @@ examples:
description: Install latest version of C(openjdk-6-jdk) ignoring C(install-reccomends)
- code: "apt: upgrade=dist"
description: Update all packages to the latest version
+requirements: [ python-apt, aptitude ]
'''
import traceback
@@ -186,15 +187,25 @@ def remove(m, pkgspec, cache, purge=False):
m.exit_json(changed=True)
def upgrade(m, mode="yes"):
+ if m.check_mode:
+ check_arg = '--simulate'
+ else:
+ check_arg = ''
upgrade_command = 'upgrade'
if mode == "dist":
- upgrade_command = 'dist-upgrade'
- cmd = '%s -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" %s' % (APT, upgrade_command)
- rc, out, err = m.run_command(cmd)
- if rc:
- m.fail_json(msg="'apt-get %s' failed: %s" % (upgrade_command, err))
- if "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." in out :
- m.exit_json(changed=False)
+ cmd = '%s %s -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" dist-upgrade' % (APT, check_arg)
+ rc, out, err = m.run_command(cmd)
+ if rc:
+ m.fail_json(msg="'apt-get %s' failed: %s" % (upgrade_command, err))
+ if "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." in out :
+ m.exit_json(changed=False)
+ else:
+ cmd = "/usr/bin/aptitude safe-upgrade %s -y" % check_arg
+ rc, out, err = m.run_command(cmd)
+ if rc:
+ m.fail_json(msg="'aptitude safe-upgrade' failed: %s" % err)
+ if "No packages will be installed, upgraded, or removed." in out:
+ m.exit_json(changed=False)
m.exit_json(changed=True)
def main():