package node

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

type GetNodeListResultDataResponseDto struct {
	NodeName          string `json:"nodeName"`          // 节点名称
	NodeRole          string `json:"nodeRole"`          // 节点角色
	NodeState         string `json:"nodeState"`         // 节点状态
	NodeRuntime       string `json:"nodeRuntime"`       // 节点运行时间
	NodeVersion       string `json:"nodeVersion"`       // 节点版本
	NodeUnschedulable bool   `json:"nodeUnschedulable"` // 节点禁止调度
}

type GetNodeDetailsRequestDto struct {
	NodeName string `json:"nodeName"` // 节点名称
}

type GetNodeDetailsResponseDto struct {
	Status      int               `json:"status"`      //状态码
	NodeDetails Details           `json:"nodeDetails"` //节点详情
	SysInfo     SystemInformation `json:"sysInfo"`     //系统信息
	Recently    []Condition       `json:"recently"`    //最近情况
}

type GetCpuAndRamRateDataResponseDto struct {
	Status int      `json:"status"` //状态码
	Cpu    []CpuRam `json:"cpu"`    //CPU使用率
	Ram    []CpuRam `json:"ram"`    //内存使用率
}

type CpuRam struct {
	Time string `json:"time"` // 时间点
	Rate string `json:"rate"` // 比率
}

type Details struct {
	NodeName      string            `json:"nodeName"`      //名称
	CreateTime    string            `json:"createTime"`    //创建时间
	Annotations   map[string]string `json:"annotations"`   //注解
	Taints        string            `json:"taints"`        //污点
	Unschedulable bool              `json:"unschedulable"` //禁止调度
	Addresses     string            `json:"addresses"`     //地址
	Labels        map[string]string `json:"labels"`        //标签
}

type SystemInformation struct {
	MachineID               string `json:"machineId"`               //机器ID
	SystemUUID              string `json:"systemUuid"`              //系统UUID
	BootID                  string `json:"bootId"`                  //启动ID
	KernelVersion           string `json:"kernelVersion"`           //内核版本
	OsImage                 string `json:"osImage"`                 //系统镜像
	OperatingSystem         string `json:"operatingSystem"`         //操作系统
	Architecture            string `json:"architecture"`            //架构
	ContainerRuntimeVersion string `json:"containerRuntimeVersion"` //容器运行时版本
	KubeletVersion          string `json:"kubeletVersion"`          //Kubelet版本
}

type Condition struct {
	Type               string `json:"type"`               //类型
	Status             string `json:"status"`             //状态
	LastHeartbeatTime  string `json:"lastHeartbeatTime"`  //最近心跳
	LastTransitionTime string `json:"lastTransitionTime"` //最近更改
	Reason             string `json:"reason"`             //原因
	Message            string `json:"message"`            //消息
}

type NodeDetailsOperationRequestDto struct {
	NodeName      string `json:"nodeName"`      // 节点名称
	Unschedulable bool   `json:"unschedulable"` // 不可调度
	OperationType string `json:"operationType"` // 操作类型
	LabelKey      string `json:"labelKey"`      // 标签键
	LabelValue    string `json:"labelValue"`    // 标签值
	OldLabelKey   string `json:"oldLabelKey"`   // 修改前的标签键
	OldLabelValue string `json:"oldLabelValue"` // 修改前的标签值
}

type RateResult struct {
	Status    string `json:"status"`
	ErrorType string `json:"errorType"`
	Error     string `json:"error"`
	Data      Data   `json:"data"`
}

type Metric struct {
}

type Result struct {
	Metric Metric          `json:"metric"`
	Values [][]interface{} `json:"values"`
}

type Data struct {
	ResultType string   `json:"resultType"`
	Result     []Result `json:"result"`
}
