X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=rapp-manager-application%2Fsrc%2Fmain%2Fjava%2Fcom%2Foransc%2Frappmanager%2Frest%2FRappInstanceController.java;h=ee48f8498698ae2d7b9eb9154e25038432defe1b;hb=7e301b523d66508f8493f6873e36f0d60e8caaf4;hp=20fbdb0c0eeba810cd6107035851f8f8d56442ea;hpb=a071d6befe8d38a5e589dffbbf1dc3904ff3aa79;p=nonrtric%2Fplt%2Frappmanager.git diff --git a/rapp-manager-application/src/main/java/com/oransc/rappmanager/rest/RappInstanceController.java b/rapp-manager-application/src/main/java/com/oransc/rappmanager/rest/RappInstanceController.java index 20fbdb0..ee48f84 100755 --- a/rapp-manager-application/src/main/java/com/oransc/rappmanager/rest/RappInstanceController.java +++ b/rapp-manager-application/src/main/java/com/oransc/rappmanager/rest/RappInstanceController.java @@ -18,12 +18,12 @@ package com.oransc.rappmanager.rest; -import com.oransc.rappmanager.models.rappinstance.DeployOrder; +import com.oransc.rappmanager.models.cache.RappCacheService; +import com.oransc.rappmanager.models.exception.RappHandlerException; import com.oransc.rappmanager.models.rapp.Rapp; +import com.oransc.rappmanager.models.rappinstance.DeployOrder; import com.oransc.rappmanager.models.rappinstance.RappInstance; import com.oransc.rappmanager.models.rappinstance.RappInstanceDeployOrder; -import com.oransc.rappmanager.models.rappinstance.RappInstanceState; -import com.oransc.rappmanager.models.cache.RappCacheService; import com.oransc.rappmanager.models.statemachine.RappInstanceStateMachine; import com.oransc.rappmanager.service.RappService; import java.util.Map; @@ -31,6 +31,7 @@ import java.util.Optional; import java.util.UUID; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.tuple.Pair; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -49,11 +50,12 @@ public class RappInstanceController { private final RappCacheService rappCacheService; private final RappInstanceStateMachine rappInstanceStateMachine; private final RappService rappService; + private static final String RAPP_INSTANCE_NOT_FOUND = "rApp instance %s not found."; @GetMapping public ResponseEntity> getAllRappInstances(@PathVariable("rapp_id") String rappId) { - return rappCacheService.getRapp(rappId).map(Rapp::getRappInstances).map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build()); + return rappCacheService.getRapp(rappId).map(Rapp::getRappInstances).map(ResponseEntity::ok).orElseThrow( + () -> new RappHandlerException(HttpStatus.NOT_FOUND, "No instance found for rApp '" + rappId + "'.")); } @PostMapping @@ -63,7 +65,7 @@ public class RappInstanceController { rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId()); rapp.getRappInstances().put(rappInstance.getRappInstanceId(), rappInstance); return ResponseEntity.ok(rappInstance); - }).orElse(ResponseEntity.notFound().build()); + }).orElseThrow(() -> new RappHandlerException(HttpStatus.NOT_FOUND, "rApp '" + rappId + "' not found.")); } @GetMapping("{rapp_instance_id}") @@ -76,7 +78,8 @@ public class RappInstanceController { RappInstance rappInstance = rappPair.getLeft().getRappInstances().get(rappInstanceId); rappInstance.setState(rappInstanceStateMachine.getRappInstanceState(rappInstanceId)); return rappInstance; - }).map(ResponseEntity::ok).orElse(ResponseEntity.notFound().build()); + }).map(ResponseEntity::ok).orElseThrow(() -> new RappHandlerException(HttpStatus.NOT_FOUND, + String.format(RAPP_INSTANCE_NOT_FOUND, rappInstanceId))); } @PutMapping("{rapp_instance_id}") @@ -91,24 +94,18 @@ public class RappInstanceController { .filter(deployOrder -> deployOrder.equals(DeployOrder.DEPLOY)) .map(primeOrder -> rappService.deployRappInstance(rappPair.getLeft(), rappPair.getRight())) .orElseGet(() -> rappService.undeployRappInstance(rappPair.getLeft(), rappPair.getRight()))) - .orElse(ResponseEntity.notFound().build()); + .orElseThrow(() -> new RappHandlerException(HttpStatus.NOT_FOUND, + String.format(RAPP_INSTANCE_NOT_FOUND, rappId))); //@formatter:on } @DeleteMapping("{rapp_instance_id}") - public ResponseEntity deleteRappInstance(@PathVariable("rapp_id") String rappId, + public ResponseEntity deleteRappInstance(@PathVariable("rapp_id") String rappId, @PathVariable("rapp_instance_id") UUID rappInstanceId) { - return rappCacheService.getRapp(rappId).map(rapp -> Pair.of(rapp, rapp.getRappInstances())) - .filter(rappPair -> rappPair.getRight().containsKey(rappInstanceId) && rappPair.getRight() - .get(rappInstanceId) - .getState() - .equals(RappInstanceState.UNDEPLOYED)) - .map(rappPair -> { - rappInstanceStateMachine.deleteRappInstance( - rappPair.getLeft().getRappInstances().get(rappInstanceId)); - rappPair.getLeft().getRappInstances().remove(rappInstanceId); - return ResponseEntity.noContent().build(); - }).orElse(ResponseEntity.notFound().build()); + return rappCacheService.getRapp(rappId).filter(rApp -> rApp.getRappInstances().containsKey(rappInstanceId)) + .map(rApp -> rappService.deleteRappInstance(rApp, rappInstanceId)).orElseThrow( + () -> new RappHandlerException(HttpStatus.NOT_FOUND, + String.format(RAPP_INSTANCE_NOT_FOUND, rappId))); } }