Documentation ¶
Index ¶
- Constants
- Variables
- func GenVolumeSourceForSwarm(serviceUUID string) string
- func GenVolumeSourceName(serviceUUID string, index int64) string
- func ParseVolumeSource(volName string) (string, int64, error)
- func VolumeSourceHasTaskSlot(volName string) bool
- type CommonOptions
- type ContainerSvc
- type CreateServiceOptions
- type Info
- type MemContainerSvc
- func (m *MemContainerSvc) AddServiceTask(ctx context.Context, cluster string, service string, taskID string, ...) error
- func (m *MemContainerSvc) CreateService(ctx context.Context, opts *CreateServiceOptions) error
- func (m *MemContainerSvc) DeleteService(ctx context.Context, cluster string, service string) error
- func (m *MemContainerSvc) DeleteTask(ctx context.Context, cluster string, service string, taskType string) error
- func (m *MemContainerSvc) GetServiceStatus(ctx context.Context, cluster string, service string) (*common.ServiceStatus, error)
- func (m *MemContainerSvc) GetServiceTask(ctx context.Context, cluster string, service string, ...) (taskID string, err error)
- func (m *MemContainerSvc) GetTaskStatus(ctx context.Context, cluster string, taskID string) (*common.TaskStatus, error)
- func (m *MemContainerSvc) IsServiceExist(ctx context.Context, cluster string, service string) (bool, error)
- func (m *MemContainerSvc) ListActiveServiceTasks(ctx context.Context, cluster string, service string) (taskIDs map[string]bool, err error)
- func (m *MemContainerSvc) RestartService(ctx context.Context, cluster string, service string, desiredCount int64) error
- func (m *MemContainerSvc) RunTask(ctx context.Context, opts *RunTaskOptions) (taskID string, err error)
- func (m *MemContainerSvc) StopService(ctx context.Context, cluster string, service string) error
- type MockContainerSvcInfo
- type RunTaskOptions
Constants ¶
View Source
const ( // The busybox image for unit test. TestBusyBoxContainerImage = common.OrgName + "/" + common.SystemName + "-busybox" )
Variables ¶
View Source
var ( ErrContainerSvcTooManyTasks = errors.New("The service has more than one tasks on the same ContainerInstance") ErrContainerSvcNoTask = errors.New("The service has no task on the ContainerInstance") ErrInvalidContainerInstanceID = errors.New("InvalidContainerInstanceID") ErrInvalidCluster = errors.New("InvalidCluster") )
Functions ¶
func GenVolumeSourceForSwarm ¶
GenVolumeSourceForSwarm creates the volume mount source for swarm service. https://docs.docker.com/docker-for-aws/persistent-data-volumes/#use-a-unique-volume-per-task-using-ebs. so the volume driver could directly know which volume to mount.
func GenVolumeSourceName ¶
GenVolumeSourceName creates the volume source name.
func ParseVolumeSource ¶
ParseVolumeSource parses the volume name. return serviceUUID, task slot, error.
func VolumeSourceHasTaskSlot ¶
VolumeSourceHasTaskSlot checks whether the volume name includes the task slot. Docker swarm could pass the volume name with task slot, such as serviceUUID-1.
Types ¶
type CommonOptions ¶
type ContainerSvc ¶
type ContainerSvc interface { // IsServiceExist checks if service exists. If not exist, return false & nil. If exists, return true & nil. // If meets any error, error will be returned. IsServiceExist(ctx context.Context, cluster string, service string) (bool, error) CreateService(ctx context.Context, opts *CreateServiceOptions) error GetServiceStatus(ctx context.Context, cluster string, service string) (*common.ServiceStatus, error) // StopService stops the service on the container platform, and waits till all containers are stopped. // Expect no error (nil) if service is already stopped or does not exist. StopService(ctx context.Context, cluster string, service string) error RestartService(ctx context.Context, cluster string, service string, desiredCount int64) error // DeleteService deletes the service on the container platform. // Expect no error (nil) if service does not exist. DeleteService(ctx context.Context, cluster string, service string) error // List the active (pending and running) tasks of the service. ListActiveServiceTasks(ctx context.Context, cluster string, service string) (serviceTaskIDs map[string]bool, err error) GetServiceTask(ctx context.Context, cluster string, service string, containerInstanceID string) (serviceTaskID string, err error) // One node (EC2) could crash at any time. So the task needs to be reentrant. // The container orchestration framework, such as ECS, usually does not retry the // task automatically, when a taks fails. The caller needs to check the task status // and decide whether to retry. // It may not be easy to know the task failure reason clearly. // For example, ECS task will reach the stopped status at many conditions, // http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_life_cycle.html. // The Task.StoppedReason records the detail reason, // http://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html#stopped-task-errors. // // The caller could check whether a task succeeds or not by checking // both TaskStatus.Status and TaskStatus.StoppedReason. This does not sounds the best // option. It would be better that ECS could add the explicit task failure status. // // The other option is the task updates the status somewhere at the end, // and the caller could check that status to decide whether the task needs to be retried. // For example, the MongoDB init task will set the service initialized in the control plane. RunTask(ctx context.Context, opts *RunTaskOptions) (taskID string, err error) GetTaskStatus(ctx context.Context, cluster string, taskID string) (*common.TaskStatus, error) DeleteTask(ctx context.Context, cluster string, service string, taskType string) error }
ContainerSvc defines the cluster, service and task related functions
type CreateServiceOptions ¶
type CreateServiceOptions struct { Common *CommonOptions ContainerPath string // The mount path inside container PortMappings []common.PortMapping Replicas int64 Envkvs []*common.EnvKeyValuePair }
type MemContainerSvc ¶
type MemContainerSvc struct {
// contains filtered or unexported fields
}
func NewMemContainerSvc ¶
func NewMemContainerSvc() *MemContainerSvc
func (*MemContainerSvc) AddServiceTask ¶
func (*MemContainerSvc) CreateService ¶
func (m *MemContainerSvc) CreateService(ctx context.Context, opts *CreateServiceOptions) error
func (*MemContainerSvc) DeleteService ¶
func (*MemContainerSvc) DeleteTask ¶
func (*MemContainerSvc) GetServiceStatus ¶
func (m *MemContainerSvc) GetServiceStatus(ctx context.Context, cluster string, service string) (*common.ServiceStatus, error)
func (*MemContainerSvc) GetServiceTask ¶
func (*MemContainerSvc) GetTaskStatus ¶
func (m *MemContainerSvc) GetTaskStatus(ctx context.Context, cluster string, taskID string) (*common.TaskStatus, error)
func (*MemContainerSvc) IsServiceExist ¶
func (*MemContainerSvc) ListActiveServiceTasks ¶
func (*MemContainerSvc) RestartService ¶
func (*MemContainerSvc) RunTask ¶
func (m *MemContainerSvc) RunTask(ctx context.Context, opts *RunTaskOptions) (taskID string, err error)
func (*MemContainerSvc) StopService ¶
type MockContainerSvcInfo ¶
type MockContainerSvcInfo struct { }
func NewMockContainerSvcInfo ¶
func NewMockContainerSvcInfo() *MockContainerSvcInfo
func (*MockContainerSvcInfo) GetContainerClusterID ¶
func (m *MockContainerSvcInfo) GetContainerClusterID() string
func (*MockContainerSvcInfo) GetLocalContainerInstanceID ¶
func (m *MockContainerSvcInfo) GetLocalContainerInstanceID() string
type RunTaskOptions ¶
type RunTaskOptions struct { Common *CommonOptions TaskType string Envkvs []*common.EnvKeyValuePair }
Click to show internal directories.
Click to hide internal directories.