diff options
author | Lukasz Rajewski <lukasz.rajewski@t-mobile.pl> | 2022-10-04 14:13:25 +0200 |
---|---|---|
committer | Lukasz Rajewski <lukasz.rajewski@t-mobile.pl> | 2022-10-04 20:57:15 +0000 |
commit | adc8f4c193a138f9cb06c145e16d56103acd5ecc (patch) | |
tree | 6c90da4c36bbc9e7a9bba216139844c34cdcf733 /ms/blueprintsprocessor | |
parent | 4805631816cbb73192603bb5a1d0ffe5d71c8e30 (diff) |
Fix the transform-templating for referenced complex types
After fix the transform-templating will be closer to the
velocity artifact templating mechanism, what was not
a case before, when templating with complex variables like
json was not working.
Issue-ID: CCSDK-3774
Signed-off-by: Lukasz Rajewski <lukasz.rajewski@t-mobile.pl>
Change-Id: Icd5001cb2ea2de0220fe65a7c9c0510d1fba0911
Diffstat (limited to 'ms/blueprintsprocessor')
3 files changed, 75 insertions, 1 deletions
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtils.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtils.kt index 7ab3126bb..8bc78dd40 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtils.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtils.kt @@ -136,7 +136,7 @@ class ResourceAssignmentUtils { ?.let { if (it.contains("$")) it else null } ?.let { template -> val resolutionStore = raRuntimeService.getResolutionStore() - .mapValues { e -> e.value.asText() } as MutableMap<String, Any> + .mapValues { e -> if (e.value.isTextual) e.value.asText() else JacksonUtils.getJson(e.value) } as MutableMap<String, Any> val newValue: JsonNode try { newValue = BluePrintVelocityTemplateService 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 b39e709d0..9a021e8f6 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 @@ -153,6 +153,61 @@ class ResourceResolutionServiceTest { } } + @Test + @Throws(Exception::class) + fun testResolveResourceWithTransform() { + runBlocking { + + Assert.assertNotNull("failed to create ResourceResolutionService", resourceResolutionService) + + val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime( + "1234", + "./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration" + ) + + val executionServiceInput = + JacksonUtils.readValueFromClassPathFile( + "payload/requests/sample-resourceresolution-request.json", + ExecutionServiceInput::class.java + )!! + + val resourceAssignmentRuntimeService = + ResourceAssignmentUtils.transformToRARuntimeService( + bluePrintRuntimeService, + "testResolveResourceWithTransform" + ) + + // Prepare Inputs + PayloadUtils.prepareInputsFromWorkflowPayload( + bluePrintRuntimeService, + executionServiceInput.payload, + "resource-assignment" + ) + + resourceResolutionService.resolveResources( + resourceAssignmentRuntimeService, + "resource-assignment", + "transform", + props + ) + }.let { (templateMap, assignmentList) -> + assertEquals("This is Sample Velocity Template", templateMap) + + val expectedAssignmentList = mutableListOf( + "service-instance-id" to "siid_1234", + "vnf-id" to "vnf_1234", + "vnf_name" to "temp_vnf", + "private_net_id" to "temp_vnf_private2" + ) + 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) + } + } + /** * Always perform new resolution even if resolution exists in the database. */ diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtilsTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtilsTest.kt index 2f07e3b9a..541d017b9 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtilsTest.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtilsTest.kt @@ -362,10 +362,29 @@ class ResourceAssignmentUtilsTest { ResourceAssignmentUtils .setResourceDataValue(resourceAssignment, resourceAssignmentRuntimeService, value) + val valueJson = "{\"config\":{\"parameter\":\"address\",\"value\":\"0.0.0.0\"}}" + resourceAssignmentRuntimeService.putResolutionStore("vnf_config", JacksonUtils.objectMapper.readTree(valueJson)) + val resourceAssignmentJson = ResourceAssignment() + resourceAssignmentJson.name = "vendor_vnf_configuration" + resourceAssignmentJson.property = PropertyDefinition() + resourceAssignmentJson.property!!.type = "json" + + // Enable transform template + resourceAssignmentJson.property!!.metadata = + mutableMapOf(METADATA_TRANSFORM_TEMPLATE to "\${vnf_config}") + + ResourceAssignmentUtils + .setResourceDataValue(resourceAssignmentJson, resourceAssignmentRuntimeService, JacksonUtils.objectMapper.createObjectNode()) + assertEquals( "abc-vnf_private2", resourceAssignment.property!!.value!!.asText() ) + + assertEquals( + valueJson, + resourceAssignmentJson.property!!.value!!.toString() + ) } private fun initInputMapAndExpectedValuesForPrimitiveType() { |