Skip to content

Commit

Permalink
feat(cli): add more details to get cli
Browse files Browse the repository at this point in the history
  • Loading branch information
anshbansal committed Jul 1, 2024
1 parent 8edc94d commit 9ef2490
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 3 deletions.
1 change: 1 addition & 0 deletions docs/how/updating-datahub.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ This file documents any backwards-incompatible changes in DataHub and assists pe

- Protobuf CLI will no longer create binary encoded protoc custom properties. Flag added `-protocProp` in case this
behavior is required.
- `datahub get ...` CLI output format changed a bit. To use the older output format pass `datahub get -v 1 ...`

### Potential Downtime

Expand Down
8 changes: 7 additions & 1 deletion metadata-ingestion/src/datahub/cli/cli_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,7 @@ def get_aspects_for_entity(
aspects: List[str],
typed: bool = False,
cached_session_host: Optional[Tuple[Session, str]] = None,
version: int = 1,
) -> Dict[str, Union[dict, _Aspect]]:
# Process non-timeseries aspects
non_timeseries_aspects = [a for a in aspects if a not in TIMESERIES_ASPECT_MAP]
Expand Down Expand Up @@ -553,7 +554,12 @@ def get_aspects_for_entity(
aspect_name
)

aspect_dict = a["value"]
if version == 2:
aspect_dict = a
for k in ["name", "version", "type"]:
del aspect_dict[k]
else:
aspect_dict = a["value"]
if not typed:
aspect_map[aspect_name] = aspect_dict
elif aspect_py_class:
Expand Down
14 changes: 12 additions & 2 deletions metadata-ingestion/src/datahub/cli/get_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,18 @@ def get() -> None:
@get.command()
@click.option("--urn", required=False, type=str)
@click.option("-a", "--aspect", required=False, multiple=True, type=str)
@click.option(
"-v",
"--version",
required=False,
type=int,
default=2,
help="Version of get CLI to use.",
)
@click.pass_context
@upgrade.check_upgrade
@telemetry.with_telemetry()
def urn(ctx: Any, urn: Optional[str], aspect: List[str]) -> None:
def urn(ctx: Any, urn: Optional[str], aspect: List[str], version: int) -> None:
"""
Get metadata for an entity with an optional list of aspects to project.
This works for both versioned aspects and timeseries aspects. For timeseries aspects, it fetches the latest value.
Expand All @@ -39,7 +47,9 @@ def urn(ctx: Any, urn: Optional[str], aspect: List[str]) -> None:
logger.debug(f"Using urn from args {urn}")
click.echo(
json.dumps(
get_aspects_for_entity(entity_urn=urn, aspects=aspect, typed=False),
get_aspects_for_entity(
entity_urn=urn, aspects=aspect, typed=False, version=version
),
sort_keys=True,
indent=2,
)
Expand Down

0 comments on commit 9ef2490

Please sign in to comment.