summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrendan Almonte <almonteb@users.noreply.github.com>2017-05-24 16:04:38 -0700
committerToshio Kuratomi <a.badger@gmail.com>2017-05-24 16:04:38 -0700
commitb820d024fc3bf7029954d28b9aa05702a42fc6d3 (patch)
tree5641c9e5661242c6a2543d850afab7a89ea51d85
parent5c43bd3baec1f10968a1b971edcdd1100b821e62 (diff)
downloadansible-b820d024fc3bf7029954d28b9aa05702a42fc6d3.tar.gz
Add alternative syntax for upgrading all installed packages via apt (#25007)
syntax: 'apt: name=* state=latest' feature #24189
-rw-r--r--lib/ansible/modules/packaging/os/apt.py14
-rw-r--r--test/integration/targets/apt/tasks/apt.yml12
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/ansible/modules/packaging/os/apt.py b/lib/ansible/modules/packaging/os/apt.py
index 2172cda2e5..6dc3793179 100644
--- a/lib/ansible/modules/packaging/os/apt.py
+++ b/lib/ansible/modules/packaging/os/apt.py
@@ -170,6 +170,11 @@ EXAMPLES = '''
state: latest
install_recommends: no
+- name: Upgrade all packages to the latest version
+ apt:
+ name: "*"
+ state: latest
+
- name: Update all packages to the latest version
apt:
upgrade: dist
@@ -919,8 +924,15 @@ def main():
allow_unauthenticated=allow_unauthenticated,
force=force_yes, dpkg_options=p['dpkg_options'])
- packages = p['package']
+ packages = [package for package in p['package'] if package != '*']
+ all_installed = '*' in p['package']
latest = p['state'] == 'latest'
+
+ if latest and all_installed:
+ if packages:
+ module.fail_json(msg='unable to install additional packages when ugrading all installed packages')
+ upgrade(module, 'yes', force_yes, p['default_release'], dpkg_options)
+
if packages:
for package in packages:
if package.count('=') > 1:
diff --git a/test/integration/targets/apt/tasks/apt.yml b/test/integration/targets/apt/tasks/apt.yml
index d293f845fa..7aab018ec2 100644
--- a/test/integration/targets/apt/tasks/apt.yml
+++ b/test/integration/targets/apt/tasks/apt.yml
@@ -148,3 +148,15 @@
assert:
that:
- "dpkg_force.changed"
+
+# NEGATIVE: upgrade all packages while providing additional packages to install
+- name: provide additional packages to install while upgrading all installed packages
+ apt: pkg=*,test state=latest
+ ignore_errors: True
+ register: apt_result
+
+- name: verify failure of upgrade packages and install
+ assert:
+ that:
+ - "not apt_result.changed"
+ - "apt_result.failed"