+++ /dev/null
-/*\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
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
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