From 42a0d7141339295cf7fd2f5ed05d7ec2ef5cb8c1 Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 11 Jan 2018 17:41:23 -0600 Subject: [PATCH] Catch exception comparing role versions, and provide a user friendly error message. Fixes #32301 (#34427) --- lib/ansible/galaxy/role.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/ansible/galaxy/role.py b/lib/ansible/galaxy/role.py index 509b601dba..740631a80b 100644 --- a/lib/ansible/galaxy/role.py +++ b/lib/ansible/galaxy/role.py @@ -234,7 +234,14 @@ class GalaxyRole(object): # of the master branch if len(role_versions) > 0: loose_versions = [LooseVersion(a.get('name', None)) for a in role_versions] - loose_versions.sort() + try: + loose_versions.sort() + except TypeError: + raise AnsibleError( + 'Unable to compare role versions (%s) to determine the most recent version due to incompatible version formats. ' + 'Please contact the role author to resolve versioning conflicts, or specify an explicit role version to ' + 'install.' % ', '.join([v.vstring for v in loose_versions]) + ) self.version = str(loose_versions[-1]) elif role_data.get('github_branch', None): self.version = role_data['github_branch']