
This renames the runtime interface to PlatformRuntime to denote the layer at which the runtime is being abstracted. This should be used to abstract different platforms that vary greatly and do not have full compat with OCI based binary runtimes. Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
/*
|
|
Copyright The containerd Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License 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 runtime
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/containerd/containerd/mount"
|
|
"github.com/gogo/protobuf/types"
|
|
)
|
|
|
|
// IO holds process IO information
|
|
type IO struct {
|
|
Stdin string
|
|
Stdout string
|
|
Stderr string
|
|
Terminal bool
|
|
}
|
|
|
|
// CreateOpts contains task creation data
|
|
type CreateOpts struct {
|
|
// Spec is the OCI runtime spec
|
|
Spec *types.Any
|
|
// Rootfs mounts to perform to gain access to the container's filesystem
|
|
Rootfs []mount.Mount
|
|
// IO for the container's main process
|
|
IO IO
|
|
// Checkpoint digest to restore container state
|
|
Checkpoint string
|
|
// Options for the runtime and container
|
|
Options *types.Any
|
|
}
|
|
|
|
// Exit information for a process
|
|
type Exit struct {
|
|
Pid uint32
|
|
Status uint32
|
|
Timestamp time.Time
|
|
}
|
|
|
|
// PlatformRuntime is responsible for the creation and management of
|
|
// tasks and processes for a platform.
|
|
type PlatformRuntime interface {
|
|
// ID of the runtime
|
|
ID() string
|
|
// Create creates a task with the provided id and options.
|
|
Create(ctx context.Context, id string, opts CreateOpts) (Task, error)
|
|
// Get returns a task.
|
|
Get(context.Context, string) (Task, error)
|
|
// Tasks returns all the current tasks for the runtime.
|
|
// Any container runs at most one task at a time.
|
|
Tasks(context.Context) ([]Task, error)
|
|
// Delete removes the task in the runtime.
|
|
Delete(context.Context, Task) (*Exit, error)
|
|
}
|