2020-05-04 17:48:02 +00:00
|
|
|
package consul
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"fmt"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Agent is Consul agent.
|
|
|
|
//
|
|
|
|
// See https://www.consul.io/api/agent.html#read-configuration
|
|
|
|
type Agent struct {
|
|
|
|
Config AgentConfig
|
2023-05-04 09:36:21 +00:00
|
|
|
Member AgentMember
|
|
|
|
Meta map[string]string
|
2020-05-04 17:48:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// AgentConfig is Consul agent config.
|
|
|
|
//
|
|
|
|
// See https://www.consul.io/api/agent.html#read-configuration
|
|
|
|
type AgentConfig struct {
|
|
|
|
Datacenter string
|
2023-05-04 09:36:21 +00:00
|
|
|
NodeName string
|
2020-05-04 17:48:02 +00:00
|
|
|
}
|
|
|
|
|
2023-05-04 09:36:21 +00:00
|
|
|
// AgentMember is Consul agent member info.
|
|
|
|
//
|
|
|
|
// See https://www.consul.io/api/agent.html#read-configuration
|
|
|
|
type AgentMember struct {
|
|
|
|
Addr string
|
|
|
|
}
|
|
|
|
|
|
|
|
// ParseAgent parses Consul agent information from bytes.
|
|
|
|
func ParseAgent(data []byte) (*Agent, error) {
|
2020-05-04 17:48:02 +00:00
|
|
|
var a Agent
|
|
|
|
if err := json.Unmarshal(data, &a); err != nil {
|
2020-06-30 19:58:18 +00:00
|
|
|
return nil, fmt.Errorf("cannot unmarshal agent info from %q: %w", data, err)
|
2020-05-04 17:48:02 +00:00
|
|
|
}
|
|
|
|
return &a, nil
|
|
|
|
}
|