diff options
author | Ritu Sood <Ritu.Sood@intel.com> | 2020-09-11 00:04:32 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2020-09-11 00:04:32 +0000 |
commit | b9e5d308a5e357d987758005e928f825d773ccca (patch) | |
tree | e8eb4213cce343ea8b2eeec1d8c7eb98f4608eb5 /src/orchestrator/api | |
parent | 172bebb96ce3ef47f5514c5f7a9a2b70d583f31c (diff) | |
parent | b2c9f4c61d00bf18e7a253c410479f8124640106 (diff) |
Merge "Adding validations for all JSON data across modules"
Diffstat (limited to 'src/orchestrator/api')
27 files changed, 43 insertions, 931 deletions
diff --git a/src/orchestrator/api/add_intents_handler.go b/src/orchestrator/api/add_intents_handler.go index 21a33739..66f3839a 100644 --- a/src/orchestrator/api/add_intents_handler.go +++ b/src/orchestrator/api/add_intents_handler.go @@ -27,6 +27,8 @@ import ( "github.com/gorilla/mux" ) +var addIntentJSONFile string = "json-schemas/deployment-intent.json" + type intentHandler struct { client moduleLib.IntentManager } @@ -46,9 +48,8 @@ func (h intentHandler) addIntentHandler(w http.ResponseWriter, r *http.Request) return } - jsonFile := "json-schemas/deployment-intent.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, i) + err, httpError := validation.ValidateJsonSchemaData(addIntentJSONFile, i) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/app_intent_handler.go b/src/orchestrator/api/app_intent_handler.go index a51b9b92..1d48f8a6 100644 --- a/src/orchestrator/api/app_intent_handler.go +++ b/src/orchestrator/api/app_intent_handler.go @@ -26,6 +26,8 @@ import ( moduleLib "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module" ) +var appIntentJSONFile string = "json-schemas/generic-placement-intent-app.json" + /* Used to store backend implementation objects Also simplifies mocking for unit testing purposes */ @@ -48,9 +50,8 @@ func (h appIntentHandler) createAppIntentHandler(w http.ResponseWriter, r *http. return } - jsonFile := "json-schemas/generic-placement-intent-app.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, a) + err, httpError := validation.ValidateJsonSchemaData(appIntentJSONFile, a) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/app_profilehandler.go b/src/orchestrator/api/app_profilehandler.go index 2fa0f26d..58cd2145 100644 --- a/src/orchestrator/api/app_profilehandler.go +++ b/src/orchestrator/api/app_profilehandler.go @@ -34,6 +34,8 @@ import ( pkgerrors "github.com/pkg/errors" ) +var appProfileJSONFile string = "json-schemas/metadata.json" + /* Used to store backend implementation objects Also simplifies mocking for unit testing purposes */ @@ -73,9 +75,8 @@ func (h appProfileHandler) createAppProfileHandler(w http.ResponseWriter, r *htt return } - jsonFile := "json-schemas/metadata.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, ap) + err, httpError := validation.ValidateJsonSchemaData(appProfileJSONFile, ap) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/apphandler.go b/src/orchestrator/api/apphandler.go index 7d901a8f..7429f5c2 100644 --- a/src/orchestrator/api/apphandler.go +++ b/src/orchestrator/api/apphandler.go @@ -33,6 +33,8 @@ import ( "github.com/gorilla/mux" ) +var appJSONFile string = "json-schemas/metadata.json" + // appHandler to store backend implementations objects // Also simplifies mocking for unit testing purposes type appHandler struct { @@ -70,9 +72,8 @@ func (h appHandler) createAppHandler(w http.ResponseWriter, r *http.Request) { return } - jsonFile := "json-schemas/metadata.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, a) + err, httpError := validation.ValidateJsonSchemaData(appJSONFile, a) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/composite_app_handler.go b/src/orchestrator/api/composite_app_handler.go index 1e69c353..d531b28d 100644 --- a/src/orchestrator/api/composite_app_handler.go +++ b/src/orchestrator/api/composite_app_handler.go @@ -26,6 +26,8 @@ import ( moduleLib "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module" ) +var caJSONFile string = "json-schemas/composite-app.json" + // compositeAppHandler to store backend implementations objects // Also simplifies mocking for unit testing purposes type compositeAppHandler struct { @@ -47,9 +49,8 @@ func (h compositeAppHandler) createHandler(w http.ResponseWriter, r *http.Reques http.Error(w, err.Error(), http.StatusUnprocessableEntity) return } - jsonFile := "json-schemas/composite-app.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, c) + err, httpError := validation.ValidateJsonSchemaData(caJSONFile, c) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/composite_profilehandler.go b/src/orchestrator/api/composite_profilehandler.go index 5a3fb19c..de1c8f2d 100644 --- a/src/orchestrator/api/composite_profilehandler.go +++ b/src/orchestrator/api/composite_profilehandler.go @@ -27,6 +27,8 @@ import ( "github.com/gorilla/mux" ) +var caprofileJSONFile string = "json-schemas/metadata.json" + /* Used to store backend implementation objects Also simplifies mocking for unit testing purposes */ @@ -49,9 +51,8 @@ func (h compositeProfileHandler) createHandler(w http.ResponseWriter, r *http.Re return } - jsonFile := "json-schemas/metadata.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, cpf) + err, httpError := validation.ValidateJsonSchemaData(caprofileJSONFile, cpf) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/composite_profilehandler_test.go b/src/orchestrator/api/composite_profilehandler_test.go index ec3ec24b..d1e34230 100644 --- a/src/orchestrator/api/composite_profilehandler_test.go +++ b/src/orchestrator/api/composite_profilehandler_test.go @@ -70,6 +70,10 @@ func (m *mockCompositeProfileManager) DeleteCompositeProfile(name string, projec return m.Err } +func init() { + caprofileJSONFile = "../json-schemas/metadata.json" +} + func Test_compositeProfileHandler_createHandler(t *testing.T) { testCases := []struct { label string diff --git a/src/orchestrator/api/controllerhandler.go b/src/orchestrator/api/controllerhandler.go index be300d89..418aa70f 100644 --- a/src/orchestrator/api/controllerhandler.go +++ b/src/orchestrator/api/controllerhandler.go @@ -28,6 +28,8 @@ import ( pkgerrors "github.com/pkg/errors" ) +var controllerJSONFile string = "json-schemas/controller.json" + // Used to store backend implementations objects // Also simplifies mocking for unit testing purposes type controllerHandler struct { @@ -87,9 +89,8 @@ func (h controllerHandler) createHandler(w http.ResponseWriter, r *http.Request) return } - jsonFile := "json-schemas/controller.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, m) + err, httpError := validation.ValidateJsonSchemaData(controllerJSONFile, m) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/controllerhandler_test.go b/src/orchestrator/api/controllerhandler_test.go index 6cbb2a79..ecc2d1f7 100644 --- a/src/orchestrator/api/controllerhandler_test.go +++ b/src/orchestrator/api/controllerhandler_test.go @@ -73,6 +73,10 @@ func (m *mockControllerManager) InitControllers() { return } +func init() { + controllerJSONFile = "../json-schemas/controller.json" +} + func TestControllerCreateHandler(t *testing.T) { testCases := []struct { label string diff --git a/src/orchestrator/api/deployment_intent_groups_handler.go b/src/orchestrator/api/deployment_intent_groups_handler.go index 76dea14c..b9466a2c 100644 --- a/src/orchestrator/api/deployment_intent_groups_handler.go +++ b/src/orchestrator/api/deployment_intent_groups_handler.go @@ -27,6 +27,8 @@ import ( "github.com/gorilla/mux" ) +var dpiJSONFile string = "json-schemas/deployment-group-intent.json" + /* Used to store backend implementation objects Also simplifies mocking for unit testing purposes */ @@ -49,9 +51,8 @@ func (h deploymentIntentGroupHandler) createDeploymentIntentGroupHandler(w http. return } - jsonFile := "json-schemas/deployment-group-intent.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, d) + err, httpError := validation.ValidateJsonSchemaData(dpiJSONFile, d) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/generic_placement_intent_handler.go b/src/orchestrator/api/generic_placement_intent_handler.go index 16f1f234..2415ae2c 100644 --- a/src/orchestrator/api/generic_placement_intent_handler.go +++ b/src/orchestrator/api/generic_placement_intent_handler.go @@ -27,6 +27,8 @@ import ( "github.com/gorilla/mux" ) +var gpiJSONFile string = "json-schemas/generic-placement-intent.json" + /* Used to store backend implementation objects Also simplifies mocking for unit testing purposes */ @@ -49,9 +51,8 @@ func (h genericPlacementIntentHandler) createGenericPlacementIntentHandler(w htt return } - jsonFile := "json-schemas/generic-placement-intent.json" // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, g) + err, httpError := validation.ValidateJsonSchemaData(gpiJSONFile, g) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/json-schemas/cluster-kv.json b/src/orchestrator/api/json-schemas/cluster-kv.json deleted file mode 100644 index c7013bab..00000000 --- a/src/orchestrator/api/json-schemas/cluster-kv.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "required": [ - "kv" - ], - "type": "object", - "properties": { - "kv": { - "items": { - "additionalProperties": { - "type": "string", - "maxLength": 128 - }, - "type": "object" - }, - "type": "array" - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/cluster-label.json b/src/orchestrator/api/json-schemas/cluster-label.json deleted file mode 100644 index 22267b3d..00000000 --- a/src/orchestrator/api/json-schemas/cluster-label.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "label-name": { - "description": "Logical Cloud to use for this intent", - "type": "string", - "example": "cluster-label-1", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/composite-app.json b/src/orchestrator/api/json-schemas/composite-app.json deleted file mode 100644 index 3f976831..00000000 --- a/src/orchestrator/api/json-schemas/composite-app.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "version": { - "description": "Composite Application Version", - "type": "string", - "example": "v1", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/composite-profile.json b/src/orchestrator/api/json-schemas/composite-profile.json deleted file mode 100644 index e404a64c..00000000 --- a/src/orchestrator/api/json-schemas/composite-profile.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "app-name": { - "description": "Application Name", - "required": [ - "app-name" - ], - "type": "string", - "example": "Application1", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/controller.json b/src/orchestrator/api/json-schemas/controller.json deleted file mode 100644 index 3263ff21..00000000 --- a/src/orchestrator/api/json-schemas/controller.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "required": [ - "host", - "port", - "type", - "priority" - ], - "type": "object", - "properties": { - "priority": { - "description": "Priority of controller to be called", - "type": "integer", - "example": 4, - "minimum": 0, - "maximum": 100 - }, - "host": { - "description": "Controller reachibility information", - "type": "string", - "example": "10.7.100.4", - "maxLength": 128 - }, - "type": { - "description": "Type of controller (placement, action are 2 types supported)", - "type": "string", - "example": "placement", - "maxLength": 48 - }, - "port": { - "description": "Port for controller", - "type": "integer", - "minimum": 0, - "maximum": 50000, - "example": 9029 - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/deployment-group-intent.json b/src/orchestrator/api/json-schemas/deployment-group-intent.json deleted file mode 100644 index 2740747b..00000000 --- a/src/orchestrator/api/json-schemas/deployment-group-intent.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "required": [ - "profile", - "version" - ], - "type": "object", - "description": "DepSpecData has profile, version, OverrideValuesObj", - "properties": { - "override-values": { - "items": { - "required": [ - "app-name", - "values" - ], - "type": "object", - "description": "OverrideValues has appName and ValuesObj", - "properties": { - "app-name": { - "type": "string" - }, - "values": { - "additionalProperties": { - "type": "string", - "maxLength": 128 - }, - "type": "object" - } - } - }, - "type": "array" - }, - "profile": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "version": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/deployment-intent.json b/src/orchestrator/api/json-schemas/deployment-intent.json deleted file mode 100644 index 6bdc0b43..00000000 --- a/src/orchestrator/api/json-schemas/deployment-intent.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "required": [ - "intent" - ], - "type": "object", - "description": "IntentSpecData has Intent", - "properties": { - "intent": { - "additionalProperties": { - "type": "string", - "maxLength": 128 - }, - "type": "object", - "example": { - "generic-placement-intent": "gpi-name" - } - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } -}
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/generic-placement-intent-app.json b/src/orchestrator/api/json-schemas/generic-placement-intent-app.json deleted file mode 100644 index 0b6447c2..00000000 --- a/src/orchestrator/api/json-schemas/generic-placement-intent-app.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "properties": { - "app-name": { - "type": "string", - "example": "appl", - "maxLength": 128 - }, - "anyOf": { - "items": { - "type": "object", - "description": "AnyOf consists of Array of ProviderName & ClusterLabelNames", - "properties": { - "cluster-label-name": { - "type": "string", - "example": "east", - "maxLength": 128 - }, - "provider-name": { - "type": "string", - "example": "provider1", - "maxLength": 128 - }, - "cluster-name": { - "type": "string", - "example": "cluster1", - "maxLength": 128 - } - } - }, - "type": "array" - }, - "allOf": { - "items": { - "type": "object", - "description": "AllOf ProviderName, ClusterName, ClusterLabelName and AnyOfArray", - "properties": { - "provider-name": { - "type": "string", - "example": "provider2", - "maxLength": 128 - }, - "cluster-label-name": { - "type": "string", - "example": "west", - "maxLength": 128 - }, - "anyOf": { - "items": { - "type": "object", - "description": "AnyOf consists of Array of ProviderName & ClusterLabelNames", - "properties": { - "cluster-label-name": { - "type": "string", - "example": "east", - "maxLength": 128 - }, - "provider-name": { - "type": "string", - "example": "provider1", - "maxLength": 128 - }, - "cluster-name": { - "type": "string", - "example": "cluster1", - "maxLength": 128 - } - } - }, - "type": "array" - }, - "cluster-name": { - "type": "string", - "example": "cluster2", - "maxLength": 128 - } - } - }, - "type": "array" - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } -}
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/generic-placement-intent.json b/src/orchestrator/api/json-schemas/generic-placement-intent.json deleted file mode 100644 index 44df9087..00000000 --- a/src/orchestrator/api/json-schemas/generic-placement-intent.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "type": "object", - "description": "Spec", - "properties": { - "logical-cloud": { - "description": "Logical Cloud to use for this intent", - "required": [ - "logical-cloud" - ], - "type": "string", - "example": "cloud1", - "maxLength": 128 - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/metadata.json b/src/orchestrator/api/json-schemas/metadata.json deleted file mode 100644 index 960545ee..00000000 --- a/src/orchestrator/api/json-schemas/metadata.json +++ /dev/null @@ -1,37 +0,0 @@ - -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/network-load-interface.json b/src/orchestrator/api/json-schemas/network-load-interface.json deleted file mode 100644 index dd5b40d1..00000000 --- a/src/orchestrator/api/json-schemas/network-load-interface.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "required": [ - "interface", - "name" - ], - "type": "object", - "properties": { - "interface": { - "description": "interface Name", - "type": "string", - "example": "eth0", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "macAddress": { - "description": "Name of the network", - "type": "string", - "example": "x.x.x.x", - "maxLength": 128 - }, - "ipAddress": { - "description": "Name of the network", - "type": "string", - "example": "0.0.0.0", - "maxLength": 128 - }, - "name": { - "description": "Name of the network", - "type": "string", - "example": "provider-1", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "defaultGateway": { - "description": "Is this interface default gateway", - "type": "boolean", - "example": false, - "maxLength": 128 - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - }
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/network-workload.json b/src/orchestrator/api/json-schemas/network-workload.json deleted file mode 100644 index c5dc14cb..00000000 --- a/src/orchestrator/api/json-schemas/network-workload.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "type": "object", - "description": "Newtwork Workload Intent", - "properties": { - "spec": { - "type": "object", - "properties": { - "workload-resource": { - "description": "Name of the workload", - "type": "string", - "example": "firewall", - "maxLength": 254, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "type": { - "description": "Type of the workload", - "type": "string", - "example": "deployment", - "maxLength": 128 - }, - "application-name": { - "description": "Application Name", - "type": "string", - "example": "Application1", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } - } - } -}
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/provider-network.json b/src/orchestrator/api/json-schemas/provider-network.json deleted file mode 100644 index 0aef0304..00000000 --- a/src/orchestrator/api/json-schemas/provider-network.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "required": [ - "cniType", - "ipv4Subnets", - "providerNetType", - "vlan" - ], - "type": "object", - "properties": { - "ipv4Subnets": { - "items": { - "required": [ - "name", - "subnet" - ], - "type": "object", - "properties": { - "subnet": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "excludeIps": { - "type": "string", - "maxLength": 128 - }, - "gateway": { - "type": "string", - "maxLength": 128 - }, - "name": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - } - } - }, - "type": "array" - }, - "cniType": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "vlan": { - "required": [ - "logicalInterfaceName", - "nodeLabelList", - "providerInterfaceName", - "vlanID", - "vlanNodeSelector" - ], - "type": "object", - "properties": { - "vlanNodeSelector": { - "type": "string", - "maxLength": 128 - }, - "nodeLabelList": { - "items": { - "type": "string", - "maxLength": 128 - }, - "type": "array" - }, - "providerInterfaceName": { - "type": "string", - "maxLength": 128 - }, - "vlanID": { - "type": "string", - "maxLength": 128 - }, - "logicalInterfaceName": { - "type": "string", - "maxLength": 128 - } - } - }, - "providerNetType": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } -}
\ No newline at end of file diff --git a/src/orchestrator/api/json-schemas/virtual-network.json b/src/orchestrator/api/json-schemas/virtual-network.json deleted file mode 100644 index f2bc9d3d..00000000 --- a/src/orchestrator/api/json-schemas/virtual-network.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "spec": { - "properties": { - "ipv4Subnets": { - "items": { - "required": [ - "name", - "subnet" - ], - "type": "object", - "properties": { - "subnet": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "excludeIps": { - "type": "string", - "maxLength": 1024 - }, - "gateway": { - "type": "string", - "maxLength": 128 - }, - "name": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - } - } - }, - "type": "array" - }, - "cniType": { - "type": "string", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - } - } - }, - "metadata": { - "required": ["name"], - "properties": { - "userData2": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some more data", - "maxLength": 512 - }, - "userData1": { - "description": "User relevant data for the resource", - "type": "string", - "example": "Some data", - "maxLength": 512 - }, - "name": { - "description": "Name of the resource", - "type": "string", - "example": "ResName", - "maxLength": 128, - "pattern": "[-_0-9a-zA-Z]+$" - }, - "description": { - "description": "Description for the resource", - "type": "string", - "example": "Resource description", - "maxLength": 1024 - } - } - } - } -}
\ No newline at end of file diff --git a/src/orchestrator/api/projecthandler.go b/src/orchestrator/api/projecthandler.go index f130d283..07cd79ce 100644 --- a/src/orchestrator/api/projecthandler.go +++ b/src/orchestrator/api/projecthandler.go @@ -26,6 +26,8 @@ import ( moduleLib "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module" ) +var projectJSONFile string = "json-schemas/metadata.json" + // Used to store backend implementations objects // Also simplifies mocking for unit testing purposes type projectHandler struct { @@ -47,9 +49,9 @@ func (h projectHandler) createHandler(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusUnprocessableEntity) return } - jsonFile := "json-schemas/metadata.json" + // Verify JSON Body - err, httpError := validation.ValidateJsonSchemaData(jsonFile, p) + err, httpError := validation.ValidateJsonSchemaData(projectJSONFile, p) if err != nil { http.Error(w, err.Error(), httpError) return diff --git a/src/orchestrator/api/projecthandler_test.go b/src/orchestrator/api/projecthandler_test.go index ef5fdf07..5e88bab9 100644 --- a/src/orchestrator/api/projecthandler_test.go +++ b/src/orchestrator/api/projecthandler_test.go @@ -64,6 +64,10 @@ func (m *mockProjectManager) GetAllProjects() ([]moduleLib.Project, error) { return []moduleLib.Project{}, m.Err } +func init() { + projectJSONFile = "../json-schemas/metadata.json" +} + func TestProjectCreateHandler(t *testing.T) { testCases := []struct { label string |