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.