From a567903b114503a13c225ed720a96391e75f0126 Mon Sep 17 00:00:00 2001 From: "Muthuramalingam, Brinda Santh(bs2796)" Date: Tue, 11 Dec 2018 19:40:51 -0500 Subject: Implement Enhancer Framework Interfaces Change-Id: Iff85dc50f87ab6d6f7d9ceb4a309ea6e4d55e362 Issue-ID: CCSDK-803 Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) --- .../service/enhancer/BluePrintEnhancerService.kt | 279 --------------------- .../enhancer/BluePrintEnhancerServiceImpl.kt | 250 ++++++++++++++++++ .../enhancer/ResourceAssignmentEnhancerService.kt | 54 ++-- 3 files changed, 277 insertions(+), 306 deletions(-) delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerService.kt create mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImpl.kt (limited to 'ms/controllerblueprints/modules/service/src/main/kotlin') diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerService.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerService.kt deleted file mode 100644 index 2c13d864..00000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerService.kt +++ /dev/null @@ -1,279 +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.service.enhancer - -import com.att.eelf.configuration.EELFLogger -import com.att.eelf.configuration.EELFManager -import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintTypes -import org.onap.ccsdk.apps.controllerblueprints.core.data.* -import org.onap.ccsdk.apps.controllerblueprints.core.format -import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext -import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRepoService -import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintFileUtils -import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils -import java.io.Serializable - -/** - * BluePrintEnhancerService - * @author Brinda Santh - * - */ -interface BluePrintEnhancerService : Serializable { - - @Throws(BluePrintException::class) - fun enhance(basePath: String, enrichedBasePath: String): BluePrintContext - - /** - * Read Blueprint from CBA structure Directory - */ - @Throws(BluePrintException::class) - fun enhance(basePath: String): BluePrintContext - - @Throws(BluePrintException::class) - fun enhance(serviceTemplate: ServiceTemplate): ServiceTemplate - - @Throws(BluePrintException::class) - fun enrichNodeTemplate(nodeTemplateName: String, nodeTemplate: NodeTemplate) - - @Throws(BluePrintException::class) - fun enrichNodeType(nodeTypeName: String, nodeType: NodeType) - - @Throws(BluePrintException::class) - fun enrichPropertyDefinition(propertyName: String, propertyDefinition: PropertyDefinition) -} - -open class BluePrintEnhancerDefaultService(val bluePrintRepoService: BluePrintRepoService) : BluePrintEnhancerService { - - private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintEnhancerDefaultService::class.toString()) - - lateinit var serviceTemplate: ServiceTemplate - - override fun enhance(basePath: String, enrichedBasePath: String): BluePrintContext { - BluePrintFileUtils.copyBluePrint(basePath, enrichedBasePath) - BluePrintFileUtils.deleteBluePrintTypes(enrichedBasePath) - val enhancedBluePrintContext = enhance(enrichedBasePath) - BluePrintFileUtils.writeBluePrintTypes(enhancedBluePrintContext) - return enhancedBluePrintContext - } - - @Throws(BluePrintException::class) - override fun enhance(basePath: String): BluePrintContext { - val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(basePath) - enhance(bluePrintContext.serviceTemplate) - return bluePrintContext - } - - @Throws(BluePrintException::class) - override fun enhance(serviceTemplate: ServiceTemplate): ServiceTemplate { - this.serviceTemplate = serviceTemplate - initialCleanUp() - enrichTopologyTemplate(serviceTemplate) - - // log.info("Enriched Blueprint :\n {}", JacksonUtils.getJson(serviceTemplate, true)) - return this.serviceTemplate - } - - open fun initialCleanUp() { - serviceTemplate.artifactTypes?.clear() - serviceTemplate.nodeTypes?.clear() - serviceTemplate.dataTypes?.clear() - serviceTemplate.policyTypes?.clear() - - serviceTemplate.artifactTypes = mutableMapOf() - serviceTemplate.nodeTypes = mutableMapOf() - serviceTemplate.dataTypes = mutableMapOf() - serviceTemplate.policyTypes = mutableMapOf() - - } - - @Throws(BluePrintException::class) - open fun enrichTopologyTemplate(serviceTemplate: ServiceTemplate) { - serviceTemplate.topologyTemplate?.let { topologyTemplate -> - enrichTopologyTemplateInputs(topologyTemplate) - enrichTopologyTemplateNodeTemplates(topologyTemplate) - } - } - - @Throws(BluePrintException::class) - open fun enrichTopologyTemplateInputs(topologyTemplate: TopologyTemplate) { - topologyTemplate.inputs?.let { inputs -> - enrichPropertyDefinitions(inputs) - } - } - - open fun enrichTopologyTemplateNodeTemplates(topologyTemplate: TopologyTemplate) { - topologyTemplate.nodeTemplates?.forEach { nodeTemplateName, nodeTemplate -> - enrichNodeTemplate(nodeTemplateName, nodeTemplate) - } - } - - @Throws(BluePrintException::class) - override fun enrichNodeTemplate(nodeTemplateName: String, nodeTemplate: NodeTemplate) { - val nodeTypeName = nodeTemplate.type - // Get NodeType from Repo and Update Service Template - val nodeType = populateNodeType(nodeTypeName) - - // Enrich NodeType - enrichNodeType(nodeTypeName, nodeType) - - //Enrich Node Template Artifacts - enrichNodeTemplateArtifactDefinition(nodeTemplateName, nodeTemplate) - } - - @Throws(BluePrintException::class) - override fun enrichNodeType(nodeTypeName: String, nodeType: NodeType) { - log.debug("Enriching NodeType({})", nodeTypeName) - val derivedFrom = nodeType.derivedFrom - - if (!BluePrintTypes.rootNodeTypes().contains(derivedFrom)) { - val derivedFromNodeType = populateNodeType(nodeTypeName) - // Enrich NodeType - enrichNodeType(derivedFrom, derivedFromNodeType) - } - - // NodeType Property Definitions - enrichNodeTypeProperties(nodeTypeName, nodeType) - - //NodeType Requirement - enrichNodeTypeRequirements(nodeTypeName, nodeType) - - //NodeType Capability - enrichNodeTypeCapabilityProperties(nodeTypeName, nodeType) - - //NodeType Interface - enrichNodeTypeInterfaces(nodeTypeName, nodeType) - } - - open fun enrichNodeTypeProperties(nodeTypeName: String, nodeType: NodeType) { - nodeType.properties?.let { enrichPropertyDefinitions(nodeType.properties!!) } - } - - open fun enrichNodeTypeRequirements(nodeTypeName: String, nodeType: NodeType) { - - nodeType.requirements?.forEach { _, requirementDefinition -> - // Populate Requirement Node - requirementDefinition.node?.let { requirementNodeTypeName -> - // Get Requirement NodeType from Repo and Update Service Template - val requirementNodeType = populateNodeType(requirementNodeTypeName) - - enrichNodeType(requirementNodeTypeName, requirementNodeType) - } - } - } - - open fun enrichNodeTypeCapabilityProperties(nodeTypeName: String, nodeType: NodeType) { - nodeType.capabilities?.forEach { _, capabilityDefinition -> - capabilityDefinition.properties?.let { properties -> - enrichPropertyDefinitions(properties) - } - } - } - - open fun enrichNodeTypeInterfaces(nodeTypeName: String, nodeType: NodeType) { - nodeType.interfaces?.forEach { interfaceName, interfaceObj -> - // Populate Node type Interface Operation - log.debug("Enriching NodeType({}) Interface({})", nodeTypeName, interfaceName) - populateNodeTypeInterfaceOperation(nodeTypeName, interfaceName, interfaceObj) - - } - } - - open fun populateNodeTypeInterfaceOperation(nodeTypeName: String, interfaceName: String, interfaceObj: InterfaceDefinition) { - - interfaceObj.operations?.forEach { operationName, operation -> - enrichNodeTypeInterfaceOperationInputs(nodeTypeName, operationName, operation) - enrichNodeTypeInterfaceOperationOputputs(nodeTypeName, operationName, operation) - } - } - - open fun enrichNodeTypeInterfaceOperationInputs(nodeTypeName: String, operationName: String, operation: OperationDefinition) { - operation.inputs?.let { inputs -> - enrichPropertyDefinitions(inputs) - } - } - - open fun enrichNodeTypeInterfaceOperationOputputs(nodeTypeName: String, operationName: String, operation: OperationDefinition) { - operation.outputs?.let { inputs -> - enrichPropertyDefinitions(inputs) - } - } - - open fun enrichPropertyDefinitions(properties: MutableMap) { - - properties.forEach { propertyName, propertyDefinition -> - enrichPropertyDefinition(propertyName, propertyDefinition) - } - } - - @Throws(BluePrintException::class) - override fun enrichPropertyDefinition(propertyName: String, propertyDefinition: PropertyDefinition) { - val propertyType = propertyDefinition.type - if (BluePrintTypes.validPrimitiveTypes().contains(propertyType)) { - - } else if (BluePrintTypes.validCollectionTypes().contains(propertyType)) { - val entrySchema = propertyDefinition.entrySchema - ?: throw BluePrintException(format("Entry Schema is missing for collection property : {}", propertyName)) - - if (!BluePrintTypes.validPrimitiveTypes().contains(entrySchema.type)) { - populateDataTypes(entrySchema.type) - } - } else { - populateDataTypes(propertyType) - } - - } - - open fun enrichNodeTemplateArtifactDefinition(nodeTemplateName: String, nodeTemplate: NodeTemplate) { - - nodeTemplate.artifacts?.forEach { artifactDefinitionName, artifactDefinition -> - val artifactTypeName = artifactDefinition.type - ?: throw BluePrintException(format("Artifact type is missing for NodeTemplate({}) artifact({})", nodeTemplateName, artifactDefinitionName)) - - // Populate Artifact Type - populateArtifactType(artifactTypeName) - } - } - - open fun populateNodeType(nodeTypeName: String): NodeType { - - val nodeType = serviceTemplate.nodeTypes?.get(nodeTypeName) - ?: bluePrintRepoService.getNodeType(nodeTypeName).block() - ?: throw BluePrintException(format("Couldn't get NodeType({}) from repo.", nodeTypeName)) - serviceTemplate.nodeTypes?.put(nodeTypeName, nodeType) - return nodeType - } - - open fun populateArtifactType(artifactTypeName: String): ArtifactType { - val artifactType = serviceTemplate.artifactTypes?.get(artifactTypeName) - ?: bluePrintRepoService.getArtifactType(artifactTypeName).block() - ?: throw BluePrintException(format("Couldn't get ArtifactType({}) from repo.", artifactTypeName)) - serviceTemplate.artifactTypes?.put(artifactTypeName, artifactType) - return artifactType - } - - open fun populateDataTypes(dataTypeName: String): DataType { - val dataType = serviceTemplate.dataTypes?.get(dataTypeName) - ?: bluePrintRepoService.getDataType(dataTypeName).block() - ?: throw BluePrintException(format("Couldn't get DataType({}) from repo.", dataTypeName)) - serviceTemplate.dataTypes?.put(dataTypeName, dataType) - return dataType - } - -} - diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImpl.kt new file mode 100644 index 00000000..d2a7d226 --- /dev/null +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImpl.kt @@ -0,0 +1,250 @@ +/* + * 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.service.enhancer + +import com.att.eelf.configuration.EELFLogger +import com.att.eelf.configuration.EELFManager +import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException +import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintTypes +import org.onap.ccsdk.apps.controllerblueprints.core.data.* +import org.onap.ccsdk.apps.controllerblueprints.core.format +import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintEnhancerService +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRepoService +import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintFileUtils +import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils + +open class BluePrintEnhancerServiceImpl(val bluePrintRepoService: BluePrintRepoService) : BluePrintEnhancerService { + + private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintEnhancerServiceImpl::class.toString()) + + lateinit var serviceTemplate: ServiceTemplate + + override fun enhance(basePath: String, enrichedBasePath: String): BluePrintContext { + BluePrintFileUtils.copyBluePrint(basePath, enrichedBasePath) + BluePrintFileUtils.deleteBluePrintTypes(enrichedBasePath) + val enhancedBluePrintContext = enhance(enrichedBasePath) + BluePrintFileUtils.writeBluePrintTypes(enhancedBluePrintContext) + return enhancedBluePrintContext + } + + @Throws(BluePrintException::class) + override fun enhance(basePath: String): BluePrintContext { + val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(basePath) + enhance(bluePrintContext.serviceTemplate) + return bluePrintContext + } + + @Throws(BluePrintException::class) + override fun enhance(serviceTemplate: ServiceTemplate): ServiceTemplate { + this.serviceTemplate = serviceTemplate + initialCleanUp() + enrichTopologyTemplate(serviceTemplate) + + // log.info("Enriched Blueprint :\n {}", JacksonUtils.getJson(serviceTemplate, true)) + return this.serviceTemplate + } + + open fun initialCleanUp() { + serviceTemplate.artifactTypes?.clear() + serviceTemplate.nodeTypes?.clear() + serviceTemplate.dataTypes?.clear() + serviceTemplate.policyTypes?.clear() + + serviceTemplate.artifactTypes = mutableMapOf() + serviceTemplate.nodeTypes = mutableMapOf() + serviceTemplate.dataTypes = mutableMapOf() + serviceTemplate.policyTypes = mutableMapOf() + + } + + @Throws(BluePrintException::class) + open fun enrichTopologyTemplate(serviceTemplate: ServiceTemplate) { + serviceTemplate.topologyTemplate?.let { topologyTemplate -> + enrichTopologyTemplateInputs(topologyTemplate) + enrichTopologyTemplateNodeTemplates(topologyTemplate) + } + } + + @Throws(BluePrintException::class) + open fun enrichTopologyTemplateInputs(topologyTemplate: TopologyTemplate) { + topologyTemplate.inputs?.let { inputs -> + enrichPropertyDefinitions(inputs) + } + } + + open fun enrichTopologyTemplateNodeTemplates(topologyTemplate: TopologyTemplate) { + topologyTemplate.nodeTemplates?.forEach { nodeTemplateName, nodeTemplate -> + enrichNodeTemplate(nodeTemplateName, nodeTemplate) + } + } + + @Throws(BluePrintException::class) + open fun enrichNodeTemplate(nodeTemplateName: String, nodeTemplate: NodeTemplate) { + val nodeTypeName = nodeTemplate.type + // Get NodeType from Repo and Update Service Template + val nodeType = populateNodeType(nodeTypeName) + + // Enrich NodeType + enrichNodeType(nodeTypeName, nodeType) + + //Enrich Node Template Artifacts + enrichNodeTemplateArtifactDefinition(nodeTemplateName, nodeTemplate) + } + + @Throws(BluePrintException::class) + fun enrichNodeType(nodeTypeName: String, nodeType: NodeType) { + log.debug("Enriching NodeType({})", nodeTypeName) + val derivedFrom = nodeType.derivedFrom + + if (!BluePrintTypes.rootNodeTypes().contains(derivedFrom)) { + val derivedFromNodeType = populateNodeType(nodeTypeName) + // Enrich NodeType + enrichNodeType(derivedFrom, derivedFromNodeType) + } + + // NodeType Property Definitions + enrichNodeTypeProperties(nodeTypeName, nodeType) + + //NodeType Requirement + enrichNodeTypeRequirements(nodeTypeName, nodeType) + + //NodeType Capability + enrichNodeTypeCapabilityProperties(nodeTypeName, nodeType) + + //NodeType Interface + enrichNodeTypeInterfaces(nodeTypeName, nodeType) + } + + open fun enrichNodeTypeProperties(nodeTypeName: String, nodeType: NodeType) { + nodeType.properties?.let { enrichPropertyDefinitions(nodeType.properties!!) } + } + + open fun enrichNodeTypeRequirements(nodeTypeName: String, nodeType: NodeType) { + + nodeType.requirements?.forEach { _, requirementDefinition -> + // Populate Requirement Node + requirementDefinition.node?.let { requirementNodeTypeName -> + // Get Requirement NodeType from Repo and Update Service Template + val requirementNodeType = populateNodeType(requirementNodeTypeName) + + enrichNodeType(requirementNodeTypeName, requirementNodeType) + } + } + } + + open fun enrichNodeTypeCapabilityProperties(nodeTypeName: String, nodeType: NodeType) { + nodeType.capabilities?.forEach { _, capabilityDefinition -> + capabilityDefinition.properties?.let { properties -> + enrichPropertyDefinitions(properties) + } + } + } + + open fun enrichNodeTypeInterfaces(nodeTypeName: String, nodeType: NodeType) { + nodeType.interfaces?.forEach { interfaceName, interfaceObj -> + // Populate Node type Interface Operation + log.debug("Enriching NodeType({}) Interface({})", nodeTypeName, interfaceName) + populateNodeTypeInterfaceOperation(nodeTypeName, interfaceName, interfaceObj) + + } + } + + open fun populateNodeTypeInterfaceOperation(nodeTypeName: String, interfaceName: String, interfaceObj: InterfaceDefinition) { + + interfaceObj.operations?.forEach { operationName, operation -> + enrichNodeTypeInterfaceOperationInputs(nodeTypeName, operationName, operation) + enrichNodeTypeInterfaceOperationOputputs(nodeTypeName, operationName, operation) + } + } + + open fun enrichNodeTypeInterfaceOperationInputs(nodeTypeName: String, operationName: String, operation: OperationDefinition) { + operation.inputs?.let { inputs -> + enrichPropertyDefinitions(inputs) + } + } + + open fun enrichNodeTypeInterfaceOperationOputputs(nodeTypeName: String, operationName: String, operation: OperationDefinition) { + operation.outputs?.let { inputs -> + enrichPropertyDefinitions(inputs) + } + } + + open fun enrichPropertyDefinitions(properties: MutableMap) { + + properties.forEach { propertyName, propertyDefinition -> + enrichPropertyDefinition(propertyName, propertyDefinition) + } + } + + @Throws(BluePrintException::class) + fun enrichPropertyDefinition(propertyName: String, propertyDefinition: PropertyDefinition) { + val propertyType = propertyDefinition.type + if (BluePrintTypes.validPrimitiveTypes().contains(propertyType)) { + + } else if (BluePrintTypes.validCollectionTypes().contains(propertyType)) { + val entrySchema = propertyDefinition.entrySchema + ?: throw BluePrintException(format("Entry Schema is missing for collection property : {}", propertyName)) + + if (!BluePrintTypes.validPrimitiveTypes().contains(entrySchema.type)) { + populateDataTypes(entrySchema.type) + } + } else { + populateDataTypes(propertyType) + } + + } + + open fun enrichNodeTemplateArtifactDefinition(nodeTemplateName: String, nodeTemplate: NodeTemplate) { + + nodeTemplate.artifacts?.forEach { artifactDefinitionName, artifactDefinition -> + val artifactTypeName = artifactDefinition.type + ?: throw BluePrintException(format("Artifact type is missing for NodeTemplate({}) artifact({})", nodeTemplateName, artifactDefinitionName)) + + // Populate Artifact Type + populateArtifactType(artifactTypeName) + } + } + + open fun populateNodeType(nodeTypeName: String): NodeType { + + val nodeType = serviceTemplate.nodeTypes?.get(nodeTypeName) + ?: bluePrintRepoService.getNodeType(nodeTypeName) + ?: throw BluePrintException(format("Couldn't get NodeType({}) from repo.", nodeTypeName)) + serviceTemplate.nodeTypes?.put(nodeTypeName, nodeType) + return nodeType + } + + open fun populateArtifactType(artifactTypeName: String): ArtifactType { + val artifactType = serviceTemplate.artifactTypes?.get(artifactTypeName) + ?: bluePrintRepoService.getArtifactType(artifactTypeName) + ?: throw BluePrintException(format("Couldn't get ArtifactType({}) from repo.", artifactTypeName)) + serviceTemplate.artifactTypes?.put(artifactTypeName, artifactType) + return artifactType + } + + open fun populateDataTypes(dataTypeName: String): DataType { + val dataType = serviceTemplate.dataTypes?.get(dataTypeName) + ?: bluePrintRepoService.getDataType(dataTypeName) + ?: throw BluePrintException(format("Couldn't get DataType({}) from repo.", dataTypeName)) + serviceTemplate.dataTypes?.put(dataTypeName, dataType) + return dataType + } + +} + diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/ResourceAssignmentEnhancerService.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/ResourceAssignmentEnhancerService.kt index de6f82ff..d3bc636b 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/ResourceAssignmentEnhancerService.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/ResourceAssignmentEnhancerService.kt @@ -17,16 +17,17 @@ package org.onap.ccsdk.apps.controllerblueprints.service.enhancer import com.att.eelf.configuration.EELFLogger -import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate -import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment -import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceDefinition import com.att.eelf.configuration.EELFManager +import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintError +import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintTypes import org.onap.ccsdk.apps.controllerblueprints.core.format +import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext +import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment +import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceDefinition import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceDictionaryConstants import org.onap.ccsdk.apps.controllerblueprints.resource.dict.factory.ResourceSourceMappingFactory -import org.onap.ccsdk.apps.controllerblueprints.resource.dict.service.ResourceAssignmentValidationDefaultService import org.onap.ccsdk.apps.controllerblueprints.resource.dict.service.ResourceDefinitionRepoService import org.springframework.stereotype.Service @@ -38,11 +39,9 @@ import org.springframework.stereotype.Service interface ResourceAssignmentEnhancerService { @Throws(BluePrintException::class) - fun enhanceBluePrint(bluePrintEnhancerService: BluePrintEnhancerService, + fun enhanceBluePrint(bluePrintTypeEnhancerService: BluePrintTypeEnhancerService, + bluePrintContext: BluePrintContext, error: BluePrintError, resourceAssignments: List) - - @Throws(BluePrintException::class) - fun enhanceBluePrint(resourceAssignments: List): ServiceTemplate } /** @@ -51,15 +50,16 @@ interface ResourceAssignmentEnhancerService { * @author Brinda Santh */ @Service -open class ResourceAssignmentEnhancerDefaultService(private val resourceDefinitionRepoService: ResourceDefinitionRepoService) +open class ResourceAssignmentEnhancerServiceImpl(private val resourceDefinitionRepoService: ResourceDefinitionRepoService) : ResourceAssignmentEnhancerService { - private val log: EELFLogger = EELFManager.getInstance().getLogger(ResourceAssignmentValidationDefaultService::class.java) + private val log: EELFLogger = EELFManager.getInstance().getLogger(ResourceAssignmentEnhancerServiceImpl::class.java) /** * Get the defined source instance from the ResourceAssignment, * then get the NodeType of the Sources assigned */ - override fun enhanceBluePrint(bluePrintEnhancerService: BluePrintEnhancerService, + override fun enhanceBluePrint(bluePrintTypeEnhancerService: BluePrintTypeEnhancerService, + bluePrintContext: BluePrintContext, error: BluePrintError, resourceAssignments: List) { val uniqueSourceNodeTypeNames = hashSetOf() @@ -78,7 +78,8 @@ open class ResourceAssignmentEnhancerDefaultService(private val resourceDefiniti // TODO("Candidate for Optimisation") if (checkResourceDefinitionNeeded(resourceAssignment)) { - bluePrintEnhancerService.enrichPropertyDefinition(resourceAssignment.name, resourceAssignment.property!!); + bluePrintTypeEnhancerService.enhancePropertyDefinition(bluePrintContext, error, resourceAssignment.name, + resourceAssignment.property!!); // Get the Resource Definition from Repo val resourceDefinition: ResourceDefinition = getResourceDefinition(dictionaryName) @@ -87,26 +88,26 @@ open class ResourceAssignmentEnhancerDefaultService(private val resourceDefiniti ?: throw BluePrintException(format("failed to get assigned dictionarySource({}) from resourceDefinition({})", dictionarySource, dictionaryName)) // Enrich as NodeTemplate - bluePrintEnhancerService.enrichNodeTemplate(dictionarySource, sourceNodeTemplate) + bluePrintTypeEnhancerService.enhanceNodeTemplate(bluePrintContext, error, dictionarySource, sourceNodeTemplate) } } // Enrich the ResourceSource NodeTypes uniqueSourceNodeTypeNames.map { nodeTypeName -> - resourceDefinitionRepoService.getNodeType(nodeTypeName).subscribe { nodeType -> - bluePrintEnhancerService.enrichNodeType(nodeTypeName, nodeType) - } + val nodeType = resourceDefinitionRepoService.getNodeType(nodeTypeName) + bluePrintTypeEnhancerService.enhanceNodeType(bluePrintContext, error, nodeTypeName, nodeType) } } - override fun enhanceBluePrint(resourceAssignments: List): ServiceTemplate { - val bluePrintEnhancerService = BluePrintEnhancerDefaultService(resourceDefinitionRepoService) - bluePrintEnhancerService.serviceTemplate = ServiceTemplate() - bluePrintEnhancerService.initialCleanUp() - enhanceBluePrint(bluePrintEnhancerService, resourceAssignments) - return bluePrintEnhancerService.serviceTemplate - } - + /* + override fun enhanceBluePrint(resourceAssignments: List): ServiceTemplate { + val bluePrintEnhancerService = BluePrintEnhancerServiceImpl(resourceDefinitionRepoService) + bluePrintEnhancerService.serviceTemplate = ServiceTemplate() + bluePrintEnhancerService.initialCleanUp() + enhanceBluePrint(bluePrintEnhancerService, resourceAssignments) + return bluePrintEnhancerService.serviceTemplate + } + */ private fun checkResourceDefinitionNeeded(resourceAssignment: ResourceAssignment): Boolean { return !((resourceAssignment.dictionarySource.equals(ResourceDictionaryConstants.SOURCE_INPUT) || resourceAssignment.dictionarySource.equals(ResourceDictionaryConstants.SOURCE_DEFAULT)) @@ -114,7 +115,6 @@ open class ResourceAssignmentEnhancerDefaultService(private val resourceDefiniti } private fun getResourceDefinition(name: String): ResourceDefinition { - return resourceDefinitionRepoService.getResourceDefinition(name).block() - ?: throw BluePrintException(format("failed to get dictionary definition({})", name)) + return resourceDefinitionRepoService.getResourceDefinition(name) } } \ No newline at end of file -- cgit 1.2.3-korg