更新时间:2024-12-12 GMT+08:00

预估执行计划价格

功能介绍

预估执行计划价格(EstimateExecutionPlanPrice)

此API可以基于一份已有的执行计划中增量的资源进行询价,当前支持询价的计费模式有按需计费、免费,暂不支持其他形式的计费模式,例如竞价计费模式等。

注:

  • 由于某些资源的属性值含有默认值,且该属性和询价参数相关。如果用户的模板中描述的资源没有声明这些属性,则询价结果可能存在偏差。
  • 询价结果仅为预估结果,具体请以实际为准。
  • 如果用户在模板中使用了depends_on参数,如A资源询价必要字段依赖于B资源的创建,则A资源不支持询价。
  • 暂不支持传入data sources的flavor.id的场景的询价。
  • 暂不支持镜像询价。
  • 如果A资源的询价必要字段设置了sensitive = true,则A资源不支持询价。
  • 模板中询价的资源的个数是有限制的。当前一个模板中最多支持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

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,可以从调用API处获取,也可以从控制台获取。

项目ID获取方式

最小长度:3

最大长度:64

stack_name

String

资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。

最小长度:1

最大长度:128

execution_plan_name

String

执行计划的名称。此名字在domain_id+区域+project_id+stack_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。

最小长度:1

最大长度:128

表2 Query参数

参数

是否必选

参数类型

描述

stack_id

String

资源栈(stack)的唯一Id。

此Id由资源编排服务在生成资源栈的时候生成,为UUID。

由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。

对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。

资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400

最小长度:36

最大长度:36

execution_plan_id

String

执行计划(execution_plan)的唯一Id。

此Id由资源编排服务在生成执行计划的时候生成,为UUID。

由于执行计划名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的执行计划,删除,再重新创建一个同名执行计划。

对于团队并行开发,用户可能希望确保,当前我操作的执行计划就是我认为的那个,而不是其他队友删除后创建的同名执行计划。因此,使用ID就可以做到强匹配。

资源编排服务保证每次创建的执行计划所对应的ID都不相同,更新不会影响ID。如果给予的execution_plan_id和当前执行计划的ID不一致,则返回400

最小长度:36

最大长度:36

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

Client-Request-Id

String

用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID

最小长度:36

最大长度:128

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

currency

String

币种,枚举值

items

Array of ItemsResponse objects

执行计划中所有资源的询价结果

表5 ItemsResponse

参数

参数类型

描述

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}"
      }
    }
  }
}

supported

Boolean

该资源或该资源当前所给予的参数是否支持进行询价

unsupported_message

String

该资源不支持询价的具体原因

resource_price

Array of ResourcePriceResponse objects

该资源的询价信息

如果该资源支持按需计费,或者该资源为免费资源,则返回该字段;如果该资源不支持询价,则不返回该字段。

表6 ResourcePriceResponse

参数

参数类型

描述

charge_mode

String

计费模式

  • POST_PAID - 按需计费
  • FREE - 免费

枚举值:

  • POST_PAID
  • FREE

sale_price

Double

该资源最终优惠后的金额(只考虑官网折扣、商务折扣以及伙伴折扣,不包含促销折扣及优惠券),保留小数点后2位,向上取整。

discount

Double

该资源的总优惠额,保留小数点后2位,向上取整。

original_price

Double

该资源的原价,保留小数点后2位,向上取整。

period_type

String

计费单位

如果该资源支持按需计费,则会返回该字段;如果该资源为免费资源,则不返回该字段。

  • HOUR - 小时,按需计费的单位
  • DAY - 天,按需计费的单位
  • BYTE - 字节,按需计费的单位
  • MB - 百万字节,按需计费的单位
  • GB - 千兆字节,按需计费的单位

枚举值:

  • HOUR
  • DAY
  • BYTE
  • MB
  • GB

period_count

Integer

该资源的计费数量,需要和period_type搭配使用

如果该资源支持按需计费,则会返回该字段;如果该资源为免费资源,则不返回该字段。

  • 对于按需计费资源,此值默认返回1,代表在1个计费单位下,该资源的价格

状态码: 400

表7 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 401

表8 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 403

表9 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 404

表10 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 429

表11 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 500

表12 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

请求示例

  • 预估执行计划价格,该执行计划中包含了一个新创建的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

询价成功
{
   "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

服务器内部错误