预估执行计划价格
功能介绍
预估执行计划价格(EstimateExecutionPlanPrice)
此API可以基于一份已有的执行计划中增量的资源进行询价,当前支持询价的计费模式有包周期计费、按需计费、免费,暂不支持其他形式的计费模式,例如竞价计费模式等。
注:
-
由于某些资源的属性值含有默认值,且该属性和询价参数相关。如果用户的模板中描述的资源没有声明这些属性,则询价结果可能存在偏差。
-
询价结果仅为预估结果,具体请以实际为准。
-
如果用户在模板中使用了depends_on参数,如A资源询价必要字段依赖于B资源的创建,则A资源不支持询价。
-
暂不支持传入data sources的flavor.id的场景的询价。
-
暂不支持镜像询价。
-
如果A资源的询价必要字段设置了sensitive = true,则A资源不支持询价。
-
模板中询价的资源的个数是有限制的。当前一个模板中最多支持12个包周期计费资源和24个按需计费资源。
-
支持询价的资源列表和询价必要参数
-
huaweicloud_cce_cluster:
-
支持的计费模式:包周期、按需
-
-
huaweicloud_css_cluster:
-
支持的计费模式:按需
-
-
huaweicloud_evs_volume:
-
支持的计费模式:包周期、按需
-
询价必要参数:size(磁盘规格)
-
-
huaweicloud_compute_instance:
-
支持的计费模式:包周期、按需
-
询价必要参数:flavor_id(规格ID)、flavor_name(规格名称,flavor_id和flavor_name至少给出一个)、system_disk_size(系统磁盘大小)
-
-
huaweicloud_vpc_bandwidth:
-
支持的计费模式:按需
-
询价必要参数:charge_mode仅支持bandwidth
-
-
huaweicloud_vpc_eip:
-
支持的计费模式:包周期、按需
-
询价必要参数:bandwidth.size(带宽大小)
-
-
huaweicloud_gaussdb_redis_instance:
-
支持的计费模式:包周期、按需
-
-
huaweicloud_nat_gateway:
-
支持的计费模式:按需
-
-
huaweicloud_rds_instance:
-
支持的计费模式:包周期、按需
-
支持的数据库类型:MySQL、PostgreSQL、Microsoft SQL Server
-
-
huaweicloud_sfs_turbo:
-
支持的计费模式:按需
-
询价必要参数:share_type(文件系统类型)
-
-
huaweicloud_dms_kafka_instance:
-
支持的计费模式:按需
-
询价必要参数:flavor_id(规格ID)、product_id(产品ID。flavor_id和product_id至少给出一个。)、storage_space(存储容量)
-
-
huaweicloud_dcs_instance:
-
支持的计费模式:包周期、按需
-
-
huaweicloud_gaussdb_mysql_instance:
-
支持的计费模式:包周期、按需
-
询价必要参数:proxy_node_number(代理节点数量)、volume_size(挂载卷的存储空间)
-
-
huaweicloud_vpc:
-
支持的计费模式:免费
-
-
huaweicloud_drs_job:
-
支持的计费模式:按需
-
-
huaweicloud_apig_instance:
-
支持的计费模式:按需
-
-
URI
GET /v1/{project_id}/stacks/{stack_name}/execution-plans/{execution_plan_name}/prices
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID,可以从调用API处获取,也可以从控制台获取。 |
stack_name |
是 |
String |
资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 |
execution_plan_name |
是 |
String |
执行计划的名称。此名字在domain_id+区域+project_id+stack_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
stack_id |
否 |
String |
资源栈(stack)的唯一Id。 此Id由资源编排服务在生成资源栈的时候生成,为UUID。 由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400 |
execution_plan_id |
否 |
String |
执行计划(execution_plan)的唯一Id。 此Id由资源编排服务在生成执行计划的时候生成,为UUID。 由于执行计划名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的执行计划,删除,再重新创建一个同名执行计划。 对于团队并行开发,用户可能希望确保,当前我操作的执行计划就是我认为的那个,而不是其他队友删除后创建的同名执行计划。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的执行计划所对应的ID都不相同,更新不会影响ID。如果给予的execution_plan_id和当前执行计划的ID不一致,则返回400 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Client-Request-Id |
是 |
String |
用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
currency |
String |
币种,枚举值
|
items |
Array of ItemsResponse objects |
执行计划中所有资源的询价结果 |
参数 |
参数类型 |
描述 |
---|---|---|
resource_type |
String |
资源的类型 以HCL格式的模板为例,resource_type 为 huaweicloud_vpc resource "huaweicloud_vpc" "my_hello_world_vpc" { name = "test_vpc" } 以json格式的模板为例,resource_type 为 huaweicloud_vpc { "resource": { "huaweicloud_vpc": { "my_hello_world_vpc": { "name": "test_vpc" } } } } |
resource_name |
String |
资源的名称,默认为资源的逻辑名称 以HCL格式的模板为例,resource_name 为 my_hello_world_vpc resource "huaweicloud_vpc" "my_hello_world_vpc" { name = "test_vpc" } 以json格式的模板为例,resource_name 为 my_hello_world_vpc { "resource": { "huaweicloud_vpc": { "my_hello_world_vpc": { "name": "test_vpc" } } } } |
index |
String |
资源的索引,如果用户在模板中使用了count或for_each则会返回index。如果index出现,则resource_name + index可以作为该资源的一种标识 如果用户在模板中使用count,则index为从0开始的数字 以HCL格式的模板为例,用户在模板中可以通过huaweicloud_vpc.my_hello_world_vpc[0]和huaweicloud_vpc.my_hello_world_vpc[1]标识两个资源 resource "huaweicloud_vpc" "my_hello_world_vpc" { count = 2 name = "test_vpc" } 以json格式的模板为例,用户在模板中可以通过huaweicloud_vpc.my_hello_world_vpc[0]和huaweicloud_vpc.my_hello_world_vpc[1]标识两个资源 { "resource": { "huaweicloud_vpc": { "my_hello_world_vpc": { "name": "test_vpc", "count": 2 } } } } 如果用户在模板中使用for_each,则index为用户自定义的字符串 以HCL格式的模板为例,用户在模板中可以通过huaweicloud_vpc.my_hello_world_vpc["vpc1"]和huaweicloud_vpc.my_hello_world_vpc["vpc2"]标识两个资源 resource "huaweicloud_vpc" "my_hello_world_vpc" { for_each = { "vpc1" = "test_vpc" "vpc2" = "test_vpc" } name = each.value } 以json格式的模板为例,用户在模板中可以通过huaweicloud_vpc.my_hello_world_vpc["vpc1"]和huaweicloud_vpc.my_hello_world_vpc["vpc2"]标识两个资源 { "resource": { "huaweicloud_vpc": { "my_hello_world_vpc": { "for_each": { "vpc1": "test_vpc", "vpc2": "test_vpc" } "name": "${each.value}" } } } } |
module_address |
String |
该资源的模块地址 |
supported |
Boolean |
该资源或该资源当前所给予的参数是否支持进行询价 |
unsupported_message |
String |
该资源不支持询价的具体原因 |
resource_price |
Array of ResourcePriceResponse objects |
该资源的询价信息 如果该资源支持包周期计费或按需计费,或者该资源为免费资源,则返回该字段;如果该资源不支持询价,则不返回该字段。 |
参数 |
参数类型 |
描述 |
---|---|---|
charge_mode |
String |
计费模式
|
sale_price |
Double |
该资源最终优惠后的金额(只考虑官网折扣、商务折扣以及伙伴折扣,不包含促销折扣及优惠券),保留小数点后2位,向上取整,默认单位是元。 |
discount |
Double |
该资源的总优惠额,保留小数点后2位,向上取整,默认单位是元。 |
original_price |
Double |
该资源的原价,保留小数点后2位,向上取整,默认单位是元。 |
period_type |
String |
计费单位 如果该资源支持包周期计费或按需计费,则会返回该字段;如果该资源为免费资源,则不返回该字段。
|
period_count |
Integer |
该资源的计费数量,需要和period_type搭配使用 如果该资源支持包周期计费或按需计费,则会返回该字段;如果该资源为免费资源,则不返回该字段。
|
best_discount_type |
Integer |
该资源的最优折扣类型 对于按需计费资源的折扣类型 合同商务优惠类型:605 (华为云商务-折扣率,一口价,华为云用户)、606 (渠道商务-折扣率,一口价,BP用户) 伙伴折扣优惠类型:607 (合作伙伴授予折扣-折扣率) 对于包周期计费资源的折扣类型 合同商务折扣:605(华为云BE场景下的合同商务折扣)、606(分销商BE场景下的合同商务折扣) 伙伴授予折扣:607 促销折扣:700 如果该资源存在折扣,则返回该字段;如果该资源不存在折扣,则不返回该字段。 |
best_discount_price |
Double |
最优折扣优惠额,保留小数点后2位,向上取整,默认单位是元。 如果该资源存在折扣,则返回该字段;如果该资源不存在折扣,则不返回该字段。 |
official_website_discount_price |
Double |
官网价优惠额,保留小数点后2位,向上取整,默认单位是元。 如果该资源存在官网价优惠额,则返回该字段;如果该资源不存在官网价优惠额,则不返回该字段。 |
状态码: 400
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
响应码 |
error_msg |
String |
响应消息 |
encoded_authorization_message |
String |
包含有关未经授权请求的信息。 |
details |
Array of Detail objects |
权限拒绝时服务返回的详细错误信息。 |
状态码: 401
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
响应码 |
error_msg |
String |
响应消息 |
encoded_authorization_message |
String |
包含有关未经授权请求的信息。 |
details |
Array of Detail objects |
权限拒绝时服务返回的详细错误信息。 |
状态码: 403
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
响应码 |
error_msg |
String |
响应消息 |
encoded_authorization_message |
String |
包含有关未经授权请求的信息。 |
details |
Array of Detail objects |
权限拒绝时服务返回的详细错误信息。 |
状态码: 404
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
响应码 |
error_msg |
String |
响应消息 |
encoded_authorization_message |
String |
包含有关未经授权请求的信息。 |
details |
Array of Detail objects |
权限拒绝时服务返回的详细错误信息。 |
状态码: 429
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
响应码 |
error_msg |
String |
响应消息 |
encoded_authorization_message |
String |
包含有关未经授权请求的信息。 |
details |
Array of Detail objects |
权限拒绝时服务返回的详细错误信息。 |
状态码: 500
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
响应码 |
error_msg |
String |
响应消息 |
encoded_authorization_message |
String |
包含有关未经授权请求的信息。 |
details |
Array of Detail objects |
权限拒绝时服务返回的详细错误信息。 |
请求示例
-
预估执行计划价格,该执行计划中包含了一个新创建的vpc资源
GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/execution-plans/my_first_execution_plan/prices
-
预估执行计划价格,该执行计划中包含了一个新创建的vpc资源,并提供资源栈id和执行计划id以校验是否与当前资源栈和执行计划匹配
GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/execution-plans/my_first_execution_plan/prices?stack_id=ea6a4f0e-ee8a-494e-b12a-8be4a1e65af2&execution_plan_id=fb5e781e-a27d-46e2-9954-242753857a9f
响应示例
状态码: 200
询价成功
-
{ "currency" : "USD", "items" : [ { "resource_type" : "huaweicloud_vpc", "resource_name" : "vpc", "resource_price" : [ { "charge_mode" : "FREE", "discount" : 0, "original_price" : 0, "sale_price" : 0 } ], "supported" : true } ] }
状态码
状态码 |
描述 |
---|---|
200 |
询价成功 |
400 |
用户请求非法 |
401 |
用户身份认证失败 |
403 |
用户无权限调用此API |
404 |
执行计划不存在 |
429 |
请求数量过多 |
500 |
服务器内部错误 |