From: aravind.est Date: Fri, 23 Feb 2024 13:17:41 +0000 (+0000) Subject: Move the rApp to COMMISSIONED state when chart upload fails X-Git-Tag: 0.1.0~23^2~1 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=2924cf00dc877eb6d6e7239b590e9e7e584dd0b2;p=nonrtric%2Fplt%2Frappmanager.git Move the rApp to COMMISSIONED state when chart upload fails rApp moved to COMMISSIONED state when chart upload fails Issue-ID: NONRTRIC-984 Signed-off-by: aravind.est Change-Id: I9db62b540dc22bcbd0ae62880c25a89662982ee6 --- 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 23ab2d8..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; @@ -51,14 +52,19 @@ public class RappService { if (rapp.getState().equals(RappState.COMMISSIONED)) { rapp.setState(RappState.PRIMING); rapp.setReason(null); - //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(); + 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); throw new RappHandlerException(HttpStatus.BAD_GATEWAY, rapp.getReason()); diff --git a/rapp-manager-application/src/test/java/com/oransc/rappmanager/service/RappServiceTest.java b/rapp-manager-application/src/test/java/com/oransc/rappmanager/service/RappServiceTest.java index 9dc4987..0627f68 100755 --- a/rapp-manager-application/src/test/java/com/oransc/rappmanager/service/RappServiceTest.java +++ b/rapp-manager-application/src/test/java/com/oransc/rappmanager/service/RappServiceTest.java @@ -22,11 +22,13 @@ package com.oransc.rappmanager.service; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; import com.oransc.rappmanager.acm.service.AcmDeployer; import com.oransc.rappmanager.dme.service.DmeDeployer; 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.RappState; import com.oransc.rappmanager.models.rappinstance.RappInstance; @@ -126,6 +128,19 @@ class RappServiceTest { assertEquals(RappState.COMMISSIONED, rapp.getState()); } + @Test + void testPrimeRappHelmUploadFailure() { + Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile) + .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build(); + doThrow(new RappValidationException("")).when(deploymentArtifactsService).configureDeploymentArtifacts(any()); + when(acmDeployer.primeRapp(any())).thenReturn(true); + when(dmeDeployer.primeRapp(any())).thenReturn(false); + RappValidationException rappValidationException = + assertThrows(RappValidationException.class, () -> rappService.primeRapp(rapp)); + assertEquals(HttpStatus.BAD_REQUEST, rappValidationException.getStatusCode()); + assertEquals(RappState.COMMISSIONED, rapp.getState()); + } + @Test void testPrimeRappDeployArtifactFailure() { Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)