datahub/metadata-ingestion/examples/library/corpgroup_add_members.py

39 lines
1.3 KiB
Python

# metadata-ingestion/examples/library/corpgroup_add_members.py
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 GroupMembershipClass
from datahub.metadata.urns import CorpGroupUrn, CorpUserUrn
graph = DataHubGraph(DataHubGraphConfig(server="http://localhost:8080"))
emitter = DatahubRestEmitter(gms_server="http://localhost:8080")
group_urn = str(CorpGroupUrn("data-engineering"))
users_to_add = [
CorpUserUrn("jdoe"),
CorpUserUrn("asmith"),
CorpUserUrn("bwilliams"),
]
for user_urn in users_to_add:
user_urn_str = str(user_urn)
current_membership = graph.get_aspect(user_urn_str, GroupMembershipClass)
if current_membership is None:
current_membership = GroupMembershipClass(groups=[])
if group_urn not in current_membership.groups:
current_membership.groups.append(group_urn)
metadata_event = MetadataChangeProposalWrapper(
entityUrn=user_urn_str,
aspect=current_membership,
)
emitter.emit(metadata_event)
print(f"Added {user_urn_str} to group {group_urn}")
else:
print(f"{user_urn_str} is already a member of {group_urn}")