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}")