Refactoring Resource Resolution Service 94/101194/3
authorSingal, Kapil (ks220y) <ks220y@att.com>
Wed, 5 Feb 2020 19:27:36 +0000 (14:27 -0500)
committerKAPIL SINGAL <ks220y@att.com>
Wed, 12 Feb 2020 20:35:42 +0000 (20:35 +0000)
Removing Node Template dependency

Issue-ID: CCSDK-2078
Signed-off-by: Singal, Kapil (ks220y) <ks220y@att.com>
Change-Id: I24f3e003c64f3ee40eee4699366cfadfc1d7147e

README.md
ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt
ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt
ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContext.kt
ms/blueprintsprocessor/modules/services/workflow-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/ImperativeWorkflowExecutionService.kt

index 8513e0f..5c7ef10 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-## Format code with ktlint checkstyle tool use the following command
+##### Format code with ktlint checkstyle tool use the following command
 
-mvn process-source -P format
+`mvn process-sources -P format`
 
 
 ## Reference
index 51e93a3..7272a3d 100644 (file)
@@ -152,8 +152,7 @@ open class ResourceResolutionServiceImpl(
         // Resource Assignment Artifact Definition Name
         val artifactMapping = "$artifactPrefix-mapping"
 
-        val resolvedContent: String
-        log.info("Resolving resource for template artifact($artifactTemplate) with resource assignment artifact($artifactMapping)")
+        log.info("Resolving resource with resource assignment artifact($artifactMapping)")
 
         val resourceAssignmentContent =
             bluePrintRuntimeService.resolveNodeTemplateArtifact(nodeTemplateName, artifactMapping)
@@ -189,14 +188,20 @@ open class ResourceResolutionServiceImpl(
         val resolvedParamJsonContent =
             ResourceAssignmentUtils.generateResourceDataForAssignments(resourceAssignments.toList())
 
-        resolvedContent = blueprintTemplateService.generateContent(
-            bluePrintRuntimeService, nodeTemplateName,
-            artifactTemplate, resolvedParamJsonContent, false,
-            mutableMapOf(
-                ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE to
-                        properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE].asJsonPrimitive()
+        val artifactTemplateDefinition = bluePrintRuntimeService.bluePrintContext().checkNodeTemplateArtifact(nodeTemplateName, artifactTemplate)
+
+        val resolvedContent = if (artifactTemplateDefinition != null) {
+            blueprintTemplateService.generateContent(
+                bluePrintRuntimeService, nodeTemplateName,
+                artifactTemplate, resolvedParamJsonContent, false,
+                mutableMapOf(
+                    ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE to
+                            properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE].asJsonPrimitive()
+                )
             )
-        )
+        } else {
+            resolvedParamJsonContent
+        }
 
         if (isToStore(properties)) {
             templateResolutionDBService.write(properties, resolvedContent, bluePrintRuntimeService, artifactPrefix)
@@ -211,8 +216,7 @@ open class ResourceResolutionServiceImpl(
         resourceDefinitions: MutableMap<String, ResourceDefinition>,
         resolveDefinition: String,
         sources: List<String>
-    ):
-            MutableMap<String, JsonNode> {
+    ): MutableMap<String, JsonNode> {
 
         // Populate Dummy Resource Assignments
         val resourceAssignments = createResourceAssignments(resourceDefinitions, resolveDefinition, sources)
@@ -397,8 +401,10 @@ open class ResourceResolutionServiceImpl(
             if (resourceResolution.status == BluePrintConstants.STATUS_SUCCESS) {
                 resourceAssignmentList.forEach {
                     if (compareOne(resourceResolution, it)) {
-                        log.info("Resource ({}) already resolved: value=({})", it.name,
-                            if (hasLogProtect(it.property)) LOG_REDACTED else resourceResolution.value)
+                        log.info(
+                            "Resource ({}) already resolved: value=({})", it.name,
+                            if (hasLogProtect(it.property)) LOG_REDACTED else resourceResolution.value
+                        )
 
                         // Make sure to recreate value as per the defined type.
                         val value = resourceResolution.value!!.asJsonType(it.property!!.type)
index 264b457..2f338a3 100644 (file)
@@ -202,20 +202,20 @@ class ResourceResolutionServiceTest {
                 "resource-assignment"
             )
 
-            resourceResolutionService.resolveResources(
-                resourceAssignmentRuntimeService,
-                "resource-assignment",
-                artifactPrefix,
-                props
+            assertNotNull(
+                resourceResolutionService.resolveResources(
+                    resourceAssignmentRuntimeService,
+                    "resource-assignment",
+                    artifactPrefix,
+                    props
+                ), "Couldn't Resolve Resources for artifact $artifactPrefix"
             )
         }
     }
 
     @Test
     fun testResolveResourcesWithResourceIdAndResourceType() {
-
         props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOLUTION_KEY] = ""
-
         runBlocking {
             Assert.assertNotNull("failed to create ResourceResolutionService", resourceResolutionService)
 
@@ -245,11 +245,13 @@ class ResourceResolutionServiceTest {
                 "resource-assignment"
             )
 
-            resourceResolutionService.resolveResources(
-                resourceAssignmentRuntimeService,
-                "resource-assignment",
-                artifactPrefix,
-                props
+            assertNotNull(
+                resourceResolutionService.resolveResources(
+                    resourceAssignmentRuntimeService,
+                    "resource-assignment",
+                    artifactPrefix,
+                    props
+                ), "Couldn't Resolve Resources for artifact $artifactPrefix"
             )
         }
     }
index a112b6e..7c09702 100644 (file)
@@ -231,15 +231,17 @@ class BluePrintContext(val serviceTemplate: ServiceTemplate) {
         return nodeTemplateByName(nodeTemplateName).artifacts
     }
 
-    fun nodeTemplateArtifact(nodeTemplateName: String, artifactName: String): ArtifactDefinition {
+    fun checkNodeTemplateArtifact(nodeTemplateName: String, artifactName: String): ArtifactDefinition? {
         return nodeTemplateArtifacts(nodeTemplateName)?.get(artifactName)
+    }
+
+    fun nodeTemplateArtifact(nodeTemplateName: String, artifactName: String): ArtifactDefinition {
+        return checkNodeTemplateArtifact(nodeTemplateName, artifactName)
             ?: throw BluePrintException("could't get NodeTemplate($nodeTemplateName)'s ArtifactDefinition($artifactName)")
     }
 
     fun nodeTemplateArtifactForArtifactType(nodeTemplateName: String, artifactType: String): ArtifactDefinition {
-        return nodeTemplateArtifacts(nodeTemplateName)?.filter { it.value.type == artifactType }?.map { it.value }?.get(
-            0
-        )
+        return nodeTemplateArtifacts(nodeTemplateName)?.filter { it.value.type == artifactType }?.map { it.value }?.get(0)
             ?: throw BluePrintException("could't get NodeTemplate($nodeTemplateName)'s Artifact Type($artifactType)")
     }
 
index ebd9d55..06100f1 100644 (file)
@@ -144,7 +144,7 @@ open class ImperativeBluePrintWorkflowService(private val nodeTemplateExecutionS
         nodeInput: ExecutionServiceInput,
         nodeOutput: ExecutionServiceOutput
     ): EdgeLabel {
-        log.info("Executing workflow($workflowName[${this.workflowId}])'s step($${node.id})")
+        log.info("Executing workflow($workflowName[${this.workflowId}])'s step(${node.id})")
         val step = bluePrintRuntimeService.bluePrintContext().workflowStepByName(this.workflowName, node.id)
         checkNotEmpty(step.target) { "couldn't get step target for workflow(${this.workflowName})'s step(${node.id})" }
         val nodeTemplateName = step.target!!