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

预估执行计划价格

功能介绍

预估执行计划价格(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

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

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

项目ID获取方式

stack_name

String

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

execution_plan_name

String

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

表2 Query参数

参数

是否必选

参数类型

描述

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

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

Client-Request-Id

String

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

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

currency

String

币种,枚举值

  • USD - 美元,国际站返回的币种

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

module_address

String

该资源的模块地址

supported

Boolean

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

unsupported_message

String

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

resource_price

Array of ResourcePriceResponse objects

该资源的询价信息

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

表6 ResourcePriceResponse

参数

参数类型

描述

charge_mode

String

计费模式

  • PRE_PAID - 包周期计费

  • POST_PAID - 按需计费

  • FREE - 免费

sale_price

Double

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

discount

Double

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

original_price

Double

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

period_type

String

计费单位

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

  • HOUR - 小时,按需计费的单位

  • DAY - 天,按需计费的单位

  • MONTH - 月,包周期计费的单位

  • YEAR - 年,包周期计费的单位

  • BYTE - 字节,按需计费的单位

  • MB - 百万字节,包周期计费和按需计费的单位

  • GB - 千兆字节,包周期计费和按需计费的单位

period_count

Integer

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

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

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

  • 对于包周期计费资源,此值与模板中该资源的period字段保持一致

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

表7 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表8 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 401

表9 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表10 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 403

表11 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表12 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 404

表13 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表14 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 429

表15 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表16 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 500

表17 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表18 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

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

询价成功

  • {
      "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

服务器内部错误