Metadata
- name
- huawei-cloud-dli-manage
- description
- Manages Huawei Cloud DLI (Data Lake Insight) full lifecycle operations: compute queue management (create/scale/plan/delete), batch jobs (SQL/Spark submit, cancel, status, logs, result export), Flink stream jobs (submit, start/stop, batch delete, metrics), database and table metadata governance (create/delete/owner/privileges/partitions/preview), enhanced cross-source connections (create/update/delete, queue binding, connectivity checks), resource packages (JAR/Py/File upload), global variables, SQL/Flink/Spark job templates, permission authorization, and CU usage patrol. Produces structured inspection reports and change snapshots, detects over-high CU usage and cross-source connectivity failures. High-risk operations require double confirmation; cloud-side operations only, no autonomous business SQL overwrite.
- triggers
- ["DLI队列管理","DLI作业排查","Flink作业运维","库表元数据治理","跨源连接配置","资源包上传","全局变量管理","作业模板管理","CU用量巡检","闲置资源清理","DLI日常巡检","DLI troubleshooting","DLI inspection","DLI queue scale","DLI job submit","query DLI databases/tables"]
- tags
- ["huawei-cloud","dli","bigdata","data-lake-insight","ops"]
Huawei Cloud DLI Resource Management Skill
Overview
This Skill provides a full-lifecycle operations toolkit for Huawei Cloud DLI
(Data Lake Insight) using the dli service of the hcloud CLI, covering ten capability groups:
- Queue management —
ListQueues, ShowQueue, CreateQueue, DeleteQueue, RunQueueAction (scale), queue plans, CIDR
- Batch jobs (SQL/Spark) —
CreateSqlJob, ListSqlJobs, ShowSqlJobStatus/Detail/Progress, CancelSqlJob, ExportSqlJobResult, PreviewSqlJobResult, Spark equivalents + ShowSparkJobLog
- Flink stream jobs —
CreateFlinkSqlJob, CreateFlinkJarJob, ListFlinkJobs, ShowFlinkJob, UpdateFlink*, BatchRunFlinkJobs, BatchStopFlinkJobs, BatchDeleteFlinkJobs, ShowFlinkMetric
- Database management —
ListDatabases, CreateDatabase, DeleteDatabase, UpdateDatabaseOwner, ListDatabaseUsers
- Table management —
ListTables, ShowTable, CreateTable, DeleteTable, UpdateTableOwner, ListPartitions, PreviewTable, table users/privileges
- Enhanced connections —
ListEnhancedConnections, Create/Update/DeleteEnhancedConnection, queue binding, CreateConnectivityTask/ShowConnectivityTask
- Resource packages —
ListJobResources, ShowJobResource, UploadJar/PythonFile/FileJobResources, DeleteJobResource, UpdateJobResourceOwner
- Global variables —
ListGlobalVariables, CreateGlobalVariable, UpdateGlobalVariable, DeleteGlobalVariable; Job templates — SQL/Flink SQL/Spark templates: list, create, update, delete
- Privileges & patrol — authorization actions, queue/database/table users, elastic resource pools (CU), quota, agency, catalogs
Important Constraints
| Constraint |
Policy |
| High-risk operations |
Double confirmation required before: deleting databases (especially --cascade), deleting tables, deleting queues, deleting/cancelling running stream jobs, batch-stop/batch-delete Flink jobs, scaling queues down (scale_in), deleting queue plans (metadata is permanently irrecoverable — verify target and scope before confirming) |
| Business SQL |
This Skill performs cloud-side operations only. It never autonomously runs business write/overwrite SQL (INSERT OVERWRITE, DELETE, UPDATE, DROP) against user business tables via CreateSqlJob. SQL submission is allowed only for explicitly user-confirmed, non-destructive statements (e.g. SELECT / metadata SHOW), scoped to inspection or user-authorized tasks |
| Production idle cleanup |
Never arbitrarily clean production business metadata. Idle-resource cleanup proposals must be reported and confirmed by the user first |
| Scope |
All operations stay within DLI resource management; no changes to OBS data content, no IAM policy changes |
Prerequisites
- hcloud CLI installed and authenticated with a valid AK/SK profile (installation guide and verification: see
references/cli-installation-guide.md).
- IAM permissions: DLI read permissions for query operations; DLI admin/write permissions for create/update/delete. See
references/iam-policies.md.
- Region: DLI resources are regional; pass
--cli-region={region} on every command.
- OBS paths (resource upload / result export): a pre-existing OBS bucket with readable paths, passed as OBS object URLs for
--paths.[N].
- Queue for SQL/Spark jobs: a running SQL or general queue is required to submit jobs; check
ListQueues first.
Workflow
Scenario 1: Daily Resource Patrol (巡检)
ListQueues --with-charge-info -> queue inventory/CU; ListElasticResourcePools + ScaleRecords -> pool CU
ListSqlJobs / ListFlinkJobs -> running & failed jobs; ShowQuota -> CU used/remaining (>80% flag)
ShowDliAgency -> agency state; Output: structured patrol report (inventory + risks + cleanup proposals)
Scenario 2: Batch Job Troubleshooting (批作业故障排查)
ListSqlJobs --job-status=failed / ListSparkJobs --state=failed -> find failures
ShowSqlJobStatus/ShowSqlJobDetail -> reason & logs; (Spark) ShowSparkJobLog -> log tail
ShowSqlJobProgress -> running progress; Output: root-cause report (SQL/parameter/quota/connection)
Scenario 3: Flink Stream Job Operations (流作业运维)
ListFlinkJobs --job_type --status -> jobs; ShowFlinkJob -> detail/restart/checkpoint info
BatchRunFlinkJobs / BatchStopFlinkJobs (--trigger_savepoint) -> start/stop after double confirmation
ShowFlinkMetric -> CU metrics; Output: change snapshot of start/stop actions
Scenario 4: Metadata Governance (库表元数据治理)
ListDatabases / ListTables --with-detail -> inventory; ShowTable -> schema/location/owner
ListPartitions -> partition layout; UpdateTableOwner / UpdateDatabaseOwner -> ownership alignment
DeleteDatabase/DeleteTable -> ONLY with user double confirmation (cascade risk!); Output: change snapshot
Scenario 5: Cross-Source Connection (跨源连接)
ListEnhancedConnections -> inventory + status; CreateConnectivityTask + ShowConnectivityTask -> test result
AssociateQueueToEnhancedConnection / DisassociateQueueFromEnhancedConnection -> queue binding (if test fails)
UpdateEnhancedConnection --hosts.[N].ip/.name -> host whitelist (full overwrite); Output: connectivity risk report
Scenario 6: Idle Resource Cleanup (闲置资源清理)
ListQueues/ListQueuePlans/ListJobResources/ListGlobalVariables/ListSqlJobTemplates -> stale inventory
Report cleanup proposals to user -> wait for confirmation
After confirmation: DeleteQueue, DeleteJobResource, DeleteGlobalVariable, BatchDeleteSqlJobTemplates; Output: snapshot
Safety Gate (all scenarios)
Before any high-risk command (see Constraints), present the exact command, its
scope, and irreversibility warning to the user and wait for an explicit
confirmation keyword. Never batch-execute destructive commands without per-command
confirmation. Mask AK/SK in outputs and logs.
Core Commands
All commands use hcloud dli <Operation>. --cli-region and --project_id
are auto-filled by KooCLI (from profile) and omitted in parameter tables below.
The full operation catalog with per-command parameter tables lives in
references/dli-operation-catalog.md.
1. Queue Management
List Queues
hcloud dli ListQueues --cli-region={region} --queue_type={sql|general|all} [--tags={key=value}]
| Parameter |
Required |
Description |
--queue_type |
No |
sql, general, or all (default sql) |
--tags |
No |
Tag filter, e.g. owner=ph |
Show Queue
hcloud dli ShowQueue --cli-region={region} --queue_name={queue_name}
| Parameter |
Required |
Description |
--queue_name |
Yes |
Name of the queue |
Create Queue
hcloud dli CreateQueue --cli-region={region} --queue_name={queue_name} --cu_count={cu_count} [--queue_type={sql|general}] [--engine={spark|flink|hetero}] [--charging_mode={prePaid|postPaid}]
| Parameter |
Required |
Description |
--queue_name |
Yes |
Queue name (unique in project) |
--cu_count |
Yes |
Number of CUs (16 minimum) |
--queue_type |
No |
sql or general (default sql) |
--engine |
No |
spark, flink, or hetero |
--charging_mode |
No |
prePaid or postPaid |
Scale Queue (risk: double confirm for scale_in)
hcloud dli RunQueueAction --cli-region={region} --queue_name={queue_name} --action={scale_out|scale_in} [--cu_count={cu_count}] [--force=true]
| Parameter |
Required |
Description |
--action |
Yes |
scale_out or scale_in |
--queue_name |
Yes |
Queue to scale |
--cu_count |
No |
Target CU count |
--force |
No |
Force scale when jobs are running |
Delete Queue (risk: double confirm)
hcloud dli DeleteQueue --cli-region={region} --queue_name={queue_name}
| Parameter |
Required |
Description |
--queue_name |
Yes |
Queue to delete (must be stopped/empty) |
Queue Plans (定时扩缩容)
hcloud dli ListQueuePlans --cli-region={region} --queue_name={queue_name}
hcloud dli CreateQueuePlan --cli-region={region} --queue_name={queue_name} --plan_name={plan_name} \
--start_hour={hour} --start_minute={minute} --target_cu={cu_count} [--activate={true|false}]
hcloud dli UpdateQueuePlan --cli-region={region} --queue_name={queue_name} --plan_id={plan_id} \
--plan_name={plan_name} --start_hour={hour} --start_minute={minute} --target_cu={cu_count}
hcloud dli DeleteQueuePlan --cli-region={region} --queue_name={queue_name} --plan_id={plan_id}
| Parameter |
Required |
Description |
--queue_name |
Yes |
Target queue |
--plan_name |
Yes (create/update) |
Plan name |
--plan_id |
Yes (update/delete) |
Plan ID |
--start_hour / --start_minute |
Yes (create/update) |
Trigger time of day (0-23 / 0-59) |
--target_cu |
Yes (create/update) |
Target CU count after scaling |
--activate |
No |
Activate immediately |
2. Batch Jobs (SQL / Spark)
Submit SQL Job (cloud-side only; see Constraints)
hcloud dli CreateSqlJob --cli-region={region} --sql={sql_statement} \
[--queue_name={queue_name}] [--currentdb={database}] [--sql_type={ddl|dcl|import|query|insert}] [--conf.1={key=value}]
| Parameter |
Required |
Description |
--sql |
Yes |
SQL statement (non-destructive only unless user-confirmed) |
--queue_name |
No |
Target queue (default queue if omitted) |
--currentdb |
No |
Database context for the SQL |
--sql_type |
No |
ddl, dcl, import, query, insert |
--conf.[N] |
No |
Job config as key=value array |
List SQL Jobs
hcloud dli ListSqlJobs --cli-region={region} [--job-status={pending|running|success|failed|cancelled}] [--job-type={DDL|DCL|IMPORT|QUERY|INSERT}] [--db_name={database}] [--queue_name={queue_name}] [--page-size={n}] [--current-page={n}]
| Parameter |
Required |
Description |
--job-status |
No |
pending, running, success, failed, cancelled |
--job-type |
No |
DDL, DCL, IMPORT, QUERY, INSERT |
--db_name |
No |
Database filter |
--queue_name |
No |
Queue filter |
--page-size / --current-page |
No |
Pagination (default 10 / 1) |
Show SQL Job Status / Detail / Progress
hcloud dli ShowSqlJobStatus --cli-region={region} --job_id={job_id}
hcloud dli ShowSqlJobDetail --cli-region={region} --job_id={job_id}
hcloud dli ShowSqlJobProgress --cli-region={region} --job_id={job_id}
| Parameter |
Required |
Description |
--job_id |
Yes |
SQL job ID |
Cancel SQL Job (risk: double confirm for running jobs)
hcloud dli CancelSqlJob --cli-region={region} --job_id={job_id}
Export / Preview SQL Result
hcloud dli ExportSqlJobResult --cli-region={region} --job_id={job_id} --data_path={obs_path} --data_type={csv|json|parquet} [--compress={gzip|none}]
hcloud dli PreviewSqlJobResult --cli-region={region} --job_id={job_id} [--queue-name={queue_name}]
| Parameter |
Required |
Description |
--job_id |
Yes |
Completed SQL job ID |
--data_path |
Yes (export) |
OBS destination path (s3a://... or obs://...) |
--data_type |
Yes (export) |
csv, json, parquet |
Spark Jobs
hcloud dli CreateSparkJob --cli-region={region} --file={jar_resource} --className={main_class} \
[--queue={queue_name}] [--name={job_name}] [--args.1={arg}] [--conf.1={key=value}] [--driver_memory={mem}] [--executor_memory={mem}] [--executor_cores={n}] [--num_executors={n}]
hcloud dli ListSparkJobs --cli-region={region} [--state={starting|running|success|failed|cancelled}] [--job_name={name}] [--queue_name={queue}] [--size={n}] [--from={offset}]
hcloud dli ShowSparkJob --cli-region={region} --batch_id={batch_id}
hcloud dli ShowSparkJobStatus --cli-region={region} --batch_id={batch_id}
hcloud dli ShowSparkJobLog --cli-region={region} --batch_id={batch_id} [--size={n}] [--type={all|driver|executor}]
hcloud dli CancelSparkJob --cli-region={region} --batch_id={batch_id} # risk: double confirm
| Parameter |
Required |
Description |
--file |
Yes (create) |
JAR resource name already uploaded to DLI resource management |
--className |
Yes (create) |
Java/Spark main class (capital C) |
--batch_id |
Yes (show/cancel) |
Spark batch job ID |
3. Flink Stream Jobs
hcloud dli CreateFlinkSqlJob --cli-region={region} --name={job_name} [--queue_name={queue}] [--cu_number={cu}] [--sql={flink_sql}] [--parallel_number={n}] [--smn_topic={topic}]
hcloud dli CreateFlinkJarJob --cli-region={region} --name={job_name} [--queue_name={queue}] [--entrypoint={jar_resource}] [--cu_number={cu}]
hcloud dli ListFlinkJobs --cli-region={region} [--job_type={flink_sql_job|flink_jar_job}] [--status={job_running|job_cancelled|job_failed|...}] [--name={name}] [--queue_name={queue}] [--limit={n}] [--offset={n}]
hcloud dli ShowFlinkJob --cli-region={region} --job_id={job_id}
hcloud dli UpdateFlinkSqlJob --cli-region={region} --job_id={job_id} [--cu_number={cu}] [--sql={flink_sql}] [--parallel_number={n}]
hcloud dli UpdateFlinkJarJob --cli-region={region} --job_id={job_id} [--cu_number={cu}] [--entrypoint={jar_resource}]
hcloud dli BatchRunFlinkJobs --cli-region={region} --job_ids.1={job_id} [--resume_savepoint={true|false}] # risk: double confirm
hcloud dli BatchStopFlinkJobs --cli-region={region} --job_ids.1={job_id} [--trigger_savepoint={true|false}] # risk: double confirm
hcloud dli BatchDeleteFlinkJobs --cli-region={region} --job_ids.1={job_id} # risk: double confirm
hcloud dli ShowFlinkMetric --cli-region={region} --job_ids.1={job_id} [--job_ids.2={job_id_2}]
| Parameter |
Required |
Description |
--name |
Yes (create) |
Flink job name |
--job_id |
Yes (show/update) |
Flink job ID |
--job_ids.[N] |
Yes (batch ops / ShowFlinkMetric) |
One or more job IDs, e.g. --job_ids.1=101 --job_ids.2=102 |
4. Database Management
hcloud dli ListDatabases --cli-region={region} [--keyword={kw}] [--limit={n}] [--offset={n}] [--tags={k=v}]
hcloud dli CreateDatabase --cli-region={region} --database_name={db_name} [--description={desc}]
hcloud dli DeleteDatabase --cli-region={region} --database_name={db_name} [--cascade={true|false}] [--async={true|false}] # risk: double confirm
hcloud dli UpdateDatabaseOwner --cli-region={region} --database_name={db_name} --new_owner={user_name}
hcloud dli ListDatabaseUsers --cli-region={region} --database_name={db_name}
| Parameter |
Required |
Description |
--database_name |
Yes |
Database name |
--new_owner |
Yes (owner update) |
New owner username |
--cascade |
No (delete) |
Delete tables inside the database too (irreversible!) |
5. Table Management
hcloud dli ListTables --cli-region={region} --database_name={db_name} [--table-type={MANAGED|EXTERNAL|VIEW}] [--keyword={kw}] [--with-detail={true|false}] [--page-size={n}] [--current-page={n}]
hcloud dli ShowTable --cli-region={region} --database_name={db_name} --table_name={table_name}
hcloud dli CreateTable --cli-region={region} --database_name={db_name} --table_name={table_name} --data_location={DLI|OBS|VIEW} \
--columns.1.column_name={col} --columns.1.type={TYPE} [--columns.2.column_name={col2}] [--columns.2.type={TYPE2}] \
[--data_path={s3a://...}] [--data_type={Parquet|ORC|CSV|JSON|Carbon|Avro}] [--delimiter={c}]
hcloud dli DeleteTable --cli-region={region} --database_name={db_name} --table_name={table_name} [--async={true|false}] # risk: double confirm
hcloud dli UpdateTableOwner --cli-region={region} --database_name={db_name} --table_name={table_name} --new_owner={user_name}
hcloud dli ListPartitions --cli-region={region} --database_name={db_name} --table_name={table_name} [--limit={n}] [--offset={n}]
hcloud dli PreviewTable --cli-region={region} --database_name={db_name} --table_name={table_name} [--mode={preview|sample}]
hcloud dli ListTableUsers --cli-region={region} --database_name={db_name} --table_name={table_name}
hcloud dli ListTablePrivileges --cli-region={region} --database_name={db_name} --table_name={table_name} --user_name={user}
| Parameter |
Required |
Description |
--database_name |
Yes |
Parent database |
--table_name |
Yes |
Table name |
--data_location |
Yes (create) |
DLI, OBS, or VIEW |
--columns.[N].column_name / .type |
Yes (create) |
Column schema as indexed pairs |
--data_path |
No |
Required for OBS tables, must start with s3a:// |
6. Enhanced / Cross-Source Connections
hcloud dli ListEnhancedConnections --cli-region={region} [--name={name}] [--status={ACTIVE|FAILED}] [--limit={n}] [--offset={n}]
hcloud dli ShowEnhancedConnection --cli-region={region} --connection_id={connection_id}
hcloud dli CreateEnhancedConnection --cli-region={region} --name={conn_name} --dest_vpc_id={vpc_id} --dest_network_id={subnet_id} [--routetable_id={rt_id}]
hcloud dli UpdateEnhancedConnection --cli-region={region} --connection_id={connection_id} [--hosts.1.ip={ip}] [--hosts.1.name={host}] # full overwrite of host list
hcloud dli DeleteEnhancedConnection --cli-region={region} --connection_id={connection_id} # risk: double confirm
hcloud dli AssociateQueueToEnhancedConnection --cli-region={region} --connection_id={connection_id} --queues.1={queue_name}
hcloud dli DisassociateQueueFromEnhancedConnection --cli-region={region} --connection_id={connection_id}
hcloud dli CreateConnectivityTask --cli-region={region} --queue_name={queue_name} --address={ip_or_domain:port}
hcloud dli ShowConnectivityTask --cli-region={region} --queue_name={queue_name} --task_id={task_id}
| Parameter |
Required |
Description |
--connection_id |
Yes (show/update/delete) |
Enhanced/datasource connection UUID |
--dest_vpc_id / --dest_network_id |
Yes (create enhanced) |
Destination VPC and subnet |
--queue_name / --address |
Yes (connectivity) |
Queue and target address for connectivity test |
--hosts.[N].ip / .name |
No (update) |
New host whitelist; provided host list fully replaces old one |
7. Resource Packages
hcloud dli ListJobResources --cli-region={region} [--kind={jar|pyFile|file}] [--tags={k=v}]
hcloud dli ShowJobResource --cli-region={region} --resource_name={resource_name} [--group={group_name}]
hcloud dli UploadJarJobResources --cli-region={region} --group={group_name} --paths.1={obs://bucket/xx.jar}
hcloud dli UploadPythonFileJobResources --cli-region={region} --group={group_name} --paths.1={obs://bucket/xx.py}
hcloud dli UploadFileJobResources --cli-region={region} --group={group_name} --paths.1={obs://bucket/xx.conf}
hcloud dli DeleteJobResource --cli-region={region} --resource_name={resource_name} [--group={group_name}] # risk: double confirm
hcloud dli UpdateJobResourceOwner --cli-region={region} --group_name={group_name} --new_owner={user_name} [--resource_name={name}]
| Parameter |
Required |
Description |
--group |
Yes (upload) |
Package group name (new group with same name overwrites old) |
--paths.[N] |
Yes (upload) |
OBS object URL list, e.g. --paths.1=obs://bkt/x.jar |
--resource_name |
Yes (show/delete) |
Resource name |
--new_owner |
Yes (owner update) |
New owner |
8. Global Variables
hcloud dli ListGlobalVariables --cli-region={region} [--limit={n}] [--offset={n}]
hcloud dli CreateGlobalVariable --cli-region={region} --var_name={var_name} --var_value={var_value} [--is_sensitive={true|false}]
hcloud dli UpdateGlobalVariable --cli-region={region} --var_name={var_name} --var_value={var_value}
hcloud dli DeleteGlobalVariable --cli-region={region} --var_name={var_name} # risk: double confirm
| Parameter |
Required |
Description |
--var_name |
Yes |
Variable name |
--var_value |
Yes (create/update) |
Variable value |
--is_sensitive |
No |
Mark as sensitive (hidden in job details) |
9. Job Templates
hcloud dli ListSqlJobTemplates --cli-region={region} [--keyword={kw}]
hcloud dli CreateSqlJobTemplate --cli-region={region} --sql_name={template_name} --sql={sql_body} [--description={desc}] [--group={group}]
hcloud dli UpdateSqlJobTemplate --cli-region={region} --sql_id={template_id} [--sql_name={name}] [--sql={sql_body}] [--description={desc}]
hcloud dli BatchDeleteSqlJobTemplates --cli-region={region} --sql_ids.1={template_id} # risk: double confirm
hcloud dli ListFlinkSqlJobTemplates --cli-region={region} [--name={name}] [--limit={n}] [--offset={n}]
hcloud dli CreateFlinkSqlJobTemplate --cli-region={region} --name={template_name} [--sql_body={flink_sql}] [--job_type={flink_sql_job|flink_jar_job}] [--desc={desc}]
hcloud dli UpdateFlinkSqlJobTemplate --cli-region={region} --template_id={template_id} [--name={name}] [--sql_body={flink_sql}] [--desc={desc}]
hcloud dli DeleteFlinkSqlJobTemplate --cli-region={region} --template_id={template_id} # risk: double confirm
hcloud dli ListSparkJobTemplates --cli-region={region} [--type={1|2}] [--page-size={n}] [--current-page={n}]
hcloud dli CreateSparkJobTemplate --cli-region={region} --name={template_name} --type={1|2} [--description={desc}] [--group={group}] [--language={en|zh}]
hcloud dli UpdateSparkJobTemplate --cli-region={region} --template_id={template_id} --name={template_name} [--description={desc}] [--group={group}]
| Parameter |
Required |
Description |
--sql_name / --name |
Yes (create) |
Template name |
--sql_ids.[N] |
Yes (batch delete) |
SQL template IDs |
--template_id / --sql_id |
Yes (update/delete) |
Template ID |
10. Privileges & Patrol
hcloud dli ListAuthorizationPrivileges --cli-region={region} --object={object}
hcloud dli RunAuthorizationAction --cli-region={region} --action={grant|revoke} [--user_name={user}] [--privileges.1.object={object}] [--privileges.1.privileges.1={privilege}]
hcloud dli RunDataAuthorizationAction --cli-region={region} --action={grant|revoke} --user_name={user} # data-level auth
hcloud dli RegisterAuthorizedQueue --cli-region={region} --queue_name={queue_name} --user_name={user} --action={grant|revoke}
hcloud dli ShowEnhancedConnectionPrivilege --cli-region={region} --connection_id={connection_id}
hcloud dli ListElasticResourcePools --cli-region={region} [--name={name}] [--status={AVAILABLE|SCALING|CREATING|FAILED}] [--limit={n}]
hcloud dli UpdateElasticResourcePool --cli-region={region} --elastic_resource_pool_name={pool_name} [--min_cu={n}] [--max_cu={n}] [--description={desc}] # risk: double confirm for shrinking
hcloud dli ListElasticResourcePoolScaleRecords --cli-region={region} --elastic_resource_pool_name={pool_name} [--status={SUCCESS|FAIL}] [--limit={n}]
hcloud dli ShowQuota --cli-region={region}
hcloud dli ShowDliAgency --cli-region={region}
hcloud dli ShowFlinkMetric --cli-region={region} --job_ids.1={job_id} [--job_ids.2={job_id_2}]
hcloud dli ListCatalogs --cli-region={region} [--limit={n}] [--offset={n}]
hcloud dli ShowCatalog --cli-region={region} --catalog_name={catalog_name}
| Parameter |
Required |
Description |
--object |
Yes (list privileges) |
Authorization object to inspect |
--action |
Yes (auth) |
grant or revoke |
--user_name |
Yes (data auth / register) |
Target user |
--elastic_resource_pool_name |
Yes (pool ops) |
Elastic resource pool name |
Parameter Confirmation
| Parameter |
Required |
Description |
--cli-region |
Yes (auto) |
Region, auto-filled by KooCLI profile; explicitly pass --cli-region={region} |
--project_id |
Yes (auto) |
Project ID, auto-filled by KooCLI (parent project of the region) |
--queue_name |
Depends |
Queue operations; job submit routing |
--job_id / --batch_id |
Depends |
SQL job ID / Spark batch ID / Flink job ID |
--database_name |
Depends |
Database-scoped operations |
--table_name |
Depends |
Table-scoped operations |
--connection_id |
Depends |
Connection-scoped operations |
--user_name |
Depends |
Owner change / authorization operations |
Common conventions:
- Indexed/array parameters use
.[N] suffixes (--paths.1=..., --job_ids.1=...); booleans accept true/false; time params use RFC3339.
- OBS paths use
obs://bucket/key, except CreateTable --data_path which requires s3a://.
KooCLI Command Format Standard
Generic command template (do not execute as-is — replace <service>, <Operation> and parameters):
hcloud <service> <Operation> --cli-region=<region> [--key=value ...]
| Feature |
Standard |
| Service name |
dli (metadata case; hcloud dli <Operation> works, KooCLI shows DLI) |
| Operation name |
PascalCase, e.g. ListQueues, CreateSqlJob, BatchStopFlinkJobs |
| Region |
--cli-region=<value> always included |
| Simple / indexed parameter |
--key=value, e.g. --queue_name=myqueue; indexed --key.1=value1, e.g. --job_ids.1=101 |
Reference Documents
references/iam-policies.md — Least-privilege IAM policies for DLI operations
references/cli-installation-guide.md — hcloud CLI installation & AK/SK configuration
references/dli-operation-catalog.md — Full DLI operation catalog with parameter tables
references/common-workflows.md — Scenario-based workflow recipes
references/dataflow-diagram.md — Mermaid data flow diagram
references/verification-method.md — Verification method details
references/acceptance-criteria.md — Acceptance criteria
Best Practices
- Confirm the queue exists (
ListQueues) before submitting jobs; never submit to an unknown queue.
- Keep output small: paginate with
--limit/--offset or --page-size/--current-page; use status filters (--job-status, --status) for targeted troubleshooting.
- Merge multiple
List* outputs into one structured markdown report; mask AK/SK and sensitive variable values (--is_sensitive variables render masked).
- Always present high-risk commands to the user with expected impact and wait for explicit confirmation (see Constraints).
- When a connectivity check fails, verify queue binding (
AssociateQueueToEnhancedConnection), security group, and VPC route before recreating the connection.
- CU patrol: compare
ShowQuota used vs quota; flag > 80%; use ListElasticResourcePoolScaleRecords before suggesting scaling changes.
Verification Method
hcloud dli ListQueues --cli-region={region} --queue_type=all # read smoke test
hcloud dli ListDatabases --cli-region={region} --limit=5 # metadata read smoke test
hcloud dli ShowQuota --cli-region={region} # quota read smoke test
See references/verification-method.md for the detailed verification matrix.