Huawei Cloud Cost Estimation and Provisioning
Prices come only from the current response: never guess, analogize, or recall them. Provisioning is the only permitted write path; unsubscribe is console guidance only.
Overview
Estimates Huawei Cloud pre-order costs and, when the user wants to buy or create, provisions
resources through an allowlisted hcloud command set, then routes unsubscribe requests to console
guidance. Use when the user asks about Huawei Cloud / 华为云 / hcloud pricing, budgets, creation or
provisioning in Chinese or English: 报价, 询价, 价格估算, 费用预估, 比价, 开通, 创建, price estimate,
budget, quote, pricing, provision, create, purchase. Answer: how much a resource will cost, which
spec/billing-mode combination fits, whether a resource can be provisioned, and how to unsubscribe —
never by guessing prices, inventing parameters, or running non-allowlisted writes.
- Pricing runs a 4-step RFQ flow (Parse → Clarify → Query → Verify & Present) over
hcloud BSSread-only APIs in the fixed regioncn-north-1. - Lifecycle Create is limited to the 74 allowlisted operations in
references/lifecycle/commands.mdand only after--help, fee review,--dryrun, and explicit confirmation. - Unsubscribe is console guidance only; no unsubscribe CLI/API is ever emitted or executed.
Prerequisites
Prerequisite check: Huawei Cloud CLI (hcloud) >= 7.2.2 and an authenticated profile with BSS read-only + lifecycle dependency IAM permissions (see
references/iam-policies.md).hcloud BSSalways uses the fixed region--cli-region=cn-north-1; the resource deploy region is carried inside each quote line'sregionfield.
hcloud version
hcloud configure list
hcloud BSS ListServiceTypes --cli-region=cn-north-1 --cli-output=json --limit=1
If not installed or authenticated, point the user to references/cli-installation-guide.md. Do NOT configure credentials on the user's behalf and do NOT accept AK/SK/token pasted in chat.
Environment dependency (BSS pricing chain): the price-inquiry chain (
ListServiceTypes,ListServiceResources,ListResourceSpecs,ListUsageTypes,ListMeasureUnits,ListRateOnPeriodDetail,ListOnDemandResourceRatings) runs against the authenticated account's BSS (Business Support System) APIs. In sandboxed or restricted environments where BSS access is not provisioned (no service metadata, no executor mapping), the pricing chain cannot be verified end-to-end. In that case state clearly that prices cannot be queried in the current environment, then stop — never guess, estimate from memory, or fabricate amounts.
Scope
In scope
| Request | Handling |
|---|---|
| Quote, budget, or comparison | Pricing (4-step RFQ) |
| Provision, purchase, or create | Lifecycle Create, limited to references/lifecycle/commands.md |
| Unsubscribe or stop using | console-only Unsubscribe Guidance |
Out of scope — route, don't execute
| Request | Routing |
|---|---|
| Historical bills, balance, or reconciliation | 费用中心 or read-only BSS billing APIs (do not use this skill) |
| Non-Huawei cloud pricing | refuse politely |
| Non-allowlisted writes | console guidance; never run them |
| AK/SK/token in chat | point to references/cli-installation-guide.md |
| Remembering or guessing prices | prices only from the current hcloud response |
Execution Pace
Complete chains of at most three hcloud commands directly to the next safety gate. For longer
chains, run only two or three commands per round, report progress and the next step, then ask
whether to continue. A user may request uninterrupted execution, but clarification, unknown-cost
approval, --dryrun, and write confirmation remain mandatory.
Workflow
Pricing — 4-Step RFQ
- Parse
cloud_service_type / resource_type / region / resource_specplus period or usage; route throughreferences/pricing/semantic/catalog.yml. - Clarify missing region, quantity, duration/usage, linear size, ambiguous categories, or
unresolved variants in one question with two to four candidates. Disclose and apply only safe
defaults: OS=linux, empty AZ, and
fee_installment_mode=NA. - Query using
references/pricing/commands.md:ListServiceResources→ListResourceSpecs→ on-demandListUsageTypes(--resource_type_code)→ measure resolution → quotation. Ask on multiple matches; a spec match may still fail. Never invent duration or mix capacity and usage slots. - Verify and present that line items sum to the total and currency, period, and quantity align.
Present
[service] [spec] [region] [quantity × period] = amount, total, and “not a final bill.” Show discounts only when returned.
Lifecycle Create — 7 Gates
Read references/lifecycle/concepts.md, then perform every gate in order:
- Allowlist — Map intent to an operation in
references/lifecycle/commands.md; refuse misses. - Help — Run
hcloud <Service> <Operation> --helpfor required and conditional fields. Stop on[APIE_ERROR]or missing schema; never guess. - Resolve — Run required read-only dependencies such as VPC, subnet, AZ, image, and flavor. Let the user choose among multiple matches.
- Cost — Use Pricing when possible. Otherwise disclose “price unknown and may incur charges” and obtain separate approval.
- Dry — Add global
--dryrunto the complete command. Fix and rerun failures; never promote a failed dry run. - Confirm — Show resource, region, spec, quantity, billing, known or unknown price, and batch order; wait for explicit confirmation.
- Execute — Remove only
--dryrun. Run multiple commands in order, stop on failure, never auto-rollback, and report succeeded, failed, and unexecuted items.
Any parameter, region, quantity, or operation change invalidates the dry run and confirmation and returns to Help.
Unsubscribe Guidance
Never run or generate unsubscribe CLI/API operations, and never use --dryrun as a substitute for
console preview.
- Subscription resources: direct the user to Huawei Cloud Console → Cost Center → Orders → Unsubscriptions. Ask them to back up or migrate data and verify the account, resource, related resources, refund, fees, and refund destination before submission.
- Pay-per-use resources: unsubscribe does not apply. Direct the user to the service console to delete the resource after backup; do not delete it for them.
If automation is requested, preserve this boundary and provide the official unsubscribe rules.
Core Commands
All
hcloud BSScommands use--cli-region=cn-north-1. Arrays use dot notation (--product_infos.N.*); output with--cli-output=json. Full contracts and exact templates live inreferences/pricing/commands.mdandreferences/lifecycle/commands.md.
Resolve project scope (IAM read-only)
hcloud IAM KeystoneListAuthProjects --cli-region={region} --cli-output=json
hcloud IAM KeystoneListProjects --domain_id={domain_id} --cli-region={region} --cli-output=json
Pricing dimensions (BSS read-only)
hcloud BSS ListServiceTypes --cli-region=cn-north-1 --cli-output=json --limit=10 --offset=0
hcloud BSS ListServiceResources --service_type_code={cloud_service_type} --cli-region=cn-north-1 --cli-output=json --limit=10 --offset=0
hcloud BSS ListResourceSpecs --charge_mode=1 --cloud_service_type={cst} --resource_type={rt} --region_code={region} --filters.1.key=RESOURCE_SPEC --filters.1.value={spec_hint} --limit=100 --cli-region=cn-north-1 --cli-output=json
hcloud BSS ListUsageTypes --resource_type_code={rt} --cli-region=cn-north-1 --cli-output=json --limit=100 --offset=0
hcloud BSS ListMeasureUnits --cli-region=cn-north-1 --cli-output=json
Period quote (BSS/ListRateOnPeriodDetail, read-only POST)
hcloud BSS ListRateOnPeriodDetail \
--project_id={project_id} \
--product_infos.1.id=1 \
--product_infos.1.cloud_service_type={cst} \
--product_infos.1.resource_type={rt} \
--product_infos.1.resource_spec={spec} \
--product_infos.1.region={deploy_region} \
--product_infos.1.period_type={0|2|3|4} --product_infos.1.period_num={n} --product_infos.1.subscription_num={qty} \
--cli-region=cn-north-1 --cli-output=json
Linear products (volume / bandwidth / share_bandwidth) additionally require
--product_infos.N.resource_size={size} --product_infos.N.size_measure_id={17|15}.
On-demand quote (BSS/ListOnDemandResourceRatings, read-only POST)
hcloud BSS ListOnDemandResourceRatings \
--project_id={project_id} \
--product_infos.1.id=1 \
--product_infos.1.cloud_service_type={cst} \
--product_infos.1.resource_type={rt} \
--product_infos.1.resource_spec={spec} \
--product_infos.1.region={deploy_region} \
--product_infos.1.usage_factor={factor} --product_infos.1.usage_value={value} --product_infos.1.usage_measure_id={mid} \
--product_infos.1.subscription_num={qty} \
--cli-region=cn-north-1 --cli-output=json
Lifecycle create (allowlisted write path)
The 74 allowlisted operations (e.g. ECS/CreateServers, DDS/CreateInstance, RDS/CreateInstance)
are enumerated in references/lifecycle/commands.md. Parameters always come from the current
--help, never from memory. Minimal executable example (VPC is allowlisted, VPC/CreateVpc is a
readily dry-runnable create):
hcloud VPC CreateVpc --help
hcloud VPC CreateVpc --vpc.name={name} --vpc.cidr=172.16.0.0/16 --cli-region={region} --dryrun
Every other allowlisted operation follows the same shape: run --help first, then build the full
command from the help output, add --dryrun, and only remove --dryrun after the dry-run gate and
explicit confirmation. Pass the --dryrun gate and explicit confirmation before executing without
--dryrun; one failure stops the batch, no auto-rollback.
Lifecycle dependency lookups (read-only)
Run only the dependencies the help output marks required (references/lifecycle/commands.md):
hcloud EPS ListEnterpriseProject --cli-region=cn-north-4 --cli-output=json
hcloud VPC ListVpcs --cli-region={region} --cli-output=json
hcloud VPC ListSubnets --cli-region={region} --cli-output=json
hcloud ECS NovaListAvailabilityZones --cli-region={region} --cli-output=json
hcloud IMS ListImages --cli-region={region} --cli-output=json
hcloud EVS CinderListVolumeTypes --cli-region={region} --cli-output=json
hcloud ECS NovaListKeypairs --cli-region={region} --cli-output=json
hcloud ECS NovaListFlavors --cli-region={region} --cli-output=json
EPS region note: EPS does not support
cn-north-1. Query enterprise projects with--cli-region=cn-north-4(or another EPS-enabled region such asru-moscow-1/my-kualalumpur-1); the returnedenterprise_project_idis region-independent for lifecycle create parameters. The BSS fixed regioncn-north-1applies to price inquiry only, never to EPS.
Parameter Confirmation
| Parameter | Required | Description | Example |
|---|---|---|---|
--cli-region |
Yes (auto) | fixed cn-north-1 for all BSS commands |
--cli-region=cn-north-1 |
--project_id |
Yes | resolved via KeystoneListAuthProjects |
--project_id=xxx |
--product_infos.N.cloud_service_type |
Yes | raw code from ListServiceTypes |
hws.service.type.ec2 |
--product_infos.N.resource_type |
Yes | raw code from ListServiceResources |
hws.resource.type.vm |
--product_infos.N.resource_spec |
Yes | raw code from ListResourceSpecs (never fabricate) |
c6.2xlarge.2.linux |
--product_infos.N.region |
Yes | actual deploy region of the resource | cn-north-4 |
--product_infos.N.subscription_num |
Yes | quantity, 1..10000 | 1 |
--product_infos.N.period_type |
Conditional | period quote only: 0 day / 2 month / 3 year / 4 hour |
2 |
--product_infos.N.period_num |
Conditional | period quote only: number of periods | 1 |
--product_infos.N.usage_factor |
Conditional | on-demand only: raw code from ListUsageTypes |
Duration |
--product_infos.N.usage_value |
Conditional | on-demand only: scalar per Measure Resolve rules | 2 |
--product_infos.N.usage_measure_id |
Conditional | on-demand only: usage slot from ListMeasureUnits (≠ size_measure_id) |
4 |
--product_infos.N.resource_size |
Conditional | linear products only (volume / bandwidth / share_bandwidth) | 40 |
--product_infos.N.size_measure_id |
Conditional | 17 GB (volume), 15 Mbps (bandwidth / share_bandwidth) |
17 |
--dryrun |
Yes (lifecycle) | global dry-run gate before any create; never --dry-run |
--dryrun |
Missing region, quantity, duration/usage, or linear size is clarified in one question with two to four candidates before any command runs.
Unsubscribe Console Path
Never run or generate unsubscribe CLI/API operations; --dryrun previews request construction only
and never replaces the console. Subscription resources go through Console → Cost Center → Orders →
Unsubscriptions after data backup and account/resource/refund verification; pay-per-use resources
are deleted by the user in the service console after backup.
Critical Rules
- Prices come from the current response; parameters come from current help.
- No real create call without a successful
--dryrunand explicit confirmation. - Never automate or emit unsubscribe operations.
- Refuse AK, SK, and tokens in chat; point to
references/cli-installation-guide.mdfor self-configuration. - Every BSS call uses
--cli-region=cn-north-1;product_infos.N.regionremains the deployment region. - Route out-of-scope work to Cost Center, the appropriate console, or read-only billing.
Use bullets or numbered items, not GFM tables, in user-facing responses. For command-level traps,
read references/pricing/commands.md.
KooCLI Command Format Standard
Every command follows the generic KooCLI shape:
hcloud <Service> <Operation> --cli-region=<region> [--key=value ...].
| Feature | Description | Example |
|---|---|---|
| Service name | Exact KooCLI Service name beginning with uppercase/title case | BSS, IAM, ECS, VPC, DDS |
| Operation name | PascalCase | ListRateOnPeriodDetail, CreateServers |
| Region parameter | --cli-region=<value> |
--cli-region=cn-north-1 |
| Simple parameter | --key=value |
--project_id=xxx |
| Indexed parameter | --key.N=value dot notation |
--product_infos.1.id=1 |
| Global dry-run | --dryrun (not --dry-run) |
--dryrun |
Placeholder tokens above (e.g. <Service>) are illustrative only — never run them literally.
Reference Documents
| Document | Content |
|---|---|
| references/lifecycle/concepts.md | Lifecycle execution concepts: allowlist, help, lookup, dry-run, fee status, batch invariants, unsubscribe console path |
| references/lifecycle/commands.md | The 74 allowlisted create operations and dependency lookup commands |
| references/pricing/commands.md | Pricing command contracts, response fields, universal traps, Measure Resolve table |
| references/pricing/semantic/catalog.yml | Routing catalog: period / on-demand / dimension_lookup |
| references/pricing/semantic/rfq-ondemand-model.yml | On-demand quote fact/line model |
| references/pricing/semantic/rfq-period-model.yml | Period quote fact/line model |
| references/pricing/semantic/rfq-shared-dimensions.yml | Shared conformed dimensions |
| references/iam-policies.md | Least-privilege IAM policies |
| references/cli-installation-guide.md | KooCLI install and auth guide (only to relay to user) |
For 403 or permission failures, read references/iam-policies.md. If hcloud is unavailable, relay
references/cli-installation-guide.md; never install it for the user.
