Make profile key explicit 79/83779/1
authorKiran Kamineni <kiran.k.kamineni@intel.com>
Fri, 29 Mar 2019 23:07:47 +0000 (16:07 -0700)
committerKiran Kamineni <kiran.k.kamineni@intel.com>
Fri, 29 Mar 2019 23:12:19 +0000 (16:12 -0700)
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 <kiran.k.kamineni@intel.com>
src/k8splugin/api/handler_test.go
src/k8splugin/api/profilehandler.go
src/k8splugin/api/profilehandler_test.go
src/k8splugin/internal/app/vnfhelper.go
src/k8splugin/internal/app/vnfhelper_test.go
src/k8splugin/internal/rb/profile.go
src/k8splugin/internal/rb/profile_test.go

index ee4a300..eacefe6 100644 (file)
@@ -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\"," +
index 2c15a44..362289f 100644 (file)
@@ -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
        }
index 4e34686..e6a8712 100644 (file)
@@ -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",
index 0a86709..c5783d6 100644 (file)
@@ -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")
        }
index 0686615..0ed67e5 100644 (file)
@@ -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",
index 572a175..679815a 100644 (file)
@@ -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 {
index 5d41b01..856e139 100644 (file)
@@ -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\"," +