feat(ingest/cli): add undo soft delete command (#11740)

This commit is contained in:
Aseem Bansal 2024-11-04 16:16:23 +05:30 committed by GitHub
parent 95f361ab44
commit 1f02c84480
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 27 additions and 1 deletions

View File

@ -213,6 +213,17 @@ def references(urn: str, dry_run: bool, force: bool) -> None:
logger.info(f"Deleted {references_count} references to {urn}")
@delete.command()
@click.option("--urn", required=True, type=str, help="the urn of the entity")
def undo_by_filter(urn: str) -> None:
"""
Undo a soft deletion of an entity
"""
graph = get_default_graph()
logger.info(f"Using {graph}")
graph.set_soft_delete_status(urn=urn, delete=False)
@delete.command(no_args_is_help=True)
@click.option(
"--urn",

View File

@ -1241,14 +1241,29 @@ class DataHubGraph(DatahubRestEmitter):
Args:
urn: The urn of the entity to soft-delete.
"""
self.set_soft_delete_status(
urn=urn, run_id=run_id, deletion_timestamp=deletion_timestamp, delete=True
)
def set_soft_delete_status(
self,
urn: str,
delete: bool,
run_id: str = _GRAPH_DUMMY_RUN_ID,
deletion_timestamp: Optional[int] = None,
) -> None:
"""Change status of soft-delete an entity by urn.
Args:
urn: The urn of the entity to soft-delete.
"""
assert urn
deletion_timestamp = deletion_timestamp or int(time.time() * 1000)
self.emit(
MetadataChangeProposalWrapper(
entityUrn=urn,
aspect=StatusClass(removed=True),
aspect=StatusClass(removed=delete),
systemMetadata=SystemMetadataClass(
runId=run_id, lastObserved=deletion_timestamp
),