From fb1dc110f26bf5681c6bf7b4f4e1c54879f4dba1 Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Wed, 15 Feb 2023 15:20:41 +0800 Subject: [PATCH] Replace k8s.io/apimachinery/pkg/util/clock with k8s.io/utils/clock Signed-off-by: Zhizhen He --- changelogs/unreleased/5859-hezhizhen | 1 + pkg/cmd/cli/nodeagent/server.go | 4 +- pkg/cmd/server/server.go | 43 ++++++++----------- pkg/controller/backup_controller.go | 35 +++++++-------- pkg/controller/backup_controller_test.go | 16 +++---- .../backup_repository_controller.go | 6 +-- pkg/controller/download_request_controller.go | 6 +-- .../download_request_controller_test.go | 7 +-- pkg/controller/gc_controller.go | 6 +-- pkg/controller/gc_controller_test.go | 6 +-- .../pod_volume_backup_controller.go | 6 +-- .../pod_volume_backup_controller_test.go | 5 +-- .../pod_volume_restore_controller.go | 8 ++-- .../pod_volume_restore_controller_test.go | 4 +- pkg/controller/restore_controller.go | 15 +++---- pkg/controller/schedule_controller.go | 6 +-- pkg/controller/schedule_controller_test.go | 8 ++-- .../server_status_request_controller.go | 6 +-- .../server_status_request_controller_test.go | 5 +-- 19 files changed, 89 insertions(+), 104 deletions(-) create mode 100644 changelogs/unreleased/5859-hezhizhen diff --git a/changelogs/unreleased/5859-hezhizhen b/changelogs/unreleased/5859-hezhizhen new file mode 100644 index 000000000..85b7f974b --- /dev/null +++ b/changelogs/unreleased/5859-hezhizhen @@ -0,0 +1 @@ +Replace k8s.io/apimachinery/pkg/util/clock with k8s.io/utils/clock diff --git a/pkg/cmd/cli/nodeagent/server.go b/pkg/cmd/cli/nodeagent/server.go index ecbf380a6..10e436574 100644 --- a/pkg/cmd/cli/nodeagent/server.go +++ b/pkg/cmd/cli/nodeagent/server.go @@ -34,9 +34,9 @@ import ( "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/kubernetes" + clocks "k8s.io/utils/clock" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache" ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" @@ -204,7 +204,7 @@ func (s *nodeAgentServer) run() { pvbReconciler := controller.PodVolumeBackupReconciler{ Scheme: s.mgr.GetScheme(), Client: s.mgr.GetClient(), - Clock: clock.RealClock{}, + Clock: clocks.RealClock{}, Metrics: s.metrics, CredentialGetter: credentialGetter, NodeName: s.nodeName, diff --git a/pkg/cmd/server/server.go b/pkg/cmd/server/server.go index 200121dca..031e97d17 100644 --- a/pkg/cmd/server/server.go +++ b/pkg/cmd/server/server.go @@ -27,7 +27,11 @@ import ( "strings" "time" - logrusr "github.com/bombsimon/logrusr/v3" + "github.com/bombsimon/logrusr/v3" + snapshotv1api "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" + snapshotv1client "github.com/kubernetes-csi/external-snapshotter/client/v4/clientset/versioned" + snapshotv1informers "github.com/kubernetes-csi/external-snapshotter/client/v4/informers/externalversions" + snapshotv1listers "github.com/kubernetes-csi/external-snapshotter/client/v4/listers/volumesnapshot/v1" "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/sirupsen/logrus" @@ -36,7 +40,6 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/clock" kubeerrs "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" @@ -44,49 +47,39 @@ import ( "k8s.io/client-go/dynamic" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" - - "github.com/vmware-tanzu/velero/pkg/uploader" - - snapshotv1api "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" - snapshotv1client "github.com/kubernetes-csi/external-snapshotter/client/v4/clientset/versioned" - snapshotv1informers "github.com/kubernetes-csi/external-snapshotter/client/v4/informers/externalversions" - snapshotv1listers "github.com/kubernetes-csi/external-snapshotter/client/v4/listers/volumesnapshot/v1" + clocks "k8s.io/utils/clock" + ctrl "sigs.k8s.io/controller-runtime" + ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/manager" "github.com/vmware-tanzu/velero/internal/credentials" "github.com/vmware-tanzu/velero/internal/storage" + "github.com/vmware-tanzu/velero/internal/util/managercontroller" + velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" "github.com/vmware-tanzu/velero/pkg/backup" "github.com/vmware-tanzu/velero/pkg/buildinfo" "github.com/vmware-tanzu/velero/pkg/client" "github.com/vmware-tanzu/velero/pkg/cmd" "github.com/vmware-tanzu/velero/pkg/cmd/util/flag" "github.com/vmware-tanzu/velero/pkg/cmd/util/signals" - "github.com/vmware-tanzu/velero/pkg/controller" velerodiscovery "github.com/vmware-tanzu/velero/pkg/discovery" "github.com/vmware-tanzu/velero/pkg/features" clientset "github.com/vmware-tanzu/velero/pkg/generated/clientset/versioned" informers "github.com/vmware-tanzu/velero/pkg/generated/informers/externalversions" "github.com/vmware-tanzu/velero/pkg/metrics" + "github.com/vmware-tanzu/velero/pkg/nodeagent" "github.com/vmware-tanzu/velero/pkg/persistence" "github.com/vmware-tanzu/velero/pkg/plugin/clientmgmt" "github.com/vmware-tanzu/velero/pkg/plugin/clientmgmt/process" "github.com/vmware-tanzu/velero/pkg/podexec" - "github.com/vmware-tanzu/velero/pkg/restore" - "github.com/vmware-tanzu/velero/pkg/util/filesystem" - "github.com/vmware-tanzu/velero/pkg/util/logging" - - ctrl "sigs.k8s.io/controller-runtime" - - ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/manager" - - "github.com/vmware-tanzu/velero/internal/util/managercontroller" - velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" "github.com/vmware-tanzu/velero/pkg/podvolume" "github.com/vmware-tanzu/velero/pkg/repository" repokey "github.com/vmware-tanzu/velero/pkg/repository/keys" - - "github.com/vmware-tanzu/velero/pkg/nodeagent" + "github.com/vmware-tanzu/velero/pkg/restore" + "github.com/vmware-tanzu/velero/pkg/uploader" + "github.com/vmware-tanzu/velero/pkg/util/filesystem" + "github.com/vmware-tanzu/velero/pkg/util/logging" ) const ( @@ -822,7 +815,7 @@ func (s *server) runControllers(defaultVolumeSnapshotLocations map[string]string s.mgr.GetClient(), s.ctx, s.pluginRegistry, - clock.RealClock{}, + clocks.RealClock{}, s.logger, ).SetupWithManager(s.mgr); err != nil { s.logger.Fatal(err, "unable to create controller", "controller", controller.ServerStatusRequest) @@ -832,7 +825,7 @@ func (s *server) runControllers(defaultVolumeSnapshotLocations map[string]string if _, ok := enabledRuntimeControllers[controller.DownloadRequest]; ok { r := controller.NewDownloadRequestReconciler( s.mgr.GetClient(), - clock.RealClock{}, + clocks.RealClock{}, newPluginManager, backupStoreGetter, s.logger, diff --git a/pkg/controller/backup_controller.go b/pkg/controller/backup_controller.go index cb9f48f84..23635704b 100644 --- a/pkg/controller/backup_controller.go +++ b/pkg/controller/backup_controller.go @@ -29,27 +29,24 @@ import ( "time" jsonpatch "github.com/evanphx/json-patch" + snapshotv1api "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" + snapshotterClientSet "github.com/kubernetes-csi/external-snapshotter/client/v4/clientset/versioned" + snapshotv1listers "github.com/kubernetes-csi/external-snapshotter/client/v4/listers/volumesnapshot/v1" "github.com/pkg/errors" "github.com/sirupsen/logrus" "golang.org/x/sync/errgroup" + corev1api "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" kerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/tools/cache" - - "github.com/vmware-tanzu/velero/pkg/util/results" - - "github.com/vmware-tanzu/velero/pkg/util/csi" - - snapshotv1api "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" - snapshotterClientSet "github.com/kubernetes-csi/external-snapshotter/client/v4/clientset/versioned" - snapshotv1listers "github.com/kubernetes-csi/external-snapshotter/client/v4/listers/volumesnapshot/v1" + clocks "k8s.io/utils/clock" + kbclient "sigs.k8s.io/controller-runtime/pkg/client" "github.com/vmware-tanzu/velero/internal/credentials" "github.com/vmware-tanzu/velero/internal/storage" @@ -67,13 +64,12 @@ import ( "github.com/vmware-tanzu/velero/pkg/plugin/framework" "github.com/vmware-tanzu/velero/pkg/util/boolptr" "github.com/vmware-tanzu/velero/pkg/util/collections" + "github.com/vmware-tanzu/velero/pkg/util/csi" "github.com/vmware-tanzu/velero/pkg/util/encode" kubeutil "github.com/vmware-tanzu/velero/pkg/util/kube" "github.com/vmware-tanzu/velero/pkg/util/logging" + "github.com/vmware-tanzu/velero/pkg/util/results" "github.com/vmware-tanzu/velero/pkg/volume" - - corev1api "k8s.io/api/core/v1" - kbclient "sigs.k8s.io/controller-runtime/pkg/client" ) type backupController struct { @@ -83,7 +79,7 @@ type backupController struct { lister velerov1listers.BackupLister client velerov1client.BackupsGetter kbClient kbclient.Client - clock clock.Clock + clock clocks.WithTickerAndDelayedExecution backupLogLevel logrus.Level newPluginManager func(logrus.FieldLogger) clientmgmt.Manager backupTracker BackupTracker @@ -130,7 +126,7 @@ func NewBackupController( backupper: backupper, lister: backupInformer.Lister(), client: client, - clock: &clock.RealClock{}, + clock: &clocks.RealClock{}, backupLogLevel: backupLogLevel, newPluginManager: newPluginManager, backupTracker: backupTracker, @@ -485,11 +481,12 @@ func (c *backupController) prepareBackupRequest(backup *velerov1api.Backup, logg // validateAndGetSnapshotLocations gets a collection of VolumeSnapshotLocation objects that // this backup will use (returned as a map of provider name -> VSL), and ensures: -// - each location name in .spec.volumeSnapshotLocations exists as a location -// - exactly 1 location per provider -// - a given provider's default location name is added to .spec.volumeSnapshotLocations if one -// is not explicitly specified for the provider (if there's only one location for the provider, -// it will automatically be used) +// - each location name in .spec.volumeSnapshotLocations exists as a location +// - exactly 1 location per provider +// - a given provider's default location name is added to .spec.volumeSnapshotLocations if one +// is not explicitly specified for the provider (if there's only one location for the provider, +// it will automatically be used) +// // if backup has snapshotVolume disabled then it returns empty VSL func (c *backupController) validateAndGetSnapshotLocations(backup *velerov1api.Backup) (map[string]*velerov1api.VolumeSnapshotLocation, []string) { errors := []string{} diff --git a/pkg/controller/backup_controller_test.go b/pkg/controller/backup_controller_test.go index 56d31ab90..0c7949781 100644 --- a/pkg/controller/backup_controller_test.go +++ b/pkg/controller/backup_controller_test.go @@ -21,7 +21,6 @@ import ( "context" "fmt" "io" - "sort" "strings" "testing" @@ -37,8 +36,9 @@ import ( "github.com/stretchr/testify/require" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/apimachinery/pkg/version" + clocks "k8s.io/utils/clock" + testclocks "k8s.io/utils/clock/testing" kbclient "sigs.k8s.io/controller-runtime/pkg/client" velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" @@ -213,7 +213,7 @@ func TestProcessBackupValidationFailures(t *testing.T) { kbClient: fakeClient, snapshotLocationLister: sharedInformers.Velero().V1().VolumeSnapshotLocations().Lister(), defaultBackupLocation: defaultBackupLocation.Name, - clock: &clock.RealClock{}, + clock: &clocks.RealClock{}, formatFlag: formatFlag, } @@ -280,7 +280,7 @@ func TestBackupLocationLabel(t *testing.T) { kbClient: fakeClient, snapshotLocationLister: sharedInformers.Velero().V1().VolumeSnapshotLocations().Lister(), defaultBackupLocation: test.backupLocation.Name, - clock: &clock.RealClock{}, + clock: &clocks.RealClock{}, formatFlag: formatFlag, } @@ -378,7 +378,7 @@ func Test_prepareBackupRequest_BackupStorageLocation(t *testing.T) { kbClient: fakeClient, snapshotLocationLister: sharedInformers.Velero().V1().VolumeSnapshotLocations().Lister(), defaultBackupTTL: defaultBackupTTL.Duration, - clock: clock.NewFakeClock(now), + clock: testclocks.NewFakeClock(now), formatFlag: formatFlag, } @@ -453,7 +453,7 @@ func TestDefaultBackupTTL(t *testing.T) { kbClient: fakeClient, snapshotLocationLister: sharedInformers.Velero().V1().VolumeSnapshotLocations().Lister(), defaultBackupTTL: defaultBackupTTL.Duration, - clock: clock.NewFakeClock(now), + clock: testclocks.NewFakeClock(now), formatFlag: formatFlag, } @@ -557,7 +557,7 @@ func TestDefaultVolumesToResticDeprecation(t *testing.T) { lister: sharedInformers.Velero().V1().Backups().Lister(), kbClient: fakeClient, snapshotLocationLister: sharedInformers.Velero().V1().VolumeSnapshotLocations().Lister(), - clock: &clock.RealClock{}, + clock: &clocks.RealClock{}, formatFlag: formatFlag, defaultVolumesToFsBackup: test.globalVal, } @@ -1063,7 +1063,7 @@ func TestProcessBackupCompletions(t *testing.T) { defaultVolumesToFsBackup: test.defaultVolumesToFsBackup, backupTracker: NewBackupTracker(), metrics: metrics.NewServerMetrics(), - clock: clock.NewFakeClock(now), + clock: testclocks.NewFakeClock(now), newPluginManager: func(logrus.FieldLogger) clientmgmt.Manager { return pluginManager }, backupStoreGetter: NewFakeSingleObjectBackupStoreGetter(backupStore), backupper: backupper, diff --git a/pkg/controller/backup_repository_controller.go b/pkg/controller/backup_repository_controller.go index 3252cb1ba..5518e0aa8 100644 --- a/pkg/controller/backup_repository_controller.go +++ b/pkg/controller/backup_repository_controller.go @@ -27,7 +27,7 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/util/clock" + clocks "k8s.io/utils/clock" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" @@ -50,7 +50,7 @@ type BackupRepoReconciler struct { client.Client namespace string logger logrus.FieldLogger - clock clock.Clock + clock clocks.WithTickerAndDelayedExecution maintenanceFrequency time.Duration repositoryManager repository.Manager } @@ -61,7 +61,7 @@ func NewBackupRepoReconciler(namespace string, logger logrus.FieldLogger, client client, namespace, logger, - clock.RealClock{}, + clocks.RealClock{}, maintenanceFrequency, repositoryManager, } diff --git a/pkg/controller/download_request_controller.go b/pkg/controller/download_request_controller.go index c40d7aed3..391b21f5d 100644 --- a/pkg/controller/download_request_controller.go +++ b/pkg/controller/download_request_controller.go @@ -23,7 +23,7 @@ import ( "github.com/sirupsen/logrus" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/clock" + clocks "k8s.io/utils/clock" ctrl "sigs.k8s.io/controller-runtime" kbclient "sigs.k8s.io/controller-runtime/pkg/client" @@ -35,7 +35,7 @@ import ( // downloadRequestReconciler reconciles a DownloadRequest object type downloadRequestReconciler struct { client kbclient.Client - clock clock.Clock + clock clocks.Clock // use variables to refer to these functions so they can be // replaced with fakes for testing. newPluginManager func(logrus.FieldLogger) clientmgmt.Manager @@ -47,7 +47,7 @@ type downloadRequestReconciler struct { // NewDownloadRequestReconciler initializes and returns downloadRequestReconciler struct. func NewDownloadRequestReconciler( client kbclient.Client, - clock clock.Clock, + clock clocks.Clock, newPluginManager func(logrus.FieldLogger) clientmgmt.Manager, backupStoreGetter persistence.ObjectBackupStoreGetter, log logrus.FieldLogger, diff --git a/pkg/controller/download_request_controller_test.go b/pkg/controller/download_request_controller_test.go index 340a6e5ce..1cbf1be03 100644 --- a/pkg/controller/download_request_controller_test.go +++ b/pkg/controller/download_request_controller_test.go @@ -23,16 +23,13 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo/extensions/table" . "github.com/onsi/gomega" - "github.com/sirupsen/logrus" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/client-go/kubernetes/scheme" - + testclocks "k8s.io/utils/clock/testing" ctrl "sigs.k8s.io/controller-runtime" - kbclient "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" @@ -68,7 +65,7 @@ var _ = Describe("Download Request Reconciler", func() { Expect(err).To(BeNil()) now = now.Local() - rClock := clock.NewFakeClock(now) + rClock := testclocks.NewFakeClock(now) const signedURLTTL = 10 * time.Minute diff --git a/pkg/controller/gc_controller.go b/pkg/controller/gc_controller.go index 61b22996a..9aab68580 100644 --- a/pkg/controller/gc_controller.go +++ b/pkg/controller/gc_controller.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" apierrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/util/clock" + clocks "k8s.io/utils/clock" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" @@ -48,7 +48,7 @@ const ( type gcReconciler struct { client.Client logger logrus.FieldLogger - clock clock.Clock + clock clocks.WithTickerAndDelayedExecution frequency time.Duration } @@ -61,7 +61,7 @@ func NewGCReconciler( gcr := &gcReconciler{ Client: client, logger: logger, - clock: clock.RealClock{}, + clock: clocks.RealClock{}, frequency: frequency, } if gcr.frequency <= 0 { diff --git a/pkg/controller/gc_controller_test.go b/pkg/controller/gc_controller_test.go index 772d123c0..0241790c8 100644 --- a/pkg/controller/gc_controller_test.go +++ b/pkg/controller/gc_controller_test.go @@ -25,7 +25,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" + testclocks "k8s.io/utils/clock/testing" ctrl "sigs.k8s.io/controller-runtime" kbclient "sigs.k8s.io/controller-runtime/pkg/client" @@ -34,7 +34,7 @@ import ( velerotest "github.com/vmware-tanzu/velero/pkg/test" ) -func mockGCReconciler(fakeClient kbclient.Client, fakeClock *clock.FakeClock, freq time.Duration) *gcReconciler { +func mockGCReconciler(fakeClient kbclient.Client, fakeClock *testclocks.FakeClock, freq time.Duration) *gcReconciler { gcr := NewGCReconciler( velerotest.NewLogger(), fakeClient, @@ -45,7 +45,7 @@ func mockGCReconciler(fakeClient kbclient.Client, fakeClock *clock.FakeClock, fr } func TestGCReconcile(t *testing.T) { - fakeClock := clock.NewFakeClock(time.Now()) + fakeClock := testclocks.NewFakeClock(time.Now()) defaultBackupLocation := builder.ForBackupStorageLocation(velerov1api.DefaultNamespace, "default").Result() tests := []struct { diff --git a/pkg/controller/pod_volume_backup_controller.go b/pkg/controller/pod_volume_backup_controller.go index 3575e6dc5..6b149b15f 100644 --- a/pkg/controller/pod_volume_backup_controller.go +++ b/pkg/controller/pod_volume_backup_controller.go @@ -27,7 +27,7 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/clock" + clocks "k8s.io/utils/clock" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -50,7 +50,7 @@ var NewUploaderProviderFunc = provider.NewUploaderProvider type PodVolumeBackupReconciler struct { Scheme *runtime.Scheme Client client.Client - Clock clock.Clock + Clock clocks.WithTickerAndDelayedExecution Metrics *metrics.ServerMetrics CredentialGetter *credentials.CredentialGetter NodeName string @@ -299,7 +299,7 @@ func (r *PodVolumeBackupReconciler) NewBackupProgressUpdater(pvb *velerov1api.Po return &BackupProgressUpdater{pvb, log, ctx, r.Client} } -//UpdateProgress which implement ProgressUpdater interface to update pvb progress status +// UpdateProgress which implement ProgressUpdater interface to update pvb progress status func (b *BackupProgressUpdater) UpdateProgress(p *uploader.UploaderProgress) { original := b.PodVolumeBackup.DeepCopy() b.PodVolumeBackup.Status.Progress = velerov1api.PodVolumeOperationProgress{TotalBytes: p.TotalBytes, BytesDone: p.BytesDone} diff --git a/pkg/controller/pod_volume_backup_controller_test.go b/pkg/controller/pod_volume_backup_controller_test.go index b30adef5d..b09017a71 100644 --- a/pkg/controller/pod_volume_backup_controller_test.go +++ b/pkg/controller/pod_volume_backup_controller_test.go @@ -25,13 +25,12 @@ import ( . "github.com/onsi/ginkgo/extensions/table" . "github.com/onsi/gomega" "github.com/sirupsen/logrus" - corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/client-go/kubernetes/scheme" + testclocks "k8s.io/utils/clock/testing" ctrl "sigs.k8s.io/controller-runtime" kbclient "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" @@ -144,7 +143,7 @@ var _ = Describe("PodVolumeBackup Reconciler", func() { Expect(velerov1api.AddToScheme(scheme.Scheme)).To(Succeed()) r := PodVolumeBackupReconciler{ Client: fakeClient, - Clock: clock.NewFakeClock(now), + Clock: testclocks.NewFakeClock(now), Metrics: metrics.NewPodVolumeMetrics(), CredentialGetter: &credentials.CredentialGetter{FromFile: credentialFileStore}, NodeName: "test_node", diff --git a/pkg/controller/pod_volume_restore_controller.go b/pkg/controller/pod_volume_restore_controller.go index 5b717ed15..dd6a47acf 100644 --- a/pkg/controller/pod_volume_restore_controller.go +++ b/pkg/controller/pod_volume_restore_controller.go @@ -31,7 +31,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" + clocks "k8s.io/utils/clock" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/handler" @@ -57,7 +57,7 @@ func NewPodVolumeRestoreReconciler(logger logrus.FieldLogger, client client.Clie logger: logger.WithField("controller", "PodVolumeRestore"), credentialGetter: credentialGetter, fileSystem: filesystem.NewFileSystem(), - clock: &clock.RealClock{}, + clock: &clocks.RealClock{}, } } @@ -66,7 +66,7 @@ type PodVolumeRestoreReconciler struct { logger logrus.FieldLogger credentialGetter *credentials.CredentialGetter fileSystem filesystem.Interface - clock clock.Clock + clock clocks.WithTickerAndDelayedExecution } type RestoreProgressUpdater struct { @@ -319,7 +319,7 @@ func (r *PodVolumeRestoreReconciler) NewRestoreProgressUpdater(pvr *velerov1api. return &RestoreProgressUpdater{pvr, log, ctx, r.Client} } -//UpdateProgress which implement ProgressUpdater interface to update pvr progress status +// UpdateProgress which implement ProgressUpdater interface to update pvr progress status func (r *RestoreProgressUpdater) UpdateProgress(p *uploader.UploaderProgress) { original := r.PodVolumeRestore.DeepCopy() r.PodVolumeRestore.Status.Progress = velerov1api.PodVolumeOperationProgress{TotalBytes: p.TotalBytes, BytesDone: p.BytesDone} diff --git a/pkg/controller/pod_volume_restore_controller_test.go b/pkg/controller/pod_volume_restore_controller_test.go index eeec55b54..42730dc6d 100644 --- a/pkg/controller/pod_volume_restore_controller_test.go +++ b/pkg/controller/pod_volume_restore_controller_test.go @@ -27,7 +27,7 @@ import ( corev1api "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/clock" + clocks "k8s.io/utils/clock" "sigs.k8s.io/controller-runtime/pkg/client/fake" velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" @@ -196,7 +196,7 @@ func TestShouldProcess(t *testing.T) { c := &PodVolumeRestoreReconciler{ logger: logrus.New(), Client: cli, - clock: &clock.RealClock{}, + clock: &clocks.RealClock{}, } shouldProcess, _, _ := c.shouldProcess(ctx, c.logger, ts.obj) diff --git a/pkg/controller/restore_controller.go b/pkg/controller/restore_controller.go index 1fb951a50..b154d1e5c 100644 --- a/pkg/controller/restore_controller.go +++ b/pkg/controller/restore_controller.go @@ -33,11 +33,12 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/tools/cache" + clocks "k8s.io/utils/clock" + "sigs.k8s.io/controller-runtime/pkg/client" - hook "github.com/vmware-tanzu/velero/internal/hook" + "github.com/vmware-tanzu/velero/internal/hook" api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" velerov1informers "github.com/vmware-tanzu/velero/pkg/generated/informers/externalversions/velero/v1" @@ -51,8 +52,6 @@ import ( kubeutil "github.com/vmware-tanzu/velero/pkg/util/kube" "github.com/vmware-tanzu/velero/pkg/util/logging" "github.com/vmware-tanzu/velero/pkg/util/results" - - "sigs.k8s.io/controller-runtime/pkg/client" ) // nonRestorableResources is an exclusion list for the restoration process. Any resources @@ -95,7 +94,7 @@ type restoreController struct { restoreLogLevel logrus.Level metrics *metrics.ServerMetrics logFormat logging.Format - clock clock.Clock + clock clocks.WithTickerAndDelayedExecution newPluginManager func(logger logrus.FieldLogger) clientmgmt.Manager backupStoreGetter persistence.ObjectBackupStoreGetter @@ -121,7 +120,7 @@ func NewRestoreController( restoreLogLevel: restoreLogLevel, metrics: metrics, logFormat: logFormat, - clock: &clock.RealClock{}, + clock: &clocks.RealClock{}, // use variables to refer to these functions so they can be // replaced with fakes for testing. @@ -619,8 +618,8 @@ func downloadToTempFile(backupName string, backupStore persistence.BackupStore, n, err := io.Copy(file, readCloser) if err != nil { - //Temporary file has been created if we go here. And some problems occurs such as network interruption and - //so on. So we close and remove temporary file first to prevent residual file. + // Temporary file has been created if we go here. And some problems occurs such as network interruption and + // so on. So we close and remove temporary file first to prevent residual file. closeAndRemoveFile(file, logger) return nil, errors.Wrap(err, "error copying Backup to temp file") } diff --git a/pkg/controller/schedule_controller.go b/pkg/controller/schedule_controller.go index ec6721535..86a0979b4 100644 --- a/pkg/controller/schedule_controller.go +++ b/pkg/controller/schedule_controller.go @@ -27,7 +27,7 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/util/clock" + clocks "k8s.io/utils/clock" ctrl "sigs.k8s.io/controller-runtime" bld "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" @@ -47,7 +47,7 @@ type scheduleReconciler struct { client.Client namespace string logger logrus.FieldLogger - clock clock.Clock + clock clocks.WithTickerAndDelayedExecution metrics *metrics.ServerMetrics } @@ -61,7 +61,7 @@ func NewScheduleReconciler( Client: client, namespace: namespace, logger: logger, - clock: clock.RealClock{}, + clock: clocks.RealClock{}, metrics: metrics, } } diff --git a/pkg/controller/schedule_controller_test.go b/pkg/controller/schedule_controller_test.go index 62e28f7a7..44e728d77 100644 --- a/pkg/controller/schedule_controller_test.go +++ b/pkg/controller/schedule_controller_test.go @@ -25,8 +25,8 @@ import ( "github.com/stretchr/testify/require" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/client-go/kubernetes/scheme" + testclocks "k8s.io/utils/clock/testing" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client/fake" @@ -126,7 +126,7 @@ func TestReconcileOfSchedule(t *testing.T) { testTime, err = time.Parse("2006-01-02 15:04:05", test.fakeClockTime) require.NoError(t, err, "unable to parse test.fakeClockTime: %v", err) } - reconciler.clock = clock.NewFakeClock(testTime) + reconciler.clock = testclocks.NewFakeClock(testTime) if test.schedule != nil { require.Nil(t, client.Create(ctx, test.schedule)) @@ -234,7 +234,7 @@ func TestGetNextRunTime(t *testing.T) { cronSchedule, err := cron.Parse(test.schedule.Spec.Schedule) require.NoError(t, err, "unable to parse test.schedule.Spec.Schedule: %v", err) - testClock := clock.NewFakeClock(time.Now()) + testClock := testclocks.NewFakeClock(time.Now()) if test.lastRanOffset != "" { offsetDuration, err := time.ParseDuration(test.lastRanOffset) @@ -374,7 +374,7 @@ func TestGetBackup(t *testing.T) { testTime, err := time.Parse("2006-01-02 15:04:05", test.testClockTime) require.NoError(t, err, "unable to parse test.testClockTime: %v", err) - backup := getBackup(test.schedule, clock.NewFakeClock(testTime).Now()) + backup := getBackup(test.schedule, testclocks.NewFakeClock(testTime).Now()) assert.Equal(t, test.expectedBackup.Namespace, backup.Namespace) assert.Equal(t, test.expectedBackup.Name, backup.Name) diff --git a/pkg/controller/server_status_request_controller.go b/pkg/controller/server_status_request_controller.go index 50ae60627..1aea5db58 100644 --- a/pkg/controller/server_status_request_controller.go +++ b/pkg/controller/server_status_request_controller.go @@ -24,7 +24,7 @@ import ( "github.com/sirupsen/logrus" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/clock" + clocks "k8s.io/utils/clock" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -51,7 +51,7 @@ type serverStatusRequestReconciler struct { client client.Client ctx context.Context pluginRegistry PluginLister - clock clock.Clock + clock clocks.WithTickerAndDelayedExecution log logrus.FieldLogger } @@ -61,7 +61,7 @@ func NewServerStatusRequestReconciler( client client.Client, ctx context.Context, pluginRegistry PluginLister, - clock clock.Clock, + clock clocks.WithTickerAndDelayedExecution, log logrus.FieldLogger) *serverStatusRequestReconciler { return &serverStatusRequestReconciler{ client: client, diff --git a/pkg/controller/server_status_request_controller_test.go b/pkg/controller/server_status_request_controller_test.go index f86ed4952..2003bac5d 100644 --- a/pkg/controller/server_status_request_controller_test.go +++ b/pkg/controller/server_status_request_controller_test.go @@ -25,9 +25,8 @@ import ( . "github.com/onsi/gomega" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/client-go/kubernetes/scheme" - + testclocks "k8s.io/utils/clock/testing" ctrl "sigs.k8s.io/controller-runtime" kbclient "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" @@ -67,7 +66,7 @@ var _ = Describe("Server Status Request Reconciler", func() { fake.NewClientBuilder().WithScheme(scheme.Scheme).WithObjects(test.req).Build(), context.Background(), test.reqPluginLister, - clock.NewFakeClock(now), + testclocks.NewFakeClock(now), velerotest.NewLogger(), )