~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
45 lines · 1.6 KB Raw History
package conds

import (
	"time"

	"k8s.io/apimachinery/pkg/api/meta"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

type Object interface {
	GetGeneration() int64
	GetConditions() []metav1.Condition
	SetConditions([]metav1.Condition)
}

func Status(ok bool) metav1.ConditionStatus {
	if ok {
		return metav1.ConditionTrue
	}
	return metav1.ConditionFalse
}

func New(kind string, ok bool, reason, message string, generation int64) metav1.Condition {
	return metav1.Condition{Type: kind, Status: Status(ok), Reason: reason, Message: message, ObservedGeneration: generation}
}

func Set(conditions *[]metav1.Condition, generation int64, kind string, ok bool, reason, message string) {
	SetStatus(conditions, generation, kind, Status(ok), reason, message)
}

func SetStatus(conditions *[]metav1.Condition, generation int64, kind string, status metav1.ConditionStatus, reason, message string) {
	meta.SetStatusCondition(conditions, metav1.Condition{Type: kind, Status: status, Reason: reason, Message: message,
		ObservedGeneration: generation})
}

func SetStatusAt(conditions *[]metav1.Condition, generation int64, kind string, status metav1.ConditionStatus, reason, message string, now time.Time) {
	meta.SetStatusCondition(conditions, metav1.Condition{Type: kind, Status: status, Reason: reason, Message: message,
		ObservedGeneration: generation, LastTransitionTime: metav1.NewTime(now)})
}

func SetOn(obj Object, kind string, ok bool, reason, message string) {
	conditions := obj.GetConditions()
	Set(&conditions, obj.GetGeneration(), kind, ok, reason, message)
	obj.SetConditions(conditions)
}