types

package
v0.2.5 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2017 License: Apache-2.0 Imports: 21 Imported by: 27

Documentation

Index

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

func (*Agent) Valid added in v0.2.1

func (a *Agent) Valid() error

type AppFilterOptions

type AppFilterOptions struct {
	LabelsSelector labels.Selector
	FieldsSelector fields.Selector
}

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 CPUInfo added in v0.2.1

type CPUInfo struct {
	Processor int64   `json:"processor"`
	Physical  int64   `json:"physical"`
	Used      float64 `json:"used"` // 1 - idle
}

type CanaryUpdateBody added in v0.2.1

type CanaryUpdateBody struct {
	Version   *Version `json:"version"`
	Instances int      `json:"instances"`
	Value     float64  `json:"value"`
	OnFailure string   `json:"onFailure"`
	Delay     float64  `json:"delay"`
}

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 (c *Compose) RequireConvert() bool

func (*Compose) RunAs added in v0.2.2

func (c *Compose) RunAs() string

func (*Compose) ToServiceGroup

func (c *Compose) ToServiceGroup() (ServiceGroup, error)

conver raw yaml to docker service group

func (*Compose) Valid

func (c *Compose) Valid() error

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 Constraint struct {
	Attribute string `json:"attribute"`
	Operator  string `json:"operator"`
	Value     string `json:"value"`
}

func (*Constraint) Match

func (c *Constraint) Match(attrs map[string]string) bool

type Container

type Container struct {
	Type    string    `json:"type"`
	Docker  *Docker   `json:"docker"`
	Volumes []*Volume `json:"volumes"`
}

func (*Container) Valid added in v0.2.5

func (c *Container) Valid() error

type ContainersInfo added in v0.2.1

type ContainersInfo struct {
	Total   int64 `json:"total"`
	Running int   `json:"running"`
	Stopped int   `json:"stopped"`
	Killed  int   `json:"killed"`
	Paused  int   `json:"paused"`
}

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"`
}

func (*Docker) Valid added in v0.2.5

func (d *Docker) Valid() error

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 Health

type Health struct {
	Total     int64 `json:"total"`
	Healthy   int64 `json:"healthy"`
	UnHealthy int64 `json:"unhealthy"`
	UnSet     int64 `json:"unset"`
}

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 Leader

type Leader struct {
	Leader string `json:"leader"`
}

type MemoryInfo added in v0.2.1

type MemoryInfo struct {
	Total int64 `json:"total"`
	Used  int64 `json:"used"`
}

type Parameter

type Parameter struct {
	Key   string `json:"key,omitempty"`
	Value string `json:"value,omitempty"`
}

func (*Parameter) Valid added in v0.2.5

func (p *Parameter) Valid() error

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

func (p *Proxy) MarshalJSON() ([]byte, error)

hijack Marshaler & Unmarshaler to make fit with int type `Listen`

func (*Proxy) UnmarshalJSON added in v0.2.3

func (p *Proxy) UnmarshalJSON(data []byte) error

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 Resource

type Resource struct {
	CPUs  float64  `json:"cpus"`
	GPUs  float64  `json:"gpus"`
	Mem   float64  `json:"mem"`
	Disk  float64  `json:"disk"`
	Ports []uint64 `json:"ports"`
}

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 Scale added in v0.2.1

type Scale struct {
	Instances int
	IPs       []string
}

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"`
}

func (*Task) Index

func (t *Task) Index() string

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
}

func (*TaskEvent) Format

func (e *TaskEvent) Format() []byte

Format format task events to SSE text

type TaskList

type TaskList []*Task

func (TaskList) Len

func (tl TaskList) Len() int

func (TaskList) Less

func (tl TaskList) Less(i, j int) bool

func (TaskList) Reverse

func (tl TaskList) Reverse()

func (TaskList) Sort

func (tl TaskList) Sort()

func (TaskList) Swap

func (tl TaskList) Swap(i, j int)

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) AddLabel

func (v *Version) AddLabel(name, value string) *Version

AddLabel adds a label to the application

func (*Version) EmptyLabels

func (v *Version) EmptyLabels() *Version

EmptyLabels explicitly empties the labels

func (*Version) IsHealthSet added in v0.2.2

func (v *Version) IsHealthSet() bool

func (*Version) Validate

func (v *Version) Validate() error

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 Volume struct {
	ContainerPath string `json:"containerPath,omitempty"`
	HostPath      string `json:"hostPath,omitempty"`
	Mode          string `json:"mode,omitempty"`
}

func (*Volume) Valid added in v0.2.5

func (v *Volume) Valid() error

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

Jump to

Keyboard shortcuts

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