Documentation ¶
Index ¶
- Constants
- Variables
- func GenVolumeSourceForSwarm(source string) string
- func GenVolumeSourceName(source string, index int64) string
- type CommonOptions
- type ContainerSvc
- type CreateServiceOptions
- type Info
- type K8sOptions
- 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) RunTask(ctx context.Context, opts *RunTaskOptions) (taskID string, err error)
- func (m *MemContainerSvc) ScaleService(ctx context.Context, cluster string, service string, desiredCount int64) error
- func (m *MemContainerSvc) StopService(ctx context.Context, cluster string, service string) error
- type MockContainerSvcInfo
- type Placement
- type RunTaskOptions
- type VolumeOptions
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.
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 // ScaleService scales the service containers up/down to the desiredCount. Note: it does not wait till all containers are started or stopped. ScaleService(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 // The volume mount for the service data, must exist. DataVolume *VolumeOptions // The volume mount for the service journal, optional. JournalVolume *VolumeOptions PortMappings []common.PortMapping Replicas int64 // the placement constraints. If not specified, spread to all zones. Place *Placement Envkvs []*common.EnvKeyValuePair KubeOptions *K8sOptions }
type K8sOptions ¶ added in v0.9.2
type K8sOptions struct { // The container image of the init container, optional InitContainerImage string // The access port of the service ServicePort int64 // Whether uses external DNS. For example, set to true if connect with AWS Route53. // If only use within k8s, set to false. ExternalDNS bool }
k8s specific options
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) RunTask ¶
func (m *MemContainerSvc) RunTask(ctx context.Context, opts *RunTaskOptions) (taskID string, err error)
func (*MemContainerSvc) ScaleService ¶ added in v0.9.2
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.