diff options
Diffstat (limited to 'dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/controller/ServicesController.java')
-rw-r--r-- | dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/controller/ServicesController.java | 189 |
1 files changed, 14 insertions, 175 deletions
diff --git a/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/controller/ServicesController.java b/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/controller/ServicesController.java index 257d1a9..b59f4a4 100644 --- a/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/controller/ServicesController.java +++ b/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/controller/ServicesController.java @@ -1,37 +1,20 @@ package org.onap.sdc.dcae.composition.controller; import org.onap.sdc.common.onaplog.Enums.LogLevel; +import org.onap.sdc.dcae.composition.impl.ServiceBusinessLogic; import org.onap.sdc.dcae.composition.restmodels.AttachVFCMTServiceRequest; -import org.onap.sdc.dcae.composition.restmodels.DcaeMinimizedService; -import org.onap.sdc.dcae.composition.restmodels.MessageResponse; -import org.onap.sdc.dcae.composition.restmodels.sdc.*; -import org.onap.sdc.dcae.composition.util.DcaeBeConstants; -import org.onap.sdc.dcae.composition.util.DcaeBeConstants.LifecycleStateEnum; -import org.onap.sdc.dcae.enums.ArtifactType; -import org.onap.sdc.dcae.enums.LifecycleOperationType; -import org.onap.sdc.dcae.errormng.ActionStatus; -import org.onap.sdc.dcae.errormng.DcaeException; -import org.onap.sdc.dcae.errormng.ErrConfMgr; -import org.onap.sdc.dcae.errormng.ResponseFormat; -import org.onap.sdc.dcae.utils.SdcRestClientUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.util.Base64Utils; -import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.stream.Collectors; - @RestController @EnableAutoConfiguration @CrossOrigin public class ServicesController extends BaseController { + @Autowired + private ServiceBusinessLogic serviceBusinessLogic; /*** * GET services list by VFCMT * @param userId @@ -40,19 +23,9 @@ public class ServicesController extends BaseController { */ @RequestMapping(value = { "/services/{vfcmtUuid}" }, method = { RequestMethod.GET }, produces = {"application/json" }) public ResponseEntity services(@RequestHeader("USER_ID") String userId, @PathVariable String vfcmtUuid, @ModelAttribute("requestId") String requestId) { - try { - ResourceDetailed vfcmt = baseBusinessLogic.getSdcRestClient().getResource(vfcmtUuid, requestId); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "GET ({}) Vfcmt form SDC: {}", vfcmtUuid, vfcmt); - checkVfcmtType(vfcmt); - checkUserIfResourceCheckedOut(userId, vfcmt); - List<Service> services = baseBusinessLogic.getSdcRestClient().getServices(requestId); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "GET services data from SDC: {}", services); - List<Service> uuids = filterServicesByUser(services, userId); - return new ResponseEntity<>(uuids, HttpStatus.OK); - } catch (Exception e) { - return handleException(e, ErrConfMgr.ApiType.GET_SERVICE); - } + debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Starting services"); + return serviceBusinessLogic.services(userId,vfcmtUuid,requestId); } /*** @@ -62,22 +35,9 @@ public class ServicesController extends BaseController { */ @RequestMapping(value = { "/service/{theServiceId}" }, method = { RequestMethod.GET }, produces = {"application/json" }) public ResponseEntity service(@PathVariable String theServiceId, @ModelAttribute("requestId") String requestId) { - try { - ServiceDetailed service = baseBusinessLogic.getSdcRestClient().getService(theServiceId, requestId); - if (service != null) { - if(service.getResources()!=null){ - List<ResourceInstance> vfResourcesOnly = service.getResources().stream().filter(vfi -> vfi.getResoucreType().equals("VF")).collect(Collectors.toList()); - service.setResources(vfResourcesOnly); - }else{ - errLogger.log(LogLevel.ERROR, this.getClass().getName(), "Service {} doesn't have any resources (e.g VFi's)", theServiceId); - } - } else { - errLogger.log(LogLevel.ERROR, this.getClass().getName(), "Couldn't fetch service with uuid {} from SDC", theServiceId); - } - return new ResponseEntity<>(service, HttpStatus.OK); - } catch (Exception e) { - return handleException(e, ErrConfMgr.ApiType.GET_SERVICE); - } + + debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Starting service"); + return serviceBusinessLogic.service(theServiceId,requestId); } @@ -87,6 +47,7 @@ public class ServicesController extends BaseController { * @param request * @return ResponseEntity */ + @Deprecated @RequestMapping(value = "/{vfcmtUuid}/attachment", method = RequestMethod.POST, produces = {"application/json" }) public ResponseEntity attachService( @PathVariable("vfcmtUuid") String vfcmtUuid, @@ -94,137 +55,15 @@ public class ServicesController extends BaseController { @RequestBody AttachVFCMTServiceRequest request, @ModelAttribute("requestId") String requestId) { - String serviceUuid = request.getServiceUuid(); - String vfiName = request.getInstanceName(); - String resourceUuid = vfcmtUuid; - MessageResponse response = new MessageResponse(); - - try { - ResourceDetailed vfcmt = baseBusinessLogic.getSdcRestClient().getResource(vfcmtUuid, requestId); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), vfcmt.toString()); - - checkVfcmtType(vfcmt); - verifyVfiExists(serviceUuid, vfiName, requestId); - - boolean isUpdateMode = false; - Artifact artifactObj = null; - - String reference = serviceUuid + "/resources/" + vfiName; - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "*****************************************"); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Reference between service and vfi {}", reference); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "*****************************************"); - - if(!CollectionUtils.isEmpty(vfcmt.getArtifacts())){ - artifactObj = vfcmt.getArtifacts().stream().filter(a -> DcaeBeConstants.Composition.fileNames.SVC_REF.equals(a.getArtifactName())).findAny().orElse(null); - isUpdateMode = null != artifactObj; - } - - if (isNeedToCheckOut(vfcmt.getLifecycleState())) { - vfcmt = baseBusinessLogic.getSdcRestClient().changeResourceLifecycleState(userId, vfcmtUuid, LifecycleOperationType.CHECKOUT.name(), null, requestId); - if (vfcmt != null) { - resourceUuid = vfcmt.getUuid(); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "New vfcmt uuid after checkout is: {}", resourceUuid); - } - } - - if(isUpdateMode){ - updateReferenceArtifact(userId, resourceUuid, artifactObj, reference, requestId); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Artifact {} updated with content: {}", reference, DcaeBeConstants.Composition.fileNames.SVC_REF, reference); - }else{ - Artifact artifact = SdcRestClientUtils.generateDeploymentArtifact("createReferenceArtifact", DcaeBeConstants.Composition.fileNames.SVC_REF, ArtifactType.DCAE_TOSCA.name(), "servicereference", reference.getBytes()); - baseBusinessLogic.getSdcRestClient().createResourceArtifact(userId, resourceUuid, artifact, requestId); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Artifact {} created with content: {}", DcaeBeConstants.Composition.fileNames.SVC_REF, reference); - } - checkin(userId, resourceUuid, org.onap.sdc.dcae.enums.AssetType.RESOURCE, requestId); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Attachment of reference={} in VFCMT {} has finished successfully", reference, resourceUuid); - - response.setSuccessResponse("Artifact updated"); - return new ResponseEntity<>(response, HttpStatus.OK); - } catch (Exception e) { - return handleException(e, ErrConfMgr.ApiType.ATTACH_TO_SERVICE); - } + debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Starting attachService"); + return serviceBusinessLogic.attachService(vfcmtUuid,userId,request,requestId); } @RequestMapping(value = { "/{vfcmtUuid}/attachment" }, method = { RequestMethod.GET }, produces = {"application/json" }) public ResponseEntity getAttachedService(@PathVariable("vfcmtUuid") String vfcmtUuid, @ModelAttribute("requestId") String requestId) { - - MessageResponse response = new MessageResponse(); - - try { - ResourceDetailed vfcmt = baseBusinessLogic.getSdcRestClient().getResource(vfcmtUuid, requestId); - debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), vfcmt.toString()); - checkVfcmtType(vfcmt); - String artifact = "No Artifacts"; - - if (!CollectionUtils.isEmpty(vfcmt.getArtifacts())) { - Artifact artifactObj = vfcmt.getArtifacts().stream().filter(a -> DcaeBeConstants.Composition.fileNames.SVC_REF.equals(a.getArtifactName())).findAny().orElse(null); - if (null != artifactObj) - artifact = baseBusinessLogic.getSdcRestClient().getResourceArtifact(vfcmtUuid, artifactObj.getArtifactUUID(), requestId); - } - response.setSuccessResponse(artifact); - return new ResponseEntity<>(response, HttpStatus.OK); - } catch (Exception e) { - return handleException(e, ErrConfMgr.ApiType.GET_VFCMT); - } - } - - /**** PRIVATE METHODS ****/ - - private void updateReferenceArtifact(String userId, String VFCMTUuid, Artifact artifactObj, String reference, String requestId) throws Exception { - artifactObj.setDescription("updateReferenceArtifact"); - artifactObj.setPayloadData(Base64Utils.encodeToString(reference.getBytes())); - baseBusinessLogic.getSdcRestClient().updateResourceArtifact(userId, VFCMTUuid, artifactObj, requestId); - } - - - /** - * - * @param lastUpdaterUserId - * @param services - * @param userId - * @return - */ - - //TODO move method to ci tests - public List<DcaeMinimizedService> parseAndFilterServicesByUser(String lastUpdaterUserId, List<LinkedHashMap<String, String>> services, String userId) { - List<DcaeMinimizedService> uuids = null; - if (services != null) { - //services.stream().filter(predicate) - uuids = services.stream() - .map(x -> new DcaeMinimizedService(x.get("uuid"), x.get("name"), x.get("lastUpdaterUserId"), x.get("lifecycleState"), x.get("version"), x.get("invariantUUID"))) - .collect(Collectors.groupingBy(DcaeMinimizedService::getInvariantUUID)).values().stream() - .map(p -> p.stream() - .sorted(Comparator.comparing(DcaeMinimizedService::getVersionAsFloat).reversed())).map(p -> p.collect(Collectors.toList())).map(p -> p.get(0)) - .filter(x -> (!(!x.getLastUpdaterUserId().equals(userId) && x.getLifeCycleState().equals(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name())))) - .sorted(Comparator.comparing(DcaeMinimizedService::getName)).collect(Collectors.toList()); - } - return uuids; - } - private List<Service> filterServicesByUser(List<Service> services, String userId) { - return CollectionUtils.isEmpty(services) ? new ArrayList<>() : services.stream() - .collect(Collectors.groupingBy(Service::getInvariantUUID)).values().stream() - .map(p -> p.stream() - .sorted(Comparator.comparing(Service::versionAsFloat).reversed())).map(p -> p.collect(Collectors.toList())).map(p -> p.get(0)) - .filter(x -> (!(!x.getLastUpdaterUserId().equals(userId) && x.getLifecycleState().equals(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name())))) - .sorted(Comparator.comparing(Service::getName)).collect(Collectors.toList()); + debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Starting getAttachedService"); + return serviceBusinessLogic.getAttachedService(vfcmtUuid,requestId); } - /** - * - * @param serviceUuid - * @param vfiName - * @param requestId - * @throws Exception - */ - private void verifyVfiExists(String serviceUuid, String vfiName, String requestId) throws Exception { - ServiceDetailed service = baseBusinessLogic.getSdcRestClient().getService(serviceUuid, requestId); - boolean isServiceContainsVfi = null != service && !CollectionUtils.isEmpty(service.getResources()) && service.getResources().stream() - .filter(vfi -> "VF".equals(vfi.getResoucreType())) - .anyMatch(vfi -> vfiName.equals(vfi.getResourceInstanceName())); - if (!isServiceContainsVfi) { - ResponseFormat responseFormat = ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.VFI_FETCH_ERROR, null, serviceUuid, vfiName); - throw new DcaeException(HttpStatus.NOT_FOUND, responseFormat.getRequestError()); - } - } } |