enable json formatting, use queryoptions

This commit is contained in:
Drew Bailey
2019-10-24 12:47:46 -04:00
parent 8095b4868a
commit e7589301ea
8 changed files with 56 additions and 28 deletions

View File

@@ -9,6 +9,7 @@ import (
"net"
"net/http"
"sort"
"strconv"
"strings"
"github.com/docker/docker/pkg/ioutils"
@@ -165,7 +166,7 @@ func (s *HTTPServer) AgentMonitor(resp http.ResponseWriter, req *http.Request) (
}
// Get the provided loglevel.
logLevel := req.URL.Query().Get("loglevel")
logLevel := req.URL.Query().Get("log-level")
if logLevel == "" {
logLevel = "INFO"
}
@@ -175,13 +176,19 @@ func (s *HTTPServer) AgentMonitor(resp http.ResponseWriter, req *http.Request) (
}
// Determine if we are targeting a server or client
nodeID := req.URL.Query().Get("nodeID")
nodeID := req.URL.Query().Get("node-id")
logJSONStr := req.URL.Query().Get("log-json")
logJSON, err := strconv.ParseBool(logJSONStr)
if err != nil {
logJSON = false
}
// Build the request and parse the ACL token
args := cstructs.MonitorRequest{
NodeID: nodeID,
LogLevel: logLevel,
LogJSON: false,
LogJSON: logJSON,
}
s.parse(resp, req, &args.QueryOptions.Region, &args.QueryOptions)
@@ -208,7 +215,7 @@ func (s *HTTPServer) AgentMonitor(resp http.ResponseWriter, req *http.Request) (
decoder := codec.NewDecoder(httpPipe, structs.MsgpackHandle)
encoder := codec.NewEncoder(httpPipe, structs.MsgpackHandle)
ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithCancel(req.Context())
go func() {
<-ctx.Done()
httpPipe.Close()

View File

@@ -256,7 +256,7 @@ func TestHTTP_AgentMonitor(t *testing.T) {
httpTest(t, nil, func(s *TestAgent) {
{
req, err := http.NewRequest("GET", "/v1/agent/monitor?loglevel=unknown", nil)
req, err := http.NewRequest("GET", "/v1/agent/monitor?log-level=unknown", nil)
require.Nil(t, err)
resp := newClosableRecorder()
@@ -269,7 +269,7 @@ func TestHTTP_AgentMonitor(t *testing.T) {
// check for a specific log
{
req, err := http.NewRequest("GET", "/v1/agent/monitor?loglevel=warn", nil)
req, err := http.NewRequest("GET", "/v1/agent/monitor?log-level=warn", nil)
require.Nil(t, err)
resp := newClosableRecorder()
defer resp.Close()
@@ -305,7 +305,7 @@ func TestHTTP_AgentMonitor(t *testing.T) {
// stream logs for a given node
{
req, err := http.NewRequest("GET", "/v1/agent/monitor?loglevel=warn&nodeID="+s.client.NodeID(), nil)
req, err := http.NewRequest("GET", "/v1/agent/monitor?log-level=warn&node-id="+s.client.NodeID(), nil)
require.Nil(t, err)
resp := newClosableRecorder()
defer resp.Close()

View File

@@ -41,6 +41,9 @@ func (d *Monitor) Start(stopCh <-chan struct{}) <-chan []byte {
case log := <-d.logCh:
logCh <- log
case <-stopCh:
d.Lock()
defer d.Unlock()
d.logger.DeregisterSink(d.sink)
close(d.logCh)
return