\r
package org.onap.ccsdk.apps.controllerblueprints.core.service\r
\r
+import com.att.eelf.configuration.EELFLogger\r
+import com.att.eelf.configuration.EELFManager\r
import com.fasterxml.jackson.databind.JsonNode\r
import com.google.common.base.Preconditions\r
import org.apache.commons.lang3.StringUtils\r
import org.onap.ccsdk.apps.controllerblueprints.core.*\r
import org.onap.ccsdk.apps.controllerblueprints.core.data.*\r
-import com.att.eelf.configuration.EELFLogger\r
-import com.att.eelf.configuration.EELFManager\r
import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils\r
import java.io.Serializable\r
\r
//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
}\r
\r
nodeType.properties?.let { validatePropertyDefinitions(nodeType.properties!!) }\r
+ nodeType.capabilities?.let { validateCapabilityDefinitions(nodeTypeName, nodeType) }\r
nodeType.requirements?.let { validateRequirementDefinitions(nodeTypeName, nodeType) }\r
nodeType.interfaces?.let { validateInterfaceDefinitions(nodeType.interfaces!!) }\r
paths.removeAt(paths.lastIndex)\r
\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
message.appendln("---> Workflow :" + paths.joinToString(separator))\r
// Step Validation Start\r
paths.add("steps")\r
- workflow.steps?.forEach { stepName, step ->\r
+ workflow.steps?.forEach { stepName, _ ->\r
paths.add(stepName)\r
message.appendln("----> Steps :" + paths.joinToString(separator))\r
paths.removeAt(paths.lastIndex)\r
}\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
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
}\r
\r
+ @Throws(BluePrintException::class)\r
+ open fun validateCapabilityDefinitions(nodeTypeName: String, nodeType: NodeType) {\r
+ val capabilities = nodeType.capabilities\r
+ paths.add("capabilities")\r
+ capabilities?.forEach { capabilityName, capabilityDefinition ->\r
+ paths.add(capabilityName)\r
+\r
+ validateCapabilityDefinition(nodeTypeName, nodeType, capabilityName, capabilityDefinition)\r
+\r
+ paths.removeAt(paths.lastIndex)\r
+ }\r
+ paths.removeAt(paths.lastIndex)\r
+ }\r
+\r
+ @Throws(BluePrintException::class)\r
+ open fun validateCapabilityDefinition(nodeTypeName: String, nodeType: NodeType, capabilityName: String,\r
+ capabilityDefinition: CapabilityDefinition) {\r
+ val capabilityType = capabilityDefinition.type\r
+ check(BluePrintTypes.validCapabilityTypes.contains(capabilityType)) {\r
+ throw BluePrintException(format("Failed to get CapabilityType({}) for NodeType({})",\r
+ capabilityType, nodeTypeName))\r
+ }\r
+ }\r
+\r
@Throws(BluePrintException::class)\r
open fun validateRequirementDefinitions(nodeName: String, nodeType: NodeType) {\r
paths.add("requirements")\r
\r
@Throws(BluePrintException::class)\r
open fun validateImplementation(implementation: Implementation) {\r
- checkNotEmptyNThrow(implementation.primary)\r
+ checkNotEmptyOrThrow(implementation.primary)\r
}\r
\r
@Throws(BluePrintException::class)\r
open fun checkValidArtifactType(artifactDefinitionName: String, artifactTypeName: String) {\r
\r
val artifactType = serviceTemplate.artifactTypes?.get(artifactTypeName)\r
- ?: throw BluePrintException(format("Failed to ArtifactType for ArtifactDefinition : {}", artifactDefinitionName))\r
+ ?: throw BluePrintException("failed to artifactType($artifactTypeName) for ArtifactDefinition($artifactDefinitionName)")\r
\r
checkValidArtifactTypeDerivedFrom(artifactTypeName, artifactType.derivedFrom)\r
}\r
@Throws(BluePrintException::class)\r
open fun checkValidArtifactTypeDerivedFrom(artifactTypeName: String, derivedFrom: String) {\r
check(BluePrintTypes.validArtifactTypeDerivedFroms.contains(derivedFrom)) {\r
- throw BluePrintException(format("Failed to get ArtifactType ({})'s derivedFrom({}) definition ", artifactTypeName, derivedFrom))\r
+ throw BluePrintException("failed to get artifactType($artifactTypeName)'s derivedFrom($derivedFrom) definition")\r
}\r
}\r
\r
@Throws(BluePrintException::class)\r
open fun checkValidDataTypeDerivedFrom(dataTypeName: String, derivedFrom: String) {\r
check(BluePrintTypes.validDataTypeDerivedFroms.contains(derivedFrom)) {\r
- throw BluePrintException(format("Failed to get DataType ({})'s derivedFrom({}) definition ", dataTypeName, derivedFrom))\r
+ throw BluePrintException(format("Failed to get DataType({})'s derivedFrom({}) definition ", dataTypeName, derivedFrom))\r
}\r
}\r
\r
}\r
}\r
\r
- private fun checkPropertyDataType(dataType: String, propertyName: String) {\r
+ private fun checkPropertyDataType(dataTypeName: String, propertyName: String) {\r
\r
- val dataType = serviceTemplate.dataTypes?.get(dataType)\r
- ?: throw BluePrintException(format("DataType ({}) for the property ({}) not found", dataType, propertyName))\r
+ val dataType = serviceTemplate.dataTypes?.get(dataTypeName)\r
+ ?: throw BluePrintException(format("DataType ({}) for the property ({}) not found", dataTypeName, propertyName))\r
\r
checkValidDataTypeDerivedFrom(propertyName, dataType.derivedFrom)\r
\r
if (BluePrintTypes.validPrimitiveTypes().contains(dataType) || checkDataType(dataType)) {\r
return true\r
} else {\r
- throw BluePrintException(format("DataType ({}) for the property ({}) is not valid", dataType))\r
+ throw BluePrintException(format("DataType({}) for the property({}) is not valid", dataType, propertyName))\r
}\r
}\r
\r