coolify/app/Models
Andras Bacsai e3746a4b88 fix: preserve unknown health state and handle edge case container states
This commit fixes container health status aggregation to correctly handle
unknown health states and edge case container states across all resource types.

Changes:

1. **Preserve Unknown Health State**
   - Add three-way priority: unhealthy > unknown > healthy
   - Detect containers without healthchecks (null health) as unknown
   - Apply across GetContainersStatus, ComplexStatusCheck, and Service models

2. **Handle Edge Case Container States**
   - Add support for: created, starting, paused, dead, removing
   - Map to appropriate statuses: starting (unknown), paused (unknown), degraded (unhealthy)
   - Prevent containers in transitional states from showing incorrect status

3. **Add :excluded Suffix for Excluded Containers**
   - Parse exclude_from_hc flag from docker-compose YAML
   - Append :excluded suffix to individual container statuses
   - Skip :excluded containers in non-excluded aggregation sections
   - Strip :excluded suffix in excluded aggregation sections
   - Makes it clear in UI which containers are excluded from monitoring

Files Modified:
- app/Actions/Docker/GetContainersStatus.php
- app/Actions/Shared/ComplexStatusCheck.php
- app/Models/Service.php
- tests/Unit/ContainerHealthStatusTest.php

Tests: 18 passed (82 assertions)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 13:19:25 +01:00
..
Application.php refactor: simplify environment variable deletion logic in booted method 2025-11-18 10:29:08 +01:00
ApplicationDeploymentQueue.php refactor(deployment): enhance deployment data retrieval and relationships 2025-10-04 18:02:20 +02:00
ApplicationPreview.php fix(previews): simplify FQDN generation logic by removing unnecessary empty check 2025-08-28 10:11:56 +02:00
ApplicationSetting.php feat: Update ApplicationSetting model to include additional boolean casts 2025-11-04 08:43:33 +01:00
BaseModel.php refactor: rename name method to sanitizedName in BaseModel for clarity 2024-12-10 08:50:07 +01:00
CloudInitScript.php refactor: improve cloud-init script UX and remove description field 2025-10-11 11:16:28 +02:00
CloudProviderToken.php improved hetzner features 2025-10-09 12:53:57 +02:00
DiscordNotificationSettings.php feat(proxy): add Traefik version tracking with notifications and dismissible UI warnings 2025-11-14 11:35:22 +01:00
DockerCleanupExecution.php feat: DB and Model for docker cleanup executions 2025-01-15 17:11:15 +01:00
EmailNotificationSettings.php feat(proxy): add Traefik version tracking with notifications and dismissible UI warnings 2025-11-14 11:35:22 +01:00
Environment.php refactor(global-search, environment): streamline environment retrieval with new query method 2025-10-08 19:58:36 +02:00
EnvironmentVariable.php feat(environment): replace is_buildtime_only with is_runtime and is_buildtime flags for environment variables, updating related logic and views 2025-09-18 18:14:54 +02:00
GithubApp.php fixed github app deleting private key when it is used by other resources 2025-10-30 01:16:59 +05:30
GitlabApp.php fix: access team's github apps only 2024-10-24 13:28:31 +02:00
InstanceSettings.php fix: remove PullHelperImageJob and mass server scheduling 2025-11-14 11:31:08 +01:00
LocalFileVolume.php feat(storage): add read-only volume handling and UI notifications 2025-10-03 20:05:43 +02:00
LocalPersistentVolume.php feat(storage): add read-only volume handling and UI notifications 2025-10-03 20:05:43 +02:00
OauthSetting.php feat(auth): Add Clerk OAuth Provider (#5553) 2025-06-18 14:29:46 +02:00
PersonalAccessToken.php Fix styling 2024-06-10 20:43:34 +00:00
PrivateKey.php Improve SSH key filtering and datalist component 2025-10-23 16:18:20 +02:00
Project.php feat(global-search): integrate projects and environments into global search functionality 2025-09-30 13:37:03 +02:00
ProjectSetting.php feat: initial api endpoints 2024-02-16 21:56:38 +01:00
PushoverNotificationSettings.php feat(proxy): add Traefik version tracking with notifications and dismissible UI warnings 2025-11-14 11:35:22 +01:00
S3Storage.php feat(validation): centralize validation patterns for names and descriptions 2025-08-19 12:14:48 +02:00
ScheduledDatabaseBackup.php fix(models): update sorting of scheduled database backups to order by creation date instead of name 2025-09-26 08:24:38 +02:00
ScheduledDatabaseBackupExecution.php feat(backup): enhance backup job with S3 upload handling and notifications 2025-10-07 15:02:23 +02:00
ScheduledTask.php feat(jobs): improve scheduled tasks with retry logic and queue cleanup 2025-11-10 11:11:18 +01:00
ScheduledTaskExecution.php feat(jobs): improve scheduled tasks with retry logic and queue cleanup 2025-11-10 11:11:18 +01:00
Server.php refactor(proxy): implement centralized caching for versions.json and improve UX 2025-11-17 14:53:28 +01:00
ServerSetting.php Changes auto-committed by Conductor 2025-10-16 09:51:37 +02:00
Service.php fix: preserve unknown health state and handle edge case container states 2025-11-19 13:19:25 +01:00
ServiceApplication.php refactor: streamline required port retrieval in EditDomain and ServiceApplicationView; add environment_variables method in ServiceApplication 2025-11-10 14:15:53 +01:00
ServiceDatabase.php feat(ServiceDatabase): add support for TimescaleDB detection and database type identification 2025-11-12 00:36:38 +01:00
SharedEnvironmentVariable.php feat(acl): Change views/backend code to able to use proper ACL's later on. Currently it is not enabled. 2025-08-26 10:27:38 +02:00
SlackNotificationSettings.php feat(proxy): add Traefik version tracking with notifications and dismissible UI warnings 2025-11-14 11:35:22 +01:00
SslCertificate.php fix(ssl): when regenerating SSL certs the cert is not singed with the new CN 2025-02-07 19:36:52 +01:00
StandaloneClickhouse.php fix(database): prevent malformed URLs when server IP is empty 2025-10-27 11:46:24 +01:00
StandaloneDocker.php feat(validation): centralize validation patterns for names and descriptions 2025-08-19 12:14:48 +02:00
StandaloneDragonfly.php fix(database): prevent malformed URLs when server IP is empty 2025-10-27 11:46:24 +01:00
StandaloneKeydb.php fix(database): prevent malformed URLs when server IP is empty 2025-10-27 11:46:24 +01:00
StandaloneMariadb.php fix(database): prevent malformed URLs when server IP is empty 2025-10-27 11:46:24 +01:00
StandaloneMongodb.php fix(database): prevent malformed URLs when server IP is empty 2025-10-27 11:46:24 +01:00
StandaloneMysql.php fix(database): prevent malformed URLs when server IP is empty 2025-10-27 11:46:24 +01:00
StandalonePostgresql.php fix(database): prevent malformed URLs when server IP is empty 2025-10-27 11:46:24 +01:00
StandaloneRedis.php fix(database): prevent malformed URLs when server IP is empty 2025-10-27 11:46:24 +01:00
Subscription.php Revert "rector: arrrrr" 2025-01-07 15:31:43 +01:00
SwarmDocker.php Revert "rector: arrrrr" 2025-01-07 15:31:43 +01:00
Tag.php feat(validation): centralize validation patterns for names and descriptions 2025-08-19 12:14:48 +02:00
Team.php feat(proxy): add Traefik version tracking with notifications and dismissible UI warnings 2025-11-14 11:35:22 +01:00
TeamInvitation.php Update app/Models/TeamInvitation.php 2025-09-25 11:33:32 +02:00
TelegramNotificationSettings.php feat(proxy): add Traefik version tracking with notifications and dismissible UI warnings 2025-11-14 11:35:22 +01:00
User.php Changes auto-committed by Conductor 2025-10-17 23:04:24 +02:00
UserChangelogRead.php feat(changelog): implement automated changelog fetching from GitHub and enhance changelog read tracking 2025-08-12 10:07:11 +02:00
WebhookNotificationSettings.php feat(proxy): add Traefik version tracking with notifications and dismissible UI warnings 2025-11-14 11:35:22 +01:00