mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-12-11 23:36:25 +00:00
parent
8d739563f2
commit
4eadcfdc5d
@ -16,7 +16,7 @@ To be used by OpenMetadata class
|
||||
from functools import lru_cache
|
||||
from typing import Optional, Type
|
||||
|
||||
from metadata.generated.schema.entity.teams.team import Team
|
||||
from metadata.generated.schema.entity.teams.team import Team, TeamType
|
||||
from metadata.generated.schema.entity.teams.user import User
|
||||
from metadata.generated.schema.type.entityReference import EntityReference
|
||||
from metadata.ingestion.api.common import T
|
||||
@ -153,6 +153,7 @@ class OMetaUserMixin:
|
||||
from_count: int = 0,
|
||||
size: int = 1,
|
||||
fields: Optional[list] = None,
|
||||
is_owner: bool = False,
|
||||
) -> Optional[EntityReference]:
|
||||
"""
|
||||
Get a User or Team Entity Reference by searching by its name
|
||||
@ -172,6 +173,9 @@ class OMetaUserMixin:
|
||||
entity=Team, name=name, from_count=from_count, size=size, fields=fields
|
||||
)
|
||||
if maybe_team:
|
||||
# if is_owner is True, we only want to return the team if it is a group
|
||||
if is_owner and maybe_team.teamType != TeamType.Group:
|
||||
return None
|
||||
return EntityReference(
|
||||
id=maybe_team.id.root,
|
||||
type=ENTITY_REFERENCE_TYPE_MAP[Team.__name__],
|
||||
|
||||
@ -540,7 +540,9 @@ class DatabaseServiceSource(
|
||||
table_name=table_name,
|
||||
schema=self.context.get().database_schema,
|
||||
)
|
||||
owner_ref = self.metadata.get_reference_by_name(name=owner_name)
|
||||
owner_ref = self.metadata.get_reference_by_name(
|
||||
name=owner_name, is_owner=True
|
||||
)
|
||||
return owner_ref
|
||||
except Exception as exc:
|
||||
logger.debug(traceback.format_exc())
|
||||
|
||||
@ -151,7 +151,9 @@ class DbtSource(DbtServiceSource):
|
||||
if manifest_node:
|
||||
dbt_owner = manifest_node.meta.get(DbtCommonEnum.OWNER.value)
|
||||
if dbt_owner:
|
||||
owner = self.metadata.get_reference_by_name(name=dbt_owner)
|
||||
owner = self.metadata.get_reference_by_name(
|
||||
name=dbt_owner, is_owner=True
|
||||
)
|
||||
if not owner:
|
||||
logger.warning(
|
||||
"Unable to ingest owner from DBT since no user or"
|
||||
|
||||
@ -223,7 +223,7 @@ class OracleSource(StoredProcedureMixin, CommonDbSourceService):
|
||||
code=stored_procedure.definition,
|
||||
),
|
||||
owner=self.metadata.get_reference_by_name(
|
||||
name=stored_procedure.owner.lower()
|
||||
name=stored_procedure.owner.lower(), is_owner=True
|
||||
),
|
||||
databaseSchema=fqn.build(
|
||||
metadata=self.metadata,
|
||||
|
||||
@ -411,7 +411,7 @@ class AirflowSource(PipelineServiceSource):
|
||||
until the next run.
|
||||
"""
|
||||
try:
|
||||
return self.metadata.get_reference_by_name(name=owner)
|
||||
return self.metadata.get_reference_by_name(name=owner, is_owner=True)
|
||||
except Exception as exc:
|
||||
logger.warning(f"Error while getting details of user {owner} - {exc}")
|
||||
return None
|
||||
|
||||
@ -184,3 +184,8 @@ class OMetaUserTest(TestCase):
|
||||
self.team.id,
|
||||
self.metadata.get_reference_by_name(name="OPS Team").id,
|
||||
)
|
||||
|
||||
# if team is not group, return none
|
||||
self.assertIsNone(
|
||||
self.metadata.get_reference_by_name(name="Organization", is_owner=True)
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user