diff --git a/pkg/apis/migration/v1alpha1/directvolumemigrationprogress_types.go b/pkg/apis/migration/v1alpha1/directvolumemigrationprogress_types.go index f39886a58..ba469d0bc 100644 --- a/pkg/apis/migration/v1alpha1/directvolumemigrationprogress_types.go +++ b/pkg/apis/migration/v1alpha1/directvolumemigrationprogress_types.go @@ -19,7 +19,6 @@ package v1alpha1 import ( "context" - "github.com/google/uuid" liberr "github.com/konveyor/controller/pkg/error" kapi "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -108,11 +107,9 @@ type DirectVolumeMigrationProgress struct { } func (d *DirectVolumeMigrationProgress) MarkReconciled() { - u, _ := uuid.NewUUID() if d.Annotations == nil { d.Annotations = map[string]string{} } - d.Annotations[TouchAnnotation] = u.String() d.Status.ObservedDigest = digest(d.Spec) } diff --git a/pkg/apis/migration/v1alpha1/resource.go b/pkg/apis/migration/v1alpha1/resource.go index c8e31c267..0b4e0c2b6 100644 --- a/pkg/apis/migration/v1alpha1/resource.go +++ b/pkg/apis/migration/v1alpha1/resource.go @@ -167,11 +167,9 @@ func (r *DirectVolumeMigration) GetName() string { } func (r *DirectVolumeMigration) MarkReconciled() { - uuid, _ := uuid.NewUUID() if r.Annotations == nil { r.Annotations = map[string]string{} } - r.Annotations[TouchAnnotation] = uuid.String() r.Status.ObservedDigest = digest(r.Spec) } @@ -269,11 +267,9 @@ func (r *DirectImageMigration) GetName() string { } func (r *DirectImageMigration) MarkReconciled() { - uuid, _ := uuid.NewUUID() if r.Annotations == nil { r.Annotations = map[string]string{} } - r.Annotations[TouchAnnotation] = uuid.String() r.Status.ObservedDigest = digest(r.Spec) } @@ -303,11 +299,9 @@ func (r *DirectImageStreamMigration) GetName() string { } func (r *DirectImageStreamMigration) MarkReconciled() { - uuid, _ := uuid.NewUUID() if r.Annotations == nil { r.Annotations = map[string]string{} } - r.Annotations[TouchAnnotation] = uuid.String() r.Status.ObservedDigest = digest(r.Spec) } diff --git a/pkg/controller/directimagemigration/directimagemigration_controller.go b/pkg/controller/directimagemigration/directimagemigration_controller.go index 642afa9bc..26ba299a4 100644 --- a/pkg/controller/directimagemigration/directimagemigration_controller.go +++ b/pkg/controller/directimagemigration/directimagemigration_controller.go @@ -18,6 +18,7 @@ package directimagemigration import ( "context" + "time" "github.com/konveyor/controller/pkg/logging" migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1" @@ -119,10 +120,10 @@ func (r *ReconcileDirectImageMigration) Reconcile(request reconcile.Request) (re if errors.IsNotFound(err) { // Object not found, return. Created objects are automatically garbage collected. // For additional cleanup logic use finalizers. - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Error reading the object - requeue the request. - return reconcile.Result{}, err + return reconcile.Result{Requeue: true}, err } // Set up jaeger tracing @@ -133,7 +134,7 @@ func (r *ReconcileDirectImageMigration) Reconcile(request reconcile.Request) (re // Completed. if imageMigration.Status.Phase == Completed { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Begin staging conditions @@ -146,8 +147,11 @@ func (r *ReconcileDirectImageMigration) Reconcile(request reconcile.Request) (re return reconcile.Result{Requeue: true}, nil } + // Default to PollReQ, can be overridden by r.migrate phase-specific ReQ interval + requeueAfter := time.Duration(PollReQ) + if !imageMigration.Status.HasBlockerCondition() { - _, err = r.migrate(imageMigration, reconcileSpan) + requeueAfter, err = r.migrate(imageMigration, reconcileSpan) if err != nil { log.Trace(err) return reconcile.Result{Requeue: true}, nil @@ -171,6 +175,10 @@ func (r *ReconcileDirectImageMigration) Reconcile(request reconcile.Request) (re return reconcile.Result{Requeue: true}, nil } - // Done - return reconcile.Result{}, nil + // Requeue + if requeueAfter > 0 { + return reconcile.Result{RequeueAfter: requeueAfter}, nil + } + + return reconcile.Result{Requeue: false}, nil } diff --git a/pkg/controller/directimagestreammigration/directimagestreammigration_controller.go b/pkg/controller/directimagestreammigration/directimagestreammigration_controller.go index ea9fc1f88..e6db521f6 100644 --- a/pkg/controller/directimagestreammigration/directimagestreammigration_controller.go +++ b/pkg/controller/directimagestreammigration/directimagestreammigration_controller.go @@ -18,6 +18,7 @@ package directimagestreammigration import ( "context" + "time" "github.com/konveyor/controller/pkg/logging" migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1" @@ -110,10 +111,10 @@ func (r *ReconcileDirectImageStreamMigration) Reconcile(request reconcile.Reques if errors.IsNotFound(err) { // Object not found, return. Created objects are automatically garbage collected. // For additional cleanup logic use finalizers. - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Error reading the object - requeue the request. - return reconcile.Result{}, err + return reconcile.Result{Requeue: true}, err } // Set up jaeger tracing @@ -124,7 +125,7 @@ func (r *ReconcileDirectImageStreamMigration) Reconcile(request reconcile.Reques // Completed. if imageStreamMigration.Status.Phase == Completed { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Begin staging conditions @@ -137,8 +138,11 @@ func (r *ReconcileDirectImageStreamMigration) Reconcile(request reconcile.Reques return reconcile.Result{Requeue: true}, nil } + // Default to PollReQ, can be overridden by r.migrate phase-specific ReQ interval + requeueAfter := time.Duration(PollReQ) + if !imageStreamMigration.Status.HasBlockerCondition() { - _, err = r.migrate(imageStreamMigration, reconcileSpan) + requeueAfter, err = r.migrate(imageStreamMigration, reconcileSpan) if err != nil { log.Trace(err) return reconcile.Result{Requeue: true}, nil @@ -162,6 +166,10 @@ func (r *ReconcileDirectImageStreamMigration) Reconcile(request reconcile.Reques return reconcile.Result{Requeue: true}, nil } - // Done - return reconcile.Result{}, nil + // Requeue + if requeueAfter > 0 { + return reconcile.Result{RequeueAfter: requeueAfter}, nil + } + + return reconcile.Result{Requeue: false}, nil } diff --git a/pkg/controller/directvolumemigration/directvolumemigration_controller.go b/pkg/controller/directvolumemigration/directvolumemigration_controller.go index 53cfe1841..f7475b2d5 100644 --- a/pkg/controller/directvolumemigration/directvolumemigration_controller.go +++ b/pkg/controller/directvolumemigration/directvolumemigration_controller.go @@ -18,6 +18,7 @@ package directvolumemigration import ( "context" + "time" "github.com/konveyor/controller/pkg/logging" migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1" @@ -100,10 +101,10 @@ func (r *ReconcileDirectVolumeMigration) Reconcile(request reconcile.Request) (r if errors.IsNotFound(err) { // Object not found, return. Created objects are automatically garbage collected. // For additional cleanup logic use finalizers. - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Error reading the object - requeue the request. - return reconcile.Result{}, err + return reconcile.Result{Requeue: true}, err } // Set up jaeger tracing @@ -117,7 +118,7 @@ func (r *ReconcileDirectVolumeMigration) Reconcile(request reconcile.Request) (r // Check if completed if direct.Status.Phase == Completed { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Begin staging conditions @@ -130,8 +131,11 @@ func (r *ReconcileDirectVolumeMigration) Reconcile(request reconcile.Request) (r return reconcile.Result{Requeue: true}, nil } + // Default to PollReQ, can be overridden by r.migrate phase-specific ReQ interval + requeueAfter := time.Duration(PollReQ) + if !direct.Status.HasBlockerCondition() { - _, err = r.migrate(direct, reconcileSpan) + requeueAfter, err = r.migrate(direct, reconcileSpan) if err != nil { log.Trace(err) return reconcile.Result{Requeue: true}, nil @@ -155,6 +159,11 @@ func (r *ReconcileDirectVolumeMigration) Reconcile(request reconcile.Request) (r return reconcile.Result{Requeue: true}, nil } + // Requeue + if requeueAfter > 0 { + return reconcile.Result{RequeueAfter: requeueAfter}, nil + } + // Done - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } diff --git a/pkg/controller/directvolumemigrationprogress/directvolumemigrationprogress_controller.go b/pkg/controller/directvolumemigrationprogress/directvolumemigrationprogress_controller.go index 73f20db0e..1d6ac995e 100644 --- a/pkg/controller/directvolumemigrationprogress/directvolumemigrationprogress_controller.go +++ b/pkg/controller/directvolumemigrationprogress/directvolumemigrationprogress_controller.go @@ -132,9 +132,9 @@ func (r *ReconcileDirectVolumeMigrationProgress) Reconcile(request reconcile.Req err = r.Get(context.TODO(), request.NamespacedName, pvProgress) if err != nil { if errors.IsNotFound(err) { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } - return reconcile.Result{}, err + return reconcile.Result{Requeue: true}, err } // Set up jaeger tracing @@ -178,10 +178,6 @@ func (r *ReconcileDirectVolumeMigrationProgress) Reconcile(request reconcile.Req return reconcile.Result{Requeue: true}, nil } - if !pvProgress.Status.IsReady() { - return reconcile.Result{Requeue: true}, nil - } - // we will requeue this every 5 seconds return reconcile.Result{Requeue: true, RequeueAfter: time.Second * 5}, nil } diff --git a/pkg/controller/discovery/container/ds.go b/pkg/controller/discovery/container/ds.go index db274f2ef..6eeb6cbfd 100644 --- a/pkg/controller/discovery/container/ds.go +++ b/pkg/controller/discovery/container/ds.go @@ -3,16 +3,17 @@ package container import ( "database/sql" "errors" + "time" + migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1" "github.com/konveyor/mig-controller/pkg/controller/discovery/model" "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" - "sigs.k8s.io/controller-runtime" + controllerruntime "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/reconcile" - "time" ) type Collections []Collection @@ -68,7 +69,7 @@ func (r *DataSource) IsReady() bool { // is for watches added by each collection reference a predicate that handles the change // rather than queuing a reconcile event. func (r *DataSource) Reconcile(request reconcile.Request) (reconcile.Result, error) { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // diff --git a/pkg/controller/discovery/controller.go b/pkg/controller/discovery/controller.go index ddab91ba9..5717b008c 100644 --- a/pkg/controller/discovery/controller.go +++ b/pkg/controller/discovery/controller.go @@ -146,13 +146,13 @@ func (r *ReconcileDiscovery) Reconcile(request reconcile.Request) (reconcile.Res if err != nil { if errors.IsNotFound(err) { r.container.Delete(request.NamespacedName) - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } log.Trace(err) return reQueue, nil } if !r.IsValid(cluster) { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } err = r.container.Add( cluster, @@ -174,7 +174,7 @@ func (r *ReconcileDiscovery) Reconcile(request reconcile.Request) (reconcile.Res return reQueue, nil } - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } func (r *ReconcileDiscovery) IsValid(cluster *migapi.MigCluster) bool { diff --git a/pkg/controller/miganalytic/miganalytics_controller.go b/pkg/controller/miganalytic/miganalytics_controller.go index 377ff44cf..5169c3e4e 100644 --- a/pkg/controller/miganalytic/miganalytics_controller.go +++ b/pkg/controller/miganalytic/miganalytics_controller.go @@ -132,7 +132,7 @@ func (r *ReconcileMigAnalytic) Reconcile(request reconcile.Request) (reconcile.R err = r.Get(context.TODO(), request.NamespacedName, analytic) if err != nil { if errors.IsNotFound(err) { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } log.Trace(err) return reconcile.Result{Requeue: true}, nil @@ -141,7 +141,7 @@ func (r *ReconcileMigAnalytic) Reconcile(request reconcile.Request) (reconcile.R // Exit early if the MigAnalytic already has a ready condition // and Refresh boolean is unset if analytic.Status.IsReady() && !analytic.Spec.Refresh { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Report reconcile error. @@ -211,7 +211,7 @@ func (r *ReconcileMigAnalytic) Reconcile(request reconcile.Request) (reconcile.R } // Done - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } func (r *ReconcileMigAnalytic) analyze(analytic *migapi.MigAnalytic) error { diff --git a/pkg/controller/migcluster/migcluster_controller.go b/pkg/controller/migcluster/migcluster_controller.go index b5304a56b..745fbbf11 100644 --- a/pkg/controller/migcluster/migcluster_controller.go +++ b/pkg/controller/migcluster/migcluster_controller.go @@ -115,7 +115,7 @@ func (r *ReconcileMigCluster) Reconcile(request reconcile.Request) (reconcile.Re err = r.Get(context.TODO(), request.NamespacedName, cluster) if err != nil { if errors.IsNotFound(err) { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } log.Trace(err) return reconcile.Result{Requeue: true}, nil @@ -180,5 +180,5 @@ func (r *ReconcileMigCluster) Reconcile(request reconcile.Request) (reconcile.Re } // Done - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } diff --git a/pkg/controller/mighook/mighook_controller.go b/pkg/controller/mighook/mighook_controller.go index c4854c8b0..c68f40a23 100644 --- a/pkg/controller/mighook/mighook_controller.go +++ b/pkg/controller/mighook/mighook_controller.go @@ -18,6 +18,7 @@ package mighook import ( "context" + "github.com/konveyor/mig-controller/pkg/errorutil" "github.com/konveyor/controller/pkg/logging" @@ -86,7 +87,7 @@ func (r *ReconcileMigHook) Reconcile(request reconcile.Request) (reconcile.Resul err = r.Get(context.TODO(), request.NamespacedName, hook) if err != nil { if errors.IsNotFound(err) { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } log.Trace(err) return reconcile.Result{Requeue: true}, nil @@ -134,5 +135,5 @@ func (r *ReconcileMigHook) Reconcile(request reconcile.Request) (reconcile.Resul } // Done - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } diff --git a/pkg/controller/migmigration/migmigration_controller.go b/pkg/controller/migmigration/migmigration_controller.go index 00455303c..c27da8a41 100644 --- a/pkg/controller/migmigration/migmigration_controller.go +++ b/pkg/controller/migmigration/migmigration_controller.go @@ -199,7 +199,7 @@ func (r *ReconcileMigMigration) Reconcile(request reconcile.Request) (reconcile. // Completed. if migration.Status.Phase == Completed { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Owner Reference @@ -210,9 +210,6 @@ func (r *ReconcileMigMigration) Reconcile(request reconcile.Request) (reconcile. return reconcile.Result{Requeue: true}, err } - // Re-queue (after) in seconds. - requeueAfter := time.Duration(PollReQ) - // Begin staging conditions. migration.Status.BeginStagingConditions() @@ -224,6 +221,9 @@ func (r *ReconcileMigMigration) Reconcile(request reconcile.Request) (reconcile. return reconcile.Result{Requeue: true}, nil } + // Default to PollReQ, can be overridden by r.postpone() or r.migrate() + requeueAfter := time.Duration(PollReQ) + // Ensure that migrations run serially ordered by when created // and grouped with stage migrations followed by final migrations. // Reconcile of a migration not in the desired order will be postponed. @@ -267,7 +267,7 @@ func (r *ReconcileMigMigration) Reconcile(request reconcile.Request) (reconcile. return reconcile.Result{RequeueAfter: requeueAfter}, nil } - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Determine if a migration should be postponed. diff --git a/pkg/controller/migplan/migplan_controller.go b/pkg/controller/migplan/migplan_controller.go index 57bcd1ffe..e12ce92e9 100644 --- a/pkg/controller/migplan/migplan_controller.go +++ b/pkg/controller/migplan/migplan_controller.go @@ -187,10 +187,10 @@ func (r *ReconcileMigPlan) Reconcile(request reconcile.Request) (reconcile.Resul err = r.Get(context.TODO(), request.NamespacedName, plan) if err != nil { if errors.IsNotFound(err) { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } log.Trace(err) - return reconcile.Result{}, err + return reconcile.Result{Requeue: true}, err } // Report reconcile error. @@ -217,7 +217,7 @@ func (r *ReconcileMigPlan) Reconcile(request reconcile.Request) (reconcile.Resul return reconcile.Result{Requeue: true}, nil } if closed { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Begin staging conditions. @@ -324,7 +324,7 @@ func (r *ReconcileMigPlan) Reconcile(request reconcile.Request) (reconcile.Resul } // Done - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } // Detect that a plan is been closed and ensure all its referenced diff --git a/pkg/controller/migstorage/migstorage_controller.go b/pkg/controller/migstorage/migstorage_controller.go index 7ebba4d5a..42bef9dfe 100644 --- a/pkg/controller/migstorage/migstorage_controller.go +++ b/pkg/controller/migstorage/migstorage_controller.go @@ -18,9 +18,10 @@ package migstorage import ( "context" - "github.com/konveyor/mig-controller/pkg/errorutil" "time" + "github.com/konveyor/mig-controller/pkg/errorutil" + "github.com/konveyor/controller/pkg/logging" migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1" migref "github.com/konveyor/mig-controller/pkg/reference" @@ -112,7 +113,7 @@ func (r *ReconcileMigStorage) Reconcile(request reconcile.Request) (reconcile.Re err = r.Get(context.TODO(), request.NamespacedName, storage) if err != nil { if errors.IsNotFound(err) { - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil } log.Trace(err) return reconcile.Result{Requeue: true}, nil @@ -163,5 +164,5 @@ func (r *ReconcileMigStorage) Reconcile(request reconcile.Request) (reconcile.Re } // Done - return reconcile.Result{}, nil + return reconcile.Result{Requeue: false}, nil }