small pixel drawing of a pufferfish cascade

internal/agent/agent_endpoint.go

package agent

import (
	"fmt"
	"net/http"

	"github.com/hashicorp/serf/coordinate"
	"github.com/hashicorp/serf/serf"
)

type Self struct {
	Config      interface{}
	DebugConfig map[string]interface{}
	Coord       *coordinate.Coordinate
	Member      serf.Member
	Stats       map[string]map[string]string
	Meta        map[string]string
}

func (s *HTTPHandlers) agentSelf(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
	var err error
	if err = s.agent.GetCoordinate(); err != nil {
		return nil, err
	}

	config := struct {
		NodeName  string
		Version   string
		BuildDate string
	}{
		NodeName: s.agent.Config.NodeName,
		// We expect the ent version to be part
		// of the reported version string, and that's
		// now part of the metadata, not the actual version.
		Version: s.agent.Config.VersionWithMetadata(),
	}

	return Self{
		Config: config,
		//	Coord:  cs[s.agent.Config.SegmentName],
		//	Member: s.agent.AgentLocalMember(),
		//	Stats:  s.agent.Stats(),
		//	Meta:   s.agent.State.Metadata(),
	}, nil
}

// return s.agent.Members()
// func (s *HTTPHandlers) Index(resp http.ResponseWriter, req *http.Request) {
func (s *HTTPHandlers) agentMembers(w http.ResponseWriter, r *http.Request) {
	members := s.agent.Members()
	json, err := s.marshalJSON(r, members)
	if err != nil {
		fmt.Println(err)
		w.WriteHeader(http.StatusInternalServerError)
		return
	}
	fmt.Fprintf(w, string(json))
}