From 294857ab8d0651db5413d4aae90198b8be87597c Mon Sep 17 00:00:00 2001 From: Dmitry Bryazgin <58312247+bda618@users.noreply.github.com> Date: Thu, 6 Jul 2023 16:15:16 -0400 Subject: [PATCH] feat(ingest): Add advanced configuration for LDAP manager ingestion (#7784) Co-authored-by: Harshal Sheth --- .../src/datahub/ingestion/source/ldap.py | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/metadata-ingestion/src/datahub/ingestion/source/ldap.py b/metadata-ingestion/src/datahub/ingestion/source/ldap.py index ef35526792d6c..f2a9e95a1db2c 100644 --- a/metadata-ingestion/src/datahub/ingestion/source/ldap.py +++ b/metadata-ingestion/src/datahub/ingestion/source/ldap.py @@ -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] = {} @@ -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]: