DKube v1.0
This commit is contained in:
130
controller/configmap.go
Normal file
130
controller/configmap.go
Normal file
@ -0,0 +1,130 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var ConfigMap configMap
|
||||
|
||||
type configMap struct{}
|
||||
|
||||
func (c *configMap) GetConfigMaps(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.ConfigMap.GetConfigMaps(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取ConfigMap列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (c *configMap) GetConfigMapDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
ConfigMapName string `form:"configmap_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.ConfigMap.GetConfigMapDetail(params.ConfigMapName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取ConfigMap详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (c *configMap) DeleteConfigMap(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
ConfigMapName string `json:"configmap_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.ConfigMap.DeleteConfigMap(params.ConfigMapName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除ConfigMap成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (c *configMap) UpdateConfigMap(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Content string `json:"content"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.ConfigMap.UpdateConfigMap(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "更新ConfigMap成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
130
controller/daemonset.go
Normal file
130
controller/daemonset.go
Normal file
@ -0,0 +1,130 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var DaemonSet daemonSet
|
||||
|
||||
type daemonSet struct{}
|
||||
|
||||
func (d *daemonSet) GetDaemonSets(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.DaemonSet.GetDaemonSets(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取DaemonSet列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *daemonSet) GetDaemonSetDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
DaemonSetName string `form:"daemonset_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.DaemonSet.GetDaemonSetDetail(params.DaemonSetName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取DaemonSet详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *daemonSet) DeleteDaemonSet(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
DaemonSetName string `json:"daemonset_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.DaemonSet.DeleteDaemonSet(params.DaemonSetName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除DaemonSet成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *daemonSet) UpdateDaemonSet(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Content string `json:"content"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.DaemonSet.UpdateDaemonSet(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "更新DaemonSet成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
232
controller/deployment.go
Normal file
232
controller/deployment.go
Normal file
@ -0,0 +1,232 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Deployment deployment
|
||||
|
||||
type deployment struct{}
|
||||
|
||||
func (d *deployment) GetDeployments(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Deployment.GetDeployments(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Deployment列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *deployment) GetDeploymentDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
DeploymentName string `form:"deployment_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
data, err := service.Deployment.GetDeploymentDetail(params.DeploymentName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Deployment详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *deployment) CreateDeployment(ctx *gin.Context) {
|
||||
var (
|
||||
deployCreate = new(service.DeployCreate)
|
||||
err error
|
||||
)
|
||||
|
||||
if err = ctx.ShouldBindJSON(deployCreate); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if err = service.Deployment.CreateDeployment(deployCreate); err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "创建Deployment成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *deployment) ScaleDeployment(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
DeploymentName string `json:"deployment_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
ScaleNum int `json:"scale_num"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Deployment.ScaleDeployment(params.DeploymentName, params.Namespace, params.ScaleNum)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "设置Deployment副本数成功",
|
||||
"data": fmt.Sprintf("最新副本数: %d", data),
|
||||
})
|
||||
}
|
||||
|
||||
func (d *deployment) DeleteDeployment(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
DeploymentName string `json:"deployment_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Deployment.DeleteDeployment(params.DeploymentName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Deployment成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *deployment) RestartDeployment(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
DeploymentName string `json:"deployment_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Deployment.RestartDeployment(params.DeploymentName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "重启Deployment成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *deployment) UpdateDeployment(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Content string `json:"content"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Deployment.UpdateDeployment(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "更新Deployment成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *deployment) GetDeployNumPerNp(ctx *gin.Context) {
|
||||
data, err := service.Deployment.GetDeployNumPerNp()
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取每个namespace的deployment数量成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
159
controller/ingress.go
Normal file
159
controller/ingress.go
Normal file
@ -0,0 +1,159 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Ingress ingress
|
||||
|
||||
type ingress struct{}
|
||||
|
||||
func (i *ingress) GetIngresses(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Ingress.GetIngresses(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Ingresst列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (i *ingress) GetIngressDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
IngressName string `form:"ingress_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Ingress.GetIngresstDetail(params.IngressName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Ingress详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (i *ingress) DeleteIngress(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
IngressName string `json:"ingress_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Ingress.DeleteIngress(params.IngressName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Ingress成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (i *ingress) CreateIngress(ctx *gin.Context) {
|
||||
var (
|
||||
ingressCreate = new(service.IngressCreate)
|
||||
err error
|
||||
)
|
||||
|
||||
if err = ctx.ShouldBindJSON(ingressCreate); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if err = service.Ingress.CreateIngress(ingressCreate); err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "创建Ingress成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (i *ingress) UpdateIngress(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Content string `json:"content"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Ingress.UpdateIngress(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "更新Ingress成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
41
controller/login.go
Normal file
41
controller/login.go
Normal file
@ -0,0 +1,41 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Login login
|
||||
|
||||
type login struct{}
|
||||
|
||||
func (l *login) Auth(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
UserName string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
})
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Login.Auth(params.UserName, params.Password)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "登录成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
98
controller/namespace.go
Normal file
98
controller/namespace.go
Normal file
@ -0,0 +1,98 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Namespace namespace
|
||||
|
||||
type namespace struct{}
|
||||
|
||||
func (n *namespace) GetNamespaces(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Namespace.GetNamespaces(params.FilterName, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Namespace列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (n *namespace) GetNamespaceDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
NamespaceName string `form:"namespace_name"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Namespace.GetNamespaceDetail(params.NamespaceName)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Namespace详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (n *namespace) DeleteNamespace(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
NamespaceName string `json:"namespace_name"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Namespace.DeleteNamespace(params.NamespaceName)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Namespace成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
70
controller/node.go
Normal file
70
controller/node.go
Normal file
@ -0,0 +1,70 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Node node
|
||||
|
||||
type node struct{}
|
||||
|
||||
func (n *node) GetNodes(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Node.GetNodes(params.FilterName, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Node列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (n *node) GetNodeDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
NodeName string `form:"node_name"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Node.GetNodeDetail(params.NodeName)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Node详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
@ -11,7 +11,6 @@ var Pod pod
|
||||
|
||||
type pod struct{}
|
||||
|
||||
// GetPods 获取Pod列表,支持分页、过滤、排序
|
||||
func (p *pod) GetPods(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
@ -19,15 +18,15 @@ func (p *pod) GetPods(ctx *gin.Context) {
|
||||
Limit int `form:"limit"`
|
||||
Page int `form:"page"`
|
||||
})
|
||||
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind绑定参数失败" + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": "Bind参数绑定失败" + err.Error(),
|
||||
"msg": "Bind绑定参数失败" + err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Pod.GetPods(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
@ -36,27 +35,27 @@ func (p *pod) GetPods(ctx *gin.Context) {
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Pod列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
//获取Pod详情
|
||||
func (p *pod) GetPodDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
PodName string `form:"pod_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind绑定参数失败" + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": "Bind参数绑定失败" + err.Error(),
|
||||
"msg": "Bind绑定参数失败" + err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Pod.GetPodDetail(params.PodName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
@ -65,13 +64,13 @@ func (p *pod) GetPodDetail(ctx *gin.Context) {
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Pod列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
//删除Pod
|
||||
func (p *pod) DeletePod(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
PodName string `json:"pod_name"`
|
||||
@ -81,12 +80,11 @@ func (p *pod) DeletePod(ctx *gin.Context) {
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind绑定参数失败" + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": "Bind参数绑定失败" + err.Error(),
|
||||
"msg": "Bind绑定参数失败" + err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Pod.DeletePod(params.PodName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
@ -95,13 +93,13 @@ func (p *pod) DeletePod(ctx *gin.Context) {
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Pod成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
//更新Pod
|
||||
func (p *pod) UpdatePod(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
@ -109,14 +107,13 @@ func (p *pod) UpdatePod(ctx *gin.Context) {
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind绑定参数失败" + err.Error())
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": "Bind参数绑定失败" + err.Error(),
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Pod.UpdatePod(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
@ -131,21 +128,20 @@ func (p *pod) UpdatePod(ctx *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
//获取Pod容器
|
||||
func (p *pod) GetPodContainer(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
PodName string `form:"pod_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败" + err.Error())
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Pod.GetPodContainer(params.PodName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
@ -160,22 +156,21 @@ func (p *pod) GetPodContainer(ctx *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
//获取Pod容器日志
|
||||
func (p *pod) GetPodLog(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
ContainerName string `form:"container_name"`
|
||||
PodName string `form:"pod_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败" + err.Error())
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Pod.GetPodLog(params.ContainerName, params.PodName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
@ -185,12 +180,11 @@ func (p *pod) GetPodLog(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Pod容器日志成功",
|
||||
"msg": "获取Pod中容器日志成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
//获取每个Namespace的Pod数量
|
||||
func (p *pod) GetPodNumPerNp(ctx *gin.Context) {
|
||||
data, err := service.Pod.GetPodNumPerNp()
|
||||
if err != nil {
|
||||
@ -200,8 +194,9 @@ func (p *pod) GetPodNumPerNp(ctx *gin.Context) {
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取每个namespace的Pod数量成功",
|
||||
"msg": "获取每个namespace的pod数量成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
98
controller/pv.go
Normal file
98
controller/pv.go
Normal file
@ -0,0 +1,98 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Pv pv
|
||||
|
||||
type pv struct{}
|
||||
|
||||
func (p *pv) GetPvs(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Pv.GetPvs(params.FilterName, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Pv列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (p *pv) GetPvDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
PvName string `form:"pv_name"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Pv.GetPvDetail(params.PvName)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Pv详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (p *pv) DeletePv(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
PvName string `json:"pv_name"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Pv.DeletePv(params.PvName)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Pv成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
130
controller/pvc.go
Normal file
130
controller/pvc.go
Normal file
@ -0,0 +1,130 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Pvc pvc
|
||||
|
||||
type pvc struct{}
|
||||
|
||||
func (p *pvc) GetPvcs(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Pvc.GetPvcs(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Pvc列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (p *pvc) GetPvcDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
PvcName string `form:"pvc_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Pvc.GetPvcDetail(params.PvcName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Pvc详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (p *pvc) DeletePvc(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
PvcName string `json:"pvc_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Pvc.DeletePvc(params.PvcName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Pvc成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (p *pvc) UpdatePvc(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Content string `json:"content"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Pvc.UpdatePvc(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "更新Pvc成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
@ -6,18 +6,62 @@ import (
|
||||
|
||||
var Router router
|
||||
|
||||
//声明router结构体
|
||||
type router struct{}
|
||||
|
||||
// InitApiRouter 初始化路由规则,创建api测试接口
|
||||
func (r *router) InitApiRouter(router *gin.Engine) {
|
||||
router.
|
||||
//pod操作
|
||||
POST("/api/login", Login.Auth).
|
||||
POST("/api/k8s/workflow/create", Workflow.Create).
|
||||
GET("/api/k8s/pods", Pod.GetPods).
|
||||
GET("/api/k8s/pod/detail", Pod.GetPodDetail).
|
||||
DELETE("/api/k8s/pod/del", Pod.DeletePod).
|
||||
PUT("/api/k8s/pod/update", Pod.UpdatePod).
|
||||
GET("/api/k8s/pod/container", Pod.GetPodContainer).
|
||||
GET("/api/k8s/pod/log", Pod.GetPodLog).
|
||||
GET("/api/k8s/pod/numnp", Pod.GetPodNumPerNp)
|
||||
GET("/api/k8s/pod/numnp", Pod.GetPodNumPerNp).
|
||||
GET("/api/k8s/deployments", Deployment.GetDeployments).
|
||||
GET("/api/k8s/deployment/detail", Deployment.GetDeploymentDetail).
|
||||
PUT("/api/k8s/deployment/scale", Deployment.ScaleDeployment).
|
||||
DELETE("/api/k8s/deployment/del", Deployment.DeleteDeployment).
|
||||
PUT("/api/k8s/deployment/restart", Deployment.RestartDeployment).
|
||||
PUT("/api/k8s/deployment/update", Deployment.UpdateDeployment).
|
||||
GET("/api/k8s/deployment/numnp", Deployment.GetDeployNumPerNp).
|
||||
POST("/api/k8s/deployment/create", Deployment.CreateDeployment).
|
||||
GET("/api/k8s/daemonsets", DaemonSet.GetDaemonSets).
|
||||
GET("/api/k8s/daemonset/detail", DaemonSet.GetDaemonSetDetail).
|
||||
DELETE("/api/k8s/daemonset/del", DaemonSet.DeleteDaemonSet).
|
||||
PUT("/api/k8s/daemonset/update", DaemonSet.UpdateDaemonSet).
|
||||
GET("/api/k8s/statefulsets", StatefulSet.GetStatefulSets).
|
||||
GET("/api/k8s/statefulset/detail", StatefulSet.GetStatefulSetDetail).
|
||||
DELETE("/api/k8s/statefulset/del", StatefulSet.DeleteStatefulSet).
|
||||
PUT("/api/k8s/statefulset/update", StatefulSet.UpdateStatefulSet).
|
||||
GET("/api/k8s/services", Servicev1.GetServices).
|
||||
GET("/api/k8s/service/detail", Servicev1.GetServiceDetail).
|
||||
DELETE("/api/k8s/service/del", Servicev1.DeleteService).
|
||||
PUT("/api/k8s/service/update", Servicev1.UpdateService).
|
||||
POST("/api/k8s/service/create", Servicev1.CreateService).
|
||||
GET("/api/k8s/ingresses", Ingress.GetIngresses).
|
||||
GET("/api/k8s/ingress/detail", Ingress.GetIngressDetail).
|
||||
DELETE("/api/k8s/ingress/del", Ingress.DeleteIngress).
|
||||
PUT("/api/k8s/ingress/update", Ingress.UpdateIngress).
|
||||
POST("/api/k8s/ingress/create", Ingress.CreateIngress).
|
||||
GET("/api/k8s/configmaps", ConfigMap.GetConfigMaps).
|
||||
GET("/api/k8s/configmap/detail", ConfigMap.GetConfigMapDetail).
|
||||
DELETE("/api/k8s/configmap/del", ConfigMap.DeleteConfigMap).
|
||||
PUT("/api/k8s/configmap/update", ConfigMap.UpdateConfigMap).
|
||||
GET("/api/k8s/secrets", Secret.GetSecrets).
|
||||
GET("/api/k8s/secret/detail", Secret.GetSecretDetail).
|
||||
DELETE("/api/k8s/secret/del", Secret.DeleteSecret).
|
||||
PUT("/api/k8s/secret/update", Secret.UpdateSecret).
|
||||
GET("/api/k8s/pvcs", Pvc.GetPvcs).
|
||||
GET("/api/k8s/pvc/detail", Pvc.GetPvcDetail).
|
||||
DELETE("/api/k8s/pvc/del", Pvc.DeletePvc).
|
||||
PUT("/api/k8s/pvc/update", Pvc.UpdatePvc).
|
||||
GET("/api/k8s/nodes", Node.GetNodes).
|
||||
GET("/api/k8s/node/detail", Node.GetNodeDetail).
|
||||
GET("/api/k8s/namespaces", Namespace.GetNamespaces).
|
||||
GET("/api/k8s/namespace/detail", Namespace.GetNamespaceDetail).
|
||||
GET("/api/k8s/namespace/del", Namespace.DeleteNamespace).
|
||||
GET("/api/k8s/pvs", Pv.GetPvs).
|
||||
GET("/api/k8s/pv/detail", Pv.GetPvDetail)
|
||||
}
|
||||
|
130
controller/secret.go
Normal file
130
controller/secret.go
Normal file
@ -0,0 +1,130 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Secret secret
|
||||
|
||||
type secret struct{}
|
||||
|
||||
func (s *secret) GetSecrets(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Secret.GetSecrets(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Secret列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *secret) GetSecretDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
SecretName string `form:"secret_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Secret.GetSecretDetail(params.SecretName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Secret详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *secret) DeleteSecret(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
SecretName string `json:"secret_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Secret.DeleteSecret(params.SecretName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Secret成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *secret) UpdateSecret(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Content string `json:"content"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Secret.UpdateSecret(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "更新Secret成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
158
controller/service.go
Normal file
158
controller/service.go
Normal file
@ -0,0 +1,158 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Servicev1 servicev1
|
||||
|
||||
type servicev1 struct{}
|
||||
|
||||
func (s *servicev1) GetServices(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Servicev1.GetServices(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Servicet列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *servicev1) GetServiceDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
ServiceName string `form:"service_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Servicev1.GetServicetDetail(params.ServiceName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Service详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *servicev1) CreateService(ctx *gin.Context) {
|
||||
var (
|
||||
serviceCreate = new(service.ServiceCreate)
|
||||
err error
|
||||
)
|
||||
|
||||
if err = ctx.ShouldBindJSON(serviceCreate); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if err = service.Servicev1.CreateService(serviceCreate); err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "创建Service成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *servicev1) DeleteService(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
ServiceName string `json:"service_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Servicev1.DeleteService(params.ServiceName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Service成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *servicev1) UpdateService(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Content string `json:"content"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.Servicev1.UpdateService(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "更新Service成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
130
controller/statefulset.go
Normal file
130
controller/statefulset.go
Normal file
@ -0,0 +1,130 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var StatefulSet statefulSet
|
||||
|
||||
type statefulSet struct{}
|
||||
|
||||
func (s *statefulSet) GetStatefulSets(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
FilterName string `form:"filter_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.StatefulSet.GetStatefulSets(params.FilterName, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取StatefulSet列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *statefulSet) GetStatefulSetDetail(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
StatefulSetName string `form:"statefulset_name"`
|
||||
Namespace string `form:"namespace"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.StatefulSet.GetStatefulSetDetail(params.StatefulSetName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取StatefulSet详情成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *statefulSet) DeleteStatefulSet(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
StatefulSetName string `json:"statefulset_name"`
|
||||
Namespace string `json:"namespace"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.StatefulSet.DeleteStatefulSet(params.StatefulSetName, params.Namespace)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除StatefulSet成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *statefulSet) UpdateStatefulSet(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Namespace string `json:"namespace"`
|
||||
Content string `json:"content"`
|
||||
})
|
||||
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err := service.StatefulSet.UpdateStatefulSet(params.Namespace, params.Content)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "更新StatefulSet成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
131
controller/workflow.go
Normal file
131
controller/workflow.go
Normal file
@ -0,0 +1,131 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"dkube/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/wonderivan/logger"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var Workflow workflow
|
||||
|
||||
type workflow struct{}
|
||||
|
||||
func (w *workflow) GetList(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
Name string `form:"name"`
|
||||
Namespace string `form:"namespace"`
|
||||
Page int `form:"page"`
|
||||
Limit int `form:"limit"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Workflow.GetList(params.Name, params.Namespace, params.Limit, params.Page)
|
||||
if err != nil {
|
||||
logger.Error("获取Workflow列表失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "获取Workflow列表成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (w *workflow) GetById(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
ID int `form:"id"`
|
||||
})
|
||||
if err := ctx.Bind(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.Workflow.GetById(params.ID)
|
||||
if err != nil {
|
||||
logger.Error("查询Workflow单条数据失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "查询Workflow单条数据成功",
|
||||
"data": data,
|
||||
})
|
||||
}
|
||||
|
||||
func (w *workflow) Create(ctx *gin.Context) {
|
||||
var (
|
||||
wc = &service.WorkflowCreate{}
|
||||
err error
|
||||
)
|
||||
|
||||
if err = ctx.ShouldBindJSON(wc); err != nil {
|
||||
logger.Error("Bind请求参数dc失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
if err = service.Workflow.CreateWorkFlow(wc); err != nil {
|
||||
logger.Error("创建Workflow失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "创建Workflow成功",
|
||||
"data": nil,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func (w *workflow) DelById(ctx *gin.Context) {
|
||||
params := new(struct {
|
||||
ID int `json:"id"`
|
||||
})
|
||||
if err := ctx.ShouldBindJSON(params); err != nil {
|
||||
logger.Error("Bind请求参数失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if err := service.Workflow.DelById(params.ID); err != nil {
|
||||
logger.Error("删除Workflow失败, " + err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"msg": err.Error(),
|
||||
"data": nil,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"msg": "删除Workflow成功",
|
||||
"data": nil,
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user