diff options
author | waqas.ikram <waqas.ikram@est.tech> | 2020-08-14 13:01:59 +0100 |
---|---|---|
committer | waqas.ikram <waqas.ikram@est.tech> | 2020-08-14 15:38:26 +0100 |
commit | 5cb70ec9f0d5f143f9a6c0a300c7f959731172cc (patch) | |
tree | 8e0bc043a3e70e453fa26125c412d6ad77edf3ad /so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main | |
parent | 60557d06a87ef0b96fba16c10384e8f7e23ca01a (diff) |
Adding support for SOL005 NBI (SO-3155)
and creating docker image (SO-3156)
Change-Id: Ic1bc83d260c87c112dda66fedf52d5fe098262b3
Issue-ID: SO-3155
Signed-off-by: waqas.ikram <waqas.ikram@est.tech>
Diffstat (limited to 'so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main')
3 files changed, 229 insertions, 0 deletions
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/Constants.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/Constants.java new file mode 100644 index 0000000000..97ad1743bc --- /dev/null +++ b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/Constants.java @@ -0,0 +1,39 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.etsi.nfvo.ns.lcm; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class Constants { + + public static final String SERVICE_NAME = "so-etsi-nfvo-ns-lcm"; + public static final String SERVICE_VERSION = "v1"; + public static final String BASE_URL = "/so/" + SERVICE_NAME + "/" + SERVICE_VERSION + "/api"; + public static final String NS_LIFE_CYCLE_MANAGEMENT_BASE_URL = BASE_URL + "/nslcm/v1"; + + public static final String HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME = "HTTP_GLOBALCUSTOMERID"; + public static final String HTTP_SERVICETYPE_HEADER_PARM_NAME = "HTTP_SERVICETYPE"; + public static final String HTTP_SERVICETYPE_HEADER_DEFAULT_VALUE = "NetworkService"; + + private Constants() {} + +} diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesController.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesController.java new file mode 100644 index 0000000000..aed4f4b9dd --- /dev/null +++ b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesController.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.etsi.nfvo.ns.lcm.rest; + +import static org.onap.so.etsi.nfvo.ns.lcm.Constants.NS_LIFE_CYCLE_MANAGEMENT_BASE_URL; +import static org.slf4j.LoggerFactory.getLogger; +import javax.ws.rs.core.MediaType; +import org.onap.so.etsi.nfvo.ns.lcm.model.NsLcmOpOccsNsLcmOpOcc; +import org.slf4j.Logger; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * Controller for handling NS lifecycle management operation occurrence requests see clause 6.4.9 and 6.4.10 in + * https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf + * + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@Controller +@RequestMapping(value = NS_LIFE_CYCLE_MANAGEMENT_BASE_URL) +public class NsLcmOperationOccurrencesController { + private static final Logger logger = getLogger(NsLcmOperationOccurrencesController.class); + + + /** + * The GET method to retrieve status information about a NS lifecycle management operation occurrence by reading an + * individual "NS LCM operation occurrence" resource. + * + * @param nsLcmOpOccId Identifier of a NS lifecycle management operation occurrence + * @return "200 OK" with {@link NsLcmOpOccsNsLcmOpOcc NsLcmOpOcc} Information about a NS LCM operation occurrence + * was queried successfully. The response body shall contain status information about a NS lifecycle + * management operation occurrence (see clause 6.5.2.3). + */ + @GetMapping(value = "/ns_lcm_op_occs/{nsLcmOpOccId}", + produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + public ResponseEntity<?> getOperationStatus(@PathVariable("nsLcmOpOccId") final String nsLcmOpOccId) { + logger.info("Received request to retrieve operation status for nsLcmOpOccId: {}", nsLcmOpOccId); + return ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body("Operation is not supported yet"); + } + +} diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementController.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementController.java new file mode 100644 index 0000000000..4dd12589a0 --- /dev/null +++ b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementController.java @@ -0,0 +1,127 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.etsi.nfvo.ns.lcm.rest; + +import static org.onap.so.etsi.nfvo.ns.lcm.Constants.HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME; +import static org.onap.so.etsi.nfvo.ns.lcm.Constants.HTTP_SERVICETYPE_HEADER_DEFAULT_VALUE; +import static org.onap.so.etsi.nfvo.ns.lcm.Constants.HTTP_SERVICETYPE_HEADER_PARM_NAME; +import static org.onap.so.etsi.nfvo.ns.lcm.Constants.NS_LIFE_CYCLE_MANAGEMENT_BASE_URL; +import static org.slf4j.LoggerFactory.getLogger; +import javax.ws.rs.core.MediaType; +import org.onap.so.etsi.nfvo.ns.lcm.model.Body; +import org.onap.so.etsi.nfvo.ns.lcm.model.CreateNsRequest; +import org.onap.so.etsi.nfvo.ns.lcm.model.InstantiateNsRequest; +import org.onap.so.etsi.nfvo.ns.lcm.model.TerminateNsRequest; +import org.slf4j.Logger; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * Controller for handling the NS Lifecycle Management. For further information please read: + * https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf Use the section number + * above each endpoint to find the corresponding section in the above document. + * + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@Controller +@RequestMapping(value = NS_LIFE_CYCLE_MANAGEMENT_BASE_URL) +public class NsLifecycleManagementController { + private static final Logger logger = getLogger(NsLifecycleManagementController.class); + + + /** + * The POST method creates new {@link Body new NS instance resource} request. See Section Number: 6.3.1 for more + * detail + * + * @param globalCustomerId The global customer ID + * @param serviceType The service type + * @param createNsRequest create network service request (see clause 6.5.2.9) + * @return "201 Created" response containing a representation of the NS instance resource {@link NsInstance} just + * created by the NFVO, and provides the URI of the newly-created resource in the "Location:" HTTP header + */ + @PostMapping(value = "/ns_instances", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}, + consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + public ResponseEntity<?> createNs( + @RequestHeader(value = HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME, + required = true) final String globalCustomerId, + @RequestHeader(value = HTTP_SERVICETYPE_HEADER_PARM_NAME, required = false, + defaultValue = HTTP_SERVICETYPE_HEADER_DEFAULT_VALUE) final String serviceType, + @RequestBody final CreateNsRequest createNsRequest) { + logger.info("Received Create NS Request: {}\n with globalCustomerId: {}\n serviceType: {}\n", createNsRequest, + globalCustomerId, serviceType); + return ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body("Operation is not supported yet"); + } + + /** + * The DELETE method delete NS instance + * + * @param nsInstanceId Identifier of the NS instance to be deleted. + * @return "202 Accepted" response with an empty entity body + */ + @DeleteMapping(value = "/ns_instances/{nsInstanceId}", + produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + public ResponseEntity<?> deleteNs(@PathVariable("nsInstanceId") final String nsInstanceId) { + logger.debug("Received delete NS request for nsInstanceId: {}", nsInstanceId); + return ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body("Operation is not supported yet"); + } + + /** + * The POST method instantiate NS instance + * + * @param nsInstanceId Identifier of the NS instance to be instantiated. + * @param instantiateNsRequest Instantiate network service request (see clause 6.5.2.11) + * @return "202 Accepted" response with an empty entity body and a "Location" HTTP header that points to the new "NS + * Lifecycle Operation Occurrence" resource + */ + @PostMapping(value = "/ns_instances/{nsInstanceId}/instantiate", + produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}, + consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + public ResponseEntity<?> instantiateNs(@PathVariable("nsInstanceId") final String nsInstanceId, + @RequestBody final InstantiateNsRequest instantiateNsRequest) { + logger.debug("Received instantiate NS request: {}\n with nsInstanceId: {}", instantiateNsRequest, nsInstanceId); + return ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body("Operation is not supported yet"); + } + + /** + * The POST method terminate NS instance + * + * @param nsInstanceId Identifier of the NS instance to be terminated. + * @param terminateNsRequest The terminate NS request parameters (see clause 6.5.2.15) + * @return "202 Accepted" response with an empty entity body and a "Location" HTTP header that points to the new "NS + * Lifecycle Operation Occurrence" resource + */ + @PostMapping(value = "/ns_instances/{nsInstanceId}/terminate", + produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}, + consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + public ResponseEntity<?> terminateNs(@PathVariable("nsInstanceId") final String nsInstanceId, + @RequestBody final TerminateNsRequest terminateNsRequest) { + logger.debug("Received terminate NS request: {}\n with nsInstanceId: {}", terminateNsRequest, nsInstanceId); + return ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body("Operation is not supported yet"); + } + +} |