package deployment

import (
	"k8s.io/api/apps/v1"
)

type GetDeploymentListRequestDto struct {
	NameSpace string `json:"nameSpace"` // 命名空间
	PageIndex int    `json:"pageIndex"`
	PageSize  int    `json:"pageSize"`
}

type GetDeploymentListResultDataResponseDto struct {
	DeploymentName string            `json:"deploymentName"` // 名称
	ContainerGroup string            `json:"containerGroup"` // 容器组
	CreatedTime    string            `json:"createdTime"`    // 已创建时间
	Images         []ContainerImage  `json:"images"`         // 镜像
	Labels         map[string]string `json:"labels"`         //标签
	ReplicasNum    int32             `json:"replicasNum"`    // 副本数量
}

type ContainerImage struct {
	ImageKey      string `json:"imageKey"`      // 镜像键
	ImageValue    string `json:"imageValue"`    // 镜像值
	ImageFullName string `json:"imageFullName"` // 镜像全名
}

type DeploymentRequestDto struct {
	NameSpace      string `json:"nameSpace"`      // 命名空间
	DeploymentName string `json:"deploymentName"` // 部署名称
}

type ScaleDeploymentRequestDto struct {
	NameSpace      string `json:"nameSpace"`      // 命名空间
	DeploymentName string `json:"deploymentName"` // 部署名称
	ReplicasNum    int    `json:"replicasNum"`    // 副本数量
}

type GetDeploymentInfoResultDataResponseDto struct {
	DeploymentName string            `json:"deploymentName"` // 名称
	NameSpace      string            `json:"nameSpace"`      // 命名空间
	CreationTime   string            `json:"creationTime"`   // 创建时间
	Labels         map[string]string `json:"labels"`         // 标签
	Annotations    map[string]string `json:"annotations"`    // 注解
	Selector       map[string]string `json:"selector"`       // 选择器
	StrategyType   string            `json:"strategyType"`   // 策略
	ReplicasNum    int32             `json:"replicasNum"`    // 副本数量
	Version        string            `json:"version"`        // 版本
	State          int               `json:"state"`          // 状态
	Desired        int32             `json:"desired"`        // 期望数量
	Updated        int32             `json:"updated"`        // 已更新
	Total          int32             `json:"total"`          // 总共
	Available      int32             `json:"available"`      // 正常
	Unavailable    int32             `json:"unavailable"`    // 无效
}

type GetDeploymentDetailsTemplateRequestDto struct {
	NameSpace      string `json:"nameSpace"`      // 命名空间
	DeploymentName string `json:"deploymentName"` // 部署名称
	PageIndex      int    `json:"pageIndex"`
	PageSize       int    `json:"pageSize"`
}

type GetDeploymentDetailsTemplateResponseDto struct {
	Status         int                 `json:"status"`
	TemplateLabels map[string]string   `json:"templateLabels"` // 模板标签
	Pods           []Pod               `json:"pods"`           // 容器组
	PageInfo       PageInfoResponseDto `json:"pageInfo"`
}

// 分页返回参数
type PageInfoResponseDto struct {
	TotalRecords int `json:"totalRecords"`
	TotalPages   int `json:"totalPages"`
}

type Pod struct {
	ContainerName  string            `json:"containerName"`  // 容器名称
	ContainerImage map[string]string `json:"containerImage"` // 容器镜像
	ContainerPort  []string          `json:"containerPort"`  // 容器端口
}

type DeploymentValidRequestDto struct {
	NameSpace   string `json:"nameSpace"`   // 命名空间
	OperateType string `json:"operateType"` // 操作类型 更新、新增
	v1.Deployment
}

type DeploymentCreateRequestDto struct {
	NameSpace string `json:"nameSpace"` // 命名空间
	v1.Deployment
}

type DeploymentEditRequestDto struct {
	NameSpace      string `json:"nameSpace"`      // 命名空间
	DeploymentName string `json:"deploymentName"` // 部署名称
	v1.Deployment
}
