Skip to content

Commit 3ee3cfc

Browse files
fix
Signed-off-by: Yaroslav Borbat <[email protected]>
1 parent 5d4dd85 commit 3ee3cfc

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

images/virtualization-artifact/pkg/controller/reconciler/reconciler.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ type Handler[T client.Object] interface {
3939
Name() string
4040
}
4141

42+
type Named interface {
43+
Name() string
44+
}
45+
46+
type Finalizer interface {
47+
Finalize(ctx context.Context) error
48+
}
49+
4250
type Watcher interface {
4351
Watch(mgr manager.Manager, ctr controller.Controller) error
4452
}
@@ -82,7 +90,13 @@ func (r *BaseReconciler[H]) Reconcile(ctx context.Context) (reconcile.Result, er
8290

8391
handlersLoop:
8492
for _, h := range r.handlers {
85-
log := logger.FromContext(ctx).With(logger.SlogHandler(reflect.TypeOf(h).Elem().Name()))
93+
var name string
94+
if named, ok := any(h).(Named); ok {
95+
name = named.Name()
96+
} else {
97+
name = reflect.TypeOf(h).Elem().Name()
98+
}
99+
log := logger.FromContext(ctx).With(logger.SlogHandler(name))
86100

87101
res, err := r.execute(ctx, h)
88102
switch {
@@ -121,6 +135,15 @@ handlersLoop:
121135
return reconcile.Result{}, errs
122136
}
123137

138+
for _, h := range r.handlers {
139+
if finalizer, ok := any(h).(Finalizer); ok {
140+
if err := finalizer.Finalize(ctx); err != nil {
141+
logger.FromContext(ctx).Error("Failed to finalize resource", logger.SlogErr(err))
142+
return reconcile.Result{}, err
143+
}
144+
}
145+
}
146+
124147
//nolint:staticcheck // logging
125148
logger.FromContext(ctx).Debug("Reconciliation was successfully completed", "requeue", result.Requeue, "after", result.RequeueAfter)
126149

images/virtualization-artifact/pkg/controller/vm/internal/migrating_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ var _ = Describe("MigratingHandler", func() {
9191
}
9292

9393
reconcile := func() {
94-
h := NewMigratingHandler()
94+
h := NewMigratingHandler(fakeClient)
9595
_, err := h.Handle(ctx, vmState)
9696
Expect(err).NotTo(HaveOccurred())
9797
err = resource.Update(context.Background())

images/virtualization-artifact/pkg/controller/vm/vm_controller.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"sigs.k8s.io/controller-runtime/pkg/metrics"
2828

2929
"github.com/deckhouse/deckhouse/pkg/log"
30+
3031
"github.com/deckhouse/virtualization-controller/pkg/controller/netmanager"
3132
"github.com/deckhouse/virtualization-controller/pkg/controller/service"
3233
"github.com/deckhouse/virtualization-controller/pkg/controller/vm/internal"
@@ -72,7 +73,7 @@ func SetupController(
7273
internal.NewSyncPowerStateHandler(client, recorder),
7374
internal.NewSyncMetadataHandler(client),
7475
internal.NewLifeCycleHandler(client, recorder),
75-
internal.NewMigratingHandler(),
76+
internal.NewMigratingHandler(client),
7677
internal.NewFirmwareHandler(firmwareImage),
7778
internal.NewEvictHandler(),
7879
internal.NewStatisticHandler(client),

0 commit comments

Comments
 (0)