def delete_by_urn(urn, session, host): entity_type = guess_entity_type(urn=urn) delete_one_urn_cmd( urn, soft=False, dry_run=False, entity_type=entity_type, cached_session_host=(session, host), ) sleep(5) print()
def put(urn: str, aspect: str, aspect_data: str) -> None: """Update a single aspect of an entity""" entity_type = guess_entity_type(urn) with open(aspect_data) as fp: aspect_obj = json.load(fp) status = post_entity( urn=urn, aspect_name=aspect, entity_type=entity_type, aspect_value=aspect_obj, )
def put(ctx: Any, urn: str, aspect: str, aspect_data: str) -> None: """Update a single aspect of an entity""" entity_type = guess_entity_type(urn) with open(aspect_data) as fp: aspect_obj = json.load(fp) status = post_entity( urn=urn, aspect_name=aspect, entity_type=entity_type, aspect_value=aspect_obj, ) click.secho(f"Update succeeded with status {status}", fg="green")
def delete( urn: str, force: bool, soft: bool, env: str, platform: str, entity_type: str, query: str, registry_id: str, dry_run: bool, ) -> None: """Delete metadata from datahub using a single urn or a combination of filters""" cli_utils.test_connectivity_complain_exit("delete") # one of urn / platform / env / query must be provided if not urn and not platform and not env and not query and not registry_id: raise click.UsageError( "You must provide either an urn or a platform or an env or a query for me to delete anything" ) # default query is set to "*" if not provided query = "*" if query is None else query if not force and not soft and not dry_run: click.confirm( "This will permanently delete data from DataHub. Do you want to continue?", abort=True, ) if urn: # Single urn based delete session, host = cli_utils.get_session_and_host() entity_type = guess_entity_type(urn=urn) logger.info(f"DataHub configured with {host}") deletion_result: DeletionResult = delete_one_urn_cmd( urn, soft=soft, dry_run=dry_run, entity_type=entity_type, cached_session_host=(session, host), ) if not dry_run: if deletion_result.num_records == 0: click.echo(f"Nothing deleted for {urn}") else: click.echo( f"Successfully deleted {urn}. {deletion_result.num_records} rows deleted" ) elif registry_id: # Registry-id based delete if soft and not dry_run: raise click.UsageError( "Soft-deleting with a registry-id is not yet supported. Try --dry-run to see what you will be deleting, before issuing a hard-delete using the --hard flag" ) deletion_result = delete_for_registry(registry_id=registry_id, soft=soft, dry_run=dry_run) else: # Filter based delete deletion_result = delete_with_filters( env=env, platform=platform, dry_run=dry_run, soft=soft, entity_type=entity_type, search_query=query, force=force, ) if not dry_run: message = "soft delete" if soft else "hard delete" click.echo( f"Took {(deletion_result.end_time_millis-deletion_result.start_time_millis)/1000.0} seconds to {message} {deletion_result.num_records} rows for {deletion_result.num_entities} entities" ) else: click.echo( f"{deletion_result.num_entities} entities with {deletion_result.num_records if deletion_result.num_records != UNKNOWN_NUM_RECORDS else 'unknown'} rows will be affected. Took {(deletion_result.end_time_millis-deletion_result.start_time_millis)/1000.0} seconds to evaluate." ) if deletion_result.sample_records: click.echo( tabulate(deletion_result.sample_records, RUN_TABLE_COLUMNS, tablefmt="grid"))