Documentation
¶
Index ¶
- Constants
- func AppToRaft(app *App) *rafttypes.Application
- func CommandFromRaft(raftCommand *rafttypes.Command) *types.Command
- func CommandToRaft(command *types.Command) *rafttypes.Command
- func ContainerFromRaft(raftContainer *rafttypes.Container) *types.Container
- func ContainerToRaft(container *types.Container) *rafttypes.Container
- func DockerFromRaft(raftDocker *rafttypes.Docker) *types.Docker
- func DockerToRaft(docker *types.Docker) *rafttypes.Docker
- func HealthCheckFromRaft(raftHealthCheck *rafttypes.HealthCheck) *types.HealthCheck
- func HealthCheckToRaft(healthCheck *types.HealthCheck) *rafttypes.HealthCheck
- func KillPolicyFromRaft(raftKillPolicy *rafttypes.KillPolicy) *types.KillPolicy
- func KillPolicyToRaft(killPolicy *types.KillPolicy) *rafttypes.KillPolicy
- func LoadAppData(userEventChan chan *event.UserEvent) (map[string]*App, error)
- func LoadOfferAllocatorMap() (map[string]*mesos.OfferID, error)
- func OfferAllocatorItemFromRaft(item *rafttypes.OfferAllocatorItem) (slotID, offerID string)
- func OfferAllocatorItemToRaft(slotID, offerID string) *rafttypes.OfferAllocatorItem
- func ParameterFromRaft(raftParameter *rafttypes.Parameter) *types.Parameter
- func ParameterToRaft(parameter *types.Parameter) *rafttypes.Parameter
- func PortMappingFromRaft(raftPortMapping *rafttypes.PortMapping) *types.PortMapping
- func PortMappingToRaft(portMapping *types.PortMapping) *rafttypes.PortMapping
- func SetStore(newStore store.Store)
- func SlotToRaft(slot *Slot) *rafttypes.Slot
- func TaskToRaft(task *Task) *rafttypes.Task
- func UpdatePolicyFromRaft(raftUpdatePolicy *rafttypes.UpdatePolicy) *types.UpdatePolicy
- func UpdatePolicyToRaft(updatePolicy *types.UpdatePolicy) *rafttypes.UpdatePolicy
- func VersionFromRaft(raftVersion *rafttypes.Version) *types.Version
- func VersionToRaft(version *types.Version, appID string) *rafttypes.Version
- func VolumeFromFaft(raftVolume *rafttypes.Volume) *types.Volume
- func VolumeToRaft(volume *types.Volume) *rafttypes.Volume
- func WithConvertApp(ctx context.Context, app *App, cb func(), ...) error
- func WithConvertSlot(ctx context.Context, slot *Slot, cb func(), ...) error
- func WithConvertTask(ctx context.Context, task *Task, cb func(), ...) error
- type App
- func (app *App) BeginTx()
- func (app *App) BuildAppEvent(eventType string) *swanevent.Event
- func (app *App) CanBeCleanAfterDeletion() bool
- func (app *App) CancelUpdate() error
- func (app *App) Commit()
- func (app *App) Delete() error
- func (app *App) EmitAppEvent(eventType string)
- func (app *App) EmitEvent(swanEvent *swanevent.Event)
- func (app *App) GetSlot(index int) (*Slot, bool)
- func (app *App) GetSlots() []*Slot
- func (app *App) IsFixed() bool
- func (app *App) IsReplicates() bool
- func (app *App) MarkForDeletionInstances() int
- func (app *App) ProceedingRollingUpdate(instances int) error
- func (app *App) Reevaluate()
- func (app *App) Remove()
- func (app *App) RemoveSlot(index int)
- func (app *App) RollingUpdateInstances() int
- func (app *App) RunningInstances() int
- func (app *App) ScaleDown(removeInstances int) error
- func (app *App) ScaleUp(newInstances int, newIps []string) error
- func (app *App) SetSlot(index int, slot *Slot)
- func (app *App) SetState(state string)
- func (app *App) StateIs(state string) bool
- func (app *App) Touch(force bool)
- func (app *App) Update(version *types.Version, store store.Store) error
- type AppMode
- type OfferAllocator
- func (allocator *OfferAllocator) PopNextPendingOffer() *Slot
- func (allocator *OfferAllocator) PutSlotBackToPendingQueue(slot *Slot)
- func (allocator *OfferAllocator) RemoveOfferSlotMapByOfferId(offerId *mesos.OfferID)
- func (allocator *OfferAllocator) RemoveOfferSlotMapBySlot(slot *Slot)
- func (allocator *OfferAllocator) RemoveSlot(slot *Slot)
- func (allocator *OfferAllocator) RemoveSlotFromPendingOfferQueue(slot *Slot)
- func (allocator *OfferAllocator) RetriveSlotIdWithOfferId(offerId *mesos.OfferID) (string, error)
- func (allocator *OfferAllocator) SetOfferSlotMap(offerID *mesos.OfferID, slot *Slot)
- type OfferWrapper
- type RestartPolicy
- type Slot
- func (slot *Slot) Abnormal() bool
- func (slot *Slot) Archive()
- func (slot *Slot) BeginTx()
- func (slot *Slot) BuildTaskEvent(eventType string) *swanevent.Event
- func (slot *Slot) Commit()
- func (slot *Slot) DispatchNewTask(version *types.Version)
- func (slot *Slot) Dispatched() bool
- func (slot *Slot) EmitTaskEvent(eventType string)
- func (slot *Slot) Healthy() bool
- func (slot *Slot) Kill()
- func (slot *Slot) KillTask()
- func (slot *Slot) MarkForDeletion() bool
- func (slot *Slot) MarkForRollingUpdate() bool
- func (slot *Slot) Normal() bool
- func (slot *Slot) Remove()
- func (slot *Slot) ReserveOfferAndPrepareTaskInfo(ow *OfferWrapper) (*OfferWrapper, *mesos.TaskInfo)
- func (slot *Slot) ResourcesNeeded() []*mesos.Resource
- func (slot *Slot) ResourcesUsed() *SlotResource
- func (slot *Slot) SetHealthy(healthy bool)
- func (slot *Slot) SetMarkForDeletion(deletion bool)
- func (slot *Slot) SetMarkForRollingUpdate(rollingUpdate bool)
- func (slot *Slot) SetState(state string) error
- func (slot *Slot) StateIs(state string) bool
- func (slot *Slot) StopRestartPolicy()
- func (slot *Slot) TestOfferMatch(ow *OfferWrapper) bool
- func (slot *Slot) Touch(force bool)
- func (slot *Slot) UpdateOfferInfo(offer *mesos.Offer) error
- func (slot *Slot) UpdateTask(version *types.Version, isRollingUpdate bool)
- type SlotResource
- type SlotsById
- type Task
- type TaskBuilder
- func (builder *TaskBuilder) AppendContainerDockerEnvironments(envs map[string]string) *TaskBuilder
- func (builder *TaskBuilder) AppendContainerDockerParameters(parameters []*types.Parameter) *TaskBuilder
- func (builder *TaskBuilder) AppendContainerDockerVolumes(volumes []*types.Volume) *TaskBuilder
- func (builder *TaskBuilder) AppendTaskInfoLabels(labelMap map[string]string) *TaskBuilder
- func (builder *TaskBuilder) GetTaskInfo() *mesos.TaskInfo
- func (builder *TaskBuilder) SetAgentId(agentId string) *TaskBuilder
- func (builder *TaskBuilder) SetCommand(needShell bool, cmd string, args []string) *TaskBuilder
- func (builder *TaskBuilder) SetContainerDockerForcePullImage(force bool) *TaskBuilder
- func (builder *TaskBuilder) SetContainerDockerImage(image string) *TaskBuilder
- func (builder *TaskBuilder) SetContainerDockerPrivileged(privileged bool) *TaskBuilder
- func (builder *TaskBuilder) SetContainerType(containerType string) *TaskBuilder
- func (builder *TaskBuilder) SetHealthCheck(healthChecks []*types.HealthCheck) *TaskBuilder
- func (builder *TaskBuilder) SetName(name string) *TaskBuilder
- func (builder *TaskBuilder) SetNetwork(network string, portsAvailable []uint64) *TaskBuilder
- func (builder *TaskBuilder) SetResources(resources []*mesos.Resource) *TaskBuilder
- func (builder *TaskBuilder) SetTaskId(taskId string) *TaskBuilder
- func (builder *TaskBuilder) SetURIs(uriList []string) *TaskBuilder
- type TestAndRestartFunc
Constants ¶
View Source
const ( APP_STATE_NORMAL = "normal" APP_STATE_MARK_FOR_CREATING = "creating" APP_STATE_MARK_FOR_DELETION = "deleting" APP_STATE_MARK_FOR_UPDATING = "updating" APP_STATE_MARK_FOR_CANCEL_UPDATE = "cancel_update" APP_STATE_MARK_FOR_SCALE_UP = "scale_up" APP_STATE_MARK_FOR_SCALE_DOWN = "scale_down" )
View Source
const ( SLOT_STATE_PENDING_OFFER = "slot_task_pending_offer" SLOT_STATE_PENDING_KILL = "slot_task_pending_killed" SLOT_STATE_REAP = "slot_task_reap" SLOT_STATE_TASK_STAGING = "slot_task_staging" SLOT_STATE_TASK_STARTING = "slot_task_starting" SLOT_STATE_TASK_RUNNING = "slot_task_running" SLOT_STATE_TASK_KILLING = "slot_task_killing" SLOT_STATE_TASK_FINISHED = "slot_task_finished" SLOT_STATE_TASK_FAILED = "slot_task_failed" SLOT_STATE_TASK_KILLED = "slot_task_killed" SLOT_STATE_TASK_ERROR = "slot_task_error" SLOT_STATE_TASK_LOST = "slot_task_lost" SLOT_STATE_TASK_DROPPED = "slot_task_dropped" SLOT_STATE_TASK_UNREACHABLE = "slot_task_unreachable" SLOT_STATE_TASK_GONE = "slot_task_gone" SLOT_STATE_TASK_GONE_BY_OPERATOR = "slot_task_gone_by_operator" SLOT_STATE_TASK_UNKNOWN = "slot_task_unknown" )
View Source
const (
SWAN_RESERVED_NETWORK = "swan"
)
Variables ¶
This section is empty.
Functions ¶
func AppToRaft ¶
func AppToRaft(app *App) *rafttypes.Application
func ContainerFromRaft ¶
func HealthCheckFromRaft ¶
func HealthCheckFromRaft(raftHealthCheck *rafttypes.HealthCheck) *types.HealthCheck
func HealthCheckToRaft ¶
func HealthCheckToRaft(healthCheck *types.HealthCheck) *rafttypes.HealthCheck
func KillPolicyFromRaft ¶
func KillPolicyFromRaft(raftKillPolicy *rafttypes.KillPolicy) *types.KillPolicy
func KillPolicyToRaft ¶
func KillPolicyToRaft(killPolicy *types.KillPolicy) *rafttypes.KillPolicy
func LoadAppData ¶
load app data frm persistent data
func OfferAllocatorItemFromRaft ¶
func OfferAllocatorItemFromRaft(item *rafttypes.OfferAllocatorItem) (slotID, offerID string)
func OfferAllocatorItemToRaft ¶
func OfferAllocatorItemToRaft(slotID, offerID string) *rafttypes.OfferAllocatorItem
func ParameterFromRaft ¶
func PortMappingFromRaft ¶
func PortMappingFromRaft(raftPortMapping *rafttypes.PortMapping) *types.PortMapping
func PortMappingToRaft ¶
func PortMappingToRaft(portMapping *types.PortMapping) *rafttypes.PortMapping
func SlotToRaft ¶
func TaskToRaft ¶
func UpdatePolicyFromRaft ¶
func UpdatePolicyFromRaft(raftUpdatePolicy *rafttypes.UpdatePolicy) *types.UpdatePolicy
func UpdatePolicyToRaft ¶
func UpdatePolicyToRaft(updatePolicy *types.UpdatePolicy) *rafttypes.UpdatePolicy
func WithConvertApp ¶
func WithConvertSlot ¶
Types ¶
type App ¶
type App struct { ID string `json:"id"` Name string `json:"name"` Versions []*types.Version `json:"versions"` // app run with CurrentVersion config CurrentVersion *types.Version `json:"current_version"` // use when app updated, ProposedVersion can either be commit or revert ProposedVersion *types.Version `json:"proposed_version"` Mode AppMode `json:"mode"` // fixed or repliactes Created time.Time Updated time.Time State string ClusterID string UserEventChan chan *event.UserEvent // contains filtered or unexported fields }
func (*App) CanBeCleanAfterDeletion ¶
func (*App) CancelUpdate ¶
func (*App) Commit ¶
func (app *App) Commit()
here we persist the app anyway, no matter it touched or not
func (*App) Delete ¶
delete a application and all related objects: versions, tasks, slots, proxies, dns record
func (*App) EmitAppEvent ¶
func (*App) IsReplicates ¶
func (*App) MarkForDeletionInstances ¶
func (*App) ProceedingRollingUpdate ¶
func (*App) Reevaluate ¶
func (app *App) Reevaluate()
func (*App) Remove ¶
func (app *App) Remove()
1, remove app from persisted storage 2, other cleanup process
func (*App) RemoveSlot ¶
func (*App) RollingUpdateInstances ¶
func (*App) RunningInstances ¶
func (*App) Update ¶
update application by follower steps
- check app state: if app state if not APP_STATE_NORMAL or app's propose version is not nil we can not update app, because that means target app maybe is in updateing.
- set the new version to the app's propose version.
- persist app data, and set the app's state to APP_STATE_MARK_FOR_UPDATING
- update slot version to propose version
- after all slot version update success. put the current version to version history and set the propose version as current version, set propose version to nil.
- set app's state to APP_STATE_NORMAL.
type OfferAllocator ¶
type OfferAllocator struct { PendingOfferSlots []*Slot BySlotId map[string]*mesos.OfferID // record allocated offers that map slot // contains filtered or unexported fields }
func OfferAllocatorInstance ¶
func OfferAllocatorInstance() *OfferAllocator
func (*OfferAllocator) PopNextPendingOffer ¶
func (allocator *OfferAllocator) PopNextPendingOffer() *Slot
func (*OfferAllocator) PutSlotBackToPendingQueue ¶
func (allocator *OfferAllocator) PutSlotBackToPendingQueue(slot *Slot)
func (*OfferAllocator) RemoveOfferSlotMapByOfferId ¶
func (allocator *OfferAllocator) RemoveOfferSlotMapByOfferId(offerId *mesos.OfferID)
func (*OfferAllocator) RemoveOfferSlotMapBySlot ¶
func (allocator *OfferAllocator) RemoveOfferSlotMapBySlot(slot *Slot)
func (*OfferAllocator) RemoveSlot ¶
func (allocator *OfferAllocator) RemoveSlot(slot *Slot)
func (*OfferAllocator) RemoveSlotFromPendingOfferQueue ¶
func (allocator *OfferAllocator) RemoveSlotFromPendingOfferQueue(slot *Slot)
func (*OfferAllocator) RetriveSlotIdWithOfferId ¶
func (allocator *OfferAllocator) RetriveSlotIdWithOfferId(offerId *mesos.OfferID) (string, error)
func (*OfferAllocator) SetOfferSlotMap ¶
func (allocator *OfferAllocator) SetOfferSlotMap(offerID *mesos.OfferID, slot *Slot)
type OfferWrapper ¶
type OfferWrapper struct { Offer *mesos.Offer CpusUsed float64 MemUsed float64 DiskUsed float64 PortUsedSize int }
wrapper offer to record offer reserve history
func NewOfferWrapper ¶
func NewOfferWrapper(offer *mesos.Offer) *OfferWrapper
func (*OfferWrapper) CpuRemain ¶
func (ow *OfferWrapper) CpuRemain() float64
func (*OfferWrapper) DiskRemain ¶
func (ow *OfferWrapper) DiskRemain() float64
func (*OfferWrapper) MemRemain ¶
func (ow *OfferWrapper) MemRemain() float64
func (*OfferWrapper) PortsRemain ¶
func (ow *OfferWrapper) PortsRemain() []uint64
type RestartPolicy ¶
type RestartPolicy struct { BackoffSeconds time.Duration BackoffFactor float64 MaxLaunchDelaySeconds time.Duration // contains filtered or unexported fields }
func NewRestartPolicy ¶
func NewRestartPolicy(slot *Slot, BackoffSeconds time.Duration, BackoffFactor float64, MaxLaunchDelaySeconds time.Duration, restartFunc TestAndRestartFunc) *RestartPolicy
func (*RestartPolicy) Stop ¶
func (rs *RestartPolicy) Stop()
type Slot ¶
type Slot struct { Index int ID string App *App Version *types.Version State string CurrentTask *Task TaskHistory []*Task OfferID string AgentID string Ip string AgentHostName string // contains filtered or unexported fields }
func LoadAppSlots ¶
func SlotFromRaft ¶
func (*Slot) Commit ¶
func (slot *Slot) Commit()
here we persist the app anyway, no matter it touched or not
func (*Slot) DispatchNewTask ¶
func (*Slot) Dispatched ¶
func (*Slot) EmitTaskEvent ¶
func (*Slot) Kill ¶
func (slot *Slot) Kill()
kill task and make slot sweeped after successfully kill task
func (*Slot) KillTask ¶
func (slot *Slot) KillTask()
kill task doesn't need cleanup slot from app.Slots
func (*Slot) MarkForDeletion ¶
func (*Slot) MarkForRollingUpdate ¶
func (*Slot) ReserveOfferAndPrepareTaskInfo ¶
func (slot *Slot) ReserveOfferAndPrepareTaskInfo(ow *OfferWrapper) (*OfferWrapper, *mesos.TaskInfo)
func (*Slot) ResourcesNeeded ¶
func (*Slot) ResourcesUsed ¶
func (slot *Slot) ResourcesUsed() *SlotResource
func (*Slot) SetHealthy ¶
func (*Slot) SetMarkForDeletion ¶
func (*Slot) SetMarkForRollingUpdate ¶
func (*Slot) StopRestartPolicy ¶
func (slot *Slot) StopRestartPolicy()
func (*Slot) TestOfferMatch ¶
func (slot *Slot) TestOfferMatch(ow *OfferWrapper) bool
type SlotResource ¶
type Task ¶
type Task struct { ID string TaskInfoID string Version *types.Version Slot *Slot State string Stdout string Stderr string HostPorts []uint64 OfferID string AgentID string Ip string AgentHostName string Reason string Message string Source string Created time.Time // contains filtered or unexported fields }
func TaskFromRaft ¶
func (*Task) PrepareTaskInfo ¶
func (task *Task) PrepareTaskInfo(ow *OfferWrapper) *mesos.TaskInfo
type TaskBuilder ¶
type TaskBuilder struct { HostPorts []uint64 // contains filtered or unexported fields }
func NewTaskBuilder ¶
func NewTaskBuilder(task *Task) *TaskBuilder
func (*TaskBuilder) AppendContainerDockerEnvironments ¶
func (builder *TaskBuilder) AppendContainerDockerEnvironments(envs map[string]string) *TaskBuilder
func (*TaskBuilder) AppendContainerDockerParameters ¶
func (builder *TaskBuilder) AppendContainerDockerParameters(parameters []*types.Parameter) *TaskBuilder
func (*TaskBuilder) AppendContainerDockerVolumes ¶
func (builder *TaskBuilder) AppendContainerDockerVolumes(volumes []*types.Volume) *TaskBuilder
func (*TaskBuilder) AppendTaskInfoLabels ¶
func (builder *TaskBuilder) AppendTaskInfoLabels(labelMap map[string]string) *TaskBuilder
func (*TaskBuilder) GetTaskInfo ¶
func (builder *TaskBuilder) GetTaskInfo() *mesos.TaskInfo
func (*TaskBuilder) SetAgentId ¶
func (builder *TaskBuilder) SetAgentId(agentId string) *TaskBuilder
func (*TaskBuilder) SetCommand ¶
func (builder *TaskBuilder) SetCommand(needShell bool, cmd string, args []string) *TaskBuilder
func (*TaskBuilder) SetContainerDockerForcePullImage ¶
func (builder *TaskBuilder) SetContainerDockerForcePullImage(force bool) *TaskBuilder
func (*TaskBuilder) SetContainerDockerImage ¶
func (builder *TaskBuilder) SetContainerDockerImage(image string) *TaskBuilder
func (*TaskBuilder) SetContainerDockerPrivileged ¶
func (builder *TaskBuilder) SetContainerDockerPrivileged(privileged bool) *TaskBuilder
func (*TaskBuilder) SetContainerType ¶
func (builder *TaskBuilder) SetContainerType(containerType string) *TaskBuilder
func (*TaskBuilder) SetHealthCheck ¶
func (builder *TaskBuilder) SetHealthCheck(healthChecks []*types.HealthCheck) *TaskBuilder
func (*TaskBuilder) SetName ¶
func (builder *TaskBuilder) SetName(name string) *TaskBuilder
func (*TaskBuilder) SetNetwork ¶
func (builder *TaskBuilder) SetNetwork(network string, portsAvailable []uint64) *TaskBuilder
func (*TaskBuilder) SetResources ¶
func (builder *TaskBuilder) SetResources(resources []*mesos.Resource) *TaskBuilder
func (*TaskBuilder) SetTaskId ¶
func (builder *TaskBuilder) SetTaskId(taskId string) *TaskBuilder
func (*TaskBuilder) SetURIs ¶
func (builder *TaskBuilder) SetURIs(uriList []string) *TaskBuilder
type TestAndRestartFunc ¶
Click to show internal directories.
Click to hide internal directories.