Documentation
¶
Index ¶
- Constants
- type Agent
- type AppFilterOptions
- type Application
- type CPUInfo
- type CanaryUpdateBody
- type CombinedEvents
- type Compose
- type ComposeSorter
- type ComposeWrapper
- type Constraint
- type Container
- type ContainersInfo
- type Docker
- type DockerService
- type FrameworkInfo
- type Health
- type HealthCheck
- type KillPolicy
- type Leader
- type MemoryInfo
- type Parameter
- type PortMapping
- type Proxy
- type ProxyAlias
- type Resource
- type RestartPolicy
- type Scale
- type ServiceGroup
- type Stats
- type SysInfo
- type Task
- type TaskConfig
- func (c *TaskConfig) BuildCommand() *mesosproto.CommandInfo
- func (c *TaskConfig) BuildContainer(id, name string) *mesosproto.ContainerInfo
- func (c *TaskConfig) BuildHealthCheck() *mesosproto.HealthCheck
- func (c *TaskConfig) BuildLabels(id, name string) *mesosproto.Labels
- func (c *TaskConfig) BuildResources() []*mesosproto.Resource
- type TaskEvent
- type TaskList
- type TaskSorter
- type UpdatePolicy
- type UpdateWeightBody
- type UpdateWeightsBody
- type Version
- type VersionList
- type Volume
- type YamlExtra
Constants ¶
View Source
const ( OpStatusNoop = "noop" OpStatusCreating = "creating" OpStatusScalingUp = "scaling_up" OpStatusScalingDown = "scaling_down" OpStatusUpdating = "updating" OpStatusCanaryUpdating = "canary_updating" OpStatusCanaryUnfinished = "canary_unfinished" OpStatusWeightUpdating = "weight_updating" OpStatusStarting = "starting" OpStatusStopping = "stopping" OpStatusDeleting = "deleting" OpStatusRollback = "rollbacking" )
View Source
const ( DefaultCanaryUpdateDelay = 5 CanaryUpdateOnFailureStop = "stop" CanaryUpdateOnFailureContinue = "continue" )
View Source
const ( EventTypeTaskHealthy = "task_healthy" EventTypeTaskWeightChange = "task_weight_change" EventTypeTaskUnhealthy = "task_unhealthy" )
View Source
const ( TaskHealthyUnset = "unset" TaskHealthy = "healty" TaskUnHealthy = "unhealthy" )
View Source
const ( // update onfailure action UpdateStop = "stop" UpdateContinue = "continue" UpdateRollback = "rollback" // TODO(nmg) )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Agent ¶ added in v0.2.1
type Agent struct {
ID string `json:"id"`
SysInfo *SysInfo `json:"sysinfo"`
CreatedAt time.Time `json:"created_at"`
LastActive time.Time `json:"last_active"`
}
Agent is a db swan Agent
type AppFilterOptions ¶
type Application ¶
type Application struct {
ID string `json:"id"`
Name string `json:"name"`
RunAs string `json:"runAs"`
Cluster string `json:"cluster"`
OpStatus string `json:"operationStatus"`
Progress int `json:"progress"` // only used within app update
ProgressDetails map[string]bool `json:"progress_details"` // only used within app update, taskid -> updated
TaskCount int `json:"task_count"`
Version []string `json:"currentVersion"`
VersionCount int `json:"version_count"`
Status string `json:"status"`
TasksStatus map[string]int `json:"tasks_status"`
Health *Health `json:"health"`
ErrMsg string `json:"errmsg"`
CreatedAt time.Time `json:"created"`
UpdatedAt time.Time `json:"updated"`
}
type CanaryUpdateBody ¶ added in v0.2.1
type CombinedEvents ¶ added in v0.2.1
type CombinedEvents struct {
Event *TaskEvent
Proxy *upstream.BackendCombined // built from event
DNS *resolver.Record // built from event
}
type Compose ¶
type Compose struct {
ID string `json:"id"`
Name string `json:"name"`
DisplayName string `json:"display_name"`
Desc string `json:"desc"`
OpStatus string `json:"op_status"` // op status
ErrMsg string `json:"errmsg"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
// request settings
YAMLRaw string `json:"yaml_raw"`
YAMLEnv map[string]string `json:"yaml_env"`
YAMLExtra map[string]*YamlExtra `json:"yaml_extra"`
// held temporary struct convert from YAML and will be converted to App Version
ServiceGroup ServiceGroup `json:"service_group"`
}
Compose
func (*Compose) RequireConvert ¶
func (*Compose) ToServiceGroup ¶
func (c *Compose) ToServiceGroup() (ServiceGroup, error)
conver raw yaml to docker service group
type ComposeSorter ¶ added in v0.2.2
type ComposeSorter []*Compose
compose sorter
func (ComposeSorter) Len ¶ added in v0.2.2
func (s ComposeSorter) Len() int
func (ComposeSorter) Less ¶ added in v0.2.2
func (s ComposeSorter) Less(i, j int) bool
func (ComposeSorter) Swap ¶ added in v0.2.2
func (s ComposeSorter) Swap(i, j int)
type ComposeWrapper ¶ added in v0.2.2
type ComposeWrapper struct {
*Compose
Apps []*Application `json:"apps"`
}
wrap compose with related apps
type Constraint ¶
type Container ¶
type ContainersInfo ¶ added in v0.2.1
type Docker ¶
type Docker struct {
ForcePullImage bool `json:"forcePullImage,omitempty"`
Image string `json:"image"`
Network string `json:"network,omitempty"`
Parameters []*Parameter `json:"parameters,omitempty"`
PortMappings []*PortMapping `json:"portMappings,omitempty"`
Privileged bool `json:"privileged,omitempty"`
}
type DockerService ¶
type DockerService struct {
Name string `json:"name"`
Service *ctypes.ServiceConfig `json:"service"`
Network *ctypes.NetworkConfig `json:"network"`
Volume *ctypes.VolumeConfig `json:"volume"`
Extra *YamlExtra `json:"extra"`
}
DockerService (-> App Version)
func (*DockerService) ToVersion ¶
func (s *DockerService) ToVersion(cName, cluster string) (*Version, error)
convert Docker service to App Version
func (*DockerService) Valid ¶
func (s *DockerService) Valid() error
type FrameworkInfo ¶
type FrameworkInfo struct {
ID string
}
type HealthCheck ¶
type HealthCheck struct {
Protocol string `json:"protocol,omitempty"`
PortName string `json:"portName,omitempty"`
Path string `json:"path,omitempty"`
Command string `json:"cmd,omitempty"`
ConsecutiveFailures uint32 `json:"consecutiveFailures,omitempty"`
GracePeriodSeconds float64 `json:"gracePeriodSeconds,omitempty"`
IntervalSeconds float64 `json:"intervalSeconds,omitempty"`
TimeoutSeconds float64 `json:"timeoutSeconds,omitempty"`
DelaySeconds float64 `json:"delaySeconds,omitempty"`
}
func (*HealthCheck) Valid ¶ added in v0.2.3
func (h *HealthCheck) Valid() error
type KillPolicy ¶
type KillPolicy struct {
Duration int64 `json:"duration,omitempty"` // by seconds
}
func (*KillPolicy) Valid ¶ added in v0.2.5
func (p *KillPolicy) Valid() error
type MemoryInfo ¶ added in v0.2.1
type PortMapping ¶
type PortMapping struct {
ContainerPort int32 `json:"containerPort,omitempty"`
HostPort int32 `json:"hostPort,omitempty"`
Name string `json:"name,omitempty"`
Protocol string `json:"protocol,omitempty"`
}
func (*PortMapping) Valid ¶ added in v0.2.3
func (pm *PortMapping) Valid() error
type Proxy ¶
type Proxy struct {
Enabled bool `json:"enabled"`
Alias string `json:"alias"`
Listen string `json:"listen"`
Sticky bool `json:"sticky"`
}
func (*Proxy) MarshalJSON ¶ added in v0.2.3
hijack Marshaler & Unmarshaler to make fit with int type `Listen`
func (*Proxy) UnmarshalJSON ¶ added in v0.2.3
type ProxyAlias ¶ added in v0.2.3
type ProxyAlias struct {
Enabled bool `json:"enabled"`
Alias string `json:"alias"`
Listen int `json:"listen"`
Sticky bool `json:"sticky"`
}
similiar as above, but `Listen` int type
type RestartPolicy ¶ added in v0.2.1
type RestartPolicy struct {
Retries int `json:"retries"`
}
func (*RestartPolicy) Valid ¶ added in v0.2.5
func (p *RestartPolicy) Valid() error
type ServiceGroup ¶
type ServiceGroup map[string]*DockerService
ServiceGroup (-> map[name]App Version)
func (ServiceGroup) DependMap ¶ added in v0.2.2
func (sg ServiceGroup) DependMap() (map[string][]string, error)
func (ServiceGroup) PrioritySort ¶
func (sg ServiceGroup) PrioritySort() ([]string, error)
func (ServiceGroup) Valid ¶
func (sg ServiceGroup) Valid() error
type Stats ¶
type Stats struct {
ClusterID string `json:"clusterID"`
AppCount int `json:"appCount"`
TaskCount int `json:"taskCount"`
Created float64 `json:"created"`
Master string `json:"master"`
Slaves string `json:"slaves"`
Attributes []map[string]interface{} `json:"attributes"`
TotalCpu float64 `json:"totalCpu"`
TotalMem float64 `json:"totalMem"`
TotalDisk float64 `json:"totalDisk"`
CpuTotalOffered float64 `json:"cpuTotalOffered"`
MemTotalOffered float64 `json:"memTotalOffered"`
DiskTotalOffered float64 `json:"diskTotalOffered"`
CpuTotalUsed float64 `json:"cpuTotalUsed"`
MemTotalUsed float64 `json:"memTotalUsed"`
DiskTotalUsed float64 `json:"diskTotalUsed"`
AppStats map[string]int `json:"appStats,omitempty"`
}
type SysInfo ¶ added in v0.2.1
type SysInfo struct {
Hostname string `json:"hostname"`
OS string `json:"os"`
Uptime string `json:"uptime"`
UnixTime int64 `json:"unixtime"`
LoadAvg float64 `json:"loadavg"`
CPU CPUInfo `json:"cpu"`
Memory MemoryInfo `json:"memory"`
Containers ContainersInfo `json:"containers"`
IPs map[string][]string `json:"ips"` // inet name -> ips
Listenings []int64 `json:"listenings"`
}
type Task ¶
type Task struct {
ID string `json:"id"`
Name string `json:"name"`
IP string `json:"ip"`
Ports []uint64 `json:"ports"`
Healthy string `json:"healthy"`
Weight float64 `json:"weight"`
AgentId string `json:"agentId"`
Version string `json:"version"`
Status string `json:"status"`
ErrMsg string `json:"errmsg"`
OpStatus string `json:"opstatus"`
ContainerID string `json:"container_id"`
ContainerName string `json:"container_name"`
Retries int `json:"retries"`
MaxRetries int `json:"maxRetries"`
Histories []*Task `json:"histories"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
type TaskConfig ¶
type TaskConfig struct {
CPUs float64 `json:"cpus"`
GPUs float64 `json:"gpus"`
Mem float64 `json:"mem"`
Disk float64 `json:"disk"`
IP string `json:"ip"`
Ports []uint64 `json:"ports"`
Image string `json:"image"`
Command string `json:"cmd"`
Privileged bool `json:"privileged"`
ForcePullImage bool `json:"forcePullImage"`
Volumes []*Volume `json:"volumes"`
PortMappings []*PortMapping `json:"portmappings"`
Network string `json:"network"`
Parameters []*Parameter `json:"parameters"`
HealthCheck *HealthCheck `json:"healthCheck"`
KillPolicy *KillPolicy `json:"killPolicy"`
RestartPolicy *RestartPolicy `json:"restart"`
Labels map[string]string `json:"labels"`
URIs []string `json:"uris"`
Env map[string]string `json:"env"`
Constraints []*Constraint `json:"constraints"`
Proxy *Proxy `json:"proxy"`
Version string `json:"version"`
}
func NewTaskConfig ¶
func NewTaskConfig(spec *Version, idx int) *TaskConfig
func (*TaskConfig) BuildCommand ¶
func (c *TaskConfig) BuildCommand() *mesosproto.CommandInfo
func (*TaskConfig) BuildContainer ¶
func (c *TaskConfig) BuildContainer(id, name string) *mesosproto.ContainerInfo
func (*TaskConfig) BuildHealthCheck ¶
func (c *TaskConfig) BuildHealthCheck() *mesosproto.HealthCheck
func (*TaskConfig) BuildLabels ¶
func (c *TaskConfig) BuildLabels(id, name string) *mesosproto.Labels
func (*TaskConfig) BuildResources ¶
func (c *TaskConfig) BuildResources() []*mesosproto.Resource
type TaskEvent ¶
type TaskEvent struct {
Type string `json:"type"`
AppID string `json:"app_id"`
AppAlias string `json:"app_alias"` // for proxy
AppListen string `json:"app_listen"` // for proxy
AppSticky bool `json:"app_sticky"` // for proxy
VersionID string `json:"version_id"`
AppVersion string `json:"app_version"`
TaskID string `json:"task_id"`
IP string `json:"task_ip"`
Port uint64 `json:"task_port"`
Weight float64 `json:"weihgt"`
GatewayEnabled bool `json:"gateway"` // for proxy
}
type TaskSorter ¶
type TaskSorter []*Task
func (TaskSorter) Len ¶
func (s TaskSorter) Len() int
func (TaskSorter) Less ¶
func (s TaskSorter) Less(i, j int) bool
func (TaskSorter) Swap ¶
func (s TaskSorter) Swap(i, j int)
type UpdatePolicy ¶
type UpdatePolicy struct {
Delay float64 `json:"delay"`
OnFailure string `json:"onFailure,omitempty"`
}
func (*UpdatePolicy) Valid ¶ added in v0.2.5
func (p *UpdatePolicy) Valid() error
type UpdateWeightBody ¶
type UpdateWeightBody struct {
Weight float64 `json:"weight"`
}
type UpdateWeightsBody ¶
type UpdateWeightsBody struct {
Value float64
}
type Version ¶
type Version struct {
ID string `json:"id"`
Name string `json:"name"`
Command string `json:"cmd"`
CPUs float64 `json:"cpus"`
GPUs float64 `json:"gpus"`
Mem float64 `json:"mem"`
Disk float64 `json:"disk"`
Instances int32 `json:"instances"`
RunAs string `json:"runAs"`
Cluster string `json:"cluster"`
Container *Container `json:"container"`
Labels map[string]string `json:"labels"`
HealthCheck *HealthCheck `json:"healthCheck"`
Env map[string]string `json:"env"`
KillPolicy *KillPolicy `json:"kill"`
RestartPolicy *RestartPolicy `json:"restart"`
UpdatePolicy *UpdatePolicy `json:"update"`
Constraints []*Constraint `json:"constraints"`
URIs []string `json:"uris"`
IPs []string `json:"ips"`
Proxy *Proxy `json:"proxy"`
}
func (*Version) EmptyLabels ¶
EmptyLabels explicitly empties the labels
func (*Version) IsHealthSet ¶ added in v0.2.2
type VersionList ¶
type VersionList []*Version
func (VersionList) Len ¶
func (vl VersionList) Len() int
func (VersionList) Less ¶
func (vl VersionList) Less(i, j int) bool
func (VersionList) Reverse ¶
func (vl VersionList) Reverse()
func (VersionList) Sort ¶
func (vl VersionList) Sort()
func (VersionList) Swap ¶
func (vl VersionList) Swap(i, j int)
type Volume ¶
type YamlExtra ¶
type YamlExtra struct {
WaitDelay uint `json:"wait_delay"` // by second
PullAlways bool `json:"pull_always"`
Resource *Resource `json:"resource"`
Constraints []*Constraint `json:"constraints"`
RunAs string `json:"runas"`
URIs []string `json:"uris"`
IPs []string `json:"ips"`
Labels map[string]string `json:"labels"` // extra labels: uid, username, vcluster ...
Proxy *Proxy `json:"proxy"`
}
YamlExtra
Click to show internal directories.
Click to hide internal directories.