jerryshao commented on code in PR #5117: URL: https://github.com/apache/gravitino/pull/5117#discussion_r1825676264
########## docs/cli.md: ########## @@ -8,52 +8,65 @@ last_update: license: 'This software is licensed under the Apache License version 2.' --- -This document primarily outlines how users can manage metadata within Apache Gravitino using the Command Line Interface (CLI). The CLI is accessible via a terminal window as an alternative to writing code or using the REST interface. +This document provides guidance on managing metadata within Apache Gravitino using the Command Line Interface (CLI). The CLI offers a terminal based alternative to using code or the REST interface for metadata management. -Currently, you can view basic metadata information for metalakes, catalogs, schema, and tables. The ability to create, update, and delete metalakes and support additional entities in planned in the near future. +Currently, the CLI allows users to view metadata information for metalakes, catalogs, schemas, and tables. Future updates will expand on these capabilities to include roles, users, and tags. ## Running the CLI -You can set up an alias for the command like so: +You can configure an alias for the CLI for ease of use, with the following command: ```bash alias gcli='java -jar ../../cli/build/libs/gravitino-cli-*-incubating-SNAPSHOT.jar' ``` -Or use the `gcli.sh` script found in the `clients/cli/bin/` directory to run the CLI. +Or you use the `gcli.sh` script found in the `clients/cli/bin/` directory to run the CLI. ## Usage - To run the Gravitino CLI, use the following command structure: +The general structure for running commands with the Gravitino CLI is `gcli entity command [options]`. ```bash - usage: gcli [metalake|catalog|schema|table] [list|details|create|delete|update] [options] + usage: gcli [metalake|catalog|schema|table|column] [list|details|create|delete|update|set|remove|properties] [options] Options - -f,--name <arg> full entity name (dot separated) - -h,--help command help information - -i,--ignore Ignore client/sever version check - -m,--metalake <arg> Metalake name - -r,--server Gravitino server version - -u,--url <arg> Gravitino URL (default: http://localhost:8090) - -v,--version Gravitino client version + -b,--bootstrap <arg> Kafka bootstrap servers + -c,--comment <arg> entity comment + -d,--database <arg> database name + -h,--help command help information + -i,--ignore Ignore client/sever version check + -j,--jdbcurl <arg> JDBC URL + -l,--user <arg> database username + -m,--metastore <arg> Hive metastore URI + -n,--name <arg> full entity name (dot separated) + -p,--provider <arg> provider one of hadoop, hive, mysql, postgres, + iceberg, kafka + -r,--rename <arg> new entity name + -u,--url <arg> Gravitino URL (default: http://localhost:8090) + -v,--value <arg> property value + -w,--warehouse <arg> warehouse name + -z,--password <arg> database password Review Comment: There are two concerns I can see using per-catalog specific arguments: 1. It needs to define lots of arguments for all the catalogs, as the supported catalog number increases, we need to manually add more arguments, which increases the maintenance burden. Besides, in your implementation, you have one `CreateXXXCatalog` for each catalog, so when we add a new catalog, then we also have to update the CLI code, which is not necessary for REST API and Java client, and also increase the maintenance overhead. 2. The specific parameter defined here is also not easy for user to understand without checking the docs. For example, like "--password", the user doesn't know which catalog should use this parameter, he still needs to check the doc, it is because you didn't categorize the parameter for each specific catalog, and there're lots of arguments for different catalogs. So I think it is not necessary to define so many per-catalog arguments, WDYT? @shaofengshi For the problem you mentioned about the limitation of CLI library, I'm not sure if there's different solutions to solve it. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
