Controller Blueprints Microservice 01/65201/1
authorBrinda Santh <brindasanth@in.ibm.com>
Fri, 7 Sep 2018 13:00:40 +0000 (09:00 -0400)
committerBrinda Santh <brindasanth@in.ibm.com>
Fri, 7 Sep 2018 13:00:40 +0000 (09:00 -0400)
Add Controller Blueprint Capabily Assignment and their properies validation.

Change-Id: I845fec3d307414b2caeb1d577308a17656ff194a
Issue-ID: CCSDK-484
Signed-off-by: Brinda Santh <brindasanth@in.ibm.com>
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorService.kt
ms/controllerblueprints/modules/service/load/blueprints/vrr-test/Definitions/vrr-test.json

index 2b11589..8c00e0a 100644 (file)
@@ -136,7 +136,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService {
         //Check Derived From\r
         checkValidNodeTypesDerivedFrom(nodeTypeName, derivedFrom)\r
 \r
-        if(!BluePrintTypes.rootNodeTypes().contains(derivedFrom)){\r
+        if (!BluePrintTypes.rootNodeTypes().contains(derivedFrom)) {\r
             serviceTemplate.nodeTypes?.get(derivedFrom)\r
                     ?: throw BluePrintException(format("Failed to get derivedFrom NodeType({})'s for NodeType({}) ",\r
                             derivedFrom, nodeTypeName))\r
@@ -193,7 +193,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService {
 \r
         nodeTemplate.artifacts?.let { validateArtifactDefinitions(nodeTemplate.artifacts!!) }\r
         nodeTemplate.properties?.let { validatePropertyAssignments(nodeType.properties!!, nodeTemplate.properties!!) }\r
-        nodeTemplate.capabilities?.let { validateCapabilityAssignments(nodeTemplate.capabilities!!) }\r
+        nodeTemplate.capabilities?.let { validateCapabilityAssignments(nodeType, nodeTemplateName, nodeTemplate) }\r
         nodeTemplate.requirements?.let { validateRequirementAssignments(nodeType, nodeTemplateName, nodeTemplate) }\r
         nodeTemplate.interfaces?.let { validateInterfaceAssignments(nodeType, nodeTemplateName, nodeTemplate) }\r
         paths.removeAt(paths.lastIndex)\r
@@ -291,7 +291,28 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService {
     }\r
 \r
     @Throws(BluePrintException::class)\r
-    open fun validateCapabilityAssignments(capabilities: MutableMap<String, CapabilityAssignment>) {\r
+    open fun validateCapabilityAssignments(nodeType: NodeType, nodeTemplateName: String, nodeTemplate: NodeTemplate) {\r
+        val capabilities = nodeTemplate.capabilities\r
+        paths.add("capabilities")\r
+        capabilities?.forEach { capabilityName, capabilityAssignment ->\r
+            paths.add(capabilityName)\r
+\r
+            val capabilityDefinition = nodeType.capabilities?.get(capabilityName)\r
+                    ?: throw BluePrintException(format("Failed to get NodeTemplate({}) capability definition ({}) " +\r
+                            "from NodeType({}) ", nodeTemplateName, capabilityName, nodeTemplate.type))\r
+\r
+            validateCapabilityAssignment(nodeTemplateName, capabilityName, capabilityDefinition, capabilityAssignment)\r
+\r
+            paths.removeAt(paths.lastIndex)\r
+        }\r
+        paths.removeAt(paths.lastIndex)\r
+    }\r
+\r
+    @Throws(BluePrintException::class)\r
+    open fun validateCapabilityAssignment(nodeTemplateName: String, capabilityName: String,\r
+                                          capabilityDefinition: CapabilityDefinition, capabilityAssignment: CapabilityAssignment) {\r
+\r
+        capabilityAssignment.properties?.let { validatePropertyAssignments(capabilityDefinition.properties!!, capabilityAssignment.properties!!) }\r
 \r
     }\r
 \r
@@ -396,6 +417,15 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService {
                     validatePropertyAssignment(propertyName, propertyDefinition, propertyAssignment)\r
                 }\r
 \r
+                outputs?.forEach { propertyName, propertyAssignment ->\r
+                    val propertyDefinition = operationDefinition.outputs?.get(propertyName)\r
+                            ?: throw BluePrintException(format("Failed to get NodeTemplate({}) operation definition ({}) " +\r
+                                    "output property definition({})", nodeTemplateName, operationAssignmentName,\r
+                                    propertyName))\r
+                    // Check the property values with property definition\r
+                    validatePropertyAssignment(propertyName, propertyDefinition, propertyAssignment)\r
+                }\r
+\r
             }\r
         }\r
 \r
index 9278579..724dfc4 100644 (file)
             "properties": {\r
               "profile-name": "sample",\r
               "oam-ipv4-address": "{ \"get_attribute\" : \"hostname\" }",\r
-              "port-number": "{ \"get_attribute\" : \"host-port\" }",\r
+              "port-number": { "get_input" : "host-port" },\r
               "connection-time-out": 30\r
             }\r
           }\r