pkg/k8score/pdb.go
Rama main · réplica de lectura del repositorio original.
package k8score
import policyv1 "k8s.io/api/policy/v1"
// PDBEvictionState distinguishes authoritative drain blockers from stale
// controller status. Callers must not turn stale status into a green result.
type PDBEvictionState string
const (
PDBEvictionAllowed PDBEvictionState = "allowed"
PDBEvictionBlocked PDBEvictionState = "blocked"
PDBEvictionUnknown PDBEvictionState = "unknown"
)
func PodDisruptionBudgetEvictionState(pdb *policyv1.PodDisruptionBudget) PDBEvictionState {
if pdb == nil || pdb.DeletionTimestamp != nil {
return PDBEvictionAllowed
}
if pdb.Status.ObservedGeneration != pdb.Generation {
return PDBEvictionUnknown
}
if pdb.Status.ExpectedPods > 0 &&
pdb.Status.DisruptionsAllowed == 0 &&
pdb.Status.CurrentHealthy >= pdb.Status.ExpectedPods &&
pdb.Status.DesiredHealthy >= pdb.Status.ExpectedPods {
return PDBEvictionBlocked
}
return PDBEvictionAllowed
}