Documentation
¶
Index ¶
- Variables
- func ApplyTemplate(config []byte) ([]byte, error)
- func GetIP(specList []string) (string, error)
- func Main()
- type BackendConfig
- type ByEtcdServiceID
- type ByInterfaceThenIP
- type ByServiceID
- type Config
- type ConfigTemplate
- type Consul
- type DefaultLogFormatter
- type DiscoveryService
- type Environment
- type Etcd
- type EtcdServiceNode
- type LogConfig
- type Pollable
- type ServiceConfig
Constants ¶
This section is empty.
Variables ¶
var ( // Version is the version for this build, set at build time via LDFLAGS Version string // GitHash is the short-form commit hash of this build, set at build time GitHash string )
Functions ¶
func ApplyTemplate ¶
ApplyTemplate creates and renders a template from the given config template
Types ¶
type BackendConfig ¶
type BackendConfig struct {
Name string `json:"name"`
Poll int `json:"poll"` // time in seconds
OnChangeExec json.RawMessage `json:"onChange"`
Tag string `json:"tag,omitempty"`
// contains filtered or unexported fields
}
BackendConfig represents a command to execute when another application changes
func (*BackendConfig) CheckForUpstreamChanges ¶
func (b *BackendConfig) CheckForUpstreamChanges() bool
CheckForUpstreamChanges checks the service discovery endpoint for any changes in a dependent backend. Returns true when there has been a change.
func (*BackendConfig) OnChange ¶
func (b *BackendConfig) OnChange() (int, error)
OnChange runs the backend's onChange command, returning the results
func (BackendConfig) PollTime ¶
func (b BackendConfig) PollTime() int
PollTime returns the backend's poll time
type ByEtcdServiceID ¶
type ByEtcdServiceID []EtcdServiceNode
ByEtcdServiceID implements the Sort interface because Go can't sort without it.
func (ByEtcdServiceID) Len ¶
func (se ByEtcdServiceID) Len() int
func (ByEtcdServiceID) Less ¶
func (se ByEtcdServiceID) Less(i, j int) bool
func (ByEtcdServiceID) Swap ¶
func (se ByEtcdServiceID) Swap(i, j int)
type ByInterfaceThenIP ¶
type ByInterfaceThenIP []interfaceIP
ByInterfaceThenIP implements the Sort with the following properties: 1. Sort interfaces alphabetically 2. Sort IPs by bytes (normalized to 16 byte form)
func (ByInterfaceThenIP) Len ¶
func (se ByInterfaceThenIP) Len() int
func (ByInterfaceThenIP) Less ¶
func (se ByInterfaceThenIP) Less(i, j int) bool
func (ByInterfaceThenIP) Swap ¶
func (se ByInterfaceThenIP) Swap(i, j int)
type ByServiceID ¶
type ByServiceID []*consul.ServiceEntry
ByServiceID implements the Sort interface because Go can't sort without it.
func (ByServiceID) Len ¶
func (se ByServiceID) Len() int
func (ByServiceID) Less ¶
func (se ByServiceID) Less(i, j int) bool
func (ByServiceID) Swap ¶
func (se ByServiceID) Swap(i, j int)
type Config ¶
type Config struct {
Consul string `json:"consul,omitempty"`
Etcd json.RawMessage `json:"etcd,omitempty"`
LogConfig *LogConfig `json:"logging,omitempty"`
OnStart json.RawMessage `json:"onStart,omitempty"`
PreStart json.RawMessage `json:"preStart,omitempty"`
PreStop json.RawMessage `json:"preStop,omitempty"`
PostStop json.RawMessage `json:"postStop,omitempty"`
StopTimeout int `json:"stopTimeout"`
Services []*ServiceConfig `json:"services"`
Backends []*BackendConfig `json:"backends"`
Command *exec.Cmd
QuitChannels []chan bool
// contains filtered or unexported fields
}
Config is the top-level Containerbuddy Configuration
type ConfigTemplate ¶
type ConfigTemplate struct {
Template *template.Template
Env Environment
}
ConfigTemplate encapsulates a golang template and its associated environment variables.
func NewConfigTemplate ¶
func NewConfigTemplate(config []byte) (*ConfigTemplate, error)
NewConfigTemplate creates a ConfigTemplate parsed from the configuration and the current environment variables
func (*ConfigTemplate) Execute ¶
func (c *ConfigTemplate) Execute() ([]byte, error)
Execute renders the template
type Consul ¶
Consul is a service discovery backend for Hashicorp Consul
func NewConsulConfig ¶
NewConsulConfig creates a new service discovery backend for Consul
func (Consul) CheckForUpstreamChanges ¶
func (c Consul) CheckForUpstreamChanges(backend *BackendConfig) bool
CheckForUpstreamChanges runs the health check
func (Consul) Deregister ¶
func (c Consul) Deregister(service *ServiceConfig)
Deregister removes the node from Consul.
func (Consul) MarkForMaintenance ¶
func (c Consul) MarkForMaintenance(service *ServiceConfig)
MarkForMaintenance removes the node from Consul.
func (Consul) SendHeartbeat ¶
func (c Consul) SendHeartbeat(service *ServiceConfig)
SendHeartbeat writes a TTL check status=ok to the consul store. If consul has never seen this service, we register the service and its TTL check.
type DefaultLogFormatter ¶
type DefaultLogFormatter struct {
}
DefaultLogFormatter delegates formatting to standard go log package
type DiscoveryService ¶
type DiscoveryService interface {
SendHeartbeat(*ServiceConfig)
CheckForUpstreamChanges(*BackendConfig) bool
MarkForMaintenance(*ServiceConfig)
Deregister(*ServiceConfig)
}
DiscoveryService is an interface which all service discovery backends must implement
type Environment ¶
Environment is a map of environment variables to their values
type Etcd ¶
Etcd is a service discovery backend for CoreOS etcd
func NewEtcdConfig ¶
func NewEtcdConfig(config json.RawMessage) Etcd
NewEtcdConfig creates a new service discovery backend for etcd
func (Etcd) CheckForUpstreamChanges ¶
func (c Etcd) CheckForUpstreamChanges(backend *BackendConfig) bool
CheckForUpstreamChanges checks another etcd node for changes
func (Etcd) Deregister ¶
func (c Etcd) Deregister(service *ServiceConfig)
Deregister removes this instance from the registry
func (Etcd) MarkForMaintenance ¶
func (c Etcd) MarkForMaintenance(service *ServiceConfig)
MarkForMaintenance removes this instance from the registry
func (Etcd) SendHeartbeat ¶
func (c Etcd) SendHeartbeat(service *ServiceConfig)
SendHeartbeat refreshes the TTL of this associated etcd node
type EtcdServiceNode ¶
type EtcdServiceNode struct {
ID string `json:"id"`
Name string `json:"name"`
Address string `json:"address"`
Port int `json:"port"`
Tags []string `json:"tags,omitempty"`
}
EtcdServiceNode is an instance of a service
type LogConfig ¶
type LogConfig struct {
Level string `json:"level"`
Format string `json:"format,omitempty"`
Output string `json:"output,omitempty"`
}
LogConfig configures the log levels
type Pollable ¶
type Pollable interface {
PollTime() int
}
Pollable is base abstraction for backends and services that support polling
type ServiceConfig ¶
type ServiceConfig struct {
ID string
Name string `json:"name"`
Poll int `json:"poll"` // time in seconds
HealthCheckExec json.RawMessage `json:"health"`
Port int `json:"port"`
TTL int `json:"ttl"`
Interfaces json.RawMessage `json:"interfaces"`
Tags []string `json:"tags,omitempty"`
// contains filtered or unexported fields
}
ServiceConfig configures the service, discovery data, and health checks
func (*ServiceConfig) CheckHealth ¶
func (s *ServiceConfig) CheckHealth() (int, error)
CheckHealth runs the service's health command, returning the results
func (*ServiceConfig) Deregister ¶
func (s *ServiceConfig) Deregister()
Deregister will deregister this instance of the service
func (*ServiceConfig) MarkForMaintenance ¶
func (s *ServiceConfig) MarkForMaintenance()
MarkForMaintenance marks this service for maintenance
func (ServiceConfig) PollTime ¶
func (s ServiceConfig) PollTime() int
PollTime returns the service's poll time
func (*ServiceConfig) SendHeartbeat ¶
func (s *ServiceConfig) SendHeartbeat()
SendHeartbeat sends a heartbeat for this service