From c85d40b0cc8f40e5d0e17019878df82170f7bb35 Mon Sep 17 00:00:00 2001 From: sebdet Date: Tue, 10 Sep 2019 15:57:10 +0200 Subject: Repair healthcheck HealthCheck was always returning 200 even if the db was not up and running Issue-ID: CLAMP-494 Change-Id: I85aa427a212c6cde568d3863d1ab1a1a11c71f16 Signed-off-by: sebdet --- docs/swagger/swagger.json | 94 +++++++++++----------- docs/swagger/swagger.pdf | 6 +- .../clamp/clds/service/CldsHealthcheckService.java | 15 +--- .../java/org/onap/clamp/loop/LoopController.java | 42 ++++------ src/main/resources/META-INF/resources/swagger.html | 2 +- .../resources/clds/camel/rest/clamp-api-v2.xml | 2 +- .../resources/clds/camel/rest/clds-services.xml | 26 ++++-- .../clds/it/CldsHealthcheckServiceItCase.java | 4 +- 8 files changed, 91 insertions(+), 100 deletions(-) diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index 0bd2b077e..80ffc2a9e 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -4,7 +4,7 @@ "version" : "4.1.2-SNAPSHOT", "title" : "Clamp Rest API" }, - "host" : "localhost:40147", + "host" : "localhost:36829", "basePath" : "/restservices/clds/", "schemes" : [ "http" ], "paths" : { @@ -419,12 +419,12 @@ "asString" : { "type" : "string" }, - "asBoolean" : { - "type" : "boolean" - }, "asNumber" : { "$ref" : "#/definitions/Number" }, + "asBoolean" : { + "type" : "boolean" + }, "asDouble" : { "type" : "number", "format" : "double" @@ -464,23 +464,23 @@ "asJsonPrimitive" : { "$ref" : "#/definitions/JsonPrimitive" }, - "jsonObject" : { + "jsonPrimitive" : { "type" : "boolean" }, - "jsonNull" : { - "type" : "boolean" + "asJsonArray" : { + "$ref" : "#/definitions/JsonArray" }, - "jsonArray" : { + "jsonObject" : { "type" : "boolean" }, - "jsonPrimitive" : { + "jsonNull" : { "type" : "boolean" }, - "asJsonArray" : { - "$ref" : "#/definitions/JsonArray" - }, "asJsonNull" : { "$ref" : "#/definitions/JsonNull" + }, + "jsonArray" : { + "type" : "boolean" } }, "x-className" : { @@ -529,12 +529,12 @@ "asString" : { "type" : "string" }, - "asBoolean" : { - "type" : "boolean" - }, "asNumber" : { "$ref" : "#/definitions/Number" }, + "asBoolean" : { + "type" : "boolean" + }, "asDouble" : { "type" : "number", "format" : "double" @@ -577,23 +577,23 @@ "asJsonPrimitive" : { "$ref" : "#/definitions/JsonPrimitive" }, - "jsonObject" : { + "jsonPrimitive" : { "type" : "boolean" }, - "jsonNull" : { - "type" : "boolean" + "asJsonArray" : { + "$ref" : "#/definitions/JsonArray" }, - "jsonArray" : { + "jsonObject" : { "type" : "boolean" }, - "jsonPrimitive" : { + "jsonNull" : { "type" : "boolean" }, - "asJsonArray" : { - "$ref" : "#/definitions/JsonArray" - }, "asJsonNull" : { "$ref" : "#/definitions/JsonNull" + }, + "jsonArray" : { + "type" : "boolean" } } }, @@ -643,29 +643,29 @@ "asString" : { "type" : "string" }, - "jsonObject" : { + "jsonPrimitive" : { "type" : "boolean" }, - "jsonNull" : { - "type" : "boolean" + "asJsonArray" : { + "$ref" : "#/definitions/JsonArray" }, - "jsonArray" : { + "jsonObject" : { "type" : "boolean" }, - "asBoolean" : { - "type" : "boolean" + "asNumber" : { + "$ref" : "#/definitions/Number" }, - "jsonPrimitive" : { + "jsonNull" : { "type" : "boolean" }, - "asJsonArray" : { - "$ref" : "#/definitions/JsonArray" - }, "asJsonNull" : { "$ref" : "#/definitions/JsonNull" }, - "asNumber" : { - "$ref" : "#/definitions/Number" + "jsonArray" : { + "type" : "boolean" + }, + "asBoolean" : { + "type" : "boolean" }, "asDouble" : { "type" : "number", @@ -761,29 +761,29 @@ "asString" : { "type" : "string" }, - "jsonObject" : { + "jsonPrimitive" : { "type" : "boolean" }, - "jsonNull" : { - "type" : "boolean" + "asJsonArray" : { + "$ref" : "#/definitions/JsonArray" }, - "jsonArray" : { + "jsonObject" : { "type" : "boolean" }, - "asBoolean" : { - "type" : "boolean" + "asNumber" : { + "$ref" : "#/definitions/Number" }, - "jsonPrimitive" : { + "jsonNull" : { "type" : "boolean" }, - "asJsonArray" : { - "$ref" : "#/definitions/JsonArray" - }, "asJsonNull" : { "$ref" : "#/definitions/JsonNull" }, - "asNumber" : { - "$ref" : "#/definitions/Number" + "jsonArray" : { + "type" : "boolean" + }, + "asBoolean" : { + "type" : "boolean" }, "asDouble" : { "type" : "number", diff --git a/docs/swagger/swagger.pdf b/docs/swagger/swagger.pdf index 967dc9a89..9ae7d6e31 100644 --- a/docs/swagger/swagger.pdf +++ b/docs/swagger/swagger.pdf @@ -4,8 +4,8 @@ << /Title (Clamp Rest API) /Creator (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0) /Producer (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0) -/CreationDate (D:20190909171618+02'00') -/ModDate (D:20190909171618+02'00') +/CreationDate (D:20190910155046+02'00') +/ModDate (D:20190910155046+02'00') >> endobj 2 0 obj @@ -3407,7 +3407,7 @@ ET BT 71.30850000000001 592.176 Td /F1.0 10.5 Tf -<203a206c6f63616c686f73743a3430313437> Tj +<203a206c6f63616c686f73743a3336383239> Tj ET 0.000 0.000 0.000 SCN diff --git a/src/main/java/org/onap/clamp/clds/service/CldsHealthcheckService.java b/src/main/java/org/onap/clamp/clds/service/CldsHealthcheckService.java index f16791681..39c12c8f5 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsHealthcheckService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsHealthcheckService.java @@ -34,7 +34,6 @@ import org.onap.clamp.loop.LoopController; import org.slf4j.event.Level; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; /** @@ -54,36 +53,28 @@ public class CldsHealthcheckService { * * @return CldsHealthCheck class containing healthcheck info */ - public ResponseEntity gethealthcheck() { + public CldsHealthCheck gethealthcheck() { CldsHealthCheck cldsHealthCheck = new CldsHealthCheck(); Date startTime = new Date(); LoggingUtils util = new LoggingUtils(logger); LoggingUtils.setRequestContext("CldsService: GET healthcheck", "Clamp-Health-Check"); LoggingUtils.setTimeContext(startTime, new Date()); - boolean healthcheckFailed = false; try { loopController.getLoopNames(); cldsHealthCheck.setHealthCheckComponent("CLDS-APP"); cldsHealthCheck.setHealthCheckStatus("UP"); cldsHealthCheck.setDescription("OK"); LoggingUtils.setResponseContext("0", "Get healthcheck success", this.getClass().getName()); + util.exiting("200", "Healthcheck success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); } catch (Exception e) { - healthcheckFailed = true; logger.error("CLAMP application Heath check failed", e); LoggingUtils.setResponseContext("999", "Get healthcheck failed", this.getClass().getName()); cldsHealthCheck.setHealthCheckComponent("CLDS-APP"); cldsHealthCheck.setHealthCheckStatus("DOWN"); cldsHealthCheck.setDescription("NOT-OK"); - } - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - if (healthcheckFailed) { util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "Healthcheck failed", Level.INFO, ONAPLogConstants.ResponseStatus.ERROR); - return new ResponseEntity<>(cldsHealthCheck, HttpStatus.INTERNAL_SERVER_ERROR); - } else { - util.exiting("200", "Healthcheck failed", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return new ResponseEntity<>(cldsHealthCheck, HttpStatus.OK); } + return cldsHealthCheck; } } \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/loop/LoopController.java b/src/main/java/org/onap/clamp/loop/LoopController.java index 7d41e489a..72726fa3f 100644 --- a/src/main/java/org/onap/clamp/loop/LoopController.java +++ b/src/main/java/org/onap/clamp/loop/LoopController.java @@ -61,40 +61,35 @@ public class LoopController { /** * Update the Operational Policy properties. * - * @param loopName - * The loop name - * @param operationalPoliciesJson - * The new Operational Policy properties + * @param loopName The loop name + * @param operationalPoliciesJson The new Operational Policy properties * @return The updated loop */ public Loop updateOperationalPolicies(String loopName, JsonArray operationalPoliciesJson) { List operationalPolicies = JsonUtils.GSON.fromJson(operationalPoliciesJson, - OPERATIONAL_POLICY_TYPE); + OPERATIONAL_POLICY_TYPE); return loopService.updateAndSaveOperationalPolicies(loopName, operationalPolicies); } /** - * Update the whole array of MicroService policies properties + * Update the whole array of MicroService policies properties. * - * @param loopName - * The loop name - * @param microServicePoliciesJson - * The array of all MicroService policies properties + * @param loopName The loop name + * @param microServicePoliciesJson The array of all MicroService policies + * properties * @return The updated loop */ public Loop updateMicroservicePolicies(String loopName, JsonArray microServicePoliciesJson) { List microservicePolicies = JsonUtils.GSON.fromJson(microServicePoliciesJson, - MICROSERVICE_POLICY_TYPE); + MICROSERVICE_POLICY_TYPE); return loopService.updateAndSaveMicroservicePolicies(loopName, microservicePolicies); } /** - * Update the global properties + * Update the global properties. * - * @param loopName - * The loop name - * @param globalProperties - * The updated global properties + * @param loopName The loop name + * @param globalProperties The updated global properties * @return The updated loop */ public Loop updateGlobalPropertiesJson(String loopName, JsonObject globalProperties) { @@ -102,12 +97,10 @@ public class LoopController { } /** - * Update one MicroService policy properties + * Update one MicroService policy properties. * - * @param loopName - * The loop name - * @param newMicroservicePolicy - * The new MicroService policy properties + * @param loopName The loop name + * @param newMicroservicePolicy The new MicroService policy properties * @return The updated MicroService policy */ public MicroServicePolicy updateMicroservicePolicy(String loopName, MicroServicePolicy newMicroservicePolicy) { @@ -115,13 +108,12 @@ public class LoopController { } /** - * Get the SVG representation of the loop + * Get the SVG representation of the loop. * - * @param loopName - * The loop name + * @param loopName The loop name * @return The SVG representation */ - public String getSVGRepresentation(String loopName) { + public String getSvgRepresentation(String loopName) { Loop loop = loopService.getLoop(loopName); return loop != null ? loop.getSvgRepresentation() : null; } diff --git a/src/main/resources/META-INF/resources/swagger.html b/src/main/resources/META-INF/resources/swagger.html index d2ec96601..d3b38b693 100644 --- a/src/main/resources/META-INF/resources/swagger.html +++ b/src/main/resources/META-INF/resources/swagger.html @@ -588,7 +588,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

1.2. URI scheme

-

Host : localhost:40147
+

Host : localhost:36829
BasePath : /restservices/clds/
Schemes : HTTP

diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml index 6ee44cade..cf99625ee 100644 --- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml +++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml @@ -68,7 +68,7 @@ + uri="bean:org.onap.clamp.loop.LoopController?method=getSvgRepresentation(${header.loopName})" /> diff --git a/src/main/resources/clds/camel/rest/clds-services.xml b/src/main/resources/clds/camel/rest/clds-services.xml index b3061dc42..dd3a4bfdc 100644 --- a/src/main/resources/clds/camel/rest/clds-services.xml +++ b/src/main/resources/clds/camel/rest/clds-services.xml @@ -1,19 +1,29 @@ - - + - - + + + + + + + ${body} == 'NOT-OK' + + 404 + + + + - + diff --git a/src/test/java/org/onap/clamp/clds/it/CldsHealthcheckServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsHealthcheckServiceItCase.java index 1dbea376d..587b7c915 100644 --- a/src/test/java/org/onap/clamp/clds/it/CldsHealthcheckServiceItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/CldsHealthcheckServiceItCase.java @@ -32,7 +32,6 @@ import org.onap.clamp.clds.service.CldsHealthcheckService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** @@ -47,8 +46,7 @@ public class CldsHealthcheckServiceItCase { @Test public void testGetHealthCheck() { - ResponseEntity response = cldsHealthcheckService.gethealthcheck(); - CldsHealthCheck cldsHealthCheck = (CldsHealthCheck) response.getBody(); + CldsHealthCheck cldsHealthCheck = cldsHealthcheckService.gethealthcheck(); assertNotNull(cldsHealthCheck); assertEquals("UP", cldsHealthCheck.getHealthCheckStatus()); assertEquals("CLDS-APP", cldsHealthCheck.getHealthCheckComponent()); -- cgit 1.2.3-korg