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(w http.ResponseWriter, r *http.Request) {
	config := struct {
		NodeName     string
		Version      string
		BuildDate    string
		DNSBindAddr  string
		HTTPBindAddr string
		SerfBindAddr string
	}{
		NodeName:     s.agent.Config.NodeName,
		Version:      s.agent.Config.VersionWithMetadata(),
		DNSBindAddr:  s.agent.Config.DNSBindAddr.String(),
		HTTPBindAddr: s.agent.Config.HTTPBindAddr.String(),
		SerfBindAddr: s.agent.Config.SerfBindAddr.String(),
	}

	self := Self{
		Config: config,
	}

	json, err := s.marshalJSON(r, self)
	if err != nil {
		fmt.Println(err)
		w.WriteHeader(http.StatusInternalServerError)
		return
	}
	fmt.Fprintf(w, string(json))
}

// 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))
}