mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-12 09:23:52 +00:00
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
# metadata-ingestion/examples/library/query_add_owner.py
|
|
import logging
|
|
|
|
from datahub.emitter.mcp import MetadataChangeProposalWrapper
|
|
from datahub.emitter.rest_emitter import DatahubRestEmitter
|
|
from datahub.ingestion.graph.client import DataHubGraph, DataHubGraphConfig
|
|
from datahub.metadata.schema_classes import (
|
|
OwnerClass,
|
|
OwnershipClass,
|
|
OwnershipTypeClass,
|
|
)
|
|
from datahub.metadata.urns import CorpUserUrn, QueryUrn
|
|
|
|
log = logging.getLogger(__name__)
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
query_urn = QueryUrn("my-unique-query-id")
|
|
|
|
graph = DataHubGraph(DataHubGraphConfig(server="http://localhost:8080"))
|
|
emitter = DatahubRestEmitter(gms_server="http://localhost:8080")
|
|
|
|
existing_ownership = graph.get_aspect(
|
|
entity_urn=query_urn.urn(),
|
|
aspect_type=OwnershipClass,
|
|
)
|
|
|
|
owners = existing_ownership.owners if existing_ownership else []
|
|
|
|
new_owner = OwnerClass(
|
|
owner=CorpUserUrn("jdoe").urn(),
|
|
type=OwnershipTypeClass.TECHNICAL_OWNER,
|
|
)
|
|
|
|
if new_owner not in owners:
|
|
owners.append(new_owner)
|
|
|
|
ownership_aspect = OwnershipClass(
|
|
owners=owners,
|
|
)
|
|
|
|
event = MetadataChangeProposalWrapper(
|
|
entityUrn=query_urn.urn(),
|
|
aspect=ownership_aspect,
|
|
)
|
|
|
|
emitter.emit(event)
|
|
log.info(f"Added owner to query {query_urn}")
|