diff options
16 files changed, 214 insertions, 141 deletions
diff --git a/components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/node_types.json b/components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/node_types.json index c57ebe768..efa4006df 100644 --- a/components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/node_types.json +++ b/components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/node_types.json @@ -179,8 +179,14 @@ "version": "1.0.0", "attributes": { "assignment-params": { + "description": "Holds resolved template, resolution-summary or key-value", "required": true, "type": "string" + }, + "assignment-map": { + "description": "Holds resolved values for each artifact prefix eg. { vdns: { vnf-id: 123 } }", + "required": true, + "type": "map" } }, "capabilities": { @@ -214,6 +220,11 @@ "required": false, "type": "string" }, + "resolution-summary": { + "description": "Enable resolution-summary output", + "required": false, + "type": "boolean" + }, "artifact-prefix-names": { "required": true, "description": "Template , Resource Assignment Artifact Prefix names", @@ -248,6 +259,10 @@ "required": true, "type": "string" }, + "resource-assignment-map": { + "required": true, + "type": "string" + }, "status": { "required": true, "type": "string" diff --git a/ms/blueprintsprocessor/application/src/main/docker/distribution.xml b/ms/blueprintsprocessor/application/src/main/docker/distribution.xml index 9a079ac55..fad67c97a 100755 --- a/ms/blueprintsprocessor/application/src/main/docker/distribution.xml +++ b/ms/blueprintsprocessor/application/src/main/docker/distribution.xml @@ -40,6 +40,7 @@ <includes> <include>application.properties</include> <include>logback.xml</include> + <include>error-messages_en.properties</include> </includes> <outputDirectory>opt/app/onap/config</outputDirectory> <useDefaultExcludes>true</useDefaultExcludes> diff --git a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt index bb3538168..d34b24fd1 100644 --- a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt +++ b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt @@ -81,6 +81,6 @@ abstract class NetconfComponentFunction : AbstractScriptComponentFunction() { resourceResolutionService().resolveResources( bluePrintRuntimeService, nodeTemplateName, artifactPrefix, mapOf() - ) + ).first } } diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponent.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponent.kt index e15705a7e..3ebd2f893 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponent.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponent.kt @@ -19,6 +19,7 @@ package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.node.JsonNodeFactory +import com.fasterxml.jackson.databind.node.ObjectNode import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractComponentFunction import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException @@ -78,11 +79,16 @@ open class ResourceResolutionComponent(private val resourceResolutionService: Re properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOLUTION_SUMMARY] = resolutionSummary val jsonResponse = JsonNodeFactory.instance.objectNode() - // Initialize Output Attribute to empty JSON + val assignmentMap = JsonNodeFactory.instance.objectNode() + // Initialize Output Attributes to empty JSON bluePrintRuntimeService.setNodeTemplateAttributeValue( nodeTemplateName, ResourceResolutionConstants.OUTPUT_ASSIGNMENT_PARAMS, jsonResponse ) + bluePrintRuntimeService.setNodeTemplateAttributeValue( + nodeTemplateName, + ResourceResolutionConstants.OUTPUT_ASSIGNMENT_MAP, assignmentMap + ) // validate inputs if we need to store the resource and template resolution. if (storeResult) { @@ -104,7 +110,7 @@ open class ResourceResolutionComponent(private val resourceResolutionService: Re for (j in 1..occurrence) { properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE] = j - val response = resourceResolutionService.resolveResources( + val result = resourceResolutionService.resolveResources( bluePrintRuntimeService, nodeTemplateName, artifactPrefixNames, @@ -113,9 +119,11 @@ open class ResourceResolutionComponent(private val resourceResolutionService: Re // provide indexed result in output if we have multiple resolution if (occurrence != 1) { - jsonResponse.set<JsonNode>(Integer.toString(j), response.asJsonNode()) + jsonResponse.set<JsonNode>(j.toString(), result.templateMap.asJsonNode()) + assignmentMap.set<JsonNode>(j.toString(), result.assignmentMap.asJsonNode()) } else { - jsonResponse.setAll(response.asObjectNode()) + jsonResponse.setAll<ObjectNode>(result.templateMap.asObjectNode()) + assignmentMap.setAll<ObjectNode>(result.assignmentMap.asObjectNode()) } } @@ -124,6 +132,10 @@ open class ResourceResolutionComponent(private val resourceResolutionService: Re nodeTemplateName, ResourceResolutionConstants.OUTPUT_ASSIGNMENT_PARAMS, jsonResponse ) + bluePrintRuntimeService.setNodeTemplateAttributeValue( + nodeTemplateName, + ResourceResolutionConstants.OUTPUT_ASSIGNMENT_MAP, assignmentMap + ) } override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionExtensions.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionExtensions.kt index 53ce65d0b..0f04ea38e 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionExtensions.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionExtensions.kt @@ -40,6 +40,7 @@ suspend fun AbstractComponentFunction.storedContentFromResolvedArtifactNB( suspend fun AbstractComponentFunction.contentFromResolvedArtifactNB(artifactPrefix: String): String { return BluePrintDependencyService.resourceResolutionService() .resolveResources(bluePrintRuntimeService, nodeTemplateName, artifactPrefix, mapOf()) + .first } /** 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 a9bfbab32..f38bfad0d 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 @@ -21,7 +21,6 @@ import com.fasterxml.jackson.databind.JsonNode import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope -import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceResolutionConstants.OUTPUT_ASSIGNMENT_MAP import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.db.ResourceResolution import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.db.ResourceResolutionDBService import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.db.TemplateResolutionService @@ -30,6 +29,7 @@ import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.util import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.utils.ResourceDefinitionUtils.createResourceAssignments import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException +import org.onap.ccsdk.cds.controllerblueprints.core.asJsonNode import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType import org.onap.ccsdk.cds.controllerblueprints.core.checkNotEmpty @@ -46,6 +46,11 @@ import org.springframework.context.ApplicationContext import org.springframework.stereotype.Service import java.util.UUID +data class ResourceResolutionResult( + val templateMap: MutableMap<String, String>, + val assignmentMap: MutableMap<String, JsonNode> +) + interface ResourceResolutionService { fun registeredResourceSources(): List<String> @@ -61,14 +66,14 @@ interface ResourceResolutionService { nodeTemplateName: String, artifactNames: List<String>, properties: Map<String, Any> - ): MutableMap<String, String> + ): ResourceResolutionResult suspend fun resolveResources( bluePrintRuntimeService: BluePrintRuntimeService<*>, nodeTemplateName: String, artifactPrefix: String, properties: Map<String, Any> - ): String + ): Pair<String, JsonNode> /** Resolve resources for all the sources defined in a particular resource Definition[resolveDefinition] * with other [resourceDefinitions] dependencies for the sources [sources] @@ -79,7 +84,7 @@ interface ResourceResolutionService { resolveDefinition: String, sources: List<String> ): - MutableMap<String, JsonNode> + MutableMap<String, JsonNode> suspend fun resolveResourceAssignments( blueprintRuntimeService: BluePrintRuntimeService<*>, @@ -124,21 +129,22 @@ open class ResourceResolutionServiceImpl( nodeTemplateName: String, artifactNames: List<String>, properties: Map<String, Any> - ): MutableMap<String, String> { + ): ResourceResolutionResult { val resourceAssignmentRuntimeService = ResourceAssignmentUtils.transformToRARuntimeService(bluePrintRuntimeService, artifactNames.toString()) - val resolvedParams: MutableMap<String, String> = hashMapOf() + val templateMap: MutableMap<String, String> = hashMapOf() + val assignmentMap: MutableMap<String, JsonNode> = hashMapOf() artifactNames.forEach { artifactName -> - val resolvedContent = resolveResources( + val (resolvedStringContent, resolvedJsonContent) = resolveResources( resourceAssignmentRuntimeService, nodeTemplateName, artifactName, properties ) - - resolvedParams[artifactName] = resolvedContent + templateMap[artifactName] = resolvedStringContent + assignmentMap[artifactName] = resolvedJsonContent } - return resolvedParams + return ResourceResolutionResult(templateMap, assignmentMap) } override suspend fun resolveResources( @@ -146,7 +152,7 @@ open class ResourceResolutionServiceImpl( nodeTemplateName: String, artifactPrefix: String, properties: Map<String, Any> - ): String { + ): Pair<String, JsonNode> { // Template Artifact Definition Name val artifactTemplate = "$artifactPrefix-template" @@ -160,7 +166,7 @@ open class ResourceResolutionServiceImpl( val resourceAssignments: MutableList<ResourceAssignment> = JacksonUtils.getListFromJson(resourceAssignmentContent, ResourceAssignment::class.java) - as? MutableList<ResourceAssignment> + as? MutableList<ResourceAssignment> ?: throw BluePrintProcessorException("couldn't get Dictionary Definitions") if (isToStore(properties)) { @@ -186,13 +192,13 @@ open class ResourceResolutionServiceImpl( properties ) - bluePrintRuntimeService.setNodeTemplateAttributeValue( - nodeTemplateName, - OUTPUT_ASSIGNMENT_MAP, - ResourceAssignmentUtils.generateAssignmentMap(artifactPrefix, resourceAssignments) - ) - - val resolutionSummary = properties.getOrDefault(ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOLUTION_SUMMARY, false) as Boolean + val resolutionSummary = properties.getOrDefault( + 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) @@ -221,7 +227,7 @@ open class ResourceResolutionServiceImpl( log.info("Template resolution saved into database successfully : ($properties)") } - return resolvedContent + return Pair(resolvedContent, assignmentMap) } override suspend fun resolveResourceDefinition( 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 f97c669d6..1be9649b9 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 @@ -274,13 +274,6 @@ class ResourceAssignmentUtils { return JacksonUtils.getJson(data, includeNull = true) } - fun generateAssignmentMap( - artifactPrefix: String, - resourceAssignments: List<ResourceAssignment> - ): ObjectNode = resourceAssignments.associateBy({ it.name }, { it.property?.value }) - .let { mutableMapOf(artifactPrefix to it) } - .let { JacksonUtils.objectNodeFromObject(it) } - private fun useDefaultValueIfNull( resourceAssignment: ResourceAssignment, resourceAssignmentName: String diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt index 83dd0ce34..ab1efcdc8 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt @@ -147,7 +147,7 @@ class ResourceResolutionComponentTest { any<List<String>>(), any<MutableMap<String, Any>>() ) - } returns mutableMapOf() + } returns ResourceResolutionResult(mutableMapOf(), mutableMapOf()) runBlocking { resourceResolutionComponent.processNB(executionRequest) 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 d5c43184e..d6fc52230 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 @@ -33,6 +33,7 @@ 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 @@ -135,12 +136,22 @@ class ResourceResolutionServiceTest { "baseconfig", props ) + }.let { (templateMap, assignmentMap) -> + 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) } } @Test @Throws(Exception::class) fun testResolveResources() { + val artifactNames = listOf("baseconfig", "another") runBlocking { Assert.assertNotNull("failed to create ResourceResolutionService", resourceResolutionService) @@ -155,8 +166,6 @@ class ResourceResolutionServiceTest { ExecutionServiceInput::class.java )!! - val artefactNames = listOf("baseconfig", "another") - // Prepare Inputs PayloadUtils.prepareInputsFromWorkflowPayload( bluePrintRuntimeService, @@ -167,9 +176,15 @@ class ResourceResolutionServiceTest { resourceResolutionService.resolveResources( bluePrintRuntimeService, "resource-assignment", - artefactNames, + artifactNames, props ) + }.let { + assertEquals(artifactNames.toSet(), it.templateMap.keys) + assertEquals(artifactNames.toSet(), it.assignmentMap.keys) + + assertEquals("This is Sample Velocity Template", it.templateMap["another"]) + assertEquals("vnf_1234", it.assignmentMap["another"]!!["vnf-id"]!!.asText()) } } @@ -256,7 +271,7 @@ class ResourceResolutionServiceTest { props ) }.let { - val summaries = JacksonUtils.jsonNode(it)["resolution-summary"] + val summaries = JacksonUtils.jsonNode(it.first)["resolution-summary"] val list = JacksonUtils.getListFromJsonNode(summaries, ResolutionSummary::class.java) assertEquals(list.size, 3) } @@ -265,6 +280,7 @@ class ResourceResolutionServiceTest { @Test @Throws(Exception::class) fun testResolveResourcesWithoutTemplate() { + val artifactPrefix = "notemplate" runBlocking { Assert.assertNotNull("failed to create ResourceResolutionService", resourceResolutionService) @@ -285,8 +301,6 @@ class ResourceResolutionServiceTest { "testResolveResourcesWithMappingAndTemplate" ) - val artifactPrefix = "notemplate" - // Prepare Inputs PayloadUtils.prepareInputsFromWorkflowPayload( bluePrintRuntimeService, @@ -307,7 +321,8 @@ class ResourceResolutionServiceTest { "vnf-id" : "vnf_1234", "vnf_name" : "temp_vnf" } - """.trimIndent(), it) + """.trimIndent(), it.first) + assertEquals("siid_1234", it.second["service-instance-id"].asText()) } } 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 6734613fc..59be79568 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 @@ -22,7 +22,6 @@ package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.utils import com.fasterxml.jackson.databind.JsonNode -import com.fasterxml.jackson.databind.node.ObjectNode import com.fasterxml.jackson.databind.node.TextNode import io.mockk.every import io.mockk.spyk @@ -207,20 +206,6 @@ class ResourceAssignmentUtilsTest { """.replace("\n|\\s".toRegex(), ""), result) } - @Test - fun generateAssignmentMapTest() { - val artifactPrefix = "vdns" - val resourceAssignments = mutableListOf( - createResourceAssignmentForTest("abc-123", "vnf-id"), - createResourceAssignmentForTest(null, "vf-module-name") - ) - - val result: ObjectNode = ResourceAssignmentUtils.generateAssignmentMap(artifactPrefix, resourceAssignments) - - assertEquals("abc-123", result["vdns"]["vnf-id"].textValue()) - assertEquals(JacksonUtils.getJsonNode(null), result["vdns"]["vf-module-name"]) - } - private fun createResourceAssignmentForTest(resourceValue: String?, resourceName: String = "pnf-id"): ResourceAssignment { val valueForTest = if (resourceValue == null) null else TextNode(resourceValue) val resourceAssignmentForTest = ResourceAssignment().apply { diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionService.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionService.kt index 6a3c64650..b6c432b4d 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionService.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionService.kt @@ -130,7 +130,7 @@ object BluePrintExpressionService { val propertyPaths: List<String> = arrayNode.filterIndexed { index, _ -> index >= 3 }.map { it.textValue() } - subProperty = propertyPaths.joinToString("/") + subProperty = propertyPaths.joinToString(".") } } @@ -170,7 +170,7 @@ object BluePrintExpressionService { val propertyPaths: List<String> = arrayNode.filterIndexed { index, _ -> index >= 3 }.map { it.textValue() } - subAttributeName = propertyPaths.joinToString("/") + subAttributeName = propertyPaths.joinToString(".") } } return AttributeExpression( diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt index f8cad990d..4f645270d 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt @@ -60,7 +60,7 @@ class BluePrintExpressionServiceTest { assertEquals("SELF", expressionData1.propertyExpression?.modelableEntityName, " Failed to get expected modelableEntityName") assertEquals("property-name", expressionData1.propertyExpression?.propertyName, " Failed to get expected propertyName") assertEquals( - "resource/name", + "resource.name", expressionData1.propertyExpression?.subPropertyName, " Failed to populate nested subPropertyName expression data" ) @@ -84,7 +84,7 @@ class BluePrintExpressionServiceTest { assertEquals("SELF", expressionData1.attributeExpression?.modelableEntityName, " Failed to get expected modelableEntityName") assertEquals("attribute-name", expressionData1.attributeExpression?.attributeName, " Failed to get expected attributeName") assertEquals( - "resource/name", + "resource.name", expressionData1.attributeExpression?.subAttributeName, " Failed to populate nested subAttributeName expression data" ) diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt index 871f8af08..79979b949 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt @@ -23,6 +23,7 @@ import org.junit.Test import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants import org.onap.ccsdk.cds.controllerblueprints.core.TestConstants import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive +import org.onap.ccsdk.cds.controllerblueprints.core.data.PropertyDefinition import org.onap.ccsdk.cds.controllerblueprints.core.normalizedPathName import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintMetadataUtils import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintRuntimeUtils @@ -234,6 +235,46 @@ class BluePrintRuntimeServiceTest { assertNotNull(resolvedJsonNode, "Failed to populate workflow output property values") } + @Test + fun `test resolvePropertyDefinitions using sub attributes`() { + val bluePrintRuntimeService = getBluePrintRuntimeService() + + bluePrintRuntimeService.setNodeTemplateAttributeValue( + "resource-assignment", "assignment-map", + JacksonUtils.jsonNode(""" + { + "a-prefix":{ + "an-object":{ + "a-key":123 + } + } + } + """.trimIndent()) + ) + + val propertyDefinitions = mutableMapOf<String, PropertyDefinition>( + "resolution" to PropertyDefinition().apply { + this.type = "json" + this.value = JacksonUtils.jsonNode(""" + { + "get_attribute":[ + "resource-assignment", + "", + "assignment-map", + "a-prefix", + "an-object", + "a-key" + ] + } + """.trimIndent()) + } + ) + + val result = bluePrintRuntimeService.resolvePropertyDefinitions("workflow", "WORKFLOW", propertyDefinitions) + + assertEquals("123", result["resolution"]!!.asText()) + } + private fun getBluePrintRuntimeService(): BluePrintRuntimeService<MutableMap<String, JsonNode>> { val blueprintBasePath = normalizedPathName(TestConstants.PATH_TEST_BLUEPRINTS_BASECONFIG) val blueprintRuntime = BluePrintMetadataUtils.bluePrintRuntime("1234", blueprintBasePath) diff --git a/ms/py-executor/certs/py-executor/py-executor-chain.pem b/ms/py-executor/certs/py-executor/py-executor-chain.pem index d81ef6acc..7d626d392 100644 --- a/ms/py-executor/certs/py-executor/py-executor-chain.pem +++ b/ms/py-executor/certs/py-executor/py-executor-chain.pem @@ -1,37 +1,38 @@ -----BEGIN CERTIFICATE----- -MIIGbjCCBFagAwIBAgIUKMfxNPHDvw7rVeY9PeFQHKKgMdswDQYJKoZIhvcNAQEL +MIIGmjCCBIKgAwIBAgIUKY54WlWSTO1gukYe2chbzm9mVIowDQYJKoZIhvcNAQEL BQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCk5ldyBKZXJzZXkxEzARBgNVBAcM Ck1pZGRsZXRvd24xFzAVBgNVBAoMDk9OQVAgQ29tbXVuaXR5MQ4wDAYDVQQDDAVD -Q1NESzEdMBsGCSqGSIb3DQEJARYOYnMyNzk2QGF0dC5jb20wHhcNMjAwNTI4MTM1 -NzEyWhcNMzAwNTI2MTM1NzEyWjB/MQswCQYDVQQGEwJVUzETMBEGA1UECAwKTmV3 +Q1NESzEdMBsGCSqGSIb3DQEJARYOYnMyNzk2QGF0dC5jb20wHhcNMjAwNjA1MDgx +NjAwWhcNMzAwNjAzMDgxNjAwWjB/MQswCQYDVQQGEwJVUzETMBEGA1UECAwKTmV3 IEplcnNleTETMBEGA1UEBwwKTWlkZGxldG93bjEXMBUGA1UECgwOT05BUCBDb21t dW5pdHkxDjAMBgNVBAMMBUNDU0RLMR0wGwYJKoZIhvcNAQkBFg5iczI3OTZAYXR0 -LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALThw26eB1Z11R2A -1gcjXESRjnItFrIc1xpigokDp8m+yfk8KgsyYJMDBdqYRjo+3USHzv1UbOEYge3R -YVF3MJkbpcxgpfqQS6ilKKgrjxDSwSiSPQWUm3YAdFCaIKpZQ4xJ7uuNqDpsucGS -vB7NWJtHcT3TUWQSiku89dUeeTwNvtrhwg8Vn3zT8kbu8okriyc+jYcJnPb7Qo6g -1+pM+PSJahldtNa0dDjYAgX0C5nsISWSN/VpHNVNcl8bLz3ieI+GpT/7Q0puhQ0K -dMJB+A8DF3E1KDZW39KhSihj++VdU+Xd2n33OoRHk3EJS9eb+Qej81G+Mzmhkylv -j4brluXI7lYD7JZPCtznrRaSakbC3gAqVDJ74FLGfA5jkGoxo0BTLMpF3pmjAUEI -3YiMf0jEd53xwDEnot7ZK9k4ySUTuL9BZrtH6KKihKom5YIyysk1ZMEfg/0Zw3hj -cv+krVla44fIfxvgZfVREG5C5vcFyu3GCjIuhtJ0+IP+u566y8h//3GyygXcn6JG -1IgoTzvj6zuLmupPvf6oYi6ibjEKYOFTKVLuFPQak7oKrBiGdtLLE8S7LrH74a+V -Ka1V3io7SAmccdglJrwlVebbD7VQCBpjdxfBbXb2WjXQnXH1Xu+bb35zDnZlbkQE -Ra0gGAGiR5cQJqrm1+0TXTR/R0U3AgMBAAGjgeEwgd4wHQYDVR0OBBYEFCThQjjN -anO/1ZmtV4INXKnIpZtcMB8GA1UdIwQYMBaAFCThQjjNanO/1ZmtV4INXKnIpZtc -MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMEEG -A1UdEQQ6MDiCESpjZHMtY29udHJvbGxlci0qghIqY2RzLXB5LWV4ZWN1dG9yLSqC -CWxvY2FsaG9zdIcEfwAAATAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0 -ZWQgQ2VydGlmaWNhdGUwDQYJKoZIhvcNAQELBQADggIBABMo7Ohc3jcFWAq9QOPh -Q8xrAk9tC8snb9yzCZTtW7rHhPxvsUtLJhIIbP/irffcHnunowivixMUSeowoHGk -vgyWSLnuRJ02zSheeaAuJ0WVG7iofMPLq6/FMeGq5efjD4JXVkfykAEu0yFVLwUN -06Nx+qTcMfyFmMkUe4a3AHouDT1LtitDxwBcYBQQTINLDJccncStHmBG8gNALSMG -jVXzW9MH7SNkR0GYIJMbsLgAdNn8XpoqFooTOLLNMGKQfgIgJ9PSIk7yMKxBRZvJ -+VXqCrn0Tn8+HYlwOPpc6ZYLDkaYGL0uYRinA5RFhbvOxbq7/ZnmBYw90vDdCOH2 -Snx1QW4I/qwuEbKxcPEM+JtilprKrF7gAUfRxo9/exJc8GRNHr03XqbgdfjItbsE -3uYUKn04I6DTQkaebLzVHtbYh+yt9Wd49E92UCpO+leGOteKGpIH4BEYTXscYYb5 -tuemF+wb2+JaqCKyXpqRuG8yh4+Lp1NCA6t2DjC230tBzVqrj3f5ouwjGq4LCOHm -ydSrqpM6RUw2DF8CDtCMFTbxDtAn7h+3Xn7hz5iRRdejWcJ4sqNvqJnqrXurgy4M -t9q/Yb/z1yis2Q6IlgfOJd1oo6VF4ARmUngoeFF8DM1Dg4LJB+LQT1q62r5CsULC -1mKz2BJEmP/+wyeXGjPEhD0/ +LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMNqVzDC+BpV9iV1 +2sB3ya9Bwx2qTqmygV/ZM/2/Bd6z4duUHd5dK3ZeRablfB2HmaFsjXTTvf+/nVC8 +Q0e4yrOBXRY6qGD27YEkwTebP1Mjvj5uOuamGr6bsZOuJr8HooIA5L25D5GZ37bV +H4Wq1xz1PG+PgldUf/YXOcwuzO2Nq3FS3I0xKeaNI5YmmlW8gFeGKtPR8vRwpg45 +I+orp2NnO7tFqjwxO3Ka7se9s9fy3GUg0Yn4N1So36r3G2NNbueN34I/d8IazT3Z +dnWT4amnMXy455ijr1yucaGwKkc7nQDn2cNGlQOIlpzEU90w/V8ne73hAfWKZ+7p +o3BFOE1X0PV1fFZ4d9rf7slUCWYiUcaKRBbCf+Tu3EBonpJJBQBJTb78pln/5x5r +d9av0eruCm0K8MZVgHPNRnZVeggi34YFGo1MmDMZDPAYSxBX7z106QmHJiuFvzdc +u2AIht5jMnXERGO1mzLtjUjWgdjN2zxpARiCPoR59jBuX/DO+vBeSJZ3dFjWFHrM +2bDg8328ZU6/cVoU30vKR9J+CrBv+V5mvpqRVx/atHIuJ6aQne1FW+qYE/aWw6CH +IrJbHXLYb1T6nMhzu7rX5YVXSDGu5wLTjnBZlh8XVjn3UBgopS4EnceJRW9Jn01L +sGlNoEamKVVZ8jS4dif+8zgLsznzAgMBAAGjggEMMIIBCDAdBgNVHQ4EFgQUaigR +IIb+2J4zJ4bi2IIxICIOSyMwHwYDVR0jBBgwFoAUaigRIIb+2J4zJ4bi2IIxICIO +SyMwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwEwYDVR0lBAwwCgYIKwYBBQUHAwEw +awYDVR0RBGQwYoIRKmNkcy1jb250cm9sbGVyLSqCEipjZHMtcHktZXhlY3V0b3It +KoIMKnB5LWV4ZWN1dG9ygg4qcHktZXhlY3V0b3ItKoIKKi1weWV4ZWMtKoIJbG9j +YWxob3N0hwR/AAABMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD +ZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQsFAAOCAgEAMooc0ZyZVzLePmm0q2iU6jls +ORmfpNXe/MqCRfEPr7sZAy3jGtJK9+ShoVVbvQbXaQ2wDe9XxwnrblWB+SaAwZiL +A8gF7ozgwavatwZ70683fnCsPC061WDlC965UWCbPL5opxW4ulL3meSYEdzvS3hm +oxeMhaLJSZpkk4D9tyVHwPtLJBpWD5a3rp9y6e2Q87XhrQKB+y2/QHeaDs3l+tKa +o6GW/PqKKM3ktboXBlGDT7bLhCpg179dOzXgdtHNtqv7zmXLDbGKV0mbQpjBVu72 +tWKf6KoVFhvXQP2he6vgvcMeycOS9ff3RLePwt61WiDXnQ97kD2UubTrdsQ0QieZ +r5NHeDQEEnEMW9kHQrYDEGk5s881QTg8EmrKKdcUH9+65ka/0HnKF9cQ+MklRMtG +8QDiwTd8AIyeOLg/9l9VP09IglksrmkfxqWD7zFyFKlyZZbiBH5XrYGlnGgezIUx +T41ulfQyQ6Ef1z97EUzYTOmxWRWReoFbLsqFOg1KLD2Y0wZkT22IdBreEO9W/W+X +OQuLLA3qwOZMF/mKwzp6SSLbelVIOhhx4k1sQy95dqMMQQMuLK/uPNETlenE36fT +yhiCa7B6VyPKVsYDcte2Cs8wo2uhMb7i5VaFIZD8Cjswkx1GbcQs9X0Fm1W9g5J0 +j/cJjXSeCIp84F+fxZo= -----END CERTIFICATE----- diff --git a/ms/py-executor/certs/py-executor/py-executor-key.pem b/ms/py-executor/certs/py-executor/py-executor-key.pem index 6530428e7..c6ef00564 100644 --- a/ms/py-executor/certs/py-executor/py-executor-key.pem +++ b/ms/py-executor/certs/py-executor/py-executor-key.pem @@ -1,52 +1,52 @@ -----BEGIN PRIVATE KEY----- -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 -1LBaUfGNzPhtYriDYv5R+ahemGdY +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 +m3FiOonz1SF53erfm5chlHxpQbUIhA== -----END PRIVATE KEY----- diff --git a/ms/py-executor/certs/py-executor/py-executor.conf b/ms/py-executor/certs/py-executor/py-executor.conf index 336a52a65..547810b08 100644 --- a/ms/py-executor/certs/py-executor/py-executor.conf +++ b/ms/py-executor/certs/py-executor/py-executor.conf @@ -39,5 +39,8 @@ nsComment = "OpenSSL Generated Certificate" [alt_names] DNS.1 = *cds-controller-* DNS.2 = *cds-py-executor-* -DNS.3 = localhost +DNS.3 = *py-executor +DNS.4 = *py-executor-* +DNS.5 = *-pyexec-* +DNS.6 = localhost IP.1 = 127.0.0.1 |