Mark subproject as dirty in CMKS - Infra

This commit is contained in:
Nils Blomgren
2026-05-18 08:37:09 +02:00
parent 328d494530
commit 8b94fb8826
635 changed files with 81145 additions and 100551 deletions

View File

@@ -0,0 +1,91 @@
namespace EntKube.Web.Data;
/// <summary>
/// A snapshot of a CNPG cluster's live state including pod information,
/// overall health, and timeline details queried from Kubernetes.
/// Used by the UI to show real-time status beyond what's stored in the database.
/// </summary>
public class CnpgClusterDetail
{
/// <summary>
/// The managed cluster record from the database.
/// </summary>
public required CnpgCluster Cluster { get; set; }
/// <summary>
/// Live pod information from Kubernetes.
/// </summary>
public List<CnpgPodInfo> Pods { get; set; } = [];
/// <summary>
/// The CNPG cluster phase as reported by the Cluster status (e.g. "Cluster in healthy state").
/// </summary>
public string Phase { get; set; } = "Unknown";
/// <summary>
/// Number of instances that are currently ready.
/// </summary>
public int ReadyInstances { get; set; }
/// <summary>
/// Current primary pod name.
/// </summary>
public string? CurrentPrimary { get; set; }
/// <summary>
/// Current WAL timeline (indicates how many failovers/restores have occurred).
/// </summary>
public int? CurrentTimeline { get; set; }
/// <summary>
/// The current write LAG in bytes across replicas (0 = fully caught up).
/// </summary>
public long ReplicationLagBytes { get; set; }
}
/// <summary>
/// Information about a single pod in a CNPG cluster, including its role
/// (primary or replica), status, and resource usage.
/// </summary>
public class CnpgPodInfo
{
/// <summary>
/// The pod name (e.g. "my-cluster-1", "my-cluster-2").
/// </summary>
public required string Name { get; set; }
/// <summary>
/// The role of this pod: "primary" or "replica".
/// </summary>
public required string Role { get; set; }
/// <summary>
/// The Kubernetes pod phase (Running, Pending, Succeeded, Failed, Unknown).
/// </summary>
public required string Status { get; set; }
/// <summary>
/// Whether all containers in the pod are ready.
/// </summary>
public bool Ready { get; set; }
/// <summary>
/// The node this pod is scheduled on.
/// </summary>
public string? Node { get; set; }
/// <summary>
/// When the pod started.
/// </summary>
public DateTime? StartTime { get; set; }
/// <summary>
/// For replicas: replication lag in bytes behind the primary.
/// </summary>
public long? ReplicationLagBytes { get; set; }
/// <summary>
/// Pod restart count (sum of all container restarts).
/// </summary>
public int Restarts { get; set; }
}