From 9e1736c88644486172b7bca7f22914d22a390bed Mon Sep 17 00:00:00 2001 From: "Muthuramalingam, Brinda Santh(bs2796)" Date: Fri, 7 Sep 2018 22:43:20 +0000 Subject: Controller Blueprints Microservice Modify get_input, get_attribute, get_property and get_artifact functions string implementation to Json Implementation. Change-Id: I6d4aadd370dc23127a176964f84fc9bb5e7ab5ee Issue-ID: CCSDK-432 Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) --- .../Definitions/activation-blueprint.json | 4 +-- .../Definitions/sample-nodetype.json | 31 +----------------- .../Definitions/simple-baseconfig.json | 37 ++++++++++------------ .../node_type/component-config-generator.json | 2 +- .../node_type/component-netconf-executor.json | 2 +- .../node_type/component-resource-assignment.json | 2 +- .../core/ConfigModelConstant.kt | 6 ---- .../core/service/BluePrintExpressionService.kt | 37 ++++++++++++---------- .../core/service/BluePrintExpressionServiceTest.kt | 14 ++++++-- .../core/service/BluePrintRuntimeServiceTest.kt | 12 +++---- .../src/test/resources/componentnode/default.json | 6 ++-- .../src/test/resources/properties/convert.json | 4 +-- .../src/test/resources/properties/default.json | 4 +-- 13 files changed, 66 insertions(+), 95 deletions(-) (limited to 'components') diff --git a/components/core/load/blueprints/baseconfiguration/Definitions/activation-blueprint.json b/components/core/load/blueprints/baseconfiguration/Definitions/activation-blueprint.json index 714195f3..9c70d6ea 100644 --- a/components/core/load/blueprints/baseconfiguration/Definitions/activation-blueprint.json +++ b/components/core/load/blueprints/baseconfiguration/Definitions/activation-blueprint.json @@ -40,7 +40,7 @@ "component-node": {} }, "interfaces": { - "org-onap-sdnc-config-assignment-service-ConfigAssignmentNode": { + "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": { "operations": { "process": { "inputs": { @@ -258,7 +258,7 @@ } }, "interfaces": { - "org-onap-sdnc-config-assignment-service-ConfigAssignmentNode": { + "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": { "operations": { "process": { "inputs": { diff --git a/components/core/load/blueprints/simple-baseconfig/Definitions/sample-nodetype.json b/components/core/load/blueprints/simple-baseconfig/Definitions/sample-nodetype.json index 6d469ea8..207fcc41 100644 --- a/components/core/load/blueprints/simple-baseconfig/Definitions/sample-nodetype.json +++ b/components/core/load/blueprints/simple-baseconfig/Definitions/sample-nodetype.json @@ -1,34 +1,5 @@ { "description": "This is Resource Assignment Component API", "version": "1.0.0", - "properties": { - "type": { - "description": "Request Id used to store the generated configuration, in the database along with the template-name", - "required": false, - "type": "string" - } - }, - "interfaces": { - "DefaultOperation": { - "operations": { - "validate": { - "inputs": { - "action-name": { - "description": "validate for action", - "required": false, - "type": "string" - } - } - } - } - } - }, - "artifacts" :{ - "component-jar": { - "description": "Component Jar", - "type": "artifact-component-jar", - "file": "Component/basecomponent.jar" - } - }, - "derived_from": "tosca.nodes.Root" + "derived_from": "tosca.nodes.Root" } \ No newline at end of file diff --git a/components/core/load/blueprints/simple-baseconfig/Definitions/simple-baseconfig.json b/components/core/load/blueprints/simple-baseconfig/Definitions/simple-baseconfig.json index 65028ace..cb091da0 100644 --- a/components/core/load/blueprints/simple-baseconfig/Definitions/simple-baseconfig.json +++ b/components/core/load/blueprints/simple-baseconfig/Definitions/simple-baseconfig.json @@ -38,7 +38,7 @@ "login-key": "sdnc", "login-account": "sndc-local", "source": "local", - "target-ip-address": "{\"get_attribute\":\"lo0-local-ipv4-address\"}", + "target-ip-address": { "get_attribute": ["SELF", "lo0-local-ipv4-address"]}, "port-number": 22, "connection-time-out": 30 } @@ -58,21 +58,21 @@ } }, "interfaces": { - "org-openecomp-sdnc-netconf-adaptor-service-NetconfExecutorNode": { + "org-onap-ccsdk-netconf-adaptor-service-NetconfExecutorNode": { "operations": { "process": { "inputs": { - "action-name": "{ \"get_input\" : \"action-name\" }", - "service-template-name": "{ \"get_attribute\" : \"template_name\" }", - "service-template-version": "{ \"get_attribute\" : \"service-template-version\" }", + "action-name": { "get_input" : "action-name" }, + "service-template-name": { "get_input" : "template_name" }, + "service-template-version": { "get_input" : "service-template-version" }, "resource-type": "vnf-type", - "request-id": "{ \"get_input\" : \"request-id\" }", - "resource-id": "{ \"get_input\" : \"hostname\" }", + "request-id": { "get_input" : "request-id" }, + "resource-id": { "get_input" : "hostname" }, "execution-script": "execution-script" }, "outputs": { - "response-data": "{ \"get_attribute\" : \"netconf-executor-baseconfig.response-data\" }", - "status": "{ \"get_attribute\" : \"netconf-executor-baseconfig.status\" }" + "response-data": { "get_input" : ["SELF", "netconf-executor-baseconfig.response-data"] }, + "status": { "get_input" : ["SELF", "netconf-executor-baseconfig.status"] } }, "implementation" : { "primary" : "file://netconf_adaptor/DefaultBaseLicenceConfig.py" @@ -88,7 +88,7 @@ "component-node": {} }, "interfaces": { - "org-openecomp-sdnc-config-assignment-service-ConfigAssignmentNode": { + "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": { "operations": { "process": { "inputs": { @@ -96,12 +96,12 @@ "base-config-template", "licence-template" ], - "action-name": "{ \"get_input\" : \"action-name\" }", - "service-template-name": "{ \"get_attribute\" : \"template_name\" }", - "service-template-version": "{ \"get_attribute\" : \"service-template-version\" }", + "action-name": { "get_input" : "action-name" }, + "service-template-name": { "get_input" : "template_name" }, + "service-template-version": { "get_input" : "service-template-version" }, "resource-type": "vnf-type", - "request-id": "{ \"get_input\" : \"request-id\" }", - "resource-id": "{ \"get_input\" : \"hostname\" }" + "request-id": { "get_input" : "request-id" }, + "resource-id": { "get_input" : "hostname" } }, "outputs": { "resource-assignment-params": "success", @@ -127,12 +127,7 @@ } }, "capabilities": { - "dg-node": {}, - "content": { - "properties": { - "type": "json" - } - } + "dg-node": {} }, "interfaces": { "CONFIG": { diff --git a/components/core/load/model_type/node_type/component-config-generator.json b/components/core/load/model_type/node_type/component-config-generator.json index 764f9e89..9e86b8ae 100644 --- a/components/core/load/model_type/node_type/component-config-generator.json +++ b/components/core/load/model_type/node_type/component-config-generator.json @@ -7,7 +7,7 @@ } }, "interfaces": { - "org-openecomp-sdnc-config-generator-service-ConfigGeneratorNode": { + "org-onap-ccsdk-config-generator-service-ConfigGeneratorNode": { "operations": { "process": { "inputs": { diff --git a/components/core/load/model_type/node_type/component-netconf-executor.json b/components/core/load/model_type/node_type/component-netconf-executor.json index aed667aa..7dcff583 100644 --- a/components/core/load/model_type/node_type/component-netconf-executor.json +++ b/components/core/load/model_type/node_type/component-netconf-executor.json @@ -14,7 +14,7 @@ } }, "interfaces": { - "org-openecomp-sdnc-netconf-adaptor-service-NetconfExecutorNode": { + "org-onap-ccsdk-netconf-adaptor-service-NetconfExecutorNode": { "operations": { "process": { "inputs": { diff --git a/components/core/load/model_type/node_type/component-resource-assignment.json b/components/core/load/model_type/node_type/component-resource-assignment.json index 03f3c284..1389bc32 100644 --- a/components/core/load/model_type/node_type/component-resource-assignment.json +++ b/components/core/load/model_type/node_type/component-resource-assignment.json @@ -7,7 +7,7 @@ } }, "interfaces": { - "org-onap-sdnc-config-assignment-service-ConfigAssignmentNode": { + "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": { "operations": { "process": { "inputs": { diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/ConfigModelConstant.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/ConfigModelConstant.kt index 84592204..8bfa2db7 100644 --- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/ConfigModelConstant.kt +++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/ConfigModelConstant.kt @@ -31,12 +31,6 @@ object ConfigModelConstant { const val MODEL_TYPE_NODE_ARTIFACT = "tosca.nodes.Artifact" - const val MODEL_TYPE_CAPABILITY_NETCONF = "tosca.capability.Netconf" - const val MODEL_TYPE_CAPABILITY_SSH = "tosca.capability.Ssh" - const val MODEL_TYPE_CAPABILITY_SFTP = "tosca.capability.Sftp" - const val MODEL_TYPE_CAPABILITY_CHEF = "tosca.capability.Chef" - const val MODEL_TYPE_CAPABILITY_ANSIBLEF = "tosca.capability.Ansible" - const val CAPABILITY_PROPERTY_MAPPING = "mapping" const val PROPERTY_RECIPE_NAMES = "action-names" 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 19d515e0..82e232d0 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 @@ -25,6 +25,7 @@ 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 + /** * * @@ -115,32 +116,34 @@ object BluePrintExpressionService { @JvmStatic fun populateAttributeExpression(jsonNode: JsonNode): AttributeExpression { val arrayNode: ArrayNode = jsonNode.first() as ArrayNode - check(arrayNode.size() >= 3) { + check(arrayNode.size() >= 2) { throw BluePrintException(String.format("missing attribute expression, " + "it should be [ , , ," + " , ..., ] , but present {}", jsonNode)) } var reqOrCapEntityName: String? = null - var propertyName = "" - var subProperty: String? = null - if (arrayNode.size() == 2) { - propertyName = arrayNode[1].textValue() - } else if (arrayNode.size() == 3) { - reqOrCapEntityName = arrayNode[1].textValue() - propertyName = arrayNode[2].textValue() - } else if (arrayNode.size() > 3) { - reqOrCapEntityName = arrayNode[1].textValue() - propertyName = arrayNode[2].textValue() - val propertyPaths: List = arrayNode.filterIndexed { index, obj -> - index >= 3 - }.map { it.textValue() } - subProperty = propertyPaths.joinToString("/") + var attributeName = "" + var subAttributeName: String? = null + when { + arrayNode.size() == 2 -> attributeName = arrayNode[1].textValue() + arrayNode.size() == 3 -> { + reqOrCapEntityName = arrayNode[1].textValue() + attributeName = arrayNode[2].textValue() + } + arrayNode.size() > 3 -> { + reqOrCapEntityName = arrayNode[1].textValue() + attributeName = arrayNode[2].textValue() + val propertyPaths: List = arrayNode.filterIndexed { index, _ -> + index >= 3 + }.map { it.textValue() } + subAttributeName = propertyPaths.joinToString("/") + } } return AttributeExpression(modelableEntityName = arrayNode[0].asText(), reqOrCapEntityName = reqOrCapEntityName, - attributeName = propertyName, - subAttributeName = subProperty + attributeName = attributeName, + subAttributeName = subAttributeName ) } diff --git a/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt b/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt index 911a891a..a0214023 100644 --- a/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt +++ b/components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintExpressionServiceTest.kt @@ -60,14 +60,22 @@ class BluePrintExpressionServiceTest { @Test fun testAttributeExpression() { - val node : JsonNode = jacksonObjectMapper().readTree("{ \"get_attribute\" : [\"SELF\", \"\",\"attribute-name\", \"resource\", \"name\"] }") + val node : JsonNode = jacksonObjectMapper().readTree("{ \"get_attribute\" : [\"SELF\", \"resource\"] }") val expressionData : ExpressionData = BluePrintExpressionService.getExpressionData(node) assertNotNull(expressionData, " Failed to populate expression data") assertEquals(expressionData.isExpression, true, "Failed to identify as expression") assertNotNull(expressionData.attributeExpression, " Failed to populate attribute expression data") assertEquals("SELF", expressionData.attributeExpression?.modelableEntityName, " Failed to get expected modelableEntityName") - assertEquals("attribute-name", expressionData.attributeExpression?.attributeName, " Failed to get expected attributeName") - assertEquals("resource/name",expressionData.attributeExpression?.subAttributeName, " Failed to populate nested subAttributeName expression data") + assertEquals("resource", expressionData.attributeExpression?.attributeName, " Failed to get expected attributeName") + + val node1 : JsonNode = jacksonObjectMapper().readTree("{ \"get_attribute\" : [\"SELF\", \"\",\"attribute-name\", \"resource\", \"name\"] }") + val expressionData1 : ExpressionData = BluePrintExpressionService.getExpressionData(node1) + assertNotNull(expressionData1, " Failed to populate expression data") + assertEquals(expressionData1.isExpression, true, "Failed to identify as expression") + assertNotNull(expressionData1.attributeExpression, " Failed to populate attribute expression data") + assertEquals("SELF", expressionData1.attributeExpression?.modelableEntityName, " Failed to get expected modelableEntityName") + assertEquals("attribute-name", expressionData1.attributeExpression?.attributeName, " Failed to get expected attributeName") + assertEquals("resource/name",expressionData1.attributeExpression?.subAttributeName, " Failed to populate nested subAttributeName expression data") } 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 919dc564..277ec3ac 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 @@ -87,7 +87,7 @@ class BluePrintRuntimeServiceTest { log.info("Prepared Context {}", context) val inContext: MutableMap = bluePrintRuntimeService.resolveNodeTemplateInterfaceOperationInputs("resource-assignment-ra-component", - "org-onap-sdnc-config-assignment-service-ConfigAssignmentNode", "process") + "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode", "process") log.info("In Context {}", inContext) @@ -110,18 +110,18 @@ class BluePrintRuntimeServiceTest { val componentContext: MutableMap = hashMapOf() val successValue: JsonNode = jsonNodeFromObject("Success") - componentContext["resource-assignment-ra-component.org-onap-sdnc-config-assignment-service-ConfigAssignmentNode.process.status"] = successValue - componentContext["resource-assignment-ra-component.org-onap-sdnc-config-assignment-service-ConfigAssignmentNode.process.resource-assignment-params"] = null + componentContext["resource-assignment-ra-component.org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode.process.status"] = successValue + componentContext["resource-assignment-ra-component.org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode.process.resource-assignment-params"] = null bluePrintRuntimeService.resolveNodeTemplateInterfaceOperationOutputs("resource-assignment-ra-component", - "org-onap-sdnc-config-assignment-service-ConfigAssignmentNode", "process", componentContext) + "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode", "process", componentContext) assertEquals(NullNode.instance, - context.get("node_templates/resource-assignment-ra-component/interfaces/org-onap-sdnc-config-assignment-service-ConfigAssignmentNode/operations/process/properties/resource-assignment-params"), + context.get("node_templates/resource-assignment-ra-component/interfaces/org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode/operations/process/properties/resource-assignment-params"), "Failed to get operation property resource-assignment-params") assertEquals(successValue, - context.get("node_templates/resource-assignment-ra-component/interfaces/org-onap-sdnc-config-assignment-service-ConfigAssignmentNode/operations/process/properties/status"), + context.get("node_templates/resource-assignment-ra-component/interfaces/org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode/operations/process/properties/status"), "Failed to get operation property status") diff --git a/components/core/src/test/resources/componentnode/default.json b/components/core/src/test/resources/componentnode/default.json index b7265fcd..184b5988 100644 --- a/components/core/src/test/resources/componentnode/default.json +++ b/components/core/src/test/resources/componentnode/default.json @@ -41,13 +41,13 @@ "generate-configuration": { "type": "mock-component-generateConfig", "interfaces": { - "org-openecomp-sdnc-config-params-service-MockComponentNode": { + "org-onap-ccsdk-config-params-service-MockComponentNode": { "operations": { "process": { "inputs": { "entity-type": "vnf-type", "template-content": "sample-template", - "entity-id": "{ \"get_input\" : \"vnf-id\" }" + "entity-id": { "get_input" : "vnf-id" } }, "outputs": { "mergedData": "merged Data", @@ -63,7 +63,7 @@ "node_types": { "mock-component-generateConfig": { "interfaces": { - "org-openecomp-sdnc-config-params-service-MockComponentNode": { + "org-onap-ccsdk-config-params-service-MockComponentNode": { "operations": { "process": { "inputs": { diff --git a/components/core/src/test/resources/properties/convert.json b/components/core/src/test/resources/properties/convert.json index cb7d08e4..af79915f 100644 --- a/components/core/src/test/resources/properties/convert.json +++ b/components/core/src/test/resources/properties/convert.json @@ -19,12 +19,12 @@ "required": true } ], - "pre-data": "{ \"get_attribute\" : \"get-resource-assignment.config-params\" }", + "pre-data": { "get_input" : "get-resource-assignment.config-params" }, "prifix": "get-resource-assignment" }, "outputs": { "resource-assignment-status": "success", - "resource-assignment-params": "{ \"set_value\" : \"get-resource-assignment.config-params\" }" + "resource-assignment-params": "{ \"set_value\" : \"get-resource-assignment.config-params" } } } } diff --git a/components/core/src/test/resources/properties/default.json b/components/core/src/test/resources/properties/default.json index 0ac97f90..ec416dc9 100644 --- a/components/core/src/test/resources/properties/default.json +++ b/components/core/src/test/resources/properties/default.json @@ -1,5 +1,5 @@ { - "default": "{ \"get_input\" : \"loopback-default\" }", + "default": { "get_input" : "loopback-default" }, "domain": "ethernet", "criteria": [ { @@ -8,7 +8,7 @@ "nodeString": "layer3-service-list[].service-data.l3sdn-vnf-fields.vnf-name" }, { - "value": "{ \"get_input\" : \"host-ip-address\" }", + "value": { "get_input" : "host-ip-address" }, "type": "simple", "nodeString": "layer3-service-list[].service-data.l3sdn-vnf-fields.vnf-name" } -- cgit 1.2.3-korg