X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=rapp-manager-application%2Fsrc%2Fmain%2Fjava%2Fcom%2Foransc%2Frappmanager%2Fservice%2FRappService.java;h=d704480d46c5c056c34d971e404e05b754170885;hb=2924cf00dc877eb6d6e7239b590e9e7e584dd0b2;hp=1e606d1c2de976dc7c264f053caa4cb43adc58e8;hpb=fc63eb0da4e4426fbfbecdd4f95bec68ca3ceded;p=nonrtric%2Fplt%2Frappmanager.git diff --git a/rapp-manager-application/src/main/java/com/oransc/rappmanager/service/RappService.java b/rapp-manager-application/src/main/java/com/oransc/rappmanager/service/RappService.java index 1e606d1..d704480 100755 --- a/rapp-manager-application/src/main/java/com/oransc/rappmanager/service/RappService.java +++ b/rapp-manager-application/src/main/java/com/oransc/rappmanager/service/RappService.java @@ -23,6 +23,7 @@ import com.oransc.rappmanager.acm.service.AcmDeployer; import com.oransc.rappmanager.models.RappDeployer; import com.oransc.rappmanager.models.cache.RappCacheService; import com.oransc.rappmanager.models.exception.RappHandlerException; +import com.oransc.rappmanager.models.exception.RappValidationException; import com.oransc.rappmanager.models.rapp.Rapp; import com.oransc.rappmanager.models.rapp.RappEvent; import com.oransc.rappmanager.models.rapp.RappState; @@ -44,18 +45,29 @@ public class RappService { private final List rappDeployers; private final RappInstanceStateMachine rappInstanceStateMachine; private final RappCacheService rappCacheService; + private final DeploymentArtifactsService deploymentArtifactsService; private static final String STATE_TRANSITION_NOT_PERMITTED = "State transition from %s to %s is not permitted."; public ResponseEntity primeRapp(Rapp rapp) { if (rapp.getState().equals(RappState.COMMISSIONED)) { rapp.setState(RappState.PRIMING); rapp.setReason(null); - if (rappDeployers.parallelStream().allMatch(rappDeployer -> rappDeployer.primeRapp(rapp))) { - rapp.setState(RappState.PRIMED); - return ResponseEntity.ok().build(); + try { + //Configuring the deployment artifact needs to be done before starting the priming with other components + //If there are additional conditions needs to be checked before priming, This needs handled as part of pre-priming stage. + if (deploymentArtifactsService.configureDeploymentArtifacts(rapp) && rappDeployers.parallelStream() + .allMatch( + rappDeployer -> rappDeployer.primeRapp( + rapp))) { + rapp.setState(RappState.PRIMED); + return ResponseEntity.ok().build(); + } + } catch (RappValidationException e) { + rapp.setState(RappState.COMMISSIONED); + throw e; } rapp.setState(RappState.COMMISSIONED); - return ResponseEntity.status(HttpStatus.BAD_GATEWAY).build(); + throw new RappHandlerException(HttpStatus.BAD_GATEWAY, rapp.getReason()); } throw new RappHandlerException(HttpStatus.BAD_REQUEST, String.format(STATE_TRANSITION_NOT_PERMITTED, rapp.getState().name(), RappState.PRIMED.name())); @@ -71,7 +83,7 @@ public class RappService { return ResponseEntity.ok().build(); } rapp.setState(RappState.PRIMED); - return ResponseEntity.status(HttpStatus.BAD_GATEWAY).build(); + throw new RappHandlerException(HttpStatus.BAD_GATEWAY, rapp.getReason()); } if (!rapp.getRappInstances().isEmpty()) { throw new RappHandlerException(HttpStatus.BAD_REQUEST, @@ -106,7 +118,7 @@ public class RappService { .allMatch(rappDeployer -> rappDeployer.deployRappInstance(rapp, rappInstance))) { return ResponseEntity.accepted().build(); } - return ResponseEntity.status(HttpStatus.BAD_GATEWAY).build(); + throw new RappHandlerException(HttpStatus.BAD_GATEWAY, rappInstance.getReason()); } throw new RappHandlerException(HttpStatus.BAD_REQUEST, String.format("Unable to deploy rApp instance %s as it is not in UNDEPLOYED state", @@ -122,7 +134,7 @@ public class RappService { .allMatch(rappDeployer -> rappDeployer.undeployRappInstance(rapp, rappInstance))) { return ResponseEntity.accepted().build(); } - return ResponseEntity.status(HttpStatus.BAD_GATEWAY).build(); + throw new RappHandlerException(HttpStatus.BAD_GATEWAY, rappInstance.getReason()); } throw new RappHandlerException(HttpStatus.BAD_REQUEST, String.format("Unable to undeploy rApp instance %s as it is not in DEPLOYED state",