Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion controllers/operator/nmstate_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"slices"
"sort"
"strings"
"time"

"github.com/go-logr/logr"
"github.com/pkg/errors"
Expand Down Expand Up @@ -53,6 +54,12 @@ import (

const (
nmstateOperatorFieldOwner = client.FieldOwner("nmstate-operator")

// The periodic resync interval.
// We will re-run the reconciliation logic, even if the NMState
// configuration hasn't changed. This ensures that externally
// modified resources (e.g. namespace annotations) are restored.
ResyncPeriod = 5 * time.Minute
)

// NMStateReconciler reconciles a NMState object
Expand Down Expand Up @@ -141,7 +148,7 @@ func (r *NMStateReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
}

r.Log.Info("Reconcile complete.")
return ctrl.Result{}, nil
return ctrl.Result{RequeueAfter: ResyncPeriod}, nil
}

func (r *NMStateReconciler) SetupWithManager(mgr ctrl.Manager) error {
Expand Down
24 changes: 12 additions & 12 deletions controllers/operator/nmstate_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,10 +218,10 @@ var _ = Describe("NMState controller reconcile", func() {
BeforeEach(func() {
request.Name = existingNMStateName
})
It("should return a Result", func() {
It("should return a Result with RequeueAfter", func() {
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
})
Context("when one of manifest directory is empty", func() {
Expand Down Expand Up @@ -272,7 +272,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should not add default NodeSelector to handler daemonset", func() {
ds := &appsv1.DaemonSet{}
Expand Down Expand Up @@ -313,7 +313,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should add Tolerations to handler daemonset", func() {
ds := &appsv1.DaemonSet{}
Expand Down Expand Up @@ -342,7 +342,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should add InfraNodeSelector to webhook deployment", func() {
deployment := &appsv1.Deployment{}
Expand Down Expand Up @@ -384,7 +384,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should add InfraTolerations to webhook deployment", func() {
deployment := &appsv1.Deployment{}
Expand Down Expand Up @@ -427,7 +427,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should add DNS probe host to handler daemonset", func() {
ds := &appsv1.DaemonSet{}
Expand All @@ -449,7 +449,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should apply network policies", func() {
netpols := &networkingv1.NetworkPolicyList{}
Expand All @@ -475,7 +475,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should add verbose arguments to handler daemonset container args", func() {
ds := &appsv1.DaemonSet{}
Expand Down Expand Up @@ -503,7 +503,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should not add verbose arguments to handler daemonset container args", func() {
ds := &appsv1.DaemonSet{}
Expand All @@ -530,7 +530,7 @@ var _ = Describe("NMState controller reconcile", func() {
request.Name = existingNMStateName
result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})
It("should not add verbose arguments to handler daemonset container args", func() {
ds := &appsv1.DaemonSet{}
Expand Down Expand Up @@ -589,7 +589,7 @@ var _ = Describe("NMState controller reconcile", func() {

result, err := reconciler.Reconcile(context.Background(), request)
Expect(err).ToNot(HaveOccurred())
Expect(result).To(Equal(ctrl.Result{}))
Expect(result).To(Equal(ctrl.Result{RequeueAfter: ResyncPeriod}))
})

Context("On single node cluster", func() {
Expand Down