mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-11 08:52:58 +00:00
39 lines
1.3 KiB
Python
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}")
|