Version: v2.5.0+incompatible Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Nov 6, 2018 License: Apache-2.0 Imports: 17 Imported by: 0




This section is empty.


View Source
var (

	// DefaultSDConfig is the default Marathon SD configuration.
	DefaultSDConfig = SDConfig{
		RefreshInterval: model.Duration(30 * time.Second),


func AppsToTargetGroups

func AppsToTargetGroups(apps *AppList) map[string]*targetgroup.Group

AppsToTargetGroups takes an array of Marathon apps and converts them into target groups.

func RandomAppsURL

func RandomAppsURL(servers []string) string

RandomAppsURL randomly selects a server from an array and creates an URL pointing to the app list.


type App

type App struct {
	ID              string            `json:"id"`
	Tasks           []Task            `json:"tasks"`
	RunningTasks    int               `json:"tasksRunning"`
	Labels          map[string]string `json:"labels"`
	Container       Container         `json:"container"`
	PortDefinitions []PortDefinition  `json:"portDefinitions"`
	Networks        []Network         `json:"networks"`

App describes a service running on Marathon.

type AppList

type AppList struct {
	Apps []App `json:"apps"`

AppList is a list of Marathon apps.

type AppListClient

type AppListClient func(client *http.Client, url string) (*AppList, error)

AppListClient defines a function that can be used to get an application list from marathon.

type Container

type Container struct {
	Docker       DockerContainer `json:"docker"`
	PortMappings []PortMapping   `json:"portMappings"`

Container describes the runtime an app in running in.

type Discovery

type Discovery struct {
	// contains filtered or unexported fields

Discovery provides service discovery based on a Marathon instance.

func NewDiscovery

func NewDiscovery(conf SDConfig, logger log.Logger) (*Discovery, error)

NewDiscovery returns a new Marathon Discovery.

func (*Discovery) Run

func (d *Discovery) Run(ctx context.Context, ch chan<- []*targetgroup.Group)

Run implements the Discoverer interface.

type DockerContainer

type DockerContainer struct {
	Image        string        `json:"image"`
	PortMappings []PortMapping `json:"portMappings"`

DockerContainer describes a container which uses the docker runtime.

type IPAddress

type IPAddress struct {
	Address string `json:"ipAddress"`
	Proto   string `json:"protocol"`

IPAddress describes the address and protocol the container's network interface is bound to.

type Network

type Network struct {
	Name string `json:"name"`
	Mode string `json:"mode"`

Network describes the name and type of network the container is attached to.

type PortDefinition

type PortDefinition struct {
	Labels map[string]string `json:"labels"`
	Port   uint32            `json:"port"`

PortDefinition describes which load balancer port you should access to access the service.

type PortMapping

type PortMapping struct {
	Labels        map[string]string `json:"labels"`
	ContainerPort uint32            `json:"containerPort"`
	ServicePort   uint32            `json:"servicePort"`

PortMapping describes in which port the process are binding inside the docker container.

type SDConfig

type SDConfig struct {
	Servers          []string                     `yaml:"servers,omitempty"`
	RefreshInterval  model.Duration               `yaml:"refresh_interval,omitempty"`
	AuthToken        config_util.Secret           `yaml:"auth_token,omitempty"`
	AuthTokenFile    string                       `yaml:"auth_token_file,omitempty"`
	HTTPClientConfig config_util.HTTPClientConfig `yaml:",inline"`

SDConfig is the configuration for services running on Marathon.

func (*SDConfig) UnmarshalYAML

func (c *SDConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type Task

type Task struct {
	ID          string      `json:"id"`
	Host        string      `json:"host"`
	Ports       []uint32    `json:"ports"`
	IPAddresses []IPAddress `json:"ipAddresses"`

Task describes one instance of a service running on Marathon.

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL