From def4b24bb7e439dcd9de939a7d03d82cd5ff669c Mon Sep 17 00:00:00 2001 From: Steven Ayers Date: Fri, 23 Feb 2024 19:30:17 +0000 Subject: [PATCH] fix(cli): add-sibling preserve existing siblings (#9907) --- .../src/datahub/cli/specific/dataset_cli.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/metadata-ingestion/src/datahub/cli/specific/dataset_cli.py b/metadata-ingestion/src/datahub/cli/specific/dataset_cli.py index 1c55651f4f..5601d7e716 100644 --- a/metadata-ingestion/src/datahub/cli/specific/dataset_cli.py +++ b/metadata-ingestion/src/datahub/cli/specific/dataset_cli.py @@ -93,13 +93,21 @@ def add_sibling(urn: str, sibling_urns: Tuple[str]) -> None: def _emit_sibling( graph: DataHubGraph, primary_urn: str, urn: str, all_urns: Set[str] ) -> None: - siblings = [] + siblings = _get_existing_siblings(graph, urn) for sibling_urn in all_urns: if sibling_urn != urn: - siblings.append(sibling_urn) + siblings.add(sibling_urn) graph.emit( MetadataChangeProposalWrapper( entityUrn=urn, aspect=Siblings(primary=primary_urn == urn, siblings=sorted(siblings)), ) ) + + +def _get_existing_siblings(graph: DataHubGraph, urn: str) -> Set[str]: + existing = graph.get_aspect(urn, Siblings) + if existing: + return set(existing.siblings) + else: + return set()