From e04440875c4e9910b6bdf70ef0988cb1614f134f Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 4 Jun 2020 22:10:24 +0000 Subject: [PATCH] --- .../AyaNova/Controllers/HealthController.cs | 42 +++++++++++++++++++ .../Controllers/ServerMetricsController.cs | 2 +- server/AyaNova/Program.cs | 2 +- server/AyaNova/Startup.cs | 1 + .../generator/CoreJobMetricsSnapshot.cs | 2 +- 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 server/AyaNova/Controllers/HealthController.cs diff --git a/server/AyaNova/Controllers/HealthController.cs b/server/AyaNova/Controllers/HealthController.cs new file mode 100644 index 00000000..c5197c29 --- /dev/null +++ b/server/AyaNova/Controllers/HealthController.cs @@ -0,0 +1,42 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Diagnostics.HealthChecks; +using Swashbuckle.AspNetCore.Annotations; + +namespace AyaNova.Api.Controllers +{ + [ApiController] + [ApiVersion("8.0")] + [Route("api/v{version:apiVersion}/health")] + [Produces("text/plain")] + [Authorize] + public class HealthController : ControllerBase + { + private readonly HealthCheckService _healthCheckService; + public HealthController(HealthCheckService healthCheckService) + { + _healthCheckService = healthCheckService; + } + + /// + /// Get Health + /// Also available at /health on server root + /// confirms liveness and also db availability + /// + /// Provides an indication about the health of the API + /// API is healthy + /// API is unhealthy or in degraded state + [HttpGet] + [AllowAnonymous] + [ProducesResponseType(typeof(string), 200)] + [SwaggerOperation(OperationId = "Health_Get")] + public async Task Get() + { + var report = await _healthCheckService.CheckHealthAsync(); + Response.Headers.Add("Cache-Control", "no-store, no-cache"); + return report.Status == HealthStatus.Healthy ? Ok(report.Status.ToString()) : StatusCode(503, report.Status.ToString()); + } + }//eoc +}//eons \ No newline at end of file diff --git a/server/AyaNova/Controllers/ServerMetricsController.cs b/server/AyaNova/Controllers/ServerMetricsController.cs index ee25d7c3..880f103d 100644 --- a/server/AyaNova/Controllers/ServerMetricsController.cs +++ b/server/AyaNova/Controllers/ServerMetricsController.cs @@ -14,7 +14,7 @@ using Newtonsoft.Json.Linq; using AyaNova.Models; using AyaNova.Api.ControllerHelpers; using AyaNova.Biz; -using StackExchange.Profiling; +//using StackExchange.Profiling; namespace AyaNova.Api.Controllers { diff --git a/server/AyaNova/Program.cs b/server/AyaNova/Program.cs index eae2f20b..37166cd3 100644 --- a/server/AyaNova/Program.cs +++ b/server/AyaNova/Program.cs @@ -10,7 +10,7 @@ using NLog.Web; using NLog.Targets; using NLog.Config; using AyaNova.Util; -using StackExchange.Profiling; +//using StackExchange.Profiling; namespace AyaNova { diff --git a/server/AyaNova/Startup.cs b/server/AyaNova/Startup.cs index 73ab429e..58ce6449 100644 --- a/server/AyaNova/Startup.cs +++ b/server/AyaNova/Startup.cs @@ -23,6 +23,7 @@ using AyaNova.Biz; using NLog.Extensions.Logging; using StackExchange.Profiling; + namespace AyaNova { public class Startup diff --git a/server/AyaNova/generator/CoreJobMetricsSnapshot.cs b/server/AyaNova/generator/CoreJobMetricsSnapshot.cs index 9b4d53f4..7012a462 100644 --- a/server/AyaNova/generator/CoreJobMetricsSnapshot.cs +++ b/server/AyaNova/generator/CoreJobMetricsSnapshot.cs @@ -5,7 +5,7 @@ using Microsoft.Extensions.Logging; using AyaNova.Util; using AyaNova.Models; using Microsoft.EntityFrameworkCore; -using StackExchange.Profiling; +//using StackExchange.Profiling; namespace AyaNova.Biz