// component level timeout should be => env_prep_timeout + execution_timeout
val timeout = implementation.timeout
- // NOTE: this was reverted back to absolute path for SR7 compatibility.
- // CMD-EXEC SR10 onwards will look for absence of blueprint UUID in the absolute path.
- // If such request is found, UUID will be appended.
var scriptCommand = command.replace(pythonScript.name, pythonScript.absolutePath)
if (args != null && args.isNotEmpty()) {
scriptCommand = scriptCommand.plus(" ").plus(args)
package org.onap.ccsdk.cds.blueprintsprocessor.configs.api
+import io.micrometer.core.instrument.MeterRegistry
import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.junit.runner.RunWith
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest
+import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.context.annotation.ComponentScan
import org.springframework.http.MediaType
import org.springframework.test.context.ContextConfiguration
@Autowired
lateinit var webTestClient: WebTestClient
+ @MockBean
+ lateinit var meterRegistry: MeterRegistry
+
val resourceId = "fcaa6ac3ff08"
val resourceType = "PNF"
val snapshotData = "PAYLOAD DATA"
package org.onap.ccsdk.cds.blueprintsprocessor.resource.api
+import io.micrometer.core.instrument.MeterRegistry
import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.junit.runner.RunWith
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest
+import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.context.annotation.ComponentScan
import org.springframework.http.MediaType
import org.springframework.test.context.ContextConfiguration
@Autowired
lateinit var webTestClient: WebTestClient
+ @MockBean
+ lateinit var meterRegistry: MeterRegistry
+
var resolutionKey = "7cafa9f3-bbc8-49ec-8f25-fcaa6ac3ff08"
val blueprintName = "baseconfiguration"
val blueprintVersion = "1.0.0"
package org.onap.ccsdk.cds.blueprintsprocessor.services.workflow
import com.fasterxml.jackson.databind.JsonNode
+import io.micrometer.core.instrument.MeterRegistry
import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceOutput
import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.StepData
import org.springframework.stereotype.Service
@Service
-open class NodeTemplateExecutionService(private val bluePrintClusterService: BluePrintClusterService) {
+open class NodeTemplateExecutionService(private val bluePrintClusterService: BluePrintClusterService, private val meterRegistry: MeterRegistry) {
private val log = LoggerFactory.getLogger(NodeTemplateExecutionService::class.java)!!
plugin.bluePrintClusterService = bluePrintClusterService
plugin.stepName = stepName
plugin.nodeTemplateName = nodeTemplateName
+ plugin.meterRegistry = meterRegistry
// Parent request shouldn't tamper, so need to clone the request and send to the actual component.
val clonedExecutionServiceInput = ExecutionServiceInput().apply {
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.node.ObjectNode
+import io.micrometer.core.instrument.MeterRegistry
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkObject
@MockBean
lateinit var bluePrintClusterService: BluePrintClusterService
+ @MockBean
+ lateinit var meterRegistry: MeterRegistry
+
@Before
fun init() {
mockkObject(BluePrintDependencyService)
package org.onap.ccsdk.cds.blueprintsprocessor.services.workflow
+import io.micrometer.core.instrument.MeterRegistry
import kotlinx.coroutines.runBlocking
import org.junit.Before
import org.junit.Test
@MockBean
lateinit var bluePrintClusterService: BluePrintClusterService
+ @MockBean
+ lateinit var meterRegistry: MeterRegistry
+
@Before
fun init() {
BluePrintDependencyService.inject(applicationContext)
package org.onap.ccsdk.cds.blueprintsprocessor.services.workflow
+import io.micrometer.core.instrument.MeterRegistry
import kotlinx.coroutines.runBlocking
import org.junit.Before
import org.junit.Test
@MockBean
lateinit var bluePrintClusterService: BluePrintClusterService
+ @MockBean
+ lateinit var meterRegistry: MeterRegistry
+
@Before
fun init() {
BluePrintDependencyService.inject(applicationContext)
ExecutionServiceInput::class.java
)!!
- val imperativeWorkflowExecutionService = ImperativeWorkflowExecutionService(NodeTemplateExecutionService(mockk()))
+ val imperativeWorkflowExecutionService = ImperativeWorkflowExecutionService(NodeTemplateExecutionService(mockk(), mockk()))
val output = imperativeWorkflowExecutionService
.executeBluePrintWorkflow(bluePrintRuntimeService, executionServiceInput, hashMapOf())
assertNotNull(output, "failed to get imperative workflow output")
*/
package org.onap.ccsdk.cds.blueprintsprocessor.services.workflow
+import io.micrometer.core.instrument.MeterRegistry
import io.mockk.every
+import io.mockk.mockk
import io.mockk.mockkObject
import io.mockk.unmockkAll
import kotlinx.coroutines.runBlocking
@MockBean
lateinit var bluePrintClusterService: BluePrintClusterService
+ @MockBean
+ lateinit var meterRegistry: MeterRegistry
+
@Before
fun init() {
mockkObject(BluePrintDependencyService)
val stepName = bluePrintRuntimeService.bluePrintContext()
.workflowSteps("resource-assignment").keys.first()
val nodeTemplate = "resource-assignment"
- val nodeTemplateExecutionService = NodeTemplateExecutionService(bluePrintClusterService)
+ val nodeTemplateExecutionService = NodeTemplateExecutionService(bluePrintClusterService, mockk())
val executionServiceOutput = nodeTemplateExecutionService
.executeNodeTemplate(bluePrintRuntimeService, stepName, nodeTemplate, executionServiceInput)
self.uuid = utils.get_blueprint_uuid(request)
self.request_id = utils.get_blueprint_requestid(request)
self.sub_request_id = utils.get_blueprint_subRequestId(request)
+ self.blueprint_name_version = utils.blueprint_name_version(request) # for legacy support
self.blueprint_name_version_uuid = utils.blueprint_name_version_uuid(request)
self.execution_timeout = utils.get_blueprint_timeout(request)
# onap/blueprints/deploy will be ephemeral now
+ # if the command matches “/opt/app/onap/blueprints/deploy/$cba_name/$cba_version/stuff_that_is_not_cba_uuid/”
+ # then prepend the $cba_uuid before “stuff_that_is_not_cba_uuid”
self.blueprint_dir = self.BLUEPRINTS_DEPLOY_DIR + self.blueprint_name_version_uuid
self.blueprint_tosca_meta_file = self.blueprint_dir + '/' + self.TOSCA_META_FILE
self.extra = utils.getExtraLogData(request)
if request.properties is not None and len(request.properties) > 0:
properties = " " + re.escape(MessageToJson(request.properties))
+ # compatibility hack
+ # check if the path for the request.command does not contain UUID, then add it after cba_name/cba_version path.
+ updated_request_command = request.command
+ if self.blueprint_name_version in updated_request_command and self.blueprint_name_version_uuid not in updated_request_command:
+ updated_request_command = updated_request_command.replace(self.blueprint_name_version, self.blueprint_name_version_uuid)
+
### TODO: replace with os.environ['VIRTUAL_ENV']?
- if "ansible-playbook" in request.command:
- cmd = cmd + "; " + request.command + " -e 'ansible_python_interpreter=" + self.blueprint_dir + "/bin/python'"
+ if "ansible-playbook" in updated_request_command:
+ cmd = cmd + "; " + updated_request_command + " -e 'ansible_python_interpreter=" + self.blueprint_dir + "/bin/python'"
else:
- cmd = cmd + "; " + request.command + properties
+ cmd = cmd + "; " + updated_request_command + properties
### extract the original header request into sys-env variables
### OriginatorID
REUPLOAD_CBA_KEY = "reupload_cba"
RESPONSE_MAX_SIZE = 4 * 1024 * 1024 # 4Mb
-
+# part of cba_name/version/uuid path
def blueprint_name_version_uuid(request):
- blueprint_name = request.identifiers.blueprintName
- blueprint_version = request.identifiers.blueprintVersion
- blueprint_uuid = request.identifiers.blueprintUUID
- return blueprint_name + '/' + blueprint_version + '/' + blueprint_uuid
+ return get_blueprint_name(request) + '/' + get_blueprint_version(request) + '/' + get_blueprint_uuid(request)
+
+# return blueprint_name and version part of the path (needed for legacy cmd-exec support
+def blueprint_name_version(request):
+ return get_blueprint_name(request) + '/' + get_blueprint_version(request)
def get_blueprint_name(request):
return request.identifiers.blueprintName