mirror of
https://github.com/kemko/nomad.git
synced 2026-01-09 03:45:41 +03:00
Rename client endpoint to node endpoint
This commit is contained in:
@@ -424,7 +424,7 @@ func (c *Client) registerNode() error {
|
||||
WriteRequest: structs.WriteRequest{Region: c.config.Region},
|
||||
}
|
||||
var resp structs.NodeUpdateResponse
|
||||
err := c.RPC("Client.Register", &req, &resp)
|
||||
err := c.RPC("Node.Register", &req, &resp)
|
||||
if err != nil {
|
||||
if time.Since(c.start) > registerErrGrace {
|
||||
c.logger.Printf("[ERR] client: failed to register node: %v", err)
|
||||
@@ -449,7 +449,7 @@ func (c *Client) updateNodeStatus() error {
|
||||
WriteRequest: structs.WriteRequest{Region: c.config.Region},
|
||||
}
|
||||
var resp structs.NodeUpdateResponse
|
||||
err := c.RPC("Client.UpdateStatus", &req, &resp)
|
||||
err := c.RPC("Node.UpdateStatus", &req, &resp)
|
||||
if err != nil {
|
||||
c.logger.Printf("[ERR] client: failed to update status: %v", err)
|
||||
return err
|
||||
@@ -472,7 +472,7 @@ func (c *Client) updateAllocStatus(alloc *structs.Allocation) error {
|
||||
WriteRequest: structs.WriteRequest{Region: c.config.Region},
|
||||
}
|
||||
var resp structs.GenericResponse
|
||||
err := c.RPC("Client.UpdateAlloc", &args, &resp)
|
||||
err := c.RPC("Node.UpdateAlloc", &args, &resp)
|
||||
if err != nil {
|
||||
c.logger.Printf("[ERR] client: failed to update allocation: %v", err)
|
||||
return err
|
||||
@@ -493,7 +493,7 @@ func (c *Client) watchAllocations(allocUpdates chan []*structs.Allocation) {
|
||||
|
||||
for {
|
||||
// Get the allocations, blocking for updates
|
||||
err := c.RPC("Client.GetAllocs", &req, &resp)
|
||||
err := c.RPC("Node.GetAllocs", &req, &resp)
|
||||
if err != nil {
|
||||
c.logger.Printf("[ERR] client: failed to query for node allocations: %v", err)
|
||||
retry := c.retryIntv(getAllocRetryIntv)
|
||||
|
||||
@@ -159,7 +159,7 @@ func TestClient_Register(t *testing.T) {
|
||||
|
||||
// Register should succeed
|
||||
testutil.WaitForResult(func() (bool, error) {
|
||||
err := s1.RPC("Client.GetNode", &req, &out)
|
||||
err := s1.RPC("Node.GetNode", &req, &out)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
@@ -192,7 +192,7 @@ func TestClient_Heartbeat(t *testing.T) {
|
||||
|
||||
// Register should succeed
|
||||
testutil.WaitForResult(func() (bool, error) {
|
||||
err := s1.RPC("Client.GetNode", &req, &out)
|
||||
err := s1.RPC("Node.GetNode", &req, &out)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ func (s *HTTPServer) NodesRequest(resp http.ResponseWriter, req *http.Request) (
|
||||
}
|
||||
|
||||
var out structs.NodeListResponse
|
||||
if err := s.agent.RPC("Client.List", &args, &out); err != nil {
|
||||
if err := s.agent.RPC("Node.List", &args, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ func (s *HTTPServer) nodeForceEvaluate(resp http.ResponseWriter, req *http.Reque
|
||||
s.parseRegion(req, &args.Region)
|
||||
|
||||
var out structs.NodeUpdateResponse
|
||||
if err := s.agent.RPC("Client.Evaluate", &args, &out); err != nil {
|
||||
if err := s.agent.RPC("Node.Evaluate", &args, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setIndex(resp, out.Index)
|
||||
@@ -75,7 +75,7 @@ func (s *HTTPServer) nodeAllocations(resp http.ResponseWriter, req *http.Request
|
||||
}
|
||||
|
||||
var out structs.NodeAllocsResponse
|
||||
if err := s.agent.RPC("Client.GetAllocs", &args, &out); err != nil {
|
||||
if err := s.agent.RPC("Node.GetAllocs", &args, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ func (s *HTTPServer) nodeToggleDrain(resp http.ResponseWriter, req *http.Request
|
||||
s.parseRegion(req, &args.Region)
|
||||
|
||||
var out structs.NodeDrainUpdateResponse
|
||||
if err := s.agent.RPC("Client.UpdateDrain", &args, &out); err != nil {
|
||||
if err := s.agent.RPC("Node.UpdateDrain", &args, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setIndex(resp, out.Index)
|
||||
@@ -126,7 +126,7 @@ func (s *HTTPServer) nodeQuery(resp http.ResponseWriter, req *http.Request,
|
||||
}
|
||||
|
||||
var out structs.SingleNodeResponse
|
||||
if err := s.agent.RPC("Client.GetNode", &args, &out); err != nil {
|
||||
if err := s.agent.RPC("Node.GetNode", &args, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ func TestHTTP_NodesList(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := s.Agent.RPC("Client.Register", &args, &resp); err != nil {
|
||||
if err := s.Agent.RPC("Node.Register", &args, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
}
|
||||
@@ -65,7 +65,7 @@ func TestHTTP_NodeForceEval(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := s.Agent.RPC("Client.Register", &args, &resp); err != nil {
|
||||
if err := s.Agent.RPC("Node.Register", &args, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ func TestHTTP_NodeAllocations(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := s.Agent.RPC("Client.Register", &args, &resp); err != nil {
|
||||
if err := s.Agent.RPC("Node.Register", &args, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ func TestHTTP_NodeDrain(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := s.Agent.RPC("Client.Register", &args, &resp); err != nil {
|
||||
if err := s.Agent.RPC("Node.Register", &args, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -215,7 +215,7 @@ func TestHTTP_NodeQuery(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := s.Agent.RPC("Client.Register", &args, &resp); err != nil {
|
||||
if err := s.Agent.RPC("Node.Register", &args, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ func (s *Server) invalidateHeartbeat(id string) {
|
||||
},
|
||||
}
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := s.endpoints.Client.UpdateStatus(&req, &resp); err != nil {
|
||||
if err := s.endpoints.Node.UpdateStatus(&req, &resp); err != nil {
|
||||
s.logger.Printf("[ERR] nomad.heartbeat: update status failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@ func TestServer_HeartbeatTTL_Failover(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", req, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", req, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,14 +8,14 @@ import (
|
||||
"github.com/hashicorp/nomad/nomad/structs"
|
||||
)
|
||||
|
||||
// ClientEndpoint endpoint is used for client interactions
|
||||
type ClientEndpoint struct {
|
||||
// Node endpoint is used for client interactions
|
||||
type Node struct {
|
||||
srv *Server
|
||||
}
|
||||
|
||||
// Register is used to upsert a client that is available for scheduling
|
||||
func (c *ClientEndpoint) Register(args *structs.NodeRegisterRequest, reply *structs.NodeUpdateResponse) error {
|
||||
if done, err := c.srv.forward("Client.Register", args, args, reply); done {
|
||||
func (n *Node) Register(args *structs.NodeRegisterRequest, reply *structs.NodeUpdateResponse) error {
|
||||
if done, err := n.srv.forward("Node.Register", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "register"}, time.Now())
|
||||
@@ -43,18 +43,18 @@ func (c *ClientEndpoint) Register(args *structs.NodeRegisterRequest, reply *stru
|
||||
}
|
||||
|
||||
// Commit this update via Raft
|
||||
_, index, err := c.srv.raftApply(structs.NodeRegisterRequestType, args)
|
||||
_, index, err := n.srv.raftApply(structs.NodeRegisterRequestType, args)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: Register failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: Register failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.NodeModifyIndex = index
|
||||
|
||||
// Check if we should trigger evaluations
|
||||
if structs.ShouldDrainNode(args.Node.Status) {
|
||||
evalIDs, evalIndex, err := c.createNodeEvals(args.Node.ID, index)
|
||||
evalIDs, evalIndex, err := n.createNodeEvals(args.Node.ID, index)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.EvalIDs = evalIDs
|
||||
@@ -63,9 +63,9 @@ func (c *ClientEndpoint) Register(args *structs.NodeRegisterRequest, reply *stru
|
||||
|
||||
// Check if we need to setup a heartbeat
|
||||
if !args.Node.TerminalStatus() {
|
||||
ttl, err := c.srv.resetHeartbeatTimer(args.Node.ID)
|
||||
ttl, err := n.srv.resetHeartbeatTimer(args.Node.ID)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: heartbeat reset failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: heartbeat reset failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.HeartbeatTTL = ttl
|
||||
@@ -78,8 +78,8 @@ func (c *ClientEndpoint) Register(args *structs.NodeRegisterRequest, reply *stru
|
||||
|
||||
// Deregister is used to remove a client from the client. If a client should
|
||||
// just be made unavailable for scheduling, a status update is prefered.
|
||||
func (c *ClientEndpoint) Deregister(args *structs.NodeDeregisterRequest, reply *structs.NodeUpdateResponse) error {
|
||||
if done, err := c.srv.forward("Client.Deregister", args, args, reply); done {
|
||||
func (n *Node) Deregister(args *structs.NodeDeregisterRequest, reply *structs.NodeUpdateResponse) error {
|
||||
if done, err := n.srv.forward("Node.Deregister", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "deregister"}, time.Now())
|
||||
@@ -90,19 +90,19 @@ func (c *ClientEndpoint) Deregister(args *structs.NodeDeregisterRequest, reply *
|
||||
}
|
||||
|
||||
// Commit this update via Raft
|
||||
_, index, err := c.srv.raftApply(structs.NodeDeregisterRequestType, args)
|
||||
_, index, err := n.srv.raftApply(structs.NodeDeregisterRequestType, args)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: Deregister failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: Deregister failed: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Clear the heartbeat timer if any
|
||||
c.srv.clearHeartbeatTimer(args.NodeID)
|
||||
n.srv.clearHeartbeatTimer(args.NodeID)
|
||||
|
||||
// Create the evaluations for this node
|
||||
evalIDs, evalIndex, err := c.createNodeEvals(args.NodeID, index)
|
||||
evalIDs, evalIndex, err := n.createNodeEvals(args.NodeID, index)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -115,8 +115,8 @@ func (c *ClientEndpoint) Deregister(args *structs.NodeDeregisterRequest, reply *
|
||||
}
|
||||
|
||||
// UpdateStatus is used to update the status of a client node
|
||||
func (c *ClientEndpoint) UpdateStatus(args *structs.NodeUpdateStatusRequest, reply *structs.NodeUpdateResponse) error {
|
||||
if done, err := c.srv.forward("Client.UpdateStatus", args, args, reply); done {
|
||||
func (n *Node) UpdateStatus(args *structs.NodeUpdateStatusRequest, reply *structs.NodeUpdateResponse) error {
|
||||
if done, err := n.srv.forward("Node.UpdateStatus", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "update_status"}, time.Now())
|
||||
@@ -130,7 +130,7 @@ func (c *ClientEndpoint) UpdateStatus(args *structs.NodeUpdateStatusRequest, rep
|
||||
}
|
||||
|
||||
// Look for the node
|
||||
snap, err := c.srv.fsm.State().Snapshot()
|
||||
snap, err := n.srv.fsm.State().Snapshot()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -145,9 +145,9 @@ func (c *ClientEndpoint) UpdateStatus(args *structs.NodeUpdateStatusRequest, rep
|
||||
// Commit this update via Raft
|
||||
var index uint64
|
||||
if node.Status != args.Status {
|
||||
_, index, err = c.srv.raftApply(structs.NodeUpdateStatusRequestType, args)
|
||||
_, index, err = n.srv.raftApply(structs.NodeUpdateStatusRequestType, args)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: status update failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: status update failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.NodeModifyIndex = index
|
||||
@@ -155,9 +155,9 @@ func (c *ClientEndpoint) UpdateStatus(args *structs.NodeUpdateStatusRequest, rep
|
||||
|
||||
// Check if we should trigger evaluations
|
||||
if structs.ShouldDrainNode(args.Status) {
|
||||
evalIDs, evalIndex, err := c.createNodeEvals(args.NodeID, index)
|
||||
evalIDs, evalIndex, err := n.createNodeEvals(args.NodeID, index)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.EvalIDs = evalIDs
|
||||
@@ -166,9 +166,9 @@ func (c *ClientEndpoint) UpdateStatus(args *structs.NodeUpdateStatusRequest, rep
|
||||
|
||||
// Check if we need to setup a heartbeat
|
||||
if args.Status != structs.NodeStatusDown {
|
||||
ttl, err := c.srv.resetHeartbeatTimer(args.NodeID)
|
||||
ttl, err := n.srv.resetHeartbeatTimer(args.NodeID)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: heartbeat reset failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: heartbeat reset failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.HeartbeatTTL = ttl
|
||||
@@ -180,9 +180,9 @@ func (c *ClientEndpoint) UpdateStatus(args *structs.NodeUpdateStatusRequest, rep
|
||||
}
|
||||
|
||||
// UpdateDrain is used to update the drain mode of a client node
|
||||
func (c *ClientEndpoint) UpdateDrain(args *structs.NodeUpdateDrainRequest,
|
||||
func (n *Node) UpdateDrain(args *structs.NodeUpdateDrainRequest,
|
||||
reply *structs.NodeDrainUpdateResponse) error {
|
||||
if done, err := c.srv.forward("Client.UpdateDrain", args, args, reply); done {
|
||||
if done, err := n.srv.forward("Node.UpdateDrain", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "update_drain"}, time.Now())
|
||||
@@ -193,7 +193,7 @@ func (c *ClientEndpoint) UpdateDrain(args *structs.NodeUpdateDrainRequest,
|
||||
}
|
||||
|
||||
// Look for the node
|
||||
snap, err := c.srv.fsm.State().Snapshot()
|
||||
snap, err := n.srv.fsm.State().Snapshot()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -208,9 +208,9 @@ func (c *ClientEndpoint) UpdateDrain(args *structs.NodeUpdateDrainRequest,
|
||||
// Commit this update via Raft
|
||||
var index uint64
|
||||
if node.Drain != args.Drain {
|
||||
_, index, err = c.srv.raftApply(structs.NodeUpdateDrainRequestType, args)
|
||||
_, index, err = n.srv.raftApply(structs.NodeUpdateDrainRequestType, args)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: drain update failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: drain update failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.NodeModifyIndex = index
|
||||
@@ -218,9 +218,9 @@ func (c *ClientEndpoint) UpdateDrain(args *structs.NodeUpdateDrainRequest,
|
||||
|
||||
// Check if we should trigger evaluations
|
||||
if args.Drain {
|
||||
evalIDs, evalIndex, err := c.createNodeEvals(args.NodeID, index)
|
||||
evalIDs, evalIndex, err := n.createNodeEvals(args.NodeID, index)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.EvalIDs = evalIDs
|
||||
@@ -233,8 +233,8 @@ func (c *ClientEndpoint) UpdateDrain(args *structs.NodeUpdateDrainRequest,
|
||||
}
|
||||
|
||||
// Evaluate is used to force a re-evaluation of the node
|
||||
func (c *ClientEndpoint) Evaluate(args *structs.NodeEvaluateRequest, reply *structs.NodeUpdateResponse) error {
|
||||
if done, err := c.srv.forward("Client.Evaluate", args, args, reply); done {
|
||||
func (n *Node) Evaluate(args *structs.NodeEvaluateRequest, reply *structs.NodeUpdateResponse) error {
|
||||
if done, err := n.srv.forward("Node.Evaluate", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "evaluate"}, time.Now())
|
||||
@@ -245,7 +245,7 @@ func (c *ClientEndpoint) Evaluate(args *structs.NodeEvaluateRequest, reply *stru
|
||||
}
|
||||
|
||||
// Look for the node
|
||||
snap, err := c.srv.fsm.State().Snapshot()
|
||||
snap, err := n.srv.fsm.State().Snapshot()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -258,9 +258,9 @@ func (c *ClientEndpoint) Evaluate(args *structs.NodeEvaluateRequest, reply *stru
|
||||
}
|
||||
|
||||
// Create the evaluation
|
||||
evalIDs, evalIndex, err := c.createNodeEvals(args.NodeID, node.ModifyIndex)
|
||||
evalIDs, evalIndex, err := n.createNodeEvals(args.NodeID, node.ModifyIndex)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: eval creation failed: %v", err)
|
||||
return err
|
||||
}
|
||||
reply.EvalIDs = evalIDs
|
||||
@@ -272,9 +272,9 @@ func (c *ClientEndpoint) Evaluate(args *structs.NodeEvaluateRequest, reply *stru
|
||||
}
|
||||
|
||||
// GetNode is used to request information about a specific ndoe
|
||||
func (c *ClientEndpoint) GetNode(args *structs.NodeSpecificRequest,
|
||||
func (n *Node) GetNode(args *structs.NodeSpecificRequest,
|
||||
reply *structs.SingleNodeResponse) error {
|
||||
if done, err := c.srv.forward("Client.GetNode", args, args, reply); done {
|
||||
if done, err := n.srv.forward("Node.GetNode", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "get_node"}, time.Now())
|
||||
@@ -285,7 +285,7 @@ func (c *ClientEndpoint) GetNode(args *structs.NodeSpecificRequest,
|
||||
}
|
||||
|
||||
// Look for the node
|
||||
snap, err := c.srv.fsm.State().Snapshot()
|
||||
snap, err := n.srv.fsm.State().Snapshot()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -308,14 +308,14 @@ func (c *ClientEndpoint) GetNode(args *structs.NodeSpecificRequest,
|
||||
}
|
||||
|
||||
// Set the query response
|
||||
c.srv.setQueryMeta(&reply.QueryMeta)
|
||||
n.srv.setQueryMeta(&reply.QueryMeta)
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetAllocs is used to request allocations for a specific ndoe
|
||||
func (c *ClientEndpoint) GetAllocs(args *structs.NodeSpecificRequest,
|
||||
func (n *Node) GetAllocs(args *structs.NodeSpecificRequest,
|
||||
reply *structs.NodeAllocsResponse) error {
|
||||
if done, err := c.srv.forward("Client.GetAllocs", args, args, reply); done {
|
||||
if done, err := n.srv.forward("Node.GetAllocs", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "get_allocs"}, time.Now())
|
||||
@@ -332,7 +332,7 @@ func (c *ClientEndpoint) GetAllocs(args *structs.NodeSpecificRequest,
|
||||
allocWatch: args.NodeID,
|
||||
run: func() error {
|
||||
// Look for the node
|
||||
snap, err := c.srv.fsm.State().Snapshot()
|
||||
snap, err := n.srv.fsm.State().Snapshot()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -366,12 +366,12 @@ func (c *ClientEndpoint) GetAllocs(args *structs.NodeSpecificRequest,
|
||||
}
|
||||
return nil
|
||||
}}
|
||||
return c.srv.blockingRPC(&opts)
|
||||
return n.srv.blockingRPC(&opts)
|
||||
}
|
||||
|
||||
// UpdateAlloc is used to update the client status of an allocation
|
||||
func (c *ClientEndpoint) UpdateAlloc(args *structs.AllocUpdateRequest, reply *structs.GenericResponse) error {
|
||||
if done, err := c.srv.forward("Client.UpdateAlloc", args, args, reply); done {
|
||||
func (n *Node) UpdateAlloc(args *structs.AllocUpdateRequest, reply *structs.GenericResponse) error {
|
||||
if done, err := n.srv.forward("Node.UpdateAlloc", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "update_alloc"}, time.Now())
|
||||
@@ -382,9 +382,9 @@ func (c *ClientEndpoint) UpdateAlloc(args *structs.AllocUpdateRequest, reply *st
|
||||
}
|
||||
|
||||
// Commit this update via Raft
|
||||
_, index, err := c.srv.raftApply(structs.AllocClientUpdateRequestType, args)
|
||||
_, index, err := n.srv.raftApply(structs.AllocClientUpdateRequestType, args)
|
||||
if err != nil {
|
||||
c.srv.logger.Printf("[ERR] nomad.client: alloc update failed: %v", err)
|
||||
n.srv.logger.Printf("[ERR] nomad.client: alloc update failed: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -394,15 +394,15 @@ func (c *ClientEndpoint) UpdateAlloc(args *structs.AllocUpdateRequest, reply *st
|
||||
}
|
||||
|
||||
// List is used to list the available nodes
|
||||
func (c *ClientEndpoint) List(args *structs.NodeListRequest,
|
||||
func (n *Node) List(args *structs.NodeListRequest,
|
||||
reply *structs.NodeListResponse) error {
|
||||
if done, err := c.srv.forward("Client.List", args, args, reply); done {
|
||||
if done, err := n.srv.forward("Node.List", args, args, reply); done {
|
||||
return err
|
||||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "client", "list"}, time.Now())
|
||||
|
||||
// Capture all the nodes
|
||||
snap, err := c.srv.fsm.State().Snapshot()
|
||||
snap, err := n.srv.fsm.State().Snapshot()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -428,15 +428,15 @@ func (c *ClientEndpoint) List(args *structs.NodeListRequest,
|
||||
reply.Index = index
|
||||
|
||||
// Set the query response
|
||||
c.srv.setQueryMeta(&reply.QueryMeta)
|
||||
n.srv.setQueryMeta(&reply.QueryMeta)
|
||||
return nil
|
||||
}
|
||||
|
||||
// createNodeEvals is used to create evaluations for each alloc on a node.
|
||||
// Each Eval is scoped to a job, so we need to potentially trigger many evals.
|
||||
func (c *ClientEndpoint) createNodeEvals(nodeID string, nodeIndex uint64) ([]string, uint64, error) {
|
||||
func (n *Node) createNodeEvals(nodeID string, nodeIndex uint64) ([]string, uint64, error) {
|
||||
// Snapshot the state
|
||||
snap, err := c.srv.fsm.State().Snapshot()
|
||||
snap, err := n.srv.fsm.State().Snapshot()
|
||||
if err != nil {
|
||||
return nil, 0, fmt.Errorf("failed to snapshot state: %v", err)
|
||||
}
|
||||
@@ -482,13 +482,13 @@ func (c *ClientEndpoint) createNodeEvals(nodeID string, nodeIndex uint64) ([]str
|
||||
// Create the Raft transaction
|
||||
update := &structs.EvalUpdateRequest{
|
||||
Evals: evals,
|
||||
WriteRequest: structs.WriteRequest{Region: c.srv.config.Region},
|
||||
WriteRequest: structs.WriteRequest{Region: n.srv.config.Region},
|
||||
}
|
||||
|
||||
// Commit this evaluation via Raft
|
||||
// XXX: There is a risk of partial failure where the node update succeeds
|
||||
// but that the EvalUpdate does not.
|
||||
_, evalIndex, err := c.srv.raftApply(structs.EvalUpdateRequestType, update)
|
||||
_, evalIndex, err := n.srv.raftApply(structs.EvalUpdateRequestType, update)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
@@ -26,7 +26,7 @@ func TestClientEndpoint_Register(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", req, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", req, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp.Index == 0 {
|
||||
@@ -62,7 +62,7 @@ func TestClientEndpoint_Deregister(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ func TestClientEndpoint_Deregister(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp2 structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Deregister", dereg, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Deregister", dereg, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index == 0 {
|
||||
@@ -105,7 +105,7 @@ func TestClientEndpoint_UpdateStatus(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ func TestClientEndpoint_UpdateStatus(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp2 structs.NodeUpdateResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.UpdateStatus", dereg, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.UpdateStatus", dereg, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index == 0 {
|
||||
@@ -164,7 +164,7 @@ func TestClientEndpoint_UpdateStatus_HeartbeatOnly(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ func TestClientEndpoint_UpdateStatus_HeartbeatOnly(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp2 structs.NodeUpdateResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.UpdateStatus", dereg, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.UpdateStatus", dereg, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index != 0 {
|
||||
@@ -210,7 +210,7 @@ func TestClientEndpoint_UpdateDrain(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ func TestClientEndpoint_UpdateDrain(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp2 structs.NodeDrainUpdateResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.UpdateDrain", dereg, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.UpdateDrain", dereg, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index == 0 {
|
||||
@@ -254,7 +254,7 @@ func TestClientEndpoint_GetNode(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
node.CreateIndex = resp.Index
|
||||
@@ -266,7 +266,7 @@ func TestClientEndpoint_GetNode(t *testing.T) {
|
||||
QueryOptions: structs.QueryOptions{Region: "region1"},
|
||||
}
|
||||
var resp2 structs.SingleNodeResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.GetNode", get, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.GetNode", get, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index != resp.Index {
|
||||
@@ -279,7 +279,7 @@ func TestClientEndpoint_GetNode(t *testing.T) {
|
||||
|
||||
// Lookup non-existing node
|
||||
get.NodeID = "foobarbaz"
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.GetNode", get, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.GetNode", get, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index != resp.Index {
|
||||
@@ -305,7 +305,7 @@ func TestClientEndpoint_GetAllocs(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
node.CreateIndex = resp.Index
|
||||
@@ -326,7 +326,7 @@ func TestClientEndpoint_GetAllocs(t *testing.T) {
|
||||
QueryOptions: structs.QueryOptions{Region: "region1"},
|
||||
}
|
||||
var resp2 structs.NodeAllocsResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.GetAllocs", get, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.GetAllocs", get, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index != 100 {
|
||||
@@ -339,7 +339,7 @@ func TestClientEndpoint_GetAllocs(t *testing.T) {
|
||||
|
||||
// Lookup non-existing node
|
||||
get.NodeID = "foobarbaz"
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.GetAllocs", get, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.GetAllocs", get, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index != 100 {
|
||||
@@ -365,7 +365,7 @@ func TestClientEndpoint_GetAllocs_Blocking(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
node.CreateIndex = resp.Index
|
||||
@@ -394,7 +394,7 @@ func TestClientEndpoint_GetAllocs_Blocking(t *testing.T) {
|
||||
},
|
||||
}
|
||||
var resp2 structs.NodeAllocsResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.GetAllocs", get, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.GetAllocs", get, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -427,7 +427,7 @@ func TestClientEndpoint_UpdateAlloc(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
@@ -451,7 +451,7 @@ func TestClientEndpoint_UpdateAlloc(t *testing.T) {
|
||||
WriteRequest: structs.WriteRequest{Region: "region1"},
|
||||
}
|
||||
var resp2 structs.NodeAllocsResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.UpdateAlloc", update, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.UpdateAlloc", update, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index == 0 {
|
||||
@@ -482,7 +482,7 @@ func TestClientEndpoint_CreateNodeEvals(t *testing.T) {
|
||||
}
|
||||
|
||||
// Create some evaluations
|
||||
ids, index, err := s1.endpoints.Client.createNodeEvals(alloc.NodeID, 1)
|
||||
ids, index, err := s1.endpoints.Node.createNodeEvals(alloc.NodeID, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
@@ -556,7 +556,7 @@ func TestClientEndpoint_Evaluate(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Evaluate", req, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Evaluate", req, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp.Index == 0 {
|
||||
@@ -619,7 +619,7 @@ func TestClientEndpoint_ListNodes(t *testing.T) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.GenericResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.Register", reg, &resp); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.Register", reg, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
node.CreateIndex = resp.Index
|
||||
@@ -630,7 +630,7 @@ func TestClientEndpoint_ListNodes(t *testing.T) {
|
||||
QueryOptions: structs.QueryOptions{Region: "region1"},
|
||||
}
|
||||
var resp2 structs.NodeListResponse
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Client.List", get, &resp2); err != nil {
|
||||
if err := msgpackrpc.CallWithCodec(codec, "Node.List", get, &resp2); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp2.Index != resp.Index {
|
||||
@@ -18,7 +18,7 @@ func testRegisterNode(t *testing.T, s *Server, n *structs.Node) {
|
||||
|
||||
// Fetch the response
|
||||
var resp structs.NodeUpdateResponse
|
||||
if err := s.RPC("Client.Register", req, &resp); err != nil {
|
||||
if err := s.RPC("Node.Register", req, &resp); err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp.Index == 0 {
|
||||
|
||||
@@ -128,7 +128,7 @@ type Server struct {
|
||||
// Holds the RPC endpoints
|
||||
type endpoints struct {
|
||||
Status *Status
|
||||
Client *ClientEndpoint
|
||||
Node *Node
|
||||
Job *Job
|
||||
Eval *Eval
|
||||
Plan *Plan
|
||||
@@ -338,7 +338,7 @@ func (s *Server) Leave() error {
|
||||
func (s *Server) setupRPC(tlsWrap tlsutil.DCWrapper) error {
|
||||
// Create endpoints
|
||||
s.endpoints.Status = &Status{s}
|
||||
s.endpoints.Client = &ClientEndpoint{s}
|
||||
s.endpoints.Node = &Node{s}
|
||||
s.endpoints.Job = &Job{s}
|
||||
s.endpoints.Eval = &Eval{s}
|
||||
s.endpoints.Plan = &Plan{s}
|
||||
@@ -346,7 +346,7 @@ func (s *Server) setupRPC(tlsWrap tlsutil.DCWrapper) error {
|
||||
|
||||
// Register the handlers
|
||||
s.rpcServer.Register(s.endpoints.Status)
|
||||
s.rpcServer.RegisterName("Client", s.endpoints.Client)
|
||||
s.rpcServer.Register(s.endpoints.Node)
|
||||
s.rpcServer.Register(s.endpoints.Job)
|
||||
s.rpcServer.Register(s.endpoints.Eval)
|
||||
s.rpcServer.Register(s.endpoints.Plan)
|
||||
|
||||
@@ -115,21 +115,21 @@ type WriteMeta struct {
|
||||
Index uint64
|
||||
}
|
||||
|
||||
// NodeRegisterRequest is used for Client.Register endpoint
|
||||
// NodeRegisterRequest is used for Node.Register endpoint
|
||||
// to register a node as being a schedulable entity.
|
||||
type NodeRegisterRequest struct {
|
||||
Node *Node
|
||||
WriteRequest
|
||||
}
|
||||
|
||||
// NodeDeregisterRequest is used for Client.Deregister endpoint
|
||||
// NodeDeregisterRequest is used for Node.Deregister endpoint
|
||||
// to deregister a node as being a schedulable entity.
|
||||
type NodeDeregisterRequest struct {
|
||||
NodeID string
|
||||
WriteRequest
|
||||
}
|
||||
|
||||
// NodeUpdateStatusRequest is used for Client.UpdateStatus endpoint
|
||||
// NodeUpdateStatusRequest is used for Node.UpdateStatus endpoint
|
||||
// to update the status of a node.
|
||||
type NodeUpdateStatusRequest struct {
|
||||
NodeID string
|
||||
|
||||
Reference in New Issue
Block a user