1 package org.openecomp.sdc.be.servlets;
3 import com.jcabi.aspects.Loggable;
4 import io.swagger.annotations.*;
5 import org.openecomp.sdc.be.components.upgrade.UpgradeBusinessLogic;
6 import org.openecomp.sdc.be.components.upgrade.UpgradeRequest;
7 import org.openecomp.sdc.be.components.upgrade.UpgradeStatus;
8 import org.openecomp.sdc.be.dao.api.ActionStatus;
9 import org.openecomp.sdc.be.dao.jsongraph.utils.JsonParserUtils;
10 import org.openecomp.sdc.be.model.Resource;
11 import org.openecomp.sdc.common.api.Constants;
12 import org.openecomp.sdc.common.log.wrappers.Logger;
13 import org.springframework.stereotype.Controller;
15 import javax.servlet.http.HttpServletRequest;
17 import javax.ws.rs.core.Context;
18 import javax.ws.rs.core.MediaType;
19 import javax.ws.rs.core.Response;
20 import java.util.List;
22 @Loggable(prepend = true, value = Loggable.DEBUG, trim = false)
24 @Api(value = "policy types resource")
26 @Consumes(MediaType.APPLICATION_JSON)
27 @Produces(MediaType.APPLICATION_JSON)
28 public class AutomatedUpgradeEndpoint extends BeGenericServlet {
29 private static final Logger log = Logger.getLogger(PolicyTypesEndpoint.class);
31 private final UpgradeBusinessLogic businessLogic;
33 public AutomatedUpgradeEndpoint(UpgradeBusinessLogic businessLogic) {
34 this.businessLogic = businessLogic;
39 @Path("/{componentType}/{componentId}/automatedupgrade")
40 @Consumes(MediaType.APPLICATION_JSON)
41 @Produces(MediaType.APPLICATION_JSON)
42 @ApiOperation(value = "Autometed upgrade", httpMethod = "POST", notes = "....", response = Resource.class)
43 @ApiResponses(value = { @ApiResponse(code = 200, message = "Component found"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 404, message = "Component not found") })
44 public Response autometedUpgrade(@PathParam("componentType") final String componentType, @Context final HttpServletRequest request, @PathParam("componentId") final String componentId, @HeaderParam(value = Constants.USER_ID_HEADER) String userId,
45 @ApiParam(value = "json describes upgrade request", required = true) String data) {
48 String url = request.getMethod() + " " + request.getRequestURI();
49 log.debug("(POST) Start handle request of {}", url);
53 List<UpgradeRequest> inputsToUpdate = JsonParserUtils.toList(data, UpgradeRequest.class);
55 if (log.isDebugEnabled()) {
56 log.debug("Received upgrade requests size is {}", inputsToUpdate == null ? 0 : inputsToUpdate.size());
58 UpgradeStatus actionResponse = businessLogic.automatedUpgrade(componentId, inputsToUpdate, userId);
60 return actionResponse.getStatus() == ActionStatus.OK ? buildOkResponse(actionResponse) : buildErrorResponse(actionResponse.getError());
62 } catch (Exception e) {
63 log.error("#autometedUpgrade - Exception occurred during autometed Upgrade", e);
64 return buildGeneralErrorResponse();
69 @Path("/{componentType}/{componentId}/dependencies")
70 @Consumes(MediaType.APPLICATION_JSON)
71 @Produces(MediaType.APPLICATION_JSON)
72 @ApiOperation(value = "Autometed upgrade", httpMethod = "POST", notes = "....", response = Resource.class)
73 @ApiResponses(value = { @ApiResponse(code = 200, message = "Component found"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 404, message = "Component not found") })
74 public Response getComponentDependencies(@PathParam("componentType") final String componentType, @Context final HttpServletRequest request, @PathParam("componentId") final String componentId, @HeaderParam(value = Constants.USER_ID_HEADER) String userId,
75 @ApiParam(value = "Consumer Object to be created", required = true) List<String> data) {
76 String url = request.getMethod() + " " + request.getRequestURI();
77 log.debug("(GET) Start handle request of {}", url);
80 return businessLogic.getComponentDependencies(componentId, userId)
81 .either(this::buildOkResponse, this::buildErrorResponse);
82 } catch (Exception e) {
83 log.error("#getServicesForComponent - Exception occurred during autometed Upgrade", e);
84 return buildGeneralErrorResponse();