// Package buildermgr — NSWatcher for multi-tenant mode. // // Listens for Namespaces labeled fission.io/managed=true and calls // AddNamespace on envWatcher and packageWatcher so they pick up // Environments and Packages in new tenant namespaces without a restart. package buildermgr import ( "context" "go.uber.org/zap" "k8s.io/client-go/kubernetes" "github.com/fission/fission/pkg/utils" "github.com/fission/fission/pkg/utils/manager" ) // StartNSWatcher watches for Namespaces labeled fission.io/managed=true // and immediately registers per-NS informers in envWatcher and pkgWatcher. func StartNSWatcher( ctx context.Context, logger *zap.Logger, kubeClient kubernetes.Interface, envw *environmentWatcher, pkgw *packageWatcher, mgr manager.Interface, ) { _, handlers, err := utils.PrepareManagedNamespaceWatcher(ctx, logger, "buildermgr.NSWatcher", utils.DefaultNSResolver().Snapshot(), utils.NamespaceRemovalStrategyTrackOnly, NewNamespaceSubscriber(envw, pkgw, mgr)) if err != nil { logger.Error("buildermgr.NSWatcher: BootstrapAndDispatch failed", zap.Error(err)) } utils.StartManagedNamespaceWatcher(ctx, logger, "buildermgr.NSWatcher", kubeClient, mgr, handlers) }