Record ObservedGeneration in status Kustomization

This commit is contained in:
Hidde Beydals 2020-07-23 17:12:43 +02:00
parent e462adbf47
commit 99482c8db8
1 changed files with 58 additions and 45 deletions

View File

@ -126,25 +126,10 @@ type KustomizationStatus struct {
Snapshot *Snapshot `json:"snapshot,omitempty"` Snapshot *Snapshot `json:"snapshot,omitempty"`
} }
func KustomizationReady(kustomization Kustomization, snapshot *Snapshot, revision, reason, message string) Kustomization { // KustomizationProgressing resets the conditions of the given Kustomization to a single
kustomization.Status.Conditions = []Condition{ // ReadyCondition with status ConditionUnknown.
{ func KustomizationProgressing(k Kustomization) Kustomization {
Type: ReadyCondition, k.Status.Conditions = []Condition{
Status: corev1.ConditionTrue,
LastTransitionTime: metav1.Now(),
Reason: reason,
Message: message,
},
}
kustomization.Status.Snapshot = snapshot
kustomization.Status.LastAppliedRevision = revision
kustomization.Status.LastAttemptedRevision = revision
return kustomization
}
func KustomizationProgressing(kustomization Kustomization) Kustomization {
kustomization.Status.Conditions = []Condition{
{ {
Type: ReadyCondition, Type: ReadyCondition,
Status: corev1.ConditionUnknown, Status: corev1.ConditionUnknown,
@ -153,39 +138,54 @@ func KustomizationProgressing(kustomization Kustomization) Kustomization {
Message: "reconciliation in progress", Message: "reconciliation in progress",
}, },
} }
return kustomization return k
} }
func KustomizationNotReady(kustomization Kustomization, revision, reason, message string) Kustomization { // SetKustomizationCondition sets the given condition with the given status, reason and message
kustomization.Status.Conditions = []Condition{ // on the Kustomization.
{ func SetKustomizationCondition(k *Kustomization, condition string, status corev1.ConditionStatus, reason, message string) {
Type: ReadyCondition, k.Status.Conditions = filterOutCondition(k.Status.Conditions, condition)
Status: corev1.ConditionFalse, k.Status.Conditions = append(k.Status.Conditions, Condition{
LastTransitionTime: metav1.Now(), Type: condition,
Reason: reason, Status: status,
Message: message, LastTransitionTime: metav1.Now(),
}, Reason: reason,
} Message: message,
})
}
// SetKustomizeReadiness sets the ReadyCondition, ObservedGeneration, and LastAttemptedRevision,
// on the Kustomization.
func SetKustomizationReadiness(k *Kustomization, status corev1.ConditionStatus, reason, message string, revision string) {
SetKustomizationCondition(k, ReadyCondition, status, reason, message)
k.Status.ObservedGeneration = k.Generation
k.Status.LastAttemptedRevision = revision
}
// KustomizationNotReady registers a failed apply attempt of the given Kustomization.
func KustomizationNotReady(k Kustomization, revision, reason, message string) Kustomization {
SetKustomizationReadiness(&k, corev1.ConditionFalse, reason, message, revision)
if revision != "" { if revision != "" {
kustomization.Status.LastAttemptedRevision = revision k.Status.LastAttemptedRevision = revision
} }
return kustomization return k
} }
func KustomizationNotReadySnapshot(kustomization Kustomization, snapshot *Snapshot, revision, reason, message string) Kustomization { // KustomizationNotReady registers a failed apply attempt of the given Kustomization,
kustomization.Status.Conditions = []Condition{ // including a Snapshot.
{ func KustomizationNotReadySnapshot(k Kustomization, snapshot *Snapshot, revision, reason, message string) Kustomization {
Type: ReadyCondition, SetKustomizationReadiness(&k, corev1.ConditionFalse, reason, message, revision)
Status: corev1.ConditionFalse, k.Status.Snapshot = snapshot
LastTransitionTime: metav1.Now(), k.Status.LastAttemptedRevision = revision
Reason: reason, return k
Message: message, }
},
}
kustomization.Status.Snapshot = snapshot
kustomization.Status.LastAttemptedRevision = revision
return kustomization // KustomizationReady registers a successful apply attempt of the given Kustomization.
func KustomizationReady(k Kustomization, snapshot *Snapshot, revision, reason, message string) Kustomization {
SetKustomizationReadiness(&k, corev1.ConditionTrue, reason, message, revision)
k.Status.Snapshot = snapshot
k.Status.LastAppliedRevision = revision
return k
} }
// GetTimeout returns the timeout with default // GetTimeout returns the timeout with default
@ -239,3 +239,16 @@ type KustomizationList struct {
func init() { func init() {
SchemeBuilder.Register(&Kustomization{}, &KustomizationList{}) SchemeBuilder.Register(&Kustomization{}, &KustomizationList{})
} }
// filterOutCondition returns a new slice of conditions without the
// condition of the given type.
func filterOutCondition(conditions []Condition, condition string) []Condition {
var newConditions []Condition
for _, c := range conditions {
if c.Type == condition {
continue
}
newConditions = append(newConditions, c)
}
return newConditions
}