mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-07-30 11:24:50 +00:00
Merge pull request #1268 from t-woerner/ipauser_use_date_string
ipauser: Use date string, not datetime object for expiration dates
This commit is contained in:
@@ -353,7 +353,15 @@ def api_check_ipa_version(oper, requested_version):
|
|||||||
tasks.parse_ipa_version(requested_version))
|
tasks.parse_ipa_version(requested_version))
|
||||||
|
|
||||||
|
|
||||||
def date_format(value):
|
def date_string(value):
|
||||||
|
# Convert datetime to gernalized time format string
|
||||||
|
if not isinstance(value, datetime):
|
||||||
|
raise ValueError("Invalid datetime type '%s'" % repr(value))
|
||||||
|
|
||||||
|
return value.strftime(LDAP_GENERALIZED_TIME_FORMAT)
|
||||||
|
|
||||||
|
|
||||||
|
def convert_date(value):
|
||||||
accepted_date_formats = [
|
accepted_date_formats = [
|
||||||
LDAP_GENERALIZED_TIME_FORMAT, # generalized time
|
LDAP_GENERALIZED_TIME_FORMAT, # generalized time
|
||||||
'%Y-%m-%dT%H:%M:%SZ', # ISO 8601, second precision
|
'%Y-%m-%dT%H:%M:%SZ', # ISO 8601, second precision
|
||||||
@@ -365,7 +373,7 @@ def date_format(value):
|
|||||||
|
|
||||||
for _date_format in accepted_date_formats:
|
for _date_format in accepted_date_formats:
|
||||||
try:
|
try:
|
||||||
return datetime.strptime(value, _date_format)
|
return date_string(datetime.strptime(value, _date_format))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
raise ValueError("Invalid date '%s'" % value)
|
raise ValueError("Invalid date '%s'" % value)
|
||||||
|
|||||||
@@ -739,10 +739,10 @@ user:
|
|||||||
|
|
||||||
|
|
||||||
from ansible.module_utils.ansible_freeipa_module import \
|
from ansible.module_utils.ansible_freeipa_module import \
|
||||||
IPAAnsibleModule, compare_args_ipa, gen_add_del_lists, date_format, \
|
IPAAnsibleModule, compare_args_ipa, gen_add_del_lists, convert_date, \
|
||||||
encode_certificate, load_cert_from_str, DN_x500_text, to_text, \
|
encode_certificate, load_cert_from_str, DN_x500_text, to_text, \
|
||||||
ipalib_errors, gen_add_list, gen_intersection_list, \
|
ipalib_errors, gen_add_list, gen_intersection_list, \
|
||||||
convert_input_certificates
|
convert_input_certificates, date_string
|
||||||
from ansible.module_utils import six
|
from ansible.module_utils import six
|
||||||
if six.PY3:
|
if six.PY3:
|
||||||
unicode = str
|
unicode = str
|
||||||
@@ -758,6 +758,10 @@ def find_user(module, name):
|
|||||||
except ipalib_errors.NotFound:
|
except ipalib_errors.NotFound:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
# Convert datetime to proper string representation
|
||||||
|
for _expkey in ["krbpasswordexpiration", "krbprincipalexpiration"]:
|
||||||
|
if _expkey in _result:
|
||||||
|
_result[_expkey] = [date_string(x) for x in _result[_expkey]]
|
||||||
# Transform each principal to a string
|
# Transform each principal to a string
|
||||||
_result["krbprincipalname"] = [
|
_result["krbprincipalname"] = [
|
||||||
to_text(x) for x in (_result.get("krbprincipalname") or [])
|
to_text(x) for x in (_result.get("krbprincipalname") or [])
|
||||||
@@ -1172,12 +1176,12 @@ def main():
|
|||||||
if principalexpiration is not None:
|
if principalexpiration is not None:
|
||||||
if principalexpiration[:-1] != "Z":
|
if principalexpiration[:-1] != "Z":
|
||||||
principalexpiration = principalexpiration + "Z"
|
principalexpiration = principalexpiration + "Z"
|
||||||
principalexpiration = date_format(principalexpiration)
|
principalexpiration = convert_date(principalexpiration)
|
||||||
passwordexpiration = ansible_module.params_get("passwordexpiration")
|
passwordexpiration = ansible_module.params_get("passwordexpiration")
|
||||||
if passwordexpiration is not None:
|
if passwordexpiration is not None:
|
||||||
if passwordexpiration[:-1] != "Z":
|
if passwordexpiration[:-1] != "Z":
|
||||||
passwordexpiration = passwordexpiration + "Z"
|
passwordexpiration = passwordexpiration + "Z"
|
||||||
passwordexpiration = date_format(passwordexpiration)
|
passwordexpiration = convert_date(passwordexpiration)
|
||||||
password = ansible_module.params_get("password")
|
password = ansible_module.params_get("password")
|
||||||
random = ansible_module.params_get("random")
|
random = ansible_module.params_get("random")
|
||||||
uid = ansible_module.params_get("uid")
|
uid = ansible_module.params_get("uid")
|
||||||
@@ -1310,12 +1314,12 @@ def main():
|
|||||||
if principalexpiration is not None:
|
if principalexpiration is not None:
|
||||||
if principalexpiration[:-1] != "Z":
|
if principalexpiration[:-1] != "Z":
|
||||||
principalexpiration = principalexpiration + "Z"
|
principalexpiration = principalexpiration + "Z"
|
||||||
principalexpiration = date_format(principalexpiration)
|
principalexpiration = convert_date(principalexpiration)
|
||||||
passwordexpiration = user.get("passwordexpiration")
|
passwordexpiration = user.get("passwordexpiration")
|
||||||
if passwordexpiration is not None:
|
if passwordexpiration is not None:
|
||||||
if passwordexpiration[:-1] != "Z":
|
if passwordexpiration[:-1] != "Z":
|
||||||
passwordexpiration = passwordexpiration + "Z"
|
passwordexpiration = passwordexpiration + "Z"
|
||||||
passwordexpiration = date_format(passwordexpiration)
|
passwordexpiration = convert_date(passwordexpiration)
|
||||||
password = user.get("password")
|
password = user.get("password")
|
||||||
random = user.get("random")
|
random = user.get("random")
|
||||||
uid = user.get("uid")
|
uid = user.get("uid")
|
||||||
|
|||||||
Reference in New Issue
Block a user