Files
kubevela/pkg/server/handler/traitHandler.go
Zheng Xi Zhou 4fea3e9cf9 Implement API trait attach/detach, application get, capability center add/sync/list and fix detach issue (#187)
* implemented trait attach, get application

* implemented API for trait detach and fix trait detach issue

* implemeted API add/sync/list capability center

* implemented API capability add/remove/list

* update test-cases according to new cli style

* merge two ginkgo describe to one as in github environment ginkgo does NOT follow the order of describes

* merge two ginkgo describe to one as in github environment ginkgo does NOT follow the order of describes
2020-08-25 10:14:18 +08:00

73 lines
2.0 KiB
Go

package handler
import (
"strconv"
"github.com/cloud-native-application/rudrx/api/types"
"github.com/cloud-native-application/rudrx/pkg/oam"
"github.com/cloud-native-application/rudrx/pkg/server/apis"
"github.com/cloud-native-application/rudrx/pkg/server/util"
"github.com/gin-gonic/gin"
)
// Trait related handlers
func AttachTrait(c *gin.Context) {
var body apis.TraitBody
body.EnvName = c.Param("envName")
body.WorkloadName = c.Param("appName")
if err := c.ShouldBindJSON(&body); err != nil {
util.HandleError(c, util.InvalidArgument, "the trait attach request body is invalid")
return
}
msg, err := oam.AttachTrait(c, body)
if err != nil {
util.HandleError(c, util.StatusInternalServerError, err.Error())
return
}
util.AssembleResponse(c, msg, nil)
}
func GetTrait(c *gin.Context) {
var traitType = c.Param("traitName")
var workloadType string
var capability types.Capability
var err error
if capability, err = oam.GetTraitDefinition(&workloadType, traitType); err != nil {
util.HandleError(c, util.StatusInternalServerError, err)
return
}
util.AssembleResponse(c, capability, err)
}
func ListTrait(c *gin.Context) {
var traitList []types.Capability
var workloadName string
var err error
if traitList, err = oam.ListTraitDefinitions(&workloadName); err != nil {
util.HandleError(c, util.StatusInternalServerError, err)
return
}
util.AssembleResponse(c, traitList, err)
}
func DetachTrait(c *gin.Context) {
envName := c.Param("envName")
traitType := c.Param("traitName")
workloadName := c.Param("appName")
var staging = false
var err error
if stagingStr := c.Param("staging"); stagingStr != "" {
if staging, err = strconv.ParseBool(stagingStr); err != nil {
util.HandleError(c, util.StatusInternalServerError, err.Error())
return
}
}
msg, err := oam.DetachTrait(c, envName, traitType, workloadName, "", staging)
if err != nil {
util.HandleError(c, util.StatusInternalServerError, err.Error())
return
}
util.AssembleResponse(c, msg, nil)
}