agent/engine/interface.go (28 lines of code) (raw):
// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"). You may
// not use this file except in compliance with the License. A copy of the
// License is located at
//
// http://aws.amazon.com/apache2.0/
//
// or in the "license" file accompanying this file. This file is distributed
// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
// express or implied. See the License for the specific language governing
// permissions and limitations under the License.
package engine
import (
"context"
"encoding/json"
apitask "github.com/aws/amazon-ecs-agent/agent/api/task"
"github.com/aws/amazon-ecs-agent/agent/data"
dm "github.com/aws/amazon-ecs-agent/agent/engine/daemonmanager"
"github.com/aws/amazon-ecs-agent/agent/statechange"
)
// TaskEngine is an interface for the DockerTaskEngine
type TaskEngine interface {
Init(context.Context) error
MustInit(context.Context)
// Disable *must* only be called when this engine will no longer be used
// (e.g. right before exiting down the process). It will irreversibly stop
// this task engine from processing new tasks
Disable()
// StateChangeEvents will provide information about tasks that have been previously
// executed. Specifically, it will provide information when they reach
// running or stopped, as well as providing portbinding and other metadata
StateChangeEvents() chan statechange.Event
// SetDataClient sets the data client that is used by the task engine.
SetDataClient(data.Client)
// AddTask adds a new task to the task engine and manages its container's
// lifecycle. If it returns an error, the task was not added.
AddTask(*apitask.Task)
// UpsertTask upserts a task in the task engine. Upserting means:
// - if a task with the same ARN already exists in the task engine's state, then the existing task's desired
// status is updated to the desired status of the upserted task
// - else the upserted task is inserted into the task engine's state
UpsertTask(*apitask.Task)
// ListTasks lists all the tasks being managed by the TaskEngine.
ListTasks() ([]*apitask.Task, error)
// GetTaskByArn gets a managed task, given a task arn.
GetTaskByArn(string) (*apitask.Task, bool)
Version() (string, error)
// LoadState loads the task engine state with data in db.
LoadState() error
// SaveState saves all the data in task engine state to db.
SaveState() error
GetDaemonManagers() map[string]dm.DaemonManager
GetDaemonTask(string) *apitask.Task
SetDaemonTask(string, *apitask.Task)
json.Marshaler
json.Unmarshaler
}