diff --git a/CHANGELOG.md b/CHANGELOG.md index ad0475dc4..b8f59265b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Replace custom `time.Time` wrapper `DeepCopyTime` with Kubernetes built-in `metav1.Time`. + ## [0.2.6] - 2020-04-15 ### Added diff --git a/go.sum b/go.sum index 3485c115f..45113fdde 100644 --- a/go.sum +++ b/go.sum @@ -195,6 +195,7 @@ github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.0.0-20141017032234-72f9bd7c4e0c/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -279,6 +280,7 @@ github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTd github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.0-20180319062004-c439c4fa0937/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= diff --git a/pkg/apis/application/v1alpha1/app_types.go b/pkg/apis/application/v1alpha1/app_types.go index 94a9bb9fc..39099f62f 100644 --- a/pkg/apis/application/v1alpha1/app_types.go +++ b/pkg/apis/application/v1alpha1/app_types.go @@ -382,7 +382,7 @@ type AppStatus struct { type AppStatusRelease struct { // LastDeployed is the time when the app was last deployed. - LastDeployed DeepCopyTime `json:"lastDeployed" yaml:"lastDeployed"` + LastDeployed metav1.Time `json:"lastDeployed" yaml:"lastDeployed"` // Reason is the description of the last status of helm release when the app is // not installed successfully, e.g. deploy resource already exists. Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` diff --git a/pkg/apis/application/v1alpha1/chart_types.go b/pkg/apis/application/v1alpha1/chart_types.go index 5515189f4..5eb907c32 100644 --- a/pkg/apis/application/v1alpha1/chart_types.go +++ b/pkg/apis/application/v1alpha1/chart_types.go @@ -260,7 +260,7 @@ type ChartStatus struct { type ChartStatusRelease struct { // LastDeployed is the time when the deployed chart was last deployed. - LastDeployed DeepCopyTime `json:"lastDeployed" yaml:"lastDeployed"` + LastDeployed metav1.Time `json:"lastDeployed" yaml:"lastDeployed"` // Revision is the revision number for this deployed chart. Revision int `json:"revision" yaml:"revision"` // Status is the status of the deployed chart, diff --git a/pkg/apis/application/v1alpha1/deep_copy.go b/pkg/apis/application/v1alpha1/deep_copy.go deleted file mode 100644 index af23f259e..000000000 --- a/pkg/apis/application/v1alpha1/deep_copy.go +++ /dev/null @@ -1,15 +0,0 @@ -package v1alpha1 - -import ( - "time" -) - -// DeepCopyTime implements the deep copy logic for time.Time which the k8s -// codegen is not able to generate out of the box. -type DeepCopyTime struct { - time.Time -} - -func (in *DeepCopyTime) DeepCopyInto(out *DeepCopyTime) { - *out = *in -} diff --git a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go index 38271af04..8fb898661 100644 --- a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go @@ -593,13 +593,3 @@ func (in *ChartStatusRelease) DeepCopy() *ChartStatusRelease { in.DeepCopyInto(out) return out } - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepCopyTime. -func (in *DeepCopyTime) DeepCopy() *DeepCopyTime { - if in == nil { - return nil - } - out := new(DeepCopyTime) - in.DeepCopyInto(out) - return out -} diff --git a/pkg/apis/backup/v1alpha1/deep_copy.go b/pkg/apis/backup/v1alpha1/deep_copy.go deleted file mode 100644 index af23f259e..000000000 --- a/pkg/apis/backup/v1alpha1/deep_copy.go +++ /dev/null @@ -1,15 +0,0 @@ -package v1alpha1 - -import ( - "time" -) - -// DeepCopyTime implements the deep copy logic for time.Time which the k8s -// codegen is not able to generate out of the box. -type DeepCopyTime struct { - time.Time -} - -func (in *DeepCopyTime) DeepCopyInto(out *DeepCopyTime) { - *out = *in -} diff --git a/pkg/apis/backup/v1alpha1/etcd_backup_types.go b/pkg/apis/backup/v1alpha1/etcd_backup_types.go index b3bb75ace..bd1cb1294 100644 --- a/pkg/apis/backup/v1alpha1/etcd_backup_types.go +++ b/pkg/apis/backup/v1alpha1/etcd_backup_types.go @@ -111,9 +111,9 @@ type ETCDBackupStatus struct { // Status of the whole backup job (can be 'Pending', 'Running'. 'Completed', 'Failed') Status string `json:"status" yaml:"status"` // Timestamp when the first attempt was made - StartedTimestamp DeepCopyTime `json:"startedTimestamp,omitempty" yaml:"startedTimestamp"` + StartedTimestamp metav1.Time `json:"startedTimestamp,omitempty" yaml:"startedTimestamp"` // Timestamp when the last (final) attempt was made (when the Phase became either 'Completed' or 'Failed' - FinishedTimestamp DeepCopyTime `json:"finishedTimestamp,omitempty" yaml:"finishedTimestamp"` + FinishedTimestamp metav1.Time `json:"finishedTimestamp,omitempty" yaml:"finishedTimestamp"` } type ETCDInstanceBackupStatusIndex struct { @@ -129,9 +129,9 @@ type ETCDInstanceBackupStatus struct { // Status of this isntance's backup job (can be 'Pending', 'Running'. 'Completed', 'Failed') Status string `json:"status" yaml:"status"` // Timestamp when the first attempt was made - StartedTimestamp DeepCopyTime `json:"startedTimestamp,omitempty" yaml:"startedTimestamp"` + StartedTimestamp metav1.Time `json:"startedTimestamp,omitempty" yaml:"startedTimestamp"` // Timestamp when the last (final) attempt was made (when the Phase became either 'Completed' or 'Failed' - FinishedTimestamp DeepCopyTime `json:"finishedTimestamp,omitempty" yaml:"finishedTimestamp"` + FinishedTimestamp metav1.Time `json:"finishedTimestamp,omitempty" yaml:"finishedTimestamp"` // Latest backup error message LatestError string `json:"latestError,omitempty" yaml:"latestError,omitempty"` // Time took by the backup creation process diff --git a/pkg/apis/backup/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/backup/v1alpha1/zz_generated.deepcopy.go index ce8d17c17..6b2a1e60d 100644 --- a/pkg/apis/backup/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/backup/v1alpha1/zz_generated.deepcopy.go @@ -24,16 +24,6 @@ import ( runtime "k8s.io/apimachinery/pkg/runtime" ) -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepCopyTime. -func (in *DeepCopyTime) DeepCopy() *DeepCopyTime { - if in == nil { - return nil - } - out := new(DeepCopyTime) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ETCDBackup) DeepCopyInto(out *ETCDBackup) { *out = *in diff --git a/pkg/apis/core/v1alpha1/cluster_types.go b/pkg/apis/core/v1alpha1/cluster_types.go index 265abc056..18d591a29 100644 --- a/pkg/apis/core/v1alpha1/cluster_types.go +++ b/pkg/apis/core/v1alpha1/cluster_types.go @@ -97,10 +97,10 @@ type ClusterSpec struct { // creation and made available here. type ClusterStatus struct { // LastHeartbeatTime is the last time we got an update on a given condition. - LastHeartbeatTime DeepCopyTime `json:"lastHeartbeatTime" yaml:"lastHeartbeatTime"` + LastHeartbeatTime metav1.Time `json:"lastHeartbeatTime" yaml:"lastHeartbeatTime"` // LastTransitionTime is the last time the condition transitioned from one // status to another. - LastTransitionTime DeepCopyTime `json:"lastTransitionTime" yaml:"lastTransitionTime"` + LastTransitionTime metav1.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"` // Cluster holds cluster specific status information. Cluster ClusterStatusCluster `json:"cluster" yaml:"cluster"` // Conditions is a list of status conditions. diff --git a/pkg/apis/core/v1alpha1/deep_copy.go b/pkg/apis/core/v1alpha1/deep_copy.go deleted file mode 100644 index af23f259e..000000000 --- a/pkg/apis/core/v1alpha1/deep_copy.go +++ /dev/null @@ -1,15 +0,0 @@ -package v1alpha1 - -import ( - "time" -) - -// DeepCopyTime implements the deep copy logic for time.Time which the k8s -// codegen is not able to generate out of the box. -type DeepCopyTime struct { - time.Time -} - -func (in *DeepCopyTime) DeepCopyInto(out *DeepCopyTime) { - *out = *in -} diff --git a/pkg/apis/core/v1alpha1/drainer_funcs.go b/pkg/apis/core/v1alpha1/drainer_funcs.go index 2ea6467cb..b309975bc 100644 --- a/pkg/apis/core/v1alpha1/drainer_funcs.go +++ b/pkg/apis/core/v1alpha1/drainer_funcs.go @@ -1,6 +1,8 @@ package v1alpha1 -import "time" +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) func (s DrainerConfigStatus) HasDrainedCondition() bool { return hasDrainerConfigCondition(s.Conditions, DrainerConfigStatusStatusTrue, DrainerConfigStatusTypeDrained) @@ -12,7 +14,7 @@ func (s DrainerConfigStatus) HasTimeoutCondition() bool { func (s DrainerConfigStatus) NewDrainedCondition() DrainerConfigStatusCondition { return DrainerConfigStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Status: DrainerConfigStatusStatusTrue, Type: DrainerConfigStatusTypeDrained, } @@ -20,7 +22,7 @@ func (s DrainerConfigStatus) NewDrainedCondition() DrainerConfigStatusCondition func (s DrainerConfigStatus) NewTimeoutCondition() DrainerConfigStatusCondition { return DrainerConfigStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Status: DrainerConfigStatusStatusTrue, Type: DrainerConfigStatusTypeTimeout, } diff --git a/pkg/apis/core/v1alpha1/drainer_funcs_test.go b/pkg/apis/core/v1alpha1/drainer_funcs_test.go index 1cd024e4b..b4fa31830 100644 --- a/pkg/apis/core/v1alpha1/drainer_funcs_test.go +++ b/pkg/apis/core/v1alpha1/drainer_funcs_test.go @@ -3,6 +3,8 @@ package v1alpha1 import ( "testing" "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func Test_HasDrainedCondition(t *testing.T) { @@ -20,8 +22,8 @@ func Test_HasDrainedCondition(t *testing.T) { name: "case 1: DrainerConfigStatus with Drained status condition in conditions", status: DrainerConfigStatus{ Conditions: []DrainerConfigStatusCondition{ - DrainerConfigStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + { + LastTransitionTime: metav1.Time{Time: time.Now()}, Status: DrainerConfigStatusStatusTrue, Type: DrainerConfigStatusTypeDrained, }, @@ -33,8 +35,8 @@ func Test_HasDrainedCondition(t *testing.T) { name: "case 2: DrainerConfigStatus with Timeout status condition in conditions doesn't have Drained condition", status: DrainerConfigStatus{ Conditions: []DrainerConfigStatusCondition{ - DrainerConfigStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + { + LastTransitionTime: metav1.Time{Time: time.Now()}, Status: DrainerConfigStatusStatusTrue, Type: DrainerConfigStatusTypeTimeout, }, @@ -70,8 +72,8 @@ func Test_HasTimeoutCondition(t *testing.T) { name: "case 1: DrainerConfigStatus with Timeout status condition in conditions", status: DrainerConfigStatus{ Conditions: []DrainerConfigStatusCondition{ - DrainerConfigStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + { + LastTransitionTime: metav1.Time{Time: time.Now()}, Status: DrainerConfigStatusStatusTrue, Type: DrainerConfigStatusTypeTimeout, }, @@ -83,8 +85,8 @@ func Test_HasTimeoutCondition(t *testing.T) { name: "case 2: DrainerConfigStatus with Drained status condition in conditions doesn't have Timeout condition", status: DrainerConfigStatus{ Conditions: []DrainerConfigStatusCondition{ - DrainerConfigStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + { + LastTransitionTime: metav1.Time{Time: time.Now()}, Status: DrainerConfigStatusStatusTrue, Type: DrainerConfigStatusTypeDrained, }, diff --git a/pkg/apis/core/v1alpha1/drainer_types.go b/pkg/apis/core/v1alpha1/drainer_types.go index f5d30edcb..2df2ccaea 100644 --- a/pkg/apis/core/v1alpha1/drainer_types.go +++ b/pkg/apis/core/v1alpha1/drainer_types.go @@ -125,10 +125,10 @@ type DrainerConfigStatus struct { // DrainerConfigStatusCondition expresses a condition in which a node may is. type DrainerConfigStatusCondition struct { // LastHeartbeatTime is the last time we got an update on a given condition. - LastHeartbeatTime DeepCopyTime `json:"lastHeartbeatTime" yaml:"lastHeartbeatTime"` + LastHeartbeatTime metav1.Time `json:"lastHeartbeatTime" yaml:"lastHeartbeatTime"` // LastTransitionTime is the last time the condition transitioned from one // status to another. - LastTransitionTime DeepCopyTime `json:"lastTransitionTime" yaml:"lastTransitionTime"` + LastTransitionTime metav1.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"` // Status may be True, False or Unknown. Status string `json:"status" yaml:"status"` // Type may be Pending, Ready, Draining, Drained. diff --git a/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go index fac20338b..c5a2e70aa 100644 --- a/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go @@ -875,16 +875,6 @@ func (in *ClusterStatusCondition) DeepCopy() *ClusterStatusCondition { return out } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepCopyTime. -func (in *DeepCopyTime) DeepCopy() *DeepCopyTime { - if in == nil { - return nil - } - out := new(DeepCopyTime) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DrainerConfig) DeepCopyInto(out *DrainerConfig) { *out = *in diff --git a/pkg/apis/infrastructure/v1alpha2/common_cluster_status_funcs.go b/pkg/apis/infrastructure/v1alpha2/common_cluster_status_funcs.go index eafa4c55b..3592ae21c 100644 --- a/pkg/apis/infrastructure/v1alpha2/common_cluster_status_funcs.go +++ b/pkg/apis/infrastructure/v1alpha2/common_cluster_status_funcs.go @@ -3,6 +3,8 @@ package v1alpha2 import ( "sort" "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func (s CommonClusterStatus) GetCreatedCondition() CommonClusterStatusCondition { @@ -79,7 +81,7 @@ func (s CommonClusterStatus) LatestVersion() string { func (s CommonClusterStatus) WithCreatedCondition() []CommonClusterStatusCondition { newCondition := CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Condition: ClusterStatusConditionCreated, } @@ -88,7 +90,7 @@ func (s CommonClusterStatus) WithCreatedCondition() []CommonClusterStatusConditi func (s CommonClusterStatus) WithCreatingCondition() []CommonClusterStatusCondition { newCondition := CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Condition: ClusterStatusConditionCreating, } @@ -97,7 +99,7 @@ func (s CommonClusterStatus) WithCreatingCondition() []CommonClusterStatusCondit func (s CommonClusterStatus) WithDeletedCondition() []CommonClusterStatusCondition { newCondition := CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Condition: ClusterStatusConditionDeleted, } @@ -106,7 +108,7 @@ func (s CommonClusterStatus) WithDeletedCondition() []CommonClusterStatusConditi func (s CommonClusterStatus) WithDeletingCondition() []CommonClusterStatusCondition { newCondition := CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Condition: ClusterStatusConditionDeleting, } @@ -115,7 +117,7 @@ func (s CommonClusterStatus) WithDeletingCondition() []CommonClusterStatusCondit func (s CommonClusterStatus) WithNewVersion(version string) []CommonClusterStatusVersion { newVersion := CommonClusterStatusVersion{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Version: version, } @@ -124,7 +126,7 @@ func (s CommonClusterStatus) WithNewVersion(version string) []CommonClusterStatu func (s CommonClusterStatus) WithUpdatedCondition() []CommonClusterStatusCondition { newCondition := CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Condition: ClusterStatusConditionUpdated, } @@ -133,7 +135,7 @@ func (s CommonClusterStatus) WithUpdatedCondition() []CommonClusterStatusConditi func (s CommonClusterStatus) WithUpdatingCondition() []CommonClusterStatusCondition { newCondition := CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Condition: ClusterStatusConditionUpdating, } @@ -219,7 +221,7 @@ func withCondition(conditions []CommonClusterStatusCondition, condition CommonCl // automatically added condition does not obtain a reasonable timestamp. // Here we take the timestamp of the new condition we want to track and // substract one nano second from it to keep the order intact. - LastTransitionTime: DeepCopyTime{condition.LastTransitionTime.Add(-(1 * time.Nanosecond))}, + LastTransitionTime: metav1.Time{Time: condition.LastTransitionTime.Add(-(1 * time.Nanosecond))}, Condition: getConditionForPair(condition), } newConditions = append(newConditions, injected) @@ -259,7 +261,7 @@ func withCondition(conditions []CommonClusterStatusCondition, condition CommonCl // the grouped item from the list. if len(g) == 0 { g = append(g, c) - newConditions = newConditions[1:len(newConditions)] + newConditions = newConditions[1:] continue } @@ -267,7 +269,7 @@ func withCondition(conditions []CommonClusterStatusCondition, condition CommonCl if len(g) == 1 { if isConditionPair(g[0], c) { g = append(g, c) - newConditions = newConditions[1:len(newConditions)] + newConditions = newConditions[1:] } break } @@ -286,14 +288,14 @@ func withCondition(conditions []CommonClusterStatusCondition, condition CommonCl for _, g := range conditionGroups { if len(p) == 0 { p = append(p, g...) - conditionGroups = conditionGroups[1:len(conditionGroups)] + conditionGroups = conditionGroups[1:] continue } if len(g) >= 1 { if isConditionPair(p[0], g[0]) || isConditionPair(p[1], g[0]) { p = append(p, g...) - conditionGroups = conditionGroups[1:len(conditionGroups)] + conditionGroups = conditionGroups[1:] } } } @@ -316,7 +318,7 @@ func withCondition(conditions []CommonClusterStatusCondition, condition CommonCl l = len(p) } - limittedList = append(limittedList, p[len(p)-l:len(p)]...) + limittedList = append(limittedList, p[len(p)-l:]...) } // We reverse the list order to have the item with the highest timestamp at diff --git a/pkg/apis/infrastructure/v1alpha2/common_cluster_status_funcs_test.go b/pkg/apis/infrastructure/v1alpha2/common_cluster_status_funcs_test.go index cb066715c..fa089538d 100644 --- a/pkg/apis/infrastructure/v1alpha2/common_cluster_status_funcs_test.go +++ b/pkg/apis/infrastructure/v1alpha2/common_cluster_status_funcs_test.go @@ -7,6 +7,7 @@ import ( "time" "github.com/google/go-cmp/cmp" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func Test_Provider_Status_LatestVersion(t *testing.T) { @@ -27,7 +28,7 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { CommonClusterStatus: CommonClusterStatus{ Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, }, @@ -39,11 +40,11 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { CommonClusterStatus: CommonClusterStatus{ Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "2.0.0", }, }, @@ -55,15 +56,15 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { CommonClusterStatus: CommonClusterStatus{ Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "2.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Version: "3.0.0", }, }, @@ -75,15 +76,15 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { CommonClusterStatus: CommonClusterStatus{ Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "2.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Version: "3.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, }, @@ -95,20 +96,20 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { CommonClusterStatus: CommonClusterStatus{ Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{ - time.Unix(20, 0), + LastTransitionTime: metav1.Time{ + Time: time.Unix(20, 0), }, Version: "2.0.0", }, { - LastTransitionTime: DeepCopyTime{ - time.Unix(30, 0), + LastTransitionTime: metav1.Time{ + Time: time.Unix(30, 0), }, Version: "3.0.0", }, { - LastTransitionTime: DeepCopyTime{ - time.Unix(10, 0), + LastTransitionTime: metav1.Time{ + Time: time.Unix(10, 0), }, Version: "1.0.0", }, @@ -139,13 +140,13 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 0: the creation of the tenant cluster starts", conditions: []CommonClusterStatusCondition{}, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -154,22 +155,22 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 1: the creation of the tenant cluster ends", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -178,30 +179,30 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 2: the first update of the tenant cluster starts", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -210,38 +211,38 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 3: the first update of the tenant cluster ends", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -250,46 +251,46 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 4: the second update of the tenant cluster starts", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -298,54 +299,54 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 5: the second update of the tenant cluster ends", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(70, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(70, 0)}, Condition: ClusterStatusConditionUpdated, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(70, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(70, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -354,54 +355,54 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 6: the third update of the tenant cluster starts", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(70, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(70, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(80, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(80, 0)}, Condition: ClusterStatusConditionUpdating, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(80, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(80, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(70, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(70, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -410,62 +411,62 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 7: the third update of the tenant cluster ends", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(80, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(80, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(70, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(70, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(90, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(90, 0)}, Condition: ClusterStatusConditionUpdated, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(90, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(90, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(80, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(80, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(70, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(70, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -474,26 +475,26 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 8: the second update of the tenant cluster starts before the first ended", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdating, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdating, }, // This Updated condition is added automatically when adding the @@ -503,19 +504,19 @@ func Test_Provider_Status_withCondition(t *testing.T) { // tracked timestamp for the automatically added condition is off and // does not reflect the truth. { - LastTransitionTime: DeepCopyTime{time.Unix(50, -1)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, -1)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -524,42 +525,42 @@ func Test_Provider_Status_withCondition(t *testing.T) { name: "case 9: the fourth update of the tenant cluster starts before the thrird ended", conditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(80, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(80, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(70, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(70, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, condition: CommonClusterStatusCondition{ - LastTransitionTime: DeepCopyTime{time.Unix(90, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(90, 0)}, Condition: ClusterStatusConditionUpdating, }, limit: 2, expectedConditions: []CommonClusterStatusCondition{ { - LastTransitionTime: DeepCopyTime{time.Unix(90, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(90, 0)}, Condition: ClusterStatusConditionUpdating, }, // This Updated condition is added automatically when adding the @@ -569,19 +570,19 @@ func Test_Provider_Status_withCondition(t *testing.T) { // tracked timestamp for the automatically added condition is off and // does not reflect the truth. { - LastTransitionTime: DeepCopyTime{time.Unix(90, -1)}, + LastTransitionTime: metav1.Time{Time: time.Unix(90, -1)}, Condition: ClusterStatusConditionUpdated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(80, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(80, 0)}, Condition: ClusterStatusConditionUpdating, }, { - LastTransitionTime: DeepCopyTime{time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Condition: ClusterStatusConditionCreated, }, { - LastTransitionTime: DeepCopyTime{time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Condition: ClusterStatusConditionCreating, }, }, @@ -611,13 +612,13 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 0: list with zero items results in a list with one item", Versions: []CommonClusterStatusVersion{}, Version: CommonClusterStatusVersion{ - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, Limit: 3, ExpectedVersions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, }, @@ -626,22 +627,22 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 1: list with one item results in a list with two items", Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, }, Version: CommonClusterStatusVersion{ - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.1.0", }, Limit: 3, ExpectedVersions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.1.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, }, @@ -650,30 +651,30 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 2: list with two items results in a list with three items", Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.1.0", }, }, Version: CommonClusterStatusVersion{ - LastTransitionTime: DeepCopyTime{Time: time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Version: "1.5.0", }, Limit: 3, ExpectedVersions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Version: "1.5.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.1.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, }, @@ -682,34 +683,34 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 3: list with three items results in a list with three items due to limit", Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.1.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Version: "1.5.0", }, }, Version: CommonClusterStatusVersion{ - LastTransitionTime: DeepCopyTime{Time: time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Version: "3.0.0", }, Limit: 3, ExpectedVersions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Version: "3.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Version: "1.5.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.1.0", }, }, @@ -718,42 +719,42 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 4: list with five items results in a list with three items due to limit", Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.1.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Version: "1.5.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Version: "3.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Version: "3.2.0", }, }, Version: CommonClusterStatusVersion{ - LastTransitionTime: DeepCopyTime{Time: time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Version: "3.3.0", }, Limit: 3, ExpectedVersions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Version: "3.3.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Version: "3.2.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Version: "3.0.0", }, }, @@ -762,42 +763,42 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 5: same as 4 but checking items are ordered by date before cutting off", Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Version: "3.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.1.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Version: "3.2.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(30, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(30, 0)}, Version: "1.5.0", }, }, Version: CommonClusterStatusVersion{ - LastTransitionTime: DeepCopyTime{Time: time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Version: "3.3.0", }, Limit: 3, ExpectedVersions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(60, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(60, 0)}, Version: "3.3.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(50, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(50, 0)}, Version: "3.2.0", }, { - LastTransitionTime: DeepCopyTime{Time: time.Unix(40, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(40, 0)}, Version: "3.0.0", }, }, @@ -806,18 +807,18 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 6: list with one item results in a list with one item in case the version already exists", Versions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, }, Version: CommonClusterStatusVersion{ - LastTransitionTime: DeepCopyTime{Time: time.Unix(20, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(20, 0)}, Version: "1.0.0", }, Limit: 3, ExpectedVersions: []CommonClusterStatusVersion{ { - LastTransitionTime: DeepCopyTime{Time: time.Unix(10, 0)}, + LastTransitionTime: metav1.Time{Time: time.Unix(10, 0)}, Version: "1.0.0", }, }, diff --git a/pkg/apis/infrastructure/v1alpha2/common_cluster_status_types.go b/pkg/apis/infrastructure/v1alpha2/common_cluster_status_types.go index 9ecc7bac9..037869680 100644 --- a/pkg/apis/infrastructure/v1alpha2/common_cluster_status_types.go +++ b/pkg/apis/infrastructure/v1alpha2/common_cluster_status_types.go @@ -1,5 +1,7 @@ package v1alpha2 +import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + const ( // ClusterConditionLimit is the maximum amount of conditions tracked in the // condition list of a tenant cluster's status. The limit here is applied to @@ -72,15 +74,15 @@ const ( var ( conditionPairs = [][]string{ - []string{ + { ClusterStatusConditionCreated, ClusterStatusConditionCreating, }, - []string{ + { ClusterStatusConditionDeleted, ClusterStatusConditionDeleting, }, - []string{ + { ClusterStatusConditionUpdated, ClusterStatusConditionUpdating, }, @@ -101,7 +103,7 @@ type CommonClusterStatus struct { // CommonClusterStatusCondition explains the current condition(s) of the cluster. type CommonClusterStatusCondition struct { // Time the condition occurred. - LastTransitionTime DeepCopyTime `json:"lastTransitionTime" yaml:"lastTransitionTime"` + LastTransitionTime metav1.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"` // Condition string, e. g. `Creating`, `Created`, `Upgraded` Condition string `json:"condition" yaml:"condition"` } @@ -109,7 +111,7 @@ type CommonClusterStatusCondition struct { // CommonClusterStatusVersion informs which aws-operator version was/responsible for this cluster. type CommonClusterStatusVersion struct { // Time the cluster assumed the given version. - LastTransitionTime DeepCopyTime `json:"lastTransitionTime" yaml:"lastTransitionTime"` + LastTransitionTime metav1.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"` // The aws-operator version responsible for handling the cluster. Version string `json:"version" yaml:"version"` } diff --git a/pkg/apis/infrastructure/v1alpha2/deep_copy.go b/pkg/apis/infrastructure/v1alpha2/deep_copy.go deleted file mode 100644 index 2df3c16f0..000000000 --- a/pkg/apis/infrastructure/v1alpha2/deep_copy.go +++ /dev/null @@ -1,15 +0,0 @@ -package v1alpha2 - -import ( - "time" -) - -// DeepCopyTime implements the deep copy logic for time.Time which the k8s -// codegen is not able to generate out of the box. -type DeepCopyTime struct { - time.Time -} - -func (in *DeepCopyTime) DeepCopyInto(out *DeepCopyTime) { - *out = *in -} diff --git a/pkg/apis/infrastructure/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/infrastructure/v1alpha2/zz_generated.deepcopy.go index 02bf9357f..487bbd5a1 100644 --- a/pkg/apis/infrastructure/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/infrastructure/v1alpha2/zz_generated.deepcopy.go @@ -672,16 +672,6 @@ func (in *CommonClusterStatusVersion) DeepCopy() *CommonClusterStatusVersion { return out } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepCopyTime. -func (in *DeepCopyTime) DeepCopy() *DeepCopyTime { - if in == nil { - return nil - } - out := new(DeepCopyTime) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *G8sControlPlane) DeepCopyInto(out *G8sControlPlane) { *out = *in diff --git a/pkg/apis/provider/v1alpha1/deep_copy.go b/pkg/apis/provider/v1alpha1/deep_copy.go deleted file mode 100644 index bcf8e8fe7..000000000 --- a/pkg/apis/provider/v1alpha1/deep_copy.go +++ /dev/null @@ -1,25 +0,0 @@ -package v1alpha1 - -import ( - "time" -) - -// DeepCopyDuration implements the deep copy logic for time.Duration which the k8s -// codegen is not able to generate out of the box. -type DeepCopyDuration struct { - time.Time -} - -func (in *DeepCopyDuration) DeepCopyInto(out *DeepCopyDuration) { - *out = *in -} - -// DeepCopyTime implements the deep copy logic for time.Time which the k8s -// codegen is not able to generate out of the box. -type DeepCopyTime struct { - time.Time -} - -func (in *DeepCopyTime) DeepCopyInto(out *DeepCopyTime) { - *out = *in -} diff --git a/pkg/apis/provider/v1alpha1/status_funcs.go b/pkg/apis/provider/v1alpha1/status_funcs.go index 43d873c71..4e24590eb 100644 --- a/pkg/apis/provider/v1alpha1/status_funcs.go +++ b/pkg/apis/provider/v1alpha1/status_funcs.go @@ -3,12 +3,14 @@ package v1alpha1 import ( "sort" "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func NewStatusClusterNode(name, version string, labels map[string]string) StatusClusterNode { return StatusClusterNode{ Labels: labels, - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Name: name, Version: version, } @@ -74,7 +76,7 @@ func (s StatusCluster) LatestVersion() string { latest := s.Versions[0] for _, v := range s.Versions { - if latest.LastTransitionTime.Time.Before(v.LastTransitionTime.Time) || latest.Date.Before(v.Date) { + if latest.LastTransitionTime.Before(&v.LastTransitionTime) || latest.Date.Before(&v.Date) { latest = v } } @@ -100,7 +102,7 @@ func (s StatusCluster) WithDeletingCondition() []StatusClusterCondition { func (s StatusCluster) WithNewVersion(version string) []StatusClusterVersion { newVersion := StatusClusterVersion{ - LastTransitionTime: DeepCopyTime{time.Now()}, + LastTransitionTime: metav1.Now(), Semver: version, } @@ -148,7 +150,7 @@ func hasVersion(versions []StatusClusterVersion, search string) bool { func withCondition(conditions []StatusClusterCondition, search string, replace string, status string, t time.Time) []StatusClusterCondition { newConditions := []StatusClusterCondition{ { - LastTransitionTime: DeepCopyTime{t}, + LastTransitionTime: metav1.Time{Time: t}, Status: status, Type: replace, }, diff --git a/pkg/apis/provider/v1alpha1/status_funcs_test.go b/pkg/apis/provider/v1alpha1/status_funcs_test.go index 71077890a..7ed7ef8ff 100644 --- a/pkg/apis/provider/v1alpha1/status_funcs_test.go +++ b/pkg/apis/provider/v1alpha1/status_funcs_test.go @@ -4,6 +4,8 @@ import ( "reflect" "testing" "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func Test_Provider_Status_LatestVersion(t *testing.T) { @@ -24,7 +26,7 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { StatusCluster: StatusCluster{ Versions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, }, @@ -36,11 +38,11 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { StatusCluster: StatusCluster{ Versions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "2.0.0", }, }, @@ -52,15 +54,15 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { StatusCluster: StatusCluster{ Versions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "2.0.0", }, { - Date: time.Unix(30, 0), + Date: metav1.Time{Time: time.Unix(30, 0)}, Semver: "3.0.0", }, }, @@ -72,15 +74,15 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { StatusCluster: StatusCluster{ Versions: []StatusClusterVersion{ { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "2.0.0", }, { - Date: time.Unix(30, 0), + Date: metav1.Time{Time: time.Unix(30, 0)}, Semver: "3.0.0", }, { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, }, @@ -92,24 +94,24 @@ func Test_Provider_Status_LatestVersion(t *testing.T) { StatusCluster: StatusCluster{ Versions: []StatusClusterVersion{ { - LastTransitionTime: DeepCopyTime{ - time.Unix(20, 0), + LastTransitionTime: metav1.Time{ + Time: time.Unix(20, 0), }, - Date: time.Time{}, + Date: metav1.Time{}, Semver: "2.0.0", }, { - LastTransitionTime: DeepCopyTime{ - time.Unix(30, 0), + LastTransitionTime: metav1.Time{ + Time: time.Unix(30, 0), }, - Date: time.Time{}, + Date: metav1.Time{}, Semver: "3.0.0", }, { - LastTransitionTime: DeepCopyTime{ - time.Unix(10, 0), + LastTransitionTime: metav1.Time{ + Time: time.Unix(10, 0), }, - Date: time.Time{}, + Date: metav1.Time{}, Semver: "1.0.0", }, }, @@ -146,7 +148,7 @@ func Test_Provider_Status_withCondition(t *testing.T) { Status: StatusClusterStatusTrue, ExpectedConditions: []StatusClusterCondition{ { - LastTransitionTime: DeepCopyTime{testTime}, + LastTransitionTime: metav1.Time{Time: testTime}, Status: StatusClusterStatusTrue, Type: StatusClusterTypeCreated, }, @@ -156,7 +158,7 @@ func Test_Provider_Status_withCondition(t *testing.T) { Name: "case 1", Conditions: []StatusClusterCondition{ { - LastTransitionTime: DeepCopyTime{testTime}, + LastTransitionTime: metav1.Time{Time: testTime}, Status: StatusClusterStatusTrue, Type: StatusClusterTypeCreating, }, @@ -166,7 +168,7 @@ func Test_Provider_Status_withCondition(t *testing.T) { Status: StatusClusterStatusTrue, ExpectedConditions: []StatusClusterCondition{ { - LastTransitionTime: DeepCopyTime{testTime}, + LastTransitionTime: metav1.Time{Time: testTime}, Status: StatusClusterStatusTrue, Type: StatusClusterTypeCreated, }, @@ -195,13 +197,13 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 0: list with zero items results in a list with one item", Versions: []StatusClusterVersion{}, Version: StatusClusterVersion{ - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, Limit: 3, ExpectedVersions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, }, @@ -210,22 +212,22 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 1: list with one item results in a list with two items", Versions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, }, Version: StatusClusterVersion{ - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.1.0", }, Limit: 3, ExpectedVersions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.1.0", }, }, @@ -234,30 +236,30 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 2: list with two items results in a list with three items", Versions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.1.0", }, }, Version: StatusClusterVersion{ - Date: time.Unix(30, 0), + Date: metav1.Time{Time: time.Unix(30, 0)}, Semver: "1.5.0", }, Limit: 3, ExpectedVersions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.1.0", }, { - Date: time.Unix(30, 0), + Date: metav1.Time{Time: time.Unix(30, 0)}, Semver: "1.5.0", }, }, @@ -266,34 +268,34 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 3: list with three items results in a list with three items due to limit", Versions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.1.0", }, { - Date: time.Unix(30, 0), + Date: metav1.Time{Time: time.Unix(30, 0)}, Semver: "1.5.0", }, }, Version: StatusClusterVersion{ - Date: time.Unix(40, 0), + Date: metav1.Time{Time: time.Unix(40, 0)}, Semver: "3.0.0", }, Limit: 3, ExpectedVersions: []StatusClusterVersion{ { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.1.0", }, { - Date: time.Unix(30, 0), + Date: metav1.Time{Time: time.Unix(30, 0)}, Semver: "1.5.0", }, { - Date: time.Unix(40, 0), + Date: metav1.Time{Time: time.Unix(40, 0)}, Semver: "3.0.0", }, }, @@ -302,42 +304,42 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 4: list with five items results in a list with three items due to limit", Versions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.1.0", }, { - Date: time.Unix(30, 0), + Date: metav1.Time{Time: time.Unix(30, 0)}, Semver: "1.5.0", }, { - Date: time.Unix(40, 0), + Date: metav1.Time{Time: time.Unix(40, 0)}, Semver: "3.0.0", }, { - Date: time.Unix(50, 0), + Date: metav1.Time{Time: time.Unix(50, 0)}, Semver: "3.2.0", }, }, Version: StatusClusterVersion{ - Date: time.Unix(60, 0), + Date: metav1.Time{Time: time.Unix(60, 0)}, Semver: "3.3.0", }, Limit: 3, ExpectedVersions: []StatusClusterVersion{ { - Date: time.Unix(40, 0), + Date: metav1.Time{Time: time.Unix(40, 0)}, Semver: "3.0.0", }, { - Date: time.Unix(50, 0), + Date: metav1.Time{Time: time.Unix(50, 0)}, Semver: "3.2.0", }, { - Date: time.Unix(60, 0), + Date: metav1.Time{Time: time.Unix(60, 0)}, Semver: "3.3.0", }, }, @@ -346,42 +348,42 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 5: same as 4 but checking items are ordered by date before cutting off", Versions: []StatusClusterVersion{ { - Date: time.Unix(40, 0), + Date: metav1.Time{Time: time.Unix(40, 0)}, Semver: "3.0.0", }, { - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.1.0", }, { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, { - Date: time.Unix(50, 0), + Date: metav1.Time{Time: time.Unix(50, 0)}, Semver: "3.2.0", }, { - Date: time.Unix(30, 0), + Date: metav1.Time{Time: time.Unix(30, 0)}, Semver: "1.5.0", }, }, Version: StatusClusterVersion{ - Date: time.Unix(60, 0), + Date: metav1.Time{Time: time.Unix(60, 0)}, Semver: "3.3.0", }, Limit: 3, ExpectedVersions: []StatusClusterVersion{ { - Date: time.Unix(40, 0), + Date: metav1.Time{Time: time.Unix(40, 0)}, Semver: "3.0.0", }, { - Date: time.Unix(50, 0), + Date: metav1.Time{Time: time.Unix(50, 0)}, Semver: "3.2.0", }, { - Date: time.Unix(60, 0), + Date: metav1.Time{Time: time.Unix(60, 0)}, Semver: "3.3.0", }, }, @@ -390,18 +392,18 @@ func Test_Provider_Status_withVersion(t *testing.T) { Name: "case 6: list with one item results in a list with one item in case the version already exists", Versions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, }, Version: StatusClusterVersion{ - Date: time.Unix(20, 0), + Date: metav1.Time{Time: time.Unix(20, 0)}, Semver: "1.0.0", }, Limit: 3, ExpectedVersions: []StatusClusterVersion{ { - Date: time.Unix(10, 0), + Date: metav1.Time{Time: time.Unix(10, 0)}, Semver: "1.0.0", }, }, diff --git a/pkg/apis/provider/v1alpha1/status_types.go b/pkg/apis/provider/v1alpha1/status_types.go index 7a3b1f7c2..5b22cf4cb 100644 --- a/pkg/apis/provider/v1alpha1/status_types.go +++ b/pkg/apis/provider/v1alpha1/status_types.go @@ -1,6 +1,8 @@ package v1alpha1 -import "time" +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) const ( ClusterVersionLimit = 5 @@ -50,7 +52,7 @@ type StatusCluster struct { type StatusClusterCondition struct { // LastTransitionTime is the last time the condition transitioned from one // status to another. - LastTransitionTime DeepCopyTime `json:"lastTransitionTime" yaml:"lastTransitionTime"` + LastTransitionTime metav1.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"` // Status may be True, False or Unknown. Status string `json:"status" yaml:"status"` // Type may be Creating, Created, Scaling, Scaled, Draining, Drained, @@ -70,7 +72,7 @@ type StatusClusterNode struct { Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` // LastTransitionTime is the last time the condition transitioned from one // status to another. - LastTransitionTime DeepCopyTime `json:"lastTransitionTime" yaml:"lastTransitionTime"` + LastTransitionTime metav1.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"` // Name referrs to a tenant cluster node name. Name string `json:"name" yaml:"name"` // Version referrs to the version used by the node as mandated by the provider @@ -93,7 +95,7 @@ type StatusClusterResource struct { type StatusClusterResourceCondition struct { // LastTransitionTime is the last time the condition transitioned from one // status to another. - LastTransitionTime DeepCopyTime `json:"lastTransitionTime" yaml:"lastTransitionTime"` + LastTransitionTime metav1.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"` // Status may be True, False or Unknown. Status string `json:"status" yaml:"status"` // Type may be anything an operatorkit resource may define. @@ -115,10 +117,10 @@ type StatusClusterVersion struct { // // https://github.com/giantswarm/giantswarm/issues/3988 // - Date time.Time `json:"date" yaml:"date"` + Date metav1.Time `json:"date" yaml:"date"` // LastTransitionTime is the last time the condition transitioned from one // status to another. - LastTransitionTime DeepCopyTime `json:"lastTransitionTime" yaml:"lastTransitionTime"` + LastTransitionTime metav1.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"` // Semver is some semver version, e.g. 1.0.0. Semver string `json:"semver" yaml:"semver"` } diff --git a/pkg/apis/provider/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/provider/v1alpha1/zz_generated.deepcopy.go index 5d5ba8b32..7fce2c74e 100644 --- a/pkg/apis/provider/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/provider/v1alpha1/zz_generated.deepcopy.go @@ -1074,26 +1074,6 @@ func (in *CredentialSecret) DeepCopy() *CredentialSecret { return out } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepCopyDuration. -func (in *DeepCopyDuration) DeepCopy() *DeepCopyDuration { - if in == nil { - return nil - } - out := new(DeepCopyDuration) - in.DeepCopyInto(out) - return out -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepCopyTime. -func (in *DeepCopyTime) DeepCopy() *DeepCopyTime { - if in == nil { - return nil - } - out := new(DeepCopyTime) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *KVMConfig) DeepCopyInto(out *KVMConfig) { *out = *in diff --git a/pkg/apis/release/v1alpha1/deep_copy.go b/pkg/apis/release/v1alpha1/deep_copy.go index 84e520e0b..409ddd093 100644 --- a/pkg/apis/release/v1alpha1/deep_copy.go +++ b/pkg/apis/release/v1alpha1/deep_copy.go @@ -2,12 +2,14 @@ package v1alpha1 import ( "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // DeepCopyDate is a date type designed to be validated with json-schema date // type. type DeepCopyDate struct { - time.Time + metav1.Time `json:",inline"` } // MarshalJSON implements the json.Marshaler interface. The time is @@ -30,21 +32,7 @@ func (d *DeepCopyDate) UnmarshalJSON(data []byte) error { // Error masking is skipped here as this will go trough generated // unmarshaling code. - var err error - d.Time, err = time.Parse(`"2006-01-02"`, string(data)) + parsed, err := time.Parse(`"2006-01-02"`, string(data)) + d.Time = metav1.Time{Time: parsed} return err } - -func (d *DeepCopyDate) DeepCopyInto(out *DeepCopyDate) { - *out = *d -} - -// DeepCopyTime implements the deep copy logic for time.Time which the k8s -// codegen is not able to generate out of the box. -type DeepCopyTime struct { - time.Time -} - -func (in *DeepCopyTime) DeepCopyInto(out *DeepCopyTime) { - *out = *in -} diff --git a/pkg/apis/release/v1alpha1/deep_copy_test.go b/pkg/apis/release/v1alpha1/deep_copy_test.go index 053cbab69..f29896e0f 100644 --- a/pkg/apis/release/v1alpha1/deep_copy_test.go +++ b/pkg/apis/release/v1alpha1/deep_copy_test.go @@ -6,6 +6,8 @@ import ( "testing" "time" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/google/go-cmp/cmp" ) @@ -41,7 +43,7 @@ func Test_DeepCopyDate_MarshalJSON(t *testing.T) { TestDate *DeepCopyDate `json:"testDate"` }{ TestDate: &DeepCopyDate{ - Time: date, + Time: metav1.Time{Time: date}, }, } @@ -49,7 +51,7 @@ func Test_DeepCopyDate_MarshalJSON(t *testing.T) { TestDate DeepCopyDate `json:"testDate"` }{ TestDate: DeepCopyDate{ - Time: date, + Time: metav1.Time{Time: date}, }, } diff --git a/pkg/apis/release/v1alpha1/release_types.go b/pkg/apis/release/v1alpha1/release_types.go index 9fe5866bd..255e47739 100644 --- a/pkg/apis/release/v1alpha1/release_types.go +++ b/pkg/apis/release/v1alpha1/release_types.go @@ -191,7 +191,7 @@ type ReleaseSpec struct { // Components describes components used in this release. Components []ReleaseSpecComponent `json:"components" yaml:"components"` // Date that the release became active. - Date *DeepCopyTime `json:"date" yaml:"date"` + Date *metav1.Time `json:"date" yaml:"date"` // State indicates the availability of the release: deprecated, active, or wip. State ReleaseState `json:"state" yaml:"state"` } diff --git a/pkg/apis/release/v1alpha1/release_types_test.go b/pkg/apis/release/v1alpha1/release_types_test.go index ba55b6d5a..95047150d 100644 --- a/pkg/apis/release/v1alpha1/release_types_test.go +++ b/pkg/apis/release/v1alpha1/release_types_test.go @@ -18,7 +18,7 @@ import ( "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apiextensions-apiserver/pkg/apiserver/validation" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "sigs.k8s.io/yaml" ) @@ -41,6 +41,7 @@ func Test_NewReleaseCRD(t *testing.T) { } func Test_ReleaseCRValidation(t *testing.T) { + now := metav1.Now() testCases := []struct { name string errors []*errors.Validation @@ -77,13 +78,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 1: normal release is valid", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "v13.1.2", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: stateActive, - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{ { Name: "test-app", @@ -104,13 +105,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 2: one component is required", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "v13.1.2", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: stateActive, - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{ { Name: "test-app", @@ -132,13 +133,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 3: zero apps is valid", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "v13.1.2", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: stateActive, - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{}, Components: []ReleaseSpecComponent{ { @@ -153,13 +154,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 4: non semver version is invalid", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "v13.1.2", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: stateActive, - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{}, Components: []ReleaseSpecComponent{ { @@ -179,13 +180,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 5: semver with leading v is invalid", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "v13.1.2", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: stateActive, - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{}, Components: []ReleaseSpecComponent{ { @@ -205,13 +206,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 6: unknown release state is invalid", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "v13.1.2", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: "bad", - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{}, Components: []ReleaseSpecComponent{ { @@ -231,13 +232,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 7: pre-release component version is valid", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "v13.1.2", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: stateActive, - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{}, Components: []ReleaseSpecComponent{ { @@ -252,13 +253,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 8: non-semver name is invalid", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "bad", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: stateActive, - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{}, Components: []ReleaseSpecComponent{ { @@ -278,13 +279,13 @@ func Test_ReleaseCRValidation(t *testing.T) { { name: "case 9: semver name without v prefix is invalid", cr: Release{ - ObjectMeta: v1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "13.1.2", }, TypeMeta: NewReleaseTypeMeta(), Spec: ReleaseSpec{ State: stateActive, - Date: &DeepCopyTime{time.Now()}, + Date: &now, Apps: []ReleaseSpecApp{}, Components: []ReleaseSpecComponent{ { @@ -430,7 +431,7 @@ func newReleaseExampleCR() *Release { Version: "3.3.17", }, }, - Date: &DeepCopyTime{time.Date(2020, 3, 3, 11, 12, 13, 0, time.UTC)}, + Date: &metav1.Time{Time: time.Date(2020, 3, 3, 11, 12, 13, 0, time.UTC)}, State: stateActive, } return cr diff --git a/pkg/apis/release/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/release/v1alpha1/zz_generated.deepcopy.go index 47a594930..858091fee 100644 --- a/pkg/apis/release/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/release/v1alpha1/zz_generated.deepcopy.go @@ -24,6 +24,13 @@ import ( runtime "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeepCopyDate) DeepCopyInto(out *DeepCopyDate) { + *out = *in + in.Time.DeepCopyInto(&out.Time) + return +} + // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepCopyDate. func (in *DeepCopyDate) DeepCopy() *DeepCopyDate { if in == nil { @@ -34,16 +41,6 @@ func (in *DeepCopyDate) DeepCopy() *DeepCopyDate { return out } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepCopyTime. -func (in *DeepCopyTime) DeepCopy() *DeepCopyTime { - if in == nil { - return nil - } - out := new(DeepCopyTime) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Release) DeepCopyInto(out *Release) { *out = *in