update
This commit is contained in:
1 parent
0690285147
commit
5618cd2738
154 files changed
+5021
-3161
No files matched your search
@@ -246,30 +246,45 @@ func (h *KubernetesHandler) DeleteCronJobNS(c *gin.Context) {
|
||||
}
|
||||
func (h *KubernetesHandler) listHPAsWithNS(c *gin.Context, ns string) {
|
||||
clusterID, _ := strconv.Atoi(c.Param("id"))
|
||||
if clusterID == 0 { clusterID = h.resolveClusterCode(c.Param("clusterCode")) }
|
||||
if clusterID == 0 {
|
||||
clusterID = h.resolveClusterCode(c.Param("clusterCode"))
|
||||
}
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
hpas, err := client.ListHPAs()
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: "K8s API error: " + err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "K8s API error: " + err.Error()})
|
||||
return
|
||||
}
|
||||
type HPASummary struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Name string `json:"name"`
|
||||
TargetKind string `json:"target_kind"`
|
||||
TargetName string `json:"target_name"`
|
||||
MinReplicas int `json:"min_replicas"`
|
||||
MaxReplicas int `json:"max_replicas"`
|
||||
CPUPercent int `json:"cpu_percent"`
|
||||
MemPercent int `json:"mem_percent"`
|
||||
Namespace string `json:"namespace"`
|
||||
Name string `json:"name"`
|
||||
TargetKind string `json:"target_kind"`
|
||||
TargetName string `json:"target_name"`
|
||||
MinReplicas int `json:"min_replicas"`
|
||||
MaxReplicas int `json:"max_replicas"`
|
||||
CPUPercent int `json:"cpu_percent"`
|
||||
MemPercent int `json:"mem_percent"`
|
||||
CurrentReplicas int `json:"current_replicas"`
|
||||
}
|
||||
result := []HPASummary{}
|
||||
for _, h := range hpas.Items {
|
||||
if h.Metadata.Namespace != ns { continue }
|
||||
cpu := 0; mem := 0
|
||||
if h.Metadata.Namespace != ns {
|
||||
continue
|
||||
}
|
||||
cpu := 0
|
||||
mem := 0
|
||||
for _, m := range h.Spec.Metrics {
|
||||
if m.Resource != nil {
|
||||
if m.Resource.Name == "cpu" { cpu = m.Resource.Target.AverageUtilization }
|
||||
if m.Resource.Name == "memory" { mem = m.Resource.Target.AverageUtilization }
|
||||
if m.Resource.Name == "cpu" {
|
||||
cpu = m.Resource.Target.AverageUtilization
|
||||
}
|
||||
if m.Resource.Name == "memory" {
|
||||
mem = m.Resource.Target.AverageUtilization
|
||||
}
|
||||
}
|
||||
}
|
||||
result = append(result, HPASummary{
|
||||
@@ -288,80 +303,165 @@ func (h *KubernetesHandler) listHPAsWithNS(c *gin.Context, ns string) {
|
||||
}
|
||||
func (h *KubernetesHandler) createHPAWithNS(c *gin.Context, ns string) {
|
||||
clusterID, _ := strconv.Atoi(c.Param("id"))
|
||||
if clusterID == 0 { clusterID = h.resolveClusterCode(c.Param("clusterCode")) }
|
||||
if clusterID == 0 {
|
||||
clusterID = h.resolveClusterCode(c.Param("clusterCode"))
|
||||
}
|
||||
var req k8sclient.CreateHPARequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, model.Response{Code: 400, Message: "参数错误"}); return }
|
||||
if req.Namespace == "" { req.Namespace = ns }
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(400, model.Response{Code: 400, Message: "参数错误"})
|
||||
return
|
||||
}
|
||||
if req.Namespace == "" {
|
||||
req.Namespace = ns
|
||||
}
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
hpa, err := client.CreateHPA(req)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: "创建失败: " + err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "创建失败: " + err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(200, model.Response{Code: 200, Data: hpa})
|
||||
}
|
||||
func (h *KubernetesHandler) deleteHPAWithNS(c *gin.Context, ns string) {
|
||||
clusterID, _ := strconv.Atoi(c.Param("id"))
|
||||
if clusterID == 0 { clusterID = h.resolveClusterCode(c.Param("clusterCode")) }
|
||||
if clusterID == 0 {
|
||||
clusterID = h.resolveClusterCode(c.Param("clusterCode"))
|
||||
}
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err := client.DeleteHPA(ns, c.Param("name")); err != nil { c.JSON(500, model.Response{Code: 500, Message: "删除失败: " + err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
if err := client.DeleteHPA(ns, c.Param("name")); err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "删除失败: " + err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(200, model.Response{Code: 200, Message: "已删除"})
|
||||
}
|
||||
func (h *KubernetesHandler) listCronJobsWithNS(c *gin.Context, ns string) {
|
||||
clusterID, _ := strconv.Atoi(c.Param("id"))
|
||||
if clusterID == 0 { clusterID = h.resolveClusterCode(c.Param("clusterCode")) }
|
||||
if clusterID == 0 {
|
||||
clusterID = h.resolveClusterCode(c.Param("clusterCode"))
|
||||
}
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
cjs, err := client.ListCronJobs()
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: "K8s API error: " + err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "K8s API error: " + err.Error()})
|
||||
return
|
||||
}
|
||||
filtered := []k8sclient.CronJobItem{}
|
||||
for _, cj := range cjs.Items { if cj.Metadata.Namespace == ns { filtered = append(filtered, cj) } }
|
||||
for _, cj := range cjs.Items {
|
||||
if cj.Metadata.Namespace == ns {
|
||||
filtered = append(filtered, cj)
|
||||
}
|
||||
}
|
||||
c.JSON(200, model.Response{Code: 200, Data: filtered})
|
||||
}
|
||||
func (h *KubernetesHandler) createCronJobWithNS(c *gin.Context, ns string) {
|
||||
clusterID, _ := strconv.Atoi(c.Param("id"))
|
||||
if clusterID == 0 { clusterID = h.resolveClusterCode(c.Param("clusterCode")) }
|
||||
if clusterID == 0 {
|
||||
clusterID = h.resolveClusterCode(c.Param("clusterCode"))
|
||||
}
|
||||
var req k8sclient.CreateCronJobRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, model.Response{Code: 400, Message: "参数错误"}); return }
|
||||
if req.Namespace == "" { req.Namespace = ns }
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(400, model.Response{Code: 400, Message: "参数错误"})
|
||||
return
|
||||
}
|
||||
if req.Namespace == "" {
|
||||
req.Namespace = ns
|
||||
}
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
cj, err := client.CreateCronJob(req)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: "创建失败: " + err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "创建失败: " + err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(200, model.Response{Code: 200, Data: cj})
|
||||
}
|
||||
func (h *KubernetesHandler) suspendCronJobWithNS(c *gin.Context, ns string) {
|
||||
clusterID, _ := strconv.Atoi(c.Param("id"))
|
||||
if clusterID == 0 { clusterID = h.resolveClusterCode(c.Param("clusterCode")) }
|
||||
var req struct { Suspend bool `json:"suspend"` }; c.ShouldBindJSON(&req)
|
||||
if clusterID == 0 {
|
||||
clusterID = h.resolveClusterCode(c.Param("clusterCode"))
|
||||
}
|
||||
var req struct {
|
||||
Suspend bool `json:"suspend"`
|
||||
}
|
||||
c.ShouldBindJSON(&req)
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err := client.SuspendCronJob(ns, c.Param("name"), req.Suspend); err != nil { c.JSON(500, model.Response{Code: 500, Message: "操作失败: " + err.Error()}); return }
|
||||
action := "恢复"; if req.Suspend { action = "暂停" }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
if err := client.SuspendCronJob(ns, c.Param("name"), req.Suspend); err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "操作失败: " + err.Error()})
|
||||
return
|
||||
}
|
||||
action := "恢复"
|
||||
if req.Suspend {
|
||||
action = "暂停"
|
||||
}
|
||||
c.JSON(200, model.Response{Code: 200, Message: "CronJob 已" + action})
|
||||
}
|
||||
func (h *KubernetesHandler) triggerCronJobWithNS(c *gin.Context, ns string) {
|
||||
clusterID, _ := strconv.Atoi(c.Param("id"))
|
||||
if clusterID == 0 { clusterID = h.resolveClusterCode(c.Param("clusterCode")) }
|
||||
if clusterID == 0 {
|
||||
clusterID = h.resolveClusterCode(c.Param("clusterCode"))
|
||||
}
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err := client.TriggerCronJob(ns, c.Param("name")); err != nil { c.JSON(500, model.Response{Code: 500, Message: "触发失败: " + err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
if err := client.TriggerCronJob(ns, c.Param("name")); err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "触发失败: " + err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(200, model.Response{Code: 200, Message: "手动触发成功"})
|
||||
}
|
||||
func (h *KubernetesHandler) deleteCronJobWithNS(c *gin.Context, ns string) {
|
||||
clusterID, _ := strconv.Atoi(c.Param("id"))
|
||||
if clusterID == 0 { clusterID = h.resolveClusterCode(c.Param("clusterCode")) }
|
||||
if clusterID == 0 {
|
||||
clusterID = h.resolveClusterCode(c.Param("clusterCode"))
|
||||
}
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err := client.DeleteCronJob(ns, c.Param("name")); err != nil { c.JSON(500, model.Response{Code: 500, Message: "删除失败: " + err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
if err := client.DeleteCronJob(ns, c.Param("name")); err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "删除失败: " + err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(200, model.Response{Code: 200, Message: "已删除"})
|
||||
}
|
||||
func (h *KubernetesHandler) ListHPAsAllNS(c *gin.Context) {
|
||||
clusterID := h.resolveClusterCode(c.Param("clusterCode"))
|
||||
if clusterID == 0 { c.JSON(500, model.Response{Code: 500, Message: "cluster not found"}); return }
|
||||
if clusterID == 0 {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "cluster not found"})
|
||||
return
|
||||
}
|
||||
client, _, err := h.getK8sClient(clusterID)
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: err.Error()})
|
||||
return
|
||||
}
|
||||
hpas, err := client.ListHPAs()
|
||||
if err != nil { c.JSON(500, model.Response{Code: 500, Message: "K8s API error: " + err.Error()}); return }
|
||||
if err != nil {
|
||||
c.JSON(500, model.Response{Code: 500, Message: "K8s API error: " + err.Error()})
|
||||
return
|
||||
}
|
||||
type HPASummary struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Name string `json:"name"`
|
||||
@@ -375,11 +475,16 @@ func (h *KubernetesHandler) ListHPAsAllNS(c *gin.Context) {
|
||||
}
|
||||
result := []HPASummary{}
|
||||
for _, h := range hpas.Items {
|
||||
cpu := 0; mem := 0
|
||||
cpu := 0
|
||||
mem := 0
|
||||
for _, m := range h.Spec.Metrics {
|
||||
if m.Resource != nil {
|
||||
if m.Resource.Name == "cpu" { cpu = m.Resource.Target.AverageUtilization }
|
||||
if m.Resource.Name == "memory" { mem = m.Resource.Target.AverageUtilization }
|
||||
if m.Resource.Name == "cpu" {
|
||||
cpu = m.Resource.Target.AverageUtilization
|
||||
}
|
||||
if m.Resource.Name == "memory" {
|
||||
mem = m.Resource.Target.AverageUtilization
|
||||
}
|
||||
}
|
||||
}
|
||||
result = append(result, HPASummary{
|
||||
|
||||
Reference in new issue
Block a user