Move OCI runtime implementation behind an interface

For future work, we need multiple implementations of the OCI
runtime, not just a Conmon-wrapped runtime matching the runc CLI.

As part of this, do some refactoring on the interface for exec
(move to a struct, not a massive list of arguments). Also, add
'all' support to Kill and Stop (supported by runc and used a bit
internally for removing containers).

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:
Matthew Heon
2019-10-08 13:53:36 -04:00
parent a7f266891c
commit 6f630bc09b
22 changed files with 1934 additions and 1646 deletions

View File

@ -659,7 +659,7 @@ func (c *Container) checkpointRestoreSupported() (err error) {
if !criu.CheckForCriu() {
return errors.Errorf("Checkpoint/Restore requires at least CRIU %d", criu.MinCriuVersion)
}
if !c.ociRuntime.featureCheckCheckpointing() {
if !c.ociRuntime.SupportsCheckpoint() {
return errors.Errorf("Configured runtime does not support checkpoint/restore")
}
return nil
@ -695,7 +695,7 @@ func (c *Container) checkpoint(ctx context.Context, options ContainerCheckpointO
return err
}
if err := c.ociRuntime.checkpointContainer(c, options); err != nil {
if err := c.ociRuntime.CheckpointContainer(c, options); err != nil {
return err
}
@ -923,7 +923,7 @@ func (c *Container) restore(ctx context.Context, options ContainerCheckpointOpti
}
}
if err := c.ociRuntime.createContainer(c, &options); err != nil {
if err := c.ociRuntime.CreateContainer(c, &options); err != nil {
return err
}