From 6a3c340c0e372e54893ec93639715a8df3847afc Mon Sep 17 00:00:00 2001
From: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
Date: Tue, 8 Oct 2024 11:22:55 +0200
Subject: [PATCH] Add unhealthy state
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
---
php/src/Container/ContainerState.php | 1 +
php/src/Docker/DockerActionManager.php | 8 +++++---
php/templates/containers.twig | 7 +++++++
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/php/src/Container/ContainerState.php b/php/src/Container/ContainerState.php
index f6481027fddb..d5c550f48eb9 100644
--- a/php/src/Container/ContainerState.php
+++ b/php/src/Container/ContainerState.php
@@ -9,4 +9,5 @@ enum ContainerState: string {
case Running = 'running';
case Starting = 'starting';
case Stopped = 'stopped';
+ case Unhealthy = 'unhealthy';
}
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index 12a641e0869b..e980706c2c91 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -49,10 +49,12 @@ public function GetContainerRunningState(Container $container) : ContainerState
$responseBody = json_decode((string)$response->getBody(), true);
- if ($responseBody['State']['Running'] === true) {
- return ContainerState::Running;
- } else {
+ if ($responseBody['State']['Running'] !== true) {
return ContainerState::Stopped;
+ } elseif(array_key_exists('Health', $responseBody['State']) && $responseBody['State']['Health']['Status'] !== 'healthy') {
+ return ContainerState::Unhealthy;
+ } else {
+ return ContainerState::Running;
}
}
diff --git a/php/templates/containers.twig b/php/templates/containers.twig
index 9bcef1cdc6fe..8a14bcec5d49 100644
--- a/php/templates/containers.twig
+++ b/php/templates/containers.twig
@@ -268,6 +268,13 @@
(docs)
{% endif %}
+ {% elseif container.GetRunningState().value == 'unhealthy' %}
+
+ {{ container.GetDisplayName() }} (Unhealthy)
+ {% if container.GetDocumentation() != '' %}
+ (docs)
+ {% endif %}
+
{% elseif container.GetRunningState().value == 'running' %}
{{ container.GetDisplayName() }} (Running)