HDXCLI Commands

Introduction

hdxcli is a command-line tool to work with Hydrolix projects and tables interactively.

Common operations such as CRUD operations on projects/tables/transforms and others can be performed.

Installation

You can install hdxcli from pip:

pip install hdxcli

Or if you just need to update to the latest version:

pip install --upgrade hdxcli

System Requirements

Python version >= 3.10 and <= 3.12 is required.

Make sure you have the correct Python version installed before proceeding with the installation of hdxcli.

Useful Tips for Installing HDXCLI

As hdxcli currently requires specific Python versions, a tool called pyenv comes in handy. It allows you to effortlessly switch between various installed Python versions and install any available Python version. By using pyenv in conjunction with venv you can easily create environments with a specific Python version.

For more information on pyenv, including installation instructions, refer to the pyenv GitHub repository or pyenv GitHub repository for Windows.

Usage

Command-line Tool Organization

The tool is organized mostly with the general invocation form of:

hdxcli <resource> [subresource] <verb> [resource_name]

Table and project resources have defaults that depend on the profile you are working with, so they can be omitted if you previously used the set command.

For all other resources, you can use --transform, --dictionary, --source, etc. Please see the command line help for more information.

Profiles

hdxcli supports multiple profiles. You can use a default profile or use the --profile option to operate on a non-default profile.

When invoking a command, if a login to the server is necessary, a prompt will be shown and the token will be cached.

Listing and Showing Profiles

Listing profiles:

hdxcli profile list

Showing default profile:

hdxcli profile show

Projects, Tables, and Transforms

The basic operations you can do with these resources are:

  • list them
  • create a new resource
  • delete an existing resource
  • modify an existing resource
  • show a resource in raw JSON format
  • show settings from a resource
  • write a setting
  • show a single setting

Working With Transforms

You can create and override transforms with the following commands.

Create a transform:

hdxcli transform create -f <transform-settings-file>.json <transform-name>

Remember that a transform is applied to a table in a project, so whatever you set with the command line tool will be the target of your transform.

If you want to override it, specify the table name with the --table setting:

hdxcli transform --project <project-name> --table <table-name> create -f <transform-settings>.json <transform-name>

Migrating Resources Across Clusters

The migrate command takes care of migrating projects, tables (both turbine and summary), transforms, dictionaries and functions from one cluster to another. Projects can be allowlisted or denylisted. Any project that already exists in the target cluster is considered to be the same as in the source cluster and its creation will be skipped. However, if the project has tables or other resources that exist in the source but not in the target, those resources will be created. If the migration fails, a rollback will happen by default.

The rollback will rollback exactly the resources that were created during the migration so far. Resources that already existed in the target cluster before starting the migration will not be deleted, even if the source cluster contains those resources (resource matching between source and cluster is done by name). You can use denylists and allowlists by giving repeated arguments with project names. Only one of denylisting or allowlisting is allowed in the same migration command.

hdxcli migrate <target-cluster-username> <target-cluster-hostname> [options]

Migrate Options

-p, --target-cluster-password TEXT

-u, --target-cluster-uri-scheme TEXT default: https

-B, --project-blacklist TEXT

-b, --project-whitelist TEXT

-R, --no-rollback BOOLEAN default: false

To see examples of its operation, let's assume the target-cluster-hostname is hdx.example.com, the target-cluster-usernameis [[email protected]](mailto:[email protected]), and the password (-p) is stored in an environment variable called _PASSWORD.

In the following example, we will simulate migrating project-A and project-B to the mentioned hostname:

hdxcli migrate [[email protected]](mailto:[email protected]) hdx.example.com -p $PASSWORD -u http -b project-A -b project-B

In this example, we will migrate all projects except project-A and project-B:

hdxcli migrate [[email protected]](mailto:[email protected]) hdx.example.com -p $PASSWORD -u http -B project-A -B project-B

Migrating Individual Resources

This command migrates an individual resource from one cluster to another (or even in the same one). This migrate command is available in almost all resources (project, table, transform, function, dictionary, storage), and it clones (with the same settings but different UUID) any resource to a target cluster.

hdxcli project migrate <project-name> --target-cluster-hostname <target-cluster> --target-cluster-username <username> --target-cluster-password <password> --target-cluster-uri-scheme \<http/https>

This command also handles profiles that can be used as the target cluster by specifying them like this: -tp, --target-cluster.

hdxcli project migrate <project-name> -tp <profile-name>

When migrating a table, it is necessary to provide the project name in the target cluster where that table will be migrated. This option must be provided: -P, --target-project-name.

hdxcli table --project <project-name> migrate <table-name> -tp <profile-name> -P <project-name>

Mapping DDLs to a Hydrolix Transform

The command transform map-from consumes data languages such as SQL, Elastic and others and creates a Hydrolix transform from them.

hdxcli transform map-from --ddl-custom-mapping \<sql_to_hdx_mapping>.json \<ddl_file> <transform-name>

There are three things involved:

  • The mapping file sql_to_hdx_mapping.json: tells how to map simple and compound types from the source DDL into Hydrolix.
  • The input file ddl_file: in SQL, Elastic or other language.
  • The target table: the table in which the transform is applied. The current table is used if none is provided.

Mapping File

The mapping file contains two sections:

  • simple_datatypes
  • compound_datatypes

An example of this for SQL could be the following:

{  
  "simple_datatypes": {  
    "INT": ["uint8", "uint16", "uint32", "int8", "int16", "int32_optimal"],  
    "BIGINT":["uint64", "int64_optimal"],  
    "STRING": "string",  
    "DATE": "datetime",  
    "REAL": "double",  
    "DOUBLE": "double",  
    "FLOAT": "double",  
    "BOOLEAN": "boolean",  
    "TIMESTAMP": "datetime",  
    "TEXT": "string"  
  },  
  "compound_datatypes": {  
    "ARRAY": "array",  
    "STRUCT": "map",  
    "MAP": "map",  
    "VARCHAR": "string"  
  }  
}

The mappings that have a list as the value uses the one finishing in _optimal. This is just a replacement for comments since JSON does not allow comments.

The compound_datatypes parsing needs code help to be completely parsed. This is where the extensible interfaces for DDLs enters.

DDL File as Input

The ddl_file specifies the structure of various data storage entities, including SQL and Elasticsearch. It should encompass fields, their associated data types, and any additional constraints. This specification is pivotal for accurate mapping to Hydrolix transforms.

The following DDL SQL could be an example of this:

CREATE TABLE a_project.with_a_table (  
  account_id STRING,  
  device_id STRING,  
  playback_session_id STRING,  
  user_session_id STRING,  
  user_agent STRING,  
  timestamp TIMESTAMP,  
  start_timestamp BIGINT,  
  another_time TIMESTAMP PRIMARY KEY,  
  end_timestamp BIGINT,  
  video_ranges ARRAY<STRING>,  
  playback_started BOOLEAN,  
  average_peak_bitrate BIGINT,  
  bitrate_changed_count INT,  
  bitrate_change_list ARRAY<BIGINT>,  
  bitrate_change_timestamp_list ARRAY<BIGINT>,  
  start_bitrate BIGINT,  
  fetch_and_render_media_segment_duration BIGINT,  
  fetch_and_render_media_segment_start_timestamp BIGINT,  
  re_buffer_start_timestamp_list ARRAY<BIGINT>,  
  exit_before_ad_start_flag BOOLEAN,  
  ingest_utc_hour INT,  
  ingest_utc_date DATE)  
USING delta  
PARTITIONED BY (ingest_utc_date, ingest_utc_hour)  
LOCATION 's3://...'  
TBLPROPERTIES ('delta.minReaderVersion' = '1',  
              'delta.minWriterVersion' = '2');

User Choices File

After transform map-from does type mappings, it might need some tweaks that are user choices. There are two ways to provide these choices. One way is to do it interactively (default) and the other way is to provide a user choices file by means of the --user-choices option followed by a file. The file is a JSON file with

The user choices are done as a post-processing step, and some of those options are shared by all DDLs, but some are specific to a single DDL. Example of user choices are:

  • general: the ingest index for each field if CSV is used
  • Elastic: add fields whose cardinality will be potentially more than one, since this needs to adjust the output of the algorithm to change simple types to an array mapping

There are two kind of user choices. The general ones and the DDL-specific ones. The DDL-specific user choices go prefixed with the name of the DDL (the same name you pass to the -s option in the command line). For Elastic it would be elastic and for SQL, sql.

User Choice KeyExample ValuePurpose
ingest_type‘json’ Type of ingest. Valid values are ‘json’, ‘csv’.Tell the transform the expected data type for ingestion.
csv_indexes[[“field1”, 0], [“field2”, 1],…]Array of arrays with index and field nameKnow where ingest happens for which fields in the transform. Applies to csv.
csv_delimters',' a string that separates csv fieldsDelimit fields in csv format
elastic.array_fields['field1', ‘field2’, ‘some_field.*regex’]

Which fields are considered arrays in Elastic mappings
In Elastic, all fields have 0..* cardinality by default. Hydrolix will map all to cardinality one except the ones indicated in this user choice, which will be mapped to arrays of that type.
compression‘gzip’Which compression algorithm to use
primary_key‘your_key’the primary key for the transform
add_ignored_fields_as_string_columnstrue|falseWhether ignored fields should be added as a string

Ingest

Batch Job

Create a batch job:

hdxcli job batch ingest <job-name> <job-settings>.json

job-name is the name of the job that will be displayed when listing batch jobs. job-settings is the path to the file containing the specifications required to create that ingestion (for more information on the required specifications, see Hydrolix API Reference).

In this case, the project, table, and transform are being omitted. hdxcli will use the default transform within the project and table previously configured in the profile with the set command. Otherwise, you can add --project <project-name> --table <table-name> --transform <transform-name>.

This allows you to execute the command as follows:

hdxcli job batch --project <project-name> --table <table-name> --transform <transform-name> ingest <job-name> <job-settings>.json

Stream

Create the streaming ingest as follows:

hdxcli stream --project <project-name> --table <table-name> --transform <transform-name> ingest <data-file>

data-file is the path of the data file to be used for the ingest. This can be .csv, .json, or compressed files. The transform has to have that configuration (type and compression).

Commands

Profile

There is a 'default' profile that will be used if you omit --profile <profile-name> on each request to the HDXCLI.

List

hdxcli profile list  

Add

hdxcli profile add <profile-name>  
Please, type the host name of your cluster: <host-name>  
Please, type the user name of your cluster: <user-name>  
Will you be using https  (Y/N): \<Y/N>

Show

If you omit --profile <profile-name>, 'default' profile will be shown.

hdxcli --profile <profile-name> profile show  

Set/Unset

hdxcli allows you to save both project name and table name to use as default.

Set

hdxcli set <project-name> <table-name>  

Unset

hdxcli unset

From now on, when you see --project <project-name> and --table <table-name>, you know that it can be omitted if the set command was previously used.

User

List

hdxcli user list

Delete

hdxcli user delete <user-email>

Show

hdxcli user --user <user-email> show

Assign roles

You can assign just one or multiple roles to a specific user. The option -r, --role can be used multiple times. It's a required setting.

hdxcli user assign-role <user-email> --role <role-name>  

Remove roles

The same as the assign-role command, but instead it removes roles from a user.

hdxcli user remove-role <user-email> --role <role-name>

Invite

List

The -p or --pending option can be used to filter the invite list, displaying only pending invitations.

hdxcli user invite list  

Send

The -r or --role option can be used multiple times. It is a required setting.

hdxcli user invite send <user-email> --role <role-name>

Resend

hdxcli user invite send <user-email>

Delete

hdxcli user invite delete <user-email>

Show

hdxcli user invite --user <user-email> show\

Role

List

hdxcli role list

Create

There are two ways to create a new role:

Using options. However, if you choose this method, the role cannot have two or more policies.

Using the interactive method.

Create a role using options

-n, --name and -p, --permission are required options to create a new role, and the -p, --permission option can be used multiple times. While a role may or may not have a specific scope, these options are considered optional. The -t, --scope-type expects to receive the name of a resource, such as project, table, transform, etc., and the -i, --scope-id should be the UUID identifier for that specific resource.

Use the following command to create a new role:

hdxcli role create --name <role-name> --scope-type <scope-type> --scope-id <scope-id> --permission <permission-name>

Create a role using interactive method

To create a role interactively, use the following command:

hdxcli role create  
Enter the name for the new role: <role-name>  
Adding a Policy, does it have a specific scope? [Y/n]\: \<y/n>  
Specify the type of scope for the role (e.g., project): <scope-type>  
Provide the 'uuid' for the specified scope: <scope-id>  
1 - commit_alterjob  
2 - change_kinesissource  
3 - ...  
n - All of them  
Enter the numbers corresponding to the permissions you'd want to add (comma-separated): \<i.e:1,2 or n>  
Do you want to add another Policy? [Y/n]\: \<y/n>

***

## Review Role Details

Role Name: <role-name>  
Policy 1:  
  Scope Type: <scope-type>  
  Scope ID: <scope-id>  
  Permissions: \<[permissions]>  
Confirm the creation of the new role? [Y/n]\: \<y/n>  
Created role role-name

Delete

hdxcli role delete <role-name>

Show

hdxcli role --role <role-name> show

Edit

This is an interactive command that allows you to modify the name of a role and add, modify, or delete policies associated with that role. Before finalizing the operation, it presents a detailed view of the modified role for confirmation or cancellation.

hdxcli role edit <role-name>

Add users

It allows to add just one or multiple users to a specific role. The option -u, --user can be used multiple times. It's required.

hdxcli role add-user <role-name> --user <user-email>

Remove users

The same as add-user command but to remove users from a role.

hdxcli role remove-user <role-name> --user <user-email>

Permissions list

This command displays a list of available permissions. Additionally, it allows filtering by type using the option -t, --type (e.g., -t function), showing only permissions related to that specific type.

hdxcli role permission list

Project

List

hdxcli project list

Create

hdxcli project create <project-name>

Delete

hdxcli project delete <project-name>

Display activity

hdxcli project --project <project-name> activity

Display statistics

hdxcli project --project <project-name> stats

Show

hdxcli project --project <project-name> show

Settings

Display all settings

hdxcli project --project <project-name> settings

Display single setting

hdxcli project --project <project-name> settings <setting-name>

Modify setting

hdxcli project --project <project-name> settings <setting-name> <new-value>

Migrate

hdxcli project migrate <project-name> -tp <profile-name>

Table

List

hdxcli table --project <project-name> list

Create Raw Table (Regular)

If creating a regular table, no additional options are required. Use the table create command without specifying any options.

hdxcli table --project <project-name> create <table-name>

Additionally, an option (--settings-file) exists to set different table settings other than the default. This works for both regular tables and summary tables:

hdxcli table --project <project-name> create <table-name> --settings-file <settings-file>.json

Create Aggregation Table (Summary)

When creating summary tables, the following options are necessary:

  • --type or -t: Specify as summary.

  • --sql-query or -s: Provide the SQL query directly via the command line.

Alternatively, use --sql-query-file to specify a file containing the SQL query.

Example using a SQL query in the command line:

hdxcli table --project <project-name> create <table-name> --type summary --sql-query <sql-query>

Example using a file containing the SQL query:

hdxcli table --project <project-name> create <table-name> --type summary --sql-query-file <sql-query-file>.txt

Delete

hdxcli table --project <project-name> delete <table-name>

Display Activity

hdxcli table --project <project-name> --table <table-name> activity

Display Statistics

hdxcli table --project <project-name> --table <table-name> stats

Show

hdxcli table --project <project-name> --table <table-name> show

Settings

Display All Settings

hdxcli table --project <project-name> --table <table-name> settings

Display Single Setting

hdxcli table --project <project-name> --table <table-name> settings <setting-name>

Modify Setting

hdxcli table --project <project-name> --table <table-name> settings <setting-name> <new-value>

Migrate

hdxcli table --project <project-name> migrate <table-name> -tp <profile-name> -P <target-project-name>

Truncate

hdxcli table --project <project-name> truncate <table-name>

Transform

List

hdxcli transform --project <project-name> --table <table-name> list

Create

The field ‘name’ in settings will be replaced by .

hdxcli transform --project <project-name> --table <table-name> create -f <transform-settings>.json <transform-name>

Delete

hdxcli transform --project <project-name> --table <table-name> delete <transform-name>

Show

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> show

Settings

Display All Settings

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> settings

Display Single Setting

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> settings <setting-name>

Modify setting

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> settings <setting-name> <new-value>

Migrate

hdxcli transform --project <project-name> --table <table-name> migrate <transform-name> -tp <profile-name> -P <target-project-name> -T <target-table-name>

Map-from

The command transform map-from consumes data languages such as SQL, Elastic and others and create a Hydrolix transform from them.

hdxcli transform map-from --ddl-custom-mapping \<sql_to_hdx_mapping>.json \<ddl_file> <transform-name>

To learn more about map-from command, see Mapping DDLs to Hydrolix transform.

Job Batch

List

hdxcli job batch list

Ingest

It will use the default transform in <project-name>.<table-name> if you don't provide --transform <transform-name>.

hdxcli job batch --project <project-name> --table <table-name> --transform <transform-name> ingest <job-name> <job-settings>.json

Delete

hdxcli job batch delete <job-name>

Retry

hdxcli job batch retry <job-name>

Cancel

hdxcli job batch cancel <job-name>

Show

hdxcli job batch --job <job-name> show

Settings

Display all settings

hdxcli job batch --job <job-name> settings

Display single setting

hdxcli job batch --job <job-name> settings <setting-name>

Modify setting

hdxcli job batch --job <job-name> settings <setting-name> <new-value>

Stream

Ingest

hdxcli stream --project <project-name> --table <table-name> --transform <transform-name> ingest <data-file> 

Purgejobs

This command purge all batch jobs in your org.

hdxcli purgejobs
Please type 'purge all jobs' to proceed: purge all jobs  
All jobs purged

Sources

Kinesis / Kafka / SIEM

The command structure of these resources is the same, it's only necessary to replace ‘kinesis’ with ‘kafka’ or ‘siem’.

List

hdxcli sources kinesis --project <project-name> --table <table-name> list

Create

The field ‘name’ in settings will be replaced by <source-name>.

hdxcli sources kinesis --project <project-name> --table <table-name> create <source_settings>.json <source-name>

Delete

hdxcli sources kinesis --project <project-name> --table <table-name> delete <source-name>

Show

hdxcli sources kinesis --project <project-name> --table <table-name> --source <source-name> show

Settings

Display All Settings
hdxcli sources kinesis --project <project-name> --table <table-name> --source <source-name> settings
Display single setting
hdxcli sources kinesis --project <project-name> --table <table-name> --source <source-name> settings <setting-name>
Modify setting
hdxcli sources kinesis --project <project-name> --table <table-name> --source <source-name> settings <setting-name> <new-value>

Pool

List

hdxcli pool list

Create

pool-service needs to contain the name of the service (query-head, query-peer, etc. For more information see Hydrolix API Reference). pool-name is the name of the pool, that means the field ‘name’ in settings will be replaced by pool-name.
These options are not required since they have default values. Override the defaults with these options:

Options

  • -r, --replicas INTEGER Number of replicas for the workload (default: 1)

  • -c, --cpu FLOAT Dedicated CPU allocation for each replica (default: 0.5)

  • -m, --memory FLOAT Dedicated memory allocation for each replica, expressed in Gi (default: 0.5)

  • -s, --storage FLOAT Storage capacity for each replica, expressed in Gi (default: 0.5)

hdxcli pool create <pool-service> <pool-name>

An example modifying the default options would be:

hdxcli pool create <pool-service> <pool-name> -r 5 -c 1 -m 1 -s 2

Delete

hdxcli pool delete <pool-name>

Show

hdxcli pool --pool <pool-name> show

Settings

Display all settings
hdxcli pool --pool <pool-name> settings
Display single setting
hdxcli pool --pool <pool-name> settings <setting-name>
Modify setting
hdxcli pool --pool <pool-name> settings <setting-name> <new-value>

Dictionary

List

hdxcli dictionary --project <project-name> list

Create

<dictionary-settings> must contain all required fields (for more information on the required specifications, see the Hydrolix API Reference). <dictionary-filename> is the name of the dictionary file previously uploaded to Hydrolix. The field ‘name’ in settings will be replaced by <dictionary-name>.

hdxcli dictionary --project <project-name> create <dictionary-settings>.json <dictionary-filename> <dictionary-name>

Delete

hdxcli dictionary --project <project-name> delete <dictionary-name>

Show

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> show

Settings

Display all settings

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> settings

Display single setting

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> settings <setting-name>

Modify setting

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> settings <setting-name> <new-value>

Migrate

hdxcli dictionary --project <project-name> migrate <dictionary-name> -tp <profile-name> -P <target-project-name>

Dictionary Files

List

hdxcli dictionary --project <project-name> files list

Upload

hdxcli supports two formats for <dictionary-file-to-upload>: JSON and CSV.

If the format is ‘json’ you don’t need to specify it.

hdxcli dictionary --project <project-name> files upload <dictionary-file-to-upload>.json <dictionary-filename>

Otherwise, if the format is ‘csv’ you must use -t verbatim or --body-from-file-type verbatim.

hdxcli dictionary --project <project-name> files upload -t verbatim <dictionary-file-to-upload>.csv <dictionary-filename>

Delete

hdxcli dictionary --project <project-name> files delete <dictionary-filename>

Function

List

hdxcli function --project <project-name> list

Create

There are two ways to create a new function:

  • Passing the function on the command line using -s or --inline-sql option:

hdxcli function --project create -s ''

  • Using a JSON file with the function settings via -f or --sql-from-file option. The field ‘name’ in settings will be replaced by <function-name>:
hdxcli function --project <project-name> create -f <function-settings>.json <function-name>

Delete

hdxcli function --project <project-name> delete <function-name>

Show

hdxcli function --project <project-name> --function <function-name> show

Settings

Display all settings

hdxcli function --project <project-name> --function <function-name> settings

Display single setting

hdxcli function --project <project-name> --function <function-name> settings <setting-name>

Modify setting

hdxcli function --project <project-name> --function <function-name> settings <setting-name> <new-value>

Migrate

hdxcli function --project <project-name> migrate <function-name> -tp <profile-name> -P <target-project-name>

Storage

List

hdxcli storage list

Create

There are two available methods to create a new storage: using a file containing the storage configuration or passing the configuration via the command line.

  • Using settings file (-f, --settings-filename):
hdxcli storage create <storage-name> --settings-filename <storage-settings>.json

Passing the configuration via the command line:

hdxcli storage create <storage-name> --bucket-path <bucket-path> --bucket-name <bucket-name> --region <region> --cloud <cloud>

Delete

hdxcxli storage delete <storage-name>

Show

hdxcli storage --storage <storage-name> show

Settings

Display all settings

hdxcli storage --storage <storage-name> settings

Display single setting

hdxcli storage --storage <storage-name> settings <setting-name>

Modify setting

hdxcli storage --storage <storage-name> settings <setting-name> <new-value>

Migrate

hdxcli storage migrate <storage-name> -tp <profile-name>

Query-option

Query options operations at org-level. For more information, refer to Query Options documentation.

List

hdxcli query-option list

Set

hdxcli query-option set <query-option-name> <query-option-value>

An option (--from-file) is also available to configure a bunch of query options at once.

hdxcli query-option set --from-file <query-option-file>.json

This query option file must be a JSON file with the following structure:

{
	'<query-option-name>': <query-option-value>,
  ...
}

Unset

To unset a query option, one only needs to use the following command:

hdxcli query-option unset <query-option-name>

Additionally, there is an option --all that unsets all query options.

Integration

List

Allows you to list all transforms available in the repository.

hdxcli integration transform list

Apply

With this command you can create a new transform using the settings of a transform hosted in the repository.

hdxcli integration transform --project <project-name> --table <table-name> apply <public-transform-name> <transform-name>

Show

hdxcli integration transform show <public-transform-name>

Migrate

The migrate command takes care of migrating projects, tables, transforms, dictionaries and functions.

hdxcli migrate <target-cluster-username> <target-cluster-hostname> [options]

To learn more about migrate command, see Migrating Resources Across Clusters.

Migrate options

  • -p, --target-cluster-password TEXT

  • -u, --target-cluster-uri-scheme TEXT default: https

  • -B, --project-blacklist TEXT

  • -b, --project-whitelist TEXT

  • -R, --no-rollback BOOLEAN default: false

hdxcli migrate <target-cluster-username> <target-cluster-hostname> -p <target-cluster-password> -u <target-cluster-uri-scheme> -b <project-1-to-migrate> -b <project-2-not-to-migrate>
hdxcli migrate <target-cluster-username> <target-cluster-hostname> -p <target-cluster-password> -u <target-cluster-uri-scheme> -B <project-1-not-to-migrate> -B <project-2-not-to-migrate>

Textual User Interface

To activate the hdxcli user interface, do as follows:

hdxcli tui

Version

hdxcli version

FAQ: Common Operations

Showing Help

In order to see what you can do with the tool:

hdxcli --help

Check which commands are available for each resource by typing:

hdxcli <resource-name> --help

HDX_CONFIG_DIR

This environment variable specifies the location of the files used by hdxcli to store configuration profiles. The default directory path is ~/.hdx_cli/.

Performing Operations Against Another Server

If you want to use hdxcli against another server, use the --profile option:

hdxcli --profile <profile-name> project list

Delete Resources

When you want to delete a resource, hdxcli will prompt you type delete this resource to continue deleting the resource, like this:

hdxcli project delete <project-name>  
Please type 'delete this resource' to delete: delete this resource  
Deleted <project-name>

If you want to skip the confirmation prompt, you can add --disable-confirmation-prompt as follows:

hdxcli project delete <project-name> --disable-confirmation-prompt  
Deleted <project-name>

Obtain Indented Resource Information

When using the 'show' command on any resource, the output appears as follows:

hdxcli project --project <project-name> show  
{"name": "project-name", "org": "org-uuid", "description": "description", "uuid": "uuid", ...}

If you want an indented JSON version, simply add the -i, --indent option:

hdxcli project --project <project-name> show --indent  
{  
    "name": "project-name",  
    "org": "org-uuid",  
    "description": "description",  
    "uuid": "uuid",  
    ...,  
}

Note: The --indent option no longer requires an integer value; it is now a boolean option for improved simplicity.

Configuring Request Timeout

By default, HDXCLI waits for 30 seconds when a request is performed. However, you can modify this timeout if the cluster takes more time to respond. The --timeout INT option allows you to specify the duration in seconds and can be used with any command by placing it after the root command, as follows:

hdxcli --timeout 60 project delete <project-name> --disable-confirmation-prompt
hdxcli --timeout 120 migrate <target-cluster-username> <target-cluster-hostname> -p <target-cluster-password> -u <target-cluster-uri-scheme> -b <project-1-to-migrate> -b <project-2-not-to-migrate>

Debug Mode

The --debug option allows you to run commands in debug mode, providing additional information for troubleshooting purposes. When enabled, hdxcli will display detailed debugging information, such as request and response details, which can be helpful for diagnosing issues.

hdxcli --debug command [...]