Fix: dbt multi owner support from manifest (#21233)

This commit is contained in:
Suman Maharana 2025-05-19 12:04:22 +05:30 committed by GitHub
parent 9ec424a3fa
commit 5a3d40f643
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -150,29 +150,37 @@ class DbtSource(DbtServiceSource):
Returns dbt owner Returns dbt owner
""" """
try: try:
owner = None owner_ref = None
dbt_owner = None dbt_owner = None
if catalog_node: if catalog_node:
dbt_owner = catalog_node.metadata.owner dbt_owner = catalog_node.metadata.owner
if manifest_node: if manifest_node:
dbt_owner = manifest_node.meta.get(DbtCommonEnum.OWNER.value) dbt_owner = manifest_node.meta.get(DbtCommonEnum.OWNER.value)
if dbt_owner: if dbt_owner and isinstance(dbt_owner, str):
owner = self.metadata.get_reference_by_name( owner_ref = self.metadata.get_reference_by_name(
name=dbt_owner, is_owner=True name=dbt_owner, is_owner=True
) or self.metadata.get_reference_by_email(email=dbt_owner)
if owner_ref:
return owner_ref
logger.warning(
"Unable to ingest owner from DBT since no user or"
f" team was found with name {dbt_owner}"
) )
elif dbt_owner and isinstance(dbt_owner, list):
if owner: owner_list = EntityReferenceList(root=[])
return owner for owner_name in dbt_owner:
owner_ref = self.metadata.get_reference_by_name(
# If owner is not found, try to find the owner in OMD using email name=owner_name, is_owner=True
owner = self.metadata.get_reference_by_email(email=dbt_owner) ) or self.metadata.get_reference_by_email(email=owner_name)
if owner_ref:
if not owner: owner_list.root.extend(owner_ref.root)
logger.warning( else:
"Unable to ingest owner from DBT since no user or" logger.warning(
f" team was found with name {dbt_owner}" "Unable to ingest owner from DBT since no user or"
) f" team was found with name {owner_name}"
return owner )
if owner_list.root:
return owner_list
except Exception as exc: except Exception as exc:
logger.debug(traceback.format_exc()) logger.debug(traceback.format_exc())
logger.warning(f"Unable to ingest owner from DBT due to: {exc}") logger.warning(f"Unable to ingest owner from DBT due to: {exc}")