summaryrefslogtreecommitdiffstats
path: root/ms/blueprintsprocessor/functions/nrm-restful
diff options
context:
space:
mode:
authorHuang Cheng <duke.huangcheng@huawei.com>2020-02-04 03:53:15 +0000
committerHuang Cheng <duke.huangcheng@huawei.com>2020-03-06 01:21:14 +0000
commitfdfeef7ae2f543553e2f7a7cf322b6d075599e20 (patch)
tree9bb5488db6a724c7a70bcf182df8f609456b4ff6 /ms/blueprintsprocessor/functions/nrm-restful
parentc2c379246a6d231e9424308c398a15fcb6618fc3 (diff)
Add the executor and the component function to support 5G NRM CM
The executor and the component function are designed to invoke the 5G NRM CM opertions: createMOI getMOIAttributes modifyMOIAttributes and deleteMOI Issue-ID: CCSDK-2003 Signed-off-by: Huang Cheng <duke.huangcheng@huawei.com> Change-Id: I20d3e97c01f6499e73ab0ec77abbc24775f428b7
Diffstat (limited to 'ms/blueprintsprocessor/functions/nrm-restful')
-rw-r--r--ms/blueprintsprocessor/functions/nrm-restful/pom.xml52
-rw-r--r--ms/blueprintsprocessor/functions/nrm-restful/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/nrm/restful/RestfulNRMServiceClient.kt111
-rw-r--r--ms/blueprintsprocessor/functions/nrm-restful/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nrm/restful/RestfulNRMServiceClientTest.kt150
3 files changed, 0 insertions, 313 deletions
diff --git a/ms/blueprintsprocessor/functions/nrm-restful/pom.xml b/ms/blueprintsprocessor/functions/nrm-restful/pom.xml
deleted file mode 100644
index 337e71e15..000000000
--- a/ms/blueprintsprocessor/functions/nrm-restful/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Copyright © 2017-2018 AT&T Intellectual Property.
- ~
- ~ 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>functions</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- </parent>
-
- <groupId>org.onap.ccsdk.cds.blueprintsprocessor.functions</groupId>
- <artifactId>nrm-restful</artifactId>
- <packaging>jar</packaging>
-
- <name>Blueprints Processor Function - NRM Restful</name>
- <description>Blueprints Processor Function - NRM Restful</description>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.ccsdk.cds.blueprintsprocessor</groupId>
- <artifactId>processor-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>${apache.httpcomponents.client.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- </dependency>
- </dependencies>
-</project>
diff --git a/ms/blueprintsprocessor/functions/nrm-restful/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/nrm/restful/RestfulNRMServiceClient.kt b/ms/blueprintsprocessor/functions/nrm-restful/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/nrm/restful/RestfulNRMServiceClient.kt
deleted file mode 100644
index eb14d255b..000000000
--- a/ms/blueprintsprocessor/functions/nrm-restful/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/nrm/restful/RestfulNRMServiceClient.kt
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright © 2019 Huawei.
- *
- * 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.nrm.restful
-
-import com.fasterxml.jackson.databind.JsonNode
-import com.fasterxml.jackson.databind.ObjectMapper
-import com.fasterxml.jackson.databind.node.ObjectNode
-import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
-import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintWebClientService
-import org.springframework.http.HttpMethod
-import org.onap.ccsdk.cds.controllerblueprints.core.logger
-import java.util.UUID
-import org.springframework.web.util.UriComponentsBuilder
-
-class RestfulNRMServiceClient() {
-
- private val log = logger(RestfulNRMServiceClient::class.java)
-
- fun createMOI(web_client_service: BlueprintWebClientService, idStr: String, managed_object_instance: JsonNode): ObjectNode {
- val classNameStr = managed_object_instance.get("className").toString().replace("\"", "")
- val pathStr = "/ProvisioningMnS/v1500/$classNameStr/$idStr"
- log.info("MOI Path: " + pathStr)
- var request_object_value = JacksonUtils.jsonNode("{}") as ObjectNode
- request_object_value.put("attributes", managed_object_instance.get("data"))
- request_object_value.put("href", "/" + classNameStr + "/" + idStr)
- request_object_value.put("class", classNameStr)
- request_object_value.put("id", idStr)
- var request_object = JacksonUtils.jsonNode("{}") as ObjectNode
- request_object.put("data", request_object_value)
- val requestBodystr = request_object.toString()
- log.info("MOI request body: " + requestBodystr)
- val response = web_client_service.exchangeResource(HttpMethod.PUT.name, pathStr, requestBodystr)
- var response_object = generateResponse(response.status, response.body)
- log.info("MOI response status: " + response.status)
- return response_object
- }
-
- fun getMOIAttributes(web_client_service: BlueprintWebClientService, idStr: String, managed_object_instance: JsonNode): ObjectNode {
- val classNameStr = managed_object_instance.get("className").toString().replace("\"", "")
- var pathStr = "/ProvisioningMnS/v1500/$classNameStr/$idStr"
- pathStr = addQueryParameters(pathStr, "scope", managed_object_instance.get("scope").toString().replace("\"", ""))
- pathStr = addQueryParameters(pathStr, "filter", managed_object_instance.get("filter").toString().replace("\"", ""))
- for (attribute_value in managed_object_instance.get("fields")) {
- pathStr = addQueryParameters(pathStr, "fields", attribute_value.toString().replace("\"", ""))
- }
- log.info("MOI Path: " + pathStr)
- val response = web_client_service.exchangeResource(HttpMethod.GET.name, pathStr, "")
- log.info("MOI response status: " + response.status)
- var response_object = generateResponse(response.status, response.body)
- return response_object
- }
-
- fun modifyMOIAttributes(web_client_service: BlueprintWebClientService, idStr: String, managed_object_instance: JsonNode): ObjectNode {
- val classNameStr = managed_object_instance.get("className").toString().replace("\"", "")
- var pathStr = "/ProvisioningMnS/v1500/$classNameStr/$idStr"
- pathStr = addQueryParameters(pathStr, "scope", managed_object_instance.get("scope").toString().replace("\"", ""))
- pathStr = addQueryParameters(pathStr, "filter", managed_object_instance.get("filter").toString().replace("\"", ""))
- log.info("MOI Path: " + pathStr)
- var request_object = JacksonUtils.jsonNode("{}") as ObjectNode
- request_object.put("data", managed_object_instance.get("data"))
- val requestBodystr = request_object.toString()
- log.info("MOI request body: " + requestBodystr)
- val response = web_client_service.exchangeResource(HttpMethod.PATCH.name, pathStr, requestBodystr)
- log.info("MOI response status: " + response.status)
- var response_object = generateResponse(response.status, response.body)
- return response_object
- }
-
- fun deleteMOI(web_client_service: BlueprintWebClientService, idStr: String, managed_object_instance: JsonNode): ObjectNode {
- val classNameStr = managed_object_instance.get("className").toString().replace("\"", "")
- var pathStr = "/ProvisioningMnS/v1500/$classNameStr/$idStr"
- pathStr = addQueryParameters(pathStr, "scope", managed_object_instance.get("scope").toString().replace("\"", ""))
- pathStr = addQueryParameters(pathStr, "filter", managed_object_instance.get("filter").toString().replace("\"", ""))
- log.info("MOI Path: " + pathStr)
- val response = web_client_service.exchangeResource(HttpMethod.DELETE.name, pathStr, "")
- log.info("MOI response status: " + response.status)
- var response_object = generateResponse(response.status, response.body)
- return response_object
- }
-
- fun generateResponse(status: Int, body: String): ObjectNode {
- var response_object = JacksonUtils.jsonNode("{}") as ObjectNode
- response_object.put("status", status)
- val mapper = ObjectMapper()
- val response_body: JsonNode = mapper.readTree(body)
- response_object.put("body", response_body)
- return response_object
- }
-
- fun generateMOIid(): String {
- return UUID.randomUUID().toString()
- }
-
- fun addQueryParameters(old_uri: String, key: String, value: String): String {
- return UriComponentsBuilder.fromUriString(old_uri).queryParam(key, value).build().toString()
- }
-}
diff --git a/ms/blueprintsprocessor/functions/nrm-restful/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nrm/restful/RestfulNRMServiceClientTest.kt b/ms/blueprintsprocessor/functions/nrm-restful/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nrm/restful/RestfulNRMServiceClientTest.kt
deleted file mode 100644
index 8dcb7975d..000000000
--- a/ms/blueprintsprocessor/functions/nrm-restful/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nrm/restful/RestfulNRMServiceClientTest.kt
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright © 2019 Huawei.
- *
- * 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.nrm.restful
-
-import com.fasterxml.jackson.databind.node.ObjectNode
-import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
-import org.junit.Test
-import org.junit.Ignore
-import org.springframework.beans.factory.annotation.Autowired
-import org.junit.runner.RunWith
-import org.springframework.test.context.junit4.SpringRunner
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.test.context.ContextConfiguration
-import org.onap.ccsdk.cds.blueprintsprocessor.rest.BluePrintRestLibConfiguration
-import org.springframework.test.context.TestPropertySource
-import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BluePrintRestLibPropertyService
-import kotlin.test.assertNotNull
-import kotlin.test.assertEquals
-import org.springframework.web.bind.annotation.RestController
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.PutMapping
-import org.springframework.web.bind.annotation.GetMapping
-import org.springframework.web.bind.annotation.PatchMapping
-import org.springframework.web.bind.annotation.DeleteMapping
-import org.springframework.http.ResponseEntity
-import org.springframework.http.HttpStatus
-
-@RunWith(SpringRunner::class)
-@EnableAutoConfiguration(exclude = [DataSourceAutoConfiguration::class])
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
-@ContextConfiguration(classes = [BluePrintRestLibConfiguration::class, NrmTestController::class])
-@TestPropertySource(properties = [
- "blueprintsprocessor.restclient.nrm.type=basic-auth",
- "blueprintsprocessor.restclient.nrm.url=http://127.0.0.1:8080",
- "blueprintsprocessor.restclient.nrm.username=admin",
- "blueprintsprocessor.restclient.nrm.password=admin"
-])
-
-@Ignore
-class RestfulNRMServiceClientTest {
-
- @Autowired
- lateinit var restfulNRMServiceClient: RestfulNRMServiceClient
- lateinit var bluePrintRestLibPropertyService: BluePrintRestLibPropertyService
-
- @Test
- fun testCreateMOI() {
- val restClientService = bluePrintRestLibPropertyService.blueprintWebClientService("nrm")
- val idStr = restfulNRMServiceClient.generateMOIid()
- var test_moi_data = JacksonUtils.jsonNode("{}") as ObjectNode
- test_moi_data.put("className", "TestMangedObjectInstance")
- var test_attributes_data = JacksonUtils.jsonNode("{}") as ObjectNode
- test_attributes_data.put("test_attribute_key", "test_attribute_value")
- test_moi_data.put("data", test_attributes_data)
- val response = restfulNRMServiceClient.createMOI(restClientService, idStr, test_moi_data)
- assertNotNull(response, "failed to get createMOI response")
- assertEquals("Create MOI object successfully", response.get("body").get("data").toString(), "failed to get createMOI response")
- }
-
- @Test
- fun testGetMOIAttributes() {
- val restClientService = bluePrintRestLibPropertyService.blueprintWebClientService("nrm")
- val idStr = restfulNRMServiceClient.generateMOIid()
- var test_moi_data = JacksonUtils.jsonNode("{}") as ObjectNode
- test_moi_data.put("className", "TestMangedObjectInstance")
- test_moi_data.put("scope", "BASE_ONLY")
- test_moi_data.put("filter", "TestMangedObjectInstance")
- test_moi_data.put("fields", "test_attribute_key")
- val response = restfulNRMServiceClient.getMOIAttributes(restClientService, idStr, test_moi_data)
- assertNotNull(response, "failed to get getMOIAttributes response")
- assertEquals("Get MOI object attributes successfully", response.get("body").get("data").toString(), "failed to get getMOIAttributes response")
- }
-
- @Test
- fun testModifyMOIAttributes() {
- val restClientService = bluePrintRestLibPropertyService.blueprintWebClientService("nrm")
- val idStr = restfulNRMServiceClient.generateMOIid()
- var test_moi_data = JacksonUtils.jsonNode("{}") as ObjectNode
- test_moi_data.put("className", "TestMangedObjectInstance")
- test_moi_data.put("scope", "BASE_ONLY")
- test_moi_data.put("filter", "TestMangedObjectInstance")
- var test_attributes_data = JacksonUtils.jsonNode("{}") as ObjectNode
- test_attributes_data.put("test_attribute_key", "modified_attribute_value")
- test_moi_data.put("data", test_attributes_data)
- val response = restfulNRMServiceClient.modifyMOIAttributes(restClientService, idStr, test_moi_data)
- assertNotNull(response, "failed to get modifyMOIAttributes response")
- assertEquals("Modify MOI object attributes successfully", response.get("body").get("data").toString(), "failed to get modifyMOIAttributes response")
- }
-
- @Test
- fun testDeleteMOI() {
- val restClientService = bluePrintRestLibPropertyService.blueprintWebClientService("nrm")
- val idStr = restfulNRMServiceClient.generateMOIid()
- var test_moi_data = JacksonUtils.jsonNode("{}") as ObjectNode
- test_moi_data.put("className", "TestMangedObjectInstance")
- test_moi_data.put("scope", "BASE_ONLY")
- test_moi_data.put("filter", "TestMangedObjectInstance")
- val response = restfulNRMServiceClient.deleteMOI(restClientService, idStr, test_moi_data)
- assertNotNull(response, "failed to get delete response")
- assertEquals("Delete MOI object attributes successfully", response.get("body").get("data").toString(), "failed to get delete response")
- }
-}
-
-/**
- * Sample controller code for testing the above four functions.
- */
-@RestController
-@RequestMapping("/ProvisioningMnS/v1500")
-open class NrmTestController {
-
- @PutMapping("/TestMangedObjectInstance")
- fun putMOI(): ResponseEntity<Any> {
- var a = "{\n" + "\"data\" : \"Create MOI object successfully" + "}"
- return ResponseEntity(a, HttpStatus.OK)
- }
-
- @GetMapping("/TestMangedObjectInstance")
- fun getMOI(): ResponseEntity<Any> {
- var a = "{\n" + "\"data\" : \"Get MOI object attributes successfully" + "}"
- return ResponseEntity(a, HttpStatus.OK)
- }
-
- @PatchMapping("/TestMangedObjectInstance")
- fun patchMOI(): ResponseEntity<Any> {
- var a = "{\n" + "\"data\" : \"Modify MOI object attributes successfully" + "}"
- return ResponseEntity(a, HttpStatus.OK)
- }
-
- @DeleteMapping("/TestMangedObjectInstance")
- fun deleteMOI(): ResponseEntity<Any> {
- var a = "{\n" + "\"data\" : \"Delete MOI object attributes successfully" + "}"
- return ResponseEntity(a, HttpStatus.OK)
- }
-}