Skip to content

Commit 9805d2b

Browse files
authored
feat: introduce support for modifying the flag name of the initializer (#26)
1 parent d90f42e commit 9805d2b

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

controller/initializer/initializer.go

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import (
2626
"sigs.k8s.io/controller-runtime/pkg/manager"
2727
)
2828

29+
var defaultName = "controllers"
30+
2931
// InitFunc is used to setup manager, particularly to launch a controller.
3032
// It may run additional "should I activate checks".
3133
// Any error returned will cause the main process to `Fatal`
@@ -69,7 +71,7 @@ func WithOverride() InitOption {
6971
})
7072
}
7173

72-
// Interface knows how to set up controllers with manager
74+
// Interface knows how to set up initializers with manager
7375
type Interface interface {
7476
// Add add new setup function to initializer.
7577
Add(name string, setup InitFunc, options ...InitOption) error
@@ -80,7 +82,7 @@ type Interface interface {
8082
// Enabled returns true if the controller is enabled.
8183
Enabled(name string) bool
8284

83-
// SetupWithManager add all enabled controllers to manager
85+
// SetupWithManager add all enabled initializers to manager
8486
SetupWithManager(mgr manager.Manager) error
8587

8688
// BindFlag adds a flag for setting global feature gates to the specified FlagSet.
@@ -89,7 +91,14 @@ type Interface interface {
8991

9092
// New returns a new instance of initializer interface
9193
func New() Interface {
94+
return NewNamed(defaultName)
95+
}
96+
97+
// NewNamed returns a new instance of initializer interface with the specified name.
98+
// The name will be used as the flag name in BindFlags.
99+
func NewNamed(name string) Interface {
92100
return &managerInitializer{
101+
name: name,
93102
initializers: make(map[string]InitFunc),
94103
all: sets.NewString(),
95104
enabled: sets.NewString(),
@@ -103,6 +112,7 @@ var _ Interface = &managerInitializer{}
103112
type managerInitializer struct {
104113
lock sync.RWMutex
105114

115+
name string
106116
initializers map[string]InitFunc
107117
all sets.String
108118
enabled sets.String
@@ -157,10 +167,10 @@ func (m *managerInitializer) Add(name string, setup InitFunc, opts ...InitOption
157167
func (m *managerInitializer) BindFlag(fs *pflag.FlagSet) {
158168
all := m.all.Difference(m.hidden).List()
159169
disabled := m.disableByDefault.List()
160-
fs.Var(m, "controllers", fmt.Sprintf(""+
161-
"A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller "+
162-
"named 'foo', '-foo' disables the controller named 'foo'.\nAll controllers: %s\nDisabled-by-default controllers: %s",
163-
strings.Join(all, ", "), strings.Join(disabled, ", ")))
170+
fs.Var(m, m.name, fmt.Sprintf(""+
171+
"A list of %s to enable. '*' enables all on-by-default %s, 'foo' enables the %s "+
172+
"named 'foo', '-foo' disables the %s named 'foo'.\nAll: %s\nDisabled-by-default: %s",
173+
m.name, m.name, m.name, m.name, strings.Join(all, ", "), strings.Join(disabled, ", ")))
164174
}
165175

166176
// Knowns implements Controllerinitializer.
@@ -177,7 +187,7 @@ func (m *managerInitializer) SetupWithManager(mgr manager.Manager) error {
177187
for _, name := range m.enabled.List() {
178188
_, err := m.initializers[name](mgr)
179189
if err != nil {
180-
return fmt.Errorf("failed to initialize controller %q: %v", name, err)
190+
return fmt.Errorf("failed to initialize %q: %v", name, err)
181191
}
182192
}
183193
return nil
@@ -220,10 +230,10 @@ func (m *managerInitializer) Set(value string) error {
220230
m.lock.Lock()
221231
defer m.lock.Unlock()
222232

223-
controllers := strings.Split(strings.TrimSpace(value), ",")
233+
initializers := strings.Split(strings.TrimSpace(value), ",")
224234
all := m.all.List()
225235
for _, name := range all {
226-
if m.enabledUnlocked(name, controllers) {
236+
if m.enabledUnlocked(name, initializers) {
227237
m.enabled.Insert(name)
228238
} else {
229239
m.enabled.Delete(name)

controller/initializer/initializer_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func Test_Initializer(t *testing.T) {
5252
// test bind flag
5353
fs := pflag.NewFlagSet("test-*", pflag.PanicOnError)
5454
initializer.BindFlag(fs)
55-
fs.Set("controllers", "*")
55+
fs.Set(defaultName, "*")
5656
err = fs.Parse(nil)
5757
assert.NoError(t, err)
5858
assert.True(t, initializer.Enabled("test1"))
@@ -62,7 +62,7 @@ func Test_Initializer(t *testing.T) {
6262

6363
fs = pflag.NewFlagSet("test", pflag.PanicOnError)
6464
initializer.BindFlag(fs)
65-
fs.Set("controllers", "test1,test2")
65+
fs.Set(defaultName, "test1,test2")
6666
err = fs.Parse(nil)
6767
assert.NoError(t, err)
6868
assert.True(t, initializer.Enabled("test1"))
@@ -72,7 +72,7 @@ func Test_Initializer(t *testing.T) {
7272

7373
fs = pflag.NewFlagSet("test", pflag.PanicOnError)
7474
initializer.BindFlag(fs)
75-
fs.Set("controllers", "-test1,test3")
75+
fs.Set(defaultName, "-test1,test3")
7676
err = fs.Parse(nil)
7777
assert.NoError(t, err)
7878
assert.False(t, initializer.Enabled("test1"))
@@ -82,7 +82,7 @@ func Test_Initializer(t *testing.T) {
8282

8383
fs = pflag.NewFlagSet("test", pflag.PanicOnError)
8484
initializer.BindFlag(fs)
85-
fs.Set("controllers", "-test1,-__internal")
85+
fs.Set(defaultName, "-test1,-__internal")
8686
err = fs.Parse(nil)
8787
assert.NoError(t, err)
8888
assert.False(t, initializer.Enabled("test1"))

0 commit comments

Comments
 (0)