|
new file 100644
|
|
|
import io
|
|
|
|
|
|
import ldif
|
|
|
|
|
|
|
|
|
def parse_ldif(ldif_input):
|
|
|
"""
|
|
|
Helper function that parses the passed-in LDIF string. This is a
|
|
|
simple wrapper around the Python LDAP ldif.LDIFRecordList class.
|
|
|
|
|
|
Entries are returned as list of (dn, attributes)
|
|
|
tuples. Attributes are represented by a dictionary mapping
|
|
|
attribute names to list of associated values.
|
|
|
|
|
|
:param ldif_input: LDIF to parse.
|
|
|
:type ldif_input: str
|
|
|
|
|
|
:returns: List of parsed entries.
|
|
|
:rtype: list[tuple(str, dict{str: list[str]})]
|
|
|
|
|
|
Returns:
|
|
|
"""
|
|
|
|
|
|
parser = ldif.LDIFRecordList(io.StringIO(ldif_input))
|
|
|
|
|
|
try:
|
|
|
parser.parse()
|
|
|
except Exception as e:
|
|
|
raise ValueError("Failed to parse input: %s" % str(e))
|
|
|
|
|
|
return parser.all_records
|