From 65bd77c88f0ad964bae7cc9d45fb4e165dc320ec Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Sat, 24 Nov 2018 15:48:35 +0200 Subject: [PATCH] Add last transition time to Canary CRD status --- pkg/apis/flagger/v1alpha1/types.go | 2 ++ pkg/apis/flagger/v1alpha1/zz_generated.deepcopy.go | 3 ++- pkg/controller/deployer.go | 3 +++ pkg/controller/deployer_test.go | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/apis/flagger/v1alpha1/types.go b/pkg/apis/flagger/v1alpha1/types.go index fe68a169..504d5ac1 100755 --- a/pkg/apis/flagger/v1alpha1/types.go +++ b/pkg/apis/flagger/v1alpha1/types.go @@ -65,6 +65,8 @@ type CanaryStatus struct { State string `json:"state"` CanaryRevision string `json:"canaryRevision"` FailedChecks int `json:"failedChecks"` + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"` } // CanaryService is used to create ClusterIP services diff --git a/pkg/apis/flagger/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/flagger/v1alpha1/zz_generated.deepcopy.go index 4f3b8a0e..cacaa815 100644 --- a/pkg/apis/flagger/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/flagger/v1alpha1/zz_generated.deepcopy.go @@ -30,7 +30,7 @@ func (in *Canary) DeepCopyInto(out *Canary) { out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) - out.Status = in.Status + in.Status.DeepCopyInto(&out.Status) return } @@ -171,6 +171,7 @@ func (in *CanarySpec) DeepCopy() *CanarySpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CanaryStatus) DeepCopyInto(out *CanaryStatus) { *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) return } diff --git a/pkg/controller/deployer.go b/pkg/controller/deployer.go index 186e4c44..826f1898 100644 --- a/pkg/controller/deployer.go +++ b/pkg/controller/deployer.go @@ -127,6 +127,7 @@ func (c *CanaryDeployer) IsNewSpec(cd *flaggerv1.Canary) (bool, error) { // SetFailedChecks updates the canary failed checks counter func (c *CanaryDeployer) SetFailedChecks(cd *flaggerv1.Canary, val int) error { cd.Status.FailedChecks = val + cd.Status.LastTransitionTime = metav1.Now() cd, err := c.flaggerClient.FlaggerV1alpha1().Canaries(cd.Namespace).Update(cd) if err != nil { return fmt.Errorf("deployment %s.%s update error %v", cd.Spec.TargetRef.Name, cd.Namespace, err) @@ -137,6 +138,7 @@ func (c *CanaryDeployer) SetFailedChecks(cd *flaggerv1.Canary, val int) error { // SetState updates the canary status state func (c *CanaryDeployer) SetState(cd *flaggerv1.Canary, state string) error { cd.Status.State = state + cd.Status.LastTransitionTime = metav1.Now() cd, err := c.flaggerClient.FlaggerV1alpha1().Canaries(cd.Namespace).Update(cd) if err != nil { return fmt.Errorf("deployment %s.%s update error %v", cd.Spec.TargetRef.Name, cd.Namespace, err) @@ -163,6 +165,7 @@ func (c *CanaryDeployer) SyncStatus(cd *flaggerv1.Canary, status flaggerv1.Canar cd.Status.State = status.State cd.Status.FailedChecks = status.FailedChecks cd.Status.CanaryRevision = specEnc + cd.Status.LastTransitionTime = metav1.Now() cd, err = c.flaggerClient.FlaggerV1alpha1().Canaries(cd.Namespace).Update(cd) if err != nil { return fmt.Errorf("deployment %s.%s update error %v", cd.Spec.TargetRef.Name, cd.Namespace, err) diff --git a/pkg/controller/deployer_test.go b/pkg/controller/deployer_test.go index 2f0bd5d4..9171057c 100644 --- a/pkg/controller/deployer_test.go +++ b/pkg/controller/deployer_test.go @@ -162,7 +162,7 @@ func newTestHPA() *hpav2.HorizontalPodAutoscaler { { Type: "Resource", Resource: &hpav2.ResourceMetricSource{ - Name: "cpu", + Name: "cpu", TargetAverageUtilization: int32p(99), }, },