// Updates existing pod condition or creates a new one. Sets LastTransitionTime to now if the // status has changed. // Returns true if pod condition has changed or has been added. func UpdatePodCondition(status *PodStatus, condition *PodCondition) bool { condition.LastTransitionTime = metav1.Now() // Try to find this pod condition. conditionIndex, oldCondition := GetPodCondition(status, condition.Type) if oldCondition == nil { // We are adding new pod condition. status.Conditions = append(status.Conditions, *condition) return true } else { // We are updating an existing condition, so we need to check if it has changed. if condition.Status == oldCondition.Status { condition.LastTransitionTime = oldCondition.LastTransitionTime } isEqual := condition.Status == oldCondition.Status && condition.Reason == oldCondition.Reason && condition.Message == oldCondition.Message && condition.LastProbeTime.Equal(oldCondition.LastProbeTime) && condition.LastTransitionTime.Equal(oldCondition.LastTransitionTime) status.Conditions[conditionIndex] = *condition // Return true if one of the fields have changed. return !isEqual } }
// FillObjectMetaSystemFields populates fields that are managed by the system on ObjectMeta. func FillObjectMetaSystemFields(ctx Context, meta *ObjectMeta) { meta.CreationTimestamp = metav1.Now() // allows admission controllers to assign a UID earlier in the request processing // to support tracking resources pending creation. uid, found := UIDFrom(ctx) if !found { uid = uuid.NewUUID() } meta.UID = uid meta.SelfLink = "" }
func makeEvent(reason, message string, involvedObject v1.ObjectReference) v1.Event { eventTime := metav1.Now() event := v1.Event{ Reason: reason, Message: message, InvolvedObject: involvedObject, Source: v1.EventSource{ Component: "kubelet", Host: "kublet.node1", }, Count: 1, FirstTimestamp: eventTime, LastTimestamp: eventTime, Type: v1.EventTypeNormal, } return event }
func (recorder *recorderImpl) Event(object runtime.Object, eventtype, reason, message string) { recorder.generateEvent(object, metav1.Now(), eventtype, reason, message) }