Skip to content

Commit 497e42c

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 9e20dc4 commit 497e42c

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
@@ -1348,10 +1348,13 @@ func convertRules(ruleMgr rules.ManagerSet,
13481348
knownRules = ruleMgr.GetAllRules()
13491349
)
13501350
for name, rule := range ruleList {
1351-
known := true
13521351
if !knownRules[name] {
13531352
upgrade = true
1354-
known = false
1353+
res[name] = &litrpc.RuleValues{
1354+
Known: false,
1355+
}
1356+
1357+
continue
13551358
}
13561359

13571360
defaultVals, err := ruleMgr.InitRuleValues(name, rule.Default)
@@ -1370,7 +1373,7 @@ func convertRules(ruleMgr rules.ManagerSet,
13701373
}
13711374

13721375
res[name] = &litrpc.RuleValues{
1373-
Known: known,
1376+
Known: true,
13741377
Defaults: defaultVals.ToProto(),
13751378
MinValue: minVals.ToProto(),
13761379
MaxValue: maxVals.ToProto(),

0 commit comments

Comments
 (0)