mirror of https://github.com/docker/docs.git
				
				
				
			swarmd: remove unused engine/beam adapters.
Signed-off-by: Solomon Hykes <solomon@docker.com>
This commit is contained in:
		
							parent
							
								
									a1dcc4aceb
								
							
						
					
					
						commit
						f556ed19f7
					
				
							
								
								
									
										123
									
								
								swarmd/swarmd.go
								
								
								
								
							
							
						
						
									
										123
									
								
								swarmd/swarmd.go
								
								
								
								
							|  | @ -1,21 +1,17 @@ | ||||||
| package main | package main | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bufio" |  | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"log" | 	"log" | ||||||
| 	"github.com/codegangsta/cli" | 	"github.com/codegangsta/cli" | ||||||
| 	"github.com/docker/libswarm/beam" | 	"github.com/docker/libswarm/beam" | ||||||
| 	"github.com/docker/libswarm/beam/inmem" |  | ||||||
| 	beamutils "github.com/docker/libswarm/beam/utils" | 	beamutils "github.com/docker/libswarm/beam/utils" | ||||||
| 	"github.com/docker/libswarm/backends" | 	"github.com/docker/libswarm/backends" | ||||||
| 	_ "github.com/dotcloud/docker/api/server" | 	_ "github.com/dotcloud/docker/api/server" | ||||||
| 	"github.com/dotcloud/docker/engine" |  | ||||||
| 	"github.com/flynn/go-shlex" | 	"github.com/flynn/go-shlex" | ||||||
| 	"io" | 	"io" | ||||||
| 	"os" | 	"os" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"sync" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func main() { | func main() { | ||||||
|  | @ -30,125 +26,6 @@ func main() { | ||||||
| 	app.Run(os.Args) | 	app.Run(os.Args) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func EngineAsSender(eng *engine.Engine) beam.Sender { |  | ||||||
| 	r, w := inmem.Pipe() |  | ||||||
| 	go func() { |  | ||||||
| 		for { |  | ||||||
| 			msg, msgr, msgw, err := r.Receive(beam.R | beam.W) |  | ||||||
| 			if err != nil { |  | ||||||
| 				return |  | ||||||
| 			} |  | ||||||
| 			go func(msg *beam.Message, in beam.Receiver, out beam.Sender) { |  | ||||||
| 				job := eng.Job(msg.Name, msg.Args...) |  | ||||||
| 				stdout, _ := job.Stdout.AddPipe() // can't fail
 |  | ||||||
| 				stderr, _ := job.Stderr.AddPipe() // can't fail
 |  | ||||||
| 				stdinR, stdinW := io.Pipe() |  | ||||||
| 				defer stdinR.Close() |  | ||||||
| 				defer stdinW.Close() |  | ||||||
| 				job.Stdin.Add(stdinR) |  | ||||||
| 				log := func(src io.Reader) { |  | ||||||
| 					scanner := bufio.NewScanner(src) |  | ||||||
| 					for scanner.Scan() { |  | ||||||
| 						if scanner.Err() != nil { |  | ||||||
| 							return |  | ||||||
| 						} |  | ||||||
| 						if _, _, err := out.Send(&beam.Message{Name: "log", Args: []string{scanner.Text()}}, 0); err != nil { |  | ||||||
| 							return |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 				var tasks sync.WaitGroup |  | ||||||
| 				tasks.Add(3) |  | ||||||
| 				go func() { |  | ||||||
| 					// Read from stdout, send "log" events
 |  | ||||||
| 					defer tasks.Done() |  | ||||||
| 					log(stdout) |  | ||||||
| 				}() |  | ||||||
| 				go func() { |  | ||||||
| 					// Read from stderr, send "log" events
 |  | ||||||
| 					// FIXME: how to differentiate stderr/stdout logs?
 |  | ||||||
| 					defer tasks.Done() |  | ||||||
| 					log(stderr) |  | ||||||
| 				}() |  | ||||||
| 				go func() { |  | ||||||
| 					// Receive events, send "log" events to stdin
 |  | ||||||
| 					defer tasks.Done() |  | ||||||
| 					for { |  | ||||||
| 						m, _, _, err := in.Receive(0) |  | ||||||
| 						if err != nil { |  | ||||||
| 							return |  | ||||||
| 						} |  | ||||||
| 						if m.Name == "log" { |  | ||||||
| 							if len(m.Args) < 1 { |  | ||||||
| 								continue |  | ||||||
| 							} |  | ||||||
| 							fmt.Fprintf(stdinW, "%s\n", strings.TrimRight(m.Args[0], "\r\n")) |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 				}() |  | ||||||
| 				err := job.Run() |  | ||||||
| 				if err != nil { |  | ||||||
| 					out.Send(&beam.Message{Name: "error", Args: []string{err.Error()}}, 0) |  | ||||||
| 				} |  | ||||||
| 			}(msg, msgr, msgw) |  | ||||||
| 		} |  | ||||||
| 	}() |  | ||||||
| 	return w |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func SenderAsEngine(s beam.Sender) *engine.Engine { |  | ||||||
| 	eng := engine.New() |  | ||||||
| 	eng.RegisterCatchall(func(job *engine.Job) engine.Status { |  | ||||||
| 		msg := &beam.Message{ |  | ||||||
| 			Name: job.Name, |  | ||||||
| 			Args: job.Args, |  | ||||||
| 		} |  | ||||||
| 		// FIXME: serialize job.Env into a trailing argument
 |  | ||||||
| 		r, w, err := s.Send(msg, beam.R|beam.W) |  | ||||||
| 		if err != nil { |  | ||||||
| 			return job.Errorf("beam send: %v", err) |  | ||||||
| 		} |  | ||||||
| 		var tasks sync.WaitGroup |  | ||||||
| 		tasks.Add(1) |  | ||||||
| 		go func() { |  | ||||||
| 			defer tasks.Done() |  | ||||||
| 			in := bufio.NewScanner(job.Stdin) |  | ||||||
| 			for in.Scan() { |  | ||||||
| 				_, _, err := w.Send(&beam.Message{Name: "log", Args: []string{in.Text()}}, 0) |  | ||||||
| 				if err != nil { |  | ||||||
| 					return |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		}() |  | ||||||
| 		tasks.Add(1) |  | ||||||
| 		var status engine.Status = engine.StatusOK |  | ||||||
| 		go func() { |  | ||||||
| 			defer tasks.Done() |  | ||||||
| 			for { |  | ||||||
| 				msg, _, _, err := r.Receive(0) |  | ||||||
| 				if err != nil { |  | ||||||
| 					return |  | ||||||
| 				} |  | ||||||
| 				if msg.Name == "log" { |  | ||||||
| 					if len(msg.Args) < 1 { |  | ||||||
| 						continue |  | ||||||
| 					} |  | ||||||
| 					fmt.Fprintf(job.Stdout, "%s\n", strings.TrimRight(msg.Args[0], "\r\n")) |  | ||||||
| 				} else if msg.Name == "error" { |  | ||||||
| 					status = engine.StatusErr |  | ||||||
| 					if len(msg.Args) < 1 { |  | ||||||
| 						continue |  | ||||||
| 					} |  | ||||||
| 					fmt.Fprintf(job.Stderr, "%s\n", strings.TrimRight(msg.Args[0], "\r\n")) |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		}() |  | ||||||
| 		tasks.Wait() |  | ||||||
| 		return status |  | ||||||
| 	}) |  | ||||||
| 	return eng |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func cmdDaemon(c *cli.Context) { | func cmdDaemon(c *cli.Context) { | ||||||
| 	if len(c.Args()) == 0 { | 	if len(c.Args()) == 0 { | ||||||
| 		Fatalf("Usage: %s <proto>://<address> [<proto>://<address>]...\n", c.App.Name) | 		Fatalf("Usage: %s <proto>://<address> [<proto>://<address>]...\n", c.App.Name) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue