2.3bug20202 (#25864)

* 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
(cherry picked from commit 0be0aa5f10)

* htpasswd: fix passlib module version comparison
pull/25873/head
John R Barker 8 years ago committed by GitHub
parent 8813b4f03d
commit 2bfdb77ed4

@ -21,6 +21,7 @@ Ansible Changes By Release
* Corrected requried on hash_name for dynamodb_table * Corrected requried on hash_name for dynamodb_table
* Fix for fetch action plugin not validating correctly * Fix for fetch action plugin not validating correctly
* Avoid vault view writing display to logs * Avoid vault view writing display to logs
* htpasswd: fix passlib module version comparison
## 2.3.1 "Ramble On" - 2017-06-01 ## 2.3.1 "Ramble On" - 2017-06-01

@ -104,7 +104,7 @@ EXAMPLES = """
import os import os
import tempfile import tempfile
from distutils.version import StrictVersion from distutils.version import LooseVersion
try: try:
from passlib.apache import HtpasswdFile, htpasswd_context from passlib.apache import HtpasswdFile, htpasswd_context
@ -138,7 +138,7 @@ def present(dest, username, password, crypt_scheme, create, check_mode):
if check_mode: if check_mode:
return ("Create %s" % dest, True) return ("Create %s" % dest, True)
create_missing_directories(dest) 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) ht = HtpasswdFile(dest, new=True, default_scheme=crypt_scheme, context=context)
else: else:
ht = HtpasswdFile(dest, autoload=False, default=crypt_scheme, context=context) 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() ht.save()
return ("Created %s and added %s" % (dest, username), True) return ("Created %s and added %s" % (dest, username), True)
else: 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) ht = HtpasswdFile(dest, new=False, default_scheme=crypt_scheme, context=context)
else: else:
ht = HtpasswdFile(dest, default=crypt_scheme, context=context) ht = HtpasswdFile(dest, default=crypt_scheme, context=context)
@ -176,7 +176,7 @@ def absent(dest, username, check_mode):
""" Ensures user is absent """ Ensures user is absent
Returns (msg, changed) """ Returns (msg, changed) """
if StrictVersion(passlib.__version__) >= StrictVersion('1.6'): if LooseVersion(passlib.__version__) >= LooseVersion('1.6'):
ht = HtpasswdFile(dest, new=False) ht = HtpasswdFile(dest, new=False)
else: else:
ht = HtpasswdFile(dest) ht = HtpasswdFile(dest)

Loading…
Cancel
Save