re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / servlets / AutomatedUpgradeEndpoint.java
1 package org.openecomp.sdc.be.servlets;
2
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;
14
15 import javax.servlet.http.HttpServletRequest;
16 import javax.ws.rs.*;
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;
21
22 @Loggable(prepend = true, value = Loggable.DEBUG, trim = false)
23 @Path("/v1/catalog")
24 @Api(value = "policy types resource")
25 @Controller
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);
30
31     private final UpgradeBusinessLogic businessLogic;
32
33     public AutomatedUpgradeEndpoint(UpgradeBusinessLogic businessLogic) {
34         this.businessLogic = businessLogic;
35     }
36     
37     
38     @POST
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) {
46
47      
48         String url = request.getMethod() + " " + request.getRequestURI();
49         log.debug("(POST) Start handle request of {}", url);
50
51         try {
52             
53             List<UpgradeRequest> inputsToUpdate = JsonParserUtils.toList(data, UpgradeRequest.class);
54             
55             if (log.isDebugEnabled()) {
56                 log.debug("Received upgrade requests size is {}", inputsToUpdate == null ? 0 : inputsToUpdate.size());
57             }
58             UpgradeStatus actionResponse = businessLogic.automatedUpgrade(componentId, inputsToUpdate, userId);
59             
60             return actionResponse.getStatus() == ActionStatus.OK ? buildOkResponse(actionResponse) : buildErrorResponse(actionResponse.getError());
61
62         } catch (Exception e) {
63             log.error("#autometedUpgrade - Exception occurred during autometed Upgrade", e);
64              return buildGeneralErrorResponse();
65         }
66     }
67     
68     @GET
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);
78
79         try {
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();
85         }
86      
87         
88     }
89 }