Add db connection status check as option for readiness healthcheck 46/134046/1
authorLukasz Rajewski <lukasz.rajewski@t-mobile.pl>
Fri, 7 Apr 2023 12:09:21 +0000 (12:09 +0000)
committerLukasz Rajewski <lukasz.rajewski@t-mobile.pl>
Fri, 7 Apr 2023 12:09:21 +0000 (12:09 +0000)
Issue-ID: CCSDK-3887
Signed-off-by: Lukasz Rajewski <lukasz.rajewski@t-mobile.pl>
Change-Id: I1e32dedc6abaf829fe82733548cb9c26ea386117

ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceController.kt

index 9e0a7ee..bed8b80 100644 (file)
@@ -36,10 +36,12 @@ import org.onap.ccsdk.cds.error.catalog.core.ErrorCatalogCodes
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.MediaType
 import org.springframework.http.ResponseEntity
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean
 import org.springframework.security.access.prepost.PreAuthorize
 import org.springframework.web.bind.annotation.RequestBody
 import org.springframework.web.bind.annotation.RequestMapping
 import org.springframework.web.bind.annotation.RequestMethod
+import org.springframework.web.bind.annotation.RequestParam
 import org.springframework.web.bind.annotation.ResponseBody
 import org.springframework.web.bind.annotation.RestController
 import java.util.concurrent.Phaser
@@ -60,6 +62,9 @@ open class ExecutionServiceController {
     @Autowired
     lateinit var executionServiceHandler: ExecutionServiceHandler
 
+    @Autowired
+    lateinit var primaryEntityManager: LocalContainerEntityManagerFactoryBean
+
     @RequestMapping(
         path = ["/health-check"],
         method = [RequestMethod.GET],
@@ -67,11 +72,19 @@ open class ExecutionServiceController {
     )
     @ResponseBody
     @ApiOperation(value = "Health Check", hidden = true)
-    suspend fun executionServiceControllerHealthCheck(): ResponseEntity<JsonNode> = mdcWebCoroutineScope {
+    suspend fun executionServiceControllerHealthCheck(
+        @RequestParam(required = false, defaultValue = "false") checkDependencies: Boolean
+    ): ResponseEntity<JsonNode> = mdcWebCoroutineScope {
         var body = mutableMapOf("success" to true)
         var statusCode = 200
-        if (BluePrintConstants.CLUSTER_ENABLED &&
-            BluePrintDependencyService.optionalClusterService()?.clusterJoined() != true
+        if (
+            (
+                BluePrintConstants.CLUSTER_ENABLED &&
+                    BluePrintDependencyService.optionalClusterService()?.clusterJoined() != true
+                ) ||
+            (
+                checkDependencies && !primaryEntityManager.dataSource.connection.isValid(1)
+                )
         ) {
             statusCode = 503
             body.remove("success")