mirror of
https://github.com/kubevela/kubevela.git
synced 2026-03-06 11:41:41 +00:00
93 lines
2.6 KiB
Go
93 lines
2.6 KiB
Go
package handler
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/cloud-native-application/rudrx/api/types"
|
|
"github.com/cloud-native-application/rudrx/pkg/oam"
|
|
"github.com/cloud-native-application/rudrx/pkg/plugins"
|
|
"github.com/spf13/pflag"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
|
|
"github.com/cloud-native-application/rudrx/pkg/server/apis"
|
|
"github.com/cloud-native-application/rudrx/pkg/server/util"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// Workload related handlers
|
|
func CreateWorkload(c *gin.Context) {
|
|
kubeClient := c.MustGet("KubeClient")
|
|
var body apis.WorkloadRunBody
|
|
if err := c.ShouldBindJSON(&body); err != nil {
|
|
util.HandleError(c, util.InvalidArgument, "the workload run request body is invalid")
|
|
return
|
|
}
|
|
fs := pflag.NewFlagSet("workload", pflag.ContinueOnError)
|
|
for _, f := range body.Flags {
|
|
fs.String(f.Name, f.Value, "")
|
|
}
|
|
evnName := body.EnvName
|
|
var template types.Capability
|
|
|
|
template, err := plugins.LoadCapabilityByName(body.WorkloadType)
|
|
if err != nil {
|
|
util.HandleError(c, util.StatusInternalServerError, err.Error())
|
|
return
|
|
}
|
|
appObj, err := oam.BaseComplete(evnName, body.WorkloadName, body.AppGroup, fs, template)
|
|
if err != nil {
|
|
util.HandleError(c, util.StatusInternalServerError, err.Error())
|
|
return
|
|
}
|
|
env, err := oam.GetEnvByName(evnName)
|
|
if err != nil {
|
|
util.HandleError(c, util.StatusInternalServerError, err.Error())
|
|
return
|
|
}
|
|
msg, err := oam.BaseRun(body.Staging, appObj, kubeClient.(client.Client), env)
|
|
if err != nil {
|
|
util.HandleError(c, util.StatusInternalServerError, err.Error())
|
|
return
|
|
}
|
|
util.AssembleResponse(c, msg, err)
|
|
}
|
|
|
|
func UpdateWorkload(c *gin.Context) {
|
|
}
|
|
|
|
func GetWorkload(c *gin.Context) {
|
|
var workloadType = c.Param("workloadName")
|
|
var capabilityList []types.Capability
|
|
var err error
|
|
|
|
if capabilityList, err = plugins.GetInstalledCapabilityWithCapAlias(types.TypeWorkload, workloadType); err != nil {
|
|
util.HandleError(c, util.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
if len(capabilityList) == 0 {
|
|
util.HandleError(c, util.StatusInternalServerError, errors.New("could not get the workload details"))
|
|
return
|
|
}
|
|
util.AssembleResponse(c, capabilityList[0], err)
|
|
}
|
|
|
|
func ListWorkload(c *gin.Context) {
|
|
var workloadDefinitionList []apis.WorkloadMeta
|
|
workloads, err := plugins.LoadInstalledCapabilityWithType(types.TypeWorkload)
|
|
if err != nil {
|
|
util.HandleError(c, util.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
for _, w := range workloads {
|
|
workloadDefinitionList = append(workloadDefinitionList, apis.WorkloadMeta{
|
|
Name: w.Name,
|
|
Parameters: w.Parameters,
|
|
AppliesTo: w.AppliesTo,
|
|
})
|
|
}
|
|
util.AssembleResponse(c, workloadDefinitionList, err)
|
|
}
|
|
|
|
func DeleteWorkload(c *gin.Context) {
|
|
}
|