Skip to content

Commit 689b39c

Browse files
committed
rules+rpcserver: handle unknown rules
This is to tolerate unknown rules sent from the autopilot for the `autopilot features` command. Otherwise, when trying to register a feature that requires an upgrade, a more user friendly error is returned.
1 parent a9884a8 commit 689b39c

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

rules/manager_set.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ func (m ManagerSet) InitEnforcer(cfg Config, name string,
3131

3232
mgr, ok := m[name]
3333
if !ok {
34-
return nil, ErrUnknownRule
34+
return nil, fmt.Errorf("%w %s, please upgrade", ErrUnknownRule,
35+
name)
3536
}
3637

3738
return mgr.NewEnforcer(cfg, values)
@@ -54,7 +55,8 @@ func (m ManagerSet) UnmarshalRuleValues(name string, proto *litrpc.RuleValue) (
5455

5556
mgr, ok := m[name]
5657
if !ok {
57-
return nil, ErrUnknownRule
58+
return nil, fmt.Errorf("%w %s, please upgrade", ErrUnknownRule,
59+
name)
5860
}
5961

6062
return mgr.NewValueFromProto(proto)
@@ -67,7 +69,8 @@ func (m ManagerSet) InitRuleValues(name string, valueBytes []byte) (Values,
6769

6870
mgr, ok := m[name]
6971
if !ok {
70-
return nil, ErrUnknownRule
72+
return nil, fmt.Errorf("%w %s, please upgrade", ErrUnknownRule,
73+
name)
7174
}
7275

7376
v := mgr.EmptyValue()

session_rpcserver.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,10 +1339,13 @@ func convertRules(ruleMgr rules.ManagerSet,
13391339
knownRules = ruleMgr.GetAllRules()
13401340
)
13411341
for name, rule := range ruleList {
1342-
known := true
13431342
if !knownRules[name] {
13441343
upgrade = true
1345-
known = false
1344+
res[name] = &litrpc.RuleValues{
1345+
Known: false,
1346+
}
1347+
1348+
continue
13461349
}
13471350

13481351
defaultVals, err := ruleMgr.InitRuleValues(name, rule.Default)
@@ -1361,7 +1364,7 @@ func convertRules(ruleMgr rules.ManagerSet,
13611364
}
13621365

13631366
res[name] = &litrpc.RuleValues{
1364-
Known: known,
1367+
Known: true,
13651368
Defaults: defaultVals.ToProto(),
13661369
MinValue: minVals.ToProto(),
13671370
MaxValue: maxVals.ToProto(),

0 commit comments

Comments
 (0)