Merge pull request #180 from zzxwill/api-workloaddef

Implement listing WorkloadDefinitions API
This commit is contained in:
Sun Jianbo
2020-08-20 10:12:00 +08:00
committed by GitHub
3 changed files with 45 additions and 1 deletions
+23 -1
View File
@@ -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"])))
}
})
})
})
+8
View File
@@ -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"`
}
+14
View File
@@ -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) {