mirror of
https://github.com/kemko/nomad.git
synced 2026-01-06 18:35:44 +03:00
rename to cluster search
comment updates
This commit is contained in:
31
command/agent/cluster_search_endpoint.go
Normal file
31
command/agent/cluster_search_endpoint.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/nomad/nomad/structs"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// ClusterSearchRequest accepts a prefix and context and returns a list of matching
|
||||
// IDs for that context.
|
||||
func (s *HTTPServer) ClusterSearchRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
|
||||
if req.Method == "POST" || req.Method == "PUT" {
|
||||
return s.newClusterSearchRequest(resp, req)
|
||||
}
|
||||
return nil, CodedError(405, ErrInvalidMethod)
|
||||
}
|
||||
|
||||
func (s *HTTPServer) newClusterSearchRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
|
||||
args := structs.ClusterSearchRequest{}
|
||||
|
||||
if err := decodeBody(req, &args); err != nil {
|
||||
return nil, CodedError(400, err.Error())
|
||||
}
|
||||
|
||||
var out structs.ClusterSearchResponse
|
||||
if err := s.agent.RPC("ClusterSearch.List", &args, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
setMeta(resp, &out.QueryMeta)
|
||||
return out, nil
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
a "github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestHTTP_ResourcesWithIllegalMethod(t *testing.T) {
|
||||
func TestHTTP_ClusterSearchWithIllegalMethod(t *testing.T) {
|
||||
assert := a.New(t)
|
||||
t.Parallel()
|
||||
httpTest(t, nil, func(s *TestAgent) {
|
||||
@@ -18,7 +18,7 @@ func TestHTTP_ResourcesWithIllegalMethod(t *testing.T) {
|
||||
assert.Nil(err)
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
_, err = s.Server.ResourceListRequest(respW, req)
|
||||
_, err = s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.NotNil(err, "HTTP DELETE should not be accepted for this endpoint")
|
||||
})
|
||||
}
|
||||
@@ -44,16 +44,16 @@ func TestHTTP_Resources_POST(t *testing.T) {
|
||||
httpTest(t, nil, func(s *TestAgent) {
|
||||
createJobForTest(testJob, s, t)
|
||||
|
||||
data := structs.ResourceListRequest{Prefix: testJobPrefix, Context: "jobs"}
|
||||
data := structs.ClusterSearchRequest{Prefix: testJobPrefix, Context: "jobs"}
|
||||
req, err := http.NewRequest("POST", "/v1/resources", encodeReq(data))
|
||||
assert.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
resp, err := s.Server.ResourceListRequest(respW, req)
|
||||
resp, err := s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.Nil(err)
|
||||
|
||||
res := resp.(structs.ResourceListResponse)
|
||||
res := resp.(structs.ClusterSearchResponse)
|
||||
|
||||
assert.Equal(1, len(res.Matches))
|
||||
|
||||
@@ -76,16 +76,16 @@ func TestHTTP_Resources_PUT(t *testing.T) {
|
||||
httpTest(t, nil, func(s *TestAgent) {
|
||||
createJobForTest(testJob, s, t)
|
||||
|
||||
data := structs.ResourceListRequest{Prefix: testJobPrefix, Context: "jobs"}
|
||||
data := structs.ClusterSearchRequest{Prefix: testJobPrefix, Context: "jobs"}
|
||||
req, err := http.NewRequest("PUT", "/v1/resources", encodeReq(data))
|
||||
assert.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
resp, err := s.Server.ResourceListRequest(respW, req)
|
||||
resp, err := s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.Nil(err)
|
||||
|
||||
res := resp.(structs.ResourceListResponse)
|
||||
res := resp.(structs.ClusterSearchResponse)
|
||||
|
||||
assert.Equal(1, len(res.Matches))
|
||||
|
||||
@@ -114,16 +114,16 @@ func TestHTTP_Resources_MultipleJobs(t *testing.T) {
|
||||
createJobForTest(testJobB, s, t)
|
||||
createJobForTest(testJobC, s, t)
|
||||
|
||||
data := structs.ResourceListRequest{Prefix: testJobPrefix, Context: "jobs"}
|
||||
data := structs.ClusterSearchRequest{Prefix: testJobPrefix, Context: "jobs"}
|
||||
req, err := http.NewRequest("POST", "/v1/resources", encodeReq(data))
|
||||
assert.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
resp, err := s.Server.ResourceListRequest(respW, req)
|
||||
resp, err := s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.Nil(err)
|
||||
|
||||
res := resp.(structs.ResourceListResponse)
|
||||
res := resp.(structs.ClusterSearchResponse)
|
||||
|
||||
assert.Equal(1, len(res.Matches))
|
||||
|
||||
@@ -152,16 +152,16 @@ func TestHTTP_ResoucesList_Evaluation(t *testing.T) {
|
||||
assert.Nil(err)
|
||||
|
||||
prefix := eval1.ID[:len(eval1.ID)-2]
|
||||
data := structs.ResourceListRequest{Prefix: prefix, Context: "evals"}
|
||||
data := structs.ClusterSearchRequest{Prefix: prefix, Context: "evals"}
|
||||
req, err := http.NewRequest("POST", "/v1/resources", encodeReq(data))
|
||||
assert.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
resp, err := s.Server.ResourceListRequest(respW, req)
|
||||
resp, err := s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.Nil(err)
|
||||
|
||||
res := resp.(structs.ResourceListResponse)
|
||||
res := resp.(structs.ClusterSearchResponse)
|
||||
|
||||
assert.Equal(1, len(res.Matches))
|
||||
|
||||
@@ -186,16 +186,16 @@ func TestHTTP_ResoucesList_Allocations(t *testing.T) {
|
||||
assert.Nil(err)
|
||||
|
||||
prefix := alloc.ID[:len(alloc.ID)-2]
|
||||
data := structs.ResourceListRequest{Prefix: prefix, Context: "allocs"}
|
||||
data := structs.ClusterSearchRequest{Prefix: prefix, Context: "allocs"}
|
||||
req, err := http.NewRequest("POST", "/v1/resources", encodeReq(data))
|
||||
assert.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
resp, err := s.Server.ResourceListRequest(respW, req)
|
||||
resp, err := s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.Nil(err)
|
||||
|
||||
res := resp.(structs.ResourceListResponse)
|
||||
res := resp.(structs.ClusterSearchResponse)
|
||||
|
||||
assert.Equal(1, len(res.Matches))
|
||||
|
||||
@@ -219,16 +219,16 @@ func TestHTTP_ResoucesList_Nodes(t *testing.T) {
|
||||
assert.Nil(err)
|
||||
|
||||
prefix := node.ID[:len(node.ID)-2]
|
||||
data := structs.ResourceListRequest{Prefix: prefix, Context: "nodes"}
|
||||
data := structs.ClusterSearchRequest{Prefix: prefix, Context: "nodes"}
|
||||
req, err := http.NewRequest("POST", "/v1/resources", encodeReq(data))
|
||||
assert.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
resp, err := s.Server.ResourceListRequest(respW, req)
|
||||
resp, err := s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.Nil(err)
|
||||
|
||||
res := resp.(structs.ResourceListResponse)
|
||||
res := resp.(structs.ClusterSearchResponse)
|
||||
|
||||
assert.Equal(1, len(res.Matches))
|
||||
|
||||
@@ -246,16 +246,16 @@ func TestHTTP_Resources_NoJob(t *testing.T) {
|
||||
|
||||
t.Parallel()
|
||||
httpTest(t, nil, func(s *TestAgent) {
|
||||
data := structs.ResourceListRequest{Prefix: "12345", Context: "jobs"}
|
||||
data := structs.ClusterSearchRequest{Prefix: "12345", Context: "jobs"}
|
||||
req, err := http.NewRequest("POST", "/v1/resources", encodeReq(data))
|
||||
assert.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
resp, err := s.Server.ResourceListRequest(respW, req)
|
||||
resp, err := s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.Nil(err)
|
||||
|
||||
res := resp.(structs.ResourceListResponse)
|
||||
res := resp.(structs.ClusterSearchResponse)
|
||||
|
||||
assert.Equal(1, len(res.Matches))
|
||||
assert.Equal(0, len(res.Matches["jobs"]))
|
||||
@@ -279,16 +279,16 @@ func TestHTTP_Resources_NoContext(t *testing.T) {
|
||||
err := state.UpsertEvals(8000, []*structs.Evaluation{eval1})
|
||||
assert.Nil(err)
|
||||
|
||||
data := structs.ResourceListRequest{Prefix: testJobPrefix}
|
||||
data := structs.ClusterSearchRequest{Prefix: testJobPrefix}
|
||||
req, err := http.NewRequest("POST", "/v1/resources", encodeReq(data))
|
||||
assert.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
|
||||
resp, err := s.Server.ResourceListRequest(respW, req)
|
||||
resp, err := s.Server.ClusterSearchRequest(respW, req)
|
||||
assert.Nil(err)
|
||||
|
||||
res := resp.(structs.ResourceListResponse)
|
||||
res := resp.(structs.ClusterSearchResponse)
|
||||
|
||||
matchedJobs := res.Matches["jobs"]
|
||||
matchedEvals := res.Matches["evals"]
|
||||
@@ -145,7 +145,7 @@ func (s *HTTPServer) registerHandlers(enableDebug bool) {
|
||||
s.mux.HandleFunc("/v1/evaluations", s.wrap(s.EvalsRequest))
|
||||
s.mux.HandleFunc("/v1/evaluation/", s.wrap(s.EvalSpecificRequest))
|
||||
|
||||
s.mux.HandleFunc("/v1/resources/", s.wrap(s.ResourceListRequest))
|
||||
s.mux.HandleFunc("/v1/cluster/search", s.wrap(s.ClusterSearchRequest))
|
||||
|
||||
s.mux.HandleFunc("/v1/deployments", s.wrap(s.DeploymentsRequest))
|
||||
s.mux.HandleFunc("/v1/deployment/", s.wrap(s.DeploymentSpecificRequest))
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/hashicorp/nomad/nomad/structs"
|
||||
)
|
||||
|
||||
// ResourceListRequest accepts a prefix and context and returns a list of matching
|
||||
// IDs for that context.
|
||||
func (s *HTTPServer) ResourceListRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
|
||||
if req.Method == "POST" || req.Method == "PUT" {
|
||||
return s.resourcesRequest(resp, req)
|
||||
}
|
||||
return nil, CodedError(405, ErrInvalidMethod)
|
||||
}
|
||||
|
||||
func (s *HTTPServer) resourcesRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
|
||||
args := structs.ResourceListRequest{}
|
||||
|
||||
if err := decodeBody(req, &args); err != nil {
|
||||
return nil, CodedError(400, err.Error())
|
||||
}
|
||||
|
||||
var out structs.ResourceListResponse
|
||||
if err := s.agent.RPC("Resources.List", &args, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
setMeta(resp, &out.QueryMeta)
|
||||
return out, nil
|
||||
}
|
||||
@@ -200,7 +200,7 @@ func (c *AllocStatusCommand) AutocompleteFlags() complete.Flags {
|
||||
func (c *AllocStatusCommand) AutocompleteArgs() complete.Predictor {
|
||||
client, _ := c.Meta.Client()
|
||||
return complete.PredictFunc(func(a complete.Args) []string {
|
||||
resp, err := client.JobResources().List(a.Last, "allocs")
|
||||
resp, err := client.ClusterSearch().List(a.Last, "allocs")
|
||||
if err != nil {
|
||||
return []string{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user