}
}
},
+ "activate-restconf": {
+ "type": "component-restconf-executor",
+ "interfaces": {
+ "ComponentRestconfExecutor": {
+ "operations": {
+ "process": {
+ "implementation": {
+ "primary": "component-script"
+ },
+ "inputs": {
+ "script-type": "kotlin",
+ "script-class-reference": "DefaultRestconf_cba$MountNEditConfigure",
+ "instance-dependencies": []
+ },
+ "outputs": {
+ "response-data": "",
+ "status": "success"
+ }
+ }
+ }
+ }
+ }
+ },
"sample-netconf-device": {
"type": "vnf-netconf-device",
"capabilities": {
}
}
},
+ "activate-restconf": {
+ "steps": {
+ "activate-process": {
+ "description": "Activate Restconf flow",
+ "target": "activate-restconf",
+ "activities": [
+ {
+ "call_operation": "ComponentRestconfExecutor.process"
+ }
+ ]
+ }
+ }
+ },
"assign-activate": {
"inputs": {
"assign-activate-properties": {
"operations": {
"process": {
"inputs": {
+ "resolution-key": {
+ "description": "Key for service instance related correlation.",
+ "required": false,
+ "type": "string"
+ },
+ "store-result": {
+ "description": "Whether or not to store the output.",
+ "required": false,
+ "type": "boolean"
+ },
"resource-type": {
"description": "Request type.",
"required": false,
},
"derived_from": "tosca.nodes.Component"
},
+ "component-restconf-executor": {
+ "description": "This is Restconf Transaction Configuration Component API",
+ "version": "1.0.0",
+ "capabilities": {
+ "component-node": {
+ "type": "tosca.capabilities.Node"
+ }
+ },
+ "interfaces": {
+ "ComponentRestconfExecutor": {
+ "operations": {
+ "process": {
+ "inputs": {
+ "script-type": {
+ "description": "Script type, kotlin type is supported",
+ "required": true,
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "kotlin",
+ "jython",
+ "internal"
+ ]
+ }
+ ],
+ "default": "internal"
+ },
+ "script-class-reference": {
+ "description": "Kotlin Script class name or jython script name.",
+ "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,
+ "type": "json"
+ }
+ },
+ "outputs": {
+ "response-data": {
+ "description": "Execution Response Data in JSON format.",
+ "required": false,
+ "type": "string"
+ },
+ "status": {
+ "description": "Status of the Component Execution ( success or failure )",
+ "required": true,
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "derived_from": "tosca.nodes.Component"
+ },
"dg-generic": {
"description": "This is Generic Directed Graph Type",
"version": "1.0.0",
},
"derived_from": "tosca.nodes.DG"
},
+ "source-capability": {
+ "description": "This is Component Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {
+ "script-type": {
+ "required": true,
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "kotlin",
+ "internal",
+ "jython"
+ ]
+ }
+ ],
+ "default": "kotlin"
+ },
+ "script-class-reference": {
+ "description": "Capability reference name for internal and kotlin, for jython script file path",
+ "required": true,
+ "type": "string"
+ },
+ "instance-dependencies": {
+ "description": "Instance dependency Names to Inject to Kotlin / Jython Script.",
+ "required": false,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "key-dependencies": {
+ "description": "Resource Resolution dependency dictionary names.",
+ "required": true,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ }
+ },
+ "derived_from": "tosca.nodes.ResourceSource"
+ },
"source-input": {
"description": "This is Input Resource Source Node Type",
"version": "1.0.0",
},
"derived_from": "tosca.nodes.ResourceSource"
},
- "source-processor-db": {
+ "source-primary-db": {
"description": "This is Database Resource Source Node Type",
"version": "1.0.0",
"properties": {
],
"default": "JSON"
},
+ "verb": {
+ "required": false,
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "GET",
+ "POST",
+ "DELETE",
+ "PUT"
+ ]
+ }
+ ],
+ "default": "GET"
+ },
+ "payload": {
+ "required": false,
+ "type": "string",
+ "default": ""
+ },
"endpoint-selector": {
"required": false,
"type": "string"
"properties": {}
},
"processor-db": {
- "type": "source-processor-db",
+ "type": "source-primary-db",
"properties": {
"endpoint-selector": "dynamic-db-source",
"query": "SELECT artifact_name FROM sdnctl.BLUEPRINT_RUNTIME where artifact_version=\"1.0.0\"",
--- /dev/null
+/*
+ * 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.
+ */
+
+import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.restconf.executor.RestconfComponentFunction
+import org.slf4j.LoggerFactory
+
+open class MountNEditConfigure : RestconfComponentFunction() {
+
+ val log = LoggerFactory.getLogger(MountNEditConfigure::class.java)!!
+
+ override fun getName(): String {
+ return "MountNEditConfigure"
+ }
+
+ override fun process(executionRequest: ExecutionServiceInput) {
+ log.info("processing request..")
+
+ }
+
+ override fun recover(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
+ log.info("processing request..")
+ }
+}
\ No newline at end of file
/*
* Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications 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.
* limitations under the License.
*/
-import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor.*
-import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.CapabilityResourceSource
-import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException
-import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintScriptsService
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor.ResourceAssignmentProcessor
import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment
-import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.slf4j.LoggerFactory
open class ScriptResourceAssignmentProcessor : ResourceAssignmentProcessor() {
- lateinit var resourceAssignment: ResourceAssignment
+ private val log = LoggerFactory.getLogger(ScriptResourceAssignmentProcessor::class.java)!!
override fun getName(): String {
- return "resource-assignment-processor-custom-capability"
+ return "ScriptResourceAssignmentProcessor"
}
- override fun process(resourceAssignment: ResourceAssignment) {
- this.resourceAssignment = resourceAssignment
+ override fun process(executionRequest: ResourceAssignment) {
+ log.info("Processing input")
}
- override fun prepareResponse(): ResourceAssignment {
- return resourceAssignment
+ override fun recover(runtimeException: RuntimeException, executionRequest: ResourceAssignment) {
+ log.info("Recovering input")
}
-
- override fun recover(runtimeException: RuntimeException, resourceAssignment: ResourceAssignment) {
- TODO("To Implement")
- }
-
}
\ No newline at end of file
# Web server config\r
server.port=8080\r
\r
-blueprintsprocessor.grpcEnable=false\r
+blueprintsprocessor.grpcEnable=true\r
blueprintsprocessor.httpPort=8080\r
blueprintsprocessor.grpcPort=9111\r
+\r
# Blueprint Processor File Execution and Handling Properties\r
-blueprintsprocessor.blueprintDeployPath=/opt/app/onap/blueprints/deploy\r
-blueprintsprocessor.blueprintArchivePath=/opt/app/onap/blueprints/archive\r
+blueprintsprocessor.blueprintDeployPath=blueprints/deploy\r
+blueprintsprocessor.blueprintArchivePath=blueprints/archive\r
+blueprintsprocessor.blueprintWorkingPath=blueprints/work\r
# Primary Database Configuration\r
blueprintsprocessor.db.primary.url=jdbc:mysql://localhost:3306/sdnctl\r
blueprintsprocessor.db.primary.username=sdnctl\r
# Blueprint Processor File Execution and Handling Properties
blueprintsprocessor.blueprintDeployPath=/opt/app/onap/blueprints/deploy
blueprintsprocessor.blueprintArchivePath=/opt/app/onap/blueprints/archive
-
+blueprintsprocessor.blueprintWorkingPath=/opt/app/onap/blueprints/work
# Primary Database Configuration
blueprintsprocessor.db.primary.url=jdbc:mysql://db:3306/sdnctl
blueprintsprocessor.db.primary.username=sdnctl
<!-- encoders are assigned the type\r
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->\r
<encoder>\r
- <pattern>%d{HH:mm:ss.SSS} %-5level %logger{100} - %msg%n</pattern>\r
+ <pattern>%d{HH:mm:ss.SSS} %-5level %logger{50} - %msg%n</pattern>\r
</encoder>\r
</appender>\r
\r
--- /dev/null
+/*
+ * 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.
+ */
+
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor.ResourceAssignmentProcessor
+import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment
+import org.slf4j.LoggerFactory
+
+open class SimpleRAProcessor : ResourceAssignmentProcessor() {
+
+ private val log = LoggerFactory.getLogger(SimpleRAProcessor::class.java)!!
+
+ override fun getName(): String {
+ return "ScriptResourceAssignmentProcessor"
+ }
+
+ override fun process(executionRequest: ResourceAssignment) {
+ log.info("Processing input")
+ }
+
+ override fun recover(runtimeException: RuntimeException, executionRequest: ResourceAssignment) {
+ log.info("Recovering input")
+ }
+}
// Copy the File Part to Local File
copyFromFilePart(filePart, compressedFile)
// Save the Copied file to Database
- return bluePrintCatalogService.saveToDatabase(saveId, compressedFile, false)
+ return bluePrintCatalogService.saveToDatabase(saveId, compressedFile, true)
} catch (e: IOException) {
throw BluePrintException(ErrorCode.IO_FILE_INTERRUPT.value,
"Error in Upload CBA: ${e.message}", e)
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.Status
-import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException
import org.onap.ccsdk.cds.controllerblueprints.core.asObjectNode
prepareRequest(executionServiceInput)
process(executionServiceInput)
} catch (runtimeException: RuntimeException) {
+ log.error("failed in ${getName()} : ${runtimeException.message}", runtimeException)
recover(runtimeException, executionServiceInput)
}
return prepareResponse()
}
override fun registerExecutors(name: String, svcLogicNodeExecutor: AbstractSvcLogicNodeExecutor) {
- log.info("Registering executors($name) with type(${svcLogicNodeExecutor.javaClass}")
+ log.debug("Registering executors($name) with type(${svcLogicNodeExecutor.javaClass}")
nodeExecutors[name] = svcLogicNodeExecutor
}
--- /dev/null
+/*
+ * 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.controllerblueprints.core
+
+import org.junit.Test
+import kotlin.test.assertTrue
+
+class FileExtensionFunctionTest {
+ val blueprintBasePath = "./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration"
+
+ @Test
+ fun testCompress() {
+ val blueprintFile = normalizedFile(blueprintBasePath)
+ val targetZip = normalizedFile("target", "compress.zip")
+ targetZip.deleteRecursively()
+ blueprintFile.compress(targetZip)
+ assertTrue(blueprintFile.exists(), "failed to create compressed file(${targetZip.absolutePath} ")
+ }
+
+}
\ No newline at end of file
import com.att.eelf.configuration.EELFLogger
import com.att.eelf.configuration.EELFManager
-import org.onap.ccsdk.cds.controllerblueprints.validation.utils.PropertyAssignmentValidationUtils
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
import org.onap.ccsdk.cds.controllerblueprints.core.data.*
import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintTypeValidatorService
import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext
import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintRuntimeService
+import org.onap.ccsdk.cds.controllerblueprints.validation.utils.PropertyAssignmentValidationUtils
import org.springframework.beans.factory.config.ConfigurableBeanFactory
import org.springframework.context.annotation.Scope
import org.springframework.stereotype.Service
var paths: MutableList<String> = arrayListOf()
override fun validate(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, nodeTemplate: NodeTemplate) {
- log.info("Validating NodeTemplate($name)")
+ log.debug("Validating NodeTemplate($name)")
this.bluePrintRuntimeService = bluePrintRuntimeService
this.bluePrintContext = bluePrintRuntimeService.bluePrintContext()
@Throws(BluePrintException::class)
open fun validateRequirementAssignment(nodeTemplateName: String, requirementAssignmentName: String,
requirementDefinition: RequirementDefinition, requirementAssignment: RequirementAssignment) {
- log.info("Validating NodeTemplate({}) requirement assignment ({}) ", nodeTemplateName, requirementAssignmentName)
+ log.debug("Validating NodeTemplate({}) requirement assignment ({}) ", nodeTemplateName,
+ requirementAssignmentName)
val requirementNodeTemplateName = requirementAssignment.node!!
val capabilityName = requirementAssignment.capability
val relationship = requirementAssignment.relationship!!
val operationDefinition = interfaceDefinition.operations?.get(operationAssignmentName)
?: throw BluePrintException("Failed to get NodeTemplate($nodeTemplateName) operation definition ($operationAssignmentName)")
- log.info("Validation NodeTemplate($nodeTemplateName) Interface($interfaceAssignmentName) Operation ($operationAssignmentName)")
+ log.debug("Validation NodeTemplate($nodeTemplateName) Interface($interfaceAssignmentName) Operation " +
+ "($operationAssignmentName)")
val inputs = operationAssignments.inputs
val outputs = operationAssignments.outputs