Skip to content

Commit

Permalink
Allows setting wildcards for SkippedPropagatingNamespaces
Browse files Browse the repository at this point in the history
Signed-off-by: chaunceyjiang <[email protected]>
  • Loading branch information
chaunceyjiang committed Apr 7, 2023
1 parent cbf5c4a commit 8b701db
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 18 deletions.
13 changes: 2 additions & 11 deletions cmd/controller-manager/app/controllermanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -411,14 +411,10 @@ func startWorkStatusController(ctx controllerscontext.Context) (enabled bool, er
}

func startNamespaceController(ctx controllerscontext.Context) (enabled bool, err error) {
skippedPropagatingNamespaces := map[string]struct{}{}
for _, ns := range ctx.Opts.SkippedPropagatingNamespaces {
skippedPropagatingNamespaces[ns] = struct{}{}
}
namespaceSyncController := &namespace.Controller{
Client: ctx.Mgr.GetClient(),
EventRecorder: ctx.Mgr.GetEventRecorderFor(namespace.ControllerName),
SkippedPropagatingNamespaces: skippedPropagatingNamespaces,
SkippedPropagatingNamespaces: ctx.Opts.SkippedPropagatingNamespaces,
OverrideManager: ctx.OverrideManager,
}
if err := namespaceSyncController.SetupWithManager(ctx.Mgr); err != nil {
Expand Down Expand Up @@ -543,11 +539,6 @@ func setupControllers(mgr controllerruntime.Manager, opts *options.Options, stop
return
}

skippedPropagatingNamespaces := map[string]struct{}{}
for _, ns := range opts.SkippedPropagatingNamespaces {
skippedPropagatingNamespaces[ns] = struct{}{}
}

controlPlaneInformerManager := genericmanager.NewSingleClusterInformerManager(dynamicClientSet, 0, stopChan)

resourceInterpreter := resourceinterpreter.NewResourceInterpreter(controlPlaneInformerManager)
Expand All @@ -564,7 +555,7 @@ func setupControllers(mgr controllerruntime.Manager, opts *options.Options, stop
RESTMapper: mgr.GetRESTMapper(),
DynamicClient: dynamicClientSet,
SkippedResourceConfig: skippedResourceConfig,
SkippedPropagatingNamespaces: skippedPropagatingNamespaces,
SkippedPropagatingNamespaces: opts.SkippedPropagatingNamespaces,
ResourceInterpreter: resourceInterpreter,
EventRecorder: mgr.GetEventRecorderFor("resource-detector"),
ConcurrentResourceTemplateSyncs: opts.ConcurrentResourceTemplateSyncs,
Expand Down
9 changes: 8 additions & 1 deletion cmd/controller-manager/app/options/validation.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package options

import (
"fmt"
"regexp"

"k8s.io/apimachinery/pkg/util/validation/field"

"github.com/karmada-io/karmada/pkg/util"
Expand Down Expand Up @@ -33,6 +36,10 @@ func (o *Options) Validate() field.ErrorList {
if o.ClusterStartupGracePeriod.Duration <= 0 {
errs = append(errs, field.Invalid(newPath.Child("ClusterStartupGracePeriod"), o.ClusterStartupGracePeriod, "must be greater than 0"))
}

for index, ns := range o.SkippedPropagatingNamespaces {
if _, err := regexp.Compile(fmt.Sprintf("^%s$", ns)); err != nil {
errs = append(errs, field.Invalid(newPath.Child("SkippedPropagatingNamespaces").Index(index), o.SkippedPropagatingNamespaces, "Invalid namespace string"))
}
}
return errs
}
9 changes: 6 additions & 3 deletions pkg/controllers/namespace/namespace_sync_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package namespace
import (
"context"
"fmt"
"regexp"
"strings"

corev1 "k8s.io/api/core/v1"
Expand Down Expand Up @@ -41,7 +42,7 @@ const (
type Controller struct {
client.Client // used to operate Work resources.
EventRecorder record.EventRecorder
SkippedPropagatingNamespaces map[string]struct{}
SkippedPropagatingNamespaces []string
OverrideManager overridemanager.OverrideManager
}

Expand Down Expand Up @@ -96,8 +97,10 @@ func (c *Controller) namespaceShouldBeSynced(namespace string) bool {
return false
}

if _, ok := c.SkippedPropagatingNamespaces[namespace]; ok {
return false
for _, ns := range c.SkippedPropagatingNamespaces {
if match, _ := regexp.MatchString(fmt.Sprintf("^%s$", ns), namespace); match {
return false
}
}
return true
}
Expand Down
9 changes: 6 additions & 3 deletions pkg/detector/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package detector
import (
"context"
"fmt"
"regexp"
"sync"
"time"

Expand Down Expand Up @@ -55,7 +56,7 @@ type ResourceDetector struct {
EventHandler cache.ResourceEventHandler
Processor util.AsyncWorker
SkippedResourceConfig *util.SkippedResourceConfig
SkippedPropagatingNamespaces map[string]struct{}
SkippedPropagatingNamespaces []string
// ResourceInterpreter knows the details of resource structure.
ResourceInterpreter resourceinterpreter.ResourceInterpreter
EventRecorder record.EventRecorder
Expand Down Expand Up @@ -253,8 +254,10 @@ func (d *ResourceDetector) EventFilter(obj interface{}) bool {
}

// if SkippedPropagatingNamespaces is set, skip object events in these namespaces.
if _, ok := d.SkippedPropagatingNamespaces[clusterWideKey.Namespace]; ok {
return false
for _, ns := range d.SkippedPropagatingNamespaces {
if match, _ := regexp.MatchString(fmt.Sprintf("^%s$", ns), clusterWideKey.Namespace); match {
return false
}
}

if unstructObj, ok := obj.(*unstructured.Unstructured); ok {
Expand Down

0 comments on commit 8b701db

Please sign in to comment.