2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 package org.openecomp.mso.adapters.vfc;
22 import javax.servlet.http.HttpServletRequest;
23 import javax.ws.rs.Consumes;
24 import javax.ws.rs.POST;
25 import javax.ws.rs.Path;
26 import javax.ws.rs.PathParam;
27 import javax.ws.rs.Produces;
28 import javax.ws.rs.core.MediaType;
29 import javax.ws.rs.core.Response;
30 import javax.ws.rs.core.Response.ResponseBuilder;
32 import org.openecomp.mso.adapters.vfc.model.NSResourceInputParameter;
33 import org.openecomp.mso.adapters.vfc.model.NsOperationKey;
34 import org.openecomp.mso.adapters.vfc.model.RestfulResponse;
35 import org.openecomp.mso.adapters.vfc.util.JsonUtil;
36 import org.openecomp.mso.adapters.vfc.util.RestfulUtil;
37 import org.openecomp.mso.adapters.vfc.util.ValidateUtil;
38 import org.openecomp.mso.logger.MsoLogger;
41 * The rest class for VF-c Adapter
47 * @version ONAP Amsterdam Release 2017-08-28
49 @Path("/v1/vfcdrivers")
50 public class VfcAdapterRest {
52 private static final MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA);
54 private final VfcManager driverMgr = new VfcManager();
60 * @param servletReq the http request
62 * @since ONAP Amsterdam Release
66 @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
67 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
68 public Response createNfvoNs(HttpServletRequest servletReq) {
69 // Step 1: get parameters from request for current node
70 String body = RestfulUtil.getRequestBody(servletReq);
71 ValidateUtil.assertObjectNotNull(body);
72 LOGGER.debug("body from request is {}" + body);
73 NSResourceInputParameter nsInput = JsonUtil.unMarshal(body, NSResourceInputParameter.class);
74 RestfulResponse rsp = driverMgr.createNs(nsInput);
75 return buildResponse(rsp);
79 * Delete NS instance<br>
81 * @param servletReq http request
83 * @since ONAP Amsterdam Release
86 @Path("/ns/{nsInstanceId}")
87 @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
88 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
89 public Response deleteNfvoNs(HttpServletRequest servletReq, @PathParam("nsInstanceId") String nsInstanceId) {
90 // Step 1: get parameters from request for current node
91 String body = RestfulUtil.getRequestBody(servletReq);
92 ValidateUtil.assertObjectNotNull(body);
93 LOGGER.debug("body from request is {}" + body);
94 NsOperationKey nsOperationKey = JsonUtil.unMarshal(body, NsOperationKey.class);
96 RestfulResponse rsp = driverMgr.deleteNs(nsOperationKey, nsInstanceId);
97 return buildResponse(rsp);
101 * Query Operation job status
104 * @param servletReq The Http Request
105 * @param jobId The job id
107 * @since ONAP Amsterdam Release
110 @Path("/jobs/{jobId}")
111 @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
112 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
113 public Response queryNfvoJobStatus(HttpServletRequest servletReq, @PathParam("jobId") String jobId) {
114 ValidateUtil.assertObjectNotNull(jobId);
115 String body = RestfulUtil.getRequestBody(servletReq);
116 ValidateUtil.assertObjectNotNull(body);
117 LOGGER.debug("body from request is {}" + body);
118 NsOperationKey nsOperationKey = JsonUtil.unMarshal(body, NsOperationKey.class);
119 RestfulResponse rsp = driverMgr.getNsProgress(nsOperationKey, jobId);
120 return buildResponse(rsp);
125 * Instantiate NS instance
128 * @param servletReq The http request
129 * @param nsInstanceId The NS instance id
131 * @since ONAP Amsterdam Release
134 @Path("/ns/{nsInstanceId}/instantiate")
135 @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
136 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
137 public Response instantiateNfvoNs(HttpServletRequest servletReq, @PathParam("nsInstanceId") String nsInstanceId) {
138 String body = RestfulUtil.getRequestBody(servletReq);
139 ValidateUtil.assertObjectNotNull(body);
140 LOGGER.debug("body from request is {}" + body);
141 NSResourceInputParameter nsInput = JsonUtil.unMarshal(body, NSResourceInputParameter.class);
142 RestfulResponse rsp = driverMgr.instantiateNs(nsInstanceId, nsInput);
143 return buildResponse(rsp);
147 * Terminate NS instance
150 * @param servletReq The http request
151 * @param nsInstanceId The NS instance id
153 * @since ONAP Amsterdam Release
156 @Path("/ns/{nsInstanceId}/terminate")
157 @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
158 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
159 public Response terminateNfvoNs(HttpServletRequest servletReq, @PathParam("nsInstanceId") String nsInstanceId) {
160 ValidateUtil.assertObjectNotNull(nsInstanceId);
161 String body = RestfulUtil.getRequestBody(servletReq);
162 ValidateUtil.assertObjectNotNull(body);
163 LOGGER.debug("body from request is {}" + body);
164 NsOperationKey nsOperationKey = JsonUtil.unMarshal(body, NsOperationKey.class);
165 RestfulResponse rsp = driverMgr.terminateNs(nsOperationKey, nsInstanceId);
166 return buildResponse(rsp);
171 * build response from restful response
174 * @param rsp general response object
176 * @since ONAP Amsterdam Release
178 private Response buildResponse(RestfulResponse rsp) {
179 ResponseBuilder rspBuilder = Response.status(rsp.getStatus());
180 rspBuilder.entity(rsp.getResponseContent());
181 return rspBuilder.build();