scenario:
  id: df6d2971-5109-4e9f-8305-1148b58954c8
  context:
    auth:
      type: digest
    base_path: /v1beta2
    host: null
  description: premium_reserved_cluster_crud
  name: premium_reserved_cluster_crud
steps:
- operation_id: RegionService_ListRegions
  request_type: http
  request: |-
    {
      "method": "GET",
      "path": "/regions",
      "headers": {},
      "query_params": {
        "cloudProvider": "cloud_provider",
        "servicePlan": "Premium_Reserved",
        "orgId": "org_id"
      },
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        }
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "size(body.regions) > 0 && body.regions.exists(r, r.regionId == '{region_id}')"
    }
  save: null
  description: Confirm that the selected region supports Premium Reserved.
  max_retries: 0
  delay_after: 0
  continue_on_unexpected: false
  stage: prepare
  order: 0
- operation_id: TidbService_ListPremiumReservedCapacityOptions
  request_type: http
  request: |-
    {
      "method": "GET",
      "path": "/capacityOptions",
      "headers": {},
      "query_params": {
        "orgId": "org_id",
        "pageSize": 100
      },
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        }
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "size(body.reservedCapacities) >= 1 && body.reservedCapacities[0].id != ''"
    }
  save: |-
    {
      "placeholder": [
        {
          "key": "reserved_capacity_template_1",
          "eval": "body.reservedCapacities[0].id"
        }
      ]
    }
  description: Save an active Premium Reserved capacity template.
  max_retries: 0
  delay_after: 0
  continue_on_unexpected: false
  stage: prepare
  order: 1
- operation_id: TidbService_CreateTidb
  request_type: http
  request: |-
    {
      "method": "POST",
      "path": "/tidbs",
      "headers": {},
      "query_params": {
        "orgId": "org_id"
      },
      "body": {
        "displayName": "sce-pr-cluster-crud",
        "regionId": "{regionId}",
        "servicePlan": "Premium_Reserved",
        "reservedCapacityTemplateId": "{reservedCapacityTemplateId}"
      },
      "body_params": {
        "regionId": "region_id",
        "reservedCapacityTemplateId": "reserved_capacity_template_1"
      },
      "auth": {
        "auth_type": "digest",
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        }
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "body.tidbId != '' && body.servicePlan == 'Premium_Reserved' && body.regionId == '{region_id}'"
    }
  save: |-
    {
      "placeholder": [
        {
          "key": "cluster_1",
          "eval": "body.tidbId"
        }
      ]
    }
  description: Create a Premium Reserved cluster with the first capacity template.
  max_retries: 0
  delay_after: 0
  continue_on_unexpected: false
  stage: execute
  order: 2
- operation_id: TidbService_GetTidb
  request_type: http
  request: |-
    {
      "method": "GET",
      "path": "/tidbs/{tidbId}",
      "path_params": {
        "tidbId": "cluster_1"
      },
      "headers": {},
      "query_params": {
        "orgId": "org_id"
      },
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        }
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "body.state == 'ACTIVE' && body.servicePlan == 'Premium_Reserved' && body.regionId == '{region_id}' && has(body.reservedCapacity) && body.reservedCapacity.id == '{reserved_capacity_template_1}'"
    }
  save: null
  description: Wait until the new Premium Reserved cluster is active.
  max_retries: 12
  delay_after: 300
  continue_on_unexpected: false
  stage: execute
  order: 3
- operation_id: TidbService_DeleteTidb
  request_type: http
  request: |-
    {
      "method": "DELETE",
      "path": "/tidbs/{tidbId}",
      "path_params": {
        "tidbId": "cluster_1"
      },
      "headers": {},
      "query_params": {
        "orgId": "org_id"
      },
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        }
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "body.state == 'DELETED'"
    }
  save: null
  description: Delete the Premium Reserved cluster and confirm its terminal state.
  max_retries: 0
  delay_after: 0
  continue_on_unexpected: false
  stage: teardown
  order: 4
