minio: read who holds a seat from the placement seat's state, not the controller's seats (issue 1955, ADR 0571 clause 4)
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/url"
|
||||
"os"
|
||||
@@ -25,12 +24,13 @@ const grantFile = `{
|
||||
]
|
||||
}`
|
||||
|
||||
// The seats answer is the controller's (mesh-controller.seats read on 2026-10-21): seats[].holders[] of {node, module},
|
||||
// and outside[] of {Claim, Node, Module}.
|
||||
const seatsAnswer = `{"answer": {"seats": [
|
||||
{"seat": "node-files", "scope": "node", "holders": [{"node": "g14", "module": "mesh-files"}, {"node": "shanks", "module": "mesh-files"}]},
|
||||
{"seat": "node-backup", "scope": "node", "holders": [{"node": "g14", "module": "restic"}]}
|
||||
], "outside": [{"Claim": "printer", "Scope": "mesh", "Node": "shanks", "Module": "brother", "Site": "home", "Kind": ""}]}}`
|
||||
// The placement seat's state of who holds which seat (seat-holders): a key per node seat and node, a key per mesh seat.
|
||||
var seatHolderKeys = map[string][]byte{
|
||||
"node-files.g14": []byte(`{"v":1,"seat":"node-files","scope":"node","node":"g14","holders":[{"module":"mesh-files","node":"g14"}]}`),
|
||||
"node-files.shanks": []byte(`{"v":1,"seat":"node-files","scope":"node","node":"shanks","holders":[{"module":"mesh-files","node":"shanks"}]}`),
|
||||
"node-backup.g14": []byte(`{"v":1,"seat":"node-backup","scope":"node","node":"g14","holders":[{"module":"restic","node":"g14"}]}`),
|
||||
"printer": []byte(`{"v":1,"seat":"printer","scope":"mesh","holders":[{"module":"brother","node":"shanks"}]}`),
|
||||
}
|
||||
|
||||
type rig struct {
|
||||
s *server
|
||||
@@ -64,12 +64,12 @@ func newRig(t *testing.T) *rig {
|
||||
t.Fatal(err)
|
||||
}
|
||||
s.now = func() time.Time { return r.now }
|
||||
s.seats = func() (json.RawMessage, error) {
|
||||
s.seats = func() (map[string][]byte, error) {
|
||||
r.seatsCalls++
|
||||
if r.seatsErr != nil {
|
||||
return nil, r.seatsErr
|
||||
}
|
||||
return json.RawMessage(seatsAnswer), nil
|
||||
return seatHolderKeys, nil
|
||||
}
|
||||
r.s = s
|
||||
return r
|
||||
|
||||
Reference in New Issue
Block a user