Refactor container io code

Signed-off-by: Lantao Liu <lantaol@google.com>
This commit is contained in:
Lantao Liu
2017-11-10 18:34:09 +00:00
parent b6de04772d
commit e41b6d3c24
8 changed files with 400 additions and 402 deletions

View File

@@ -160,16 +160,13 @@ func loadContainer(ctx context.Context, cntr containerd.Container, containerDir
return nil, err
}
containerIO, err = cio.NewContainerIO(id,
cio.WithTerminal(fifos.Terminal),
cio.WithFIFOs(fifos.Dir, fifos.In, fifos.Out, fifos.Err),
cio.WithFIFOs(fifos),
cio.WithOutput("log", stdoutWC, stderrWC),
)
if err != nil {
return nil, err
}
if err := containerIO.Pipe(); err != nil {
return nil, err
}
containerIO.Pipe()
return containerIO, nil
})
if err != nil && !errdefs.IsNotFound(err) {
@@ -196,14 +193,11 @@ func loadContainer(ctx context.Context, cntr containerd.Container, containerDir
// to generate container status.
switch status.State() {
case runtime.ContainerState_CONTAINER_CREATED:
// TODO(random-liu): Do not create fifos directory in NewContainerIO.
// container is in created state, create container io for it.
// NOTE: Another possibility is that we've tried to start the container, but
// cri-containerd got restarted just during that. In that case, we still
// treat the container as `CREATED`.
containerIO, err = cio.NewContainerIO(id,
cio.WithStdinOpen(meta.Config.GetStdin()),
cio.WithTerminal(meta.Config.GetTty()),
cio.WithNewFIFOs(containerDir, meta.Config.GetTty(), meta.Config.GetStdin()),
)
if err != nil {
return container, fmt.Errorf("failed to create container io: %v", err)