Skip to content

Commit df54205

Browse files
authored
fix(api): fix reque while sync vd/vi/cvi state (#1046)
Signed-off-by: Valeriy Khorunzhin <valeriy.khorunzhin@flant.com>
1 parent 5d05add commit df54205

19 files changed

Lines changed: 157 additions & 85 deletions

File tree

images/virtualization-artifact/pkg/controller/cvi/internal/source/http.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -139,7 +140,7 @@ func (ds HTTPDataSource) Sync(ctx context.Context, cvi *virtv2.ClusterVirtualIma
139140

140141
log.Info("Create importer pod...", "progress", cvi.Status.Progress, "pod.phase", "nil")
141142

142-
return reconcile.Result{Requeue: true}, nil
143+
return reconcile.Result{RequeueAfter: time.Second}, nil
143144
case podutil.IsPodComplete(pod):
144145
err = ds.statService.CheckPod(pod)
145146
if err != nil {
@@ -216,7 +217,7 @@ func (ds HTTPDataSource) Sync(ctx context.Context, cvi *virtv2.ClusterVirtualIma
216217
log.Info("Provisioning...", "progress", cvi.Status.Progress, "pod.phase", pod.Status.Phase)
217218
}
218219

219-
return reconcile.Result{Requeue: true}, nil
220+
return reconcile.Result{RequeueAfter: time.Second}, nil
220221
}
221222

222223
func (ds HTTPDataSource) CleanUp(ctx context.Context, cvi *virtv2.ClusterVirtualImage) (bool, error) {

images/virtualization-artifact/pkg/controller/cvi/internal/source/object_ref.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -208,7 +209,7 @@ func (ds ObjectRefDataSource) Sync(ctx context.Context, cvi *virtv2.ClusterVirtu
208209

209210
log.Info("Ready", "progress", cvi.Status.Progress, "pod.phase", "nil")
210211

211-
return reconcile.Result{Requeue: true}, nil
212+
return reconcile.Result{RequeueAfter: time.Second}, nil
212213
case podutil.IsPodComplete(pod):
213214
err = ds.statService.CheckPod(pod)
214215
if err != nil {
@@ -290,7 +291,7 @@ func (ds ObjectRefDataSource) Sync(ctx context.Context, cvi *virtv2.ClusterVirtu
290291
log.Info("Ready", "progress", cvi.Status.Progress, "pod.phase", pod.Status.Phase)
291292
}
292293

293-
return reconcile.Result{Requeue: true}, nil
294+
return reconcile.Result{RequeueAfter: time.Second}, nil
294295
}
295296

296297
func (ds ObjectRefDataSource) CleanUp(ctx context.Context, cvi *virtv2.ClusterVirtualImage) (bool, error) {

images/virtualization-artifact/pkg/controller/cvi/internal/source/object_ref_vd.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -134,7 +135,7 @@ func (ds ObjectRefVirtualDisk) Sync(ctx context.Context, cvi *virtv2.ClusterVirt
134135

135136
log.Info("Create importer pod...", "progress", cvi.Status.Progress, "pod.phase", "nil")
136137

137-
return reconcile.Result{Requeue: true}, nil
138+
return reconcile.Result{RequeueAfter: time.Second}, nil
138139
case podutil.IsPodComplete(pod):
139140
err = ds.statService.CheckPod(pod)
140141
if err != nil {
@@ -207,7 +208,7 @@ func (ds ObjectRefVirtualDisk) Sync(ctx context.Context, cvi *virtv2.ClusterVirt
207208
log.Info("Provisioning...", "progress", cvi.Status.Progress, "pod.phase", pod.Status.Phase)
208209
}
209210

210-
return reconcile.Result{Requeue: true}, nil
211+
return reconcile.Result{RequeueAfter: time.Second}, nil
211212
}
212213

213214
func (ds ObjectRefVirtualDisk) CleanUp(ctx context.Context, cvi *virtv2.ClusterVirtualImage) (bool, error) {

images/virtualization-artifact/pkg/controller/cvi/internal/source/object_ref_vdsnapshot.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"errors"
2222
"fmt"
2323
"strings"
24+
"time"
2425

2526
corev1 "k8s.io/api/core/v1"
2627
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -190,7 +191,7 @@ func (ds ObjectRefVirtualDiskSnapshot) Sync(ctx context.Context, cvi *virtv2.Clu
190191
cvi.Status.Progress = "0%"
191192
cvi.Status.SourceUID = pointer.GetPointer(vs.UID)
192193

193-
return reconcile.Result{Requeue: true}, err
194+
return reconcile.Result{RequeueAfter: time.Second}, err
194195
case pod == nil:
195196
cvi.Status.Progress = ds.statService.GetProgress(cvi.GetUID(), pod, cvi.Status.Progress)
196197
cvi.Status.Target.RegistryURL = ds.statService.GetDVCRImageName(pod)
@@ -219,7 +220,7 @@ func (ds ObjectRefVirtualDiskSnapshot) Sync(ctx context.Context, cvi *virtv2.Clu
219220

220221
log.Info("Create importer pod...", "progress", cvi.Status.Progress, "pod.phase", "nil")
221222

222-
return reconcile.Result{Requeue: true}, nil
223+
return reconcile.Result{RequeueAfter: time.Second}, nil
223224
case podutil.IsPodComplete(pod):
224225
err = ds.statService.CheckPod(pod)
225226
if err != nil {
@@ -265,7 +266,7 @@ func (ds ObjectRefVirtualDiskSnapshot) Sync(ctx context.Context, cvi *virtv2.Clu
265266
Reason(vicondition.Provisioning).
266267
Message("Waiting for PVC to be bound")
267268

268-
return reconcile.Result{Requeue: true}, nil
269+
return reconcile.Result{RequeueAfter: time.Second}, nil
269270
}
270271

271272
cb.
@@ -302,7 +303,7 @@ func (ds ObjectRefVirtualDiskSnapshot) Sync(ctx context.Context, cvi *virtv2.Clu
302303
log.Info("Provisioning...", "progress", cvi.Status.Progress, "pod.phase", pod.Status.Phase)
303304
}
304305

305-
return reconcile.Result{Requeue: true}, nil
306+
return reconcile.Result{RequeueAfter: time.Second}, nil
306307
}
307308

308309
func (ds ObjectRefVirtualDiskSnapshot) CleanUpSupplements(ctx context.Context, cvi *virtv2.ClusterVirtualImage) (reconcile.Result, error) {
@@ -323,7 +324,11 @@ func (ds ObjectRefVirtualDiskSnapshot) CleanUpSupplements(ctx context.Context, c
323324
return reconcile.Result{}, err
324325
}
325326

326-
return reconcile.Result{Requeue: importerRequeue || diskRequeue || pvcCleanupRequeue}, nil
327+
if importerRequeue || diskRequeue || pvcCleanupRequeue {
328+
return reconcile.Result{RequeueAfter: time.Second}, nil
329+
} else {
330+
return reconcile.Result{}, nil
331+
}
327332
}
328333

329334
func (ds ObjectRefVirtualDiskSnapshot) CleanUp(ctx context.Context, cvi *virtv2.ClusterVirtualImage) (bool, error) {

images/virtualization-artifact/pkg/controller/cvi/internal/source/object_ref_vi_on_pvc.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -128,7 +129,7 @@ func (ds ObjectRefVirtualImageOnPvc) Sync(ctx context.Context, cvi *virtv2.Clust
128129

129130
log.Info("Create importer pod...", "progress", cvi.Status.Progress, "pod.phase", "nil")
130131

131-
return reconcile.Result{Requeue: true}, nil
132+
return reconcile.Result{RequeueAfter: time.Second}, nil
132133
case podutil.IsPodComplete(pod):
133134
err = ds.statService.CheckPod(pod)
134135
if err != nil {
@@ -201,7 +202,7 @@ func (ds ObjectRefVirtualImageOnPvc) Sync(ctx context.Context, cvi *virtv2.Clust
201202
log.Info("Provisioning...", "progress", cvi.Status.Progress, "pod.phase", pod.Status.Phase)
202203
}
203204

204-
return reconcile.Result{Requeue: true}, nil
205+
return reconcile.Result{RequeueAfter: time.Second}, nil
205206
}
206207

207208
func (ds ObjectRefVirtualImageOnPvc) CleanUp(ctx context.Context, cvi *virtv2.ClusterVirtualImage) (bool, error) {

images/virtualization-artifact/pkg/controller/cvi/internal/source/registry.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -145,7 +146,7 @@ func (ds RegistryDataSource) Sync(ctx context.Context, cvi *virtv2.ClusterVirtua
145146

146147
log.Info("Create importer pod...", "progress", cvi.Status.Progress, "pod.phase", "nil")
147148

148-
return reconcile.Result{Requeue: true}, nil
149+
return reconcile.Result{RequeueAfter: time.Second}, nil
149150
case podutil.IsPodComplete(pod):
150151
err = ds.statService.CheckPod(pod)
151152
if err != nil {
@@ -220,7 +221,7 @@ func (ds RegistryDataSource) Sync(ctx context.Context, cvi *virtv2.ClusterVirtua
220221
log.Info("Provisioning...", "progress", cvi.Status.Progress, "pod.phase", pod.Status.Phase)
221222
}
222223

223-
return reconcile.Result{Requeue: true}, nil
224+
return reconcile.Result{RequeueAfter: time.Second}, nil
224225
}
225226

226227
func (ds RegistryDataSource) CleanUp(ctx context.Context, cvi *virtv2.ClusterVirtualImage) (bool, error) {

images/virtualization-artifact/pkg/controller/cvi/internal/source/upload.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -140,7 +141,7 @@ func (ds UploadDataSource) Sync(ctx context.Context, cvi *virtv2.ClusterVirtualI
140141

141142
log.Info("Create uploader pod...", "progress", cvi.Status.Progress, "pod.phase", nil)
142143

143-
return reconcile.Result{Requeue: true}, nil
144+
return reconcile.Result{RequeueAfter: time.Second}, nil
144145
case podutil.IsPodComplete(pod):
145146
err = ds.statService.CheckPod(pod)
146147
if err != nil {
@@ -245,7 +246,7 @@ func (ds UploadDataSource) Sync(ctx context.Context, cvi *virtv2.ClusterVirtualI
245246
log.Info("Waiting for the uploader to be ready to process the user's upload", "pod.phase", pod.Status.Phase)
246247
}
247248

248-
return reconcile.Result{Requeue: true}, nil
249+
return reconcile.Result{RequeueAfter: time.Second}, nil
249250
}
250251

251252
func (ds UploadDataSource) CleanUp(ctx context.Context, cvi *virtv2.ClusterVirtualImage) (bool, error) {

images/virtualization-artifact/pkg/controller/vd/internal/source/http.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
storagev1 "k8s.io/api/storage/v1"
@@ -168,7 +169,7 @@ func (ds HTTPDataSource) Sync(ctx context.Context, vd *virtv2.VirtualDisk) (reco
168169
Reason(vdcondition.Provisioning).
169170
Message("DVCR Provisioner not found: create the new one.")
170171

171-
return reconcile.Result{Requeue: true}, nil
172+
return reconcile.Result{RequeueAfter: time.Second}, nil
172173
case !podutil.IsPodComplete(pod):
173174
log.Info("Provisioning to DVCR is in progress", "podPhase", pod.Status.Phase)
174175

@@ -260,7 +261,7 @@ func (ds HTTPDataSource) Sync(ctx context.Context, vd *virtv2.VirtualDisk) (reco
260261
Reason(vdcondition.Provisioning).
261262
Message("PVC Provisioner not found: create the new one.")
262263

263-
return reconcile.Result{Requeue: true}, nil
264+
return reconcile.Result{RequeueAfter: time.Second}, nil
264265
case dvQuotaNotExceededCondition != nil && dvQuotaNotExceededCondition.Status == corev1.ConditionFalse:
265266
vd.Status.Phase = virtv2.DiskPending
266267
cb.
@@ -282,7 +283,7 @@ func (ds HTTPDataSource) Sync(ctx context.Context, vd *virtv2.VirtualDisk) (reco
282283
Status(metav1.ConditionFalse).
283284
Reason(vdcondition.Provisioning).
284285
Message("PVC not found: waiting for creation.")
285-
return reconcile.Result{Requeue: true}, nil
286+
return reconcile.Result{RequeueAfter: time.Second}, nil
286287
case ds.diskService.IsImportDone(dv, pvc):
287288
log.Info("Import has completed", "dvProgress", dv.Status.Progress, "dvPhase", dv.Status.Phase, "pvcPhase", pvc.Status.Phase)
288289

@@ -332,7 +333,7 @@ func (ds HTTPDataSource) Sync(ctx context.Context, vd *virtv2.VirtualDisk) (reco
332333
return reconcile.Result{}, nil
333334
}
334335

335-
return reconcile.Result{Requeue: true}, nil
336+
return reconcile.Result{RequeueAfter: time.Second}, nil
336337
}
337338

338339
func (ds HTTPDataSource) CleanUp(ctx context.Context, vd *virtv2.VirtualDisk) (bool, error) {
@@ -368,7 +369,11 @@ func (ds HTTPDataSource) CleanUpSupplements(ctx context.Context, vd *virtv2.Virt
368369
return reconcile.Result{}, err
369370
}
370371

371-
return reconcile.Result{Requeue: importerRequeue || diskRequeue}, nil
372+
if importerRequeue || diskRequeue {
373+
return reconcile.Result{RequeueAfter: time.Second}, nil
374+
} else {
375+
return reconcile.Result{}, nil
376+
}
372377
}
373378

374379
func (ds HTTPDataSource) Name() string {

images/virtualization-artifact/pkg/controller/vd/internal/source/object_ref_cvi.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
storagev1 "k8s.io/api/storage/v1"
@@ -175,7 +176,7 @@ func (ds ObjectRefClusterVirtualImage) Sync(ctx context.Context, vd *virtv2.Virt
175176
Reason(vdcondition.Provisioning).
176177
Message("PVC Provisioner not found: create the new one.")
177178

178-
return reconcile.Result{Requeue: true}, nil
179+
return reconcile.Result{RequeueAfter: time.Second}, nil
179180
case dvQuotaNotExceededCondition != nil && dvQuotaNotExceededCondition.Status == corev1.ConditionFalse:
180181
vd.Status.Phase = virtv2.DiskPending
181182
cb.
@@ -197,7 +198,7 @@ func (ds ObjectRefClusterVirtualImage) Sync(ctx context.Context, vd *virtv2.Virt
197198
Status(metav1.ConditionFalse).
198199
Reason(vdcondition.Provisioning).
199200
Message("PVC not found: waiting for creation.")
200-
return reconcile.Result{Requeue: true}, nil
201+
return reconcile.Result{RequeueAfter: time.Second}, nil
201202
case ds.diskService.IsImportDone(dv, pvc):
202203
log.Info("Import has completed", "dvProgress", dv.Status.Progress, "dvPhase", dv.Status.Phase, "pvcPhase", pvc.Status.Phase)
203204
ds.recorder.Event(
@@ -246,7 +247,7 @@ func (ds ObjectRefClusterVirtualImage) Sync(ctx context.Context, vd *virtv2.Virt
246247
return reconcile.Result{}, nil
247248
}
248249

249-
return reconcile.Result{Requeue: true}, nil
250+
return reconcile.Result{RequeueAfter: time.Second}, nil
250251
}
251252

252253
func (ds ObjectRefClusterVirtualImage) Validate(ctx context.Context, vd *virtv2.VirtualDisk) error {
@@ -273,7 +274,11 @@ func (ds ObjectRefClusterVirtualImage) CleanUpSupplements(ctx context.Context, v
273274
return reconcile.Result{}, err
274275
}
275276

276-
return reconcile.Result{Requeue: requeue}, nil
277+
if requeue {
278+
return reconcile.Result{RequeueAfter: time.Second}, nil
279+
} else {
280+
return reconcile.Result{}, nil
281+
}
277282
}
278283

279284
func (ds ObjectRefClusterVirtualImage) getSource(sup *supplements.Generator, cvi *virtv2.ClusterVirtualImage) *cdiv1.DataVolumeSource {

images/virtualization-artifact/pkg/controller/vd/internal/source/object_ref_vi_dvcr.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"time"
2324

2425
corev1 "k8s.io/api/core/v1"
2526
storagev1 "k8s.io/api/storage/v1"
@@ -175,7 +176,7 @@ func (ds ObjectRefVirtualImageDVCR) Sync(ctx context.Context, vd *virtv2.Virtual
175176
Reason(vdcondition.Provisioning).
176177
Message("PVC Provisioner not found: create the new one.")
177178

178-
return reconcile.Result{Requeue: true}, nil
179+
return reconcile.Result{RequeueAfter: time.Second}, nil
179180
case dvQuotaNotExceededCondition != nil && dvQuotaNotExceededCondition.Status == corev1.ConditionFalse:
180181
vd.Status.Phase = virtv2.DiskPending
181182
cb.
@@ -197,7 +198,7 @@ func (ds ObjectRefVirtualImageDVCR) Sync(ctx context.Context, vd *virtv2.Virtual
197198
Status(metav1.ConditionFalse).
198199
Reason(vdcondition.Provisioning).
199200
Message("PVC not found: waiting for creation.")
200-
return reconcile.Result{Requeue: true}, nil
201+
return reconcile.Result{RequeueAfter: time.Second}, nil
201202
case ds.diskService.IsImportDone(dv, pvc):
202203
log.Info("Import has completed", "dvProgress", dv.Status.Progress, "dvPhase", dv.Status.Phase, "pvcPhase", pvc.Status.Phase)
203204
ds.recorder.Event(
@@ -246,7 +247,7 @@ func (ds ObjectRefVirtualImageDVCR) Sync(ctx context.Context, vd *virtv2.Virtual
246247
return reconcile.Result{}, nil
247248
}
248249

249-
return reconcile.Result{Requeue: true}, nil
250+
return reconcile.Result{RequeueAfter: time.Second}, nil
250251
}
251252

252253
func (ds ObjectRefVirtualImageDVCR) Validate(ctx context.Context, vd *virtv2.VirtualDisk) error {
@@ -274,7 +275,11 @@ func (ds ObjectRefVirtualImageDVCR) CleanUpSupplements(ctx context.Context, vd *
274275
return reconcile.Result{}, err
275276
}
276277

277-
return reconcile.Result{Requeue: requeue}, nil
278+
if requeue {
279+
return reconcile.Result{RequeueAfter: time.Second}, nil
280+
} else {
281+
return reconcile.Result{}, nil
282+
}
278283
}
279284

280285
func (ds ObjectRefVirtualImageDVCR) getSource(sup *supplements.Generator, vi *virtv2.VirtualImage) *cdiv1.DataVolumeSource {

0 commit comments

Comments
 (0)