From e094a16a873d9bba6f4b50998a0fbdcee5cda8a5 Mon Sep 17 00:00:00 2001 From: Brinda Santh Date: Wed, 10 Jul 2019 10:40:30 -0400 Subject: Refractor duplicate cli script function Change-Id: Ida75e839668eeeabd4577629f2bc6ec3240d7734 Issue-ID: CCSDK-1428 Signed-off-by: Brinda Santh --- .../Definitions/activation-blueprint.json | 11 ++- .../baseconfiguration/Definitions/node_types.json | 12 +--- .../Definitions/capability-cli-blueprint.json | 9 ++- .../Scripts/kotlin/CapabilityCli.cba.kts | 34 --------- .../capability_cli/Scripts/kotlin/CapabilityCli.kt | 34 +++++++++ .../node_type/component-cli-executor.json | 65 ----------------- .../node_type/component-script-executor.json | 57 +++++++++++++++ .../kotlin/internal/scripts/InternalSimpleCli.kt | 82 ++++++++++++++++++++++ .../functions/cli/executor/ComponentCliExecutor.kt | 28 -------- .../main/kotlin/scripts/InternalSimpleCli.cba.kts | 80 --------------------- .../cli/executor/ComponentCliExecutorTest.kt | 12 ++-- .../src/test/resources/logback-test.xml | 1 + 12 files changed, 191 insertions(+), 234 deletions(-) delete mode 100644 components/model-catalog/blueprint-model/test-blueprint/capability_cli/Scripts/kotlin/CapabilityCli.cba.kts create mode 100644 components/model-catalog/blueprint-model/test-blueprint/capability_cli/Scripts/kotlin/CapabilityCli.kt delete mode 100644 components/model-catalog/definition-type/starter-type/node_type/component-cli-executor.json create mode 100644 components/model-catalog/definition-type/starter-type/node_type/component-script-executor.json create mode 100644 ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/internal/scripts/InternalSimpleCli.kt delete mode 100644 ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/cli/executor/ComponentCliExecutor.kt delete mode 100644 ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/scripts/InternalSimpleCli.cba.kts diff --git a/components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/activation-blueprint.json b/components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/activation-blueprint.json index 5530b7c71..135016a11 100644 --- a/components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/activation-blueprint.json +++ b/components/model-catalog/blueprint-model/test-blueprint/baseconfiguration/Definitions/activation-blueprint.json @@ -310,18 +310,17 @@ } }, "activate-cli": { - "type": "component-cli-executor", + "type": "component-script-executor", "interfaces": { - "ComponentCliExecutor": { + "ComponentScriptExecutor": { "operations": { "process": { "implementation": { "primary": "component-script" }, "inputs": { - "script-type": "kotlin", - "script-class-reference": "InternalSimpleCli_cba$TestCliScriptFunction", - "instance-dependencies": [] + "script-type": "internal", + "script-class-reference": "internal.scripts.TestCliScriptFunction" }, "outputs": { "response-data": "", @@ -440,7 +439,7 @@ "target": "activate-cli", "activities": [ { - "call_operation": "ComponentCliExecutor.process" + "call_operation": "ComponentScriptExecutor.process" } ] } 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 0af2cd913..6de1fe320 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 @@ -1,6 +1,6 @@ { "node_types": { - "component-cli-executor": { + "component-script-executor": { "description": "This is CLI Transaction Configuration Component API", "version": "1.0.0", "capabilities": { @@ -9,7 +9,7 @@ } }, "interfaces": { - "ComponentCliExecutor": { + "ComponentScriptExecutor": { "operations": { "process": { "inputs": { @@ -33,14 +33,6 @@ "required": true, "type": "string" }, - "instance-dependencies": { - "description": "Instance names to inject to Jython or Kotlin Script.", - "required": true, - "type": "list", - "entry_schema": { - "type": "string" - } - }, "dynamic-properties": { "description": "Dynamic Json Content or DSL Json reference.", "required": false, diff --git a/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Definitions/capability-cli-blueprint.json b/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Definitions/capability-cli-blueprint.json index c66bb6ef2..f09110045 100644 --- a/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Definitions/capability-cli-blueprint.json +++ b/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Definitions/capability-cli-blueprint.json @@ -41,7 +41,7 @@ "target": "check", "activities": [ { - "call_operation": "ComponentCliExecutor.process" + "call_operation": "ComponentScriptExecutor.process" } ] } @@ -50,9 +50,9 @@ }, "node_templates": { "check": { - "type": "component-cli-executor", + "type": "component-script-executor", "interfaces": { - "ComponentCliExecutor": { + "ComponentScriptExecutor": { "operations": { "process": { "implementation": { @@ -60,8 +60,7 @@ }, "inputs": { "script-type": "kotlin", - "script-class-reference": "InternalSimpleCli_cba$TestCliScriptFunction", - "instance-dependencies": [] + "script-class-reference": "cba.scripts.capability.cli.Check" }, "outputs": { "response-data": "", diff --git a/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Scripts/kotlin/CapabilityCli.cba.kts b/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Scripts/kotlin/CapabilityCli.cba.kts deleted file mode 100644 index e22fd7ef0..000000000 --- a/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Scripts/kotlin/CapabilityCli.cba.kts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright © 2019 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - -open class Check : CliComponentFunction() { - - private val log = LoggerFactory.getLogger(CliComponentFunction::class.java)!! - - override fun getName(): String { - return "SimpleCliConfigure" - } - - override suspend fun processNB(executionRequest: ExecutionServiceInput) { - log.info("Executing process") - } - - override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { - log.info("Executing Recovery") - } -} \ No newline at end of file diff --git a/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Scripts/kotlin/CapabilityCli.kt b/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Scripts/kotlin/CapabilityCli.kt new file mode 100644 index 000000000..270184d34 --- /dev/null +++ b/components/model-catalog/blueprint-model/test-blueprint/capability_cli/Scripts/kotlin/CapabilityCli.kt @@ -0,0 +1,34 @@ +/* + * Copyright © 2019 IBM. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cba.scripts.capability.cli + +open class Check : CliComponentFunction() { + + private val log = LoggerFactory.getLogger(CliComponentFunction::class.java)!! + + override fun getName(): String { + return "SimpleCliConfigure" + } + + override suspend fun processNB(executionRequest: ExecutionServiceInput) { + log.info("Executing process") + } + + override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { + log.info("Executing Recovery") + } +} \ No newline at end of file diff --git a/components/model-catalog/definition-type/starter-type/node_type/component-cli-executor.json b/components/model-catalog/definition-type/starter-type/node_type/component-cli-executor.json deleted file mode 100644 index 4860dd499..000000000 --- a/components/model-catalog/definition-type/starter-type/node_type/component-cli-executor.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "description": "This is CLI Transaction Configuration Component API", - "version": "1.0.0", - "capabilities": { - "component-node": { - "type": "tosca.capabilities.Node" - } - }, - "interfaces": { - "ComponentCliExecutor": { - "operations": { - "process": { - "inputs": { - "script-type": { - "description": "Script type, kotlin type is supported", - "required": true, - "type": "string", - "default": "internal", - "constraints": [ - { - "valid_values": [ - "kotlin", - "jython", - "internal" - ] - } - ] - }, - "script-class-reference": { - "description": "Kotlin Script class name or jython script name.", - "required": true, - "type": "string" - }, - "instance-dependencies": { - "required": true, - "description": "Instance names to inject to Jython or Kotlin Script.", - "type": "list", - "entry_schema": { - "type": "string" - } - }, - "dynamic-properties": { - "description": "Dynamic Json Content or DSL Json reference.", - "required": false, - "type": "json" - } - }, - "outputs": { - "response-data": { - "description": "Execution Response Data.", - "required": false, - "type": "string" - }, - "status": { - "description": "Status of the Component Execution ( success or failure )", - "required": true, - "type": "string" - } - } - } - } - } - }, - "derived_from": "tosca.nodes.Component" -} \ No newline at end of file diff --git a/components/model-catalog/definition-type/starter-type/node_type/component-script-executor.json b/components/model-catalog/definition-type/starter-type/node_type/component-script-executor.json new file mode 100644 index 000000000..b241aa36f --- /dev/null +++ b/components/model-catalog/definition-type/starter-type/node_type/component-script-executor.json @@ -0,0 +1,57 @@ +{ + "description": "This is CLI Transaction Configuration Component API", + "version": "1.0.0", + "capabilities": { + "component-node": { + "type": "tosca.capabilities.Node" + } + }, + "interfaces": { + "ComponentScriptExecutor": { + "operations": { + "process": { + "inputs": { + "script-type": { + "description": "Script type, kotlin type is supported", + "required": true, + "type": "string", + "default": "internal", + "constraints": [ + { + "valid_values": [ + "kotlin", + "jython", + "internal" + ] + } + ] + }, + "script-class-reference": { + "description": "Kotlin Script class name or jython script name.", + "required": true, + "type": "string" + }, + "dynamic-properties": { + "description": "Dynamic Json Content or DSL Json reference.", + "required": false, + "type": "json" + } + }, + "outputs": { + "response-data": { + "description": "Execution Response Data.", + "required": false, + "type": "string" + }, + "status": { + "description": "Status of the Component Execution ( success or failure )", + "required": true, + "type": "string" + } + } + } + } + } + }, + "derived_from": "tosca.nodes.Component" +} \ No newline at end of file diff --git a/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/internal/scripts/InternalSimpleCli.kt b/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/internal/scripts/InternalSimpleCli.kt new file mode 100644 index 000000000..4c1d92ae6 --- /dev/null +++ b/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/internal/scripts/InternalSimpleCli.kt @@ -0,0 +1,82 @@ +/* + * Copyright © 2019 IBM. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:Suppress("unused") + +package internal.scripts + +import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput +import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractScriptComponentFunction +import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentScriptExecutor +import org.onap.ccsdk.cds.blueprintsprocessor.ssh.sshClientService +import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive +import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintDependencyService +import org.slf4j.LoggerFactory + +open class TestCliScriptFunction : AbstractScriptComponentFunction() { + + private val log = LoggerFactory.getLogger(TestCliScriptFunction::class.java)!! + + override fun getName(): String { + return "TestCliScriptFunction" + } + + override suspend fun processNB(executionRequest: ExecutionServiceInput) { + log.info("Executing process ...") + } + + override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { + log.info("Executing Recovery") + } +} + + +open class Check : AbstractScriptComponentFunction() { + + private val log = LoggerFactory.getLogger(AbstractScriptComponentFunction::class.java)!! + + override fun getName(): String { + return "Check" + } + + override suspend fun processNB(executionRequest: ExecutionServiceInput) { + // Get the Device Information from the DSL Model + val deviceInformation = bluePrintRuntimeService.resolveDSLExpression("device-properties") + + // Get the Client Service + val sshClientService = BluePrintDependencyService.sshClientService(deviceInformation) + + sshClientService.startSessionNB() + + // Read Commands + val commands = readLinesFromArtifact("command-template") + + // Execute multiple Commands + val responseLog = sshClientService.executeCommandsNB(commands, 5000) + + // Close Session + sshClientService.closeSessionNB() + + // Set the Response Data + setAttribute(ComponentScriptExecutor.RESPONSE_DATA, responseLog.asJsonPrimitive()) + + log.info("Executing process") + } + + override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { + log.info("Executing Recovery") + } +} diff --git a/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/cli/executor/ComponentCliExecutor.kt b/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/cli/executor/ComponentCliExecutor.kt deleted file mode 100644 index e1d8825ba..000000000 --- a/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/cli/executor/ComponentCliExecutor.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright © 2019 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onap.ccsdk.cds.blueprintsprocessor.functions.cli.executor - -import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentFunctionScriptingService -import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentScriptExecutor -import org.springframework.beans.factory.config.ConfigurableBeanFactory -import org.springframework.context.annotation.Scope -import org.springframework.stereotype.Component - -@Component("component-cli-executor") -@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) -open class ComponentCliExecutor(private var componentFunctionScriptingService: ComponentFunctionScriptingService) - : ComponentScriptExecutor(componentFunctionScriptingService) \ No newline at end of file diff --git a/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/scripts/InternalSimpleCli.cba.kts b/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/scripts/InternalSimpleCli.cba.kts deleted file mode 100644 index e62374747..000000000 --- a/ms/blueprintsprocessor/functions/cli-executor/src/main/kotlin/scripts/InternalSimpleCli.cba.kts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright © 2019 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -@file:Suppress("unused") - -import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput -import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractScriptComponentFunction -import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentScriptExecutor -import org.onap.ccsdk.cds.blueprintsprocessor.ssh.sshClientService -import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive -import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintDependencyService -import org.slf4j.LoggerFactory - -open class TestCliScriptFunction : AbstractScriptComponentFunction() { - - private val log = LoggerFactory.getLogger(TestCliScriptFunction::class.java.canonicalName)!! - - override fun getName(): String { - return "SimpleCliConfigure" - } - - override suspend fun processNB(executionRequest: ExecutionServiceInput) { - log.info("Executing process ...") - } - - override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { - log.info("Executing Recovery") - } -} - - -open class Check : AbstractScriptComponentFunction() { - - private val log = LoggerFactory.getLogger(AbstractScriptComponentFunction::class.java)!! - - override fun getName(): String { - return "Check" - } - - override suspend fun processNB(executionRequest: ExecutionServiceInput) { - // Get the Device Information from the DSL Model - val deviceInformation = bluePrintRuntimeService.resolveDSLExpression("device-properties") - - // Get the Client Service - val sshClientService = BluePrintDependencyService.sshClientService(deviceInformation) - - sshClientService.startSessionNB() - - // Read Commands - val commands = readLinesFromArtifact("command-template") - - // Execute multiple Commands - val responseLog = sshClientService.executeCommandsNB(commands, 5000) - - // Close Session - sshClientService.closeSessionNB() - - // Set the Response Data - setAttribute(ComponentScriptExecutor.RESPONSE_DATA, responseLog.asJsonPrimitive()) - - log.info("Executing process") - } - - override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { - log.info("Executing Recovery") - } -} diff --git a/ms/blueprintsprocessor/functions/cli-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/cli/executor/ComponentCliExecutorTest.kt b/ms/blueprintsprocessor/functions/cli-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/cli/executor/ComponentCliExecutorTest.kt index 658092f0a..0c538d4e7 100644 --- a/ms/blueprintsprocessor/functions/cli-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/cli/executor/ComponentCliExecutorTest.kt +++ b/ms/blueprintsprocessor/functions/cli-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/cli/executor/ComponentCliExecutorTest.kt @@ -56,12 +56,12 @@ import kotlin.test.assertNotNull class ComponentCliExecutorTest { @Autowired - lateinit var componentCliExecutor: ComponentCliExecutor + lateinit var componentScriptExecutor: ComponentScriptExecutor @Test fun `test CLI Component Instance`() { runBlocking { - assertNotNull(componentCliExecutor, "failed to get ComponentCliExecutor instance") + assertNotNull(componentScriptExecutor, "failed to get ComponentCliExecutor instance") val executionServiceInput = ExecutionServiceInput().apply { commonHeader = CommonHeader().apply { requestId = "1234" @@ -72,8 +72,8 @@ class ComponentCliExecutorTest { payload = JacksonUtils.jsonNode("{}") as ObjectNode } val bluePrintRuntime = mockk("1234") - componentCliExecutor.bluePrintRuntimeService = bluePrintRuntime - componentCliExecutor.stepName = "sample-step" + componentScriptExecutor.bluePrintRuntimeService = bluePrintRuntime + componentScriptExecutor.stepName = "sample-step" val operationInputs = hashMapOf() operationInputs[BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE] = "activate-cli".asJsonPrimitive() @@ -81,7 +81,7 @@ class ComponentCliExecutorTest { operationInputs[BluePrintConstants.PROPERTY_CURRENT_OPERATION] = "operationName".asJsonPrimitive() operationInputs[ComponentScriptExecutor.SCRIPT_TYPE] = BluePrintConstants.SCRIPT_INTERNAL.asJsonPrimitive() operationInputs[ComponentScriptExecutor.SCRIPT_CLASS_REFERENCE] = - "InternalSimpleCli_cba\$TestCliScriptFunction".asJsonPrimitive() + "internal.scripts.TestCliScriptFunction".asJsonPrimitive() val stepInputData = StepData().apply { name = "activate-cli" @@ -102,7 +102,7 @@ class ComponentCliExecutorTest { "interfaceName", "operationName") } returns operationOutputs - componentCliExecutor.applyNB(executionServiceInput) + componentScriptExecutor.applyNB(executionServiceInput) } } } \ No newline at end of file diff --git a/ms/blueprintsprocessor/functions/cli-executor/src/test/resources/logback-test.xml b/ms/blueprintsprocessor/functions/cli-executor/src/test/resources/logback-test.xml index 626b8f911..688a533be 100644 --- a/ms/blueprintsprocessor/functions/cli-executor/src/test/resources/logback-test.xml +++ b/ms/blueprintsprocessor/functions/cli-executor/src/test/resources/logback-test.xml @@ -27,6 +27,7 @@ + -- cgit 1.2.3-korg