mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-11 17:03:33 +00:00
86 lines
2.4 KiB
Python
86 lines
2.4 KiB
Python
# metadata-ingestion/examples/library/platform_instance_add_metadata.py
|
|
import time
|
|
|
|
import datahub.emitter.mce_builder as builder
|
|
from datahub.emitter.mcp import MetadataChangeProposalWrapper
|
|
from datahub.emitter.rest_emitter import DatahubRestEmitter
|
|
from datahub.metadata.schema_classes import (
|
|
AuditStampClass,
|
|
GlobalTagsClass,
|
|
InstitutionalMemoryClass,
|
|
InstitutionalMemoryMetadataClass,
|
|
OwnerClass,
|
|
OwnershipClass,
|
|
OwnershipTypeClass,
|
|
TagAssociationClass,
|
|
)
|
|
|
|
# Create the platform instance URN
|
|
platform_instance_urn = builder.make_dataplatform_instance_urn(
|
|
platform="snowflake", instance="acme-prod-account"
|
|
)
|
|
|
|
# Add ownership
|
|
owners = [
|
|
OwnerClass(
|
|
owner=builder.make_user_urn("data-platform-team"),
|
|
type=OwnershipTypeClass.TECHNICAL_OWNER,
|
|
),
|
|
OwnerClass(
|
|
owner=builder.make_user_urn("john.doe"),
|
|
type=OwnershipTypeClass.DATAOWNER,
|
|
),
|
|
]
|
|
|
|
ownership_mcp = MetadataChangeProposalWrapper(
|
|
entityUrn=platform_instance_urn,
|
|
aspect=OwnershipClass(owners=owners),
|
|
)
|
|
|
|
# Add tags
|
|
tags = GlobalTagsClass(
|
|
tags=[
|
|
TagAssociationClass(tag=builder.make_tag_urn("production")),
|
|
TagAssociationClass(tag=builder.make_tag_urn("pci-compliant")),
|
|
TagAssociationClass(tag=builder.make_tag_urn("tier-1")),
|
|
]
|
|
)
|
|
|
|
tags_mcp = MetadataChangeProposalWrapper(
|
|
entityUrn=platform_instance_urn,
|
|
aspect=tags,
|
|
)
|
|
|
|
# Add institutional memory (links)
|
|
links = InstitutionalMemoryClass(
|
|
elements=[
|
|
InstitutionalMemoryMetadataClass(
|
|
url="https://wiki.company.com/snowflake-prod-runbook",
|
|
description="Production Snowflake Runbook",
|
|
createStamp=AuditStampClass(
|
|
time=int(time.time() * 1000), actor=builder.make_user_urn("datahub")
|
|
),
|
|
),
|
|
InstitutionalMemoryMetadataClass(
|
|
url="https://wiki.company.com/snowflake-access-guide",
|
|
description="How to request access to production Snowflake",
|
|
createStamp=AuditStampClass(
|
|
time=int(time.time() * 1000), actor=builder.make_user_urn("datahub")
|
|
),
|
|
),
|
|
]
|
|
)
|
|
|
|
links_mcp = MetadataChangeProposalWrapper(
|
|
entityUrn=platform_instance_urn,
|
|
aspect=links,
|
|
)
|
|
|
|
# Emit all metadata changes
|
|
emitter = DatahubRestEmitter("http://localhost:8080")
|
|
emitter.emit_mcp(ownership_mcp)
|
|
emitter.emit_mcp(tags_mcp)
|
|
emitter.emit_mcp(links_mcp)
|
|
|
|
print(f"Added ownership, tags, and links to: {platform_instance_urn}")
|