Help us shape the future of Go! Take the 2026 Go Developer Survey

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