From b820d024fc3bf7029954d28b9aa05702a42fc6d3 Mon Sep 17 00:00:00 2001 From: Brendan Almonte Date: Wed, 24 May 2017 16:04:38 -0700 Subject: [PATCH] Add alternative syntax for upgrading all installed packages via apt (#25007) syntax: 'apt: name=* state=latest' feature #24189 --- lib/ansible/modules/packaging/os/apt.py | 14 +++++++++++++- test/integration/targets/apt/tasks/apt.yml | 12 ++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) 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"