From bf49d552b003072c6bc64ae838a4699c1f4028bd Mon Sep 17 00:00:00 2001 From: Kiran Kamineni Date: Tue, 16 Apr 2019 18:09:13 -0700 Subject: Replace Kind with GroupVersionKind Kind is not unique to track resources in Kubernetes GroupVersionKind is unique. We are just using that to track our data. It is abstracted behind a couple of new types for templates and resources. This change makes a lot of the old kind based operations redundant and simplified. Issue-ID: MULTICLOUD-573 Change-Id: I8f4ded2ba6a0821a8fbd679dc99ce3a44d805524 Signed-off-by: Kiran Kamineni --- src/k8splugin/api/brokerhandler.go | 7 +-- src/k8splugin/api/brokerhandler_test.go | 56 +++++++++++++++++++---- src/k8splugin/api/instancehandler_test.go | 74 ++++++++++++++++++++++++++----- 3 files changed, 113 insertions(+), 24 deletions(-) (limited to 'src/k8splugin/api') diff --git a/src/k8splugin/api/brokerhandler.go b/src/k8splugin/api/brokerhandler.go index 28e44231..80ab643c 100644 --- a/src/k8splugin/api/brokerhandler.go +++ b/src/k8splugin/api/brokerhandler.go @@ -19,6 +19,7 @@ import ( "net/http" "k8splugin/internal/app" + "k8splugin/internal/helm" "github.com/gorilla/mux" ) @@ -44,9 +45,9 @@ type brokerRequest struct { } type brokerPOSTResponse struct { - TemplateType string `json:"template_type"` - WorkloadID string `json:"workload_id"` - TemplateResponse map[string][]string `json:"template_response"` + TemplateType string `json:"template_type"` + WorkloadID string `json:"workload_id"` + TemplateResponse []helm.KubernetesResource `json:"template_response"` } type brokerGETResponse struct { diff --git a/src/k8splugin/api/brokerhandler_test.go b/src/k8splugin/api/brokerhandler_test.go index 57557ac8..d9991e68 100644 --- a/src/k8splugin/api/brokerhandler_test.go +++ b/src/k8splugin/api/brokerhandler_test.go @@ -24,8 +24,10 @@ import ( "testing" "k8splugin/internal/app" + "k8splugin/internal/helm" pkgerrors "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/runtime/schema" ) func TestBrokerCreateHandler(t *testing.T) { @@ -68,9 +70,21 @@ func TestBrokerCreateHandler(t *testing.T) { expected: brokerPOSTResponse{ WorkloadID: "HaKpys8e", TemplateType: "heat", - TemplateResponse: map[string][]string{ - "deployment": []string{"test-deployment"}, - "service": []string{"test-service"}, + TemplateResponse: []helm.KubernetesResource{ + { + GVK: schema.GroupVersionKind{ + Group: "apps", + Version: "v1", + Kind: "Deployment"}, + Name: "test-deployment", + }, + { + GVK: schema.GroupVersionKind{ + Group: "", + Version: "v1", + Kind: "Service"}, + Name: "test-service", + }, }, }, expectedCode: http.StatusCreated, @@ -83,9 +97,21 @@ func TestBrokerCreateHandler(t *testing.T) { ProfileName: "profile1", CloudRegion: "region1", Namespace: "testnamespace", - Resources: map[string][]string{ - "deployment": []string{"test-deployment"}, - "service": []string{"test-service"}, + Resources: []helm.KubernetesResource{ + { + GVK: schema.GroupVersionKind{ + Group: "apps", + Version: "v1", + Kind: "Deployment"}, + Name: "test-deployment", + }, + { + GVK: schema.GroupVersionKind{ + Group: "", + Version: "v1", + Kind: "Service"}, + Name: "test-service", + }, }, }, }, @@ -154,9 +180,21 @@ func TestBrokerGetHandler(t *testing.T) { ProfileName: "profile1", CloudRegion: "region1", Namespace: "testnamespace", - Resources: map[string][]string{ - "deployment": []string{"test-deployment"}, - "service": []string{"test-service"}, + Resources: []helm.KubernetesResource{ + { + GVK: schema.GroupVersionKind{ + Group: "apps", + Version: "v1", + Kind: "Deployment"}, + Name: "test-deployment", + }, + { + GVK: schema.GroupVersionKind{ + Group: "", + Version: "v1", + Kind: "Service"}, + Name: "test-service", + }, }, }, }, diff --git a/src/k8splugin/api/instancehandler_test.go b/src/k8splugin/api/instancehandler_test.go index ed7135a6..6d2abf6f 100644 --- a/src/k8splugin/api/instancehandler_test.go +++ b/src/k8splugin/api/instancehandler_test.go @@ -24,9 +24,11 @@ import ( "testing" "k8splugin/internal/app" + "k8splugin/internal/helm" "github.com/gorilla/mux" pkgerrors "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/runtime/schema" ) //Creating an embedded interface via anonymous variable @@ -108,9 +110,21 @@ func TestInstanceCreateHandler(t *testing.T) { ProfileName: "profile1", CloudRegion: "region1", Namespace: "testnamespace", - Resources: map[string][]string{ - "deployment": []string{"test-deployment"}, - "service": []string{"test-service"}, + Resources: []helm.KubernetesResource{ + { + GVK: schema.GroupVersionKind{ + Group: "apps", + Version: "v1", + Kind: "Deployment"}, + Name: "test-deployment", + }, + { + GVK: schema.GroupVersionKind{ + Group: "", + Version: "v1", + Kind: "Service"}, + Name: "test-service", + }, }, }, expectedCode: http.StatusCreated, @@ -123,9 +137,21 @@ func TestInstanceCreateHandler(t *testing.T) { ProfileName: "profile1", CloudRegion: "region1", Namespace: "testnamespace", - Resources: map[string][]string{ - "deployment": []string{"test-deployment"}, - "service": []string{"test-service"}, + Resources: []helm.KubernetesResource{ + { + GVK: schema.GroupVersionKind{ + Group: "apps", + Version: "v1", + Kind: "Deployment"}, + Name: "test-deployment", + }, + { + GVK: schema.GroupVersionKind{ + Group: "", + Version: "v1", + Kind: "Service"}, + Name: "test-service", + }, }, }, }, @@ -183,9 +209,21 @@ func TestInstanceGetHandler(t *testing.T) { ProfileName: "profile1", CloudRegion: "region1", Namespace: "testnamespace", - Resources: map[string][]string{ - "deployment": []string{"test-deployment"}, - "service": []string{"test-service"}, + Resources: []helm.KubernetesResource{ + { + GVK: schema.GroupVersionKind{ + Group: "apps", + Version: "v1", + Kind: "Deployment"}, + Name: "test-deployment", + }, + { + GVK: schema.GroupVersionKind{ + Group: "", + Version: "v1", + Kind: "Service"}, + Name: "test-service", + }, }, }, instClient: &mockInstanceClient{ @@ -197,9 +235,21 @@ func TestInstanceGetHandler(t *testing.T) { ProfileName: "profile1", CloudRegion: "region1", Namespace: "testnamespace", - Resources: map[string][]string{ - "deployment": []string{"test-deployment"}, - "service": []string{"test-service"}, + Resources: []helm.KubernetesResource{ + { + GVK: schema.GroupVersionKind{ + Group: "apps", + Version: "v1", + Kind: "Deployment"}, + Name: "test-deployment", + }, + { + GVK: schema.GroupVersionKind{ + Group: "", + Version: "v1", + Kind: "Service"}, + Name: "test-service", + }, }, }, }, -- cgit 1.2.3-korg