- delay_after: 0
  description: Transition cluster from NOT_EXIST to CREATING
  expect: |-
    {
      "status_code": 200,
      "cel_expr": "body.state == \"CREATING\""
    }
  request: |-
    {
      "auth": {
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        },
        "type": "digest"
      },
      "method": "POST",
      "path": "/clusters",
      "body": {
        "displayName": "manual-scenario",
        "regionId": "{regionId}",
        "labels": {
          "tidb.cloud/project": "{projectId}"
        },
        "tidbNodeSetting": {
          "nodeSpecKey": "8C16G",
          "tidbNodeGroups": [
            {
              "nodeCount": 2
            }
          ]
        },
        "tikvNodeSetting": {
          "nodeCount": 3,
          "nodeSpecKey": "8C32G",
          "storageSizeGi": 200,
          "storageType": "BASIC"
        },
        "port": 4000,
        "rootPassword": "31415926"
      },
      "body_params": {
        "regionId": "region_id",
        "projectId": "project_id"
      }
    }
  max_retries: 0
  name: create_cluster_cluster_NOT_EXIST_to_CREATING
  operation: ClusterService_CreateCluster
  request_type: http
  case_id: c37f522f5754a26096985d8962f63afe
  step_type: generated
  order: 0.0
  generation_id: abcf522f5754a26096985d8962f63abc
  save: |-
    {
      "placeholder": [
        {
          "key": "cluster_1",
          "eval": "body.clusterId"
        }
      ]
    }
- delay_after: 0
  description: Successfully get a specified dedicated cluster by id.
  expect: |-
    {
      "status_code": 200
    }
  request: |-
    {
      "auth": {
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        },
        "type": "digest"
      },
      "method": "GET",
      "path": "/clusters/{clusterId}",
      "path_params": {
        "clusterId": "cluster_1"
      }
    }
  max_retries: 0
  name: ClusterService_GetCluster_c37f522f
  operation: ClusterService_GetCluster
  request_type: http
  case_id: c37f522f5754a26096985d8962f63aaa
  step_type: defined
  order: 1.0
  generation_id: abcf522f5754a26096985d8962f63abc
- delay_after: 0
  description: Successfully get a specified dedicated cluster by id.
  expect: |-
    {
      "status_code": 200
    }
  request: |-
    {
      "auth": {
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        },
        "type": "digest"
      },
      "method": "GET",
      "path": "/clusters/{clusterId}",
      "path_params": {
        "clusterId": "cluster_1"
      }
    }
  max_retries: 0
  name: ClusterService_GetCluster_c37f522f
  operation: ClusterService_GetCluster
  request_type: http
  case_id: c37f522f5754a26096985d8962f63aaa
  step_type: defined
  order: 2.0
  generation_id: abcf522f5754a26096985d8962f63abc
- delay_after: 60
  description: Transition cluster from CREATING to AVAILABLE
  expect: |-
    {
      "status_code": 200,
      "cel_expr": "body.state == \"ACTIVE\""
    }
  request: |-
    {
      "auth": {
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        },
        "type": "digest"
      },
      "method": "GET",
      "path": "/clusters/{clusterId}",
      "path_params": {
        "clusterId": "cluster_1"
      }
    }
  max_retries: 10
  name: wait_for_cluster_available_cluster_CREATING_to_AVAILABLE
  operation: ClusterService_GetCluster
  request_type: http
  case_id: c37f522f5754a26096985d8962f63aab
  step_type: generated
  order: 3.0
  generation_id: abcf522f5754a26096985d8962f63abc
- delay_after: 0
  description: Transition nodegroup from NOT_EXIST to CREATING
  expect: |-
    {
      "status_code": 200
    }
  request: |-
    {
      "auth": {
        "type": "digest",
        "content": {
            "public_key": "placeholder",
            "private_key": "placeholder"
        }
      },
      "method": "POST",
      "path": "/clusters/{clusterId}/tidbNodeGroups",
      "path_params": {
        "clusterId": "cluster_1"
      },
      "body": {
        "displayName": "newnodegroup",
        "nodeCount": 2
      }
    }
  max_retries: 0
  name: create_nodegroup_nodegroup_NOT_EXIST_to_CREATING
  operation: NodeGroupService_CreateNodeGroup
  request_type: http
  case_id: c37f522f5754a26096985d8962f65cfe
  save: |-
    {
      "placeholder": [
        {
          "key": "nodegroup_1",
          "eval": "body.tidbNodeGroupId"
        }
      ]
    }
  step_type: generated
  order: 4.0
  generation_id: abcf522f5754a26096985d8962f63abc
- delay_after: 60
  description: Transition nodegroup from CREATING to AVAILABLE
  expect: |-
    {
      "status_code": 200,
      "cel_expr": "body.state == \"ACTIVE\""
    }
  request: |-
    {
      "auth": {
        "type": "digest",
        "content": {
            "public_key": "placeholder",
            "private_key": "placeholder"
        }
      },
      "method": "GET",
      "path": "/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}",
      "path_params": {
        "clusterId": "cluster_1",
        "tidbNodeGroupId": "nodegroup_1"
      }
    }
  max_retries: 10
  name: wait_for_nodegroup_available_nodegroup_CREATING_to_AVAILABLE
  operation: NodeGroupService_GetNodeGroup
  request_type: http
  case_id: c37f522f5754a26096985d8962f65eff
  step_type: generated
  order: 5.0
  generation_id: abcf522f5754a26096985d8962f63abc
# - delay_after: 60
#   description: Transition vpc from PENDING to AVAILABLE
#   expect:
#     status_code: 200
#     cel_expr: resource.state == "ACTIVE"
#   request:
#     service: ec2
#     operation: DescribeVpcs
#     params:
#       vpcIds:
#         - vpc_1
#   max_retries: 10
#   name: wait_for_vpc_available_vpc_PENDING_to_AVAILABLE
#   operation: VPCService_GetVPC
#   request_type: aws_sdk
#   case_id: wait_for_vpc_active
#   step_type: generated
#   order: 7.0
#   generation_id: abcf522f5754a26096985d8962f63abc
- delay_after: 60
  description: Wait privateLinkServiceReady
  expect: |-
    {
      "status_code": 200,
      "cel_expr": "body.state == \"ACTIVE\""
    }
  request: |-
    {
      "auth": {
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        },
        "type": "digest"
      },
      "method": "GET",
      "path": "/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}/privateLinkService",
      "path_params": {
        "clusterId": "cluster_1",
        "tidbNodeGroupId": "nodegroup_1"
      }
    }
  max_retries: 10
  name: wait_for_privatelinkservice_available_privatelink_CREATING_to_AVAILABLE
  operation: PrivateEndpointConnectionService_GetPrivateEndpointConnection
  request_type: http
  case_id: c37f522f5754a26096985d8962f66bfd
  step_type: generated
  order: 8.0
  generation_id: abcf522f5754a26096985d8962f63abc
  save: |-
    {
      "placeholder": [
        {
          "key": "tidb_pls_name",
          "eval": "body.serviceName"
        }
      ]
    }
- delay_after: 0
  description: Create VPC Endpoint
  expect: |-
    {
      "exist_code": 0
    }
  request: |-
    {
      "name": "aws",
      "args": [
        "ec2", "create-vpc-endpoint",
        "--vpc-id",
        "vpc-07b93bdc05a20479f",
        "--region",
        "us-west-2",
        "--service-name",
        "{tidb_pls_name}",
        "--vpc-endpoint-type",
        "Interface",
        "--subnet-ids",
        "subnet-0fce9889b0ab48a77", "subnet-068f6ac51119ccd01", "subnet-0974323bec10a4556",
      ],
      "args_params": {
        "tidb_pls_name": "placeholder"
      }
    }
  max_retries: 0
  name: create_vpcEndpoint
  operation: AWS_CreateVPCEndpoint
  request_type: cmd_aws
  case_id: create_vpcendpoint_in_aws
  step_type: generated
  order: 8.1
  generation_id: abcf522f5754a26096985d8962f63abc
  save: |-
    {
      "placeholder": [
        {
          "key": "customer_endpoint_id",
          "eval": "output.VpcEndpoint.VpcEndpointId"
        }
      ]
    }
- delay_after: 0
  description: Successfully create a private endpoint connection of a specified
    TiDB Node Group.
  expect: |-
    {
      "status_code": 200
    }
  request: |-
    {
      "auth": {
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        },
        "type": "digest"
      },
      "body": {
        "endpointId": "{endpointId}"
      },
      "body_params": {
        "endpointId": "customer_endpoint_id"
      },
      "method": "POST",
      "path": "/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}/privateEndpointConnections",
      "path_params": {
        "clusterId": "cluster_1",
        "tidbNodeGroupId": "nodegroup_1"
      }
    }
  max_retries: 0
  name: PrivateEndpointConnectionService_CreatePrivateEndpointConnection_c37f522f
  operation: PrivateEndpointConnectionService_CreatePrivateEndpointConnection
  request_type: http
  case_id: c37f522f5754a26096985d8962f66bfe
  step_type: defined
  order: 8.2
  generation_id: abcf522f5754a26096985d8962f63abc
- delay_after: 0
  description: Transition cluster from AVAILABLE to DELETED
  expect: |-
    {
      "status_code": 200
    }
  request: |-
    {
      "auth": {
        "content": {
          "private_key": "placeholder",
          "public_key": "placeholder"
        },
        "type": "digest"
      },
      "method": "DELETE",
      "path": "/clusters/{clusterId}",
      "path_params": {
        "clusterId": "cluster_1"
      }
    }
  max_retries: 0
  name: delete_cluster_cluster_AVAILABLE_to_DELETED
  operation: ClusterService_DeleteCluster
  request_type: http
  case_id: c37f522f5754a26096985d8962f63abb
  step_type: generated
  order: 9.0
  generation_id: abcf522f5754a26096985d8962f63abc
# - delay_after: 0
#   description: Transition vpc from AVAILABLE to PENDING
#   expect:
#     status_code: 200
#   request:
#     service: ec2
#     operation: DeleteVpc
#     params:
#       vpcId: "{{vpc_1}}"
#   max_retries: 0
#   name: delete_vpc_vpc_AVAILABLE_to_PENDING
#   operation: VPCService_DeleteVPC
#   request_type: http
#   case_id: delete_vpc
#   step_type: generated
#   order: 10.0
#   generation_id: abcf522f5754a26096985d8962f63abc
