Skip to content

Commit cfb2eba

Browse files
committed
Allow mgr to be nil
1 parent fcd2b53 commit cfb2eba

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

providers/multi/provider.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ type Provider struct {
5353
}
5454

5555
// New returns a new instance of the provider with the given options.
56-
func New(mgr mctrl.Manager, opts Options) *Provider {
56+
func New(opts Options) *Provider {
5757
p := new(Provider)
5858

5959
p.opts = opts
@@ -62,14 +62,21 @@ func New(mgr mctrl.Manager, opts Options) *Provider {
6262
}
6363

6464
p.log = log.Log.WithName("namespaced-cluster-provider")
65-
p.mgr = mgr
6665

6766
p.providers = make(map[string]multicluster.Provider)
6867
p.providerCancel = make(map[string]context.CancelFunc)
6968

7069
return p
7170
}
7271

72+
// SetManager sets the manager for the provider.
73+
func (p *Provider) SetManager(mgr mctrl.Manager) {
74+
if p.mgr != nil {
75+
p.log.Error(nil, "manager already set, overwriting")
76+
}
77+
p.mgr = mgr
78+
}
79+
7380
// Run starts the provider and blocks until the context is done. This is a noop.
7481
func (p *Provider) Run(ctx context.Context, mgr mctrl.Manager) error {
7582
<-ctx.Done()
@@ -92,12 +99,16 @@ func (p *Provider) splitClusterName(clusterName string) (string, string) {
9299
func (p *Provider) AddProvider(ctx context.Context, prefix string, provider multicluster.Provider, startFunc func(context.Context, mctrl.Manager) error) error {
93100
ctx, cancel := context.WithCancel(ctx)
94101

95-
wrappedMgr := &wrappedManager{
96-
Manager: p.mgr,
97-
prefix: prefix,
98-
sep: p.opts.Separator,
102+
var wrappedMgr mctrl.Manager
103+
if p.mgr == nil {
104+
p.log.Info("manager is nil, wrapped manager passed to start will be nil as well", "prefix", prefix)
105+
} else {
106+
wrappedMgr = &wrappedManager{
107+
Manager: p.mgr,
108+
prefix: prefix,
109+
sep: p.opts.Separator,
110+
}
99111
}
100-
101112
if err := startFunc(ctx, wrappedMgr); err != nil {
102113
cancel()
103114
return fmt.Errorf("failed to start provider %q: %w", prefix, err)

0 commit comments

Comments
 (0)