summaryrefslogtreecommitdiffstats
path: root/ms
diff options
context:
space:
mode:
Diffstat (limited to 'ms')
-rwxr-xr-xms/blueprintsprocessor/application/src/main/docker/distribution.xml1
-rw-r--r--ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/NetconfComponentFunction.kt2
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponent.kt20
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionExtensions.kt1
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt46
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtils.kt7
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt2
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt29
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtilsTest.kt15
-rw-r--r--ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionService.kt4
-rw-r--r--ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt4
-rw-r--r--ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt41
-rw-r--r--ms/py-executor/certs/py-executor/py-executor-chain.pem63
-rw-r--r--ms/py-executor/certs/py-executor/py-executor-key.pem100
-rw-r--r--ms/py-executor/certs/py-executor/py-executor.conf5
15 files changed, 199 insertions, 141 deletions
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
+MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDDalcwwvgaVfYl
+ddrAd8mvQcMdqk6psoFf2TP9vwXes+HblB3eXSt2XkWm5Xwdh5mhbI10073/v51Q
+vENHuMqzgV0WOqhg9u2BJME3mz9TI74+bjrmphq+m7GTria/B6KCAOS9uQ+Rmd+2
+1R+Fqtcc9Txvj4JXVH/2FznMLsztjatxUtyNMSnmjSOWJppVvIBXhirT0fL0cKYO
+OSPqK6djZzu7Rao8MTtymu7HvbPX8txlINGJ+DdUqN+q9xtjTW7njd+CP3fCGs09
+2XZ1k+GppzF8uOeYo69crnGhsCpHO50A59nDRpUDiJacxFPdMP1fJ3u94QH1imfu
+6aNwRThNV9D1dXxWeHfa3+7JVAlmIlHGikQWwn/k7txAaJ6SSQUASU2+/KZZ/+ce
+a3fWr9Hq7gptCvDGVYBzzUZ2VXoIIt+GBRqNTJgzGQzwGEsQV+89dOkJhyYrhb83
+XLtgCIbeYzJ1xERjtZsy7Y1I1oHYzds8aQEYgj6EefYwbl/wzvrwXkiWd3RY1hR6
+zNmw4PN9vGVOv3FaFN9LykfSfgqwb/leZr6akVcf2rRyLiemkJ3tRVvqmBP2lsOg
+hyKyWx1y2G9U+pzIc7u61+WFV0gxrucC045wWZYfF1Y591AYKKUuBJ3HiUVvSZ9N
+S7BpTaBGpilVWfI0uHYn/vM4C7M58wIDAQABAoICAGFZMGZSOlakTCMNOxR2mDp+
+gDzfAqD3FAwzn/rgloQDCJjiiJ6lu2kUPY6O8+2iB56q/S0d7qDhS/VUVA/+trwF
+zeGtBwSG/no/XSHebQV14Ogo8Z7FUL1zwlrXfuXbX9FzsH/zGRZnmVLziOiF2vPK
+F3lb/IqUxcpKd7iH9/6/fJDPvp93xm/cD8ZVJL1hUm5HoD41cNrk41RiksmtRY33
+d4IrikrCG+NT23AVyOnjSnf2iWw6AxZhqkr5HuOxR3aC7r1r8LT5tRUCqEiaiuiB
+Kd4AHx+jK1D4dhMeN3GU+PnihlEJcGJ6QM2H4F9ocFBe0v4cgWVYtb4HFixvz0OY
+E+4vsrMObxVBkJtEvEntdQqBEKxdHUotTzJvF3NocncM65VzKViyCBiFXyijQ2Aw
+zFtyBNSzMLMBfkfJNXKhlDz4sOeDFjVaDTl6Rn3tnIHpjgbbbm5CXqNi0JRNi36C
+/ANTAoxrol/FSkPxdsCdhYaU6CxZpelu2FbwjyV189dEyCROOTelqAC0k0YsmcOJ
+FsQEkr8baWTIjgKta+kxo8SllPWntDeXfiM6iI4NeAwneIIJwqQb5WQiJWtnv0QX
+eH/cbnXHJgxTw4Hb0LzDBYG3nY5LHW//eaXTt1vSwJh7AbPo0hl7JBe6JNUMT9ih
++LUE1zzOj3dJbnFh+QLBAoIBAQD601wIBHeGnm4TwnjpEWExb2VlC0uMYhik1uql
+1zCsn7vgCFspq2tJugfALG4QEoti51AHkOybHX43jD6wvtPFT1HNL7yP63Zm27GP
+3bkCsZLVWnIEtPCR266ENSdGr3cnoO91Pf4efINKlZPIo4jLwfYgJhcVbhHb57uw
+j/VKhit9Cm+OnPD7PpKiGi4vUQPnbeIZsUTf5v4lYLR5r9uW91q07mS+jsoKcPyy
+dHZBM1nz7vMQitTYAhL17x6rINtTl7ulBHfLxHpPZxvVN5z+pJpKhYJP2pIWwKZY
+EBBMefiJhx6pR/T4YlFMdx0AmvVbeYZraIhh2vyNH5IeygNXAoIBAQDHclpbFNyd
+ZfkufMIq7N0oGDOuYwfzfAYK93lHgAm6NXibbyY7v49WAViOILSSGo4edCB53mLq
+9bLCsc0x9SL/OgZTCHwlY3cgc3WNAbICCsvinZS87XwPU3ZEMzy5T9AA1WlV0QSv
+6FXffF71skKM7yaWRhNJ6zWLSVBZ5iRAcmg5IboWFseGx845RSp/M1FZTuRvX5Ne
+7qQyJfJ0pu72Y6KkICpOqLmWYbxs3bcBpXdIGueUC4A6QlY+QrbGjGapkNhWzM1x
+vMK+8cpuSNhIHDtEWf43jw0Oz59vmPws/iTENtk4RDgIncD7bJ4HWjb+ZZtjHnSG
+r7L/HKS69ZjFAoIBAQDbpCwKBUdZhfCksv5IMeTnckHa+socU2Z7Kovtz4ObFoFh
+jE+wLKDVvea9nOqAfoy6fg4xofHfXzNAlznqciBlvrDGOhAoAyv6pFVXwvQY7MDE
+vd/sSToEr9ehhB4xosN321D1XOTjc2tQ66yu3K2Up/PMcS5zoKBY7hMIaPeGW/lH
+FNVdkAbiLAghlUVuP8ZoaWu9zeKfItrYhldj2+Ax0ccHe16TE9zOyeQurRdEvx/9
+IPiOOtRpl19dJxi3CB2nlM5HkaMJt7LXR1YzHvEGd8N4kHLtVFvrOqYvpVlwbrp6
+S+1IlW9p9kZ07DVka02B3egctDwBXM8dEVFWTtYfAoIBAFOhB3IZlUgKcimj9ma5
+WyJsw37j13mpD3+ZtSjd7zY9JY1HVejHsfqGJfOykwSQTfdHCjcPoLqUu5gXpcrE
+1x/d3LkEXcnvowvgXfH6PAHPNR6YpL1zdwmWHYkLUvMBHF69HaX2NtjrutYy+D5d
+uLoPrUZlq8Da92CoJSEM9zZuwnTyR2zrsE47iaVJ8z/S7NFd2zs4ADtWJVNBxiBT
+vu9hZ9kaA6Nn7Cm6YZ/kd9Ag6Zs6bNAO4n2LQ05n+uvWA1YmfhAnYB3I4H/gMtl7
+gfT6oX9PnOD/AqKrPFc29saG6jO8K+kD8drrCvhh2wGKOnUBdd5h7spq8cs233vl
+b2ECggEAKL5rjbcUhRtJjobcIqnk1FeN43cXmFnlIICsY3ouskzGgDx5z4f8e9Oo
+1fzoV4PVBf7uVPjgyiQy4Zio3qOcodvUi1xdv0mQEJzwyKpd12842pqVh3IvcVwf
+V64Yr5m5CylDAfIsabT4uP9Cmh7TC87YD3Fiu2OPUTTIWfLY16iJfV8lvLyBxFNE
+8VAqgnf3EH9VBNFWVUSaPcLO2BoduC1v74utK+T9+bqdLujBP5ZfQ1anfvYMlQVE
+1e5twdnYJTHHWhlT6EtnaHmLJ0SuTFJfZNxxdAeRWyyqnS0vZvWvIonafnVi6g5X
+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