From 7adc146e2f9667ce69888d0a0f952c8f44b6ff20 Mon Sep 17 00:00:00 2001 From: Sloane Hertel <19572925+s-hertel@users.noreply.github.com> Date: Fri, 15 Mar 2024 20:17:37 -0400 Subject: [PATCH] Fix traceback and allow installing roles with version None (#81849) * Allow installing roles with version `None` from Galaxy Co-authored-by: Matt Martz --- changelogs/fragments/a-g-install-version-None.yml | 2 ++ lib/ansible/galaxy/role.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/a-g-install-version-None.yml diff --git a/changelogs/fragments/a-g-install-version-None.yml b/changelogs/fragments/a-g-install-version-None.yml new file mode 100644 index 00000000000..874e5f0dbe0 --- /dev/null +++ b/changelogs/fragments/a-g-install-version-None.yml @@ -0,0 +1,2 @@ +bugfixes: + - ansible-galaxy role install - fix installing roles from Galaxy that have version ``None`` (https://github.com/ansible/ansible/issues/81832). diff --git a/lib/ansible/galaxy/role.py b/lib/ansible/galaxy/role.py index 77334f8630e..d6d8454b809 100644 --- a/lib/ansible/galaxy/role.py +++ b/lib/ansible/galaxy/role.py @@ -297,7 +297,7 @@ class GalaxyRole(object): # are no versions in the list, we'll grab the head # of the master branch if len(role_versions) > 0: - loose_versions = [LooseVersion(a.get('name', None)) for a in role_versions] + loose_versions = [v for a in role_versions if (v := LooseVersion()) and v.parse(a.get('name') or '') is None] try: loose_versions.sort() except TypeError: