Merge pull request #4308 from vbatts/vbatts-seperate_driver_term

seperate out the terminal functions from lxc
This commit is contained in:
unclejack 2014-02-26 16:58:21 +02:00
commit d8b60cb592
2 changed files with 8 additions and 9 deletions

View File

@ -77,7 +77,7 @@ func (d *driver) Name() string {
} }
func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, startCallback execdriver.StartCallback) (int, error) { func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, startCallback execdriver.StartCallback) (int, error) {
if err := SetTerminal(c, pipes); err != nil { if err := execdriver.SetTerminal(c, pipes); err != nil {
return -1, err return -1, err
} }
configPath, err := d.generateLXCConfig(c) configPath, err := d.generateLXCConfig(c)

View File

@ -1,16 +1,15 @@
package lxc package execdriver
import ( import (
"github.com/dotcloud/docker/execdriver"
"github.com/dotcloud/docker/pkg/term" "github.com/dotcloud/docker/pkg/term"
"github.com/kr/pty" "github.com/kr/pty"
"io" "io"
"os" "os"
) )
func SetTerminal(command *execdriver.Command, pipes *execdriver.Pipes) error { func SetTerminal(command *Command, pipes *Pipes) error {
var ( var (
term execdriver.Terminal term Terminal
err error err error
) )
if command.Tty { if command.Tty {
@ -30,7 +29,7 @@ type TtyConsole struct {
slave *os.File slave *os.File
} }
func NewTtyConsole(command *execdriver.Command, pipes *execdriver.Pipes) (*TtyConsole, error) { func NewTtyConsole(command *Command, pipes *Pipes) (*TtyConsole, error) {
ptyMaster, ptySlave, err := pty.Open() ptyMaster, ptySlave, err := pty.Open()
if err != nil { if err != nil {
return nil, err return nil, err
@ -54,7 +53,7 @@ func (t *TtyConsole) Resize(h, w int) error {
return term.SetWinsize(t.master.Fd(), &term.Winsize{Height: uint16(h), Width: uint16(w)}) return term.SetWinsize(t.master.Fd(), &term.Winsize{Height: uint16(h), Width: uint16(w)})
} }
func (t *TtyConsole) attach(command *execdriver.Command, pipes *execdriver.Pipes) error { func (t *TtyConsole) attach(command *Command, pipes *Pipes) error {
command.Stdout = t.slave command.Stdout = t.slave
command.Stderr = t.slave command.Stderr = t.slave
command.Console = t.slave.Name() command.Console = t.slave.Name()
@ -88,7 +87,7 @@ func (t *TtyConsole) Close() error {
type StdConsole struct { type StdConsole struct {
} }
func NewStdConsole(command *execdriver.Command, pipes *execdriver.Pipes) (*StdConsole, error) { func NewStdConsole(command *Command, pipes *Pipes) (*StdConsole, error) {
std := &StdConsole{} std := &StdConsole{}
if err := std.attach(command, pipes); err != nil { if err := std.attach(command, pipes); err != nil {
@ -97,7 +96,7 @@ func NewStdConsole(command *execdriver.Command, pipes *execdriver.Pipes) (*StdCo
return std, nil return std, nil
} }
func (s *StdConsole) attach(command *execdriver.Command, pipes *execdriver.Pipes) error { func (s *StdConsole) attach(command *Command, pipes *Pipes) error {
command.Stdout = pipes.Stdout command.Stdout = pipes.Stdout
command.Stderr = pipes.Stderr command.Stderr = pipes.Stderr