Skip to content

Commit 34ca3b2

Browse files
author
Michael
committed
fix based on reviews
1 parent 36bb742 commit 34ca3b2

File tree

7 files changed

+57
-45
lines changed

7 files changed

+57
-45
lines changed

pkg/common/security/acl.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,15 @@ func (a *ACL) setAllAllowed(part string) {
4646
a.allAllowed = part == common.Wildcard
4747
}
4848

49-
// set the user list in the ACL, invalid user names are ignored
50-
func (a *ACL) setUsers(userList []string) {
49+
// set the user list in the ACL, invalid user names are ignored.
50+
// If the silence flag is set to true, the function will not log when setting the users.
51+
func (a *ACL) setUsers(userList []string, silence bool) {
5152
a.users = make(map[string]bool)
5253
// special case if the user list is just the wildcard
5354
if len(userList) == 1 && userList[0] == common.Wildcard {
54-
log.Log(log.Security).Info("user list is wildcard, allowing all access")
55+
if !silence {
56+
log.Log(log.Security).Info("user list is wildcard, allowing all access")
57+
}
5558
a.allAllowed = true
5659
return
5760
}
@@ -64,7 +67,7 @@ func (a *ACL) setUsers(userList []string) {
6467
// check the users validity
6568
if userNameRegExp.MatchString(user) {
6669
a.users[user] = true
67-
} else {
70+
} else if !silence {
6871
log.Log(log.Security).Info("ignoring user in ACL definition",
6972
zap.String("user", user))
7073
}
@@ -102,7 +105,7 @@ func (a *ACL) setGroups(groupList []string) {
102105
}
103106

104107
// create a new ACL from scratch
105-
func NewACL(aclStr string) (ACL, error) {
108+
func NewACL(aclStr string, silence bool) (ACL, error) {
106109
acl := ACL{}
107110
if aclStr == "" {
108111
return acl, nil
@@ -116,7 +119,7 @@ func NewACL(aclStr string) (ACL, error) {
116119
// trim and check for wildcard
117120
acl.setAllAllowed(aclStr)
118121
// parse users and groups
119-
acl.setUsers(strings.Split(fields[0], common.Separator))
122+
acl.setUsers(strings.Split(fields[0], common.Separator), silence)
120123
if len(fields) == 2 {
121124
acl.setGroups(strings.Split(fields[1], common.Separator))
122125
}

pkg/common/security/acl_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func TestACLCreate(t *testing.T) {
155155
}
156156
for _, tt := range tests {
157157
t.Run(tt.input, func(t *testing.T) {
158-
got, err := NewACL(tt.input)
158+
got, err := NewACL(tt.input, false)
159159
if err != nil {
160160
t.Errorf("parsing failed for string: %s", tt.input)
161161
}
@@ -177,7 +177,7 @@ func TestNewACLErrorCase(t *testing.T) {
177177
}
178178
for _, tt := range tests {
179179
t.Run(tt.caseName, func(t *testing.T) {
180-
if _, err := NewACL(tt.acl); err == nil {
180+
if _, err := NewACL(tt.acl, false); err == nil {
181181
t.Errorf("parsing %s string should be failed", tt.acl)
182182
}
183183
})
@@ -238,7 +238,7 @@ func TestACLAccess(t *testing.T) {
238238
}
239239
for _, tt := range tests {
240240
t.Run(fmt.Sprintf("vistor %v, acl %s", tt.visitor, tt.acl), func(t *testing.T) {
241-
acl, err := NewACL(tt.acl)
241+
acl, err := NewACL(tt.acl, false)
242242
if err != nil {
243243
t.Error("the number of space should not be more than 2 because the number of categories only include users and groups")
244244
}

pkg/scheduler/objects/queue.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func NewConfiguredQueue(conf configs.QueueConfig, parent *Queue, silence bool) (
128128
sq.maxRunningApps = conf.MaxApplications
129129

130130
// update the properties
131-
if err := sq.applyConf(conf); err != nil {
131+
if err := sq.applyConf(conf, silence); err != nil {
132132
return nil, errors.Join(errors.New("configured queue creation failed: "), err)
133133
}
134134

@@ -312,21 +312,22 @@ func filterParentProperty(key string, value string) string {
312312
func (sq *Queue) ApplyConf(conf configs.QueueConfig) error {
313313
sq.Lock()
314314
defer sq.Unlock()
315-
return sq.applyConf(conf)
315+
return sq.applyConf(conf, false)
316316
}
317317

318318
// applyConf applies all the properties to the queue from the config.
319-
// lock free call, must be called holding the queue lock or during create only
320-
func (sq *Queue) applyConf(conf configs.QueueConfig) error {
319+
// lock free call, must be called holding the queue lock or during create only.
320+
// If the silence flag is set to true, the function will not log when setting the users.
321+
func (sq *Queue) applyConf(conf configs.QueueConfig, silence bool) error {
321322
// Set the ACLs
322323
var err error
323-
sq.submitACL, err = security.NewACL(conf.SubmitACL)
324+
sq.submitACL, err = security.NewACL(conf.SubmitACL, silence)
324325
if err != nil {
325326
log.Log(log.SchedQueue).Error("parsing submit ACL failed this should not happen",
326327
zap.Error(err))
327328
return err
328329
}
329-
sq.adminACL, err = security.NewACL(conf.AdminACL)
330+
sq.adminACL, err = security.NewACL(conf.AdminACL, silence)
330331
if err != nil {
331332
log.Log(log.SchedQueue).Error("parsing admin ACL failed this should not happen",
332333
zap.Error(err))

pkg/scheduler/objects/queue_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2340,11 +2340,11 @@ func TestResetRunningState(t *testing.T) {
23402340
parent.MarkQueueForRemoval()
23412341
assert.Assert(t, parent.IsDraining(), "parent should be marked as draining")
23422342
assert.Assert(t, leaf.IsDraining(), "leaf should be marked as draining")
2343-
err = parent.applyConf(emptyConf)
2343+
err = parent.applyConf(emptyConf, false)
23442344
assert.NilError(t, err, "failed to update parent")
23452345
assert.Assert(t, parent.IsRunning(), "parent should be running again")
23462346
assert.Assert(t, leaf.IsDraining(), "leaf should still be marked as draining")
2347-
err = leaf.applyConf(emptyConf)
2347+
err = leaf.applyConf(emptyConf, false)
23482348
assert.NilError(t, err, "failed to update leaf")
23492349
assert.Assert(t, leaf.IsRunning(), "leaf should be running again")
23502350
}

pkg/scheduler/partition.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func (pc *PartitionContext) initialPartitionFromConfig(conf configs.PartitionCon
132132

133133
// We need to pass in the locked version of the GetQueue function.
134134
// Placing an application will not have a lock on the partition context.
135-
pc.placementManager = placement.NewPlacementManager(conf.PlacementRules, pc.GetQueue)
135+
pc.placementManager = placement.NewPlacementManager(conf.PlacementRules, pc.GetQueue, silence)
136136
// get the user group cache for the partition
137137
pc.userGroupCache = security.GetUserGroupCache("")
138138
pc.updateNodeSortingPolicy(conf, silence)

pkg/scheduler/placement/placement.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ type AppPlacementManager struct {
4343
locking.RWMutex
4444
}
4545

46-
func NewPlacementManager(rules []configs.PlacementRule, queueFunc func(string) *objects.Queue) *AppPlacementManager {
46+
func NewPlacementManager(rules []configs.PlacementRule, queueFunc func(string) *objects.Queue, silence bool) *AppPlacementManager {
4747
m := &AppPlacementManager{
4848
queueFn: queueFunc,
4949
}
50-
if err := m.initialise(rules); err != nil {
50+
if err := m.initialise(rules, silence); err != nil {
5151
log.Log(log.Config).Error("Placement manager created without rules: not active", zap.Error(err))
5252
}
5353
return m
@@ -66,25 +66,30 @@ func (m *AppPlacementManager) GetRulesDAO() []*dao.RuleDAO {
6666

6767
// UpdateRules sets the rules for an active placement manager
6868
func (m *AppPlacementManager) UpdateRules(rules []configs.PlacementRule) error {
69-
if err := m.initialise(rules); err != nil {
69+
if err := m.initialise(rules, false); err != nil {
7070
log.Log(log.Config).Info("Placement manager rules not reloaded", zap.Error(err))
7171
return err
7272
}
7373
return nil
7474
}
7575

7676
// initialise the rules from a parsed config.
77-
func (m *AppPlacementManager) initialise(rules []configs.PlacementRule) error {
78-
log.Log(log.Config).Info("Building new rule list for placement manager")
77+
// If the silence flag is set to true, the function will not log.
78+
func (m *AppPlacementManager) initialise(rules []configs.PlacementRule, silence bool) error {
79+
if !silence {
80+
log.Log(log.Config).Info("Building new rule list for placement manager")
81+
}
7982
// build temp list from new config
80-
tempRules, err := buildRules(rules)
83+
tempRules, err := buildRules(rules, silence)
8184
if err != nil {
8285
return err
8386
}
8487
m.Lock()
8588
defer m.Unlock()
8689

87-
log.Log(log.Config).Info("Activated rule set in placement manager")
90+
if !silence {
91+
log.Log(log.Config).Info("Activated rule set in placement manager")
92+
}
8893
m.rules = tempRules
8994
// all done manager is initialised
9095
for rule := range m.rules {
@@ -203,11 +208,14 @@ func (m *AppPlacementManager) PlaceApplication(app *objects.Application) error {
203208

204209
// buildRules builds a new rule set based on the config.
205210
// If the rule set is correct and can be used the new set is returned.
206-
// If any error is encountered a nil array is returned and the error set
207-
func buildRules(rules []configs.PlacementRule) ([]rule, error) {
211+
// If any error is encountered a nil array is returned and the error set.
212+
// If the silence flag is set to true, the function will not log.
213+
func buildRules(rules []configs.PlacementRule, silence bool) ([]rule, error) {
208214
// empty list should result in a single "provided" rule
209215
if len(rules) == 0 {
210-
log.Log(log.Config).Info("Placement manager configured without rules: using implicit provided rule")
216+
if !silence {
217+
log.Log(log.Config).Info("Placement manager configured without rules: using implicit provided rule")
218+
}
211219
rules = []configs.PlacementRule{{
212220
Name: types.Provided,
213221
Create: false,

pkg/scheduler/placement/placement_test.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,20 @@ import (
3434
// basic test to check if no rules leave the manager unusable
3535
func TestManagerNew(t *testing.T) {
3636
// basic info without rules, manager should not init
37-
man := NewPlacementManager(nil, queueFunc)
37+
man := NewPlacementManager(nil, queueFunc, false)
3838
assert.Equal(t, 2, len(man.rules), "wrong rule count for new placement manager, no config")
3939
assert.Equal(t, types.Provided, man.rules[0].getName(), "wrong name for implicit provided rule")
4040
assert.Equal(t, types.Recovery, man.rules[1].getName(), "wrong name for implicit recovery rule")
4141

4242
// fail update rules with unknown rule
4343
rules := []configs.PlacementRule{{Name: "unknown", Create: true}}
44-
man = NewPlacementManager(rules, queueFunc)
44+
man = NewPlacementManager(rules, queueFunc, false)
4545
assert.Equal(t, 0, len(man.rules), "wrong rule count for new placement manager, no config")
4646
}
4747

4848
func TestManagerInit(t *testing.T) {
4949
// basic info without rules, manager should implicitly init
50-
man := NewPlacementManager(nil, queueFunc)
50+
man := NewPlacementManager(nil, queueFunc, false)
5151
assert.Equal(t, 2, len(man.rules), "wrong rule count for nil rules config")
5252
ruleDAOs := man.GetRulesDAO()
5353
assert.Equal(t, 2, len(ruleDAOs), "wrong DAO count for nil rules config")
@@ -56,7 +56,7 @@ func TestManagerInit(t *testing.T) {
5656

5757
// try to init with empty list should do the same
5858
var rules []configs.PlacementRule
59-
err := man.initialise(rules)
59+
err := man.initialise(rules, false)
6060
assert.NilError(t, err, "Failed to initialize empty placement rules")
6161
assert.Equal(t, 2, len(man.rules), "wrong rule count for empty rules config")
6262
ruleDAOs = man.GetRulesDAO()
@@ -67,7 +67,7 @@ func TestManagerInit(t *testing.T) {
6767
rules = []configs.PlacementRule{
6868
{Name: "unknown"},
6969
}
70-
err = man.initialise(rules)
70+
err = man.initialise(rules, false)
7171
if err == nil {
7272
t.Error("initialise with 'unknown' rule list should have failed")
7373
}
@@ -81,7 +81,7 @@ func TestManagerInit(t *testing.T) {
8181
rules = []configs.PlacementRule{
8282
{Name: "test"},
8383
}
84-
err = man.initialise(rules)
84+
err = man.initialise(rules, false)
8585
assert.NilError(t, err, "failed to init existing manager")
8686
ruleDAOs = man.GetRulesDAO()
8787
assert.Equal(t, 2, len(ruleDAOs), "wrong DAO count for manager with test rule")
@@ -90,7 +90,7 @@ func TestManagerInit(t *testing.T) {
9090

9191
// update the manager: remove rules implicit state is reverted
9292
rules = []configs.PlacementRule{}
93-
err = man.initialise(rules)
93+
err = man.initialise(rules, false)
9494
assert.NilError(t, err, "Failed to re-initialize empty placement rules")
9595
assert.Equal(t, 2, len(man.rules), "wrong rule count for empty rules config")
9696
ruleDAOs = man.GetRulesDAO()
@@ -99,7 +99,7 @@ func TestManagerInit(t *testing.T) {
9999
assert.Equal(t, ruleDAOs[1].Name, types.Recovery, "expected recovery rule as second rule")
100100

101101
// check if we handle a nil list
102-
err = man.initialise(nil)
102+
err = man.initialise(nil, false)
103103
assert.NilError(t, err, "Failed to re-initialize nil placement rules")
104104
assert.Equal(t, 2, len(man.rules), "wrong rule count for nil rules config")
105105
ruleDAOs = man.GetRulesDAO()
@@ -117,7 +117,7 @@ func TestManagerInit(t *testing.T) {
117117
},
118118
},
119119
}
120-
err = man.initialise(rules)
120+
err = man.initialise(rules, false)
121121
assert.NilError(t, err, "Failed to re-initialize nil placement rules")
122122
assert.Equal(t, 2, len(man.rules), "wrong rule count for nil rules config")
123123
ruleDAOs = man.GetRulesDAO()
@@ -128,7 +128,7 @@ func TestManagerInit(t *testing.T) {
128128

129129
func TestManagerUpdate(t *testing.T) {
130130
// basic info without rules, manager should not init
131-
man := NewPlacementManager(nil, queueFunc)
131+
man := NewPlacementManager(nil, queueFunc, false)
132132
// update the manager
133133
rules := []configs.PlacementRule{
134134
{Name: "test"},
@@ -172,7 +172,7 @@ func TestManagerBuildRule(t *testing.T) {
172172
rules := []configs.PlacementRule{
173173
{Name: "test"},
174174
}
175-
ruleObjs, err := buildRules(rules)
175+
ruleObjs, err := buildRules(rules, false)
176176
if err != nil {
177177
t.Errorf("test rule build should not have failed, err: %v", err)
178178
}
@@ -188,7 +188,7 @@ func TestManagerBuildRule(t *testing.T) {
188188
},
189189
},
190190
}
191-
ruleObjs, err = buildRules(rules)
191+
ruleObjs, err = buildRules(rules, false)
192192
if err != nil || len(ruleObjs) != 2 {
193193
t.Errorf("test rule build should not have failed and created 2 top level rule, err: %v, rules: %v", err, ruleObjs)
194194
} else {
@@ -203,7 +203,7 @@ func TestManagerBuildRule(t *testing.T) {
203203
{Name: "user"},
204204
{Name: "test"},
205205
}
206-
ruleObjs, err = buildRules(rules)
206+
ruleObjs, err = buildRules(rules, false)
207207
if err != nil || len(ruleObjs) != 3 {
208208
t.Errorf("rule build should not have failed and created 3 rules, err: %v, rules: %v", err, ruleObjs)
209209
} else if ruleObjs[0].getName() != rules[0].Name || ruleObjs[1].getName() != rules[1].Name || ruleObjs[2].getName() != "recovery" {
@@ -230,7 +230,7 @@ partitions:
230230
err := initQueueStructure([]byte(data))
231231
assert.NilError(t, err, "setting up the queue config failed")
232232
// basic info without rules, manager should init
233-
man := NewPlacementManager(nil, queueFunc)
233+
man := NewPlacementManager(nil, queueFunc, false)
234234
if man == nil {
235235
t.Fatal("placement manager create failed")
236236
}
@@ -362,7 +362,7 @@ partitions:
362362
Value: "namespace",
363363
Create: true},
364364
}
365-
man := NewPlacementManager(rules, queueFunc)
365+
man := NewPlacementManager(rules, queueFunc, false)
366366
if man == nil {
367367
t.Fatal("placement manager create failed")
368368
}
@@ -503,7 +503,7 @@ partitions:
503503
Value: "root.custom",
504504
Create: true},
505505
}
506-
man1 := NewPlacementManager(rules, queueFunc)
506+
man1 := NewPlacementManager(rules, queueFunc, false)
507507
if man1 == nil {
508508
t.Fatal("placement manager create failed")
509509
}
@@ -559,7 +559,7 @@ partitions:
559559
err := initQueueStructure([]byte(data))
560560
assert.NilError(t, err, "setting up the queue config failed")
561561
// basic info without rules, manager should init
562-
man := NewPlacementManager(nil, queueFunc)
562+
man := NewPlacementManager(nil, queueFunc, false)
563563
if man == nil {
564564
t.Fatal("placement manager create failed")
565565
}

0 commit comments

Comments
 (0)