pkg/skoop/assertions/k8s.go (24 lines of code) (raw):

package assertions import ( "fmt" "github.com/alibaba/kubeskoop/pkg/skoop/model" "github.com/samber/lo" v1 "k8s.io/api/core/v1" ) type KubernetesAssertion struct { Assertion } func NewKubernetesAssertion(assertion Assertion) *KubernetesAssertion { return &KubernetesAssertion{Assertion: assertion} } func (a *KubernetesAssertion) AssertNode(node *v1.Node) { if readyStatus, ok := lo.Find(node.Status.Conditions, func(c v1.NodeCondition) bool { return c.Type == v1.NodeReady }); ok { AssertTrue(a, readyStatus.Status == v1.ConditionTrue, model.SuspicionLevelFatal, fmt.Sprintf("node ready status is %q, message: %s", readyStatus.Status, readyStatus.Message)) } } func (a *KubernetesAssertion) AssertPod(pod *v1.Pod) { for _, c := range pod.Status.ContainerStatuses { AssertTrue(a, c.Ready, model.SuspicionLevelWarning, fmt.Sprintf("pod container %q is not ready.", c.Name)) } }