Add JSON type validation and enrichment 76/81876/2
authorMuthuramalingam, Brinda Santh <brindasanth@in.ibm.com>
Fri, 8 Mar 2019 21:57:08 +0000 (16:57 -0500)
committerBrinda Santh Muthuramalingam <brindasanth@in.ibm.com>
Mon, 11 Mar 2019 13:44:18 +0000 (13:44 +0000)
Change-Id: I479b8214c7979dd5bc28acac68f747f06f3f231e
Issue-ID: CCSDK-1134
Signed-off-by: Muthuramalingam, Brinda Santh <brindasanth@in.ibm.com>
components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/activation-blueprint.json
components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/node_types.json
components/model-catalog/definition-type/starter-type/node_type/component-jython-executor.json
components/model-catalog/definition-type/starter-type/node_type/component-netconf-executor.json
components/model-catalog/definition-type/starter-type/node_type/component-resource-resolution.json
components/model-catalog/definition-type/starter-type/node_type/component-restconf-executor.json
ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/factory/BluePrintValidatorFactory.kt [deleted file]
ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorService.kt
ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorDefaultServiceTest.kt [deleted file]
ms/controllerblueprints/modules/blueprint-validation/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/validation/BluePrintPropertyDefinitionValidatorImpl.kt
ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPropertyDefinitionEnhancerImpl.kt

index 6025dbd..7a92398 100644 (file)
       "file": "Definitions/policy_types.json"
     }
   ],
-  "dsl_definitions" : {
+  "dsl_definitions": {
+    "dynamic-netconf-properties": {
+      "device-name": "netconf device",
+      "host-name": "sample-host"
+    },
     "dynamic-rest-source": {
-      "type" : "basic-type",
-      "url" : "http://localhost:8080",
-      "userId" : {
+      "type": "basic-type",
+      "url": "http://localhost:8080",
+      "userId": {
         "get_input": "rest-user-name"
       }
     },
     "dynamic-db-source": {
-      "type" : "maria-db",
-      "url" : "jdbc:mysql://localhost:3306/sdnctl",
-      "username" : "sdnctl",
-      "password" : {
+      "type": "maria-db",
+      "url": "jdbc:mysql://localhost:3306/sdnctl",
+      "username": "sdnctl",
+      "password": {
         "get_attribute": [
           "BPP",
           "dynamic-db-source.password"
                   "script-type": "jython",
                   "script-class-reference": "Scripts/python/NetconfRpcExample.py",
                   "instance-dependencies": [
-                  ]
+                  ],
+                  "dynamic-properties": "*dynamic-netconf-properties"
                 },
                 "outputs": {
                   "response-data": "",
index b2ba348..8f6c44f 100644 (file)
                   "entry_schema": {
                     "type": "string"
                   }
+                },
+                "dynamic-properties": {
+                  "description": "Dynamic Json Content or DSL Json reference.",
+                  "required": false,
+                  "type": "json"
                 }
               },
               "outputs": {
                   "entry_schema": {
                     "type": "string"
                   }
+                },
+                "dynamic-properties": {
+                  "description": "Dynamic Json Content or DSL Json reference.",
+                  "required": false,
+                  "type": "json"
                 }
               },
               "outputs": {
                   "description": "Action Name of the process",
                   "required": false,
                   "type": "string"
+                },
+                "dynamic-properties": {
+                  "description": "Dynamic Json Content or DSL Json reference.",
+                  "required": false,
+                  "type": "json"
                 }
               },
               "outputs": {
index af8aae1..5a024a7 100644 (file)
               "entry_schema": {
                 "type": "string"
               }
+            },
+            "dynamic-properties": {
+              "description": "Dynamic Json Content or DSL Json reference.",
+              "required": false,
+              "type": "json"
             }
           },
           "outputs": {
index e5cb4cb..7e429c0 100644 (file)
               "entry_schema": {\r
                 "type": "string"\r
               }\r
+            },\r
+            "dynamic-properties": {\r
+              "description": "Dynamic Json Content or DSL Json reference.",\r
+              "required": false,\r
+              "type": "json"\r
             }\r
           },\r
           "outputs": {\r
index 5dbef4d..f437a79 100644 (file)
               "description": "Action Name of the process",
               "required": false,
               "type": "string"
+            },
+            "dynamic-properties": {
+              "description": "Dynamic Json Content or DSL Json reference.",
+              "required": false,
+              "type": "json"
             }
           },
           "outputs": {
index 192ed25..cb28a4a 100644 (file)
               "entry_schema": {
                 "type": "string"
               }
+            },
+            "dynamic-properties": {
+              "description": "Dynamic Json Content or DSL Json reference.",
+              "required": false,
+              "type": "json"
             }
           },
           "outputs": {
diff --git a/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/factory/BluePrintValidatorFactory.kt b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/factory/BluePrintValidatorFactory.kt
deleted file mode 100644 (file)
index 687b86c..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2017-2018 AT&T Intellectual Property.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onap.ccsdk.apps.controllerblueprints.core.factory
-
-
-import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintValidatorDefaultService
-import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintValidatorService
-
-/**
- *
- *
- * @author Brinda Santh
- */
-
-object BluePrintValidatorFactory {
-
-    var bluePrintValidatorServices: MutableMap<String, BluePrintValidatorService> = HashMap()
-
-    init {
-        bluePrintValidatorServices[org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants.TYPE_DEFAULT] = BluePrintValidatorDefaultService()
-    }
-
-    fun register(key:String, bluePrintValidatorService: BluePrintValidatorService){
-        bluePrintValidatorServices[key] = bluePrintValidatorService
-    }
-
-    fun instance(key : String) : BluePrintValidatorService?{
-        return bluePrintValidatorServices[key]
-    }
-
-}
\ No newline at end of file
index 9ee5314..06602a1 100644 (file)
@@ -41,6 +41,7 @@ interface BluePrintValidatorService : Serializable {
     fun validateBlueprint(serviceTemplate: ServiceTemplate, properties: MutableMap<String, Any>)
 }
 
+@Deprecated("Decomposed implementation moved to blueprint-validation module")
 open class BluePrintValidatorDefaultService : BluePrintValidatorService {
 
     val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintValidatorDefaultService::class.toString())
diff --git a/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorDefaultServiceTest.kt b/ms/controllerblueprints/modules/blueprint-core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorDefaultServiceTest.kt
deleted file mode 100644 (file)
index be360d9..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright © 2017-2018 AT&T Intellectual Property.
- * Modifications Copyright © 2018 IBM.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onap.ccsdk.apps.controllerblueprints.core.service
-
-import com.att.eelf.configuration.EELFLogger
-import com.att.eelf.configuration.EELFManager
-import org.junit.Before
-import org.junit.Test
-import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils
-
-/**
- *
- *
- * @author Brinda Santh
- */
-class BluePrintValidatorDefaultServiceTest {
-    private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())
-
-    @Before
-    fun setUp(): Unit {
-
-    }
-
-    @Test
-    fun testValidateBluePrint() {
-
-        val blueprintBasePath: String = ("./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration")
-        val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath)
-        val properties: MutableMap<String, Any> = hashMapOf()
-
-        val validatorService = BluePrintValidatorDefaultService()
-        validatorService.validateBlueprint(bluePrintContext.serviceTemplate, properties)
-        log.info("Validation Message {}", properties)
-    }
-}
\ No newline at end of file
index 7d81ba6..62a8228 100644 (file)
@@ -51,6 +51,9 @@ open class BluePrintPropertyDefinitionValidatorImpl(private val bluePrintTypeVal
             BluePrintTypes.validPrimitiveTypes().contains(dataType) -> {
                 // Do Nothing
             }
+            BluePrintTypes.validComplexTypes().contains(dataType) -> {
+                // Do Nothing
+            }
             BluePrintTypes.validCollectionTypes().contains(dataType) -> {
                 val entrySchemaType: String = propertyDefinition.entrySchema?.type
                         ?: throw BluePrintException(format("Entry schema for DataType ({}) for the property ({}) not found", dataType, name))
index 1ae558f..1675e8c 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 IBM.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -43,8 +44,9 @@ open class BluePrintPropertyDefinitionEnhancerImpl(private val bluePrintRepoServ
         this.bluePrintContext = bluePrintRuntimeService.bluePrintContext()
 
         val propertyType = propertyDefinition.type
-        if (BluePrintTypes.validPrimitiveTypes().contains(propertyType)) {
-
+        if (BluePrintTypes.validPrimitiveTypes().contains(propertyType)
+                || BluePrintTypes.validComplexTypes().contains(propertyType)) {
+            // Do Nothing,
         } else if (BluePrintTypes.validCollectionTypes().contains(propertyType)) {
             val entrySchema = propertyDefinition.entrySchema
                     ?: throw BluePrintException("Entry Schema is missing for collection property($name)")