Update htpasswd module for various API incompatibilities

reviewable/pr18780/r1
Michael DeHaan 11 years ago
parent be35a035b3
commit 81be8ff7d3

@ -92,17 +92,40 @@ def present(dest, username, password, create, check_mode):
if check_mode:
return ("Create %s" % dest, True)
create_missing_directories(dest)
ht = HtpasswdFile(dest, new=True)
ht.set_password(username, password)
try:
ht = HtpasswdFile(dest, new=True)
except:
# library version doesn't take 'new', deal with it.
fh = open(dest, 'w')
fh.write('')
fh.close()
ht = HtpasswdFile(dest)
if getattr(ht, 'set_password', None):
ht.set_password(username, password)
else:
ht.update(username, password)
ht.save()
return ("Created %s and added %s" % (dest, username), True)
else:
ht = HtpasswdFile(dest, new=False)
if ht.check_password(username, password):
try:
ht = HtpasswdFile(dest, new=False)
except:
ht = HtpasswdFile(dest)
found = None
if getattr(ht, 'check_password', None):
found = ht.check_password(username, password)
else:
found = ht.verify(username, password)
if found:
return ("%s already present" % username, False)
else:
if not check_mode:
ht.set_password(username, password)
if getattr(ht, 'set_password', None):
ht.set_password(username, password)
else:
ht.update(username, password)
ht.save()
return ("Add/update %s" % username, True)
@ -114,7 +137,11 @@ def absent(dest, username, check_mode):
if not os.path.exists(dest):
raise ValueError("%s does not exists" % dest)
ht = HtpasswdFile(dest, new=False)
try:
ht = HtpasswdFile(dest, new=False)
except:
ht = HtpasswdFile(dest)
if username not in ht.users():
return ("%s not present" % username, False)
else:

Loading…
Cancel
Save