agent: parseSource still subs for _agent

This commit is contained in:
Ryan Uber 2016-07-01 10:04:58 -07:00
parent 5089561b1b
commit 134f66e3d4
2 changed files with 21 additions and 3 deletions

View file

@ -531,7 +531,13 @@ func (s *HTTPServer) parseToken(req *http.Request, token *string) {
// DC in the request, if given, or else the agent's DC. // DC in the request, if given, or else the agent's DC.
func (s *HTTPServer) parseSource(req *http.Request, source *structs.QuerySource) { func (s *HTTPServer) parseSource(req *http.Request, source *structs.QuerySource) {
s.parseDC(req, &source.Datacenter) s.parseDC(req, &source.Datacenter)
source.Node = req.URL.Query().Get("near") if node := req.URL.Query().Get("near"); node != "" {
if node == "_agent" {
source.Node = s.agent.config.NodeName
} else {
source.Node = node
}
}
} }
// parse is a convenience method for endpoints that need // parse is a convenience method for endpoints that need

View file

@ -345,8 +345,8 @@ func TestParseSource(t *testing.T) {
defer srv.Shutdown() defer srv.Shutdown()
defer srv.agent.Shutdown() defer srv.agent.Shutdown()
// Default is agent's DC and no node (since the user didn't care, // Default is agent's DC and no node (since the user didn't care, then
// then just give them the cheapest possible query). // just give them the cheapest possible query).
req, err := http.NewRequest("GET", req, err := http.NewRequest("GET",
"/v1/catalog/nodes", nil) "/v1/catalog/nodes", nil)
if err != nil { if err != nil {
@ -382,6 +382,18 @@ func TestParseSource(t *testing.T) {
if source.Datacenter != "foo" || source.Node != "bob" { if source.Datacenter != "foo" || source.Node != "bob" {
t.Fatalf("bad: %v", source) t.Fatalf("bad: %v", source)
} }
// The magic "_agent" node name will use the agent's local node name.
req, err = http.NewRequest("GET",
"/v1/catalog/nodes?near=_agent", nil)
if err != nil {
t.Fatalf("err: %v", err)
}
source = structs.QuerySource{}
srv.parseSource(req, &source)
if source.Datacenter != "dc1" || source.Node != srv.agent.config.NodeName {
t.Fatalf("bad: %v", source)
}
} }
func TestParseWait(t *testing.T) { func TestParseWait(t *testing.T) {