package cluster

import "github.com/tidbcloud/devops/api"

type ApplyHeterogeneousDeployRequest struct {
	ComponentType           ComponentType `json:"component_type" binding:"required"`
	CurrentInstanceType     string        `json:"current_instance_type"`
	AlternativeInstanceType string        `json:"alternative_instance_type"`
	TiDBGroupID             string        `json:"tidb_group_id"`

	Reason string `json:"reason"`
}

type ApplyHeterogeneousDeployResponse struct {
	api.BaseResp `json:",inline"`

	InstanceID uint64 `json:"instance_id"`
}

type DeleteHeterogeneousDeployRequest struct {
	ComponentType ComponentType `json:"component_type" binding:"required"`
	TiDBGroupID   string        `json:"tidb_group_id"`

	Reason string `json:"reason"`
}

type DeleteHeterogeneousDeployResponse struct {
	api.BaseResp `json:",inline"`

	InstanceID uint64 `json:"instance_id"`
}

type GetHeterogeneousDeployRequest struct {
	ComponentType ComponentType `form:"component_type" binding:"required"`
	TiDBGroupID   string        `form:"tidb_group_id"`
}

type HeterogeneousDeploy struct {
	Enabled                 bool                          `json:"enabled"`
	ComponentType           ComponentType                 `json:"component_type"`
	CurrentInstanceType     string                        `json:"current_instance_type"`
	AlternativeInstanceType string                        `json:"alternative_instance_type"`
	TiDBGroupID             string                        `json:"tidb_group_id"`
	Status                  string                        `json:"status"`
	PodCounts               []HeterogeneousDeployPodCount `json:"pod_counts"`
}

type HeterogeneousDeployPodCount struct {
	MachineType string `json:"machine_type"`
	PodCount    int32  `json:"pod_count"`
}

type GetHeterogeneousDeployResponse struct {
	api.BaseResp `json:",inline"`

	Deploy *HeterogeneousDeploy `json:"deploy"`
}
