diff options
author | Huang Cheng <duke.huangcheng@huawei.com> | 2020-02-04 03:53:15 +0000 |
---|---|---|
committer | Huang Cheng <duke.huangcheng@huawei.com> | 2020-03-06 01:21:14 +0000 |
commit | fdfeef7ae2f543553e2f7a7cf322b6d075599e20 (patch) | |
tree | 9bb5488db6a724c7a70bcf182df8f609456b4ff6 /ms/blueprintsprocessor/functions/nrm-restful | |
parent | c2c379246a6d231e9424308c398a15fcb6618fc3 (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')
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) - } -} |