From f3875e13c7a6675aa980c29580daae42a32eb97f Mon Sep 17 00:00:00 2001 From: Kiran Kamineni Date: Fri, 29 Mar 2019 16:07:47 -0700 Subject: Make profile key explicit Using profilename instead of name in the db key protects it from getting overwritten by anything else that might use name as a key. Using explicit key names makes sure that we don't have to add bson structure tags in the code. Issue-ID: MULTICLOUD-558 Change-Id: I9bd6f757496af22d8662b0d114f0ef7d33a5784a Signed-off-by: Kiran Kamineni --- src/k8splugin/api/handler_test.go | 4 +-- src/k8splugin/api/profilehandler.go | 2 +- src/k8splugin/api/profilehandler_test.go | 8 ++--- src/k8splugin/internal/app/vnfhelper.go | 4 +-- src/k8splugin/internal/app/vnfhelper_test.go | 4 +-- src/k8splugin/internal/rb/profile.go | 44 ++++++++++++++-------------- src/k8splugin/internal/rb/profile_test.go | 22 +++++++------- 7 files changed, 44 insertions(+), 44 deletions(-) (limited to 'src') diff --git a/src/k8splugin/api/handler_test.go b/src/k8splugin/api/handler_test.go index ee4a3005..eacefe65 100644 --- a/src/k8splugin/api/handler_test.go +++ b/src/k8splugin/api/handler_test.go @@ -127,7 +127,7 @@ func TestCreateHandler(t *testing.T) { mockStore: &db.MockDB{ Items: map[string]map[string][]byte{ rb.ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", - Name: "profile1"}.String(): { + ProfileName: "profile1"}.String(): { "metadata": []byte( "{\"profile-name\":\"profile1\"," + "\"release-name\":\"testprofilereleasename\"," + @@ -272,7 +272,7 @@ func TestCreateHandler(t *testing.T) { mockStore: &db.MockDB{ Items: map[string]map[string][]byte{ rb.ProfileKey{RBName: "test-rbdef", RBVersion: "v1", - Name: "profile1"}.String(): { + ProfileName: "profile1"}.String(): { "metadata": []byte( "{\"profile-name\":\"profile1\"," + "\"release-name\":\"testprofilereleasename\"," + diff --git a/src/k8splugin/api/profilehandler.go b/src/k8splugin/api/profilehandler.go index 2c15a440..362289ff 100644 --- a/src/k8splugin/api/profilehandler.go +++ b/src/k8splugin/api/profilehandler.go @@ -49,7 +49,7 @@ func (h rbProfileHandler) createHandler(w http.ResponseWriter, r *http.Request) } // Name is required. - if p.Name == "" { + if p.ProfileName == "" { http.Error(w, "Missing name in POST request", http.StatusBadRequest) return } diff --git a/src/k8splugin/api/profilehandler_test.go b/src/k8splugin/api/profilehandler_test.go index 4e346862..e6a87129 100644 --- a/src/k8splugin/api/profilehandler_test.go +++ b/src/k8splugin/api/profilehandler_test.go @@ -92,7 +92,7 @@ func TestRBProfileCreateHandler(t *testing.T) { expected: rb.Profile{ RBName: "testresource_bundle_definition", RBVersion: "v1", - Name: "profile1", + ProfileName: "profile1", ReleaseName: "testprofilereleasename", Namespace: "default", KubernetesVersion: "1.12.3", @@ -103,7 +103,7 @@ func TestRBProfileCreateHandler(t *testing.T) { { RBName: "testresource_bundle_definition", RBVersion: "v1", - Name: "profile1", + ProfileName: "profile1", ReleaseName: "testprofilereleasename", Namespace: "default", KubernetesVersion: "1.12.3", @@ -156,7 +156,7 @@ func TestRBProfileGetHandler(t *testing.T) { expected: rb.Profile{ RBName: "testresource_bundle_definition", RBVersion: "v1", - Name: "profile1", + ProfileName: "profile1", ReleaseName: "testprofilereleasename", Namespace: "default", KubernetesVersion: "1.12.3", @@ -168,7 +168,7 @@ func TestRBProfileGetHandler(t *testing.T) { { RBName: "testresource_bundle_definition", RBVersion: "v1", - Name: "profile1", + ProfileName: "profile1", ReleaseName: "testprofilereleasename", Namespace: "default", KubernetesVersion: "1.12.3", diff --git a/src/k8splugin/internal/app/vnfhelper.go b/src/k8splugin/internal/app/vnfhelper.go index 0a867090..c5783d69 100644 --- a/src/k8splugin/internal/app/vnfhelper.go +++ b/src/k8splugin/internal/app/vnfhelper.go @@ -47,7 +47,7 @@ func ensuresNamespace(namespace string, kubeclient kubernetes.Interface) error { return pkgerrors.Wrap(err, "Error fetching get namespace function") } - ns, _ := symGetNamespaceFunc.(func(string, string, kubernetes.Interface) (string, error))( + ns, _ := symGetNamespaceFunc.(func(string, string, kubernetes.Interface) (string, error))( namespace, namespace, kubeclient) if ns == "" { @@ -80,7 +80,7 @@ var CreateVNF = func(csarID string, cloudRegionID string, profile rb.Profile, ku externalVNFID := generateExternalVNFID() internalVNFID := cloudRegionID + "-" + profile.Namespace + "-" + externalVNFID - metaMap, err := rb.NewProfileClient().Resolve(profile.RBName, profile.RBVersion, profile.Name, overrideValues) + metaMap, err := rb.NewProfileClient().Resolve(profile.RBName, profile.RBVersion, profile.ProfileName, overrideValues) if err != nil { return "", nil, pkgerrors.Wrap(err, "Error resolving helm charts") } diff --git a/src/k8splugin/internal/app/vnfhelper_test.go b/src/k8splugin/internal/app/vnfhelper_test.go index 06866150..0ed67e5d 100644 --- a/src/k8splugin/internal/app/vnfhelper_test.go +++ b/src/k8splugin/internal/app/vnfhelper_test.go @@ -86,7 +86,7 @@ func TestCreateVNF(t *testing.T) { db.DBconn = &db.MockDB{ Items: map[string]map[string][]byte{ rb.ProfileKey{RBName: "test-rbdef", RBVersion: "v1", - Name: "profile1"}.String(): { + ProfileName: "profile1"}.String(): { "metadata": []byte( "{\"profile-name\":\"profile1\"," + "\"release-name\":\"testprofilereleasename\"," + @@ -196,7 +196,7 @@ func TestCreateVNF(t *testing.T) { rb.Profile{ RBName: "test-rbdef", RBVersion: "v1", - Name: "profile1", + ProfileName: "profile1", ReleaseName: "testprofilereleasename", Namespace: "testnamespace", KubernetesVersion: "1.12.3", diff --git a/src/k8splugin/internal/rb/profile.go b/src/k8splugin/internal/rb/profile.go index 572a175c..679815ac 100644 --- a/src/k8splugin/internal/rb/profile.go +++ b/src/k8splugin/internal/rb/profile.go @@ -33,7 +33,7 @@ import ( type Profile struct { RBName string `json:"rb-name"` RBVersion string `json:"rb-version"` - Name string `json:"profile-name"` + ProfileName string `json:"profile-name"` ReleaseName string `json:"release-name"` Namespace string `json:"namespace"` KubernetesVersion string `json:"kubernetes-version"` @@ -49,9 +49,9 @@ type ProfileManager interface { } type ProfileKey struct { - RBName string `json:"rb-name"` - RBVersion string `json:"rb-version"` - Name string `json:"profile-name"` + RBName string `json:"rb-name"` + RBVersion string `json:"rb-version"` + ProfileName string `json:"profile-name"` } // We will use json marshalling to convert to string to @@ -88,12 +88,12 @@ func NewProfileClient() *ProfileClient { func (v *ProfileClient) Create(p Profile) (Profile, error) { // Name is required - if p.Name == "" { + if p.ProfileName == "" { return Profile{}, pkgerrors.New("Name is required for Resource Bundle Profile") } //Check if profile already exists - _, err := v.Get(p.RBName, p.RBVersion, p.Name) + _, err := v.Get(p.RBName, p.RBVersion, p.ProfileName) if err == nil { return Profile{}, pkgerrors.New("Profile already exists for this Definition") } @@ -106,13 +106,13 @@ func (v *ProfileClient) Create(p Profile) (Profile, error) { //If release-name is not provided, we store name instead if p.ReleaseName == "" { - p.ReleaseName = p.Name + p.ReleaseName = p.ProfileName } key := ProfileKey{ - RBName: p.RBName, - RBVersion: p.RBVersion, - Name: p.Name, + RBName: p.RBName, + RBVersion: p.RBVersion, + ProfileName: p.ProfileName, } err = db.DBconn.Create(v.storeName, key, v.tagMeta, p) @@ -126,9 +126,9 @@ func (v *ProfileClient) Create(p Profile) (Profile, error) { // Get returns the Resource Bundle Profile for corresponding ID func (v *ProfileClient) Get(rbName, rbVersion, prName string) (Profile, error) { key := ProfileKey{ - RBName: rbName, - RBVersion: rbVersion, - Name: prName, + RBName: rbName, + RBVersion: rbVersion, + ProfileName: prName, } value, err := db.DBconn.Read(v.storeName, key, v.tagMeta) if err != nil { @@ -151,9 +151,9 @@ func (v *ProfileClient) Get(rbName, rbVersion, prName string) (Profile, error) { // Delete the Resource Bundle Profile from database func (v *ProfileClient) Delete(rbName, rbVersion, prName string) error { key := ProfileKey{ - RBName: rbName, - RBVersion: rbVersion, - Name: prName, + RBName: rbName, + RBVersion: rbVersion, + ProfileName: prName, } err := db.DBconn.Delete(v.storeName, key, v.tagMeta) if err != nil { @@ -183,9 +183,9 @@ func (v *ProfileClient) Upload(rbName, rbVersion, prName string, inp []byte) err } key := ProfileKey{ - RBName: rbName, - RBVersion: rbVersion, - Name: prName, + RBName: rbName, + RBVersion: rbVersion, + ProfileName: prName, } //Encode given byte stream to text for storage encodedStr := base64.StdEncoding.EncodeToString(inp) @@ -210,9 +210,9 @@ func (v *ProfileClient) Download(rbName, rbVersion, prName string) ([]byte, erro } key := ProfileKey{ - RBName: rbName, - RBVersion: rbVersion, - Name: prName, + RBName: rbName, + RBVersion: rbVersion, + ProfileName: prName, } value, err := db.DBconn.Read(v.storeName, key, v.tagContent) if err != nil { diff --git a/src/k8splugin/internal/rb/profile_test.go b/src/k8splugin/internal/rb/profile_test.go index 5d41b019..856e139b 100644 --- a/src/k8splugin/internal/rb/profile_test.go +++ b/src/k8splugin/internal/rb/profile_test.go @@ -39,7 +39,7 @@ func TestCreateProfile(t *testing.T) { { label: "Create Resource Bundle Profile", inp: Profile{ - Name: "testprofile1", + ProfileName: "testprofile1", ReleaseName: "testprofilereleasename", Namespace: "testnamespace", KubernetesVersion: "1.12.3", @@ -47,7 +47,7 @@ func TestCreateProfile(t *testing.T) { RBVersion: "v1", }, expected: Profile{ - Name: "testprofile1", + ProfileName: "testprofile1", ReleaseName: "testprofilereleasename", Namespace: "testnamespace", KubernetesVersion: "1.12.3", @@ -70,7 +70,7 @@ func TestCreateProfile(t *testing.T) { { label: "Create Resource Bundle Profile With Non-Existing Definition", inp: Profile{ - Name: "testprofile1", + ProfileName: "testprofile1", ReleaseName: "testprofilereleasename", Namespace: "testnamespace", KubernetesVersion: "1.12.3", @@ -136,7 +136,7 @@ func TestGetProfile(t *testing.T) { rbversion: "v1", prname: "testprofile1", expected: Profile{ - Name: "testprofile1", + ProfileName: "testprofile1", ReleaseName: "testprofilereleasename", Namespace: "testnamespace", KubernetesVersion: "1.12.3", @@ -146,7 +146,7 @@ func TestGetProfile(t *testing.T) { expectedError: "", mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile1"}.String(): { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", ProfileName: "testprofile1"}.String(): { "metadata": []byte( "{\"profile-name\":\"testprofile1\"," + "\"release-name\":\"testprofilereleasename\"," + @@ -266,7 +266,7 @@ func TestUploadProfile(t *testing.T) { }, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile1"}.String(): { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", ProfileName: "testprofile1"}.String(): { "metadata": []byte( "{\"profile-name\":\"testprofile1\"," + "\"release-name\":\"testprofilereleasename\"," + @@ -307,7 +307,7 @@ func TestUploadProfile(t *testing.T) { }, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile2"}.String(): { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", ProfileName: "testprofile2"}.String(): { "metadata": []byte( "{\"profile-name\":\"testprofile1\"," + "\"release-name\":\"testprofilereleasename\"," + @@ -331,7 +331,7 @@ func TestUploadProfile(t *testing.T) { }, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile1"}.String(): { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", ProfileName: "testprofile1"}.String(): { "metadata": []byte( "{\"profile-name\":\"testprofile1\"," + "\"release-name\":\"testprofilereleasename\"," + @@ -426,7 +426,7 @@ func TestDownloadProfile(t *testing.T) { }, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile1"}.String(): { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", ProfileName: "testprofile1"}.String(): { "metadata": []byte( "{\"profile-name\":\"testprofile1\"," + "\"release-name\":\"testprofilereleasename\"," + @@ -450,7 +450,7 @@ func TestDownloadProfile(t *testing.T) { expectedError: "Invalid Profile Name provided", mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile2"}.String(): { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", ProfileName: "testprofile2"}.String(): { "metadata": []byte( "{\"profile-name\":\"testprofile1\"," + "\"release-name\":\"testprofilereleasename\"," + @@ -513,7 +513,7 @@ func TestResolveProfile(t *testing.T) { mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", - Name: "profile1"}.String(): { + ProfileName: "profile1"}.String(): { "metadata": []byte( "{\"profile-name\":\"profile1\"," + "\"release-name\":\"testprofilereleasename\"," + -- cgit 1.2.3-korg