mirror of
https://github.com/kubevela/kubevela.git
synced 2026-08-27 16:17:34 +00:00
Merge pull request #180 from zzxwill/api-workloaddef
Implement listing WorkloadDefinitions API
This commit is contained in:
@@ -53,6 +53,9 @@ var notExistedEnvMeta = types.EnvMeta{
|
||||
Namespace: "env-e2e-api-NOT-EXISTED-JUST-FOR-TEST",
|
||||
}
|
||||
|
||||
var containerizedWorkloadType = "containerized"
|
||||
var deploymentWorkloadType = "deployment"
|
||||
|
||||
var _ = ginkgo.Describe("API Env", func() {
|
||||
//API Env
|
||||
e2e.APIEnvInitContext("post /envs/", envHelloMeta)
|
||||
@@ -99,6 +102,7 @@ var _ = ginkgo.Describe("API Env", func() {
|
||||
gomega.Expect(err).NotTo(gomega.HaveOccurred())
|
||||
var r apis.Response
|
||||
err = json.Unmarshal(result, &r)
|
||||
gomega.Expect(err).NotTo(gomega.HaveOccurred())
|
||||
gomega.Expect(http.StatusOK).To(gomega.Equal(r.Code))
|
||||
//TODO(zzxwill) Need to compare r.Data with envMeta
|
||||
})
|
||||
@@ -137,11 +141,12 @@ var _ = ginkgo.Describe("API Env", func() {
|
||||
gomega.Expect(r.Data.(string)).To(gomega.ContainSubstring(expectedContent))
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
var _ = ginkgo.Describe("API Workload", func() {
|
||||
|
||||
ginkgo.Context("Post /workloads/", func() {
|
||||
ginkgo.Context("Workloads", func() {
|
||||
ginkgo.It("run workload", func() {
|
||||
data, err := json.Marshal(&workloadRunBody)
|
||||
gomega.Expect(err).NotTo(gomega.HaveOccurred())
|
||||
@@ -171,5 +176,22 @@ var _ = ginkgo.Describe("API Workload", func() {
|
||||
output := fmt.Sprintf("required flag(s) \"image\" not set")
|
||||
gomega.Expect(r.Data.(string)).To(gomega.ContainSubstring(output))
|
||||
})
|
||||
|
||||
ginkgo.It("should list all WorkloadDefinitions", func() {
|
||||
resp, err := http.Get(util.URL("/workloads/"))
|
||||
gomega.Expect(err).NotTo(gomega.HaveOccurred())
|
||||
defer resp.Body.Close()
|
||||
result, err := ioutil.ReadAll(resp.Body)
|
||||
gomega.Expect(err).NotTo(gomega.HaveOccurred())
|
||||
var r apis.Response
|
||||
err = json.Unmarshal(result, &r)
|
||||
gomega.Expect(http.StatusOK).To(gomega.Equal(r.Code))
|
||||
var data = r.Data.([]interface{})
|
||||
for _, i := range data {
|
||||
var workloadDefinition = i.(map[string]interface{})
|
||||
gomega.Expect(err).NotTo(gomega.HaveOccurred())
|
||||
gomega.Expect([]string{containerizedWorkloadType, deploymentWorkloadType}).To(gomega.Or(gomega.ContainElement(workloadDefinition["name"])))
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package apis
|
||||
|
||||
import (
|
||||
"github.com/cloud-native-application/rudrx/api/types"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
@@ -20,6 +21,7 @@ type Response struct {
|
||||
Code int `json:"code"`
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type WorkloadFlag struct {
|
||||
Name string `json:"name"`
|
||||
Value string `json:"value"`
|
||||
@@ -32,3 +34,9 @@ type WorkloadRunBody struct {
|
||||
Flags []WorkloadFlag `json:"flags"`
|
||||
Staging bool `json:"staging"`
|
||||
}
|
||||
|
||||
type Capability struct {
|
||||
Name string `json:"name"`
|
||||
Parameters []types.Parameter `json:"parameters,omitempty"`
|
||||
AppliesTo []string `json:"appliesTo,omitempty"`
|
||||
}
|
||||
|
||||
@@ -57,6 +57,20 @@ func GetWorkload(c *gin.Context) {
|
||||
}
|
||||
|
||||
func ListWorkload(c *gin.Context) {
|
||||
var workloadDefinitionList []apis.Capability
|
||||
workloads, err := plugins.LoadInstalledCapabilityWithType(types.TypeWorkload)
|
||||
if err != nil {
|
||||
util.HandleError(c, util.StatusInternalServerError, err)
|
||||
return
|
||||
}
|
||||
for _, w := range workloads {
|
||||
workloadDefinitionList = append(workloadDefinitionList, apis.Capability{
|
||||
Name: w.Name,
|
||||
Parameters: w.Parameters,
|
||||
AppliesTo: w.AppliesTo,
|
||||
})
|
||||
}
|
||||
util.AssembleResponse(c, workloadDefinitionList, err)
|
||||
}
|
||||
|
||||
func DeleteWorkload(c *gin.Context) {
|
||||
|
||||
Reference in New Issue
Block a user