diff options
Diffstat (limited to 'components')
19 files changed, 343 insertions, 130 deletions
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintConstants.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintConstants.kt index fd6a8db1..102e2ebd 100644 --- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintConstants.kt +++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintConstants.kt @@ -45,17 +45,13 @@ object BluePrintConstants { const val USER_SYSTEM: String = "System"
- const val MODEL_CONTENT_TYPE_JSON: String = "JSON"
- const val MODEL_CONTENT_TYPE_YAML: String = "YAML"
- const val MODEL_CONTENT_TYPE_YANG: String = "YANG"
- const val MODEL_CONTENT_TYPE_SCHEMA: String = "SCHEMA"
-
const val PATH_DIVIDER: String = "/"
const val PATH_SERVICE_TEMPLATE: String = "service_template"
const val PATH_TOPOLOGY_TEMPLATE: String = "topology_template"
const val PATH_METADATA: String = "metadata"
const val PATH_NODE_TYPES: String = "node_types"
const val PATH_POLICY_TYPES: String = "policy_types"
+ const val PATH_RELATIONSHIP_TYPES: String = "relationship_types"
const val PATH_ARTIFACT_TYPES: String = "artifact_types"
const val PATH_DATA_TYPES: String = "data_types"
const val PATH_INPUTS: String = "inputs"
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/data/BluePrintModel.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/data/BluePrintModel.kt index 19f09432..9767b2e1 100644 --- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/data/BluePrintModel.kt +++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/data/BluePrintModel.kt @@ -598,6 +598,8 @@ class ServiceTemplate : Cloneable { var artifactTypes: MutableMap<String, ArtifactType>? = null
@get:JsonProperty("data_types")
var dataTypes: MutableMap<String, DataType>? = null
+ @get:JsonProperty("relationship_types")
+ var relationshipTypes: MutableMap<String, RelationshipType>? = null
@get:JsonProperty("node_types")
var nodeTypes: MutableMap<String, NodeType>? = null
@get:JsonProperty("policy_types")
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintExpressionService.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintExpressionService.kt index 6a50680e..8caec75f 100644 --- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintExpressionService.kt +++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintExpressionService.kt @@ -16,15 +16,15 @@ package org.onap.ccsdk.apps.controllerblueprints.core.service
+import com.att.eelf.configuration.EELFLogger
+import com.att.eelf.configuration.EELFManager
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.node.ArrayNode
import com.fasterxml.jackson.databind.node.ObjectNode
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants
import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintTypes
import org.onap.ccsdk.apps.controllerblueprints.core.data.*
-import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils
-import com.att.eelf.configuration.EELFLogger
-import com.att.eelf.configuration.EELFManager
/**
*
@@ -35,12 +35,6 @@ object BluePrintExpressionService { val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())
@JvmStatic
- fun getExpressionData(propertyAssignment: Any): ExpressionData {
- val propertyAssignmentNode: JsonNode = JacksonUtils.jsonNodeFromObject(propertyAssignment)
- return getExpressionData(propertyAssignmentNode)
- }
-
- @JvmStatic
fun getExpressionData(propertyAssignmentNode: JsonNode): ExpressionData {
log.trace("Assignment Data/Expression : {}", propertyAssignmentNode)
val expressionData = ExpressionData(valueNode = propertyAssignmentNode)
@@ -53,19 +47,19 @@ object BluePrintExpressionService { expressionData.expressionNode = propertyAssignmentNode
when (expressionData.command) {
- org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants.EXPRESSION_GET_INPUT -> {
+ BluePrintConstants.EXPRESSION_GET_INPUT -> {
expressionData.inputExpression = populateInputExpression(propertyAssignmentNode)
}
- org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants.EXPRESSION_GET_ATTRIBUTE -> {
+ BluePrintConstants.EXPRESSION_GET_ATTRIBUTE -> {
expressionData.attributeExpression = populateAttributeExpression(propertyAssignmentNode)
}
- org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants.EXPRESSION_GET_PROPERTY -> {
+ BluePrintConstants.EXPRESSION_GET_PROPERTY -> {
expressionData.propertyExpression = populatePropertyExpression(propertyAssignmentNode)
}
- org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants.EXPRESSION_GET_OPERATION_OUTPUT -> {
+ BluePrintConstants.EXPRESSION_GET_OPERATION_OUTPUT -> {
expressionData.operationOutputExpression = populateOperationOutputExpression(propertyAssignmentNode)
}
- org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants.EXPRESSION_GET_ARTIFACT -> {
+ BluePrintConstants.EXPRESSION_GET_ARTIFACT -> {
expressionData.artifactExpression = populateArtifactExpression(propertyAssignmentNode)
}
}
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintImportService.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintImportService.kt index fce06f3f..26eb19de 100644 --- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintImportService.kt +++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintImportService.kt @@ -28,11 +28,13 @@ import java.net.URLDecoder import java.nio.charset.Charset class BluePrintImportService(private val parentServiceTemplate: ServiceTemplate, private val blueprintBasePath: String) { + companion object { + private const val PARENT_SERVICE_TEMPLATE: String = "parent" + } private val log: Logger = LoggerFactory.getLogger(this::class.toString()) - val PARENT_SERVICE_TEMPLATE: String = "parent" - var importServiceTemplateMap: MutableMap<String, ServiceTemplate> = hashMapOf() + private var importServiceTemplateMap: MutableMap<String, ServiceTemplate> = hashMapOf() fun getImportResolvedServiceTemplate(): ServiceTemplate { diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt index 5540047c..bd19ae47 100644 --- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt +++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt @@ -67,6 +67,12 @@ interface BluePrintRuntimeService<T> { */
fun resolveNodeTemplateProperties(nodeTemplateName: String): MutableMap<String, JsonNode>
+ fun resolveNodeTemplateCapabilityProperties(nodeTemplateName: String, capability: String): MutableMap<String,
+ JsonNode>
+
+ fun resolveNodeTemplateRequirementProperties(nodeTemplateName: String, requirementName: String): MutableMap<String,
+ JsonNode>
+
fun resolveNodeTemplateInterfaceOperationInputs(nodeTemplateName: String, interfaceName: String, operationName: String): MutableMap<String, JsonNode>
fun resolveNodeTemplateInterfaceOperationOutputs(nodeTemplateName: String, interfaceName: String, operationName: String): MutableMap<String, JsonNode>
@@ -193,17 +199,15 @@ open class DefaultBluePrintRuntimeService(private var id: String, private var bl val nodeTemplate: NodeTemplate = bluePrintContext.nodeTemplateByName(nodeTemplateName)
- val propertyAssignments: MutableMap<String, JsonNode> =
- nodeTemplate.properties as MutableMap<String, JsonNode>
+ val propertyAssignments: MutableMap<String, JsonNode> = nodeTemplate.properties!!
// Get the Node Type Definitions
- val nodeTypeProperties: MutableMap<String, PropertyDefinition> =
- bluePrintContext.nodeTypeChainedProperties(nodeTemplate.type)!!
+ val nodeTypeProperties: MutableMap<String, PropertyDefinition> = bluePrintContext.nodeTypeChainedProperties(nodeTemplate.type)!!
// Iterate Node Type Properties
nodeTypeProperties.forEach { nodeTypePropertyName, nodeTypeProperty ->
// Get the Express or Value for the Node Template
- val propertyAssignment: Any? = propertyAssignments[nodeTypePropertyName]
+ val propertyAssignment: JsonNode? = propertyAssignments[nodeTypePropertyName]
var resolvedValue: JsonNode = NullNode.getInstance()
if (propertyAssignment != null) {
@@ -223,6 +227,18 @@ open class DefaultBluePrintRuntimeService(private var id: String, private var bl return propertyAssignmentValue
}
+ override fun resolveNodeTemplateCapabilityProperties(nodeTemplateName: String, capabilityName: String):
+ MutableMap<String, JsonNode> {
+ log.info("resolveNodeTemplateCapabilityProperties for node template($nodeTemplateName) capability " +
+ "($capabilityName)")
+ TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ }
+
+ override fun resolveNodeTemplateRequirementProperties(nodeTemplateName: String, requirementName: String): MutableMap<String, JsonNode> {
+ log.info("resolveNodeTemplateRequirementProperties for node template($nodeTemplateName) requirement ($requirementName)")
+ TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ }
+
override fun resolveNodeTemplateInterfaceOperationInputs(nodeTemplateName: String,
interfaceName: String, operationName: String): MutableMap<String, JsonNode> {
log.info("resolveNodeTemplateInterfaceOperationInputs for node template ({}),interface name ({}), " +
@@ -230,8 +246,8 @@ open class DefaultBluePrintRuntimeService(private var id: String, private var bl val propertyAssignmentValue: MutableMap<String, JsonNode> = hashMapOf()
- val propertyAssignments: MutableMap<String, Any> =
- bluePrintContext.nodeTemplateInterfaceOperationInputs(nodeTemplateName, interfaceName, operationName) as? MutableMap<String, Any>
+ val propertyAssignments: MutableMap<String, JsonNode> =
+ bluePrintContext.nodeTemplateInterfaceOperationInputs(nodeTemplateName, interfaceName, operationName)
?: hashMapOf()
val nodeTypeName = bluePrintContext.nodeTemplateByName(nodeTemplateName).type
@@ -245,7 +261,7 @@ open class DefaultBluePrintRuntimeService(private var id: String, private var bl // Iterate Node Type Properties
nodeTypeInterfaceOperationInputs.forEach { nodeTypePropertyName, nodeTypeProperty ->
// Get the Express or Value for the Node Template
- val propertyAssignment: Any? = propertyAssignments[nodeTypePropertyName]
+ val propertyAssignment: JsonNode? = propertyAssignments[nodeTypePropertyName]
var resolvedValue: JsonNode = NullNode.getInstance()
if (propertyAssignment != null) {
@@ -275,8 +291,8 @@ open class DefaultBluePrintRuntimeService(private var id: String, private var bl val propertyAssignmentValue: MutableMap<String, JsonNode> = hashMapOf()
- val propertyAssignments: MutableMap<String, Any> =
- bluePrintContext.nodeTemplateInterfaceOperationOutputs(nodeTemplateName, interfaceName, operationName) as? MutableMap<String, Any>
+ val propertyAssignments: MutableMap<String, JsonNode> =
+ bluePrintContext.nodeTemplateInterfaceOperationOutputs(nodeTemplateName, interfaceName, operationName)
?: hashMapOf()
val nodeTypeName = bluePrintContext.nodeTemplateByName(nodeTemplateName).type
@@ -289,7 +305,7 @@ open class DefaultBluePrintRuntimeService(private var id: String, private var bl nodeTypeInterfaceOperationOutputs.forEach { nodeTypePropertyName, nodeTypeProperty ->
// Get the Express or Value for the Node Template
- val propertyAssignment: Any? = propertyAssignments[nodeTypePropertyName]
+ val propertyAssignment: JsonNode? = propertyAssignments[nodeTypePropertyName]
var resolvedValue: JsonNode = NullNode.getInstance()
if (propertyAssignment != null) {
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/PropertyAssignmentService.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/PropertyAssignmentService.kt index 36c141f5..17380fc0 100644 --- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/PropertyAssignmentService.kt +++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/PropertyAssignmentService.kt @@ -47,7 +47,7 @@ If Property Assignment is Expression. */
fun resolveAssignmentExpression(nodeTemplateName: String, assignmentName: String,
- assignment: Any): JsonNode {
+ assignment: JsonNode): JsonNode {
val valueNode: JsonNode
log.trace("Assignment ({})", assignment)
val expressionData = BluePrintExpressionService.getExpressionData(assignment)
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt index 18896f51..5a10e43f 100755 --- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt +++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt @@ -33,12 +33,6 @@ import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths import java.nio.file.StandardOpenOption -import java.text.MessageFormat -import java.time.Instant -import java.time.temporal.ChronoUnit -import java.time.ZoneId -import java.time.format.DateTimeFormatter - class BluePrintFileUtils { @@ -56,8 +50,9 @@ class BluePrintFileUtils { val metaDataDir = File(blueprintDir.absolutePath.plus(File.separator).plus(BluePrintConstants.TOSCA_METADATA_DIR)) Files.createDirectories(metaDataDir.toPath()) - val metafile = File(blueprintDir.absolutePath.plus(File.separator).plus(BluePrintConstants.TOSCA_METADATA_ENTRY_DEFINITION_FILE)) - Files.write(metafile.toPath(), getMetaDataContent().toByteArray(), StandardOpenOption.CREATE_NEW) + val metaFile = File(blueprintDir.absolutePath.plus(File.separator).plus(BluePrintConstants + .TOSCA_METADATA_ENTRY_DEFINITION_FILE)) + Files.write(metaFile.toPath(), getMetaDataContent().toByteArray(), StandardOpenOption.CREATE_NEW) val definitionsDir = File(blueprintDir.absolutePath.plus(File.separator).plus(BluePrintConstants.TOSCA_DEFINITIONS_DIR)) Files.createDirectories(definitionsDir.toPath()) @@ -92,35 +87,6 @@ class BluePrintFileUtils { } } - fun populateDefaultImports(blueprintContext: BluePrintContext) { - // Get the Default Types - val types = arrayListOf(BluePrintConstants.PATH_DATA_TYPES, BluePrintConstants.PATH_ARTIFACT_TYPES, - BluePrintConstants.PATH_NODE_TYPES, BluePrintConstants.PATH_POLICY_TYPES) - - // Clean Type Imports - cleanImportTypes(blueprintContext.serviceTemplate) - - val imports = mutableListOf<ImportDefinition>() - types.forEach { typeName -> - val import = ImportDefinition() - import.file = BluePrintConstants.TOSCA_DEFINITIONS_DIR.plus("/$typeName.json") - imports.add(import) - } - - blueprintContext.serviceTemplate.imports = imports - } - - fun cleanImportTypes(serviceTemplate: ServiceTemplate) { - // Clean the Type imports - val toDeleteTypes = serviceTemplate.imports?.filter { - it.file.endsWith("_types.json") - } - - if (toDeleteTypes != null && toDeleteTypes.isNotEmpty()) { - serviceTemplate.imports?.removeAll(toDeleteTypes) - } - } - fun writeEnhancedBluePrint(blueprintContext: BluePrintContext) { // Write Blueprint Types @@ -147,6 +113,11 @@ class BluePrintFileUtils { writeTypeFile(definitionDir.absolutePath, BluePrintConstants.PATH_DATA_TYPES, dataTypesContent) } + blueprintContext.serviceTemplate.relationshipTypes?.let { + val nodeTypesContent = JacksonUtils.getWrappedJson(BluePrintConstants.PATH_RELATIONSHIP_TYPES, it.toSortedMap(), true) + writeTypeFile(definitionDir.absolutePath, BluePrintConstants.PATH_RELATIONSHIP_TYPES, nodeTypesContent) + } + blueprintContext.serviceTemplate.artifactTypes?.let { val artifactTypesContent = JacksonUtils.getWrappedJson(BluePrintConstants.PATH_ARTIFACT_TYPES, it.toSortedMap(), true) writeTypeFile(definitionDir.absolutePath, BluePrintConstants.PATH_ARTIFACT_TYPES, artifactTypesContent) @@ -163,7 +134,40 @@ class BluePrintFileUtils { } } - fun writeEntryDefinitionFile(blueprintContext: BluePrintContext) { + private fun populateDefaultImports(blueprintContext: BluePrintContext) { + // Get the Default Types + val types = arrayListOf(BluePrintConstants.PATH_DATA_TYPES, BluePrintConstants.PATH_RELATIONSHIP_TYPES, + BluePrintConstants.PATH_ARTIFACT_TYPES, BluePrintConstants.PATH_NODE_TYPES, + BluePrintConstants.PATH_POLICY_TYPES) + + // Clean Type Imports + cleanImportTypes(blueprintContext.serviceTemplate) + + val imports = mutableListOf<ImportDefinition>() + types.forEach { typeName -> + val import = ImportDefinition() + import.file = BluePrintConstants.TOSCA_DEFINITIONS_DIR.plus("/$typeName.json") + imports.add(import) + } + + blueprintContext.serviceTemplate.imports = imports + } + + fun cleanImportTypes(serviceTemplate: ServiceTemplate) { + // Clean the Type imports + val toDeleteTypes = serviceTemplate.imports?.filter { + it.file.endsWith("_types.json") + } + + if (toDeleteTypes != null && toDeleteTypes.isNotEmpty()) { + serviceTemplate.imports?.removeAll(toDeleteTypes) + } + } + + /** + * Re Generate the Blueprint Service Template Definition file based on BluePrint Context. + */ + private fun writeEntryDefinitionFile(blueprintContext: BluePrintContext) { val absoluteEntryDefinitionFile = blueprintContext.rootPath.plus(File.separator).plus(blueprintContext.entryDefinition) @@ -174,14 +178,15 @@ class BluePrintFileUtils { writeServiceTemplate.dataTypes = null writeServiceTemplate.artifactTypes = null writeServiceTemplate.policyTypes = null + writeServiceTemplate.relationshipTypes = null writeServiceTemplate.nodeTypes = null - // Write the Serivice Template + // Write the Service Template writeDefinitionFile(absoluteEntryDefinitionFile, JacksonUtils.getJson(writeServiceTemplate, true)) } - fun writeDefinitionFile(definitionFile: String, content: String) = runBlocking { - val definitionFile = File(definitionFile) + fun writeDefinitionFile(definitionFileName: String, content: String) = runBlocking { + val definitionFile = File(definitionFileName) // Delete the File If exists Files.deleteIfExists(definitionFile.toPath()) @@ -207,22 +212,6 @@ class BluePrintFileUtils { "\nEntry-Definitions: Definitions/<BLUEPRINT_NAME>.json" + "\nTemplate-Tags: <TAGS>" } - - fun getBluePrintFile(fileName: String, targetPath: Path) : File { - val filePath = targetPath.resolve(fileName).toString() - val file = File(filePath) - check(file.exists()) { - throw BluePrintException("couldn't get definition file under path(${file.absolutePath})") - } - return file - } - - fun getCBAGeneratedFileName(fileName: String, prefix: String): String { - val DATE_FORMAT = "yyyyMMddHHmmss" - val formatter = DateTimeFormatter.ofPattern(DATE_FORMAT) - val datePrefix = Instant.now().atZone(ZoneId.systemDefault()).toLocalDateTime().format(formatter) - return MessageFormat.format(prefix, datePrefix, fileName) - } fun getCbaStorageDirectory(path: String): Path { check(StringUtils.isNotBlank(path)) { diff --git a/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt b/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt index 7ecf44b6..1dfb89a5 100644 --- a/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt +++ b/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt @@ -56,6 +56,18 @@ class BluePrintRuntimeServiceTest { }
@Test
+ fun testResolveNodeTemplateCapabilityProperties() {
+ log.info("************************ testResolveNodeTemplateRequirementProperties **********************")
+ //TODO
+ }
+
+ @Test
+ fun testResolveNodeTemplateRequirementProperties() {
+ log.info("************************ testResolveNodeTemplateRequirementProperties **********************")
+ //TODO
+ }
+
+ @Test
fun testResolveNodeTemplateInterfaceOperationInputs() {
log.info("************************ testResolveNodeTemplateInterfaceOperationInputs **********************")
@@ -72,7 +84,7 @@ class BluePrintRuntimeServiceTest { assertNotNull(inContext, "Failed to populate interface input property values")
assertEquals(inContext["action-name"], jsonNodeFromObject("sample-action"), "Failed to populate parameter action-name")
assertEquals(inContext["request-id"], jsonNodeFromObject("12345"), "Failed to populate parameter action-name")
- }
+ }
@Test
fun testResolveNodeTemplateInterfaceOperationOutputs() {
diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json index 7d3a17a6..a3bf546d 100644 --- a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json +++ b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/activation-blueprint.json @@ -12,6 +12,9 @@ "file": "Definitions/data_types.json" }, { + "file": "Definitions/relationship_types.json" + }, + { "file": "Definitions/artifact_types.json" }, { @@ -205,6 +208,57 @@ "file": "Scripts/SamplePythonComponentNode.py" } } + }, + "activate-netconf": { + "type": "component-netconf-executor", + "interfaces": { + "NetconfExecutorComponent": { + "operations": { + "process": { + "implementation": { + "primary": "component-script" + }, + "inputs": { + "instance-dependencies": [ + "json-parser-service", + "netconf-rpc-service" + ] + }, + "outputs": { + "response-data": "", + "status": "" + } + } + } + } + }, + "requirements": { + "netconf-connection": { + "capability": "netconf", + "node": "sample-netconf-device", + "relationship": "tosca.relationships.ConnectsTo" + } + }, + "artifacts": { + "component-script": { + "type": "artifact-script-jython", + "file": "Scripts/SamplePythonComponentNode.py" + } + } + }, + "sample-netconf-device": { + "type": "vnf-netconf-device", + "capabilities": { + "netconf": { + "properties": { + "login-key": "sample-key", + "login-account": "sample-account", + "target-ip-address": "localhost", + "port-number": 830, + "connection-time-out": 30 + } + } + } } }, "workflows": { diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/node_types.json b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/node_types.json index 6a156ff1..f7970bfb 100644 --- a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/node_types.json +++ b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/node_types.json @@ -29,11 +29,68 @@ "version": "1.0.0", "derived_from": "tosca.nodes.Root" }, + "tosca.nodes.ResourceSource" : { + "description" : "TOSCA base type for Resource Sources", + "version" : "1.0.0", + "derived_from" : "tosca.nodes.Root" + }, + "tosca.nodes.Vnf" : { + "description" : "This is VNF Node Type", + "version" : "1.0.0", + "derived_from" : "tosca.nodes.Root" + }, "tosca.nodes.component.Jython": { "description": "This is Resource Assignment Jython Component API", "version": "1.0.0", "derived_from": "tosca.nodes.Root" }, + "component-netconf-executor": { + "description": "This is Netconf Transaction Configuration Component API", + "version": "1.0.0", + "capabilities": { + "component-node": { + "type": "tosca.capabilities.Node" + } + }, + "requirements": { + "netconf-connection": { + "capability": "netconf", + "node": "vnf-netconf-device", + "relationship": "tosca.relationships.ConnectsTo" + } + }, + "interfaces": { + "NetconfExecutorComponent": { + "operations": { + "process": { + "inputs": { + "instance-dependencies": { + "description": "Instance Names to Inject to Jython Script.", + "required": true, + "type": "list", + "entry_schema": { + "type": "string" + } + } + }, + "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.Jython" + }, "component-resource-assignment": { "description": "This is Resource Assignment Component API", "version": "1.0.0", @@ -131,6 +188,47 @@ } }, "derived_from": "tosca.nodes.component.Jython" + }, + "vnf-netconf-device": { + "description": "This is VNF Device with Netconf Capability", + "version": "1.0.0", + "capabilities": { + "netconf": { + "type": "tosca.capabilities.Netconf", + "properties": { + "login-key": { + "required": true, + "type": "string", + "default": "sdnc" + }, + "login-account": { + "required": true, + "type": "string", + "default": "sdnc-tacacs" + }, + "source": { + "required": true, + "type": "string", + "default": "npm" + }, + "target-ip-address": { + "required": true, + "type": "string" + }, + "port-number": { + "required": true, + "type": "integer", + "default": 830 + }, + "connection-time-out": { + "required": false, + "type": "integer", + "default": 30 + } + } + } + }, + "derived_from": "tosca.nodes.Vnf" } } }
\ No newline at end of file diff --git a/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/relationship_types.json b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/relationship_types.json new file mode 100644 index 00000000..87d2dc58 --- /dev/null +++ b/components/model-catalog/blueprint-model/starter-blueprint/baseconfiguration/Definitions/relationship_types.json @@ -0,0 +1,9 @@ +{ + "relationship_types": { + "tosca.relationships.ConnectsTo": { + "description": "Relationship tosca.relationships.ConnectsTo", + "version": "1.0.0", + "derived_from": "tosca.relationships.Root" + } + } +}
\ No newline at end of file diff --git a/components/model-catalog/definition-type/starter-type/node_type/component-netconf-executor.json b/components/model-catalog/definition-type/starter-type/node_type/component-netconf-executor.json index 7e1d8134..b8ac762e 100644 --- a/components/model-catalog/definition-type/starter-type/node_type/component-netconf-executor.json +++ b/components/model-catalog/definition-type/starter-type/node_type/component-netconf-executor.json @@ -18,45 +18,13 @@ "operations": {
"process": {
"inputs": {
- "request-id": {
- "description": "Request Id used to store the generated configuration, in the database along with the template-name",
+ "instance-dependencies": {
"required": true,
- "type": "string"
- },
- "template-name": {
- "description": "Service Template Name",
- "required": true,
- "type": "string"
- },
- "template-version": {
- "description": "Service Template Version",
- "required": true,
- "type": "string"
- },
- "action-name": {
- "description": "Action Name to get from Database, Either (message & mask-info ) or ( resource-id & resource-type & action-name & template-name ) should be present. Message will be given higest priority",
- "required": false,
- "type": "string"
- },
- "resource-type": {
- "description": "Resource Type to get from Database, Either (message & mask-info ) or( resource-id & resource-type & action-name & template-name ) should be present. Message will be given higest priority",
- "required": false,
- "type": "string"
- },
- "resource-id": {
- "description": "Resource Id to get from Database, Either (message & mask-info ) or ( resource-id & resource-type & action-name & template-name ) should be present. Message will be given higest priority",
- "required": false,
- "type": "string"
- },
- "reservation-id": {
- "description": "Reservation Id used to send to NPM",
- "required": false,
- "type": "string"
- },
- "execution-script": {
- "description": "Python Script to Execute for this Component action, It should refer any one of Prython Artifact Definition for this Node Template.",
- "required": true,
- "type": "string"
+ "description": "Instance Names to Inject to Jython Script.",
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
}
},
"outputs": {
diff --git a/components/model-catalog/definition-type/starter-type/node_type/source-capability.json b/components/model-catalog/definition-type/starter-type/node_type/source-capability.json new file mode 100644 index 00000000..241b6995 --- /dev/null +++ b/components/model-catalog/definition-type/starter-type/node_type/source-capability.json @@ -0,0 +1,49 @@ +{ + "description": "This is Component Resource Source Node Type", + "version": "1.0.0", + "properties": { + "type": { + "required": true, + "type": "string", + "default": "JAVA-COMPONENT", + "constraints": [ + { + "valid_values": [ + "JAVA-COMPONENT", + "JYTHON-COMPONENT" + ] + } + ] + }, + "instance-name": { + "description": "Capability component instance reference name.", + "required": true, + "type": "string" + }, + "input-key-mapping": { + "description": "Context name to input parameters name mapping.", + "required": false, + "type": "map", + "entry_schema": { + "type": "string" + } + }, + "output-key-mapping": { + "description": "Context name to output parameters name mapping.", + "required": false, + "type": "map", + "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" +}
\ No newline at end of file diff --git a/components/model-catalog/definition-type/starter-type/node_type/vnf-netconf-device.json b/components/model-catalog/definition-type/starter-type/node_type/vnf-netconf-device.json index 246f1770..c6f512df 100644 --- a/components/model-catalog/definition-type/starter-type/node_type/vnf-netconf-device.json +++ b/components/model-catalog/definition-type/starter-type/node_type/vnf-netconf-device.json @@ -38,5 +38,4 @@ }
},
"derived_from": "tosca.nodes.Vnf"
-
}
diff --git a/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.AttachesTo.json b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.AttachesTo.json new file mode 100644 index 00000000..bcfb65ee --- /dev/null +++ b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.AttachesTo.json @@ -0,0 +1,5 @@ +{ + "description": "Relationship tosca.relationships.AttachesTo", + "version": "1.0.0", + "derived_from": "tosca.relationships.Root" +}
\ No newline at end of file diff --git a/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.ConnectsTo.json b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.ConnectsTo.json new file mode 100644 index 00000000..4abb9483 --- /dev/null +++ b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.ConnectsTo.json @@ -0,0 +1,5 @@ +{ + "description": "Relationship tosca.relationships.ConnectsTo", + "version": "1.0.0", + "derived_from": "tosca.relationships.Root" +}
\ No newline at end of file diff --git a/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.DependsOn.json b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.DependsOn.json new file mode 100644 index 00000000..89987ff5 --- /dev/null +++ b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.DependsOn.json @@ -0,0 +1,5 @@ +{ + "description": "Relationship tosca.relationships.DependsOn", + "version": "1.0.0", + "derived_from": "tosca.relationships.Root" +}
\ No newline at end of file diff --git a/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.HostedOn.json b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.HostedOn.json new file mode 100644 index 00000000..a8337cd1 --- /dev/null +++ b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.HostedOn.json @@ -0,0 +1,5 @@ +{ + "description": "Relationship tosca.relationships.HostedOn", + "version": "1.0.0", + "derived_from": "tosca.relationships.Root" +}
\ No newline at end of file diff --git a/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.RoutesTo.json b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.RoutesTo.json new file mode 100644 index 00000000..1da73cde --- /dev/null +++ b/components/model-catalog/definition-type/starter-type/relationship_type/tosca.relationships.RoutesTo.json @@ -0,0 +1,5 @@ +{ + "description": "Relationship tosca.relationships.RoutesTo", + "version": "1.0.0", + "derived_from": "tosca.relationships.Root" +}
\ No newline at end of file |