code: func (s *Server) GetNode(ctx context.Context, request *api.GetNodeRequest) (*api.GetNodeResponse, error) {
  	if request.NodeID == "" {
  		return nil, status.Errorf(codes.InvalidArgument, errInvalidArgument.Error())
  	}
  
  	var node *api.Node
  	s.store.View(func(tx store.ReadTx) {
  		node = store.GetNode(tx, request.NodeID)
  	})
  	if node == nil {
  		return nil, status.Errorf(codes.NotFound, "node %s not found", request.NodeID)
  	}
  
  	if s.raft != nil {
  		memberlist := s.raft.GetMemberlist()
  		for _, member := range memberlist {
  			if member.NodeID == node.ID {
  				node.ManagerStatus = &api.ManagerStatus{
  					RaftID:       member.RaftID,
  					Addr:         member.Addr,
  					Leader:       member.Status.Leader,
  					Reachability: member.Status.Reachability,
  				}
  				break
  			}
  		}
  	}
  
  	return &api.GetNodeResponse{
  		Node: node,
  	}, nil
  }
docs: // GetNode returns a Node given a NodeID.
  // - Returns `InvalidArgument` if NodeID is not provided.
  // - Returns `NotFound` if the Node is not found.