Skip to content

Commit 42a3dd8

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 08f9061 commit 42a3dd8

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
@@ -1346,10 +1346,13 @@ func convertRules(ruleMgr rules.ManagerSet,
13461346
knownRules = ruleMgr.GetAllRules()
13471347
)
13481348
for name, rule := range ruleList {
1349-
known := true
13501349
if !knownRules[name] {
13511350
upgrade = true
1352-
known = false
1351+
res[name] = &litrpc.RuleValues{
1352+
Known: false,
1353+
}
1354+
1355+
continue
13531356
}
13541357

13551358
defaultVals, err := ruleMgr.InitRuleValues(name, rule.Default)
@@ -1368,7 +1371,7 @@ func convertRules(ruleMgr rules.ManagerSet,
13681371
}
13691372

13701373
res[name] = &litrpc.RuleValues{
1371-
Known: known,
1374+
Known: true,
13721375
Defaults: defaultVals.ToProto(),
13731376
MinValue: minVals.ToProto(),
13741377
MaxValue: maxVals.ToProto(),

0 commit comments

Comments
 (0)