aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkuldipr <kuldip.rai@amdocs.com>2020-12-03 13:21:59 -0500
committerkuldipr <kuldip.rai@amdocs.com>2020-12-17 14:44:08 -0500
commit7b47df386f4e3a44b421f4f30e457af90fe7a5ab (patch)
tree3f56c26ceff488373887dfbb8aa4837178fc63bd
parentf83b186581551af927332583d50670003d0e0c20 (diff)
ResourceResolution should fail if required resource did not resolve
Issue-ID: CCSDK-3022 Signed-off-by: kuldipr <kuldip.rai@amdocs.com> Change-Id: I6ca858988f0b11bdf3bbde07e8f4bde939342aa2 Signed-off-by: kuldipr <kuldip.rai@amdocs.com>
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt22
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt29
2 files changed, 33 insertions, 18 deletions
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt
index f38bfad0d..3b0eda01e 100644
--- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt
+++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt
@@ -73,7 +73,7 @@ interface ResourceResolutionService {
nodeTemplateName: String,
artifactPrefix: String,
properties: Map<String, Any>
- ): Pair<String, JsonNode>
+ ): Pair<String, MutableList<ResourceAssignment>>
/** Resolve resources for all the sources defined in a particular resource Definition[resolveDefinition]
* with other [resourceDefinitions] dependencies for the sources [sources]
@@ -137,12 +137,22 @@ open class ResourceResolutionServiceImpl(
val templateMap: MutableMap<String, String> = hashMapOf()
val assignmentMap: MutableMap<String, JsonNode> = hashMapOf()
artifactNames.forEach { artifactName ->
- val (resolvedStringContent, resolvedJsonContent) = resolveResources(
+ val (resolvedStringContent, resourceAssignmentList) = resolveResources(
resourceAssignmentRuntimeService, nodeTemplateName,
artifactName, properties
)
+ val resolvedJsonContent = resourceAssignmentList
+ .associateBy({ it.name }, { it.property?.value })
+ .asJsonNode()
+
templateMap[artifactName] = resolvedStringContent
assignmentMap[artifactName] = resolvedJsonContent
+
+ val failedResolution = resourceAssignmentList.filter { it.status != "success" && it.property?.required == true }.map { it.name }
+ if (failedResolution.isNotEmpty()) {
+ log.error("Failed to resolve required resources($failedResolution)")
+ bluePrintRuntimeService.setBluePrintError(resourceAssignmentRuntimeService.getBluePrintError())
+ }
}
return ResourceResolutionResult(templateMap, assignmentMap)
}
@@ -152,7 +162,7 @@ open class ResourceResolutionServiceImpl(
nodeTemplateName: String,
artifactPrefix: String,
properties: Map<String, Any>
- ): Pair<String, JsonNode> {
+ ): Pair<String, MutableList<ResourceAssignment>> {
// Template Artifact Definition Name
val artifactTemplate = "$artifactPrefix-template"
@@ -196,9 +206,7 @@ open class ResourceResolutionServiceImpl(
ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOLUTION_SUMMARY,
false
) as Boolean
- val assignmentMap = resourceAssignments
- .associateBy({ it.name }, { it.property?.value })
- .asJsonNode()
+
val resolvedParamJsonContent =
ResourceAssignmentUtils.generateResourceDataForAssignments(resourceAssignments.toList())
val artifactTemplateDefinition = bluePrintRuntimeService.bluePrintContext().checkNodeTemplateArtifact(nodeTemplateName, artifactTemplate)
@@ -227,7 +235,7 @@ open class ResourceResolutionServiceImpl(
log.info("Template resolution saved into database successfully : ($properties)")
}
- return Pair(resolvedContent, assignmentMap)
+ return Pair(resolvedContent, resourceAssignments)
}
override suspend fun resolveResourceDefinition(
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt
index d6fc52230..56a324638 100644
--- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt
+++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt
@@ -29,11 +29,10 @@ import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInpu
import org.onap.ccsdk.cds.blueprintsprocessor.core.utils.PayloadUtils
import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor.MockCapabilityScriptRA
import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.utils.ResourceAssignmentUtils
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintError
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
-import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
-import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType
import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext
import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintMetadataUtils
import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
@@ -136,15 +135,20 @@ class ResourceResolutionServiceTest {
"baseconfig",
props
)
- }.let { (templateMap, assignmentMap) ->
+ }.let { (templateMap, assignmentList) ->
assertEquals("This is Sample Velocity Template", templateMap)
- val expectedAssignmentMap = hashMapOf(
- "service-instance-id" to "siid_1234",
- "vnf-id" to "vnf_1234",
- "vnf_name" to "temp_vnf"
- ).asJsonType()
- assertEquals(expectedAssignmentMap, assignmentMap)
+ val expectedAssignmentList = mutableListOf(
+ "service-instance-id" to "siid_1234",
+ "vnf-id" to "vnf_1234",
+ "vnf_name" to "temp_vnf"
+ )
+ assertEquals(expectedAssignmentList.size, assignmentList.size)
+
+ val areEqual = expectedAssignmentList.zip(assignmentList).all { (it1, it2) ->
+ it1.first == it2.name && it1.second == it2.property?.value?.asText() ?: null
+ }
+ assertEquals(true, areEqual)
}
}
@@ -321,8 +325,11 @@ class ResourceResolutionServiceTest {
"vnf-id" : "vnf_1234",
"vnf_name" : "temp_vnf"
}
- """.trimIndent(), it.first)
- assertEquals("siid_1234", it.second["service-instance-id"].asText())
+ """.trimIndent(), it.first
+ )
+ val areEqual = it.second.first().name == "service-instance-id" &&
+ "siid_1234" == it.second.first().property?.value?.asText() ?: null
+ assertEquals(true, areEqual)
}
}