Browse code

Merge pull request #10573 from LK4D4/return_attach_to_builder

Change verbose builder out back to attach

Michael Crosby authored on 2015/02/07 07:37:09
Showing 3 changed files
... ...
@@ -545,21 +545,18 @@ func (b *Builder) create() (*daemon.Container, error) {
545 545
 }
546 546
 
547 547
 func (b *Builder) run(c *daemon.Container) error {
548
+	var errCh chan error
549
+	if b.Verbose {
550
+		errCh = b.Daemon.Attach(&c.StreamConfig, c.Config.OpenStdin, c.Config.StdinOnce, c.Config.Tty, nil, b.OutStream, b.ErrStream)
551
+	}
552
+
548 553
 	//start the container
549 554
 	if err := c.Start(); err != nil {
550 555
 		return err
551 556
 	}
552 557
 
553
-	if b.Verbose {
554
-		logsJob := b.Engine.Job("logs", c.ID)
555
-		logsJob.Setenv("follow", "1")
556
-		logsJob.Setenv("stdout", "1")
557
-		logsJob.Setenv("stderr", "1")
558
-		logsJob.Stdout.Add(b.OutStream)
559
-		logsJob.Stderr.Set(b.ErrStream)
560
-		if err := logsJob.Run(); err != nil {
561
-			return err
562
-		}
558
+	if err := <-errCh; err != nil {
559
+		return err
563 560
 	}
564 561
 
565 562
 	// Wait for it to finish
... ...
@@ -101,7 +101,7 @@ func (daemon *Daemon) ContainerAttach(job *engine.Job) engine.Status {
101 101
 			cStderr = job.Stderr
102 102
 		}
103 103
 
104
-		<-daemon.attach(&container.StreamConfig, container.Config.OpenStdin, container.Config.StdinOnce, container.Config.Tty, cStdin, cStdout, cStderr)
104
+		<-daemon.Attach(&container.StreamConfig, container.Config.OpenStdin, container.Config.StdinOnce, container.Config.Tty, cStdin, cStdout, cStderr)
105 105
 		// If we are in stdinonce mode, wait for the process to end
106 106
 		// otherwise, simply return
107 107
 		if container.Config.StdinOnce && !container.Config.Tty {
... ...
@@ -111,7 +111,7 @@ func (daemon *Daemon) ContainerAttach(job *engine.Job) engine.Status {
111 111
 	return engine.StatusOK
112 112
 }
113 113
 
114
-func (daemon *Daemon) attach(streamConfig *StreamConfig, openStdin, stdinOnce, tty bool, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) chan error {
114
+func (daemon *Daemon) Attach(streamConfig *StreamConfig, openStdin, stdinOnce, tty bool, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) chan error {
115 115
 	var (
116 116
 		cStdout, cStderr io.ReadCloser
117 117
 		cStdin           io.WriteCloser
... ...
@@ -218,7 +218,7 @@ func (d *Daemon) ContainerExecStart(job *engine.Job) engine.Status {
218 218
 		execConfig.StreamConfig.stdinPipe = ioutils.NopWriteCloser(ioutil.Discard) // Silently drop stdin
219 219
 	}
220 220
 
221
-	attachErr := d.attach(&execConfig.StreamConfig, execConfig.OpenStdin, true, execConfig.ProcessConfig.Tty, cStdin, cStdout, cStderr)
221
+	attachErr := d.Attach(&execConfig.StreamConfig, execConfig.OpenStdin, true, execConfig.ProcessConfig.Tty, cStdin, cStdout, cStderr)
222 222
 
223 223
 	execErr := make(chan error)
224 224