"type": "artifact-mapping-resource",
"file": "Definitions/maxoccurrence-mapping.json"
},
+ "transform-template": {
+ "type": "artifact-template-velocity",
+ "file": "Templates/baseconfig-template.vtl"
+ },
+ "transform-mapping": {
+ "type": "artifact-mapping-resource",
+ "file": "Definitions/transform-mapping.json"
+ },
"notemplate-mapping": {
"type": "artifact-mapping-resource",
"file": "Definitions/notemplate-mapping.json"
"required": true,
"type": "string"
},
+ "private_net_id": {
+ "required": true,
+ "type": "string"
+ },
"firmware-version": {
"type" : "string"
},
}
}
},
+ "int_pktgen_private_net_id": {
+ "tags": "int_pktgen_private_net_id",
+ "name": "int_pktgen_private_net_id",
+ "property": {
+ "description": "int_pktgen_private_net_id",
+ "type": "string"
+ },
+ "updated-by": "Lukasz Rajewski <lukasz.rajewski@t-mobile.pl>",
+ "sources": {
+ "default": {
+ "type": "source-default",
+ "properties": {}
+ }
+ }
+ },
"vnf_parameter": {
"tags": "vnf_parameter",
"name": "vnf_parameter",
--- /dev/null
+[
+ {
+ "name": "service-instance-id",
+ "input-param": true,
+ "property": {
+ "type": "string"
+ },
+ "dictionary-name": "service-instance-id",
+ "dictionary-source": "input",
+ "dependencies": [
+ ]
+ },
+ {
+ "name": "vnf-id",
+ "input-param": true,
+ "property": {
+ "type": "string"
+ },
+ "dictionary-name": "vnf-id",
+ "dictionary-source": "input",
+ "dependencies": []
+ },
+ {
+ "name": "vnf_name",
+ "input-param": false,
+ "property": {
+ "type": "string"
+ },
+ "dictionary-name": "vnf_name",
+ "dictionary-source": "sdnc",
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
+ },
+ {
+ "name": "private_net_id",
+ "input-param": true,
+ "property": {
+ "type": "string",
+ "metadata": {
+ "transform-template": "${vnf_name}_private2"
+ }
+ },
+ "dictionary-name": "int_pktgen_private_net_id",
+ "dictionary-source": "default",
+ "dependencies": [
+ "vnf_name"
+ ]
+ }
+]
\ No newline at end of file
?.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
}
}
+ @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.
*/
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() {