Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ func (r *KubeadmConfigReconciler) SetupWithManager(ctx context.Context, mgr ctrl
}

// Reconcile handles KubeadmConfig events.
func (r *KubeadmConfigReconciler) Reconcile(ctx context.Context, req ctrl.Request) (_ ctrl.Result, rerr error) {
func (r *KubeadmConfigReconciler) Reconcile(ctx context.Context, req ctrl.Request) (retRes ctrl.Result, rerr error) {
log := ctrl.LoggerFrom(ctx)

// Look up the kubeadm config
Expand Down Expand Up @@ -273,6 +273,12 @@ func (r *KubeadmConfigReconciler) Reconcile(ctx context.Context, req ctrl.Reques
if err := patchHelper.Patch(ctx, config, patchOpts...); err != nil {
rerr = kerrors.NewAggregate([]error{rerr, err})
}

// Note: controller-runtime logs a warning that non-empty result is ignored
// if error is not nil, so setting result here to empty to avoid noisy warnings.
if rerr != nil {
retRes = ctrl.Result{}
}
}()

// Ignore deleted KubeadmConfigs.
Expand Down
6 changes: 6 additions & 0 deletions controlplane/kubeadm/internal/controllers/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,12 @@ func (r *KubeadmControlPlaneReconciler) Reconcile(ctx context.Context, req ctrl.
res = ctrl.Result{RequeueAfter: 20 * time.Second}
}
}

// Note: controller-runtime logs a warning that non-empty result is ignored
// if error is not nil, so setting result here to empty to avoid noisy warnings.
if reterr != nil {
res = ctrl.Result{}
}
}()

if !kcp.DeletionTimestamp.IsZero() {
Expand Down
8 changes: 7 additions & 1 deletion util/apiwarnings/expressions.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ import (
// warning that the API server returns when a finalizer is not domain-qualified.
func DomainQualifiedFinalizerWarning(domain string) regexp.Regexp {
return *regexp.MustCompile(
fmt.Sprintf("^metadata.finalizers:.*%s.*prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers$", domain),
fmt.Sprintf("^metadata.finalizers:.*%s.*prefer a domain-qualified finalizer name (including a path \\(\\/\\) )?to avoid accidental conflicts with other finalizer writers$", domain),
)
}

// DeprecationWarning is a regular expression that matches a
// warning that the API server returns when using a type that is deprecated.
func DeprecationWarning() regexp.Regexp {
return *regexp.MustCompile("^.*is deprecated; use .*$")
}
1 change: 1 addition & 0 deletions util/apiwarnings/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ func DefaultHandler(l logr.Logger) *DiscardMatchingHandler {
Logger: l,
Expressions: []regexp.Regexp{
DomainQualifiedFinalizerWarning(clusterv1.GroupVersion.Group),
DeprecationWarning(),
},
}
}
Expand Down
14 changes: 13 additions & 1 deletion util/apiwarnings/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,23 @@ func TestDefaultHandler(t *testing.T) {
wantLogged: true,
},
{
name: "do not log, if warning matches at least one expression",
name: "do not log, if warning matches at least one expression (domain-qualified finalizer)",
code: 299,
message: `metadata.finalizers: "dockermachine.infrastructure.cluster.x-k8s.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers`,
wantLogged: false,
},
{
name: "do not log, if warning matches at least one expression (domain-qualified finalizer)",
code: 299,
message: `metadata.finalizers: "cluster.cluster.x-k8s.io": prefer a domain-qualified finalizer name including a path (/) to avoid accidental conflicts with other finalizer writers`,
wantLogged: false,
},
{
name: "do not log, if warning matches at least one expression (deprecation warning)",
code: 299,
message: `controlplane.cluster.x-k8s.io/v1beta1 KubeadmControlPlane is deprecated; use controlplane.cluster.x-k8s.io/v1beta2 KubeadmControlPlane`,
wantLogged: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down