diff options
author | Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com> | 2018-12-13 11:34:49 -0500 |
---|---|---|
committer | Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com> | 2018-12-13 11:34:49 -0500 |
commit | cd8493304ad2c0f33ebf25ff66ad9e8e58aeaf34 (patch) | |
tree | c74104b36be92e116c08c39a793076556a38443a /ms/controllerblueprints/modules/service | |
parent | 132c8fd5be0cedc747e36d203a076ef594922f83 (diff) |
Implement Blueprint Workflow Enhancement
Change-Id: I64d6e949e9a4bc2100b49fedb3781b04c1c03f43
Issue-ID: CCSDK-722
Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Diffstat (limited to 'ms/controllerblueprints/modules/service')
11 files changed, 194 insertions, 96 deletions
diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintAttributeDefinitionEnhancerImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintAttributeDefinitionEnhancerImpl.kt index 68a00eb0e..9f579bc5f 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintAttributeDefinitionEnhancerImpl.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintAttributeDefinitionEnhancerImpl.kt @@ -16,18 +16,17 @@ package org.onap.ccsdk.apps.controllerblueprints.service.enhancer -import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintError import org.onap.ccsdk.apps.controllerblueprints.core.data.AttributeDefinition import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintAttributeDefinitionEnhancer import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService -import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService class BluePrintAttributeDefinitionEnhancerImpl(private val bluePrintRepoService: BluePrintRepoService, private val bluePrintTypeEnhancerService: BluePrintTypeEnhancerService) : BluePrintAttributeDefinitionEnhancer { - override fun enhance(bluePrintContext: BluePrintContext, error: BluePrintError, name: String, type: AttributeDefinition) { + override fun enhance(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, type: AttributeDefinition) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } }
\ No newline at end of file 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 index 17dfb1b7b..0b42a26ee 100644 --- 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 @@ -19,9 +19,7 @@ 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.BluePrintError
import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
-import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate
import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintEnhancerService
import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService
import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService
@@ -29,6 +27,7 @@ import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintFileUtils
import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils
import org.springframework.stereotype.Service
+import java.util.*
@Service
open class BluePrintEnhancerServiceImpl(private val bluePrintRepoService: BluePrintRepoService,
@@ -37,9 +36,16 @@ open class BluePrintEnhancerServiceImpl(private val bluePrintRepoService: BluePr private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintEnhancerServiceImpl::class.toString())
override fun enhance(basePath: String, enrichedBasePath: String): BluePrintContext {
+ // Copy the Blueprint Content to Target Location
BluePrintFileUtils.copyBluePrint(basePath, enrichedBasePath)
- BluePrintFileUtils.deleteBluePrintTypes(enrichedBasePath)
+
+ // Enhance the Blueprint
val enhancedBluePrintContext = enhance(enrichedBasePath)
+
+ // Delete the Old Type files
+ BluePrintFileUtils.deleteBluePrintTypes(enrichedBasePath)
+
+ // Write the Type File Definitions
BluePrintFileUtils.writeBluePrintTypes(enhancedBluePrintContext)
return enhancedBluePrintContext
}
@@ -47,20 +53,21 @@ open class BluePrintEnhancerServiceImpl(private val bluePrintRepoService: BluePr @Throws(BluePrintException::class)
override fun enhance(basePath: String): BluePrintContext {
log.info("Enhancing blueprint($basePath)")
- val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(basePath)
- val error = BluePrintError()
- bluePrintTypeEnhancerService.enhanceServiceTemplate(bluePrintContext, error, "service_template",
- bluePrintContext.serviceTemplate)
- return bluePrintContext
- }
+ val blueprintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime(UUID.randomUUID().toString(), basePath)
+ try {
- @Throws(BluePrintException::class)
- override fun enhance(serviceTemplate: ServiceTemplate): ServiceTemplate {
- val bluePrintContext = BluePrintContext(serviceTemplate)
- val error = BluePrintError()
- bluePrintTypeEnhancerService.enhanceServiceTemplate(bluePrintContext, error, "service_template",
- bluePrintContext.serviceTemplate)
- return bluePrintContext.serviceTemplate
+ bluePrintTypeEnhancerService.enhanceServiceTemplate(blueprintRuntimeService, "service_template",
+ blueprintRuntimeService.bluePrintContext().serviceTemplate)
+
+ if (blueprintRuntimeService.getBluePrintError().errors.isNotEmpty()) {
+ throw BluePrintException(blueprintRuntimeService.getBluePrintError().errors.toString())
+ }
+ } catch (e: Exception) {
+ log.error("failed in blueprint enhancement", e)
+ }
+
+ return blueprintRuntimeService.bluePrintContext()
}
+
}
diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintNodeTemplateEnhancerImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintNodeTemplateEnhancerImpl.kt index f87721f11..cfbfab71d 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintNodeTemplateEnhancerImpl.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintNodeTemplateEnhancerImpl.kt @@ -28,6 +28,7 @@ import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintNodeTem import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService import org.springframework.beans.factory.config.ConfigurableBeanFactory import org.springframework.context.annotation.Scope import org.springframework.stereotype.Service @@ -40,20 +41,22 @@ open class BluePrintNodeTemplateEnhancerImpl(private val bluePrintRepoService: B private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintNodeTemplateEnhancerImpl::class.toString()) + lateinit var bluePrintRuntimeService: BluePrintRuntimeService<*> lateinit var bluePrintContext: BluePrintContext - lateinit var error: BluePrintError - override fun enhance(bluePrintContext: BluePrintContext, error: BluePrintError, name: String, nodeTemplate: NodeTemplate) { + + override fun enhance(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, nodeTemplate: NodeTemplate) { log.info("Enhancing NodeTemplate($name)") - this.bluePrintContext = bluePrintContext - this.error = error + this.bluePrintRuntimeService = bluePrintRuntimeService + this.bluePrintContext = bluePrintRuntimeService.bluePrintContext() + val nodeTypeName = nodeTemplate.type // Get NodeType from Repo and Update Service Template val nodeType = populateNodeType(nodeTypeName) // Enrich NodeType - bluePrintTypeEnhancerService.enhanceNodeType(bluePrintContext, error, nodeTypeName, nodeType) + bluePrintTypeEnhancerService.enhanceNodeType(bluePrintRuntimeService, nodeTypeName, nodeType) //Enrich Node Template Artifacts enhanceNodeTemplateArtifactDefinition(name, nodeTemplate) diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintNodeTypeEnhancerImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintNodeTypeEnhancerImpl.kt index f9ed0e6f5..941be07f1 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintNodeTypeEnhancerImpl.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintNodeTypeEnhancerImpl.kt @@ -18,7 +18,6 @@ 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.BluePrintError import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintTypes import org.onap.ccsdk.apps.controllerblueprints.core.data.InterfaceDefinition @@ -26,9 +25,10 @@ import org.onap.ccsdk.apps.controllerblueprints.core.data.NodeType import org.onap.ccsdk.apps.controllerblueprints.core.data.OperationDefinition import org.onap.ccsdk.apps.controllerblueprints.core.format import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintNodeTypeEnhancer +import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext -import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService import org.springframework.beans.factory.config.ConfigurableBeanFactory import org.springframework.context.annotation.Scope import org.springframework.stereotype.Service @@ -40,19 +40,21 @@ open class BluePrintNodeTypeEnhancerImpl(private val bluePrintRepoService: BlueP private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintNodeTypeEnhancerImpl::class.toString()) + lateinit var bluePrintRuntimeService: BluePrintRuntimeService<*> lateinit var bluePrintContext: BluePrintContext - lateinit var error: BluePrintError - override fun enhance(bluePrintContext: BluePrintContext, error: BluePrintError, name: String, nodeType: NodeType) { - this.bluePrintContext = bluePrintContext - this.error = error + + override fun enhance(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, nodeType: NodeType) { + this.bluePrintRuntimeService = bluePrintRuntimeService + this.bluePrintContext = bluePrintRuntimeService.bluePrintContext() + val derivedFrom = nodeType.derivedFrom if (!BluePrintTypes.rootNodeTypes().contains(derivedFrom)) { val derivedFromNodeType = populateNodeType(name) // Enrich NodeType - enhance(bluePrintContext, error, derivedFrom, derivedFromNodeType) + enhance(bluePrintRuntimeService, derivedFrom, derivedFromNodeType) } // NodeType Property Definitions @@ -71,7 +73,7 @@ open class BluePrintNodeTypeEnhancerImpl(private val bluePrintRepoService: BlueP open fun enrichNodeTypeProperties(nodeTypeName: String, nodeType: NodeType) { nodeType.properties?.let { - bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintContext, error, nodeType.properties!!) + bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintRuntimeService, nodeType.properties!!) } } @@ -83,7 +85,7 @@ open class BluePrintNodeTypeEnhancerImpl(private val bluePrintRepoService: BlueP // Get Requirement NodeType from Repo and Update Service Template val requirementNodeType = populateNodeType(requirementNodeTypeName) // Enhanypece Node T - enhance(bluePrintContext, error, requirementNodeTypeName, requirementNodeType) + enhance(bluePrintRuntimeService, requirementNodeTypeName, requirementNodeType) } } } @@ -91,7 +93,7 @@ open class BluePrintNodeTypeEnhancerImpl(private val bluePrintRepoService: BlueP open fun enrichNodeTypeCapabilityProperties(nodeTypeName: String, nodeType: NodeType) { nodeType.capabilities?.forEach { _, capabilityDefinition -> capabilityDefinition.properties?.let { properties -> - bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintContext, error, properties) + bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintRuntimeService, properties) } } } @@ -115,13 +117,13 @@ open class BluePrintNodeTypeEnhancerImpl(private val bluePrintRepoService: BlueP open fun enrichNodeTypeInterfaceOperationInputs(nodeTypeName: String, operationName: String, operation: OperationDefinition) { operation.inputs?.let { inputs -> - bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintContext, error, inputs) + bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintRuntimeService, inputs) } } open fun enrichNodeTypeInterfaceOperationOputputs(nodeTypeName: String, operationName: String, operation: OperationDefinition) { operation.outputs?.let { inputs -> - bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintContext, error, inputs) + bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintRuntimeService, inputs) } } diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPolicyTypeEnhancerImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPolicyTypeEnhancerImpl.kt index 13cbc48cc..7a9fbb671 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPolicyTypeEnhancerImpl.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPolicyTypeEnhancerImpl.kt @@ -19,9 +19,9 @@ package org.onap.ccsdk.apps.controllerblueprints.service.enhancer import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintError import org.onap.ccsdk.apps.controllerblueprints.core.data.PolicyType import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintPolicyTypeEnhancer -import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService -import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService +import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService import org.springframework.beans.factory.config.ConfigurableBeanFactory import org.springframework.context.annotation.Scope import org.springframework.stereotype.Service @@ -32,13 +32,12 @@ class BluePrintPolicyTypeEnhancerImpl(private val bluePrintRepoService: BluePrin private val bluePrintTypeEnhancerService: BluePrintTypeEnhancerService) : BluePrintPolicyTypeEnhancer { - lateinit var bluePrintContext: BluePrintContext - lateinit var error: BluePrintError + lateinit var bluePrintRuntimeService: BluePrintRuntimeService<*> + - override fun enhance(bluePrintContext: BluePrintContext, error: BluePrintError, name: String, type: PolicyType) { + override fun enhance(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, type: PolicyType) { - this.bluePrintContext = bluePrintContext - this.error = error + this.bluePrintRuntimeService = bluePrintRuntimeService // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPropertyDefinitionEnhancerImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPropertyDefinitionEnhancerImpl.kt index aea36231f..ee3e6c37a 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPropertyDefinitionEnhancerImpl.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintPropertyDefinitionEnhancerImpl.kt @@ -16,7 +16,6 @@ package org.onap.ccsdk.apps.controllerblueprints.service.enhancer -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.data.DataType @@ -26,6 +25,7 @@ import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintPropert import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService import org.springframework.beans.factory.config.ConfigurableBeanFactory import org.springframework.context.annotation.Scope import org.springframework.stereotype.Service @@ -37,12 +37,13 @@ open class BluePrintPropertyDefinitionEnhancerImpl(private val bluePrintRepoServ : BluePrintPropertyDefinitionEnhancer { + lateinit var bluePrintRuntimeService: BluePrintRuntimeService<*> lateinit var bluePrintContext: BluePrintContext - lateinit var error: BluePrintError - override fun enhance(bluePrintContext: BluePrintContext, error: BluePrintError, name: String, propertyDefinition: PropertyDefinition) { - this.bluePrintContext = bluePrintContext - this.error = error + + override fun enhance(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, propertyDefinition: PropertyDefinition) { + this.bluePrintRuntimeService = bluePrintRuntimeService + this.bluePrintContext = bluePrintRuntimeService.bluePrintContext() val propertyType = propertyDefinition.type if (BluePrintTypes.validPrimitiveTypes().contains(propertyType)) { diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintServiceTemplateEnhancerImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintServiceTemplateEnhancerImpl.kt index 2cd9e3288..6a4f6232c 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintServiceTemplateEnhancerImpl.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintServiceTemplateEnhancerImpl.kt @@ -16,12 +16,14 @@ package org.onap.ccsdk.apps.controllerblueprints.service.enhancer -import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintError +import com.att.eelf.configuration.EELFLogger +import com.att.eelf.configuration.EELFManager import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintServiceTemplateEnhancer import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService import org.springframework.beans.factory.config.ConfigurableBeanFactory import org.springframework.context.annotation.Scope import org.springframework.stereotype.Service @@ -31,13 +33,16 @@ import org.springframework.stereotype.Service open class BluePrintServiceTemplateEnhancerImpl(private val bluePrintRepoService: BluePrintRepoService, private val bluePrintTypeEnhancerService: BluePrintTypeEnhancerService) : BluePrintServiceTemplateEnhancer { + private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintEnhancerServiceImpl::class.toString()) + + lateinit var bluePrintRuntimeService: BluePrintRuntimeService<*> lateinit var bluePrintContext: BluePrintContext - lateinit var error: BluePrintError - override fun enhance(bluePrintContext: BluePrintContext, error: BluePrintError, name: String, type: ServiceTemplate) { - this.bluePrintContext = bluePrintContext - this.error = error + override fun enhance(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, type: ServiceTemplate) { + this.bluePrintRuntimeService = bluePrintRuntimeService + this.bluePrintContext = bluePrintRuntimeService.bluePrintContext() + initialCleanUp() enhanceTopologyTemplate() } @@ -57,7 +62,7 @@ open class BluePrintServiceTemplateEnhancerImpl(private val bluePrintRepoService open fun enhanceTopologyTemplate() { bluePrintContext.serviceTemplate.topologyTemplate?.let { topologyTemplate -> - bluePrintTypeEnhancerService.enhanceTopologyTemplate(bluePrintContext, error, "default", topologyTemplate) + bluePrintTypeEnhancerService.enhanceTopologyTemplate(bluePrintRuntimeService, "default", topologyTemplate) } } }
\ No newline at end of file diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintTopologyTemplateEnhancerImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintTopologyTemplateEnhancerImpl.kt index 58d8f878a..6b72d4209 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintTopologyTemplateEnhancerImpl.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintTopologyTemplateEnhancerImpl.kt @@ -16,12 +16,11 @@ package org.onap.ccsdk.apps.controllerblueprints.service.enhancer -import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintError import org.onap.ccsdk.apps.controllerblueprints.core.data.TopologyTemplate import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTopologyTemplateEnhancer import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService -import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService import org.springframework.beans.factory.config.ConfigurableBeanFactory import org.springframework.context.annotation.Scope import org.springframework.stereotype.Service @@ -31,12 +30,10 @@ import org.springframework.stereotype.Service open class BluePrintTopologyTemplateEnhancerImpl(private val bluePrintRepoService: BluePrintRepoService, private val bluePrintTypeEnhancerService: BluePrintTypeEnhancerService) : BluePrintTopologyTemplateEnhancer { - lateinit var bluePrintContext: BluePrintContext - lateinit var error: BluePrintError + lateinit var bluePrintRuntimeService: BluePrintRuntimeService<*> - override fun enhance(bluePrintContext: BluePrintContext, error: BluePrintError, name: String, type: TopologyTemplate) { - this.bluePrintContext = bluePrintContext - this.error = error + override fun enhance(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, type: TopologyTemplate) { + this.bluePrintRuntimeService = bluePrintRuntimeService enhanceTopologyTemplateInputs(type) enhanceTopologyTemplateNodeTemplates(type) @@ -45,19 +42,19 @@ open class BluePrintTopologyTemplateEnhancerImpl(private val bluePrintRepoServic open fun enhanceTopologyTemplateInputs(topologyTemplate: TopologyTemplate) { topologyTemplate.inputs?.let { inputs -> - bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintContext, error, inputs) + bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintRuntimeService, inputs) } } open fun enhanceTopologyTemplateNodeTemplates(topologyTemplate: TopologyTemplate) { topologyTemplate.nodeTemplates?.forEach { nodeTemplateName, nodeTemplate -> - bluePrintTypeEnhancerService.enhanceNodeTemplate(bluePrintContext, error, nodeTemplateName, nodeTemplate) + bluePrintTypeEnhancerService.enhanceNodeTemplate(bluePrintRuntimeService, nodeTemplateName, nodeTemplate) } } open fun enhanceTopologyTemplateWorkflowss(topologyTemplate: TopologyTemplate) { topologyTemplate.workflows?.forEach { workflowName, workflow -> - bluePrintTypeEnhancerService.enhanceWorkflow(bluePrintContext, error, workflowName, workflow) + bluePrintTypeEnhancerService.enhanceWorkflow(bluePrintRuntimeService, workflowName, workflow) } } diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintWorkflowEnhancerImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintWorkflowEnhancerImpl.kt index 80967f29a..e3a8f2221 100644 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintWorkflowEnhancerImpl.kt +++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintWorkflowEnhancerImpl.kt @@ -18,14 +18,17 @@ 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.BluePrintError +import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintProcessorException +import org.onap.ccsdk.apps.controllerblueprints.core.ConfigModelConstant import org.onap.ccsdk.apps.controllerblueprints.core.data.DataType +import org.onap.ccsdk.apps.controllerblueprints.core.data.PropertyDefinition import org.onap.ccsdk.apps.controllerblueprints.core.data.Workflow import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintRepoService import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintTypeEnhancerService import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintWorkflowEnhancer import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext +import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment import org.springframework.beans.factory.config.ConfigurableBeanFactory @@ -40,61 +43,140 @@ open class BluePrintWorkflowEnhancerImpl(private val bluePrintRepoService: BlueP : BluePrintWorkflowEnhancer { private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintNodeTemplateEnhancerImpl::class.toString()) + lateinit var bluePrintRuntimeService: BluePrintRuntimeService<*> lateinit var bluePrintContext: BluePrintContext - lateinit var error: BluePrintError + + val PROPERTY_DEPENDENCY_NODE_TEMPLATES = "dependency-node-templates" + private val workflowDataTypes: MutableMap<String, DataType> = hashMapOf() - override fun enhance(bluePrintContext: BluePrintContext, error: BluePrintError, name: String, workflow: Workflow) { + override fun enhance(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, workflow: Workflow) { log.info("Enhancing Workflow($name)") - this.bluePrintContext = bluePrintContext - this.error = error + this.bluePrintRuntimeService = bluePrintRuntimeService + this.bluePrintContext = bluePrintRuntimeService.bluePrintContext() + + val dynamicPropertyName = "$name-properties" + if (workflow.inputs == null) { + workflow.inputs = hashMapOf() + } + // Clean Dynamic Property Field, If present + workflow.inputs?.remove(dynamicPropertyName) // Enrich Only for Resource Assignment and Dynamic Input Properties if any - //enhanceStepTargets(workflow) + enhanceStepTargets(name, workflow) // Enrich Workflow Inputs - //enhanceWorkflowInputs(name, workflow) + enhanceWorkflowInputs(name, workflow) } open fun enhanceWorkflowInputs(name: String, workflow: Workflow) { - val dynamicPropertyName = "$name-properties" + workflow.inputs?.let { inputs -> - // TODO("Filter Dynamic Properties") - bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintContext, error, inputs) + bluePrintTypeEnhancerService.enhancePropertyDefinitions(bluePrintRuntimeService, inputs) } } - private fun enhanceStepTargets(workflow: Workflow) { + private fun enhanceStepTargets(name: String, workflow: Workflow) { + + // Get the first Step Target NodeTemplate name( Since that is the DG Node Template) + val dgNodeTemplateName = bluePrintContext.workflowFirstStepNodeTemplate(name) + + val dgNodeTemplate = bluePrintContext.nodeTemplateByName(dgNodeTemplateName) - val workflowNodeTemplates = workflowTargets(workflow) + // Get the Dependent Component Node Template Names + val dependencyNodeTemplateNodes = dgNodeTemplate.properties?.get(PROPERTY_DEPENDENCY_NODE_TEMPLATES) + ?: throw BluePrintException("couldn't get property($PROPERTY_DEPENDENCY_NODE_TEMPLATES) ") - workflowNodeTemplates.forEach { nodeTemplate -> - val artifactFiles = bluePrintContext.nodeTemplateByName(nodeTemplate).artifacts?.filter { + val dependencyNodeTemplates = JacksonUtils.getListFromJsonNode(dependencyNodeTemplateNodes, String::class.java) + + log.info("workflow($name) dependent component NodeTemplates($dependencyNodeTemplates)") + + // Check and Get Resource Assignment File + val resourceAssignmentArtifacts = dependencyNodeTemplates?.mapNotNull { componentNodeTemplateName -> + log.info("Identified workflow($name) targets($componentNodeTemplateName") + val resourceAssignmentArtifacts = bluePrintContext.nodeTemplateByName(componentNodeTemplateName) + .artifacts?.filter { it.value.type == "artifact-mapping-resource" }?.map { + log.info("resource assignment artifacts(${it.key}) for NodeType(${componentNodeTemplateName})") it.value.file } + resourceAssignmentArtifacts + }?.flatten() + + log.info("Workflow($name) resource assignment files($resourceAssignmentArtifacts") + + if (resourceAssignmentArtifacts != null && resourceAssignmentArtifacts.isNotEmpty()) { + + // Add Workflow Dynamic Property + addWorkFlowDynamicPropertyDefinitions(name, workflow) + + resourceAssignmentArtifacts.forEach { fileName -> - artifactFiles?.let { fileName -> val absoluteFilePath = "${bluePrintContext.rootPath}/$fileName" - // Enhance Resource Assignment File - enhanceResourceAssignmentFile(absoluteFilePath) + log.info("enriching workflow($name) artifacts file(${absoluteFilePath}") + // Enhance Resource Assignment File + val resourceAssignmentProperties = enhanceResourceAssignmentFile(absoluteFilePath) + // Add Workflow Dynamic DataType + addWorkFlowDynamicDataType(name, resourceAssignmentProperties) } } } - private fun workflowTargets(workflow: Workflow): List<String> { - return workflow.steps?.map { - it.value.target - }?.filterNotNull() ?: arrayListOf() - } + private fun enhanceResourceAssignmentFile(filePath: String): MutableMap<String, PropertyDefinition> { + + val resourceAssignmentProperties: MutableMap<String, PropertyDefinition> = hashMapOf() - open fun enhanceResourceAssignmentFile(filePath: String) { val resourceAssignments: MutableList<ResourceAssignment> = JacksonUtils.getListFromFile(filePath, ResourceAssignment::class.java) as? MutableList<ResourceAssignment> ?: throw BluePrintProcessorException("couldn't get ResourceAssignment definitions for the file($filePath)") - resourceAssignmentEnhancerService.enhanceBluePrint(bluePrintTypeEnhancerService, bluePrintContext, error, resourceAssignments) + + // Call Resource Assignment Enhancer + resourceAssignmentEnhancerService.enhanceBluePrint(bluePrintTypeEnhancerService, bluePrintRuntimeService, resourceAssignments) + + resourceAssignments.forEach { resourceAssignment -> + resourceAssignmentProperties[resourceAssignment.name] = resourceAssignment.property!! + } + return resourceAssignmentProperties + } + + private fun addWorkFlowDynamicPropertyDefinitions(name: String, workflow: Workflow) { + val dynamicPropertyName = "$name-properties" + val propertyDefinition = PropertyDefinition() + propertyDefinition.description = "Dynamic PropertyDefinition for workflow($name)." + propertyDefinition.type = "dt-$dynamicPropertyName" + propertyDefinition.required = true + // Add to Workflow Inputs + workflow.inputs?.put(dynamicPropertyName, propertyDefinition) + } + + private fun addWorkFlowDynamicDataType(workflowName: String, mappingProperties: MutableMap<String, PropertyDefinition>) { + + val dataTypeName = "dt-$workflowName-properties" + + var recipeDataType: DataType? = bluePrintContext.serviceTemplate.dataTypes?.get(dataTypeName) + + if (recipeDataType == null) { + log.info("DataType not present for the recipe({})", dataTypeName) + recipeDataType = DataType() + recipeDataType.version = "1.0.0" + recipeDataType.description = "Dynamic DataType definition for workflow($workflowName)." + recipeDataType.derivedFrom = ConfigModelConstant.MODEL_TYPE_DATA_TYPE_DYNAMIC + + val dataTypeProperties: MutableMap<String, PropertyDefinition> = hashMapOf() + recipeDataType.properties = dataTypeProperties + + // Overwrite WorkFlow DataType + bluePrintContext.serviceTemplate.dataTypes?.put(dataTypeName, recipeDataType) + + } else { + log.info("Dynamic dataType($dataTypeName) already present for workflow($workflowName).") + } + // Merge all the Recipe Properties + mappingProperties.forEach { propertyName, propertyDefinition -> + recipeDataType.properties?.put(propertyName, propertyDefinition) + } } }
\ No newline at end of file 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 d6f346ecd..d6a00ae10 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 @@ -18,12 +18,11 @@ 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.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.core.service.BluePrintRuntimeService
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
@@ -42,7 +41,7 @@ interface ResourceAssignmentEnhancerService { @Throws(BluePrintException::class)
fun enhanceBluePrint(bluePrintTypeEnhancerService: BluePrintTypeEnhancerService,
- bluePrintContext: BluePrintContext, error: BluePrintError,
+ bluePrintRuntimeService: BluePrintRuntimeService<*>,
resourceAssignments: List<ResourceAssignment>)
}
@@ -62,7 +61,7 @@ open class ResourceAssignmentEnhancerServiceImpl(private val resourceDefinitionR * then get the NodeType of the Sources assigned
*/
override fun enhanceBluePrint(bluePrintTypeEnhancerService: BluePrintTypeEnhancerService,
- bluePrintContext: BluePrintContext, error: BluePrintError,
+ bluePrintRuntimeService: BluePrintRuntimeService<*>,
resourceAssignments: List<ResourceAssignment>) {
val uniqueSourceNodeTypeNames = hashSetOf<String>()
@@ -81,7 +80,7 @@ open class ResourceAssignmentEnhancerServiceImpl(private val resourceDefinitionR // TODO("Candidate for Optimisation")
if (checkResourceDefinitionNeeded(resourceAssignment)) {
- bluePrintTypeEnhancerService.enhancePropertyDefinition(bluePrintContext, error, resourceAssignment.name,
+ bluePrintTypeEnhancerService.enhancePropertyDefinition(bluePrintRuntimeService, resourceAssignment.name,
resourceAssignment.property!!);
// Get the Resource Definition from Repo
@@ -91,13 +90,13 @@ open class ResourceAssignmentEnhancerServiceImpl(private val resourceDefinitionR ?: throw BluePrintException(format("failed to get assigned dictionarySource({}) from resourceDefinition({})", dictionarySource, dictionaryName))
// Enrich as NodeTemplate
- bluePrintTypeEnhancerService.enhanceNodeTemplate(bluePrintContext, error, dictionarySource, sourceNodeTemplate)
+ bluePrintTypeEnhancerService.enhanceNodeTemplate(bluePrintRuntimeService, dictionarySource, sourceNodeTemplate)
}
}
// Enrich the ResourceSource NodeTypes
uniqueSourceNodeTypeNames.map { nodeTypeName ->
val nodeType = resourceDefinitionRepoService.getNodeType(nodeTypeName)
- bluePrintTypeEnhancerService.enhanceNodeType(bluePrintContext, error, nodeTypeName, nodeType)
+ bluePrintTypeEnhancerService.enhanceNodeType(bluePrintRuntimeService, nodeTypeName, nodeType)
}
}
diff --git a/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImplTest.java b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImplTest.java index 01b517620..abc3d56f3 100644 --- a/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImplTest.java +++ b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/enhancer/BluePrintEnhancerServiceImplTest.java @@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; +import java.nio.file.Paths; @RunWith(SpringRunner.class) @ContextConfiguration(classes = {TestApplication.class}) @@ -55,8 +56,11 @@ public class BluePrintEnhancerServiceImplTest { String basePath = "./../../../../components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration"; - BluePrintContext bluePrintContext = bluePrintEnhancerService.enhance(basePath); + String targetPath = Paths.get("target", "bp-enhance").toUri().getPath(); + + BluePrintContext bluePrintContext = bluePrintEnhancerService.enhance(basePath, targetPath); Assert.assertNotNull("failed to get blueprintContext ", bluePrintContext); + } }
\ No newline at end of file |