Add sample test dsl type cba 99/92599/3
authorBrinda Santh <brindasanth@in.ibm.com>
Fri, 2 Aug 2019 18:50:53 +0000 (14:50 -0400)
committerDan Timoney <dtimoney@att.com>
Fri, 9 Aug 2019 20:04:46 +0000 (20:04 +0000)
Change-Id: I277588b4f38f8c99c33f3a1f65e8ca7c3919940d
Issue-ID: CCSDK-1580
Signed-off-by: Brinda Santh <brindasanth@in.ibm.com>
components/model-catalog/blueprint-model/test-blueprint/resource-audit/Distribution/cba_zip.xml [new file with mode: 0755]
components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/DeviceResourceDefinitions.kt [new file with mode: 0644]
components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/ResourceAuditDefinitions.kt [new file with mode: 0644]
components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/functions/ResourceAuditFunctions.kt [new file with mode: 0644]
components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/processor/RAProcessor.kt [new file with mode: 0644]
components/model-catalog/blueprint-model/test-blueprint/resource-audit/TOSCA-Metadata/TOSCA.meta [new file with mode: 0644]
components/model-catalog/blueprint-model/test-blueprint/resource-audit/pom.xml [new file with mode: 0644]

diff --git a/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Distribution/cba_zip.xml b/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Distribution/cba_zip.xml
new file mode 100755 (executable)
index 0000000..c6c3bde
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~  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.
+  -->
+
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
+    <!-- create a tar.gz file containing the projects dependencies -->
+    <id>cba</id>
+    <formats>
+        <format>zip</format>
+    </formats>
+    <includeBaseDirectory>false</includeBaseDirectory>
+    <fileSets>
+        <fileSet>
+            <directory>${project.basedir}</directory>
+            <includes>
+                <include>Definitions/**</include>
+                <include>Distribution/**</include>
+                <include>Environments/**</include>
+                <include>Plans/**</include>
+                <include>Others/**</include>
+                <include>Scripts/**</include>
+                <include>Templates/**</include>
+                <include>TOSCA-Metadata/**</include>
+                <include>pom.xml</include>
+            </includes>
+        </fileSet>
+    </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/DeviceResourceDefinitions.kt b/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/DeviceResourceDefinitions.kt
new file mode 100644 (file)
index 0000000..a0ca167
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ *  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.resource.audit
+
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.resourceDefinitions
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+
+const val SOURCE_SDNO = "SDN-O"
+const val SOURCE_SDNC = "SDNC"
+const val SOURCE_AAI = "AAI"
+
+val deviceResourceDefinitions = BluePrintTypes.resourceDefinitions {
+    // Port Speed Definitions
+    resourceDefinition(name = "port-speed", description = "Port Speed") {
+        property(type = "string", required = true)
+        sources {
+            sourceCapability(id = SOURCE_SDNO, description = "SDN-O Source") {
+                definedProperties {
+                    type(BluePrintConstants.SCRIPT_KOTLIN)
+                    scriptClassReference("cba.resource.audit.processor.PortSpeedRAProcessor")
+                    keyDependencies(arrayListOf("device-id"))
+                }
+            }
+            sourceDb(id = SOURCE_SDNC, description = "SDNC Controller") {
+                definedProperties {
+                    endpointSelector("processor-db")
+                    query("SELECT PORT_SPEED FROM XXXX WHERE DEVICE_ID = :device_id")
+                    inputKeyMapping {
+                        map("device_id", "\$device-id")
+                    }
+                    keyDependencies(arrayListOf("device-id"))
+                }
+            }
+            sourceRest(id = SOURCE_AAI, description = "AAI Source") {
+                definedProperties {
+                    endpointSelector("aai")
+                    urlPath("/vnf/\$device_id")
+                    path(".\$port-speed")
+                    inputKeyMapping {
+                        map("device_id", "\$device-id")
+                    }
+                    keyDependencies(arrayListOf("device-id"))
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/ResourceAuditDefinitions.kt b/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/ResourceAuditDefinitions.kt
new file mode 100644 (file)
index 0000000..61783d6
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ *  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.resource.audit
+
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentScriptExecutor
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.nodeTemplateComponentScriptExecutor
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.nodeTypeComponentScriptExecutor
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.data.ServiceTemplate
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.getAttribute
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.getNodeTemplateAttribute
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.nodeTypeComponent
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.serviceTemplate
+import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.AbstractBluePrintDefinitions
+
+class ResourceAuditDefinitions : AbstractBluePrintDefinitions() {
+    override fun serviceTemplate(): ServiceTemplate {
+        return defaultServiceTemplate()
+    }
+}
+
+fun ResourceAuditDefinitions.defaultServiceTemplate() =
+        serviceTemplate(name = "resource-audit",
+                version = "1.0.0",
+                author = "Brinda Santh Muthuramalingam",
+                tags = "brinda, tosca") {
+
+            topologyTemplate {
+
+                workflow(id = "config-collect", description = "Collect the configuration for Device") {
+                    inputs {
+                        property(id = "device-id", type = BluePrintConstants.DATA_TYPE_STRING, required = true, description = "")
+                        property(id = "sources", type = BluePrintConstants.DATA_TYPE_LIST, required = true, description = "") {
+                            entrySchema(BluePrintConstants.DATA_TYPE_STRING)
+                        }
+                    }
+                    outputs {
+                        property(id = "response-data", required = true, type = BluePrintConstants.DATA_TYPE_STRING, description = "") {
+                            value(getNodeTemplateAttribute(nodeTemplateId = "config-collector",
+                                    attributeId = ComponentScriptExecutor.ATTRIBUTE_RESPONSE_DATA))
+                        }
+                        property(id = "status", required = true, type = BluePrintConstants.DATA_TYPE_STRING, description = "") {
+                            value(BluePrintConstants.STATUS_SUCCESS)
+                        }
+                    }
+                    step(id = "config-collector", target = "config-collector", description = "Collect the Configuration")
+                }
+
+                val configCollectorComponent = BluePrintTypes.nodeTemplateComponentScriptExecutor(
+                        id = "config-collector", description = "Config collector component") {
+
+                    definedOperation(description = "Config Collector Operation") {
+                        inputs {
+                            type(BluePrintConstants.SCRIPT_KOTLIN)
+                            scriptClassReference("cba.resource.audit.functions.ConfigCollector")
+                        }
+                        outputs {
+                            status(getAttribute(ComponentScriptExecutor.ATTRIBUTE_STATUS))
+                            responseData(getAttribute(ComponentScriptExecutor.ATTRIBUTE_RESPONSE_DATA))
+                        }
+                    }
+                }
+                nodeTemplate(configCollectorComponent)
+            }
+
+            nodeType(BluePrintTypes.nodeTypeComponent())
+            nodeType(BluePrintTypes.nodeTypeComponentScriptExecutor())
+        }
\ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/functions/ResourceAuditFunctions.kt b/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/functions/ResourceAuditFunctions.kt
new file mode 100644 (file)
index 0000000..49d0c73
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ *  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.resource.audit.functions
+
+import cba.resource.audit.deviceResourceDefinitions
+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.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.onap.ccsdk.cds.controllerblueprints.core.jsonAsJsonType
+import org.onap.ccsdk.cds.controllerblueprints.core.logger
+
+class ConfigCollector : AbstractScriptComponentFunction() {
+
+    val log = logger(ConfigCollector::class)
+
+    override suspend fun processNB(executionRequest: ExecutionServiceInput) {
+
+        val deviceId = bluePrintRuntimeService.getInputValue("device-id").textValue()
+        val sources = bluePrintRuntimeService.getInputValue("sources")
+
+        log.info("Processing Config Collection for device($deviceId), for sources($sources)")
+        deviceResourceDefinitions.forEach { name, resourceDefinition ->
+            log.info("collecting for the property : $name")
+            resourceDefinition.sources.forEach { sourceName, source ->
+                log.info("collecting for the Source : $sourceName")
+            }
+        }
+
+        // Set the Attributes
+        setAttribute(ComponentScriptExecutor.ATTRIBUTE_STATUS, BluePrintConstants.STATUS_SUCCESS.asJsonPrimitive())
+        setAttribute(ComponentScriptExecutor.ATTRIBUTE_RESPONSE_DATA, """{
+                      "port-speed" : "10MBS"
+        }""".trimIndent().jsonAsJsonType())
+
+    }
+
+    override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
+
+    }
+}
\ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/processor/RAProcessor.kt b/components/model-catalog/blueprint-model/test-blueprint/resource-audit/Scripts/kotlin/cba/resource/audit/processor/RAProcessor.kt
new file mode 100644 (file)
index 0000000..660f591
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ *  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.resource.audit.processor
+
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor.ResourceAssignmentProcessor
+import org.onap.ccsdk.cds.controllerblueprints.core.logger
+import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment
+
+class PortSpeedRAProcessor : ResourceAssignmentProcessor() {
+    val log = logger(PortSpeedRAProcessor::class)
+    override fun getName(): String {
+        return "PortSpeedRAProcessor"
+    }
+
+    override suspend fun processNB(executionRequest: ResourceAssignment) {
+        log.info("Executing Resource PortSpeedRAProcessor")
+    }
+
+    override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ResourceAssignment) {
+        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+    }
+}
\ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/test-blueprint/resource-audit/TOSCA-Metadata/TOSCA.meta b/components/model-catalog/blueprint-model/test-blueprint/resource-audit/TOSCA-Metadata/TOSCA.meta
new file mode 100644 (file)
index 0000000..d2f533c
--- /dev/null
@@ -0,0 +1,7 @@
+TOSCA-Meta-File-Version: 1.0.0
+CSAR-Version: 1.0
+Created-By: Brinda Santh
+Entry-Definitions: cba.resource.audit.ResourceAuditDefinitions.kt
+Template-Name: resource-audit
+Template-Version: 1.0.0
+Template-Tags: resource-audit
\ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/test-blueprint/resource-audit/pom.xml b/components/model-catalog/blueprint-model/test-blueprint/resource-audit/pom.xml
new file mode 100644 (file)
index 0000000..6ec41a6
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~  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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.ccsdk.cds.blueprintsprocessor</groupId>
+        <artifactId>cba-parent</artifactId>
+        <version>0.5.2-SNAPSHOT</version>
+    </parent>
+    <groupId>org.onap.ccsdk.cds.components.cba</groupId>
+    <artifactId>resource-audit</artifactId>
+    <name>CBA Resource Audit</name>
+    <description>CBA Resource Audit</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onap.ccsdk.cds.blueprintsprocessor.functions</groupId>
+            <artifactId>resource-resolution</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <id>cba</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <descriptors>
+                                <descriptor>Distribution/cba_zip.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file