From 0be0aa5f1073166de1d9a2c8b41cdaf5bce34659 Mon Sep 17 00:00:00 2001 From: James Braid Date: Mon, 19 Jun 2017 04:02:06 -0700 Subject: [PATCH] htpasswd: fix passlib module version comparison (#20202) Previously, we used StrictVersion which failed to parse some passlib version strings. For example, Debian currently ship passlib with a __version__ of '1.7.0.post20161128115349' StrictVersion throws an exception when parsing this version string. Change to using LooseVersion which successfully parses version strings such as this. Fixes #20199 --- lib/ansible/modules/web_infrastructure/htpasswd.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/web_infrastructure/htpasswd.py b/lib/ansible/modules/web_infrastructure/htpasswd.py index 191e7614da1..bff8f0d5fc3 100644 --- a/lib/ansible/modules/web_infrastructure/htpasswd.py +++ b/lib/ansible/modules/web_infrastructure/htpasswd.py @@ -104,7 +104,7 @@ EXAMPLES = """ import os import tempfile -from distutils.version import StrictVersion +from distutils.version import LooseVersion try: from passlib.apache import HtpasswdFile, htpasswd_context @@ -138,7 +138,7 @@ def present(dest, username, password, crypt_scheme, create, check_mode): if check_mode: return ("Create %s" % dest, True) create_missing_directories(dest) - if StrictVersion(passlib.__version__) >= StrictVersion('1.6'): + if LooseVersion(passlib.__version__) >= LooseVersion('1.6'): ht = HtpasswdFile(dest, new=True, default_scheme=crypt_scheme, context=context) else: ht = HtpasswdFile(dest, autoload=False, default=crypt_scheme, context=context) @@ -149,7 +149,7 @@ def present(dest, username, password, crypt_scheme, create, check_mode): ht.save() return ("Created %s and added %s" % (dest, username), True) else: - if StrictVersion(passlib.__version__) >= StrictVersion('1.6'): + if LooseVersion(passlib.__version__) >= LooseVersion('1.6'): ht = HtpasswdFile(dest, new=False, default_scheme=crypt_scheme, context=context) else: ht = HtpasswdFile(dest, default=crypt_scheme, context=context) @@ -176,7 +176,7 @@ def absent(dest, username, check_mode): """ Ensures user is absent Returns (msg, changed) """ - if StrictVersion(passlib.__version__) >= StrictVersion('1.6'): + if LooseVersion(passlib.__version__) >= LooseVersion('1.6'): ht = HtpasswdFile(dest, new=False) else: ht = HtpasswdFile(dest)