api/conditioner.go (20 lines of code) (raw):

package api import ( "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) type Conditioner interface { GetCondition(t string) *metav1.Condition GetConditions() *[]metav1.Condition GetGeneration() int64 } func VerifyAndSetCondition(c Conditioner, condition metav1.Condition) { current := c.GetCondition(condition.Type) if current != nil && current.Status == condition.Status && current.Message == condition.Message && current.Reason == condition.Reason { current.ObservedGeneration = c.GetGeneration() return } condition.ObservedGeneration = c.GetGeneration() condition.LastTransitionTime = metav1.Now() meta.SetStatusCondition(c.GetConditions(), condition) }