// // Code generated by go-swagger; DO NOT EDIT.
package model

//
//// This file was generated by the swagger tool.
//// Editing this file might prove futile when you re-run the swagger generate command
//
//import (
//	"context"
//	"encoding/json"
//	"strconv"
//
//	"github.com/go-openapi/errors"
//	"github.com/go-openapi/strfmt"
//	"github.com/go-openapi/swag"
//	"github.com/go-openapi/validate"
//)
//
//// OpenapiClusterItem ClusterItem
////
//// ClusterItem is the information of cluster.
////
//// swagger:model openapiClusterItem
//type OpenapiClusterItem struct {
//
//	// The cloud provider on which your TiDB cluster is hosted.
//	// - `"AWS"`: the Amazon Web Services cloud provider
//	// - `"GCP"`: the Google Cloud cloud provider
//	// Example: AWS
//	// Enum: [AWS GCP]
//	CloudProvider string `json:"cloud_provider,omitempty"`
//
//	// The cluster type:
//	// - `"DEVELOPER"`: a [TiDB Serverless](https://docs.pingcap.com/tidbcloud/select-cluster-tier#tidb-serverless) cluster
//	// - `"DEDICATED"`: a [TiDB Dedicated](https://docs.pingcap.com/tidbcloud/select-cluster-tier#dedicated-tier) cluster
//	//
//	// **Warning:** `"DEVELOPER"` will soon be changed to `"SERVERLESS"` to represent TiDB Serverless clusters.
//	// Example: DEDICATED
//	// Enum: [DEDICATED DEVELOPER]
//	ClusterType string `json:"cluster_type,omitempty"`
//
//	// config
//	Config *OpenapiClusterItemConfig `json:"config,omitempty"`
//
//	// The creation time of the cluster in Unix timestamp seconds (epoch time).
//	// Example: 1656991448
//	CreateTimestamp string `json:"create_timestamp,omitempty"`
//
//	// The ID of the cluster.
//	// Example: 1
//	// Required: true
//	ID *string `json:"id"`
//
//	// The name of the cluster.
//	// Example: Cluster0
//	// Pattern: ^[A-Za-z0-9][-A-Za-z0-9]{2,62}[A-Za-z0-9]$
//	Name string `json:"name,omitempty"`
//
//	// The ID of the project.
//	// Example: 1
//	// Required: true
//	ProjectID *string `json:"project_id"`
//
//	// Region of the cluster.
//	// Example: us-west-2
//	Region string `json:"region,omitempty"`
//
//	// status
//	Status *OpenapiClusterItemStatus `json:"status,omitempty"`
//}
//
//// Validate validates this openapi cluster item
//func (m *OpenapiClusterItem) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateCloudProvider(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateClusterType(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateConfig(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateID(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateName(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateProjectID(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateStatus(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//var openapiClusterItemTypeCloudProviderPropEnum []interface{}
//
//func init() {
//	var res []string
//	if err := json.Unmarshal([]byte(`["AWS","GCP"]`), &res); err != nil {
//		panic(err)
//	}
//	for _, v := range res {
//		openapiClusterItemTypeCloudProviderPropEnum = append(openapiClusterItemTypeCloudProviderPropEnum, v)
//	}
//}
//
//const (
//
//	// OpenapiClusterItemCloudProviderAWS captures enum value "AWS"
//	OpenapiClusterItemCloudProviderAWS string = "AWS"
//
//	// OpenapiClusterItemCloudProviderGCP captures enum value "GCP"
//	OpenapiClusterItemCloudProviderGCP string = "GCP"
//)
//
//// prop value enum
//func (m *OpenapiClusterItem) validateCloudProviderEnum(path, location string, value string) error {
//	if err := validate.EnumCase(path, location, value, openapiClusterItemTypeCloudProviderPropEnum, true); err != nil {
//		return err
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItem) validateCloudProvider(formats strfmt.Registry) error {
//	if swag.IsZero(m.CloudProvider) { // not required
//		return nil
//	}
//
//	// value enum
//	if err := m.validateCloudProviderEnum("cloud_provider", "body", m.CloudProvider); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//var openapiClusterItemTypeClusterTypePropEnum []interface{}
//
//func init() {
//	var res []string
//	if err := json.Unmarshal([]byte(`["DEDICATED","DEVELOPER"]`), &res); err != nil {
//		panic(err)
//	}
//	for _, v := range res {
//		openapiClusterItemTypeClusterTypePropEnum = append(openapiClusterItemTypeClusterTypePropEnum, v)
//	}
//}
//
//const (
//
//	// OpenapiClusterItemClusterTypeDEDICATED captures enum value "DEDICATED"
//	OpenapiClusterItemClusterTypeDEDICATED string = "DEDICATED"
//
//	// OpenapiClusterItemClusterTypeDEVELOPER captures enum value "DEVELOPER"
//	OpenapiClusterItemClusterTypeDEVELOPER string = "DEVELOPER"
//)
//
//// prop value enum
//func (m *OpenapiClusterItem) validateClusterTypeEnum(path, location string, value string) error {
//	if err := validate.EnumCase(path, location, value, openapiClusterItemTypeClusterTypePropEnum, true); err != nil {
//		return err
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItem) validateClusterType(formats strfmt.Registry) error {
//	if swag.IsZero(m.ClusterType) { // not required
//		return nil
//	}
//
//	// value enum
//	if err := m.validateClusterTypeEnum("cluster_type", "body", m.ClusterType); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItem) validateConfig(formats strfmt.Registry) error {
//	if swag.IsZero(m.Config) { // not required
//		return nil
//	}
//
//	if m.Config != nil {
//		if err := m.Config.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItem) validateID(formats strfmt.Registry) error {
//
//	if err := validate.Required("id", "body", m.ID); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItem) validateName(formats strfmt.Registry) error {
//	if swag.IsZero(m.Name) { // not required
//		return nil
//	}
//
//	if err := validate.Pattern("name", "body", m.Name, `^[A-Za-z0-9][-A-Za-z0-9]{2,62}[A-Za-z0-9]$`); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItem) validateProjectID(formats strfmt.Registry) error {
//
//	if err := validate.Required("project_id", "body", m.ProjectID); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItem) validateStatus(formats strfmt.Registry) error {
//	if swag.IsZero(m.Status) { // not required
//		return nil
//	}
//
//	if m.Status != nil {
//		if err := m.Status.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// ContextValidate validate this openapi cluster item based on the context it is used
//func (m *OpenapiClusterItem) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.contextValidateConfig(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.contextValidateStatus(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItem) contextValidateConfig(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.Config != nil {
//
//		if swag.IsZero(m.Config) { // not required
//			return nil
//		}
//
//		if err := m.Config.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItem) contextValidateStatus(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.Status != nil {
//
//		if swag.IsZero(m.Status) { // not required
//			return nil
//		}
//
//		if err := m.Status.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItem) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItem) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItem
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemConfig The configuration of the cluster.
//// Example: {"components":{"tidb":{"node_quantity":2,"node_size":"8C16G"},"tikv":{"node_quantity":3,"node_size":"8C32G","storage_size_gib":1024}},"port":4000}
////
//// swagger:model OpenapiClusterItemConfig
//type OpenapiClusterItemConfig struct {
//
//	// components
//	Components *OpenapiClusterItemConfigComponents `json:"components,omitempty"`
//
//	// The TiDB port for connection. The port must be in the range of 1024-65535 except 10080.
//	// Example: 4000
//	// Maximum: 65535
//	// Minimum: 1024
//	Port int32 `json:"port,omitempty"`
//}
//
//// Validate validates this openapi cluster item config
//func (m *OpenapiClusterItemConfig) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateComponents(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validatePort(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemConfig) validateComponents(formats strfmt.Registry) error {
//	if swag.IsZero(m.Components) { // not required
//		return nil
//	}
//
//	if m.Components != nil {
//		if err := m.Components.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config" + "." + "components")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config" + "." + "components")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfig) validatePort(formats strfmt.Registry) error {
//	if swag.IsZero(m.Port) { // not required
//		return nil
//	}
//
//	if err := validate.MinimumInt("config"+"."+"port", "body", int64(m.Port), 1024, false); err != nil {
//		return err
//	}
//
//	if err := validate.MaximumInt("config"+"."+"port", "body", int64(m.Port), 65535, false); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validate this openapi cluster item config based on the context it is used
//func (m *OpenapiClusterItemConfig) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.contextValidateComponents(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemConfig) contextValidateComponents(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.Components != nil {
//
//		if swag.IsZero(m.Components) { // not required
//			return nil
//		}
//
//		if err := m.Components.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config" + "." + "components")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config" + "." + "components")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemConfig) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemConfig) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemConfig
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemConfigComponents The components of the cluster.
//// Example: {"tidb":{"node_quantity":2,"node_size":"8C16G"},"tikv":{"node_quantity":3,"node_size":"8C32G","storage_size_gib":1024}}
////
//// swagger:model OpenapiClusterItemConfigComponents
//type OpenapiClusterItemConfigComponents struct {
//
//	// tidb
//	// Required: true
//	Tidb *OpenapiClusterItemConfigComponentsTidb `json:"tidb"`
//
//	// tiflash
//	Tiflash *OpenapiClusterItemConfigComponentsTiflash `json:"tiflash,omitempty"`
//
//	// tikv
//	// Required: true
//	Tikv *OpenapiClusterItemConfigComponentsTikv `json:"tikv"`
//}
//
//// Validate validates this openapi cluster item config components
//func (m *OpenapiClusterItemConfigComponents) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateTidb(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateTiflash(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateTikv(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponents) validateTidb(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tidb", "body", m.Tidb); err != nil {
//		return err
//	}
//
//	if m.Tidb != nil {
//		if err := m.Tidb.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config" + "." + "components" + "." + "tidb")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config" + "." + "components" + "." + "tidb")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponents) validateTiflash(formats strfmt.Registry) error {
//	if swag.IsZero(m.Tiflash) { // not required
//		return nil
//	}
//
//	if m.Tiflash != nil {
//		if err := m.Tiflash.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config" + "." + "components" + "." + "tiflash")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config" + "." + "components" + "." + "tiflash")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponents) validateTikv(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tikv", "body", m.Tikv); err != nil {
//		return err
//	}
//
//	if m.Tikv != nil {
//		if err := m.Tikv.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config" + "." + "components" + "." + "tikv")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config" + "." + "components" + "." + "tikv")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// ContextValidate validate this openapi cluster item config components based on the context it is used
//func (m *OpenapiClusterItemConfigComponents) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.contextValidateTidb(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.contextValidateTiflash(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.contextValidateTikv(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponents) contextValidateTidb(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.Tidb != nil {
//
//		if err := m.Tidb.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config" + "." + "components" + "." + "tidb")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config" + "." + "components" + "." + "tidb")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponents) contextValidateTiflash(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.Tiflash != nil {
//
//		if swag.IsZero(m.Tiflash) { // not required
//			return nil
//		}
//
//		if err := m.Tiflash.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config" + "." + "components" + "." + "tiflash")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config" + "." + "components" + "." + "tiflash")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponents) contextValidateTikv(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.Tikv != nil {
//
//		if err := m.Tikv.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("config" + "." + "components" + "." + "tikv")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("config" + "." + "components" + "." + "tikv")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemConfigComponents) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemConfigComponents) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemConfigComponents
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemConfigComponentsTidb The TiDB component of the cluster.
////
//// swagger:model OpenapiClusterItemConfigComponentsTidb
//type OpenapiClusterItemConfigComponentsTidb struct {
//
//	// The number of nodes in the cluster. You can get the minimum and step of a node quantity from the response of [List the cloud providers, regions and available specifications](#tag/Cluster/operation/ListProviderRegions).
//	//
//	// Example: 2
//	// Required: true
//	NodeQuantity *int32 `json:"node_quantity"`
//
//	// The size of the TiDB component in the cluster. You can get the available node size of each region from the response of [List the cloud providers, regions and available specifications](#tag/Cluster/operation/ListProviderRegions).
//	//
//	// **Additional combination rules**:
//	// - If the vCPUs of TiDB or TiKV component is 4, then their vCPUs need to be the same.
//	// - If the vCPUs of TiDB or TiKV component is 4, then the cluster does not support TiFlash.
//	// Example: 8C16G
//	// Required: true
//	NodeSize *string `json:"node_size"`
//}
//
//// Validate validates this openapi cluster item config components tidb
//func (m *OpenapiClusterItemConfigComponentsTidb) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateNodeQuantity(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateNodeSize(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponentsTidb) validateNodeQuantity(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tidb"+"."+"node_quantity", "body", m.NodeQuantity); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponentsTidb) validateNodeSize(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tidb"+"."+"node_size", "body", m.NodeSize); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validates this openapi cluster item config components tidb based on context it is used
//func (m *OpenapiClusterItemConfigComponentsTidb) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemConfigComponentsTidb) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemConfigComponentsTidb) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemConfigComponentsTidb
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemConfigComponentsTiflash The TiFlash component of the cluster.
////
//// swagger:model OpenapiClusterItemConfigComponentsTiflash
//type OpenapiClusterItemConfigComponentsTiflash struct {
//
//	// The number of nodes in the cluster. You can get the minimum and step of a node quantity from the response of [List the cloud providers, regions and available specifications](#tag/Cluster/operation/ListProviderRegions).
//	// Example: 1
//	// Required: true
//	NodeQuantity *int32 `json:"node_quantity"`
//
//	// The size of the TiFlash component in the cluster. You can get the available node size of each region from the response of [List the cloud providers, regions and available specifications](#tag/Cluster/operation/ListProviderRegions).
//	//
//	// **Additional combination rules**:
//	// - If the vCPUs of TiDB or TiKV component is 4, then their vCPUs need to be the same.
//	// - If the vCPUs of TiDB or TiKV component is 4, then the cluster does not support TiFlash.
//	// Example: 8C64G
//	// Required: true
//	NodeSize *string `json:"node_size"`
//
//	// The storage size of a node in the cluster. You can get the minimum and maximum of storage size from the response of [List the cloud providers, regions and available specifications](#tag/Cluster/operation/ListProviderRegions).
//	//
//	// Example: 1024
//	// Required: true
//	StorageSizeGib *int32 `json:"storage_size_gib"`
//}
//
//// Validate validates this openapi cluster item config components tiflash
//func (m *OpenapiClusterItemConfigComponentsTiflash) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateNodeQuantity(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateNodeSize(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateStorageSizeGib(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponentsTiflash) validateNodeQuantity(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tiflash"+"."+"node_quantity", "body", m.NodeQuantity); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponentsTiflash) validateNodeSize(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tiflash"+"."+"node_size", "body", m.NodeSize); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponentsTiflash) validateStorageSizeGib(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tiflash"+"."+"storage_size_gib", "body", m.StorageSizeGib); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validates this openapi cluster item config components tiflash based on context it is used
//func (m *OpenapiClusterItemConfigComponentsTiflash) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemConfigComponentsTiflash) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemConfigComponentsTiflash) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemConfigComponentsTiflash
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemConfigComponentsTikv The TiKV component of the cluster.
////
//// swagger:model OpenapiClusterItemConfigComponentsTikv
//type OpenapiClusterItemConfigComponentsTikv struct {
//
//	// The number of nodes in the cluster. You can get the minimum and step of a node quantity from the response of [List the cloud providers, regions and available specifications](#tag/Cluster/operation/ListProviderRegions).
//	//
//	// **Limitations**:
//	// - The `node_quantity` of TiKV must be a multiple of 3.
//	// Example: 3
//	// Required: true
//	NodeQuantity *int32 `json:"node_quantity"`
//
//	// The size of the TiKV component in the cluster. You can get the available node size of each region from the response of [List the cloud providers, regions and available specifications](#tag/Cluster/operation/ListProviderRegions).
//	//
//	// **Additional combination rules**:
//	// - If the vCPUs of TiDB or TiKV component is 4, then their vCPUs need to be the same.
//	// - If the vCPUs of TiDB or TiKV component is 4, then the cluster does not support TiFlash.
//	// Example: 8C64G
//	// Required: true
//	NodeSize *string `json:"node_size"`
//
//	// The storage size of a node in the cluster. You can get the minimum and maximum of storage size from the response of [List the cloud providers, regions and available specifications](#tag/Cluster/operation/ListProviderRegions).
//	// Example: 1024
//	// Required: true
//	StorageSizeGib *int32 `json:"storage_size_gib"`
//}
//
//// Validate validates this openapi cluster item config components tikv
//func (m *OpenapiClusterItemConfigComponentsTikv) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateNodeQuantity(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateNodeSize(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateStorageSizeGib(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponentsTikv) validateNodeQuantity(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tikv"+"."+"node_quantity", "body", m.NodeQuantity); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponentsTikv) validateNodeSize(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tikv"+"."+"node_size", "body", m.NodeSize); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemConfigComponentsTikv) validateStorageSizeGib(formats strfmt.Registry) error {
//
//	if err := validate.Required("config"+"."+"components"+"."+"tikv"+"."+"storage_size_gib", "body", m.StorageSizeGib); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validates this openapi cluster item config components tikv based on context it is used
//func (m *OpenapiClusterItemConfigComponentsTikv) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemConfigComponentsTikv) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemConfigComponentsTikv) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemConfigComponentsTikv
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemStatus ClusterItemStatus
////
//// The status of the cluster.
////
//// swagger:model OpenapiClusterItemStatus
//type OpenapiClusterItemStatus struct {
//
//	// Status of the cluster.
//	// Example: AVAILABLE
//	// Enum: [AVAILABLE CREATING MODIFYING PAUSED RESUMING UNAVAILABLE IMPORTING MAINTAINING PAUSING]
//	ClusterStatus string `json:"cluster_status,omitempty"`
//
//	// connection strings
//	ConnectionStrings *OpenapiClusterItemStatusConnectionStrings `json:"connection_strings,omitempty"`
//
//	// node map
//	NodeMap *OpenapiClusterItemStatusNodeMap `json:"node_map,omitempty"`
//
//	// TiDB version.
//	// Example: v6.1.0
//	TidbVersion string `json:"tidb_version,omitempty"`
//}
//
//// Validate validates this openapi cluster item status
//func (m *OpenapiClusterItemStatus) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateClusterStatus(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateConnectionStrings(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateNodeMap(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//var openapiClusterItemStatusTypeClusterStatusPropEnum []interface{}
//
//func init() {
//	var res []string
//	if err := json.Unmarshal([]byte(`["AVAILABLE","CREATING","MODIFYING","PAUSED","RESUMING","UNAVAILABLE","IMPORTING","MAINTAINING","PAUSING"]`), &res); err != nil {
//		panic(err)
//	}
//	for _, v := range res {
//		openapiClusterItemStatusTypeClusterStatusPropEnum = append(openapiClusterItemStatusTypeClusterStatusPropEnum, v)
//	}
//}
//
//// prop value enum
//func (m *OpenapiClusterItemStatus) validateClusterStatusEnum(path, location string, value string) error {
//	if err := validate.EnumCase(path, location, value, openapiClusterItemStatusTypeClusterStatusPropEnum, true); err != nil {
//		return err
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatus) validateClusterStatus(formats strfmt.Registry) error {
//	if swag.IsZero(m.ClusterStatus) { // not required
//		return nil
//	}
//
//	// value enum
//	if err := m.validateClusterStatusEnum("status"+"."+"cluster_status", "body", m.ClusterStatus); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatus) validateConnectionStrings(formats strfmt.Registry) error {
//	if swag.IsZero(m.ConnectionStrings) { // not required
//		return nil
//	}
//
//	if m.ConnectionStrings != nil {
//		if err := m.ConnectionStrings.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status" + "." + "connection_strings")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status" + "." + "connection_strings")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatus) validateNodeMap(formats strfmt.Registry) error {
//	if swag.IsZero(m.NodeMap) { // not required
//		return nil
//	}
//
//	if m.NodeMap != nil {
//		if err := m.NodeMap.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status" + "." + "node_map")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status" + "." + "node_map")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// ContextValidate validate this openapi cluster item status based on the context it is used
//func (m *OpenapiClusterItemStatus) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.contextValidateConnectionStrings(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.contextValidateNodeMap(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatus) contextValidateConnectionStrings(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.ConnectionStrings != nil {
//
//		if swag.IsZero(m.ConnectionStrings) { // not required
//			return nil
//		}
//
//		if err := m.ConnectionStrings.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status" + "." + "connection_strings")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status" + "." + "connection_strings")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatus) contextValidateNodeMap(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.NodeMap != nil {
//
//		if swag.IsZero(m.NodeMap) { // not required
//			return nil
//		}
//
//		if err := m.NodeMap.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status" + "." + "node_map")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status" + "." + "node_map")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemStatus) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemStatus) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemStatus
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemStatusConnectionStrings Connection strings.
////
//// swagger:model OpenapiClusterItemStatusConnectionStrings
//type OpenapiClusterItemStatusConnectionStrings struct {
//
//	// The default TiDB user for connection.
//	// Example: root
//	DefaultUser string `json:"default_user,omitempty"`
//
//	// standard
//	Standard *OpenapiClusterItemStatusConnectionStringsStandard `json:"standard,omitempty"`
//
//	// vpc peering
//	VpcPeering *OpenapiClusterItemStatusConnectionStringsVpcPeering `json:"vpc_peering,omitempty"`
//}
//
//// Validate validates this openapi cluster item status connection strings
//func (m *OpenapiClusterItemStatusConnectionStrings) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateStandard(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateVpcPeering(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusConnectionStrings) validateStandard(formats strfmt.Registry) error {
//	if swag.IsZero(m.Standard) { // not required
//		return nil
//	}
//
//	if m.Standard != nil {
//		if err := m.Standard.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status" + "." + "connection_strings" + "." + "standard")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status" + "." + "connection_strings" + "." + "standard")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusConnectionStrings) validateVpcPeering(formats strfmt.Registry) error {
//	if swag.IsZero(m.VpcPeering) { // not required
//		return nil
//	}
//
//	if m.VpcPeering != nil {
//		if err := m.VpcPeering.Validate(formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status" + "." + "connection_strings" + "." + "vpc_peering")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status" + "." + "connection_strings" + "." + "vpc_peering")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// ContextValidate validate this openapi cluster item status connection strings based on the context it is used
//func (m *OpenapiClusterItemStatusConnectionStrings) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.contextValidateStandard(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.contextValidateVpcPeering(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusConnectionStrings) contextValidateStandard(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.Standard != nil {
//
//		if swag.IsZero(m.Standard) { // not required
//			return nil
//		}
//
//		if err := m.Standard.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status" + "." + "connection_strings" + "." + "standard")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status" + "." + "connection_strings" + "." + "standard")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusConnectionStrings) contextValidateVpcPeering(ctx context.Context, formats strfmt.Registry) error {
//
//	if m.VpcPeering != nil {
//
//		if swag.IsZero(m.VpcPeering) { // not required
//			return nil
//		}
//
//		if err := m.VpcPeering.ContextValidate(ctx, formats); err != nil {
//			if ve, ok := err.(*errors.Validation); ok {
//				return ve.ValidateName("status" + "." + "connection_strings" + "." + "vpc_peering")
//			} else if ce, ok := err.(*errors.CompositeError); ok {
//				return ce.ValidateName("status" + "." + "connection_strings" + "." + "vpc_peering")
//			}
//			return err
//		}
//	}
//
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusConnectionStrings) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusConnectionStrings) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemStatusConnectionStrings
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// Validate validates this openapi cluster item status connection strings standard
//func (m *OpenapiClusterItemStatusConnectionStringsStandard) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validatePort(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusConnectionStringsStandard) validatePort(formats strfmt.Registry) error {
//	if swag.IsZero(m.Port) { // not required
//		return nil
//	}
//
//	if err := validate.MinimumInt("status"+"."+"connection_strings"+"."+"standard"+"."+"port", "body", int64(m.Port), 1024, false); err != nil {
//		return err
//	}
//
//	if err := validate.MaximumInt("status"+"."+"connection_strings"+"."+"standard"+"."+"port", "body", int64(m.Port), 65535, false); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validates this openapi cluster item status connection strings standard based on context it is used
//func (m *OpenapiClusterItemStatusConnectionStringsStandard) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusConnectionStringsStandard) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusConnectionStringsStandard) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemStatusConnectionStringsStandard
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemStatusConnectionStringsVpcPeering [VPC peering](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary#vpc-peering) connection string.
////
//// You must [Set up VPC peering connections](https://docs.pingcap.com/tidbcloud/set-up-vpc-peering-connections) for the project before connecting to this private connection string.
////
//// swagger:model OpenapiClusterItemStatusConnectionStringsVpcPeering
//type OpenapiClusterItemStatusConnectionStringsVpcPeering struct {
//
//	// The host of VPC peering connection.
//	// Example: private-tidb.f69f3808.acea1f2a.us-east-1.shared.aws.tidbcloud.com
//	Host string `json:"host,omitempty"`
//
//	// The TiDB port for connection. The port must be in the range of 1024-65535 except 10080.
//	//
//	// **Limitations**:
//	// - For a TiDB Serverless cluster, only port `4000` is available.
//	// Example: 4000
//	// Maximum: 65535
//	// Minimum: 1024
//	Port int32 `json:"port,omitempty"`
//}
//
//// Validate validates this openapi cluster item status connection strings vpc peering
//func (m *OpenapiClusterItemStatusConnectionStringsVpcPeering) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validatePort(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusConnectionStringsVpcPeering) validatePort(formats strfmt.Registry) error {
//	if swag.IsZero(m.Port) { // not required
//		return nil
//	}
//
//	if err := validate.MinimumInt("status"+"."+"connection_strings"+"."+"vpc_peering"+"."+"port", "body", int64(m.Port), 1024, false); err != nil {
//		return err
//	}
//
//	if err := validate.MaximumInt("status"+"."+"connection_strings"+"."+"vpc_peering"+"."+"port", "body", int64(m.Port), 65535, false); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validates this openapi cluster item status connection strings vpc peering based on context it is used
//func (m *OpenapiClusterItemStatusConnectionStringsVpcPeering) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusConnectionStringsVpcPeering) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusConnectionStringsVpcPeering) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemStatusConnectionStringsVpcPeering
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemStatusNodeMap Node map. The `node_map` is returned only when the `cluster_status` is `"AVAILABLE"` or `"MODIFYING"`.
////
//// swagger:model OpenapiClusterItemStatusNodeMap
//type OpenapiClusterItemStatusNodeMap struct {
//
//	// TiDB node map.
//	// Example: [{"availability_zone":"us-west-2a","node_name":"tidb-0","node_size":"8C16G","ram_bytes":"17179869184","status":"NODE_STATUS_AVAILABLE","vcpu_num":8},{"availability_zone":"us-west-2b","node_name":"tidb-1","node_size":"8C16G","ram_bytes":"17179869184","status":"NODE_STATUS_AVAILABLE","vcpu_num":8}]
//	// Required: true
//	Tidb []*OpenapiClusterItemStatusNodeMapTidbItems0 `json:"tidb"`
//
//	// TiFlash node map.
//	// Example: [{"availability_zone":"us-west-2a","node_name":"tiflash-0","node_size":"8C64G","ram_bytes":"68719476736","status":"NODE_STATUS_AVAILABLE","storage_size_gib":1024,"vcpu_num":8},{"availability_zone":"us-west-2b","node_name":"tiflash-1","node_size":"8C64G","ram_bytes":"68719476736","status":"NODE_STATUS_AVAILABLE","storage_size_gib":1024,"vcpu_num":8}]
//	Tiflash []*OpenapiClusterItemStatusNodeMapTiflashItems0 `json:"tiflash"`
//
//	// TiKV node map.
//	// Example: [{"availability_zone":"us-west-2a","node_name":"tikv-0","node_size":"8C32G","ram_bytes":"68719476736","status":"NODE_STATUS_AVAILABLE","storage_size_gib":1024,"vcpu_num":8},{"availability_zone":"us-west-2b","node_name":"tikv-1","node_size":"8C64G","ram_bytes":"68719476736","status":"NODE_STATUS_AVAILABLE","storage_size_gib":1024,"vcpu_num":8},{"availability_zone":"us-west-2c","node_name":"tikv-2","node_size":"8C64G","ram_bytes":"68719476736","status":"NODE_STATUS_AVAILABLE","storage_size_gib":1024,"vcpu_num":8}]
//	// Required: true
//	Tikv []*OpenapiClusterItemStatusNodeMapTikvItems0 `json:"tikv"`
//}
//
//// Validate validates this openapi cluster item status node map
//func (m *OpenapiClusterItemStatusNodeMap) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateTidb(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateTiflash(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.validateTikv(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMap) validateTidb(formats strfmt.Registry) error {
//
//	if err := validate.Required("status"+"."+"node_map"+"."+"tidb", "body", m.Tidb); err != nil {
//		return err
//	}
//
//	for i := 0; i < len(m.Tidb); i++ {
//		if swag.IsZero(m.Tidb[i]) { // not required
//			continue
//		}
//
//		if m.Tidb[i] != nil {
//			if err := m.Tidb[i].Validate(formats); err != nil {
//				if ve, ok := err.(*errors.Validation); ok {
//					return ve.ValidateName("status" + "." + "node_map" + "." + "tidb" + "." + strconv.Itoa(i))
//				} else if ce, ok := err.(*errors.CompositeError); ok {
//					return ce.ValidateName("status" + "." + "node_map" + "." + "tidb" + "." + strconv.Itoa(i))
//				}
//				return err
//			}
//		}
//
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMap) validateTiflash(formats strfmt.Registry) error {
//	if swag.IsZero(m.Tiflash) { // not required
//		return nil
//	}
//
//	for i := 0; i < len(m.Tiflash); i++ {
//		if swag.IsZero(m.Tiflash[i]) { // not required
//			continue
//		}
//
//		if m.Tiflash[i] != nil {
//			if err := m.Tiflash[i].Validate(formats); err != nil {
//				if ve, ok := err.(*errors.Validation); ok {
//					return ve.ValidateName("status" + "." + "node_map" + "." + "tiflash" + "." + strconv.Itoa(i))
//				} else if ce, ok := err.(*errors.CompositeError); ok {
//					return ce.ValidateName("status" + "." + "node_map" + "." + "tiflash" + "." + strconv.Itoa(i))
//				}
//				return err
//			}
//		}
//
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMap) validateTikv(formats strfmt.Registry) error {
//
//	if err := validate.Required("status"+"."+"node_map"+"."+"tikv", "body", m.Tikv); err != nil {
//		return err
//	}
//
//	for i := 0; i < len(m.Tikv); i++ {
//		if swag.IsZero(m.Tikv[i]) { // not required
//			continue
//		}
//
//		if m.Tikv[i] != nil {
//			if err := m.Tikv[i].Validate(formats); err != nil {
//				if ve, ok := err.(*errors.Validation); ok {
//					return ve.ValidateName("status" + "." + "node_map" + "." + "tikv" + "." + strconv.Itoa(i))
//				} else if ce, ok := err.(*errors.CompositeError); ok {
//					return ce.ValidateName("status" + "." + "node_map" + "." + "tikv" + "." + strconv.Itoa(i))
//				}
//				return err
//			}
//		}
//
//	}
//
//	return nil
//}
//
//// ContextValidate validate this openapi cluster item status node map based on the context it is used
//func (m *OpenapiClusterItemStatusNodeMap) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.contextValidateTidb(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.contextValidateTiflash(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if err := m.contextValidateTikv(ctx, formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMap) contextValidateTidb(ctx context.Context, formats strfmt.Registry) error {
//
//	for i := 0; i < len(m.Tidb); i++ {
//
//		if m.Tidb[i] != nil {
//
//			if swag.IsZero(m.Tidb[i]) { // not required
//				return nil
//			}
//
//			if err := m.Tidb[i].ContextValidate(ctx, formats); err != nil {
//				if ve, ok := err.(*errors.Validation); ok {
//					return ve.ValidateName("status" + "." + "node_map" + "." + "tidb" + "." + strconv.Itoa(i))
//				} else if ce, ok := err.(*errors.CompositeError); ok {
//					return ce.ValidateName("status" + "." + "node_map" + "." + "tidb" + "." + strconv.Itoa(i))
//				}
//				return err
//			}
//		}
//
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMap) contextValidateTiflash(ctx context.Context, formats strfmt.Registry) error {
//
//	for i := 0; i < len(m.Tiflash); i++ {
//
//		if m.Tiflash[i] != nil {
//
//			if swag.IsZero(m.Tiflash[i]) { // not required
//				return nil
//			}
//
//			if err := m.Tiflash[i].ContextValidate(ctx, formats); err != nil {
//				if ve, ok := err.(*errors.Validation); ok {
//					return ve.ValidateName("status" + "." + "node_map" + "." + "tiflash" + "." + strconv.Itoa(i))
//				} else if ce, ok := err.(*errors.CompositeError); ok {
//					return ce.ValidateName("status" + "." + "node_map" + "." + "tiflash" + "." + strconv.Itoa(i))
//				}
//				return err
//			}
//		}
//
//	}
//
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMap) contextValidateTikv(ctx context.Context, formats strfmt.Registry) error {
//
//	for i := 0; i < len(m.Tikv); i++ {
//
//		if m.Tikv[i] != nil {
//
//			if swag.IsZero(m.Tikv[i]) { // not required
//				return nil
//			}
//
//			if err := m.Tikv[i].ContextValidate(ctx, formats); err != nil {
//				if ve, ok := err.(*errors.Validation); ok {
//					return ve.ValidateName("status" + "." + "node_map" + "." + "tikv" + "." + strconv.Itoa(i))
//				} else if ce, ok := err.(*errors.CompositeError); ok {
//					return ce.ValidateName("status" + "." + "node_map" + "." + "tikv" + "." + strconv.Itoa(i))
//				}
//				return err
//			}
//		}
//
//	}
//
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusNodeMap) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusNodeMap) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemStatusNodeMap
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemStatusNodeMapTidbItems0 openapi cluster item status node map tidb items0
////
//// swagger:model OpenapiClusterItemStatusNodeMapTidbItems0
//type OpenapiClusterItemStatusNodeMapTidbItems0 struct {
//
//	// The availability zone of a node in the cluster.
//	// Example: us-west-2a
//	AvailabilityZone string `json:"availability_zone,omitempty"`
//
//	// The name of a node in the cluster.
//	// Example: tidb-0
//	NodeName string `json:"node_name,omitempty"`
//
//	// The size of the TiDB component in the cluster.
//	// Example: 8C16G
//	NodeSize string `json:"node_size,omitempty"`
//
//	// The RAM size of a node in the cluster. If the `cluster_type` is `"DEVELOPER"`, `ram_bytes` is always 0.
//	// Example: 17179869184
//	RAMBytes string `json:"ram_bytes,omitempty"`
//
//	// The status of a node in the cluster.
//	// Example: NODE_STATUS_AVAILABLE
//	// Enum: [NODE_STATUS_AVAILABLE NODE_STATUS_UNAVAILABLE NODE_STATUS_CREATING NODE_STATUS_DELETING]
//	Status string `json:"status,omitempty"`
//
//	// The total vCPUs of a node in the cluster. If the `cluster_type` is `"DEVELOPER"`, `vcpu_num` is always 0.
//	// Example: 8
//	VcpuNum int32 `json:"vcpu_num,omitempty"`
//}
//
//// Validate validates this openapi cluster item status node map tidb items0
//func (m *OpenapiClusterItemStatusNodeMapTidbItems0) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateStatus(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//var openapiClusterItemStatusNodeMapTidbItems0TypeStatusPropEnum []interface{}
//
//func init() {
//	var res []string
//	if err := json.Unmarshal([]byte(`["NODE_STATUS_AVAILABLE","NODE_STATUS_UNAVAILABLE","NODE_STATUS_CREATING","NODE_STATUS_DELETING"]`), &res); err != nil {
//		panic(err)
//	}
//	for _, v := range res {
//		openapiClusterItemStatusNodeMapTidbItems0TypeStatusPropEnum = append(openapiClusterItemStatusNodeMapTidbItems0TypeStatusPropEnum, v)
//	}
//}
//
//const (
//
//	// OpenapiClusterItemStatusNodeMapTidbItems0StatusNODESTATUSAVAILABLE captures enum value "NODE_STATUS_AVAILABLE"
//	OpenapiClusterItemStatusNodeMapTidbItems0StatusNODESTATUSAVAILABLE string = "NODE_STATUS_AVAILABLE"
//
//	// OpenapiClusterItemStatusNodeMapTidbItems0StatusNODESTATUSUNAVAILABLE captures enum value "NODE_STATUS_UNAVAILABLE"
//	OpenapiClusterItemStatusNodeMapTidbItems0StatusNODESTATUSUNAVAILABLE string = "NODE_STATUS_UNAVAILABLE"
//
//	// OpenapiClusterItemStatusNodeMapTidbItems0StatusNODESTATUSCREATING captures enum value "NODE_STATUS_CREATING"
//	OpenapiClusterItemStatusNodeMapTidbItems0StatusNODESTATUSCREATING string = "NODE_STATUS_CREATING"
//
//	// OpenapiClusterItemStatusNodeMapTidbItems0StatusNODESTATUSDELETING captures enum value "NODE_STATUS_DELETING"
//	OpenapiClusterItemStatusNodeMapTidbItems0StatusNODESTATUSDELETING string = "NODE_STATUS_DELETING"
//)
//
//// prop value enum
//func (m *OpenapiClusterItemStatusNodeMapTidbItems0) validateStatusEnum(path, location string, value string) error {
//	if err := validate.EnumCase(path, location, value, openapiClusterItemStatusNodeMapTidbItems0TypeStatusPropEnum, true); err != nil {
//		return err
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMapTidbItems0) validateStatus(formats strfmt.Registry) error {
//	if swag.IsZero(m.Status) { // not required
//		return nil
//	}
//
//	// value enum
//	if err := m.validateStatusEnum("status", "body", m.Status); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validates this openapi cluster item status node map tidb items0 based on context it is used
//func (m *OpenapiClusterItemStatusNodeMapTidbItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusNodeMapTidbItems0) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusNodeMapTidbItems0) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemStatusNodeMapTidbItems0
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemStatusNodeMapTiflashItems0 openapi cluster item status node map tiflash items0
////
//// swagger:model OpenapiClusterItemStatusNodeMapTiflashItems0
//type OpenapiClusterItemStatusNodeMapTiflashItems0 struct {
//
//	// The availability zone of a node in the cluster.
//	// Example: us-west-2a
//	AvailabilityZone string `json:"availability_zone,omitempty"`
//
//	// The name of a node in the cluster.
//	// Example: tiflash-0
//	NodeName string `json:"node_name,omitempty"`
//
//	// The size of the TiFlash component in the cluster.
//	// Example: 8C64G
//	NodeSize string `json:"node_size,omitempty"`
//
//	// The RAM size of a node in the cluster. If the `cluster_type` is `"DEVELOPER"`, `ram_bytes` is always 0.
//	// Example: 68719476736
//	RAMBytes string `json:"ram_bytes,omitempty"`
//
//	// The status of a node in the cluster.
//	// Example: NODE_STATUS_AVAILABLE
//	// Enum: [NODE_STATUS_AVAILABLE NODE_STATUS_UNAVAILABLE NODE_STATUS_CREATING NODE_STATUS_DELETING]
//	Status string `json:"status,omitempty"`
//
//	// The storage size of a node in the cluster.
//	// Example: 1024
//	StorageSizeGib int32 `json:"storage_size_gib,omitempty"`
//
//	// The total vCPUs of a node in the cluster. If the `cluster_type` is `"DEVELOPER"`, `vcpu_num` is always 0.
//	// Example: 8
//	VcpuNum int32 `json:"vcpu_num,omitempty"`
//}
//
//// Validate validates this openapi cluster item status node map tiflash items0
//func (m *OpenapiClusterItemStatusNodeMapTiflashItems0) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateStatus(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//var openapiClusterItemStatusNodeMapTiflashItems0TypeStatusPropEnum []interface{}
//
//func init() {
//	var res []string
//	if err := json.Unmarshal([]byte(`["NODE_STATUS_AVAILABLE","NODE_STATUS_UNAVAILABLE","NODE_STATUS_CREATING","NODE_STATUS_DELETING"]`), &res); err != nil {
//		panic(err)
//	}
//	for _, v := range res {
//		openapiClusterItemStatusNodeMapTiflashItems0TypeStatusPropEnum = append(openapiClusterItemStatusNodeMapTiflashItems0TypeStatusPropEnum, v)
//	}
//}
//
//const (
//
//	// OpenapiClusterItemStatusNodeMapTiflashItems0StatusNODESTATUSAVAILABLE captures enum value "NODE_STATUS_AVAILABLE"
//	OpenapiClusterItemStatusNodeMapTiflashItems0StatusNODESTATUSAVAILABLE string = "NODE_STATUS_AVAILABLE"
//
//	// OpenapiClusterItemStatusNodeMapTiflashItems0StatusNODESTATUSUNAVAILABLE captures enum value "NODE_STATUS_UNAVAILABLE"
//	OpenapiClusterItemStatusNodeMapTiflashItems0StatusNODESTATUSUNAVAILABLE string = "NODE_STATUS_UNAVAILABLE"
//
//	// OpenapiClusterItemStatusNodeMapTiflashItems0StatusNODESTATUSCREATING captures enum value "NODE_STATUS_CREATING"
//	OpenapiClusterItemStatusNodeMapTiflashItems0StatusNODESTATUSCREATING string = "NODE_STATUS_CREATING"
//
//	// OpenapiClusterItemStatusNodeMapTiflashItems0StatusNODESTATUSDELETING captures enum value "NODE_STATUS_DELETING"
//	OpenapiClusterItemStatusNodeMapTiflashItems0StatusNODESTATUSDELETING string = "NODE_STATUS_DELETING"
//)
//
//// prop value enum
//func (m *OpenapiClusterItemStatusNodeMapTiflashItems0) validateStatusEnum(path, location string, value string) error {
//	if err := validate.EnumCase(path, location, value, openapiClusterItemStatusNodeMapTiflashItems0TypeStatusPropEnum, true); err != nil {
//		return err
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMapTiflashItems0) validateStatus(formats strfmt.Registry) error {
//	if swag.IsZero(m.Status) { // not required
//		return nil
//	}
//
//	// value enum
//	if err := m.validateStatusEnum("status", "body", m.Status); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validates this openapi cluster item status node map tiflash items0 based on context it is used
//func (m *OpenapiClusterItemStatusNodeMapTiflashItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusNodeMapTiflashItems0) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusNodeMapTiflashItems0) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemStatusNodeMapTiflashItems0
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
//
//// OpenapiClusterItemStatusNodeMapTikvItems0 openapi cluster item status node map tikv items0
////
//// swagger:model OpenapiClusterItemStatusNodeMapTikvItems0
//type OpenapiClusterItemStatusNodeMapTikvItems0 struct {
//
//	// The availability zone of a node in the cluster.
//	// Example: us-west-2a
//	AvailabilityZone string `json:"availability_zone,omitempty"`
//
//	// The name of a node in the cluster.
//	// Example: tikv-0
//	NodeName string `json:"node_name,omitempty"`
//
//	// The size of the TiKV component in the cluster.
//	// Example: 8C32G
//	NodeSize string `json:"node_size,omitempty"`
//
//	// The RAM size of a node in the cluster. If the `cluster_type` is `"DEVELOPER"`, `ram_bytes` is always 0.
//	// Example: 68719476736
//	RAMBytes string `json:"ram_bytes,omitempty"`
//
//	// The status of a node in the cluster.
//	// Example: NODE_STATUS_AVAILABLE
//	// Enum: [NODE_STATUS_AVAILABLE NODE_STATUS_UNAVAILABLE NODE_STATUS_CREATING NODE_STATUS_DELETING]
//	Status string `json:"status,omitempty"`
//
//	// The storage size of a node in the cluster.
//	// Example: 1024
//	StorageSizeGib int32 `json:"storage_size_gib,omitempty"`
//
//	// The total vCPUs of a node in the cluster. If the `cluster_type` is `"DEVELOPER"`, `vcpu_num` is always 0.
//	// Example: 8
//	VcpuNum int32 `json:"vcpu_num,omitempty"`
//}
//
//// Validate validates this openapi cluster item status node map tikv items0
//func (m *OpenapiClusterItemStatusNodeMapTikvItems0) Validate(formats strfmt.Registry) error {
//	var res []error
//
//	if err := m.validateStatus(formats); err != nil {
//		res = append(res, err)
//	}
//
//	if len(res) > 0 {
//		return errors.CompositeValidationError(res...)
//	}
//	return nil
//}
//
//var openapiClusterItemStatusNodeMapTikvItems0TypeStatusPropEnum []interface{}
//
//func init() {
//	var res []string
//	if err := json.Unmarshal([]byte(`["NODE_STATUS_AVAILABLE","NODE_STATUS_UNAVAILABLE","NODE_STATUS_CREATING","NODE_STATUS_DELETING"]`), &res); err != nil {
//		panic(err)
//	}
//	for _, v := range res {
//		openapiClusterItemStatusNodeMapTikvItems0TypeStatusPropEnum = append(openapiClusterItemStatusNodeMapTikvItems0TypeStatusPropEnum, v)
//	}
//}
//
//const (
//
//	// OpenapiClusterItemStatusNodeMapTikvItems0StatusNODESTATUSAVAILABLE captures enum value "NODE_STATUS_AVAILABLE"
//	OpenapiClusterItemStatusNodeMapTikvItems0StatusNODESTATUSAVAILABLE string = "NODE_STATUS_AVAILABLE"
//
//	// OpenapiClusterItemStatusNodeMapTikvItems0StatusNODESTATUSUNAVAILABLE captures enum value "NODE_STATUS_UNAVAILABLE"
//	OpenapiClusterItemStatusNodeMapTikvItems0StatusNODESTATUSUNAVAILABLE string = "NODE_STATUS_UNAVAILABLE"
//
//	// OpenapiClusterItemStatusNodeMapTikvItems0StatusNODESTATUSCREATING captures enum value "NODE_STATUS_CREATING"
//	OpenapiClusterItemStatusNodeMapTikvItems0StatusNODESTATUSCREATING string = "NODE_STATUS_CREATING"
//
//	// OpenapiClusterItemStatusNodeMapTikvItems0StatusNODESTATUSDELETING captures enum value "NODE_STATUS_DELETING"
//	OpenapiClusterItemStatusNodeMapTikvItems0StatusNODESTATUSDELETING string = "NODE_STATUS_DELETING"
//)
//
//// prop value enum
//func (m *OpenapiClusterItemStatusNodeMapTikvItems0) validateStatusEnum(path, location string, value string) error {
//	if err := validate.EnumCase(path, location, value, openapiClusterItemStatusNodeMapTikvItems0TypeStatusPropEnum, true); err != nil {
//		return err
//	}
//	return nil
//}
//
//func (m *OpenapiClusterItemStatusNodeMapTikvItems0) validateStatus(formats strfmt.Registry) error {
//	if swag.IsZero(m.Status) { // not required
//		return nil
//	}
//
//	// value enum
//	if err := m.validateStatusEnum("status", "body", m.Status); err != nil {
//		return err
//	}
//
//	return nil
//}
//
//// ContextValidate validates this openapi cluster item status node map tikv items0 based on context it is used
//func (m *OpenapiClusterItemStatusNodeMapTikvItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
//	return nil
//}
//
//// MarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusNodeMapTikvItems0) MarshalBinary() ([]byte, error) {
//	if m == nil {
//		return nil, nil
//	}
//	return swag.WriteJSON(m)
//}
//
//// UnmarshalBinary interface implementation
//func (m *OpenapiClusterItemStatusNodeMapTikvItems0) UnmarshalBinary(b []byte) error {
//	var res OpenapiClusterItemStatusNodeMapTikvItems0
//	if err := swag.ReadJSON(b, &res); err != nil {
//		return err
//	}
//	*m = res
//	return nil
//}
