diff options
author | Kiran Kamineni <kiran.k.kamineni@intel.com> | 2019-01-24 15:40:12 -0800 |
---|---|---|
committer | Kiran Kamineni <kiran.k.kamineni@intel.com> | 2019-03-19 19:12:04 -0700 |
commit | 17275e9b6899ba611458f8ca9aaa868c70d7d0cf (patch) | |
tree | 25169d02625832fb2eb7e5a9ff08c43737dd4ef6 /src/k8splugin/api | |
parent | e50daed19bbaec979a91f2677289f1c2e6e0d0d9 (diff) |
Bring in all the other helper code
Bring in all the helper functions added for end to end
integration. This allows the api level upload of helm charts,
profiles and also instantiation of said helm charts.
P3: Plugin index is based on lowercase kind name
whereas the map contains the correct case for kind.
Convert to lower case before loading the plugin.
Changes after rebasing on the new folder structure.
Rebasing over the new folder structure
P8: Add unit tests for Resolve function
Fix the integration tests for createvnf
I had to add a huge blob of base64 encoded data
based on the profile and sample helm chart to test
the flow.
P12: Update the integration test with the rb_profile_id parameter
Issue-ID: MULTICLOUD-291
Change-Id: If04c41cb185074989ab6c96557958140c43e456d
Signed-off-by: Kiran Kamineni <kiran.k.kamineni@intel.com>
Diffstat (limited to 'src/k8splugin/api')
-rw-r--r-- | src/k8splugin/api/handler.go | 18 | ||||
-rw-r--r-- | src/k8splugin/api/handler_test.go | 8 | ||||
-rw-r--r-- | src/k8splugin/api/model.go | 3 |
3 files changed, 18 insertions, 11 deletions
diff --git a/src/k8splugin/api/handler.go b/src/k8splugin/api/handler.go index a6db3c18..32bfa594 100644 --- a/src/k8splugin/api/handler.go +++ b/src/k8splugin/api/handler.go @@ -27,6 +27,7 @@ import ( helper "k8splugin/internal/app" "k8splugin/internal/db" + "k8splugin/internal/rb" ) //TODO: Separate the http handler code and backend code out @@ -53,7 +54,11 @@ func validateBody(body interface{}) error { werr := pkgerrors.Wrap(errors.New("Invalid/Missing CsarID in POST request"), "CreateVnfRequest bad request") return werr } - if strings.Contains(b.CloudRegionID, "|") || strings.Contains(b.Namespace, "|") { + if b.RBProfileID == "" { + werr := pkgerrors.Wrap(errors.New("Invalid/Missing RB ProfileID in POST request"), "CreateVnfRequest bad request") + return werr + } + if strings.Contains(b.CloudRegionID, "|") { werr := pkgerrors.Wrap(errors.New("Character \"|\" not allowed in CSAR ID"), "CreateVnfRequest bad request") return werr } @@ -104,18 +109,21 @@ func CreateHandler(w http.ResponseWriter, r *http.Request) { }, nil */ - externalVNFID, resourceNameMap, err := helper.CreateVNF(resource.CsarID, resource.CloudRegionID, resource.Namespace, &kubeclient) + externalVNFID, resourceNameMap, err := helper.CreateVNF(resource.CsarID, resource.CloudRegionID, + resource.RBProfileID, &kubeclient) if err != nil { werr := pkgerrors.Wrap(err, "Read Kubernetes Data information error") http.Error(w, werr.Error(), http.StatusInternalServerError) return } + rbProfile, _ := rb.NewProfileClient().Get(resource.RBProfileID) + namespace := rbProfile.Namespace // cloud1-default-uuid - internalVNFID := resource.CloudRegionID + "-" + resource.Namespace + "-" + externalVNFID + internalVNFID := resource.CloudRegionID + "-" + namespace + "-" + externalVNFID // Persist in AAI database. - log.Printf("Cloud Region ID: %s, Namespace: %s, VNF ID: %s ", resource.CloudRegionID, resource.Namespace, externalVNFID) + log.Printf("Cloud Region ID: %s, Namespace: %s, VNF ID: %s ", resource.CloudRegionID, namespace, externalVNFID) // TODO: Uncomment when annotations are done // krd.AddNetworkAnnotationsToPod(kubeData, resource.Networks) @@ -132,7 +140,7 @@ func CreateHandler(w http.ResponseWriter, r *http.Request) { resp := CreateVnfResponse{ VNFID: externalVNFID, CloudRegionID: resource.CloudRegionID, - Namespace: resource.Namespace, + Namespace: namespace, VNFComponents: resourceNameMap, } diff --git a/src/k8splugin/api/handler_test.go b/src/k8splugin/api/handler_test.go index 2bac3111..c34ceec8 100644 --- a/src/k8splugin/api/handler_test.go +++ b/src/k8splugin/api/handler_test.go @@ -98,7 +98,7 @@ func TestCreateHandler(t *testing.T) { label: "Fail to get the VNF client", input: bytes.NewBuffer([]byte(`{ "cloud_region_id": "region1", - "namespace": "test", + "rb_profile_id": "123e4567-e89b-12d3-a456-426655440000", "csar_id": "UUID-1" }`)), expectedCode: http.StatusInternalServerError, @@ -108,7 +108,7 @@ func TestCreateHandler(t *testing.T) { label: "Fail to create the VNF instance", input: bytes.NewBuffer([]byte(`{ "cloud_region_id": "region1", - "namespace": "test", + "rb_profile_id": "123e4567-e89b-12d3-a456-426655440000", "csar_id": "UUID-1" }`)), expectedCode: http.StatusInternalServerError, @@ -120,7 +120,7 @@ func TestCreateHandler(t *testing.T) { label: "Fail to create a VNF DB record", input: bytes.NewBuffer([]byte(`{ "cloud_region_id": "region1", - "namespace": "test", + "rb_profile_id": "123e4567-e89b-12d3-a456-426655440000", "csar_id": "UUID-1" }`)), expectedCode: http.StatusInternalServerError, @@ -135,7 +135,7 @@ func TestCreateHandler(t *testing.T) { label: "Succesful create a VNF", input: bytes.NewBuffer([]byte(`{ "cloud_region_id": "region1", - "namespace": "test", + "rb_profile_id": "123e4567-e89b-12d3-a456-426655440000", "csar_id": "UUID-1" }`)), expectedCode: http.StatusCreated, diff --git a/src/k8splugin/api/model.go b/src/k8splugin/api/model.go index 0e4863c4..164143c2 100644 --- a/src/k8splugin/api/model.go +++ b/src/k8splugin/api/model.go @@ -17,9 +17,9 @@ package api type CreateVnfRequest struct { CloudRegionID string `json:"cloud_region_id"` CsarID string `json:"csar_id"` + RBProfileID string `json:"rb_profile_id"` OOFParams []map[string]interface{} `json:"oof_parameters"` NetworkParams NetworkParameters `json:"network_parameters"` - Namespace string `json:"namespace"` Name string `json:"vnf_instance_name"` Description string `json:"vnf_instance_description"` } @@ -56,7 +56,6 @@ type UpdateVnfRequest struct { CsarID string `json:"csar_id"` OOFParams []map[string]interface{} `json:"oof_parameters"` NetworkParams NetworkParameters `json:"network_parameters"` - Namespace string `json:"namespace"` Name string `json:"vnf_instance_name"` Description string `json:"vnf_instance_description"` } |