Skip to content

Commit 5957f36

Browse files
committed
Allow mgr to be nil
1 parent e98a317 commit 5957f36

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()
@@ -95,12 +102,16 @@ func (p *Provider) splitClusterName(clusterName string) (string, string) {
95102
func (p *Provider) AddProvider(ctx context.Context, prefix string, provider multicluster.Provider, startFunc func(context.Context, mctrl.Manager) error) error {
96103
ctx, cancel := context.WithCancel(ctx)
97104

98-
wrappedMgr := &wrappedManager{
99-
Manager: p.mgr,
100-
prefix: prefix,
101-
sep: p.opts.Separator,
105+
var wrappedMgr mctrl.Manager
106+
if p.mgr == nil {
107+
p.log.Info("manager is nil, wrapped manager passed to start will be nil as well", "prefix", prefix)
108+
} else {
109+
wrappedMgr = &wrappedManager{
110+
Manager: p.mgr,
111+
prefix: prefix,
112+
sep: p.opts.Separator,
113+
}
102114
}
103-
104115
if err := startFunc(ctx, wrappedMgr); err != nil {
105116
cancel()
106117
return fmt.Errorf("failed to start provider %q: %w", prefix, err)

0 commit comments

Comments
 (0)