mirror of
https://github.com/kemko/nomad.git
synced 2026-01-01 16:05:42 +03:00
heartbeat: use leader's ACL token when failing heartbeat (#24241)
In #23838 we updated the `Node.Update` RPC handler we use for heartbeats to be more strict about requiring node secrets. But when a node goes down, it's the leader that sends the request to mark the node down via `Node.Update` (to itself), and this request was missing the leader ACL needed to authenticate to itself. Add the leader ACL to the request and update the RPC handler test for disconnected-clients to use ACLs, which would have detected this bug. Also added a note to the `Authenticate` comment about how that authentication path requires the leader ACL. Fixes: https://github.com/hashicorp/nomad/issues/24231 Ref: https://hashicorp.atlassian.net/browse/NET-11384
This commit is contained in:
@@ -193,8 +193,15 @@ func WaitForClient(t testing.TB, rpc rpcFn, nodeID string, region string) {
|
||||
WaitForClientStatus(t, rpc, nodeID, region, structs.NodeStatusReady)
|
||||
}
|
||||
|
||||
// WaitForClientStatus blocks until the client is in the expected status.
|
||||
func WaitForClientStatus(t testing.TB, rpc rpcFn, nodeID string, region string, status string) {
|
||||
// WaitForClientStatus blocks until the client is in the expected status
|
||||
func WaitForClientStatus(t testing.TB, rpc rpcFn, nodeID, region, status string) {
|
||||
t.Helper()
|
||||
WaitForClientStatusWithToken(t, rpc, nodeID, region, status, "")
|
||||
}
|
||||
|
||||
// WaitForClientStatusWithToken blocks until the client is in the expected
|
||||
// status, for use with ACLs enabled
|
||||
func WaitForClientStatusWithToken(t testing.TB, rpc rpcFn, nodeID, region, status, token string) {
|
||||
t.Helper()
|
||||
|
||||
if region == "" {
|
||||
@@ -202,8 +209,11 @@ func WaitForClientStatus(t testing.TB, rpc rpcFn, nodeID string, region string,
|
||||
}
|
||||
WaitForResult(func() (bool, error) {
|
||||
req := structs.NodeSpecificRequest{
|
||||
NodeID: nodeID,
|
||||
QueryOptions: structs.QueryOptions{Region: region},
|
||||
NodeID: nodeID,
|
||||
QueryOptions: structs.QueryOptions{
|
||||
Region: region,
|
||||
AuthToken: token,
|
||||
},
|
||||
}
|
||||
var out structs.SingleNodeResponse
|
||||
|
||||
|
||||
Reference in New Issue
Block a user