Skip to content

Commit

Permalink
feat(ingest): Add advanced configuration for LDAP manager ingestion (#…
Browse files Browse the repository at this point in the history
…7784)

Co-authored-by: Harshal Sheth <[email protected]>
  • Loading branch information
bda618 and hsheth2 authored Jul 6, 2023
1 parent 5d3c6a8 commit 294857a
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions metadata-ingestion/src/datahub/ingestion/source/ldap.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,16 @@ class LDAPSourceConfig(StatefulIngestionConfigBase, DatasetSourceConfigMixin):
default=20, description="Size of each page to fetch when extracting metadata."
)

manager_filter_enabled: bool = Field(
default=True,
description="Use LDAP extractor filter to search managers.",
)

manager_pagination_enabled: bool = Field(
default=True,
description="Use pagination while search for managers (enabled by default).",
)

# default mapping for attrs
user_attrs_map: Dict[str, Any] = {}
group_attrs_map: Dict[str, Any] = {}
Expand Down Expand Up @@ -286,11 +296,19 @@ def handle_user(self, dn: str, attrs: Dict[str, Any]) -> Iterable[MetadataWorkUn
if self.config.user_attrs_map["managerUrn"] in attrs:
try:
m_cn = attrs[self.config.user_attrs_map["managerUrn"]][0].decode()
if self.config.manager_filter_enabled:
manager_filter = self.config.filter
else:
manager_filter = None
if self.config.manager_pagination_enabled:
ctrls = [self.lc]
else:
ctrls = None
manager_msgid = self.ldap_client.search_ext(
m_cn,
ldap.SCOPE_BASE,
self.config.filter,
serverctrls=[self.lc],
manager_filter,
serverctrls=ctrls,
)
result = self.ldap_client.result3(manager_msgid)
if result[1]:
Expand Down

0 comments on commit 294857a

Please sign in to comment.