Use new cio package.
Signed-off-by: Lantao Liu <lantaol@google.com>
This commit is contained in:
parent
b07017b93e
commit
cdb1bf0946
@ -19,7 +19,6 @@ package io
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@ -116,12 +115,7 @@ func NewContainerIO(id string, opts ...ContainerIOOpts) (_ *ContainerIO, err err
|
|||||||
|
|
||||||
// Config returns io config.
|
// Config returns io config.
|
||||||
func (c *ContainerIO) Config() cio.Config {
|
func (c *ContainerIO) Config() cio.Config {
|
||||||
return cio.Config{
|
return c.fifos.Config
|
||||||
Terminal: c.fifos.Terminal,
|
|
||||||
Stdin: c.fifos.In,
|
|
||||||
Stdout: c.fifos.Out,
|
|
||||||
Stderr: c.fifos.Err,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pipe creates container fifos and pipe container output
|
// Pipe creates container fifos and pipe container output
|
||||||
@ -239,7 +233,7 @@ func (c *ContainerIO) Wait() {
|
|||||||
func (c *ContainerIO) Close() error {
|
func (c *ContainerIO) Close() error {
|
||||||
c.closer.Close()
|
c.closer.Close()
|
||||||
if c.fifos != nil {
|
if c.fifos != nil {
|
||||||
return os.RemoveAll(c.fifos.Dir)
|
return c.fifos.Close()
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@ package io
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/containerd/containerd/cio"
|
"github.com/containerd/containerd/cio"
|
||||||
@ -57,12 +56,7 @@ func NewExecIO(id, root string, tty, stdin bool) (*ExecIO, error) {
|
|||||||
|
|
||||||
// Config returns io config.
|
// Config returns io config.
|
||||||
func (e *ExecIO) Config() cio.Config {
|
func (e *ExecIO) Config() cio.Config {
|
||||||
return cio.Config{
|
return e.fifos.Config
|
||||||
Terminal: e.fifos.Terminal,
|
|
||||||
Stdin: e.fifos.In,
|
|
||||||
Stdout: e.fifos.Out,
|
|
||||||
Stderr: e.fifos.Err,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attach attaches exec stdio. The logic is similar with container io attach.
|
// Attach attaches exec stdio. The logic is similar with container io attach.
|
||||||
@ -146,7 +140,7 @@ func (e *ExecIO) Close() error {
|
|||||||
e.closer.Close()
|
e.closer.Close()
|
||||||
}
|
}
|
||||||
if e.fifos != nil {
|
if e.fifos != nil {
|
||||||
return os.RemoveAll(e.fifos.Dir)
|
return e.fifos.Close()
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@ package io
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
@ -80,19 +79,12 @@ func newFifos(root, id string, tty, stdin bool) (*cio.FIFOSet, error) {
|
|||||||
if err := os.MkdirAll(root, 0700); err != nil {
|
if err := os.MkdirAll(root, 0700); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
dir, err := ioutil.TempDir(root, "")
|
fifos, err := cio.NewFIFOSetInDir(root, id, tty)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
fifos := &cio.FIFOSet{
|
|
||||||
Dir: dir,
|
|
||||||
In: filepath.Join(dir, id+"-stdin"),
|
|
||||||
Out: filepath.Join(dir, id+"-stdout"),
|
|
||||||
Err: filepath.Join(dir, id+"-stderr"),
|
|
||||||
Terminal: tty,
|
|
||||||
}
|
|
||||||
if !stdin {
|
if !stdin {
|
||||||
fifos.In = ""
|
fifos.Stdin = ""
|
||||||
}
|
}
|
||||||
return fifos, nil
|
return fifos, nil
|
||||||
}
|
}
|
||||||
@ -120,21 +112,21 @@ func newStdioPipes(fifos *cio.FIFOSet) (_ *stdioPipes, _ *wgCloser, err error) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
if fifos.In != "" {
|
if fifos.Stdin != "" {
|
||||||
if f, err = fifo.OpenFifo(ctx, fifos.In, syscall.O_WRONLY|syscall.O_CREAT|syscall.O_NONBLOCK, 0700); err != nil {
|
if f, err = fifo.OpenFifo(ctx, fifos.Stdin, syscall.O_WRONLY|syscall.O_CREAT|syscall.O_NONBLOCK, 0700); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
p.stdin = f
|
p.stdin = f
|
||||||
set = append(set, f)
|
set = append(set, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
if f, err = fifo.OpenFifo(ctx, fifos.Out, syscall.O_RDONLY|syscall.O_CREAT|syscall.O_NONBLOCK, 0700); err != nil {
|
if f, err = fifo.OpenFifo(ctx, fifos.Stdout, syscall.O_RDONLY|syscall.O_CREAT|syscall.O_NONBLOCK, 0700); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
p.stdout = f
|
p.stdout = f
|
||||||
set = append(set, f)
|
set = append(set, f)
|
||||||
|
|
||||||
if f, err = fifo.OpenFifo(ctx, fifos.Err, syscall.O_RDONLY|syscall.O_CREAT|syscall.O_NONBLOCK, 0700); err != nil {
|
if f, err = fifo.OpenFifo(ctx, fifos.Stderr, syscall.O_RDONLY|syscall.O_CREAT|syscall.O_NONBLOCK, 0700); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
p.stderr = f
|
p.stderr = f
|
||||||
|
Loading…
Reference in New Issue
Block a user