Documentation
¶
Overview ¶
Marathon API
Index ¶
- Constants
- Variables
- type AppById
- type AppKillTasksOptions
- type AppRestartOptions
- type Application
- type Applications
- type Container
- type CreateOptions
- type Deploy
- type DeploymentID
- type Deploys
- type Docker
- type Group
- type Groups
- type HealthCheck
- type HealthCheckResult
- type LeaderInfo
- type Marathon
- type MarathonClient
- func (c *MarathonClient) AbdicateLeader() (*Message, error)
- func (c *MarathonClient) CreateApplication(app *Application, wait, force bool) (*Application, error)
- func (c *MarathonClient) CreateApplicationFromFile(filename string, opts *CreateOptions) (*Application, error)
- func (c *MarathonClient) CreateGroup(group *Group, wait, force bool) (*Group, error)
- func (c *MarathonClient) CreateGroupFromFile(filename string, opts *CreateOptions) (*Group, error)
- func (c *MarathonClient) DeleteDeployment(id string) (*DeploymentID, error)
- func (c *MarathonClient) DestroyApplication(id string) (*DeploymentID, error)
- func (c *MarathonClient) DestroyGroup(id string) (*DeploymentID, error)
- func (c *MarathonClient) GetApplication(id string) (*Application, error)
- func (c *MarathonClient) GetCurrentLeader() (*LeaderInfo, error)
- func (c *MarathonClient) GetGroup(id string) (*Group, error)
- func (c *MarathonClient) GetMarathonInfo() (*MarathonInfo, error)
- func (c *MarathonClient) GetTasks(id string) ([]*Task, error)
- func (c *MarathonClient) HasApplication(id string) (bool, error)
- func (c *MarathonClient) HasDeployment(id string) (bool, error)
- func (c *MarathonClient) KillAppTask(taskId string, scale bool) (*Task, error)
- func (c *MarathonClient) KillAppTasks(id string, host string, scale bool) ([]*Task, error)
- func (c *MarathonClient) ListApplications() (*Applications, error)
- func (c *MarathonClient) ListDeployments() ([]*Deploy, error)
- func (c *MarathonClient) ListGroups() (*Groups, error)
- func (c *MarathonClient) ListQueue() (*Queue, error)
- func (c *MarathonClient) ListTasks() ([]*Task, error)
- func (c *MarathonClient) ListVersions(id string) (*Versions, error)
- func (c *MarathonClient) Ping() (*MarathonPing, error)
- func (c *MarathonClient) RestartApplication(id string, force bool) (*DeploymentID, error)
- func (c *MarathonClient) ScaleApplication(id string, instances int) (*DeploymentID, error)
- func (c *MarathonClient) UpdateApplication(app *Application, wait bool) (*Application, error)
- func (c *MarathonClient) UpdateGroup(group *Group, wait bool) (*Group, error)
- func (c *MarathonClient) WaitForApplication(id string, timeout time.Duration) error
- func (c *MarathonClient) WaitForApplicationHealthy(id string, timeout time.Duration) error
- func (c *MarathonClient) WaitForDeployment(id string, timeout time.Duration) error
- type MarathonInfo
- type MarathonOptions
- type MarathonPing
- type Message
- type Parameters
- type PortMapping
- type Queue
- type QueuedTask
- type Step
- type Task
- type Tasks
- type UpgradeStrategy
- type Versions
- type Volume
- type Which
Constants ¶
View Source
const ( ActionRestart = "restart" ActionVersions = "versions" PathTasks = "tasks" )
View Source
const ( DEFAULT_EVENTS_URL = "event" /* --- api related constants --- */ API_VERSION = "v2" API_SUBSCRIPTION = API_VERSION + "/eventSubscriptions" API_APPS = API_VERSION + "/apps" API_TASKS = API_VERSION + "/tasks" API_DEPLOYMENTS = API_VERSION + "/deployments" API_GROUPS = API_VERSION + "/groups" API_QUEUE = API_VERSION + "/queue" API_INFO = API_VERSION + "/info" API_LEADER = API_VERSION + "/leader" API_PING = "ping" API_LOGGING = "logging" API_HELP = "help" API_METRICS = "metrics" DefaultTimeout = time.Duration(90) * time.Second )
Variables ¶
View Source
var ( ErrorAppExists = errors.New("The application already exists") ErrorGroupExists = errors.New("The group already exists") ErrorInvalidAppId = errors.New("The application identifier is invalid") ErrorInvalidGroupId = errors.New("The group identifier is invalid") ErrorNoAppExists = errors.New("The application does not exist. Create an application before updating") ErrorGropAppExists = errors.New("The group does not exist. Create a group before updating") ErrorAppParamsMissing = errors.New("One or more ${PARAMS} that were defined in the app configuration could not be resolved.") )
View Source
var ( ErrorTimeout = errors.New("The operation has timed out") ErrorDeploymentNotfound = errors.New("Failed to get deployment in allocated time") )
Functions ¶
This section is empty.
Types ¶
type AppById ¶
type AppById struct {
App Application `json:"app"`
}
type AppKillTasksOptions ¶
type AppRestartOptions ¶
type AppRestartOptions struct {
Force bool `json:"force"`
}
type Application ¶
type Application struct {
ID string `json:"id,omitempty"`
Cmd string `json:"cmd,omitempty"`
Args []string `json:"args,omitempty"`
AcceptedResourceRoles []string `json:"acceptedResourceRoles,omitempty"`
Constraints [][]string `json:"constraints,omitempty"`
Container *Container `json:"container,omitempty"`
CPUs float64 `json:"cpus,omitempty"`
Disk float64 `json:"disk,omitempty"`
Env map[string]string `json:"env,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Executor string `json:"executor,omitempty"`
HealthChecks []*HealthCheck `json:"healthChecks,omitempty"`
Instances int `json:"instances,omitempty"`
Mem float64 `json:"mem,omitempty"`
Tasks []*Task `json:"tasks,omitempty"`
Ports []int `json:"ports,omitempty"`
ServicePorts []int `json:"servicePorts,omitempty"`
RequirePorts bool `json:"requirePorts,omitempty"`
BackoffFactor float64 `json:"backoffFactor,omitempty"`
DeploymentID []map[string]string `json:"deployments,omitempty"`
Dependencies []string `json:"dependencies,omitempty"`
TasksRunning int `json:"tasksRunning,omitempty"`
TasksStaged int `json:"tasksStaged,omitempty"`
TasksHealthy int `json:"tasksHealthy,omitempty"`
TasksUnHealthy int `json:"tasksUnHealthy,omitempty"`
User string `json:"user,omitempty"`
UpgradeStrategy *UpgradeStrategy `json:"upgradeStrategy,omitempty"`
Uris []string `json:"uris,omitempty"`
Version string `json:"version,omitempty"`
}
func NewApplication ¶
func NewApplication(id string) *Application
func (*Application) CPU ¶
func (app *Application) CPU(cpu float64) *Application
The amount of CPU shares to assign per instance {cpu} - the CPU shares
func (*Application) Count ¶
func (app *Application) Count(count int) *Application
The number of instances that the application should run {count} - number of instances
func (*Application) Memory ¶
func (app *Application) Memory(memory float64) *Application
The amount of memory in MB to assign per instance {memory} - memory in MB
func (*Application) RollbackVersion ¶
func (app *Application) RollbackVersion(version string) *Application
Rolls back an application to a specific version {version} - the version to rollback
type Applications ¶
type Applications struct {
Apps []Application `json:"apps"`
}
type CreateOptions ¶
type CreateOptions struct {
// if true will attempt to wait until the new application or group is running
Wait bool
// if true and an application/group already exists an update will be performed.
// if false and an application/group exists an error will be returned
Force bool
// If true an error will be returned on params defined in the configuration file that
// could not resolve to user input and environment variables
ErrorOnMissingParams bool
// Additional environment params - looks at this map for token substitution which takes
// priority over matching environment variables
EnvParams map[string]string
}
type DeploymentID ¶
type Docker ¶
type Docker struct {
ForcePullImage bool `json:"forcePullImage,omitempty"`
Image string `json:"image,omitempty"`
Network string `json:"network,omitempty"`
Parameters []*Parameters `json:"parameters,omitempty"`
PortMappings []*PortMapping `json:"portMappings,omitempty"`
Privileged bool `json:"privileged,omitempty"`
}
type Group ¶
type Group struct {
GroupID string `json:"id"`
Version string `json:"version,omitempty"`
Apps []*Application `json:"apps,omitempty"`
Dependencies []string `json:"dependencies,omitempty"`
Groups []*Group `json:"groups,omitempty"`
}
type Groups ¶
type Groups struct {
GroupID string `json:"id"`
Version string `json:"version"`
Apps []*Application `json:"apps"`
Dependencies []string `json:"dependencies"`
Groups []*Group `json:"groups"`
}
type HealthCheck ¶
type HealthCheck struct {
Protocol string `json:"protocol,omitempty"`
Path string `json:"path,omitempty"`
GracePeriodSeconds int `json:"gracePeriodSeconds,omitempty"`
IntervalSeconds int `json:"intervalSeconds,omitempty"`
PortIndex int `json:"portIndex,omitempty"`
MaxConsecutiveFailures int `json:"maxConsecutiveFailures,omitempty"`
TimeoutSeconds int `json:"timeoutSeconds,omitempty"`
}
type HealthCheckResult ¶
type LeaderInfo ¶
type LeaderInfo struct {
Leader string `json:"leader"`
}
type Marathon ¶
type Marathon interface {
// Creates a new Application from a file and replaces tokenized variables
// with resolved environment values
//
// {filename} - the application file of type [ json | yaml ]
// {opts} - create application options
CreateApplicationFromFile(filename string, opts *CreateOptions) (*Application, error)
// Creates a new Application
// {app} - the application structure containing configuration
// {wait} - if true will attempt to wait until the new application is running
// {force} - if true and a application already exists an update will be performed.
// - if false and a application exists an error will be returned
CreateApplication(app *Application, wait, force bool) (*Application, error)
// Updates an Application
// {app} - the application structure containing configuration
// {wait} - if true will attempt to wait until the application updated is running
UpdateApplication(app *Application, wait bool) (*Application, error)
// List all applications on a Marathon cluster
ListApplications() (*Applications, error)
// Get an Application by Id
// {id} - application identifier
GetApplication(id string) (*Application, error)
// Determines if the application exists
// {id} - the application identifier
HasApplication(id string) (bool, error)
// Removes an Application by Id and all of it's running instances
// {id} - application identifier
DestroyApplication(id string) (*DeploymentID, error)
// Restarts an Application
// {id} - application identifier
// {force} - forces a restart if true
RestartApplication(id string, force bool) (*DeploymentID, error)
// Scale an Application by Id and Instances
// {id} - application identifier
// {instances} - instances to scale to
ScaleApplication(id string, instances int) (*DeploymentID, error)
// List application versions that have been deployed to Marathon
// {id} - the application identifier
ListVersions(id string) (*Versions, error)
// Attempts to wait for an application to be running
// {id} - the application id
// {timeout} - the max time to wait
WaitForApplication(id string, timeout time.Duration) error
// Attempts to wait for an application to be running and healthy (all health checks for all tasks passing)
// {id} - the application id
// {timeout} - the max time to wait
WaitForApplicationHealthy(id string, timeout time.Duration) error
// Determines whether a deployment for the specified Id exists
// {id} - deployment identifier
HasDeployment(id string) (bool, error)
// List the current deployments
ListDeployments() ([]*Deploy, error)
// Deletes a deployment
// {id} - deployment identifier
DeleteDeployment(id string) (*DeploymentID, error)
// Waits for a deployment to finish for max timeout duration
WaitForDeployment(id string, timeout time.Duration) error
// Creates a new group from a file and replaces tokenized variables
// with resolved environment values
//
// {filename} - the group file of type [ json | yaml ]
// {opts} - create application options
CreateGroupFromFile(filename string, opts *CreateOptions) (*Group, error)
// Creates a new Group
// {group} - the group structure containing configuration
// {wait} - if true will attempt to wait until the new group is running
// {force} - if true and a group already exists an update will be performed.
// - if false and a group exists an error will be returned
CreateGroup(group *Group, wait, force bool) (*Group, error)
// List all groups
ListGroups() (*Groups, error)
// Get a Group by Id
// {id} - group identifier
GetGroup(id string) (*Group, error)
// Removes a Group by Id and all of it's related resources (application instances)
// {id} - group identifier
DestroyGroup(id string) (*DeploymentID, error)
// List all running tasks
ListTasks() ([]*Task, error)
// List all tasks for an application
// {id} - the application identifier
GetTasks(id string) ([]*Task, error)
// Kills application tasks for the app identifier
// {id} - the application identifier
// {host} - host to kill tasks on or empty (default)
// {scale} - Scale the app down (i.e. decrement its instances setting by the number of tasks killed), false is default
KillAppTasks(id string, host string, scale bool) ([]*Task, error)
// Kill the task with ID taskId that belongs to an application
// {taskId} - the task id
// {scale} - Scale the app down (ie. decrement it's instances setting by the number of tasks killed). Default: false
KillAppTask(taskId string, scale bool) (*Task, error)
// List Queue - tasks currently pending
ListQueue() (*Queue, error)
// Pings the Marathon host via the /ping endpoint
Ping() (*MarathonPing, error)
// Get info about the Marathon Instance
GetMarathonInfo() (*MarathonInfo, error)
// Get the current Marathon leader
GetCurrentLeader() (*LeaderInfo, error)
// Abdicates the current leader
AbdicateLeader() (*Message, error)
}
func NewMarathonClient ¶
func NewMarathonClientWithOpts ¶
func NewMarathonClientWithOpts(host, username, password string, opts *MarathonOptions) Marathon
type MarathonClient ¶
type MarathonClient struct {
// contains filtered or unexported fields
}
func (*MarathonClient) AbdicateLeader ¶
func (c *MarathonClient) AbdicateLeader() (*Message, error)
func (*MarathonClient) CreateApplication ¶
func (c *MarathonClient) CreateApplication(app *Application, wait, force bool) (*Application, error)
func (*MarathonClient) CreateApplicationFromFile ¶
func (c *MarathonClient) CreateApplicationFromFile(filename string, opts *CreateOptions) (*Application, error)
func (*MarathonClient) CreateGroup ¶
func (c *MarathonClient) CreateGroup(group *Group, wait, force bool) (*Group, error)
func (*MarathonClient) CreateGroupFromFile ¶
func (c *MarathonClient) CreateGroupFromFile(filename string, opts *CreateOptions) (*Group, error)
func (*MarathonClient) DeleteDeployment ¶
func (c *MarathonClient) DeleteDeployment(id string) (*DeploymentID, error)
func (*MarathonClient) DestroyApplication ¶
func (c *MarathonClient) DestroyApplication(id string) (*DeploymentID, error)
func (*MarathonClient) DestroyGroup ¶
func (c *MarathonClient) DestroyGroup(id string) (*DeploymentID, error)
func (*MarathonClient) GetApplication ¶
func (c *MarathonClient) GetApplication(id string) (*Application, error)
func (*MarathonClient) GetCurrentLeader ¶
func (c *MarathonClient) GetCurrentLeader() (*LeaderInfo, error)
func (*MarathonClient) GetMarathonInfo ¶
func (c *MarathonClient) GetMarathonInfo() (*MarathonInfo, error)
func (*MarathonClient) HasApplication ¶
func (c *MarathonClient) HasApplication(id string) (bool, error)
func (*MarathonClient) HasDeployment ¶
func (c *MarathonClient) HasDeployment(id string) (bool, error)
func (*MarathonClient) KillAppTask ¶
func (c *MarathonClient) KillAppTask(taskId string, scale bool) (*Task, error)
func (*MarathonClient) KillAppTasks ¶
func (*MarathonClient) ListApplications ¶
func (c *MarathonClient) ListApplications() (*Applications, error)
func (*MarathonClient) ListDeployments ¶
func (c *MarathonClient) ListDeployments() ([]*Deploy, error)
func (*MarathonClient) ListGroups ¶
func (c *MarathonClient) ListGroups() (*Groups, error)
func (*MarathonClient) ListQueue ¶
func (c *MarathonClient) ListQueue() (*Queue, error)
func (*MarathonClient) ListTasks ¶
func (c *MarathonClient) ListTasks() ([]*Task, error)
func (*MarathonClient) ListVersions ¶
func (c *MarathonClient) ListVersions(id string) (*Versions, error)
func (*MarathonClient) Ping ¶
func (c *MarathonClient) Ping() (*MarathonPing, error)
func (*MarathonClient) RestartApplication ¶
func (c *MarathonClient) RestartApplication(id string, force bool) (*DeploymentID, error)
func (*MarathonClient) ScaleApplication ¶
func (c *MarathonClient) ScaleApplication(id string, instances int) (*DeploymentID, error)
func (*MarathonClient) UpdateApplication ¶
func (c *MarathonClient) UpdateApplication(app *Application, wait bool) (*Application, error)
func (*MarathonClient) UpdateGroup ¶
func (c *MarathonClient) UpdateGroup(group *Group, wait bool) (*Group, error)
func (*MarathonClient) WaitForApplication ¶
func (c *MarathonClient) WaitForApplication(id string, timeout time.Duration) error
func (*MarathonClient) WaitForApplicationHealthy ¶
func (c *MarathonClient) WaitForApplicationHealthy(id string, timeout time.Duration) error
func (*MarathonClient) WaitForDeployment ¶
func (c *MarathonClient) WaitForDeployment(id string, timeout time.Duration) error
type MarathonInfo ¶
type MarathonInfo struct {
EventSubscriber struct {
HttpEndpoints []string `json:"http_endpoints"`
Type string `json:"type"`
} `json:"event_subscriber"`
FrameworkId string `json:"frameworkId"`
HttpConfig struct {
AssetsPath interface{} `json:"assets_path"`
HttpPort float64 `json:"http_port"`
HttpsPort float64 `json:"https_port"`
} `json:"http_config"`
Leader string `json:"leader"`
MarathonConfig struct {
Checkpoint bool `json:"checkpoint"`
Executor string `json:"executor"`
FailoverTimeout float64 `json:"failover_timeout"`
Ha bool `json:"ha"`
Hostname string `json:"hostname"`
LocalPortMax float64 `json:"local_port_max"`
LocalPortMin float64 `json:"local_port_min"`
Master string `json:"master"`
MesosRole string `json:"mesos_role"`
MesosUser string `json:"mesos_user"`
ReconciliationInitialDelay float64 `json:"reconciliation_initial_delay"`
ReconciliationInterval float64 `json:"reconciliation_interval"`
TaskLaunchTimeout float64 `json:"task_launch_timeout"`
} `json:"marathon_config"`
Name string `json:"name"`
Version string `json:"version"`
ZookeeperConfig struct {
Zk string `json:"zk"`
ZkFutureTimeout struct {
Duration float64 `json:"duration"`
} `json:"zk_future_timeout"`
ZkHosts string `json:"zk_hosts"`
ZkPath string `json:"zk_path"`
ZkState string `json:"zk_state"`
ZkTimeout float64 `json:"zk_timeout"`
} `json:"zookeeper_config"`
}
type MarathonOptions ¶
type MarathonPing ¶
type Parameters ¶
type PortMapping ¶
type Queue ¶
type Queue struct {
Queue []QueuedTask `json:"queue"`
}
type QueuedTask ¶
type QueuedTask struct {
App *Application `json:"app"`
Delay map[string]bool `json:"delay"`
}
type Task ¶
type Task struct {
AppID string `json:"appId"`
Host string `json:"host"`
ID string `json:"id"`
HealthCheckResult []*HealthCheckResult `json:"healthCheckResults"`
Ports []int `json:"ports"`
ServicePorts []int `json:"servicePorts"`
StagedAt string `json:"stagedAt"`
StartedAt string `json:"startedAt"`
Version string `json:"version"`
}
type UpgradeStrategy ¶
Click to show internal directories.
Click to hide internal directories.