huawei-cloud-cloudrobo-resource · git:20260908.c5c0b3e · 2026-09-08 · sha256 3e0028b65ef27678

huawei-cloud-cloudrobo-resource git:20260908.c5c0b3eA

Immutable. This exact content is served forever at /api/v1/blob/3e0028b65ef27678.

---
name: huawei-cloud-cloudrobo-resource
description: >
  Query CloudRobo resource quotas and resource pools — list workspace-level and Domain-level
  quotas with CCE/ModelArts isolation (CCE: cpu/memory/gpu, ModelArts: npu), list resource
  pools with multi-condition filtering (type/sub-type/pool-type/usages), and show resource
  pool details with node-level information (name, status, resources, labels). Provides
  compute capacity visibility for training, evaluation, and inference workloads.
  Triggers include: resource quota query, resource pool query, resource pool list,
  resource pool detail, quota list, Domain quota aggregation, CCE quota, ModelArts quota,
  资源配额查询, 资源池查询, 资源池列表, 资源池详情, 配额查询.
tags:
  - huawei-cloud-cloudrobo
  - resource
  - quota
  - resource-pool
---

> **Windows / PowerShell:** Examples use bash syntax. To run on Windows PowerShell:
> - Flatten `\` line continuations to a single line, or end lines with a backtick.
> - Set env vars with `$env:NAME="value"` instead of `export NAME="value"`.
> - Single-quoted JSON `'{"a":"b"}'` works as-is.

## Overview 概述

The `cloudrobo-resource` skill provides query capabilities for CloudRobo compute resources.
It covers two core areas: resource quota querying (with Domain-level aggregation and
CCE/ModelArts isolation) and resource pool querying (list with multi-condition filtering,
show with node-level details). This skill is read-only — no write operations are included.

**Applicable scenarios:**

- **Quota querying** — View workspace-level and Domain-level resource quotas; verify CCE
  (cpu/memory/gpu) and ModelArts (npu) quota isolation; check available capacity before
  launching workloads
- **Resource pool querying** — List resource pools by type/sub-type/pool-type/usages;
  inspect node-level details (name, status, resources, labels)

**Architecture:**

```
Agent / LLM
    │
    ├── CLI  →  cloudrobo resource <command>
    ├── SDK  →  ResourceClient (Python)
                    │
                    ▼
              cloudrobo-service (REST API)
              /v1/resources/quotas
              /v1/resources/pools
              /v1/resources/pools/{pool_id}
```

All operations target the `cloudrobo-service` backend. Resource operations are
domain-level — quota list and pool list require ABAC permission; pool detail does not.

## Prerequisites 前置条件

See `references/cli-installation-guide.md` for CLI installation, AK/SK authentication, and
initial configuration. The `cloudrobo-resource` package depends on `cloudrobo-core`.
Ensure `cloudrobo workspace use --workspace-id <id>` has been run to set the active
workspace context before using resource commands.

## Workflow 工作流

### Quota Query Workflow 配额查询工作流

1. **List quotas** — `cloudrobo resource list-quotas` (returns domain_quotas + quotas + page_info)
2. **Filter by type** — `cloudrobo resource list-quotas --resource-type CCE` (CCE: npu=0; MODELARTS: cpu/memory/gpu=0)
3. **Filter by workspace** — `cloudrobo resource list-quotas --workspace-id <id>` (workspace-scoped quotas)
4. **Check capacity** — Review `domain_quotas[].available_spec` for available compute resources

### Resource Pool Query Workflow 资源池查询工作流

1. **List pools** — `cloudrobo resource list-pools` (returns resources + page_info)
2. **Filter pools** — `cloudrobo resource list-pools --resource-type MODELARTS --resource-sub-type STANDARD`
3. **Show pool detail** — `cloudrobo resource show-pool --pool-id <id>` (returns node info, status, config)

## CLI Command Format Standard CLI命令格式标准

```bash
cloudrobo resource <command> [OPTIONS]
```

| Feature | Description | Example |
|---------|-------------|---------|
| Command group | `resource` | `cloudrobo resource` |
| Subcommand | kebab-case | `list-quotas`, `list-pools`, `show-pool` |
| Output format | JSON to stdout | `out(result)` |
| Comma list | `--usages TRAINING,INFERENCE` | `--usages TRAINING,INFERENCE` |
| Enum params | `click.Choice` validated | `--resource-type CCE|MODELARTS` |
| Pagination | `--limit 1-50` / `--offset N` | `--limit 20 --offset 0` |

## Core Commands 核心命令

### Quota Query 配额查询

#### List quotas

```bash
cloudrobo resource list-quotas [--workspace-id <id>] [--resource-id <id>] [--resource-type CCE|MODELARTS] [--resource-sub-type CPU|GPU|STANDARD|LITE] [--pool-type DEDICATED|SHARED] [--limit <n>] [--offset <n>] [--order ASC|DESC]
```

- **SDK:** `client.list_quotas(**params)`
- **API:** `GET /v1/resources/quotas`

Returns: `domain_quotas` (Domain-level aggregation with total_spec, used_spec,
available_spec), `quotas` (workspace-level list with quota_id, resource_name, specs,
nodes), `page_info`. CCE type quotas have `npu=0`; ModelArts type quotas have
`cpu/memory/gpu=0`.

### Resource Pool Query 资源池查询

#### List resource pools

```bash
cloudrobo resource list-pools [--resource-type CCE|MODELARTS] [--resource-sub-type CPU|GPU|STANDARD|LITE] [--pool-type DEDICATED|SHARED] [--usages TRAINING,INFERENCE] [--limit <n>] [--offset <n>] [--order ASC|DESC]
```

- **SDK:** `client.list_pools(**params)`
- **API:** `GET /v1/resources/pools`

Returns: `resources` (list of `ResourceVo` with resource_id, resource_name, resource_type,
resource_sub_type, nodes, config, status, description, usages, pool_type, create_at),
`page_info`. Pass `resource_id` to `show-pool --pool-id`.

#### Show resource pool detail

```bash
cloudrobo resource show-pool --pool-id <uuid>
```

- **SDK:** `client.show_pool(pool_id)`
- **API:** `GET /v1/resources/pools/{pool_id}`

`--pool-id` takes the pool's `resource_id` exactly as returned by `list-pools` — pass it
through unmodified (no prefix stripping needed).

Returns: full `ResourceVo` including `nodes` (name, status, resources,
available_resources, labels), `config`, `status` (AVAILABLE/UNAVAILABLE).

## Reference Documents 参考文档

- [CLI Installation Guide](references/cli-installation-guide.md) — cloudrobo CLI installation and configuration
- [IAM Policies](references/iam-policies.md) — Least-privilege credential model and ABAC actions
- [API Paths](references/api-paths.md) — REST API paths discovered via SDK source
- [Resource Config Reference](references/resource-config-catalog.md) — Field mapping, validation rules, enums
- [Dataflow Diagram](references/dataflow-diagram.md) — Mermaid data flow diagram
- [Verification Method](references/verification-method.md) — Verification method details
- [Acceptance Criteria](references/acceptance-criteria.md) — Acceptance criteria

## Edge Cases 边界情况

| Scenario | Handling |
|----------|----------|
| Missing `workspace_id` | Quota list returns all domain quotas; use `--workspace-id` to filter by workspace |
| ABAC permission denied (403) | Quota list and pool list require ABAC; pool detail does not require ABAC |
| Pagination out of range (400) | `limit` must be 1-50; `offset` must be ≥ 0; server validates and returns 400 |
| Resource pool not found (404) | `show-pool` with invalid `pool_id` returns 404; verify with `list-pools` first |
| AK/SK not set | Operations fail at HTTP signing step; set `HUAWEI_CLOUD_AK`/`HUAWEI_CLOUD_SK` |
| API paths | Sourced from SDK source code (`_url()` calls in `client.py`), not inferred |
| Quota calculation isolation | CCE: only cpu/memory/gpu counted (npu=0); ModelArts: only npu counted (cpu/memory/gpu=0) |

## Verification Method 验证方法

### Specification Compliance Verification 规范合规验证

```bash
bash scripts/test-cli-commands.sh -s . -e cli
```

### Functional Testing 功能测试

```bash
# CLI / SDK
bash scripts/test-cli-commands.sh -s . -e {cli|sdk}
```

### Test Cases 测试用例

See `templates/test-vars.json` for the full test case list covering quota querying
and resource pool querying scenarios.

### Verification Checklist 验证清单

- Verify `list-quotas` returns `domain_quotas` with CCE `npu=0` and ModelArts `cpu/memory/gpu=0`
- Verify `list-quotas` supports `--workspace-id` and `--resource-type` filtering
- Verify `list-pools` returns `resources` with `page_info`
- Verify `show-pool` returns node-level details including `labels`
- Verify `list-quotas` and `list-pools` support pagination (`--limit`, `--offset`)

## Best Practices 最佳实践

- Run `list-quotas` before launching workloads to verify available capacity
- Use `--resource-type` filter to verify CCE/ModelArts quota isolation
- Use `list-pools` with `--usages` filter to find pools suitable for specific workloads
- Run `show-pool` to inspect node-level details before allocating resources
- Check `domain_quotas[].available_spec` for Domain-level capacity overview
- Use pagination (`--limit`, `--offset`) to manage large result sets efficiently