Using ldap2pg as a Python API
ldap2pg Python package exposes a simple API to execute ldap2pg business code
from you own Python script.
from textwrap import dedent
from ldap2pg import synchronize, UserError
try:
synchronize(dedent("""\
sync_map:
- role:
name: myrole
"""))
except UserError as e:
logger.error("%s", e)
ldap2pg.synchronize¶
Synchronizes a Postgres cluster from an LDAP directory according to the
configuration described in config.
config is either a raw YAML document or a Python dict following ldap2pg YAML
format.
environ is a dict allowing to override os.environ. Likewise, argv is a
list of strings overriding sys.argv. argv is passed as-is to
argparse.ArgumentParser.parse_args().
synchronize() returns 0 on success or raises ldap2pg.UserError on failure.
If config['check'] is True, synchronize() returns the number of queries
generated to synchronize the Postgres cluster.
Any exception other than ldap2pg.UserError is an unhandled error and should
be reported as a bug upstream.
ldap2pg.UserError¶
Represents an error in environment, configuration or runtime. Attribute
exit_code suggests a UNIX process exit code.
Logging¶
synchronize() does not modify logging configuration. All configurations
options relative to logging are useless when using API. However, ldap2pg makes
heavy usage of logging.
ldap2pg adds a custom logging level named CHANGE which is just above INFO
level. At import time, ldap2pg register this logging level. logging default
logger class is respected and preserved.