Controller Blueprints Microservice
authorMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Thu, 13 Sep 2018 00:20:34 +0000 (00:20 +0000)
committerMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Thu, 13 Sep 2018 00:47:05 +0000 (00:47 +0000)
Add resource assignment enhancement and validation to blueprint validation and enhancement.

Change-Id: I547760012e7014cfbb7a1e3a1d8ffb77edc9b6a2
Issue-ID: CCSDK-562
Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintTypes.kt
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/factory/BluePrintEnhancerFactory.kt [deleted file]
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerService.kt [deleted file]
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoService.kt
components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerServiceTest.kt [deleted file]
components/resource-dict/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/resource/dict/service/ResourceAssignmentValidationService.kt
components/resource-dict/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/resource/dict/service/ResourceDefinitionRepoService.kt

index e25b3ee..a971898 100644 (file)
@@ -16,6 +16,8 @@
 \r
 package org.onap.ccsdk.apps.controllerblueprints.core\r
 \r
+import org.onap.ccsdk.apps.controllerblueprints.core.data.PropertyDefinition\r
+\r
 /**\r
  *\r
  *\r
@@ -104,6 +106,7 @@ object BluePrintTypes {
         validTypes.add(BluePrintConstants.DATA_TYPE_TIMESTAMP)\r
         validTypes.add(BluePrintConstants.DATA_TYPE_NULL)\r
         validTypes.add(BluePrintConstants.DATA_TYPE_LIST)\r
+        validTypes.add(BluePrintConstants.DATA_TYPE_MAP)\r
         return validTypes\r
     }\r
 \r
@@ -127,6 +130,13 @@ object BluePrintTypes {
         return validTypes\r
     }\r
 \r
+    @JvmStatic\r
+    fun validPrimitiveOrCollectionPrimitive(propertyDefinition: PropertyDefinition): Boolean {\r
+        val entrySchema = propertyDefinition.entrySchema?.type ?: BluePrintConstants.DATA_TYPE_NULL\r
+        return BluePrintTypes.validPropertyTypes().contains(propertyDefinition.type)\r
+                && BluePrintTypes.validPrimitiveTypes().contains(entrySchema)\r
+    }\r
+\r
     @JvmStatic\r
     fun validCommands(): List<String> {\r
         return listOf(BluePrintConstants.EXPRESSION_GET_INPUT,\r
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/factory/BluePrintEnhancerFactory.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/factory/BluePrintEnhancerFactory.kt
deleted file mode 100644 (file)
index d796597..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*\r
- * Copyright © 2017-2018 AT&T Intellectual Property.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-package org.onap.ccsdk.apps.controllerblueprints.core.factory\r
-\r
-import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintEnhancerService\r
-import com.att.eelf.configuration.EELFLogger\r
-import com.att.eelf.configuration.EELFManager\r
-\r
-\r
-/**\r
- * BluePrintEnhancerFactory\r
- * @author Brinda Santh\r
- *\r
- */\r
-\r
-object BluePrintEnhancerFactory {\r
-    private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())\r
-\r
-    var bluePrintEnhancerServices: MutableMap<String, BluePrintEnhancerService> = HashMap()\r
-\r
-    fun register(key: String, bluePrintEnhancerService: BluePrintEnhancerService) {\r
-        bluePrintEnhancerServices[key] = bluePrintEnhancerService\r
-    }\r
-\r
-    /**\r
-     * Called by clients to get a Blueprint Parser for the Blueprint parser type\r
-     */\r
-    fun instance(key: String): BluePrintEnhancerService? {\r
-        return bluePrintEnhancerServices.get(key)\r
-    }\r
-}\r
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerService.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerService.kt
deleted file mode 100644 (file)
index b125c59..0000000
+++ /dev/null
@@ -1,271 +0,0 @@
-/*\r
- * Copyright © 2017-2018 AT&T Intellectual Property.\r
- * Modifications Copyright © 2018 IBM.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-package org.onap.ccsdk.apps.controllerblueprints.core.service\r
-\r
-import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException\r
-import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintTypes\r
-import org.onap.ccsdk.apps.controllerblueprints.core.data.*\r
-import org.onap.ccsdk.apps.controllerblueprints.core.format\r
-import com.att.eelf.configuration.EELFLogger\r
-import com.att.eelf.configuration.EELFManager\r
-import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonReactorUtils\r
-import java.io.Serializable\r
-\r
-/**\r
- * BluePrintEnhancerService\r
- * @author Brinda Santh\r
- *\r
- */\r
-interface BluePrintEnhancerService : Serializable {\r
-\r
-    @Throws(BluePrintException::class)\r
-    fun enhance(content: String): ServiceTemplate\r
-\r
-    /**\r
-     * Read Blueprint from CSAR structure Directory\r
-     */\r
-    @Throws(BluePrintException::class)\r
-    fun enhance(fileName: String, basePath: String): ServiceTemplate\r
-\r
-    @Throws(BluePrintException::class)\r
-    fun enhance(serviceTemplate: ServiceTemplate): ServiceTemplate\r
-\r
-    @Throws(BluePrintException::class)\r
-    fun enrichNodeTemplate(nodeTemplateName: String, nodeTemplate: NodeTemplate)\r
-\r
-    @Throws(BluePrintException::class)\r
-    fun enrichNodeType(nodeTypeName: String, nodeType: NodeType)\r
-\r
-    @Throws(BluePrintException::class)\r
-    fun enrichPropertyDefinition(propertyName: String, propertyDefinition: PropertyDefinition)\r
-}\r
-\r
-open class BluePrintEnhancerDefaultService(val bluePrintRepoService: BluePrintRepoService) : BluePrintEnhancerService {\r
-\r
-    private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintEnhancerDefaultService::class.toString())\r
-\r
-    lateinit var serviceTemplate: ServiceTemplate\r
-\r
-    @Throws(BluePrintException::class)\r
-    override fun enhance(content: String): ServiceTemplate {\r
-        return JacksonReactorUtils.readValueFromFile(content, ServiceTemplate::class.java).map { serviceTemplate ->\r
-            enhance(serviceTemplate!!)\r
-        }.block()!!\r
-    }\r
-\r
-    @Throws(BluePrintException::class)\r
-    override fun enhance(fileName: String, basePath: String): ServiceTemplate {\r
-        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.\r
-    }\r
-\r
-    @Throws(BluePrintException::class)\r
-    override fun enhance(serviceTemplate: ServiceTemplate): ServiceTemplate {\r
-        this.serviceTemplate = serviceTemplate\r
-        initialCleanUp()\r
-        enrichTopologyTemplate(serviceTemplate)\r
-\r
-        // log.info("Enriched Blueprint :\n {}", JacksonUtils.getJson(serviceTemplate, true))\r
-        return this.serviceTemplate\r
-    }\r
-\r
-    open fun initialCleanUp() {\r
-        serviceTemplate.artifactTypes?.clear()\r
-        serviceTemplate.nodeTypes?.clear()\r
-        serviceTemplate.dataTypes?.clear()\r
-\r
-        serviceTemplate.artifactTypes = HashMap()\r
-        serviceTemplate.nodeTypes = HashMap()\r
-        serviceTemplate.dataTypes = HashMap()\r
-\r
-    }\r
-\r
-    @Throws(BluePrintException::class)\r
-    open fun enrichTopologyTemplate(serviceTemplate: ServiceTemplate) {\r
-        serviceTemplate.topologyTemplate?.let { topologyTemplate ->\r
-            enrichTopologyTemplateInputs(topologyTemplate)\r
-            enrichTopologyTemplateNodeTemplates(topologyTemplate)\r
-        }\r
-    }\r
-\r
-    @Throws(BluePrintException::class)\r
-    open fun enrichTopologyTemplateInputs(topologyTemplate: TopologyTemplate) {\r
-        topologyTemplate.inputs?.let { inputs ->\r
-            enrichPropertyDefinitions(inputs)\r
-        }\r
-    }\r
-\r
-    open fun enrichTopologyTemplateNodeTemplates(topologyTemplate: TopologyTemplate) {\r
-        topologyTemplate.nodeTemplates?.forEach { nodeTemplateName, nodeTemplate ->\r
-            enrichNodeTemplate(nodeTemplateName, nodeTemplate)\r
-        }\r
-    }\r
-\r
-    @Throws(BluePrintException::class)\r
-    override fun enrichNodeTemplate(nodeTemplateName: String, nodeTemplate: NodeTemplate) {\r
-        val nodeTypeName = nodeTemplate.type\r
-        // Get NodeType from Repo and Update Service Template\r
-        val nodeType = populateNodeType(nodeTypeName)\r
-\r
-        // Enrich NodeType\r
-        enrichNodeType(nodeTypeName, nodeType)\r
-\r
-        //Enrich Node Template Artifacts\r
-        enrichNodeTemplateArtifactDefinition(nodeTemplateName, nodeTemplate)\r
-    }\r
-\r
-    @Throws(BluePrintException::class)\r
-    override fun enrichNodeType(nodeTypeName: String, nodeType: NodeType) {\r
-        log.debug("Enriching NodeType({})", nodeTypeName)\r
-        val derivedFrom = nodeType.derivedFrom\r
-\r
-        if (!BluePrintTypes.rootNodeTypes().contains(derivedFrom)) {\r
-            val derivedFromNodeType = populateNodeType(nodeTypeName)\r
-            // Enrich NodeType\r
-            enrichNodeType(derivedFrom, derivedFromNodeType)\r
-        }\r
-\r
-        // NodeType Property Definitions\r
-        enrichNodeTypeProperties(nodeTypeName, nodeType)\r
-\r
-        //NodeType Requirement\r
-        enrichNodeTypeRequirements(nodeTypeName, nodeType)\r
-\r
-        //NodeType Capability\r
-        enrichNodeTypeCapabilityProperties(nodeTypeName, nodeType)\r
-\r
-        //NodeType Interface\r
-        enrichNodeTypeInterfaces(nodeTypeName, nodeType)\r
-    }\r
-\r
-    open fun enrichNodeTypeProperties(nodeTypeName: String, nodeType: NodeType) {\r
-        nodeType.properties?.let { enrichPropertyDefinitions(nodeType.properties!!) }\r
-    }\r
-\r
-    open fun enrichNodeTypeRequirements(nodeTypeName: String, nodeType: NodeType) {\r
-\r
-        nodeType.requirements?.forEach { _, requirementDefinition ->\r
-            // Populate Requirement Node\r
-            requirementDefinition.node?.let { requirementNodeTypeName ->\r
-                // Get Requirement NodeType from Repo and Update Service Template\r
-                val requirementNodeType = populateNodeType(requirementNodeTypeName)\r
-\r
-                enrichNodeType(requirementNodeTypeName, requirementNodeType)\r
-            }\r
-        }\r
-    }\r
-\r
-    open fun enrichNodeTypeCapabilityProperties(nodeTypeName: String, nodeType: NodeType) {\r
-        nodeType.capabilities?.forEach { capabilityDefinitionName, capabilityDefinition ->\r
-            capabilityDefinition.properties?.let { properties ->\r
-                enrichPropertyDefinitions(properties)\r
-            }\r
-        }\r
-    }\r
-\r
-    open fun enrichNodeTypeInterfaces(nodeTypeName: String, nodeType: NodeType) {\r
-        nodeType.interfaces?.forEach { interfaceName, interfaceObj ->\r
-            // Populate Node type Interface Operation\r
-            log.debug("Enriching NodeType({}) Interface({})", nodeTypeName, interfaceName)\r
-            populateNodeTypeInterfaceOperation(nodeTypeName, interfaceName, interfaceObj)\r
-\r
-        }\r
-    }\r
-\r
-    open fun populateNodeTypeInterfaceOperation(nodeTypeName: String, interfaceName: String, interfaceObj: InterfaceDefinition) {\r
-\r
-        interfaceObj.operations?.forEach { operationName, operation ->\r
-            enrichNodeTypeInterfaceOperationInputs(nodeTypeName, operationName, operation)\r
-            enrichNodeTypeInterfaceOperationOputputs(nodeTypeName, operationName, operation)\r
-        }\r
-    }\r
-\r
-    open fun enrichNodeTypeInterfaceOperationInputs(nodeTypeName: String, operationName: String, operation: OperationDefinition) {\r
-        operation.inputs?.let { inputs ->\r
-            enrichPropertyDefinitions(inputs)\r
-        }\r
-    }\r
-\r
-    open fun enrichNodeTypeInterfaceOperationOputputs(nodeTypeName: String, operationName: String, operation: OperationDefinition) {\r
-        operation.outputs?.let { inputs ->\r
-            enrichPropertyDefinitions(inputs)\r
-        }\r
-    }\r
-\r
-    open fun enrichPropertyDefinitions(properties: MutableMap<String, PropertyDefinition>) {\r
-\r
-        properties.forEach { propertyName, propertyDefinition ->\r
-            enrichPropertyDefinition(propertyName, propertyDefinition)\r
-        }\r
-    }\r
-\r
-    @Throws(BluePrintException::class)\r
-    override fun enrichPropertyDefinition(propertyName: String, propertyDefinition: PropertyDefinition) {\r
-        val propertyType = propertyDefinition.type\r
-        if (BluePrintTypes.validPrimitiveTypes().contains(propertyType)) {\r
-\r
-        } else if (BluePrintTypes.validCollectionTypes().contains(propertyType)) {\r
-            val entrySchema = propertyDefinition.entrySchema\r
-                    ?: throw BluePrintException(format("Entry Schema is missing for collection property : {}", propertyName))\r
-\r
-            if (!BluePrintTypes.validPrimitiveTypes().contains(entrySchema.type)) {\r
-                populateDataTypes(entrySchema.type)\r
-            }\r
-        } else {\r
-            populateDataTypes(propertyType)\r
-        }\r
-\r
-    }\r
-\r
-    open fun enrichNodeTemplateArtifactDefinition(nodeTemplateName: String, nodeTemplate: NodeTemplate) {\r
-\r
-        nodeTemplate.artifacts?.forEach { artifactDefinitionName, artifactDefinition ->\r
-            val artifactTypeName = artifactDefinition.type\r
-                    ?: throw BluePrintException(format("Artifact type is missing for NodeTemplate({}) artifact({})", nodeTemplateName, artifactDefinitionName))\r
-\r
-            // Populate Artifact Type\r
-            populateArtifactType(artifactTypeName)\r
-        }\r
-    }\r
-\r
-    open fun populateNodeType(nodeTypeName: String): NodeType {\r
-\r
-        val nodeType = serviceTemplate.nodeTypes?.get(nodeTypeName)\r
-                ?: bluePrintRepoService.getNodeType(nodeTypeName)?.block()\r
-                ?: throw BluePrintException(format("Couldn't get NodeType({}) from repo.", nodeTypeName))\r
-        serviceTemplate.nodeTypes?.put(nodeTypeName, nodeType)\r
-        return nodeType\r
-    }\r
-\r
-    open fun populateArtifactType(artifactTypeName: String): ArtifactType {\r
-        val artifactType = serviceTemplate.artifactTypes?.get(artifactTypeName)\r
-                ?: bluePrintRepoService.getArtifactType(artifactTypeName)?.block()\r
-                ?: throw BluePrintException(format("Couldn't get ArtifactType({}) from repo.", artifactTypeName))\r
-        serviceTemplate.artifactTypes?.put(artifactTypeName, artifactType)\r
-        return artifactType\r
-    }\r
-\r
-    open fun populateDataTypes(dataTypeName: String): DataType {\r
-        val dataType = serviceTemplate.dataTypes?.get(dataTypeName)\r
-                ?: bluePrintRepoService.getDataType(dataTypeName)?.block()\r
-                ?: throw BluePrintException(format("Couldn't get DataType({}) from repo.", dataTypeName))\r
-        serviceTemplate.dataTypes?.put(dataTypeName, dataType)\r
-        return dataType\r
-    }\r
-\r
-}\r
-\r
index a7c14ad..dec7a50 100644 (file)
@@ -35,19 +35,19 @@ import java.io.Serializable
 interface BluePrintRepoService : Serializable {\r
 \r
     @Throws(BluePrintException::class)\r
-    fun getNodeType(nodeTypeName: String): Mono<NodeType>?\r
+    fun getNodeType(nodeTypeName: String): Mono<NodeType>\r
 \r
     @Throws(BluePrintException::class)\r
-    fun getDataType(dataTypeName: String): Mono<DataType>?\r
+    fun getDataType(dataTypeName: String): Mono<DataType>\r
 \r
     @Throws(BluePrintException::class)\r
-    fun getArtifactType(artifactTypeName: String): Mono<ArtifactType>?\r
+    fun getArtifactType(artifactTypeName: String): Mono<ArtifactType>\r
 \r
     @Throws(BluePrintException::class)\r
-    fun getRelationshipType(relationshipTypeName: String): Mono<RelationshipType>?\r
+    fun getRelationshipType(relationshipTypeName: String): Mono<RelationshipType>\r
 \r
     @Throws(BluePrintException::class)\r
-    fun getCapabilityDefinition(capabilityDefinitionName: String): Mono<CapabilityDefinition>?\r
+    fun getCapabilityDefinition(capabilityDefinitionName: String): Mono<CapabilityDefinition>\r
 \r
 }\r
 \r
@@ -63,30 +63,30 @@ open class BluePrintRepoFileService(modelTypePath: String) : BluePrintRepoServic
     private val relationshipTypePath = modelTypePath.plus(BluePrintConstants.PATH_DIVIDER).plus(BluePrintConstants.MODEL_DEFINITION_TYPE_RELATIONSHIP_TYPE)\r
     private val extension = ".json"\r
 \r
-    override fun getDataType(dataTypeName: String): Mono<DataType>? {\r
+    override fun getDataType(dataTypeName: String): Mono<DataType> {\r
         val fileName = dataTypePath.plus(BluePrintConstants.PATH_DIVIDER)\r
                 .plus(dataTypeName).plus(extension)\r
         return getModelType(fileName, DataType::class.java)\r
     }\r
 \r
-    override fun getNodeType(nodeTypeName: String): Mono<NodeType>? {\r
+    override fun getNodeType(nodeTypeName: String): Mono<NodeType> {\r
         val fileName = nodeTypePath.plus(BluePrintConstants.PATH_DIVIDER).plus(nodeTypeName).plus(extension)\r
         return getModelType(fileName, NodeType::class.java)\r
     }\r
 \r
-    override fun getArtifactType(artifactTypeName: String): Mono<ArtifactType>? {\r
+    override fun getArtifactType(artifactTypeName: String): Mono<ArtifactType> {\r
         val fileName = artifactTypePath.plus(BluePrintConstants.PATH_DIVIDER)\r
                 .plus(artifactTypeName).plus(extension)\r
         return getModelType(fileName, ArtifactType::class.java)\r
     }\r
 \r
-    override fun getRelationshipType(relationshipTypeName: String): Mono<RelationshipType>? {\r
+    override fun getRelationshipType(relationshipTypeName: String): Mono<RelationshipType> {\r
         val fileName = relationshipTypePath.plus(BluePrintConstants.PATH_DIVIDER)\r
                 .plus(relationshipTypeName).plus(extension)\r
         return getModelType(fileName, RelationshipType::class.java)\r
     }\r
 \r
-    override fun getCapabilityDefinition(capabilityDefinitionName: String): Mono<CapabilityDefinition>? {\r
+    override fun getCapabilityDefinition(capabilityDefinitionName: String): Mono<CapabilityDefinition> {\r
         val fileName = capabilityTypePath.plus(BluePrintConstants.PATH_DIVIDER)\r
                 .plus(capabilityDefinitionName).plus(extension)\r
         return getModelType(fileName, CapabilityDefinition::class.java)\r
diff --git a/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerServiceTest.kt b/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerServiceTest.kt
deleted file mode 100644 (file)
index 8e6d5ef..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*\r
- * Copyright © 2017-2018 AT&T Intellectual Property.\r
- * Modifications Copyright © 2018 IBM.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-package org.onap.ccsdk.apps.controllerblueprints.core.service\r
-\r
-import org.junit.Test\r
-import org.onap.ccsdk.apps.controllerblueprints.core.utils.ServiceTemplateUtils\r
-\r
-/**\r
- * BluePrintEnhancerServiceTest\r
- * @author Brinda Santh\r
- *\r
- */\r
-\r
-class BluePrintEnhancerServiceTest {\r
-    val basePath = "load/model_type"\r
-\r
-    @Test\r
-    fun testEnrichBlueprint() {\r
-        val bluePrintEnhancerRepoFileService = BluePrintRepoFileService(basePath)\r
-        val bluePrintEnhancerService: BluePrintEnhancerService = BluePrintEnhancerDefaultService(bluePrintEnhancerRepoFileService)\r
-\r
-        val serviceTemplate = ServiceTemplateUtils.getServiceTemplate("load/blueprints/simple-baseconfig/Definitions/simple-baseconfig.json")\r
-        bluePrintEnhancerService.enhance(serviceTemplate)\r
-\r
-    }\r
-}
\ No newline at end of file
index fae509d..089fce0 100644 (file)
@@ -25,6 +25,8 @@ import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
 import org.onap.ccsdk.apps.controllerblueprints.core.utils.TopologicalSortingUtils
 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment
 import com.att.eelf.configuration.EELFManager
+import org.onap.ccsdk.apps.controllerblueprints.core.format
+import org.onap.ccsdk.apps.controllerblueprints.resource.dict.factory.ResourceSourceMappingFactory
 import java.io.Serializable
 
 /**
@@ -65,6 +67,13 @@ open class ResourceAssignmentValidationDefaultService : ResourceAssignmentValida
 
     open fun validateSources(resourceAssignments: List<ResourceAssignment>) {
         log.info("validating resource assignment sources")
+        resourceAssignments.forEach { resourceAssignment ->
+            try {
+                ResourceSourceMappingFactory.getRegisterSourceMapping(resourceAssignment.dictionarySource!!)
+            } catch (e: BluePrintException) {
+                validationMessage.appendln(e.message + format(" for resource assignment({})", resourceAssignment.name))
+            }
+        }
     }
 
     open fun validateTemplateNDictionaryKeys(resourceAssignments: List<ResourceAssignment>) {
index 370e1ec..6c83e5f 100644 (file)
 package org.onap.ccsdk.apps.controllerblueprints.resource.dict.service\r
 \r
 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants\r
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException\r
 import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRepoFileService\r
 import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRepoService\r
 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonReactorUtils\r
 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceDefinition\r
 import reactor.core.publisher.Mono\r
+\r
 /**\r
  * ResourceDefinitionRepoService.\r
  *\r
@@ -30,6 +32,7 @@ import reactor.core.publisher.Mono
  */\r
 interface ResourceDefinitionRepoService : BluePrintRepoService {\r
 \r
+    @Throws(BluePrintException::class)\r
     fun getResourceDefinition(resourceDefinitionName: String): Mono<ResourceDefinition>\r
 }\r
 \r