From 22994f8a746857552166b21b3aa58066e2a2378a Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 11 Mar 2014 16:45:58 -0700 Subject: [PATCH 001/347] Beam: a simple stream-oriented communication protocol for distributed systems. This patch includes a stripped down implementation with a bare minimum unix socket transport. It relies on fd passing for stream multiplexing. The purpose of this first patch is to allow implementation of dynamic linking, which will allow advanced service discovery. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- MAINTAINERS | 1 + unix.go | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 MAINTAINERS create mode 100644 unix.go diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 0000000000..db33365bcd --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1 @@ +Solomon Hykes diff --git a/unix.go b/unix.go new file mode 100644 index 0000000000..0bee722da4 --- /dev/null +++ b/unix.go @@ -0,0 +1,149 @@ +package beam + +import ( + "syscall" + "fmt" + "net" + "os" +) + +// Send sends a new message on conn with data and f as payload and +// attachment, respectively. +func Send(conn *net.UnixConn, data []byte, f *os.File) error { + return sendUnix(conn, data, int(f.Fd())) +} + +// Receive waits for a new message on conn, and receives its payload +// and attachment, or an error if any. +// +// If more than 1 file descriptor is sent in the message, they are all +// closed except for the first, which is the attachment. +// It is legal for a message to have no attachment or an empty payload. +func Receive(conn *net.UnixConn) ([]byte, *os.File, error) { + for { + data, fds, err := receiveUnix(conn) + if err != nil { + return nil, nil, fmt.Errorf("receive: %v", err) + } + if len(fds) == 0 { + continue + } + if len(fds) > 1 { + for _, fd := range fds { + syscall.Close(fd) + } + } + return data, os.NewFile(uintptr(fds[0]), ""), nil + } + panic("impossibru") + return nil, nil, nil +} + +// SendPipe creates a new unix socket pair, sends one end as the attachment +// to a beam message with the payload `data`, and returns the other end. +// +// This is a common pattern to open a new service endpoint. +// For example, a service wishing to advertise its presence to clients might +// open an endpoint with: +// +// endpoint, _ := SendPipe(conn, []byte("sql")) +// defer endpoint.Close() +// for { +// conn, _ := endpoint.Receive() +// go func() { +// Handle(conn) +// conn.Close() +// }() +// } +// +// Note that beam does not distinguish between clients and servers in the logical +// sense: any program wishing to establishing a communication with another program +// may use SendPipe() to create an endpoint. +// For example, here is how an application might use it to connect to a database client. +// +// endpoint, _ := SendPipe(conn, []byte("userdb")) +// defer endpoint.Close() +// conn, _ := endpoint.Receive() +// defer conn.Close() +// db := NewDBClient(conn) +// +// In this example note that we only need the first connection out of the endpoint, +// but we could open new ones to retry after a broken connection. +// Note that, because the underlying service transport is abstracted away, this +// allows for arbitrarily complex service discovery and retry logic to take place, +// without complicating application code. +// +func SendPipe(conn *net.UnixConn, data []byte) (*os.File, error) { + local, remote, err := SocketPair() + if err != nil { + return nil, err + } + if err := Send(conn, data, remote); err != nil { + remote.Close() + return nil, err + } + return local, nil +} + +func receiveUnix(conn *net.UnixConn) ([]byte, []int, error) { + buf := make([]byte, 4096) + oob := make([]byte, 4096) + bufn, oobn, _, _, err := conn.ReadMsgUnix(buf, oob) + if err != nil { + return nil, nil, err + } + return buf[:bufn], extractFds(oob[:oobn]), nil +} + +func sendUnix(conn *net.UnixConn, data []byte, fds ...int) error { + _, _, err := conn.WriteMsgUnix(data, syscall.UnixRights(fds...), nil) + return err +} + + +func extractFds(oob []byte) (fds []int) { + scms, err := syscall.ParseSocketControlMessage(oob) + if err != nil { + return + } + for _, scm := range scms { + gotFds, err := syscall.ParseUnixRights(&scm) + if err != nil { + continue + } + fds = append(fds, gotFds...) + } + return +} + +func socketpair() ([2]int, error) { + return syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM|syscall.FD_CLOEXEC, 0) +} + +// SocketPair is a convenience wrapper around the socketpair(2) syscall. +// It returns a unix socket of type SOCK_STREAM in the form of 2 file descriptors +// not bound to the underlying filesystem. +// Messages sent on one end are received on the other, and vice-versa. +// It is the caller's responsibility to close both ends. +func SocketPair() (*os.File, *os.File, error) { + pair, err := socketpair() + if err != nil { + return nil, nil, err + } + return os.NewFile(uintptr(pair[0]), ""), os.NewFile(uintptr(pair[1]), ""), nil +} + +// FdConn wraps a file descriptor in a standard *net.UnixConn object, or +// returns an error if the file descriptor does not point to a unix socket. +func FdConn(fd int) (*net.UnixConn, error) { + f := os.NewFile(uintptr(fd), fmt.Sprintf("%d", fd)) + conn, err := net.FileConn(f) + if err != nil { + return nil, err + } + uconn, ok := conn.(*net.UnixConn) + if !ok { + return nil, fmt.Errorf("%d: not a unix connection", fd) + } + return uconn, nil +} From 78617ec0698cab1f8cc0cd42dbec7854c88d41d2 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 11 Mar 2014 17:15:26 -0700 Subject: [PATCH 002/347] Beam: convenience functions Listen and Connect These convenience functions expose a familiar face to the unknown and bizarre world of beam networking. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- service.go | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ unix.go | 3 +- 2 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 service.go diff --git a/service.go b/service.go new file mode 100644 index 0000000000..69e82e7ca9 --- /dev/null +++ b/service.go @@ -0,0 +1,89 @@ +package beam + +import ( + "net" +) + +// Listen is a convenience interface for applications to create service endpoints +// which can be easily used with existing networking code. +// +// Listen registers a new service endpoint on the beam connection `conn`, using the +// service name `name`. It returns a listener which can be used in the usual +// way. Calling Accept() on the listener will block until a new connection is available +// on the service endpoint. The endpoint is then returned as a regular net.Conn and +// can be used as a regular network connection. +// +// Note that if the underlying file descriptor received in attachment is nil or does +// not point to a connection, that message will be skipped. +// +func Listen(conn *net.UnixConn, name string) (net.Listener, error) { + fEndpoint, err := SendPipe(conn, []byte(name)) + if err != nil { + return nil, err + } + endpoint, err := FdConn(int(fEndpoint.Fd())) + if err != nil { + return nil, err + } + return &listener{ + name: name, + endpoint: endpoint, + }, nil +} + +func Connect(ctx *net.UnixConn, name string) (net.Conn, error) { + l, err := Listen(ctx, name) + if err != nil { + return nil, err + } + conn, err := l.Accept() + if err != nil { + return nil, err + } + return conn, nil +} + +type listener struct { + name string + endpoint *net.UnixConn +} + +func (l *listener) Accept() (net.Conn, error) { + for { + _, f, err := Receive(l.endpoint) + if err != nil { + return nil, err + } + if f == nil { + // Skip empty attachments + continue + } + conn, err := net.FileConn(f) + if err != nil { + // Skip beam attachments which are not connections + // (for example might be a regular file, directory etc) + continue + } + return conn, nil + } + panic("impossibru!") + return nil, nil +} + +func (l *listener) Close() error { + return l.endpoint.Close() +} + +func (l *listener) Addr() net.Addr { + return addr(l.name) +} + +type addr string + +func (a addr) Network() string { + return "beam" +} + +func (a addr) String() string { + return string(a) +} diff --git a/unix.go b/unix.go index 0bee722da4..7549a51a3d 100644 --- a/unix.go +++ b/unix.go @@ -1,10 +1,10 @@ package beam import ( - "syscall" "fmt" "net" "os" + "syscall" ) // Send sends a new message on conn with data and f as payload and @@ -100,7 +100,6 @@ func sendUnix(conn *net.UnixConn, data []byte, fds ...int) error { return err } - func extractFds(oob []byte) (fds []int) { scms, err := syscall.ParseSocketControlMessage(oob) if err != nil { From 161d1779410c08ee6b152ac42fce0ea7e1067485 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 18 Mar 2014 17:05:44 -0700 Subject: [PATCH 003/347] Beam: allow sending messages without attachments. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/unix.go b/unix.go index 7549a51a3d..cab8ee277d 100644 --- a/unix.go +++ b/unix.go @@ -10,7 +10,11 @@ import ( // Send sends a new message on conn with data and f as payload and // attachment, respectively. func Send(conn *net.UnixConn, data []byte, f *os.File) error { - return sendUnix(conn, data, int(f.Fd())) + var fds []int + if f != nil { + fds = append(fds, int(f.Fd())) + } + return sendUnix(conn, data, fds...) } // Receive waits for a new message on conn, and receives its payload @@ -25,15 +29,16 @@ func Receive(conn *net.UnixConn) ([]byte, *os.File, error) { if err != nil { return nil, nil, fmt.Errorf("receive: %v", err) } - if len(fds) == 0 { - continue - } + var f *os.File if len(fds) > 1 { for _, fd := range fds { syscall.Close(fd) } } - return data, os.NewFile(uintptr(fds[0]), ""), nil + if len(fds) >= 1 { + f = os.NewFile(uintptr(fds[0]), "") + } + return data, f, nil } panic("impossibru") return nil, nil, nil From 2e0643214d2eb4991d9e00f0a5f55e2bcb25c231 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 18 Mar 2014 17:06:31 -0700 Subject: [PATCH 004/347] Beam: change the prototype of SendPipe() to return a *net.UnixSocket Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- service.go | 6 +----- unix.go | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/service.go b/service.go index 69e82e7ca9..9a21e353df 100644 --- a/service.go +++ b/service.go @@ -17,11 +17,7 @@ import ( // not point to a connection, that message will be skipped. // func Listen(conn *net.UnixConn, name string) (net.Listener, error) { - fEndpoint, err := SendPipe(conn, []byte(name)) - if err != nil { - return nil, err - } - endpoint, err := FdConn(int(fEndpoint.Fd())) + endpoint, err := SendPipe(conn, []byte(name)) if err != nil { return nil, err } diff --git a/unix.go b/unix.go index cab8ee277d..15e8ff0e27 100644 --- a/unix.go +++ b/unix.go @@ -78,16 +78,25 @@ func Receive(conn *net.UnixConn) ([]byte, *os.File, error) { // allows for arbitrarily complex service discovery and retry logic to take place, // without complicating application code. // -func SendPipe(conn *net.UnixConn, data []byte) (*os.File, error) { +func SendPipe(conn *net.UnixConn, data []byte) (endpoint *net.UnixConn, err error) { local, remote, err := SocketPair() if err != nil { return nil, err } - if err := Send(conn, data, remote); err != nil { - remote.Close() + defer func() { + if err != nil { + local.Close() + remote.Close() + } + }() + endpoint, err = FdConn(int(local.Fd())) + if err != nil { return nil, err } - return local, nil + if err := Send(conn, data, remote); err != nil { + return nil, err + } + return endpoint, nil } func receiveUnix(conn *net.UnixConn) ([]byte, []int, error) { From 295c5b985494c6f82806ea2e6f30247b142b321f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 18 Mar 2014 17:09:09 -0700 Subject: [PATCH 005/347] Beam: fix file descriptor leaks * Close all file descriptors successfully sent as attachment * Close duplicate file descriptors created by net.FileCon and net.UnixConn.File Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/unix.go b/unix.go index 15e8ff0e27..7f7a73b186 100644 --- a/unix.go +++ b/unix.go @@ -111,6 +111,12 @@ func receiveUnix(conn *net.UnixConn) ([]byte, []int, error) { func sendUnix(conn *net.UnixConn, data []byte, fds ...int) error { _, _, err := conn.WriteMsgUnix(data, syscall.UnixRights(fds...), nil) + if err == nil { + for _, fd := range fds { + fmt.Printf("Closing sent fd %v\n", fd) + syscall.Close(fd) + } + } return err } @@ -154,8 +160,10 @@ func FdConn(fd int) (*net.UnixConn, error) { if err != nil { return nil, err } + f.Close() uconn, ok := conn.(*net.UnixConn) if !ok { + conn.Close() return nil, fmt.Errorf("%d: not a unix connection", fd) } return uconn, nil From 111aa2e4d6f7895fed69e96a3df03add8b8707ec Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 18 Mar 2014 17:11:03 -0700 Subject: [PATCH 006/347] Beam: USocketPair returns a *net.UnixConn socket pair for convenience. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/unix.go b/unix.go index 7f7a73b186..85b380671f 100644 --- a/unix.go +++ b/unix.go @@ -152,6 +152,27 @@ func SocketPair() (*os.File, *os.File, error) { return os.NewFile(uintptr(pair[0]), ""), os.NewFile(uintptr(pair[1]), ""), nil } +func USocketPair() (*net.UnixConn, *net.UnixConn, error) { + a, b, err := SocketPair() + if err != nil { + return nil, nil, err + } + fmt.Printf("SocketPair() = %v, %v\n", a.Fd(), b.Fd()) + uA, err := FdConn(int(a.Fd())) + if err != nil { + a.Close() + b.Close() + return nil, nil, err + } + uB, err := FdConn(int(b.Fd())) + if err != nil { + a.Close() + b.Close() + return nil, nil, err + } + return uA, uB, nil +} + // FdConn wraps a file descriptor in a standard *net.UnixConn object, or // returns an error if the file descriptor does not point to a unix socket. func FdConn(fd int) (*net.UnixConn, error) { From 55d2fd88707e02fe9c0ba6f75003a5fc709210f7 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 18 Mar 2014 17:21:32 -0700 Subject: [PATCH 007/347] Beam: basic test harness for the unix socket implementation. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix_test.go | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 unix_test.go diff --git a/unix_test.go b/unix_test.go new file mode 100644 index 0000000000..bdd03b1a07 --- /dev/null +++ b/unix_test.go @@ -0,0 +1,86 @@ +package beam + +import ( + "fmt" + "io/ioutil" + "testing" +) + +func TestSocketPair(t *testing.T) { + a, b, err := SocketPair() + if err != nil { + t.Fatal(err) + } + go func() { + a.Write([]byte("hello world!")) + fmt.Printf("done writing. closing\n") + a.Close() + fmt.Printf("done closing\n") + }() + data, err := ioutil.ReadAll(b) + if err != nil { + t.Fatal(err) + } + fmt.Printf("--> %s\n", data) + fmt.Printf("still open: %v\n", a.Fd()) +} + +func TestSendUnixSocket(t *testing.T) { + a1, a2, err := USocketPair() + if err != nil { + t.Fatal(err) + } + // defer a1.Close() + // defer a2.Close() + b1, b2, err := USocketPair() + if err != nil { + t.Fatal(err) + } + // defer b1.Close() + // defer b2.Close() + glueA, glueB, err := SocketPair() + if err != nil { + t.Fatal(err) + } + // defer glueA.Close() + // defer glueB.Close() + go func() { + err := Send(b2, []byte("a"), glueB) + if err != nil { + t.Fatal(err) + } + }() + go func() { + err := Send(a2, []byte("b"), glueA) + if err != nil { + t.Fatal(err) + } + }() + connAhdr, connA, err := Receive(a1) + if err != nil { + t.Fatal(err) + } + if string(connAhdr) != "b" { + t.Fatalf("unexpected: %s", connAhdr) + } + connBhdr, connB, err := Receive(b1) + if err != nil { + t.Fatal(err) + } + if string(connBhdr) != "a" { + t.Fatalf("unexpected: %s", connBhdr) + } + fmt.Printf("received both ends: %v <-> %v\n", connA.Fd(), connB.Fd()) + go func() { + fmt.Printf("sending message on %v\n", connA.Fd()) + connA.Write([]byte("hello world")) + connA.Sync() + fmt.Printf("closing %v\n", connA.Fd()) + connA.Close() + }() + data, err := ioutil.ReadAll(connB) + if err != nil { + t.Fatal(err) + } + fmt.Printf("---> %s\n", data) +} From 009584334563a4fb28975046c473054974746686 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 21 Mar 2014 17:30:15 -0700 Subject: [PATCH 008/347] Beam: beamsh is a mini-shell which runs processes and communicates with them over beam Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 91 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 examples/beamsh/beamsh.go diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go new file mode 100644 index 0000000000..9b382f77e4 --- /dev/null +++ b/examples/beamsh/beamsh.go @@ -0,0 +1,91 @@ +package main + +import ( + "fmt" + "os" + "text/scanner" + "strings" +) + +func main() { + s := &scanner.Scanner{} + s.Init(os.Stdin) + s.Whitespace = 1<<'\t' | 1<<' ' + //s.Mode = ScanIdents | ScanFloats | ScanChars | ScanStrings | ScanRawStrings | ScanComments | SkipComments + s.Mode = scanner.ScanStrings | scanner.ScanRawStrings | scanner.ScanIdents + expr, err := parse(s, "") + if err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) + os.Exit(1) + } + fmt.Printf("%d commands:\n", len(expr)) + for i, cmd := range expr { + fmt.Printf("%%%d: %s\n", i, cmd) + } +} + +type Command struct { + Args []string + Children []*Command +} + +func (cmd *Command) subString(depth int) string { + var prefix string + for i:=0; i 0 { + s += " {\n" + for _, subcmd := range cmd.Children { + s += subcmd.subString(depth + 1) + } + s += prefix + "}" + } + s += "\n" + return s +} + +func (cmd *Command) String() string { + return cmd.subString(0) +} + +func parseArgs(s *scanner.Scanner) ([]string, rune, error) { + var args []string + tok := s.Scan() + for tok != scanner.EOF { + text := s.TokenText() + //fmt.Printf("--> [%s]\n", text) + if text == "{" || text == "}" || text == "\n" || text == "\r" || text == ";" { + return args, tok, nil + } + args = append(args, text) + tok = s.Scan() + } + return args, tok, nil +} + +func parse(s *scanner.Scanner, opener string) ([]*Command, error) { + var expr []*Command + for { + args, tok, err := parseArgs(s) + if err != nil { + return nil, err + } + cmd := &Command{Args: args} + if s.TokenText() == "{" { + children, err := parse(s, "{") + if err != nil { + return nil, err + } + cmd.Children = children + } + if len(cmd.Args) > 0 || len(cmd.Children) > 0 { + expr = append(expr, cmd) + } + if tok == scanner.EOF { + break + } + } + return expr, nil +} From 5a03c060210e02d8c780d4ab496e650f859a573c Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 21 Mar 2014 17:31:07 -0700 Subject: [PATCH 009/347] pkg/dockerscript: a simple shell-like syntax to express docker operations Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 9b382f77e4..38274a504c 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -3,7 +3,7 @@ package main import ( "fmt" "os" - "text/scanner" + scanner "github.com/dotcloud/docker/pkg/dockerscript" "strings" ) From a6e5750448d74a042ba74f7e0a6dbf815f995677 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 21 Mar 2014 18:11:24 -0700 Subject: [PATCH 010/347] beam/examples/beamsh: correctly parse nested commands Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 38274a504c..77678d285a 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -15,7 +15,7 @@ func main() { s.Mode = scanner.ScanStrings | scanner.ScanRawStrings | scanner.ScanIdents expr, err := parse(s, "") if err != nil { - fmt.Fprintf(os.Stderr, "%v\n", err) + fmt.Fprintf(os.Stderr, "line %d:%d: %v\n", s.Pos().Line, s.Pos().Column, err) os.Exit(1) } fmt.Printf("%d commands:\n", len(expr)) @@ -51,9 +51,18 @@ func (cmd *Command) String() string { } func parseArgs(s *scanner.Scanner) ([]string, rune, error) { + var parseError error + // FIXME: we overwrite previously set error + s.Error = func(s *scanner.Scanner, msg string) { + parseError = fmt.Errorf(msg) + // parseError = fmt.Errorf("line %d:%d: %s\n", s.Pos().Line, s.Pos().Column, msg) + } var args []string tok := s.Scan() for tok != scanner.EOF { + if parseError != nil { + return args, tok, parseError + } text := s.TokenText() //fmt.Printf("--> [%s]\n", text) if text == "{" || text == "}" || text == "\n" || text == "\r" || text == ";" { @@ -65,25 +74,36 @@ func parseArgs(s *scanner.Scanner) ([]string, rune, error) { return args, tok, nil } -func parse(s *scanner.Scanner, opener string) ([]*Command, error) { - var expr []*Command +func parse(s *scanner.Scanner, opener string) (expr []*Command, err error) { + defer func() { + fmt.Printf("parse() returned %d commands:\n", len(expr)) + for _, c := range expr { + fmt.Printf("\t----> %s\n", c) + } + }() for { args, tok, err := parseArgs(s) if err != nil { return nil, err } cmd := &Command{Args: args} - if s.TokenText() == "{" { + fmt.Printf("---> args=%v finished by %s\n", args, s.TokenText()) + afterArgs := s.TokenText() + if afterArgs == "{" { + fmt.Printf("---> therefore calling parse() of sub-expression\n") children, err := parse(s, "{") + fmt.Printf("---> parse() of sub-epxression returned %d commands (ended by %s) and error=%v\n", children, s.TokenText(), err) if err != nil { return nil, err } cmd.Children = children + } else if afterArgs == "}" && opener != "{" { + return nil, fmt.Errorf("unexpected end of block '}'") } if len(cmd.Args) > 0 || len(cmd.Children) > 0 { expr = append(expr, cmd) } - if tok == scanner.EOF { + if tok == scanner.EOF || afterArgs == "}" { break } } From da05c9ca6e7240586302ca5b7de872fecbe65004 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 21 Mar 2014 18:18:42 -0700 Subject: [PATCH 011/347] pkg/dockerscript: expose a simple, clean API with a single Parse method Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 102 ++------------------------------------ 1 file changed, 5 insertions(+), 97 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 77678d285a..ddce5103cd 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -3,109 +3,17 @@ package main import ( "fmt" "os" - scanner "github.com/dotcloud/docker/pkg/dockerscript" - "strings" + "github.com/dotcloud/docker/pkg/dockerscript" ) func main() { - s := &scanner.Scanner{} - s.Init(os.Stdin) - s.Whitespace = 1<<'\t' | 1<<' ' - //s.Mode = ScanIdents | ScanFloats | ScanChars | ScanStrings | ScanRawStrings | ScanComments | SkipComments - s.Mode = scanner.ScanStrings | scanner.ScanRawStrings | scanner.ScanIdents - expr, err := parse(s, "") + script, err := dockerscript.Parse(os.Stdin) if err != nil { - fmt.Fprintf(os.Stderr, "line %d:%d: %v\n", s.Pos().Line, s.Pos().Column, err) + fmt.Fprintf(os.Stderr, "parse error: %v\n", err) os.Exit(1) } - fmt.Printf("%d commands:\n", len(expr)) - for i, cmd := range expr { + fmt.Printf("%d commands:\n", len(script)) + for i, cmd := range script { fmt.Printf("%%%d: %s\n", i, cmd) } } - -type Command struct { - Args []string - Children []*Command -} - -func (cmd *Command) subString(depth int) string { - var prefix string - for i:=0; i 0 { - s += " {\n" - for _, subcmd := range cmd.Children { - s += subcmd.subString(depth + 1) - } - s += prefix + "}" - } - s += "\n" - return s -} - -func (cmd *Command) String() string { - return cmd.subString(0) -} - -func parseArgs(s *scanner.Scanner) ([]string, rune, error) { - var parseError error - // FIXME: we overwrite previously set error - s.Error = func(s *scanner.Scanner, msg string) { - parseError = fmt.Errorf(msg) - // parseError = fmt.Errorf("line %d:%d: %s\n", s.Pos().Line, s.Pos().Column, msg) - } - var args []string - tok := s.Scan() - for tok != scanner.EOF { - if parseError != nil { - return args, tok, parseError - } - text := s.TokenText() - //fmt.Printf("--> [%s]\n", text) - if text == "{" || text == "}" || text == "\n" || text == "\r" || text == ";" { - return args, tok, nil - } - args = append(args, text) - tok = s.Scan() - } - return args, tok, nil -} - -func parse(s *scanner.Scanner, opener string) (expr []*Command, err error) { - defer func() { - fmt.Printf("parse() returned %d commands:\n", len(expr)) - for _, c := range expr { - fmt.Printf("\t----> %s\n", c) - } - }() - for { - args, tok, err := parseArgs(s) - if err != nil { - return nil, err - } - cmd := &Command{Args: args} - fmt.Printf("---> args=%v finished by %s\n", args, s.TokenText()) - afterArgs := s.TokenText() - if afterArgs == "{" { - fmt.Printf("---> therefore calling parse() of sub-expression\n") - children, err := parse(s, "{") - fmt.Printf("---> parse() of sub-epxression returned %d commands (ended by %s) and error=%v\n", children, s.TokenText(), err) - if err != nil { - return nil, err - } - cmd.Children = children - } else if afterArgs == "}" && opener != "{" { - return nil, fmt.Errorf("unexpected end of block '}'") - } - if len(cmd.Args) > 0 || len(cmd.Children) > 0 { - expr = append(expr, cmd) - } - if tok == scanner.EOF || afterArgs == "}" { - break - } - } - return expr, nil -} From 8a2feadbda68478bce9e6f1ea1ea739fcc685b53 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 21 Mar 2014 19:20:26 -0700 Subject: [PATCH 012/347] Beam: Send: pass the underlying error unchanged to allow io.EOF detection Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix.go b/unix.go index 85b380671f..0cb568a9c3 100644 --- a/unix.go +++ b/unix.go @@ -27,7 +27,7 @@ func Receive(conn *net.UnixConn) ([]byte, *os.File, error) { for { data, fds, err := receiveUnix(conn) if err != nil { - return nil, nil, fmt.Errorf("receive: %v", err) + return nil, nil, err } var f *os.File if len(fds) > 1 { From 651e8b9dc6d226685d92c48b1c55de23bc0024f2 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 21 Mar 2014 19:23:13 -0700 Subject: [PATCH 013/347] beam/examples/beamsh: basic execution of commands, with in-process beam and dummy handlers Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 118 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 113 insertions(+), 5 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index ddce5103cd..7512b36a82 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -1,19 +1,127 @@ package main import ( + "io" "fmt" "os" "github.com/dotcloud/docker/pkg/dockerscript" + "github.com/dotcloud/docker/pkg/beam" + "strings" + "sync" + "net" + "bytes" + "path" ) func main() { script, err := dockerscript.Parse(os.Stdin) if err != nil { - fmt.Fprintf(os.Stderr, "parse error: %v\n", err) - os.Exit(1) + Fatal("parse error: %v\n", err) } - fmt.Printf("%d commands:\n", len(script)) - for i, cmd := range script { - fmt.Printf("%%%d: %s\n", i, cmd) + Logf("%d commands:\n", len(script)) + client, engine, err := beam.USocketPair() + if err != nil { + Fatal(err) + } + go func() { + Serve(engine) + engine.Close() + }() + for _, cmd := range script { + job, err := beam.SendPipe(client, []byte(strings.Join(cmd.Args, " "))) + if err != nil { + Fatal(err) + } + // Synchronize on the job handler + for { + _, _, err := beam.Receive(job) + if err == io.EOF { + break + } else if err != nil { + Fatalf("error reading from job handler: %#v\n", err) + } + } + Logf("[%s] done\n", strings.Join(cmd.Args, " ")) + } + client.Close() +} + +func CmdCat(args []string, f *os.File) { + for _, name := range args[1:] { + f, err := os.Open(name) + if err != nil { + continue + } + io.Copy(os.Stdout, f) + f.Close() } } + +func CmdEcho(args []string, f *os.File) { + fmt.Println(strings.Join(args[1:], " ")) +} + +func CmdDie(args []string, f *os.File) { + Fatal(strings.Join(args[1:], " ")) +} + +func Serve(endpoint *net.UnixConn) error { + var tasks sync.WaitGroup + defer tasks.Wait() + for { + payload, attachment, err := beam.Receive(endpoint) + if err != nil { + return err + } + tasks.Add(1) + go func(payload []byte, attachment *os.File) { + defer tasks.Done() + defer func() { + if attachment != nil { + attachment.Close() + } + }() + // FIXME: send structured message instead of a text script + cmds, err := dockerscript.Parse(bytes.NewReader(payload)) + if err != nil { + Logf("error parsing beam message: %s\n", err) + if attachment != nil { + attachment.Close() + } + return + } + if len(cmds) == 0 { + Logf("ignoring empty command\n", err) + } + // We don't care about multiple commands or children + args := cmds[0].Args + Logf("beam message: %v\n", args) + if args[0] == "die" { + CmdDie(args, attachment) + } else if args[0] == "cat" { + CmdCat(args, attachment) + } else if args[0] == "echo" { + CmdEcho(args, attachment) + } + }(payload, attachment) + } + return nil +} + + +func Logf(msg string, args ...interface{}) (int, error) { + if len(msg) == 0 || msg[len(msg) - 1] != '\n' { + msg = msg + "\n" + } + msg = fmt.Sprintf("[%v] [%v] %s", os.Getpid(), path.Base(os.Args[0]), msg) + return fmt.Printf(msg, args...) +} + +func Fatalf(msg string, args ...interface{}) { + Logf(msg, args) + os.Exit(1) +} + +func Fatal(args ...interface{}) { + Fatalf("%v", args[0]) +} From 3e832a63dff5aee0c169f56236ef3c55e7c0856e Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 21 Mar 2014 20:54:05 -0700 Subject: [PATCH 014/347] beam/examples/beamsh: use 'log' command to pass stdout Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 92 ++++++++++++++++++++++++++++----------- 1 file changed, 66 insertions(+), 26 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 7512b36a82..d83fbe7b78 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -11,6 +11,8 @@ import ( "net" "bytes" "path" + "bufio" + "strconv" ) func main() { @@ -32,20 +34,25 @@ func main() { if err != nil { Fatal(err) } - // Synchronize on the job handler - for { - _, _, err := beam.Receive(job) - if err == io.EOF { - break - } else if err != nil { - Fatalf("error reading from job handler: %#v\n", err) - } - } + Serve(job) Logf("[%s] done\n", strings.Join(cmd.Args, " ")) } client.Close() } +func parseMsgPayload(payload []byte) ([]string, error) { + // FIXME: send structured message instead of a text script + cmds, err := dockerscript.Parse(bytes.NewReader(payload)) + if err != nil { + return nil, err + } + if len(cmds) == 0 { + return nil, fmt.Errorf("empty command") + } + // We don't care about multiple commands or children + return cmds[0].Args, nil +} + func CmdCat(args []string, f *os.File) { for _, name := range args[1:] { f, err := os.Open(name) @@ -58,17 +65,55 @@ func CmdCat(args []string, f *os.File) { } func CmdEcho(args []string, f *os.File) { - fmt.Println(strings.Join(args[1:], " ")) + resp, err := beam.FdConn(int(f.Fd())) + if err != nil { + return + } + r, w, err := os.Pipe() + if err != nil { + return + } + if err := beam.Send(resp, []byte("log stdout"), r); err != nil { + return + } + fmt.Fprintln(w, strings.Join(args[1:], " ")) + fmt.Printf("waiting 5 seconds...\n") + w.Close() } -func CmdDie(args []string, f *os.File) { - Fatal(strings.Join(args[1:], " ")) +func CmdExit(args []string, f *os.File) { + var status int + if len(args) > 1 { + val, err := strconv.ParseInt(args[1], 10, 32) + if err == nil { + status = int(val) + } + } + os.Exit(status) +} + +func CmdLog(args []string, f *os.File) { + name := args[1] + input := bufio.NewScanner(f) + for input.Scan() { + line := input.Text() + if len(line) > 0 { + fmt.Printf("[%s] %s\n", name, line) + } + if err := input.Err(); err != nil { + fmt.Printf("[%s:%s]\n", name, err) + break + } + } } func Serve(endpoint *net.UnixConn) error { + Logf("[Serve]\n") + defer Logf("[Serve] done\n") var tasks sync.WaitGroup defer tasks.Wait() for { + Logf("[Serve] waiting for next message...\n") payload, attachment, err := beam.Receive(endpoint) if err != nil { return err @@ -76,13 +121,11 @@ func Serve(endpoint *net.UnixConn) error { tasks.Add(1) go func(payload []byte, attachment *os.File) { defer tasks.Done() - defer func() { - if attachment != nil { - attachment.Close() - } - }() - // FIXME: send structured message instead of a text script - cmds, err := dockerscript.Parse(bytes.NewReader(payload)) + if attachment != nil { + defer fmt.Printf("closing request attachment %d\n", attachment.Fd()) + attachment.Close() + } + args, err := parseMsgPayload(payload) if err != nil { Logf("error parsing beam message: %s\n", err) if attachment != nil { @@ -90,18 +133,15 @@ func Serve(endpoint *net.UnixConn) error { } return } - if len(cmds) == 0 { - Logf("ignoring empty command\n", err) - } - // We don't care about multiple commands or children - args := cmds[0].Args Logf("beam message: %v\n", args) - if args[0] == "die" { - CmdDie(args, attachment) + if args[0] == "exit" { + CmdExit(args, attachment) } else if args[0] == "cat" { CmdCat(args, attachment) } else if args[0] == "echo" { CmdEcho(args, attachment) + } else if args[0] == "log" { + CmdLog(args, attachment) } }(payload, attachment) } From 1a9938c54b5023b01d07982437fec30ae0c18863 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 23 Mar 2014 20:41:28 -0700 Subject: [PATCH 015/347] Beam: debugging hooks for easy step-by-step inspection of the FD table Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/unix.go b/unix.go index 0cb568a9c3..42358dcd53 100644 --- a/unix.go +++ b/unix.go @@ -5,11 +5,28 @@ import ( "net" "os" "syscall" + "bufio" ) +func debugCheckpoint(msg string, args ...interface{}) { + return + os.Stdout.Sync() + tty,_ := os.OpenFile("/dev/tty", os.O_RDWR, 0700) + fmt.Fprintf(tty, msg, args...) + bufio.NewScanner(tty).Scan() + tty.Close() +} + // Send sends a new message on conn with data and f as payload and // attachment, respectively. func Send(conn *net.UnixConn, data []byte, f *os.File) error { + { + var fd int = -1 + if f != nil { + fd = int(f.Fd()) + } + debugCheckpoint("===DEBUG=== about to send '%s'[%d]. Hit enter to confirm: ", data, fd) + } var fds []int if f != nil { fds = append(fds, int(f.Fd())) @@ -23,7 +40,14 @@ func Send(conn *net.UnixConn, data []byte, f *os.File) error { // If more than 1 file descriptor is sent in the message, they are all // closed except for the first, which is the attachment. // It is legal for a message to have no attachment or an empty payload. -func Receive(conn *net.UnixConn) ([]byte, *os.File, error) { +func Receive(conn *net.UnixConn) (rdata []byte, rf *os.File, rerr error) { + defer func() { + var fd int = -1 + if rf != nil { + fd = int(rf.Fd()) + } + debugCheckpoint("===DEBUG=== Receive() -> '%s'[%d]. Hit enter to continue.\n", rdata, fd) + }() for { data, fds, err := receiveUnix(conn) if err != nil { From 021fd05218403d9a26ecf117ce54cf4bccdddb4f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 23 Mar 2014 20:42:29 -0700 Subject: [PATCH 016/347] Beam: don't close the attachment FD when closing superfluous FDs Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix.go b/unix.go index 42358dcd53..7dfff8a1ac 100644 --- a/unix.go +++ b/unix.go @@ -55,7 +55,7 @@ func Receive(conn *net.UnixConn) (rdata []byte, rf *os.File, rerr error) { } var f *os.File if len(fds) > 1 { - for _, fd := range fds { + for _, fd := range fds[1:] { syscall.Close(fd) } } From c39abcb9320451ef0fea37417d1e0586aed31a3d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 23 Mar 2014 20:45:44 -0700 Subject: [PATCH 017/347] Beam: fix bug in beamsh which 'swapped' FDs because of underlying implementation of net.FileConn Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 2 ++ unix.go | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index d83fbe7b78..6f889149c2 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -67,8 +67,10 @@ func CmdCat(args []string, f *os.File) { func CmdEcho(args []string, f *os.File) { resp, err := beam.FdConn(int(f.Fd())) if err != nil { + Fatal(err) return } + defer resp.Close() r, w, err := os.Pipe() if err != nil { return diff --git a/unix.go b/unix.go index 7dfff8a1ac..14326ac7da 100644 --- a/unix.go +++ b/unix.go @@ -199,13 +199,14 @@ func USocketPair() (*net.UnixConn, *net.UnixConn, error) { // FdConn wraps a file descriptor in a standard *net.UnixConn object, or // returns an error if the file descriptor does not point to a unix socket. +// This creates a duplicate file descriptor. It's the caller's responsibility +// to close both. func FdConn(fd int) (*net.UnixConn, error) { f := os.NewFile(uintptr(fd), fmt.Sprintf("%d", fd)) conn, err := net.FileConn(f) if err != nil { return nil, err } - f.Close() uconn, ok := conn.(*net.UnixConn) if !ok { conn.Close() From 683a084c6f17d2ad3ca1bffea59deb1b5918838b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 23 Mar 2014 20:46:31 -0700 Subject: [PATCH 018/347] beam/examples/beamsh: more bells and whistles for demos * Automatically switch to interactive mode when stdin is a terminal * Basic implementation of "responses" Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 116 ++++++++++++++++++++++++++++++-------- 1 file changed, 91 insertions(+), 25 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 6f889149c2..6f149cecc1 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -6,6 +6,7 @@ import ( "os" "github.com/dotcloud/docker/pkg/dockerscript" "github.com/dotcloud/docker/pkg/beam" + "github.com/dotcloud/docker/pkg/term" "strings" "sync" "net" @@ -16,28 +17,61 @@ import ( ) func main() { - script, err := dockerscript.Parse(os.Stdin) - if err != nil { - Fatal("parse error: %v\n", err) - } - Logf("%d commands:\n", len(script)) + Logf("Initializing engine\n") client, engine, err := beam.USocketPair() if err != nil { Fatal(err) } + defer client.Close() go func() { - Serve(engine) + Serve(engine, builtinsHandler) + Logf("Shutting down engine\n") engine.Close() }() + if term.IsTerminal(0) { + input := bufio.NewScanner(os.Stdin) + for { + os.Stdout.Write([]byte("beamsh> ")) + if !input.Scan() { + break + } + line := input.Text() + if len(line) != 0 { + cmd, err := dockerscript.Parse(strings.NewReader(line)) + if err != nil { + Logf("error: %v\n", err) + continue + } + executeScript(client, cmd) + } + if err := input.Err(); err == io.EOF { + break + } else if err != nil { + Fatal(err) + } + } + } else { + script, err := dockerscript.Parse(os.Stdin) + if err != nil { + Fatal("parse error: %v\n", err) + } + executeScript(client, script) + } +} + +func executeScript(client *net.UnixConn, script []*dockerscript.Command) { + Logf("%d commands:\n", len(script)) for _, cmd := range script { job, err := beam.SendPipe(client, []byte(strings.Join(cmd.Args, " "))) if err != nil { Fatal(err) } - Serve(job) + // TODO: pass a default handler to deal with 'status' + // --> use beam chaining? + Logf("Listening for reply messages\n") + Serve(job, builtinsHandler) Logf("[%s] done\n", strings.Join(cmd.Args, " ")) } - client.Close() } func parseMsgPayload(payload []byte) ([]string, error) { @@ -75,11 +109,11 @@ func CmdEcho(args []string, f *os.File) { if err != nil { return } + Logf("[CmdEcho] stdout pipe() r=%d w=%d\n", r.Fd(), w.Fd()) if err := beam.Send(resp, []byte("log stdout"), r); err != nil { return } fmt.Fprintln(w, strings.Join(args[1:], " ")) - fmt.Printf("waiting 5 seconds...\n") w.Close() } @@ -94,7 +128,29 @@ func CmdExit(args []string, f *os.File) { os.Exit(status) } +// 'status' is a notification of a job's status. +// +func parseEnv(args []string) ([]string, map[string]string) { + var argsOut []string + env := make(map[string]string) + for _, word := range args[1:] { + if strings.Contains(word, "=") { + kv := strings.SplitN(word, "=", 2) + key := kv[0] + var val string + if len(kv) == 2 { + val = kv[1] + } + env[key] = val + } else { + argsOut = append(argsOut, word) + } + } + return argsOut, env +} + func CmdLog(args []string, f *os.File) { + defer Logf("CmdLog done\n") name := args[1] input := bufio.NewScanner(f) for input.Scan() { @@ -109,23 +165,28 @@ func CmdLog(args []string, f *os.File) { } } -func Serve(endpoint *net.UnixConn) error { - Logf("[Serve]\n") - defer Logf("[Serve] done\n") +func Serve(endpoint *net.UnixConn, handler func([]string, *os.File)) error { + Logf("[Serve %#v]\n", handler) + defer Logf("[Serve %#v] done\n", handler) var tasks sync.WaitGroup defer tasks.Wait() for { - Logf("[Serve] waiting for next message...\n") payload, attachment, err := beam.Receive(endpoint) if err != nil { return err } tasks.Add(1) + // Handle new message go func(payload []byte, attachment *os.File) { + Logf("---> Handling '%s' [fd=%d]\n", payload, attachment.Fd()) defer tasks.Done() if attachment != nil { - defer fmt.Printf("closing request attachment %d\n", attachment.Fd()) - attachment.Close() + defer func() { + Logf("---> Closing attachment [fd=%d] for msg '%s'\n", attachment.Fd(), payload) + attachment.Close() + }() + } else { + defer Logf("---> No attachment to close for msg '%s'\n", payload) } args, err := parseMsgPayload(payload) if err != nil { @@ -135,21 +196,26 @@ func Serve(endpoint *net.UnixConn) error { } return } - Logf("beam message: %v\n", args) - if args[0] == "exit" { - CmdExit(args, attachment) - } else if args[0] == "cat" { - CmdCat(args, attachment) - } else if args[0] == "echo" { - CmdEcho(args, attachment) - } else if args[0] == "log" { - CmdLog(args, attachment) - } + Logf("---> calling handler for '%s'\n", args[0]) + handler(args, attachment) + Logf("---> handler returned for '%s'\n", args[0]) }(payload, attachment) } return nil } +func builtinsHandler(args []string, attachment *os.File) { + if args[0] == "exit" { + CmdExit(args, attachment) + } else if args[0] == "cat" { + CmdCat(args, attachment) + } else if args[0] == "echo" { + CmdEcho(args, attachment) + } else if args[0] == "log" { + CmdLog(args, attachment) + } +} + func Logf(msg string, args ...interface{}) (int, error) { if len(msg) == 0 || msg[len(msg) - 1] != '\n' { From 18649cb2beeceb314546f7a56f26b2f98ae06d7b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 23 Mar 2014 23:25:59 -0700 Subject: [PATCH 019/347] beam/data: a simple format for sending structured data over beam Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/data.go | 112 +++++++++++++++++++++++++++++++++++++++++++++ data/data_test.go | 91 ++++++++++++++++++++++++++++++++++++ data/netstring.txt | 92 +++++++++++++++++++++++++++++++++++++ 3 files changed, 295 insertions(+) create mode 100644 data/data.go create mode 100644 data/data_test.go create mode 100644 data/netstring.txt diff --git a/data/data.go b/data/data.go new file mode 100644 index 0000000000..8ebee94a32 --- /dev/null +++ b/data/data.go @@ -0,0 +1,112 @@ +package data + +import ( + "fmt" + "strings" + "strconv" +) + +func Encode(obj map[string][]string) string { + var msg string + msg += encodeHeader(0) + for k, values := range obj { + msg += encodeNamedList(k, values) + } + return msg +} + +func encodeHeader(msgtype int) string { + return fmt.Sprintf("%03.3d;", msgtype) +} + +func encodeString(s string) string { + return fmt.Sprintf("%d:%s,", len(s), s) +} + +func encodeList(l []string) string { + values := make([]string, 0, len(l)) + for _, s := range l { + values = append(values, encodeString(s)) + } + return encodeString(strings.Join(values, "")) +} + +func encodeNamedList(name string, l []string) string { + return encodeString(name) + encodeList(l) +} + +func Decode(msg string) (map[string][]string, error) { + msgtype, skip, err := decodeHeader(msg) + if err != nil { + return nil, err + } + if msgtype != 0 { + // FIXME: use special error type so the caller can easily ignore + return nil, fmt.Errorf("unknown message type: %d", msgtype) + } + msg = msg[skip:] + obj := make(map[string][]string) + for len(msg) > 0 { + k, skip, err := decodeString(msg) + if err != nil { + return nil, err + } + msg = msg[skip:] + values, skip, err := decodeList(msg) + if err != nil { + return nil, err + } + msg = msg[skip:] + obj[k] = values + } + return obj, nil +} + +func decodeList(msg string) ([]string, int, error) { + blob, skip, err := decodeString(msg) + if err != nil { + return nil, 0, err + } + var l []string + for len(blob) > 0 { + v, skipv, err := decodeString(blob) + if err != nil { + return nil, 0, err + } + l = append(l, v) + blob = blob[skipv:] + } + return l, skip, nil +} + +func decodeString(msg string) (string, int, error) { + parts := strings.SplitN(msg, ":", 2) + if len(parts) != 2 { + return "", 0, fmt.Errorf("invalid format: no column") + } + var length int + if l, err := strconv.ParseUint(parts[0], 10, 64); err != nil { + return "", 0, err + } else { + length = int(l) + } + if len(parts[1]) < length + 1 { + return "", 0, fmt.Errorf("message is less than %d bytes", length) + } + payload := parts[1][:length + 1] + if payload[length] != ',' { + return "", 0, fmt.Errorf("message is not comma-terminated") + } + return payload[:length], len(parts[0]) + length + 1, nil +} + +func decodeHeader(msg string) (int, int, error) { + if len(msg) < 4 { + return 0, 0, fmt.Errorf("message too small") + } + msgtype, err := strconv.ParseInt(msg[:3], 10, 32) + if err != nil { + return 0, 0, err + } + return int(msgtype), 4, nil +} diff --git a/data/data_test.go b/data/data_test.go new file mode 100644 index 0000000000..b6573a1f74 --- /dev/null +++ b/data/data_test.go @@ -0,0 +1,91 @@ +package data + +import ( + "testing" +) + +func TestEncodeHelloWorld(t *testing.T) { + input := "hello world!" + output := encodeString(input) + expectedOutput := "12:hello world!," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} + +func TestEncodeEmptyString(t *testing.T) { + input := "" + output := encodeString(input) + expectedOutput := "0:," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} + +func TestEncodeEmptyList(t *testing.T) { + input := []string{} + output := encodeList(input) + expectedOutput := "0:," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} + +func TestEncodeEmptyMap(t *testing.T) { + input := make(map[string][]string) + output := Encode(input) + expectedOutput := "000;" + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} + +func TestEncode1Key1Value(t *testing.T) { + input := make(map[string][]string) + input["hello"] = []string{"world"} + output := Encode(input) + expectedOutput := "000;5:hello,8:5:world,," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} + +func TestEncode1Key2Value(t *testing.T) { + input := make(map[string][]string) + input["hello"] = []string{"beautiful", "world"} + output := Encode(input) + expectedOutput := "000;5:hello,20:9:beautiful,5:world,," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} + +func TestEncodeEmptyValue(t *testing.T) { + input := make(map[string][]string) + input["foo"] = []string{} + output := Encode(input) + expectedOutput := "000;3:foo,0:," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} + +func TestEncodeBinaryKey(t *testing.T) { + input := make(map[string][]string) + input["foo\x00bar\x7f"] = []string{} + output := Encode(input) + expectedOutput := "000;8:foo\x00bar\x7f,0:," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} + +func TestEncodeBinaryValue(t *testing.T) { + input := make(map[string][]string) + input["foo\x00bar\x7f"] = []string{"\x01\x02\x03\x04"} + output := Encode(input) + expectedOutput := "000;8:foo\x00bar\x7f,7:4:\x01\x02\x03\x04,," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} diff --git a/data/netstring.txt b/data/netstring.txt new file mode 100644 index 0000000000..17560929b6 --- /dev/null +++ b/data/netstring.txt @@ -0,0 +1,92 @@ +## +## Netstrings spec copied as-is from http://cr.yp.to/proto/netstrings.txt +## + +Netstrings +D. J. Bernstein, djb@pobox.com +19970201 + + +1. Introduction + + A netstring is a self-delimiting encoding of a string. Netstrings are + very easy to generate and to parse. Any string may be encoded as a + netstring; there are no restrictions on length or on allowed bytes. + Another virtue of a netstring is that it declares the string size up + front. Thus an application can check in advance whether it has enough + space to store the entire string. + + Netstrings may be used as a basic building block for reliable network + protocols. Most high-level protocols, in effect, transmit a sequence + of strings; those strings may be encoded as netstrings and then + concatenated into a sequence of characters, which in turn may be + transmitted over a reliable stream protocol such as TCP. + + Note that netstrings can be used recursively. The result of encoding + a sequence of strings is a single string. A series of those encoded + strings may in turn be encoded into a single string. And so on. + + In this document, a string of 8-bit bytes may be written in two + different forms: as a series of hexadecimal numbers between angle + brackets, or as a sequence of ASCII characters between double quotes. + For example, <68 65 6c 6c 6f 20 77 6f 72 6c 64 21> is a string of + length 12; it is the same as the string "hello world!". + + Although this document restricts attention to strings of 8-bit bytes, + netstrings could be used with any 6-bit-or-larger character set. + + +2. Definition + + Any string of 8-bit bytes may be encoded as [len]":"[string]",". + Here [string] is the string and [len] is a nonempty sequence of ASCII + digits giving the length of [string] in decimal. The ASCII digits are + <30> for 0, <31> for 1, and so on up through <39> for 9. Extra zeros + at the front of [len] are prohibited: [len] begins with <30> exactly + when [string] is empty. + + For example, the string "hello world!" is encoded as <31 32 3a 68 + 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c>, i.e., "12:hello world!,". The + empty string is encoded as "0:,". + + [len]":"[string]"," is called a netstring. [string] is called the + interpretation of the netstring. + + +3. Sample code + + The following C code starts with a buffer buf of length len and + prints it as a netstring. + + if (printf("%lu:",len) < 0) barf(); + if (fwrite(buf,1,len,stdout) < len) barf(); + if (putchar(',') < 0) barf(); + + The following C code reads a netstring and decodes it into a + dynamically allocated buffer buf of length len. + + if (scanf("%9lu",&len) < 1) barf(); /* >999999999 bytes is bad */ + if (getchar() != ':') barf(); + buf = malloc(len + 1); /* malloc(0) is not portable */ + if (!buf) barf(); + if (fread(buf,1,len,stdin) < len) barf(); + if (getchar() != ',') barf(); + + Both of these code fragments assume that the local character set is + ASCII, and that the relevant stdio streams are in binary mode. + + +4. Security considerations + + The famous Finger security hole may be blamed on Finger's use of the + CRLF encoding. In that encoding, each string is simply terminated by + CRLF. This encoding has several problems. Most importantly, it does + not declare the string size in advance. This means that a correct + CRLF parser must be prepared to ask for more and more memory as it is + reading the string. In the case of Finger, a lazy implementor found + this to be too much trouble; instead he simply declared a fixed-size + buffer and used C's gets() function. The rest is history. + + In contrast, as the above sample code shows, it is very easy to + handle netstrings without risking buffer overflow. Thus widespread + use of netstrings may improve network security. From e3b4161639bf6a63b0aa1e6561544b863df3bae4 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 16:21:55 -0700 Subject: [PATCH 020/347] beam/examples/beamsh: hide debug messages in examples/beamsh by default Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 6f149cecc1..9763b08eac 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -17,7 +17,7 @@ import ( ) func main() { - Logf("Initializing engine\n") + Debugf("Initializing engine\n") client, engine, err := beam.USocketPair() if err != nil { Fatal(err) @@ -25,7 +25,7 @@ func main() { defer client.Close() go func() { Serve(engine, builtinsHandler) - Logf("Shutting down engine\n") + Debugf("Shutting down engine\n") engine.Close() }() if term.IsTerminal(0) { @@ -39,7 +39,7 @@ func main() { if len(line) != 0 { cmd, err := dockerscript.Parse(strings.NewReader(line)) if err != nil { - Logf("error: %v\n", err) + fmt.Fprintf(os.Stderr, "error: %v\n", err) continue } executeScript(client, cmd) @@ -60,7 +60,7 @@ func main() { } func executeScript(client *net.UnixConn, script []*dockerscript.Command) { - Logf("%d commands:\n", len(script)) + Debugf("%d commands:\n", len(script)) for _, cmd := range script { job, err := beam.SendPipe(client, []byte(strings.Join(cmd.Args, " "))) if err != nil { @@ -68,9 +68,9 @@ func executeScript(client *net.UnixConn, script []*dockerscript.Command) { } // TODO: pass a default handler to deal with 'status' // --> use beam chaining? - Logf("Listening for reply messages\n") + Debugf("Listening for reply messages\n") Serve(job, builtinsHandler) - Logf("[%s] done\n", strings.Join(cmd.Args, " ")) + Debugf("[%s] done\n", strings.Join(cmd.Args, " ")) } } @@ -109,7 +109,7 @@ func CmdEcho(args []string, f *os.File) { if err != nil { return } - Logf("[CmdEcho] stdout pipe() r=%d w=%d\n", r.Fd(), w.Fd()) + Debugf("[CmdEcho] stdout pipe() r=%d w=%d\n", r.Fd(), w.Fd()) if err := beam.Send(resp, []byte("log stdout"), r); err != nil { return } @@ -150,7 +150,7 @@ func parseEnv(args []string) ([]string, map[string]string) { } func CmdLog(args []string, f *os.File) { - defer Logf("CmdLog done\n") + defer Debugf("CmdLog done\n") name := args[1] input := bufio.NewScanner(f) for input.Scan() { @@ -166,8 +166,8 @@ func CmdLog(args []string, f *os.File) { } func Serve(endpoint *net.UnixConn, handler func([]string, *os.File)) error { - Logf("[Serve %#v]\n", handler) - defer Logf("[Serve %#v] done\n", handler) + Debugf("[Serve %#v]\n", handler) + defer Debugf("[Serve %#v] done\n", handler) var tasks sync.WaitGroup defer tasks.Wait() for { @@ -178,15 +178,15 @@ func Serve(endpoint *net.UnixConn, handler func([]string, *os.File)) error { tasks.Add(1) // Handle new message go func(payload []byte, attachment *os.File) { - Logf("---> Handling '%s' [fd=%d]\n", payload, attachment.Fd()) + Debugf("---> Handling '%s' [fd=%d]\n", payload, attachment.Fd()) defer tasks.Done() if attachment != nil { defer func() { - Logf("---> Closing attachment [fd=%d] for msg '%s'\n", attachment.Fd(), payload) + Debugf("---> Closing attachment [fd=%d] for msg '%s'\n", attachment.Fd(), payload) attachment.Close() }() } else { - defer Logf("---> No attachment to close for msg '%s'\n", payload) + defer Debugf("---> No attachment to close for msg '%s'\n", payload) } args, err := parseMsgPayload(payload) if err != nil { @@ -196,9 +196,9 @@ func Serve(endpoint *net.UnixConn, handler func([]string, *os.File)) error { } return } - Logf("---> calling handler for '%s'\n", args[0]) + Debugf("---> calling handler for '%s'\n", args[0]) handler(args, attachment) - Logf("---> handler returned for '%s'\n", args[0]) + Debugf("---> handler returned for '%s'\n", args[0]) }(payload, attachment) } return nil @@ -225,6 +225,12 @@ func Logf(msg string, args ...interface{}) (int, error) { return fmt.Printf(msg, args...) } +func Debugf(msg string, args ...interface{}) { + if os.Getenv("DEBUG") != "" { + Logf(msg, args...) + } +} + func Fatalf(msg string, args ...interface{}) { Logf(msg, args) os.Exit(1) From 2af549d2a16e5bc01ce736d803e5b102f5036d9f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 16:22:09 -0700 Subject: [PATCH 021/347] Beam: remove leftover debugging messages Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/unix.go b/unix.go index 14326ac7da..7fe3271491 100644 --- a/unix.go +++ b/unix.go @@ -137,7 +137,6 @@ func sendUnix(conn *net.UnixConn, data []byte, fds ...int) error { _, _, err := conn.WriteMsgUnix(data, syscall.UnixRights(fds...), nil) if err == nil { for _, fd := range fds { - fmt.Printf("Closing sent fd %v\n", fd) syscall.Close(fd) } } @@ -181,7 +180,6 @@ func USocketPair() (*net.UnixConn, *net.UnixConn, error) { if err != nil { return nil, nil, err } - fmt.Printf("SocketPair() = %v, %v\n", a.Fd(), b.Fd()) uA, err := FdConn(int(a.Fd())) if err != nil { a.Close() From fee9a210e5095c41e8e7a395a8b0aa58fdc98d3d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 17:24:48 -0700 Subject: [PATCH 022/347] beam/data: convenience Message type for chained manipulation Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/message.go | 47 +++++++++++++++++++++++++++++++++++++++ data/message_test.go | 53 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 data/message.go create mode 100644 data/message_test.go diff --git a/data/message.go b/data/message.go new file mode 100644 index 0000000000..fffa2285fc --- /dev/null +++ b/data/message.go @@ -0,0 +1,47 @@ +package data + +import ( +) + +type Message string + +func Empty() Message { + return Message(Encode(nil)) +} + +func (m Message) Add(k, v string) Message { + data, err := Decode(string(m)) + if err != nil { + return m + } + if values, exists := data[k]; exists { + data[k] = append(values, v) + } else { + data[k] = []string{v} + } + return Message(Encode(data)) +} + +func (m Message) Set(k string, v ...string) Message { + data, err := Decode(string(m)) + if err != nil { + panic(err) + return m + } + data[k] = v + return Message(Encode(data)) +} + +func (m Message) Del(k string) Message { + data, err := Decode(string(m)) + if err != nil { + panic(err) + return m + } + delete(data, k) + return Message(Encode(data)) +} + +func (m Message) String() string { + return string(m) +} diff --git a/data/message_test.go b/data/message_test.go new file mode 100644 index 0000000000..7685769069 --- /dev/null +++ b/data/message_test.go @@ -0,0 +1,53 @@ +package data + +import ( + "testing" +) + +func TestEmptyMessage(t *testing.T) { + m := Empty() + if m.String() != Encode(nil) { + t.Fatalf("%v != %v", m.String(), Encode(nil)) + } +} + +func TestSetMessage(t *testing.T) { + m := Empty().Set("foo", "bar") + output := m.String() + expectedOutput := "000;3:foo,6:3:bar,," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } + decodedOutput, err := Decode(output) + if err != nil { + t.Fatal(err) + } + if len(decodedOutput) != 1 { + t.Fatalf("wrong output data: %#v\n", decodedOutput) + } +} + +func TestSetMessageTwice(t *testing.T) { + m := Empty().Set("foo", "bar").Set("ga", "bu") + output := m.String() + expectedOutput := "000;3:foo,6:3:bar,,2:ga,5:2:bu,," + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } + decodedOutput, err := Decode(output) + if err != nil { + t.Fatal(err) + } + if len(decodedOutput) != 2 { + t.Fatalf("wrong output data: %#v\n", decodedOutput) + } +} + +func TestSetDelMessage(t *testing.T) { + m := Empty().Set("foo", "bar").Del("foo") + output := m.String() + expectedOutput := Encode(nil) + if output != expectedOutput { + t.Fatalf("'%v' != '%v'", output, expectedOutput) + } +} From 4fcace2d34e2daa6ac10a894530ab66fe3d30a24 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 17:25:07 -0700 Subject: [PATCH 023/347] beam/data: fix a bug in encoding of multi-value maps Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/data.go | 4 ++-- data/data_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/data/data.go b/data/data.go index 8ebee94a32..15c302e514 100644 --- a/data/data.go +++ b/data/data.go @@ -91,13 +91,13 @@ func decodeString(msg string) (string, int, error) { length = int(l) } if len(parts[1]) < length + 1 { - return "", 0, fmt.Errorf("message is less than %d bytes", length) + return "", 0, fmt.Errorf("message '%s' is %d bytes, expected at least %d", parts[1], len(parts[1]), length + 1) } payload := parts[1][:length + 1] if payload[length] != ',' { return "", 0, fmt.Errorf("message is not comma-terminated") } - return payload[:length], len(parts[0]) + length + 1, nil + return payload[:length], len(parts[0]) + 1 + length + 1, nil } func decodeHeader(msg string) (int, int, error) { diff --git a/data/data_test.go b/data/data_test.go index b6573a1f74..6beb3650bc 100644 --- a/data/data_test.go +++ b/data/data_test.go @@ -1,6 +1,7 @@ package data import ( + "strings" "testing" ) @@ -89,3 +90,40 @@ func TestEncodeBinaryValue(t *testing.T) { t.Fatalf("'%v' != '%v'", output, expectedOutput) } } + +func TestDecodeString(t *testing.T) { + validEncodedStrings := []struct{ + input string + output string + skip int + }{ + {"3:foo,", "foo", 6}, + {"5:hello,", "hello", 8}, + {"5:hello,5:world,", "hello", 8}, + } + for _, sample := range validEncodedStrings { + output, skip, err := decodeString(sample.input) + if err != nil { + t.Fatalf("error decoding '%v': %v", sample.input, err) + } + if skip != sample.skip { + t.Fatalf("invalid skip: %v!=%v", skip, sample.skip) + } + if output != sample.output { + t.Fatalf("invalid output: %v!=%v", output, sample.output) + } + } +} + +func TestDecode1Key1Value(t *testing.T) { + input := "000;3:foo,6:3:bar,," + output, err := Decode(input) + if err != nil { + t.Fatal(err) + } + if v, exists := output["foo"]; !exists { + t.Fatalf("wrong output: %v\n", output) + } else if len(v) != 1 || strings.Join(v, "") != "bar" { + t.Fatalf("wrong output: %v\n", output) + } +} From 75f20c69a8786aba50b30f9e27beffbb0bfd6ff6 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 17:31:30 -0700 Subject: [PATCH 024/347] beam/data: Message.Bytes() convenience method Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/message.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/message.go b/data/message.go index fffa2285fc..382308f416 100644 --- a/data/message.go +++ b/data/message.go @@ -45,3 +45,7 @@ func (m Message) Del(k string) Message { func (m Message) String() string { return string(m) } + +func (m Message) Bytes() []byte { + return []byte(m) +} From d87bffe5eff3e162b5209b8722f873e8122ff1e8 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 17:32:26 -0700 Subject: [PATCH 025/347] beam/examples/beamsh: use beam/data Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 9763b08eac..44e3027387 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -6,11 +6,11 @@ import ( "os" "github.com/dotcloud/docker/pkg/dockerscript" "github.com/dotcloud/docker/pkg/beam" + "github.com/dotcloud/docker/pkg/beam/data" "github.com/dotcloud/docker/pkg/term" "strings" "sync" "net" - "bytes" "path" "bufio" "strconv" @@ -62,7 +62,7 @@ func main() { func executeScript(client *net.UnixConn, script []*dockerscript.Command) { Debugf("%d commands:\n", len(script)) for _, cmd := range script { - job, err := beam.SendPipe(client, []byte(strings.Join(cmd.Args, " "))) + job, err := beam.SendPipe(client, data.Empty().Set("cmd", cmd.Args...).Bytes()) if err != nil { Fatal(err) } @@ -75,16 +75,18 @@ func executeScript(client *net.UnixConn, script []*dockerscript.Command) { } func parseMsgPayload(payload []byte) ([]string, error) { - // FIXME: send structured message instead of a text script - cmds, err := dockerscript.Parse(bytes.NewReader(payload)) + msg, err := data.Decode(string(payload)) if err != nil { return nil, err } - if len(cmds) == 0 { + var cmd []string + if c, exists := msg["cmd"]; exists { + cmd = c + } + if len(cmd) == 0 { return nil, fmt.Errorf("empty command") } - // We don't care about multiple commands or children - return cmds[0].Args, nil + return cmd, nil } func CmdCat(args []string, f *os.File) { @@ -110,7 +112,7 @@ func CmdEcho(args []string, f *os.File) { return } Debugf("[CmdEcho] stdout pipe() r=%d w=%d\n", r.Fd(), w.Fd()) - if err := beam.Send(resp, []byte("log stdout"), r); err != nil { + if err := beam.Send(resp, data.Empty().Set("cmd", "log", "stdout").Bytes(), r); err != nil { return } fmt.Fprintln(w, strings.Join(args[1:], " ")) From 51f1cfdb9f5e534a13f0421545115c6f881c847b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 18:16:27 -0700 Subject: [PATCH 026/347] beam/data: convenience Message.Get Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/message.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/data/message.go b/data/message.go index 382308f416..b35d880ae1 100644 --- a/data/message.go +++ b/data/message.go @@ -42,6 +42,18 @@ func (m Message) Del(k string) Message { return Message(Encode(data)) } +func (m Message) Get(k string) []string { + data, err := Decode(string(m)) + if err != nil { + return nil + } + v, exists := data[k] + if !exists { + return nil + } + return v +} + func (m Message) String() string { return string(m) } From 3b2dcdf7e45e4577588f5d67d472f506ae738cac Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 18:17:16 -0700 Subject: [PATCH 027/347] beam/examples/beamsh: fix a bug in the log command Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 44e3027387..c8b0d7eb9c 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -153,7 +153,10 @@ func parseEnv(args []string) ([]string, map[string]string) { func CmdLog(args []string, f *os.File) { defer Debugf("CmdLog done\n") - name := args[1] + var name string + if len(args) > 0 { + name = args[1] + } input := bufio.NewScanner(f) for input.Scan() { line := input.Text() From 2d616c123143e493f8fa1fce3513817a17bdd617 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 24 Mar 2014 18:18:00 -0700 Subject: [PATCH 028/347] beam/examples/beamsh: first try at nested execution The "wiring" is broken because engine does not keep a reference for handling introspection calls. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index c8b0d7eb9c..be07fddd30 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -66,6 +66,9 @@ func executeScript(client *net.UnixConn, script []*dockerscript.Command) { if err != nil { Fatal(err) } + // Recursively execute child-commands as commands to the new job + // executeScript blocks until commands are done, so this is depth-first recursion. + executeScript(job, cmd.Children) // TODO: pass a default handler to deal with 'status' // --> use beam chaining? Debugf("Listening for reply messages\n") @@ -151,6 +154,34 @@ func parseEnv(args []string) ([]string, map[string]string) { return argsOut, env } +func CmdTrace(args []string, f *os.File) { + resp, err := beam.FdConn(int(f.Fd())) + if err != nil { + Fatal(err) + return + } + defer resp.Close() + for { + Logf("[trace] waiting for a message\n") + payload, attachment, err := beam.Receive(resp) + if err != nil { + Logf("[trace] error waiting for message\n") + return + } + Logf("[trace] received message!\n") + msg, err := data.Decode(string(payload)) + if err != nil { + fmt.Printf("===> %s\n", payload) + } else { + fmt.Printf("===> %v\n", msg) + } + if err := beam.Send(resp, payload, attachment); err != nil { + return + } + } +} + + func CmdLog(args []string, f *os.File) { defer Debugf("CmdLog done\n") var name string @@ -218,6 +249,8 @@ func builtinsHandler(args []string, attachment *os.File) { CmdEcho(args, attachment) } else if args[0] == "log" { CmdLog(args, attachment) + } else if args[0] == "trace" { + CmdTrace(args, attachment) } } From c5752cb1a0d35646c43a507dbf18db61224d65c1 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 10:00:23 -0700 Subject: [PATCH 029/347] beam: more hooks for interactive debugging This inserts low-level hooks for interactive step-by-step debugging. Hooks are triggered by setting the *TEST* environment variable. This is particularly useful for tracking down file descriptor leaks, double-closing, or other issues which are difficult to debug with the usual toolbox. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/unix.go b/unix.go index 7fe3271491..79057ba9d6 100644 --- a/unix.go +++ b/unix.go @@ -9,7 +9,9 @@ import ( ) func debugCheckpoint(msg string, args ...interface{}) { - return + if os.Getenv("DEBUG") == "" { + return + } os.Stdout.Sync() tty,_ := os.OpenFile("/dev/tty", os.O_RDWR, 0700) fmt.Fprintf(tty, msg, args...) @@ -103,6 +105,7 @@ func Receive(conn *net.UnixConn) (rdata []byte, rf *os.File, rerr error) { // without complicating application code. // func SendPipe(conn *net.UnixConn, data []byte) (endpoint *net.UnixConn, err error) { + debugCheckpoint("===DEBUG=== SendPipe('%s'). Hit enter to confirm: ", data) local, remote, err := SocketPair() if err != nil { return nil, err @@ -167,7 +170,20 @@ func socketpair() ([2]int, error) { // not bound to the underlying filesystem. // Messages sent on one end are received on the other, and vice-versa. // It is the caller's responsibility to close both ends. -func SocketPair() (*os.File, *os.File, error) { +func SocketPair() (a *os.File, b *os.File, err error) { + defer func() { + var ( + fdA int = -1 + fdB int = -1 + ) + if a != nil { + fdA = int(a.Fd()) + } + if b != nil { + fdB = int(b.Fd()) + } + debugCheckpoint("===DEBUG=== SocketPair() = [%d-%d]. Hit enter to confirm: ", fdA, fdB) + }() pair, err := socketpair() if err != nil { return nil, nil, err @@ -176,6 +192,8 @@ func SocketPair() (*os.File, *os.File, error) { } func USocketPair() (*net.UnixConn, *net.UnixConn, error) { + debugCheckpoint("===DEBUG=== USocketPair(). Hit enter to confirm: ") + defer debugCheckpoint ("===DEBUG=== USocketPair() returned. Hit enter to confirm ") a, b, err := SocketPair() if err != nil { return nil, nil, err @@ -199,7 +217,10 @@ func USocketPair() (*net.UnixConn, *net.UnixConn, error) { // returns an error if the file descriptor does not point to a unix socket. // This creates a duplicate file descriptor. It's the caller's responsibility // to close both. -func FdConn(fd int) (*net.UnixConn, error) { +func FdConn(fd int) (n*net.UnixConn, err error) { + { + debugCheckpoint("===DEBUG=== FdConn([%d]) = (unknown fd). Hit enter to confirm: ", fd) + } f := os.NewFile(uintptr(fd), fmt.Sprintf("%d", fd)) conn, err := net.FileConn(f) if err != nil { From fc183ccdd96531b279662db28ecc0cae38884892 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 10:00:51 -0700 Subject: [PATCH 030/347] beam: fix FD leaks in SendPipe This fixes file descriptor leaks in the SendPipe function. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/unix.go b/unix.go index 79057ba9d6..12cfbcbe9f 100644 --- a/unix.go +++ b/unix.go @@ -120,6 +120,7 @@ func SendPipe(conn *net.UnixConn, data []byte) (endpoint *net.UnixConn, err erro if err != nil { return nil, err } + local.Close() if err := Send(conn, data, remote); err != nil { return nil, err } @@ -198,16 +199,15 @@ func USocketPair() (*net.UnixConn, *net.UnixConn, error) { if err != nil { return nil, nil, err } + defer a.Close() + defer b.Close() uA, err := FdConn(int(a.Fd())) if err != nil { - a.Close() - b.Close() return nil, nil, err } uB, err := FdConn(int(b.Fd())) if err != nil { - a.Close() - b.Close() + uA.Close() return nil, nil, err } return uA, uB, nil From 8ca00623273e4996e80e0cd3aba891c46b72c047 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 10:14:27 -0700 Subject: [PATCH 031/347] beam/examples/beamsh: catch introspection calls from jobs for proper nesting Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 96 +++++++++++++++++++++++++++++++++------ 1 file changed, 82 insertions(+), 14 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index be07fddd30..9b7fa93d9f 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -201,29 +201,37 @@ func CmdLog(args []string, f *os.File) { } } +type Msg struct { + payload []byte + attachment *os.File +} + func Serve(endpoint *net.UnixConn, handler func([]string, *os.File)) error { Debugf("[Serve %#v]\n", handler) defer Debugf("[Serve %#v] done\n", handler) var tasks sync.WaitGroup defer tasks.Wait() - for { - payload, attachment, err := beam.Receive(endpoint) - if err != nil { - return err + in := make(chan *Msg) + go func() { + for { + Debugf("[Serve] waiting for next message on endpoint...\n") + payload, attachment, err := beam.Receive(endpoint) + if err != nil { + break + } + in<-&Msg{payload, attachment} } + Debugf("[Serve] endpoint closed. Waiting for tasks to complete\n") + tasks.Wait() + Debugf("[Serve] endpoint closed AND tasks complete\n") + close(in) + }() + for msg := range in { tasks.Add(1) // Handle new message go func(payload []byte, attachment *os.File) { Debugf("---> Handling '%s' [fd=%d]\n", payload, attachment.Fd()) defer tasks.Done() - if attachment != nil { - defer func() { - Debugf("---> Closing attachment [fd=%d] for msg '%s'\n", attachment.Fd(), payload) - attachment.Close() - }() - } else { - defer Debugf("---> No attachment to close for msg '%s'\n", payload) - } args, err := parseMsgPayload(payload) if err != nil { Logf("error parsing beam message: %s\n", err) @@ -233,10 +241,70 @@ func Serve(endpoint *net.UnixConn, handler func([]string, *os.File)) error { return } Debugf("---> calling handler for '%s'\n", args[0]) - handler(args, attachment) + handlerAttachment := attachment + var iotasks sync.WaitGroup + if attachment != nil { + if caller, err := beam.FdConn(int(attachment.Fd())); err == nil { + Debugf("[Serve] message '%s' has a valid beam endpoint as attachment. Setting up indirection\n", payload) + defer caller.Close() + jobpub, jobpriv, err := beam.USocketPair() + if err != nil { + return + } + defer jobpub.Close() + if f, err := jobpriv.File(); err != nil { + jobpriv.Close() + return + } else { + handlerAttachment = f + defer attachment.Close() + } + jobpriv.Close() + // Read messages from the job and re-insert them for handling + iotasks.Add(1) + go func(job *net.UnixConn) { + defer iotasks.Done() + for { + payload, attachment, err := beam.Receive(job) + if err != nil { + return + } + var fd int = -1 + if attachment != nil { + fd = int(attachment.Fd()) + } + Debugf("[Serve] received introspection message '%s'[%d]\n", payload, fd) + // Send messages back in for introspection + // Note that we don't scope introspection: jobs have full access to the + // context in which they were called. + in <-&Msg{payload, attachment} + } + }(jobpub) + // Read messages from the caller to the job + go func(caller *net.UnixConn, job *net.UnixConn) { + for { + payload, f, err := beam.Receive(caller) + if err != nil { + return + } + if err := beam.Send(job, payload, f); err != nil { + return + } + } + }(caller, jobpub) + } + } + handler(args, handlerAttachment) Debugf("---> handler returned for '%s'\n", args[0]) - }(payload, attachment) + if handlerAttachment != nil { + handlerAttachment.Close() + } + Debugf("---> waiting for iotasks to complete for '%s'\n", args[0]) + iotasks.Wait() + Debugf("---> iotasks complete for '%s'\n", args[0]) + }(msg.payload, msg.attachment) } + Debugf("[Serve] main serve loop completed\n") return nil } From e15ca384c3e36f3573a55744e01be1dd52b83721 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 10:14:52 -0700 Subject: [PATCH 032/347] beam/examples/beamsh: simple 'exec' command Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 9b7fa93d9f..dc3608f4b2 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -4,6 +4,7 @@ import ( "io" "fmt" "os" + "os/exec" "github.com/dotcloud/docker/pkg/dockerscript" "github.com/dotcloud/docker/pkg/beam" "github.com/dotcloud/docker/pkg/beam/data" @@ -182,6 +183,36 @@ func CmdTrace(args []string, f *os.File) { } +func CmdExec(args []string, f *os.File) { + resp, err := beam.FdConn(int(f.Fd())) + if err != nil { + Fatal(err) + return + } + defer resp.Close() + cmd := exec.Command(args[1], args[2:]...) + Logf("EXEC %s %s\n", cmd.Path, cmd.Args) + stdoutR, stdoutW, err := os.Pipe() + if err != nil { + Fatal(err) + return + } + cmd.Stdout = stdoutW + stderrR, stderrW, err := os.Pipe() + if err != nil { + Fatal(err) + return + } + cmd.Stderr = stderrW + if err := beam.Send(resp, data.Empty().Set("cmd", "log", "stdout").Bytes(), stdoutR); err != nil { + Fatal(err) + } + if err := beam.Send(resp, data.Empty().Set("cmd", "log", "stderr").Bytes(), stderrR); err != nil { + Fatal(err) + } + cmd.Run() +} + func CmdLog(args []string, f *os.File) { defer Debugf("CmdLog done\n") var name string @@ -319,6 +350,8 @@ func builtinsHandler(args []string, attachment *os.File) { CmdLog(args, attachment) } else if args[0] == "trace" { CmdTrace(args, attachment) + } else if args[0] == "exec" { + CmdExec(args, attachment) } } From 9a55cd843c949363865c25126f41f572e27d1047 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 14:10:30 -0700 Subject: [PATCH 033/347] beam/examples/beamsh: better debugging messages Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index dc3608f4b2..207bc3e3eb 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -18,7 +18,6 @@ import ( ) func main() { - Debugf("Initializing engine\n") client, engine, err := beam.USocketPair() if err != nil { Fatal(err) @@ -72,9 +71,9 @@ func executeScript(client *net.UnixConn, script []*dockerscript.Command) { executeScript(job, cmd.Children) // TODO: pass a default handler to deal with 'status' // --> use beam chaining? - Debugf("Listening for reply messages\n") + Debugf("[%s] Listening for reply messages\n", strings.Join(cmd.Args, " ")) Serve(job, builtinsHandler) - Debugf("[%s] done\n", strings.Join(cmd.Args, " ")) + Debugf("[%s] done listening for reply messages\n", strings.Join(cmd.Args, " ")) } } @@ -163,13 +162,11 @@ func CmdTrace(args []string, f *os.File) { } defer resp.Close() for { - Logf("[trace] waiting for a message\n") payload, attachment, err := beam.Receive(resp) if err != nil { Logf("[trace] error waiting for message\n") return } - Logf("[trace] received message!\n") msg, err := data.Decode(string(payload)) if err != nil { fmt.Printf("===> %s\n", payload) From 2f5d969e92fa3b589d57ab612472994429cd02bf Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 18:11:06 -0700 Subject: [PATCH 034/347] beam/examples/beamsh: basic implementation of the pipeline design, with static handlers for now. In the pipeline design, several beam commands can be run concurrently, with their respective inputs and outputs connected in such a way that beam messages flow from the first to last. This is similar to the way a unix shell executes commands in a pipeline: instead of STDIN and STDOUT, each beam command has a "BEAMIN" and "BEAMOUT". Since beam allows for richer communication than plain byte streams, beam pipelines can express more powerful computation, while retaining the fundamental elegance and ease of use of unix-style composition. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 431 +++++++++++++++----------------------- 1 file changed, 168 insertions(+), 263 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 207bc3e3eb..d4f9ac8776 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -4,7 +4,6 @@ import ( "io" "fmt" "os" - "os/exec" "github.com/dotcloud/docker/pkg/dockerscript" "github.com/dotcloud/docker/pkg/beam" "github.com/dotcloud/docker/pkg/beam/data" @@ -14,20 +13,16 @@ import ( "net" "path" "bufio" - "strconv" + "crypto/rand" + "encoding/hex" ) func main() { - client, engine, err := beam.USocketPair() + devnull, err := Devnull() if err != nil { Fatal(err) } - defer client.Close() - go func() { - Serve(engine, builtinsHandler) - Debugf("Shutting down engine\n") - engine.Close() - }() + defer devnull.Close() if term.IsTerminal(0) { input := bufio.NewScanner(os.Stdin) for { @@ -42,7 +37,7 @@ func main() { fmt.Fprintf(os.Stderr, "error: %v\n", err) continue } - executeScript(client, cmd) + executeScript(devnull, cmd) } if err := input.Err(); err == io.EOF { break @@ -55,84 +50,188 @@ func main() { if err != nil { Fatal("parse error: %v\n", err) } - executeScript(client, script) + executeScript(devnull, script) } } -func executeScript(client *net.UnixConn, script []*dockerscript.Command) { - Debugf("%d commands:\n", len(script)) - for _, cmd := range script { - job, err := beam.SendPipe(client, data.Empty().Set("cmd", cmd.Args...).Bytes()) - if err != nil { - Fatal(err) +func beamCopy(dst *net.UnixConn, src *net.UnixConn) error { + for { + payload, attachment, err := beam.Receive(src) + if err == io.EOF { + return nil + } else if err != nil { + return err + } + if err := beam.Send(dst, payload, attachment); err != nil { + if attachment != nil { + attachment.Close() + } + return err } - // Recursively execute child-commands as commands to the new job - // executeScript blocks until commands are done, so this is depth-first recursion. - executeScript(job, cmd.Children) - // TODO: pass a default handler to deal with 'status' - // --> use beam chaining? - Debugf("[%s] Listening for reply messages\n", strings.Join(cmd.Args, " ")) - Serve(job, builtinsHandler) - Debugf("[%s] done listening for reply messages\n", strings.Join(cmd.Args, " ")) } + panic("impossibru!") + return nil } -func parseMsgPayload(payload []byte) ([]string, error) { - msg, err := data.Decode(string(payload)) +type Handler func([]string, *net.UnixConn, *net.UnixConn) + +func Devnull() (*net.UnixConn, error) { + priv, pub, err := beam.USocketPair() if err != nil { return nil, err } - var cmd []string - if c, exists := msg["cmd"]; exists { - cmd = c - } - if len(cmd) == 0 { - return nil, fmt.Errorf("empty command") - } - return cmd, nil -} - -func CmdCat(args []string, f *os.File) { - for _, name := range args[1:] { - f, err := os.Open(name) - if err != nil { - continue + go func() { + defer priv.Close() + for { + payload, attachment, err := beam.Receive(priv) + if err != nil { + return + } + fmt.Fprintf(os.Stderr, "[devnull] discarding '%s'\n", payload) + if attachment != nil { + attachment.Close() + } } - io.Copy(os.Stdout, f) - f.Close() - } + }() + return pub, nil } -func CmdEcho(args []string, f *os.File) { - resp, err := beam.FdConn(int(f.Fd())) - if err != nil { - Fatal(err) - return +func scriptString(script []*dockerscript.Command) string { + lines := make([]string, 0, len(script)) + for _, cmd := range script { + line := strings.Join(cmd.Args, " ") + if len(cmd.Children) > 0 { + line += fmt.Sprintf(" { %s }", scriptString(cmd.Children)) + } else { + line += " {}" + } + lines = append(lines, line) } - defer resp.Close() - r, w, err := os.Pipe() - if err != nil { - return - } - Debugf("[CmdEcho] stdout pipe() r=%d w=%d\n", r.Fd(), w.Fd()) - if err := beam.Send(resp, data.Empty().Set("cmd", "log", "stdout").Bytes(), r); err != nil { - return - } - fmt.Fprintln(w, strings.Join(args[1:], " ")) - w.Close() + return fmt.Sprintf("'%s'", strings.Join(lines, "; ")) } -func CmdExit(args []string, f *os.File) { - var status int - if len(args) > 1 { - val, err := strconv.ParseInt(args[1], 10, 32) - if err == nil { - status = int(val) +func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { + Debugf("executeScript(%s)\n", scriptString(script)) + defer Debugf("executeScript(%s) DONE\n", scriptString(script)) + for _, cmd := range script { + if err := executeCommand(client, cmd); err != nil { + return err } } - os.Exit(status) + return nil } +// 1) Find a handler for the command (if no handler, fail) +// 2) Attach new in & out pair to the handler +// 3) [in the background] Copy handler output to our own output +// 4) [in the background] Run the handler +// 5) Recursively executeScript() all children commands and wait for them to complete +// 6) Wait for handler to return and (shortly afterwards) output copy to complete +// 7) +func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error { + Debugf("executeCommand(%s)\n", strings.Join(cmd.Args, " ")) + defer Debugf("executeCommand(%s) DONE\n", strings.Join(cmd.Args, " ")) + handler := GetHandler(cmd.Args[0]) + if handler == nil { + return fmt.Errorf("no such command: %s", cmd.Args[0]) + } + inPub, inPriv, err := beam.USocketPair() + if err != nil { + return err + } + // Don't close inPub here. We close it to signify the end of input once + // all children are completed (guaranteeing that no more input will be sent + // by children). + // Otherwise we get a deadlock. + defer inPriv.Close() + outPub, outPriv, err := beam.USocketPair() + if err != nil { + return err + } + defer outPub.Close() + // don't close outPriv here. It must be closed after the handler is called, + // but before the copy tasks associated with it completes. + // Otherwise we get a deadlock. + var tasks sync.WaitGroup + tasks.Add(2) + go func() { + handler(cmd.Args, inPriv, outPriv) + // FIXME: do we need to outPriv.sync before closing it? + Debugf("[%s] handler returned, closing output\n", strings.Join(cmd.Args, " ")) + outPriv.Close() + tasks.Done() + }() + go func() { + Debugf("[%s] copy start...\n", strings.Join(cmd.Args, " ")) + beamCopy(client, outPub) + Debugf("[%s] copy done\n", strings.Join(cmd.Args, " ")) + tasks.Done() + }() + // depth-first execution of children commands + // executeScript() blocks until all commands are completed + executeScript(inPub, cmd.Children) + inPub.Close() + Debugf("[%s] waiting for handler and output copy to complete...\n", strings.Join(cmd.Args, " ")) + tasks.Wait() + Debugf("[%s] handler and output copy complete!\n", strings.Join(cmd.Args, " ")) + return nil +} + +func randomId() string { + id := make([]byte, 4) + io.ReadFull(rand.Reader, id) + return hex.EncodeToString(id) +} + +func GetHandler(name string) Handler { + if name == "trace" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + for { + p, a, err := beam.Receive(in) + if err != nil { + return + } + fd := -1 + if a != nil { + fd = int(a.Fd()) + } + fmt.Printf("===> [TRACE] %s [%d]\n", p, fd) + beam.Send(out, p, a) + } + } + } else if name == "emit" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + beam.Send(out, data.Empty().Set("foo", args[1:]...).Bytes(), nil) + } + } else if name == "print" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + for { + _, a, err := beam.Receive(in) + if err != nil { + return + } + if a != nil { + io.Copy(os.Stdout, a) + } + } + } + } else if name == "openfile" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + for _, name := range args { + f, err := os.Open(name) + if err != nil { + continue + } + if err := beam.Send(out, data.Empty().Set("path", name).Set("type", "file").Bytes(), f); err != nil { + f.Close() + } + } + } + } + return nil +} + + // 'status' is a notification of a job's status. // func parseEnv(args []string) ([]string, map[string]string) { @@ -154,205 +253,11 @@ func parseEnv(args []string) ([]string, map[string]string) { return argsOut, env } -func CmdTrace(args []string, f *os.File) { - resp, err := beam.FdConn(int(f.Fd())) - if err != nil { - Fatal(err) - return - } - defer resp.Close() - for { - payload, attachment, err := beam.Receive(resp) - if err != nil { - Logf("[trace] error waiting for message\n") - return - } - msg, err := data.Decode(string(payload)) - if err != nil { - fmt.Printf("===> %s\n", payload) - } else { - fmt.Printf("===> %v\n", msg) - } - if err := beam.Send(resp, payload, attachment); err != nil { - return - } - } -} - - -func CmdExec(args []string, f *os.File) { - resp, err := beam.FdConn(int(f.Fd())) - if err != nil { - Fatal(err) - return - } - defer resp.Close() - cmd := exec.Command(args[1], args[2:]...) - Logf("EXEC %s %s\n", cmd.Path, cmd.Args) - stdoutR, stdoutW, err := os.Pipe() - if err != nil { - Fatal(err) - return - } - cmd.Stdout = stdoutW - stderrR, stderrW, err := os.Pipe() - if err != nil { - Fatal(err) - return - } - cmd.Stderr = stderrW - if err := beam.Send(resp, data.Empty().Set("cmd", "log", "stdout").Bytes(), stdoutR); err != nil { - Fatal(err) - } - if err := beam.Send(resp, data.Empty().Set("cmd", "log", "stderr").Bytes(), stderrR); err != nil { - Fatal(err) - } - cmd.Run() -} - -func CmdLog(args []string, f *os.File) { - defer Debugf("CmdLog done\n") - var name string - if len(args) > 0 { - name = args[1] - } - input := bufio.NewScanner(f) - for input.Scan() { - line := input.Text() - if len(line) > 0 { - fmt.Printf("[%s] %s\n", name, line) - } - if err := input.Err(); err != nil { - fmt.Printf("[%s:%s]\n", name, err) - break - } - } -} - type Msg struct { payload []byte attachment *os.File } -func Serve(endpoint *net.UnixConn, handler func([]string, *os.File)) error { - Debugf("[Serve %#v]\n", handler) - defer Debugf("[Serve %#v] done\n", handler) - var tasks sync.WaitGroup - defer tasks.Wait() - in := make(chan *Msg) - go func() { - for { - Debugf("[Serve] waiting for next message on endpoint...\n") - payload, attachment, err := beam.Receive(endpoint) - if err != nil { - break - } - in<-&Msg{payload, attachment} - } - Debugf("[Serve] endpoint closed. Waiting for tasks to complete\n") - tasks.Wait() - Debugf("[Serve] endpoint closed AND tasks complete\n") - close(in) - }() - for msg := range in { - tasks.Add(1) - // Handle new message - go func(payload []byte, attachment *os.File) { - Debugf("---> Handling '%s' [fd=%d]\n", payload, attachment.Fd()) - defer tasks.Done() - args, err := parseMsgPayload(payload) - if err != nil { - Logf("error parsing beam message: %s\n", err) - if attachment != nil { - attachment.Close() - } - return - } - Debugf("---> calling handler for '%s'\n", args[0]) - handlerAttachment := attachment - var iotasks sync.WaitGroup - if attachment != nil { - if caller, err := beam.FdConn(int(attachment.Fd())); err == nil { - Debugf("[Serve] message '%s' has a valid beam endpoint as attachment. Setting up indirection\n", payload) - defer caller.Close() - jobpub, jobpriv, err := beam.USocketPair() - if err != nil { - return - } - defer jobpub.Close() - if f, err := jobpriv.File(); err != nil { - jobpriv.Close() - return - } else { - handlerAttachment = f - defer attachment.Close() - } - jobpriv.Close() - // Read messages from the job and re-insert them for handling - iotasks.Add(1) - go func(job *net.UnixConn) { - defer iotasks.Done() - for { - payload, attachment, err := beam.Receive(job) - if err != nil { - return - } - var fd int = -1 - if attachment != nil { - fd = int(attachment.Fd()) - } - Debugf("[Serve] received introspection message '%s'[%d]\n", payload, fd) - // Send messages back in for introspection - // Note that we don't scope introspection: jobs have full access to the - // context in which they were called. - in <-&Msg{payload, attachment} - } - }(jobpub) - // Read messages from the caller to the job - go func(caller *net.UnixConn, job *net.UnixConn) { - for { - payload, f, err := beam.Receive(caller) - if err != nil { - return - } - if err := beam.Send(job, payload, f); err != nil { - return - } - } - }(caller, jobpub) - } - } - handler(args, handlerAttachment) - Debugf("---> handler returned for '%s'\n", args[0]) - if handlerAttachment != nil { - handlerAttachment.Close() - } - Debugf("---> waiting for iotasks to complete for '%s'\n", args[0]) - iotasks.Wait() - Debugf("---> iotasks complete for '%s'\n", args[0]) - }(msg.payload, msg.attachment) - } - Debugf("[Serve] main serve loop completed\n") - return nil -} - -func builtinsHandler(args []string, attachment *os.File) { - if args[0] == "exit" { - CmdExit(args, attachment) - } else if args[0] == "cat" { - CmdCat(args, attachment) - } else if args[0] == "echo" { - CmdEcho(args, attachment) - } else if args[0] == "log" { - CmdLog(args, attachment) - } else if args[0] == "trace" { - CmdTrace(args, attachment) - } else if args[0] == "exec" { - CmdExec(args, attachment) - } -} - - func Logf(msg string, args ...interface{}) (int, error) { if len(msg) == 0 || msg[len(msg) - 1] != '\n' { msg = msg + "\n" @@ -362,7 +267,7 @@ func Logf(msg string, args ...interface{}) (int, error) { } func Debugf(msg string, args ...interface{}) { - if os.Getenv("DEBUG") != "" { + if os.Getenv("BEAMDEBUG") != "" { Logf(msg, args...) } } From 24abf7d2c3b9fd1c5e020ab74d608a070578a825 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 18:19:20 -0700 Subject: [PATCH 035/347] beam/data: convenience Message.Pretty() function Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/message.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/data/message.go b/data/message.go index b35d880ae1..e7112c7d2b 100644 --- a/data/message.go +++ b/data/message.go @@ -1,6 +1,8 @@ package data import ( + "fmt" + "strings" ) type Message string @@ -54,6 +56,18 @@ func (m Message) Get(k string) []string { return v } +func (m Message) Pretty() string { + data, err := Decode(string(m)) + if err != nil { + return "" + } + entries := make([]string, 0, len(data)) + for k, values := range data { + entries = append(entries, fmt.Sprintf("%s=%s", k, strings.Join(values, ","))) + } + return strings.Join(entries, "\n") +} + func (m Message) String() string { return string(m) } From 00b272c252a40fd61ba22a21df1a1866fcceb8b8 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 18:19:35 -0700 Subject: [PATCH 036/347] beam/examples/beamsh: prettier 'trace' command Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index d4f9ac8776..789614709b 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -191,11 +191,16 @@ func GetHandler(name string) Handler { if err != nil { return } - fd := -1 - if a != nil { - fd = int(a.Fd()) + var msg string + if pretty := data.Message(string(p)).Pretty(); pretty != "" { + msg = pretty + } else { + msg = string(p) } - fmt.Printf("===> [TRACE] %s [%d]\n", p, fd) + if a != nil { + msg = fmt.Sprintf("%s [%d]", msg, a.Fd()) + } + fmt.Printf("===> %s\n", msg) beam.Send(out, p, a) } } From b9e76ae8dbd22a13d89efa4a578be93dfae410d4 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 18:36:11 -0700 Subject: [PATCH 037/347] beam/data: prettier Message.Pretty() Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/message.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/message.go b/data/message.go index e7112c7d2b..e6536f83e0 100644 --- a/data/message.go +++ b/data/message.go @@ -65,7 +65,7 @@ func (m Message) Pretty() string { for k, values := range data { entries = append(entries, fmt.Sprintf("%s=%s", k, strings.Join(values, ","))) } - return strings.Join(entries, "\n") + return strings.Join(entries, " ") } func (m Message) String() string { From 3c0d7272cb3b62970c800f780aa87f18b8d8eed0 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 18:36:22 -0700 Subject: [PATCH 038/347] beam/examples/beamsh: prettier devnull Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 789614709b..ee271eefa0 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -87,7 +87,7 @@ func Devnull() (*net.UnixConn, error) { if err != nil { return } - fmt.Fprintf(os.Stderr, "[devnull] discarding '%s'\n", payload) + fmt.Fprintf(os.Stderr, "[devnull] discarding '%s'\n", data.Message(string(payload)).Pretty()) if attachment != nil { attachment.Close() } From f2873058c4b511d0b7eb29c94fbb7fc30fab659f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 25 Mar 2014 19:50:44 -0700 Subject: [PATCH 039/347] beam/examples/beamsh: 'exec' and 'listen' commands Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 108 +++++++++++++++++++++++++++++++++----- 1 file changed, 96 insertions(+), 12 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index ee271eefa0..c3633729f9 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -1,20 +1,22 @@ package main import ( - "io" - "fmt" - "os" - "github.com/dotcloud/docker/pkg/dockerscript" - "github.com/dotcloud/docker/pkg/beam" - "github.com/dotcloud/docker/pkg/beam/data" - "github.com/dotcloud/docker/pkg/term" - "strings" - "sync" - "net" - "path" "bufio" "crypto/rand" "encoding/hex" + "fmt" + "github.com/dotcloud/docker/pkg/beam" + "github.com/dotcloud/docker/pkg/beam/data" + "github.com/dotcloud/docker/pkg/dockerscript" + "github.com/dotcloud/docker/pkg/term" + "io" + "net" + "net/url" + "os" + "os/exec" + "path" + "strings" + "sync" ) func main() { @@ -184,7 +186,31 @@ func randomId() string { } func GetHandler(name string) Handler { - if name == "trace" { + if name == "exec" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + cmd := exec.Command(args[1], args[2:]...) + outR, outW, err := os.Pipe() + if err != nil { + return + } + cmd.Stdout = outW + errR, errW, err := os.Pipe() + if err != nil { + return + } + cmd.Stderr = errW + beam.Send(out, data.Empty().Set("cmd", "log", "stdout").Bytes(), outR) + beam.Send(out, data.Empty().Set("cmd", "log", "stderr").Bytes(), errR) + execErr := cmd.Run() + var status string + if execErr != nil { + status = execErr.Error() + } else { + status = "ok" + } + beam.Send(out, data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) + } + } else if name == "trace" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { for { p, a, err := beam.Receive(in) @@ -220,6 +246,64 @@ func GetHandler(name string) Handler { } } } + } else if name == "multiprint" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + var tasks sync.WaitGroup + for { + payload, a, err := beam.Receive(in) + if err != nil { + return + } + if a != nil { + tasks.Add(1) + go func(payload []byte, attachment *os.File) { + defer tasks.Done() + msg := data.Message(string(payload)) + input := bufio.NewScanner(attachment) + for input.Scan() { + fmt.Printf("[%s] %s\n", msg.Pretty(), input.Text()) + } + }(payload, a) + } + } + tasks.Wait() + } + } else if name == "listen" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + if len(args) != 2 { + beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) + return + } + u, err := url.Parse(args[1]) + if err != nil { + beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + l, err := net.Listen(u.Scheme, u.Host) + if err != nil { + beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + for { + conn, err := l.Accept() + if err != nil { + beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + var f *os.File + if connWithFile, ok := conn.(interface { File() (*os.File, error) }); !ok { + conn.Close() + continue + } else { + f, err = connWithFile.File() + if err != nil { + conn.Close() + continue + } + } + beam.Send(out, data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) + } + } } else if name == "openfile" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { for _, name := range args { From b483fd520137577c04dc904cd06911e07d15faf0 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 26 Mar 2014 12:24:12 -0700 Subject: [PATCH 040/347] beam/examples/beamsh: 'connect' command Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index c3633729f9..60a13c729f 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -304,6 +304,55 @@ func GetHandler(name string) Handler { beam.Send(out, data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) } } + } else if name == "connect" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + if len(args) != 2 { + beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) + return + } + u, err := url.Parse(args[1]) + if err != nil { + beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + var tasks sync.WaitGroup + for { + _, attachment, err := beam.Receive(in) + if err != nil { + break + } + if attachment == nil { + continue + } + Logf("connecting to %s/%s\n", u.Scheme, u.Host) + conn, err := net.Dial(u.Scheme, u.Host) + if err != nil { + beam.Send(out, data.Empty().Set("cmd", "msg", "connect error: " + err.Error()).Bytes(), nil) + return + } + beam.Send(out, data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) + tasks.Add(1) + go func(attachment *os.File, conn net.Conn) { + defer tasks.Done() + // even when successful, conn.File() returns a duplicate, + // so we must close the original + var iotasks sync.WaitGroup + iotasks.Add(2) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + io.Copy(attachment, conn) + }(attachment, conn) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + io.Copy(conn, attachment) + }(attachment, conn) + iotasks.Wait() + conn.Close() + attachment.Close() + }(attachment, conn) + } + tasks.Wait() + } } else if name == "openfile" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { for _, name := range args { From e15d6a4986eefff13dff38a7680d117788204698 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 26 Mar 2014 12:24:28 -0700 Subject: [PATCH 041/347] beam/examples/beamsh: utility function 'fileToConn' Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 60a13c729f..837622d3e1 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -290,16 +290,10 @@ func GetHandler(name string) Handler { beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) return } - var f *os.File - if connWithFile, ok := conn.(interface { File() (*os.File, error) }); !ok { + f, err := connToFile(conn) + if err != nil { conn.Close() continue - } else { - f, err = connWithFile.File() - if err != nil { - conn.Close() - continue - } } beam.Send(out, data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) } @@ -369,6 +363,17 @@ func GetHandler(name string) Handler { return nil } +func connToFile(conn net.Conn) (f *os.File, err error) { + if connWithFile, ok := conn.(interface { File() (*os.File, error) }); !ok { + return nil, fmt.Errorf("no file descriptor available") + } else { + f, err = connWithFile.File() + if err != nil { + return nil, err + } + } + return f, err +} // 'status' is a notification of a job's status. // From 06ac2ca6f6f033d4d32b46f9f3ddedf48f52a83d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 26 Mar 2014 15:45:06 -0700 Subject: [PATCH 042/347] beam/data: expose EncodeString for convenience access to the underlying netstring primitive Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/data.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data/data.go b/data/data.go index 15c302e514..cf0cb7ca19 100644 --- a/data/data.go +++ b/data/data.go @@ -23,6 +23,8 @@ func encodeString(s string) string { return fmt.Sprintf("%d:%s,", len(s), s) } +var EncodeString = encodeString + func encodeList(l []string) string { values := make([]string, 0, len(l)) for _, s := range l { From 5fde78f8d20e9f6f8cc8717e492363e595ddc681 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 26 Mar 2014 15:46:02 -0700 Subject: [PATCH 043/347] beam/examples/beamsh: more useful debugging Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 837622d3e1..58f404d5fd 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -56,23 +56,25 @@ func main() { } } -func beamCopy(dst *net.UnixConn, src *net.UnixConn) error { +func beamCopy(dst *net.UnixConn, src *net.UnixConn) (int, error) { + var n int for { payload, attachment, err := beam.Receive(src) if err == io.EOF { - return nil + return n, nil } else if err != nil { - return err + return n, err } if err := beam.Send(dst, payload, attachment); err != nil { if attachment != nil { attachment.Close() } - return err + return n, err } + n++ } panic("impossibru!") - return nil + return n, nil } type Handler func([]string, *net.UnixConn, *net.UnixConn) @@ -165,7 +167,11 @@ func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error { }() go func() { Debugf("[%s] copy start...\n", strings.Join(cmd.Args, " ")) - beamCopy(client, outPub) + n, err := beamCopy(client, outPub) + if err != nil { + Fatal(err) + } + Debugf("[%s] copied %d messages\n", strings.Join(cmd.Args, " "), n) Debugf("[%s] copy done\n", strings.Join(cmd.Args, " ")) tasks.Done() }() From 8f78f640c5a52c05dae1f65e903f791e0c13f6f9 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 26 Mar 2014 15:47:05 -0700 Subject: [PATCH 044/347] beam/examples/beamsh: don't print discarded messages in Devnull This avoids false alarms when process exits without printing. Devnull doesn't require synchronization. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 58f404d5fd..5e341b6ccf 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -87,11 +87,10 @@ func Devnull() (*net.UnixConn, error) { go func() { defer priv.Close() for { - payload, attachment, err := beam.Receive(priv) + _, attachment, err := beam.Receive(priv) if err != nil { return } - fmt.Fprintf(os.Stderr, "[devnull] discarding '%s'\n", data.Message(string(payload)).Pretty()) if attachment != nil { attachment.Close() } From 2cb3d6a39ba9199edb41a1de73cbd0ffc2e6ccc3 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 26 Mar 2014 15:47:36 -0700 Subject: [PATCH 045/347] beam/examples/beamsh: 'exec' command correctly closes stdout and stderr when the process exists Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 5e341b6ccf..83c0de5a9f 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -214,6 +214,8 @@ func GetHandler(name string) Handler { status = "ok" } beam.Send(out, data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) + outW.Close() + errW.Close() } } else if name == "trace" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { From 1eaf4868ce54846dbf64cc1a9f47a838e4e7eebd Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 26 Mar 2014 15:48:12 -0700 Subject: [PATCH 046/347] beam/examples/beamsh: 'beamsend' command serializes all messages and sends them over a network connection Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 83c0de5a9f..4c8241058b 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -305,6 +305,66 @@ func GetHandler(name string) Handler { beam.Send(out, data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) } } + } else if name == "beamsend" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + if len(args) != 2 { + if err := beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { + Fatal(err) + } + return + } + u, err := url.Parse(args[1]) + if err != nil { + beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + var tasks sync.WaitGroup + for { + payload, attachment, err := beam.Receive(in) + if err != nil { + Logf("receive failed with err=%v\n", err) + break + } + conn, err := net.Dial(u.Scheme, u.Host) + if err != nil { + beam.Send(out, data.Empty().Set("cmd", "msg", "connect error: " + err.Error()).Bytes(), nil) + return + } + beam.Send(out, data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) + tasks.Add(1) + func(payload []byte, attachment *os.File, conn net.Conn) { + defer tasks.Done() + defer conn.Close() + // even when successful, conn.File() returns a duplicate, + // so we must close the original + if _, err := conn.Write([]byte(data.EncodeString(string(payload)))); err != nil { + return + } + if attachment == nil { + return + } + var iotasks sync.WaitGroup + iotasks.Add(2) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + Debugf("copying the connection to [%d]\n", attachment.Fd()) + io.Copy(attachment, conn) + attachment.Close() + Debugf("done copying the connection to [%d]\n", attachment.Fd()) + }(attachment, conn) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + Debugf("copying [%d] to the connection\n", attachment.Fd()) + io.Copy(conn, attachment) + conn.Close() + Debugf("done copying [%d] to the connection\n", attachment.Fd()) + }(attachment, conn) + iotasks.Wait() + attachment.Close() + }(payload, attachment, conn) + } + tasks.Wait() + } } else if name == "connect" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { if len(args) != 2 { From dc654b49e10c947530bce82aa0f132fdb51a4193 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 27 Mar 2014 11:00:18 -0700 Subject: [PATCH 047/347] beam/examples/beamsh: 'in' chdirs to a directory. 'pass' does simple passthrough Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 4c8241058b..c96a75d628 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -191,7 +191,27 @@ func randomId() string { } func GetHandler(name string) Handler { - if name == "exec" { + if name == "pass" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + for { + payload, attachment, err := beam.Receive(in) + if err != nil { + return + } + if err := beam.Send(out, payload, attachment); err != nil { + if attachment != nil { + attachment.Close() + } + return + } + } + } + } else if name == "in" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + os.Chdir(args[1]) + GetHandler("pass")([]string{"pass"}, in, out) + } + } else if name == "exec" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { cmd := exec.Command(args[1], args[2:]...) outR, outW, err := os.Pipe() From 468f668e72393661bfd656bbb44f561c978dfe34 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 27 Mar 2014 14:54:53 -0700 Subject: [PATCH 048/347] beam/examples/beamsh: remote communication over beam (experimental). Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/data.go | 1 + examples/beamsh/beamsh.go | 233 ++++++++++++++++++++++++++++++-------- 2 files changed, 187 insertions(+), 47 deletions(-) diff --git a/data/data.go b/data/data.go index cf0cb7ca19..5604259e37 100644 --- a/data/data.go +++ b/data/data.go @@ -24,6 +24,7 @@ func encodeString(s string) string { } var EncodeString = encodeString +var DecodeString = decodeString func encodeList(l []string) string { values := make([]string, 0, len(l)) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index c96a75d628..05cec7c01c 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -124,6 +124,168 @@ func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { return nil } +func dialer(addr string) (chan net.Conn, error) { + u, err := url.Parse(addr) + if err != nil { + return nil, err + } + connections := make(chan net.Conn) + go func() { + defer close(connections) + for { + conn, err := net.Dial(u.Scheme, u.Host) + if err != nil { + return + } + connections <-conn + } + }() + return connections, nil +} + +func listener(addr string) (chan net.Conn, error) { + u, err := url.Parse(addr) + if err != nil { + return nil, err + } + l, err := net.Listen(u.Scheme, u.Host) + if err != nil { + return nil, err + } + connections := make(chan net.Conn) + go func() { + defer close(connections) + for { + conn, err := l.Accept() + if err != nil { + return + } + Logf("new connection\n") + connections<-conn + } + }() + return connections, nil +} + +func msgDesc(payload []byte, attachment *os.File) string { + var filedesc string = "" + if attachment != nil { + filedesc = fmt.Sprintf("%d", attachment.Fd()) + } + return fmt.Sprintf("'%s'[%s]", payload, filedesc) + +} + +func SendToConn(connections chan net.Conn, src *net.UnixConn) error { + var tasks sync.WaitGroup + defer tasks.Wait() + for { + payload, attachment, err := beam.Receive(src) + if err == io.EOF { + return nil + } else if err != nil { + return err + } + conn, ok := <-connections + if !ok { + break + } + Logf("Sending %s\n", msgDesc(payload, attachment)) + tasks.Add(1) + go func(payload []byte, attachment *os.File, conn net.Conn) { + defer tasks.Done() + if _, err := conn.Write([]byte(data.EncodeString(string(payload)))); err != nil { + return + } + if attachment == nil { + conn.Close() + return + } + var iotasks sync.WaitGroup + iotasks.Add(2) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + Debugf("copying the connection to [%d]\n", attachment.Fd()) + io.Copy(attachment, conn) + attachment.Close() + Debugf("done copying the connection to [%d]\n", attachment.Fd()) + }(attachment, conn) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + Debugf("copying [%d] to the connection\n", attachment.Fd()) + io.Copy(conn, attachment) + conn.Close() + Debugf("done copying [%d] to the connection\n", attachment.Fd()) + }(attachment, conn) + iotasks.Wait() + }(payload, attachment, conn) + } + return nil +} + +func bicopy(a, b io.ReadWriteCloser) { + var iotasks sync.WaitGroup + oneCopy := func(dst io.WriteCloser, src io.Reader) { + defer iotasks.Done() + io.Copy(dst, src) + dst.Close() + } + iotasks.Add(2) + go oneCopy(a, b) + go oneCopy(b, a) + iotasks.Wait() +} + +func ReceiveFromConn(connections chan net.Conn, dst *net.UnixConn) error { + for conn := range connections { + err := func () error { + Logf("parsing message from network...\n") + defer Logf("done parsing message from network\n") + buf := make([]byte, 4098) + n, err := conn.Read(buf) + if n == 0 { + conn.Close() + if err == io.EOF { + return nil + } else { + return err + } + } + Logf("decoding message from '%s'\n", buf[:n]) + header, skip, err := data.DecodeString(string(buf[:n])) + if err != nil { + conn.Close() + return err + } + pub, priv, err := beam.SocketPair() + if err != nil { + return err + } + Logf("decoded message: %s\n", data.Message(header).Pretty()) + go func(skipped []byte, conn net.Conn, f *os.File) { + // this closes both conn and f + if len(skipped) > 0 { + if _, err := f.Write(skipped); err != nil { + Logf("ERROR: %v\n", err) + f.Close() + conn.Close() + return + } + } + bicopy(conn, f) + }(buf[skip:n], conn, pub) + if err := beam.Send(dst, []byte(header), priv); err != nil { + return err + } + return nil + }() + if err != nil { + Logf("Error reading from connection: %v\n", err) + } + } + return nil +} + // 1) Find a handler for the command (if no handler, fail) // 2) Attach new in & out pair to the handler // 3) [in the background] Copy handler output to our own output @@ -224,6 +386,7 @@ func GetHandler(name string) Handler { return } cmd.Stderr = errW + cmd.Stdin = os.Stdin beam.Send(out, data.Empty().Set("cmd", "log", "stdout").Bytes(), outR) beam.Send(out, data.Empty().Set("cmd", "log", "stderr").Bytes(), errR) execErr := cmd.Run() @@ -326,6 +489,24 @@ func GetHandler(name string) Handler { } } } else if name == "beamsend" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + if len(args) < 2 { + if err := beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { + Fatal(err) + } + return + } + var connector func(string) (chan net.Conn, error) + connector = dialer + connections, err := connector(args[1]) + if err != nil { + beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + // Copy in to conn + SendToConn(connections, in) + } + } else if name == "beamreceive" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { if len(args) != 2 { if err := beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { @@ -333,57 +514,15 @@ func GetHandler(name string) Handler { } return } - u, err := url.Parse(args[1]) + var connector func(string) (chan net.Conn, error) + connector = listener + connections, err := connector(args[1]) if err != nil { beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) return } - var tasks sync.WaitGroup - for { - payload, attachment, err := beam.Receive(in) - if err != nil { - Logf("receive failed with err=%v\n", err) - break - } - conn, err := net.Dial(u.Scheme, u.Host) - if err != nil { - beam.Send(out, data.Empty().Set("cmd", "msg", "connect error: " + err.Error()).Bytes(), nil) - return - } - beam.Send(out, data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) - tasks.Add(1) - func(payload []byte, attachment *os.File, conn net.Conn) { - defer tasks.Done() - defer conn.Close() - // even when successful, conn.File() returns a duplicate, - // so we must close the original - if _, err := conn.Write([]byte(data.EncodeString(string(payload)))); err != nil { - return - } - if attachment == nil { - return - } - var iotasks sync.WaitGroup - iotasks.Add(2) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - Debugf("copying the connection to [%d]\n", attachment.Fd()) - io.Copy(attachment, conn) - attachment.Close() - Debugf("done copying the connection to [%d]\n", attachment.Fd()) - }(attachment, conn) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - Debugf("copying [%d] to the connection\n", attachment.Fd()) - io.Copy(conn, attachment) - conn.Close() - Debugf("done copying [%d] to the connection\n", attachment.Fd()) - }(attachment, conn) - iotasks.Wait() - attachment.Close() - }(payload, attachment, conn) - } - tasks.Wait() + // Copy in to conn + ReceiveFromConn(connections, out) } } else if name == "connect" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { From ff7cba6d968bc546f2e6e31649e12ee89e8f87e8 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 27 Mar 2014 15:54:18 -0700 Subject: [PATCH 049/347] beam/examples/beamsh: scripts can be passed as filenames Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 62 +++++++++++++++++++++++------------ examples/beamsh/helloworld.ds | 8 +++++ 2 files changed, 49 insertions(+), 21 deletions(-) create mode 100755 examples/beamsh/helloworld.ds diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 05cec7c01c..fac986e14e 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -25,34 +25,54 @@ func main() { Fatal(err) } defer devnull.Close() - if term.IsTerminal(0) { - input := bufio.NewScanner(os.Stdin) - for { - os.Stdout.Write([]byte("beamsh> ")) - if !input.Scan() { - break - } - line := input.Text() - if len(line) != 0 { - cmd, err := dockerscript.Parse(strings.NewReader(line)) - if err != nil { - fmt.Fprintf(os.Stderr, "error: %v\n", err) - continue + if len(os.Args) == 1 { + if term.IsTerminal(0) { + input := bufio.NewScanner(os.Stdin) + for { + os.Stdout.Write([]byte("beamsh> ")) + if !input.Scan() { + break + } + line := input.Text() + if len(line) != 0 { + cmd, err := dockerscript.Parse(strings.NewReader(line)) + if err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + continue + } + if err := executeScript(devnull, cmd); err != nil { + Fatal(err) + } + } + if err := input.Err(); err == io.EOF { + break + } else if err != nil { + Fatal(err) } - executeScript(devnull, cmd) } - if err := input.Err(); err == io.EOF { - break - } else if err != nil { + } else { + script, err := dockerscript.Parse(os.Stdin) + if err != nil { + Fatal("parse error: %v\n", err) + } + if err := executeScript(devnull, script); err != nil { Fatal(err) } } } else { - script, err := dockerscript.Parse(os.Stdin) - if err != nil { - Fatal("parse error: %v\n", err) + for _, scriptpath := range os.Args[1:] { + f, err := os.Open(scriptpath) + if err != nil { + Fatal(err) + } + script, err := dockerscript.Parse(f) + if err != nil { + Fatal("parse error: %v\n", err) + } + if err := executeScript(devnull, script); err != nil { + Fatal(err) + } } - executeScript(devnull, script) } } diff --git a/examples/beamsh/helloworld.ds b/examples/beamsh/helloworld.ds new file mode 100755 index 0000000000..d3c6c6ffef --- /dev/null +++ b/examples/beamsh/helloworld.ds @@ -0,0 +1,8 @@ +#!/usr/bin/env beamsh + +print { + trace { + emit hello + emit world + } +} From 60a0531497cd694e03d2e80db1c6946df1683506 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 27 Mar 2014 18:25:49 -0700 Subject: [PATCH 050/347] beam/data: Message.Parse creates a message from shell-style 'key=value' arguments Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- data/message.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/data/message.go b/data/message.go index e6536f83e0..193fb7b241 100644 --- a/data/message.go +++ b/data/message.go @@ -11,6 +11,22 @@ func Empty() Message { return Message(Encode(nil)) } +func Parse(args []string) Message { + data := make(map[string][]string) + for _, word := range args { + if strings.Contains(word, "=") { + kv := strings.SplitN(word, "=", 2) + key := kv[0] + var val string + if len(kv) == 2 { + val = kv[1] + } + data[key] = []string{val} + } + } + return Message(Encode(data)) +} + func (m Message) Add(k, v string) Message { data, err := Decode(string(m)) if err != nil { From e34273628f465b5a32b109deca930a19b9858320 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 27 Mar 2014 18:26:42 -0700 Subject: [PATCH 051/347] beam/examples/beamsh: support for background commands with '&' terminator Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index fac986e14e..4234e9d988 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -136,9 +136,19 @@ func scriptString(script []*dockerscript.Command) string { func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { Debugf("executeScript(%s)\n", scriptString(script)) defer Debugf("executeScript(%s) DONE\n", scriptString(script)) + var background sync.WaitGroup + defer background.Wait() for _, cmd := range script { - if err := executeCommand(client, cmd); err != nil { - return err + if cmd.Background { + background.Add(1) + go func(client *net.UnixConn, cmd *dockerscript.Command) { + executeCommand(client, cmd) + background.Done() + }(client, cmd) + } else { + if err := executeCommand(client, cmd); err != nil { + return err + } } } return nil From d3d341427d6150f5dc4780bb1954e60d769ab22e Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 27 Mar 2014 18:27:58 -0700 Subject: [PATCH 052/347] beam/examples/beamsh: 'emit' supports key=value syntax to compose arbitrary objects Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 4234e9d988..a712ca53f6 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -452,7 +452,7 @@ func GetHandler(name string) Handler { } } else if name == "emit" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { - beam.Send(out, data.Empty().Set("foo", args[1:]...).Bytes(), nil) + beam.Send(out, data.Parse(args[1:]).Bytes(), nil) } } else if name == "print" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { @@ -631,27 +631,6 @@ func connToFile(conn net.Conn) (f *os.File, err error) { return f, err } -// 'status' is a notification of a job's status. -// -func parseEnv(args []string) ([]string, map[string]string) { - var argsOut []string - env := make(map[string]string) - for _, word := range args[1:] { - if strings.Contains(word, "=") { - kv := strings.SplitN(word, "=", 2) - key := kv[0] - var val string - if len(kv) == 2 { - val = kv[1] - } - env[key] = val - } else { - argsOut = append(argsOut, word) - } - } - return argsOut, env -} - type Msg struct { payload []byte attachment *os.File From d35913e6706f4710daf0cecbe85f36b01432b894 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 27 Mar 2014 23:58:06 -0700 Subject: [PATCH 053/347] beam/examples/beamsh: convenience commands 'devnull', 'echo' and 'stdio' Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 67 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index a712ca53f6..1648060649 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -382,8 +382,73 @@ func randomId() string { return hex.EncodeToString(id) } +func sendWPipe(conn *net.UnixConn, payload []byte) (*os.File, error) { + r, w, err := os.Pipe() + if err != nil { + return nil, err + } + if err := beam.Send(conn, payload, r); err != nil { + r.Close() + w.Close() + return nil, err + } + return w, nil +} + func GetHandler(name string) Handler { - if name == "pass" { + if name == "devnull" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + for { + _, attachment, err := beam.Receive(in) + if err != nil { + return + } + if attachment != nil { + attachment.Close() + } + } + } + } else if name == "stdio" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + var tasks sync.WaitGroup + defer tasks.Wait() + for { + payload, attachment, err := beam.Receive(in) + if err != nil { + return + } + tasks.Add(1) + go func(payload []byte, attachment *os.File) { + defer tasks.Done() + if attachment == nil { + return + } + defer attachment.Close() + cmd := data.Message(payload).Get("cmd") + if cmd == nil || len(cmd) == 0 { + return + } + if cmd[0] != "log" { + return + } + if len(cmd) == 1 || cmd[1] == "stdout" { + io.Copy(os.Stdout, attachment) + } else if cmd[1] == "stderr" { + io.Copy(os.Stderr, attachment) + } + }(payload, attachment) + } + } + } else if name == "echo" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Bytes()) + if err != nil { + return + } + fmt.Fprintln(stdout, strings.Join(args[1:], " ")) + stdout.Close() + } + } else if name == "pass" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { for { payload, attachment, err := beam.Receive(in) From b31553206808169e1a0dd63226aa31bf82494846 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 00:01:35 -0700 Subject: [PATCH 054/347] beam/examples/beamsh: run commands in an implicit context of pre-loaded 'plugins' Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 53 ++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 1648060649..58a89e0b6b 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -19,12 +19,12 @@ import ( "sync" ) +var rootPlugins = []string{ + "devnull", + "stdio", +} + func main() { - devnull, err := Devnull() - if err != nil { - Fatal(err) - } - defer devnull.Close() if len(os.Args) == 1 { if term.IsTerminal(0) { input := bufio.NewScanner(os.Stdin) @@ -40,7 +40,7 @@ func main() { fmt.Fprintf(os.Stderr, "error: %v\n", err) continue } - if err := executeScript(devnull, cmd); err != nil { + if err := executeRootScript(cmd); err != nil { Fatal(err) } } @@ -55,7 +55,7 @@ func main() { if err != nil { Fatal("parse error: %v\n", err) } - if err := executeScript(devnull, script); err != nil { + if err := executeRootScript(script); err != nil { Fatal(err) } } @@ -69,7 +69,7 @@ func main() { if err != nil { Fatal("parse error: %v\n", err) } - if err := executeScript(devnull, script); err != nil { + if err := executeRootScript(script); err != nil { Fatal(err) } } @@ -133,6 +133,29 @@ func scriptString(script []*dockerscript.Command) string { return fmt.Sprintf("'%s'", strings.Join(lines, "; ")) } +func executeRootScript(script []*dockerscript.Command) error { + if len(rootPlugins) > 0 { + var ( + rootCmd *dockerscript.Command + lastCmd *dockerscript.Command + ) + for _, plugin := range rootPlugins { + pluginCmd := &dockerscript.Command{ + Args: []string{plugin}, + } + if rootCmd == nil { + rootCmd = pluginCmd + } else { + lastCmd.Children = []*dockerscript.Command{pluginCmd} + } + lastCmd = pluginCmd + } + lastCmd.Children = script + script = []*dockerscript.Command{rootCmd} + } + return executeScript(nil, script) +} + func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { Debugf("executeScript(%s)\n", scriptString(script)) defer Debugf("executeScript(%s) DONE\n", scriptString(script)) @@ -357,13 +380,15 @@ func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error { tasks.Done() }() go func() { - Debugf("[%s] copy start...\n", strings.Join(cmd.Args, " ")) - n, err := beamCopy(client, outPub) - if err != nil { - Fatal(err) + if client != nil { + Debugf("[%s] copy start...\n", strings.Join(cmd.Args, " ")) + n, err := beamCopy(client, outPub) + if err != nil { + Fatal(err) + } + Debugf("[%s] copied %d messages\n", strings.Join(cmd.Args, " "), n) + Debugf("[%s] copy done\n", strings.Join(cmd.Args, " ")) } - Debugf("[%s] copied %d messages\n", strings.Join(cmd.Args, " "), n) - Debugf("[%s] copy done\n", strings.Join(cmd.Args, " ")) tasks.Done() }() // depth-first execution of children commands From 01dabeee93e8c5bd6faa0d49c6737eb80708aede Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 10:15:20 -0700 Subject: [PATCH 055/347] beam/examples/beamsh: 'render' and 'beamsh -x' Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 61 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 58a89e0b6b..5efe5691e7 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -17,6 +17,8 @@ import ( "path" "strings" "sync" + "text/template" + "flag" ) var rootPlugins = []string{ @@ -24,8 +26,14 @@ var rootPlugins = []string{ "stdio", } +var ( + flX bool +) + func main() { - if len(os.Args) == 1 { + flag.BoolVar(&flX, "x", false, "print commands as they are being executed") + flag.Parse() + if flag.NArg() == 0{ if term.IsTerminal(0) { input := bufio.NewScanner(os.Stdin) for { @@ -60,7 +68,7 @@ func main() { } } } else { - for _, scriptpath := range os.Args[1:] { + for _, scriptpath := range flag.Args() { f, err := os.Open(scriptpath) if err != nil { Fatal(err) @@ -347,8 +355,14 @@ func ReceiveFromConn(connections chan net.Conn, dst *net.UnixConn) error { // 6) Wait for handler to return and (shortly afterwards) output copy to complete // 7) func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error { + if flX { + fmt.Printf("+ %v\n", strings.Replace(strings.TrimRight(cmd.String(), "\n"), "\n", "\n+ ", -1)) + } Debugf("executeCommand(%s)\n", strings.Join(cmd.Args, " ")) defer Debugf("executeCommand(%s) DONE\n", strings.Join(cmd.Args, " ")) + if len(cmd.Args) == 0 { + return fmt.Errorf("empty command") + } handler := GetHandler(cmd.Args[0]) if handler == nil { return fmt.Errorf("no such command: %s", cmd.Args[0]) @@ -421,7 +435,48 @@ func sendWPipe(conn *net.UnixConn, payload []byte) (*os.File, error) { } func GetHandler(name string) Handler { - if name == "devnull" { + if name == "render" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) + if err != nil { + return + } + defer stdout.Close() + stderr, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) + if err != nil { + return + } + defer stderr.Close() + if len(args) != 2 { + fmt.Fprintf(stderr, "Usage: %s FORMAT\n", args[0]) + beam.Send(out, data.Empty().Set("status", "1").Bytes(), nil) + return + } + txt := args[1] + if !strings.HasSuffix(txt, "\n") { + txt += "\n" + } + t := template.Must(template.New("render").Parse(txt)) + for { + payload, attachment, err := beam.Receive(in) + if err != nil { + return + } + msg, err := data.Decode(string(payload)) + if err != nil { + fmt.Fprintf(stderr, "decode error: %v\n") + } + if err := t.Execute(stdout, msg); err != nil { + fmt.Fprintf(stderr, "rendering error: %v\n", err) + beam.Send(out, data.Empty().Set("status", "1").Bytes(), nil) + return + } + if err := beam.Send(out, payload, attachment); err != nil { + return + } + } + } + } else if name == "devnull" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { for { _, attachment, err := beam.Receive(in) From 8c663c2c1c0dfa1ec391d6074d0d312b31b85a93 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 15:36:29 -0700 Subject: [PATCH 056/347] beam/examples/beamsh: simple 'log' command tees streams to a local directory Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 74 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 5efe5691e7..e67910af80 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -435,7 +435,79 @@ func sendWPipe(conn *net.UnixConn, payload []byte) (*os.File, error) { } func GetHandler(name string) Handler { - if name == "render" { + if name == "log" { + return func(args []string, in *net.UnixConn, out *net.UnixConn) { + var tasks sync.WaitGroup + stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) + if err != nil { + return + } + defer stdout.Close() + stderr, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) + if err != nil { + return + } + defer stderr.Close() + if err := os.MkdirAll("logs", 0700); err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return + } + var n int = 1 + for { + payload, attachment, err := beam.Receive(in) + if err != nil { + return + } + if attachment == nil { + continue + } + r, w, err := os.Pipe() + if err != nil { + attachment.Close() + return + } + if err := beam.Send(out, payload, r); err != nil { + attachment.Close() + r.Close() + w.Close() + fmt.Fprintf(stderr, "%v\n", err) + return + } + tasks.Add(1) + go func(payload []byte, attachment *os.File, n int, sink *os.File) { + defer tasks.Done() + defer attachment.Close() + defer sink.Close() + cmd := data.Message(payload).Get("cmd") + if cmd == nil || len(cmd) == 0 { + return + } + if cmd[0] != "log" { + return + } + var streamname string + if len(cmd) == 1 || cmd[1] == "stdout" { + streamname = "stdout" + } else { + streamname = cmd[1] + } + if fromcmd := data.Message(payload).Get("fromcmd"); len(fromcmd) != 0 { + streamname = fmt.Sprintf("%s-%s", strings.Replace(strings.Join(fromcmd, "_"), "/", "_", -1), streamname) + } + logfile, err := os.OpenFile(path.Join("logs", fmt.Sprintf("%d-%s", n, streamname)), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0700) + if err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return + } + io.Copy(io.MultiWriter(logfile, sink), attachment) + logfile.Sync() + logfile.Close() + }(payload, attachment, n, w) + n++ + } + tasks.Wait() + } + } else if name == "render" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) if err != nil { From 7064475a5c70a6b8ff5c23547b8e39a325ae092b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 15:37:21 -0700 Subject: [PATCH 057/347] beam/examples/beamsh: 'exec' adds 'fromcmd' field to its output Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index e67910af80..2fe8685310 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -634,8 +634,8 @@ func GetHandler(name string) Handler { } cmd.Stderr = errW cmd.Stdin = os.Stdin - beam.Send(out, data.Empty().Set("cmd", "log", "stdout").Bytes(), outR) - beam.Send(out, data.Empty().Set("cmd", "log", "stderr").Bytes(), errR) + beam.Send(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes(), outR) + beam.Send(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes(), errR) execErr := cmd.Run() var status string if execErr != nil { From 2b2877029b7a1a27f4bdc563e51d36b64dc65534 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 15:42:57 -0700 Subject: [PATCH 058/347] beam/examples/beamsh: move code around for readability Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 458 ++++++++++++++++++-------------------- 1 file changed, 221 insertions(+), 237 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 2fe8685310..cc1b37ef09 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -2,8 +2,6 @@ package main import ( "bufio" - "crypto/rand" - "encoding/hex" "fmt" "github.com/dotcloud/docker/pkg/beam" "github.com/dotcloud/docker/pkg/beam/data" @@ -35,6 +33,7 @@ func main() { flag.Parse() if flag.NArg() == 0{ if term.IsTerminal(0) { + // No arguments, stdin is terminal --> interactive mode input := bufio.NewScanner(os.Stdin) for { os.Stdout.Write([]byte("beamsh> ")) @@ -59,6 +58,7 @@ func main() { } } } else { + // No arguments, stdin not terminal --> batch mode script, err := dockerscript.Parse(os.Stdin) if err != nil { Fatal("parse error: %v\n", err) @@ -68,6 +68,7 @@ func main() { } } } else { + // 1+ arguments: parse them as script files for _, scriptpath := range flag.Args() { f, err := os.Open(scriptpath) if err != nil { @@ -84,63 +85,6 @@ func main() { } } -func beamCopy(dst *net.UnixConn, src *net.UnixConn) (int, error) { - var n int - for { - payload, attachment, err := beam.Receive(src) - if err == io.EOF { - return n, nil - } else if err != nil { - return n, err - } - if err := beam.Send(dst, payload, attachment); err != nil { - if attachment != nil { - attachment.Close() - } - return n, err - } - n++ - } - panic("impossibru!") - return n, nil -} - -type Handler func([]string, *net.UnixConn, *net.UnixConn) - -func Devnull() (*net.UnixConn, error) { - priv, pub, err := beam.USocketPair() - if err != nil { - return nil, err - } - go func() { - defer priv.Close() - for { - _, attachment, err := beam.Receive(priv) - if err != nil { - return - } - if attachment != nil { - attachment.Close() - } - } - }() - return pub, nil -} - -func scriptString(script []*dockerscript.Command) string { - lines := make([]string, 0, len(script)) - for _, cmd := range script { - line := strings.Join(cmd.Args, " ") - if len(cmd.Children) > 0 { - line += fmt.Sprintf(" { %s }", scriptString(cmd.Children)) - } else { - line += " {}" - } - lines = append(lines, line) - } - return fmt.Sprintf("'%s'", strings.Join(lines, "; ")) -} - func executeRootScript(script []*dockerscript.Command) error { if len(rootPlugins) > 0 { var ( @@ -185,167 +129,6 @@ func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { return nil } -func dialer(addr string) (chan net.Conn, error) { - u, err := url.Parse(addr) - if err != nil { - return nil, err - } - connections := make(chan net.Conn) - go func() { - defer close(connections) - for { - conn, err := net.Dial(u.Scheme, u.Host) - if err != nil { - return - } - connections <-conn - } - }() - return connections, nil -} - -func listener(addr string) (chan net.Conn, error) { - u, err := url.Parse(addr) - if err != nil { - return nil, err - } - l, err := net.Listen(u.Scheme, u.Host) - if err != nil { - return nil, err - } - connections := make(chan net.Conn) - go func() { - defer close(connections) - for { - conn, err := l.Accept() - if err != nil { - return - } - Logf("new connection\n") - connections<-conn - } - }() - return connections, nil -} - -func msgDesc(payload []byte, attachment *os.File) string { - var filedesc string = "" - if attachment != nil { - filedesc = fmt.Sprintf("%d", attachment.Fd()) - } - return fmt.Sprintf("'%s'[%s]", payload, filedesc) - -} - -func SendToConn(connections chan net.Conn, src *net.UnixConn) error { - var tasks sync.WaitGroup - defer tasks.Wait() - for { - payload, attachment, err := beam.Receive(src) - if err == io.EOF { - return nil - } else if err != nil { - return err - } - conn, ok := <-connections - if !ok { - break - } - Logf("Sending %s\n", msgDesc(payload, attachment)) - tasks.Add(1) - go func(payload []byte, attachment *os.File, conn net.Conn) { - defer tasks.Done() - if _, err := conn.Write([]byte(data.EncodeString(string(payload)))); err != nil { - return - } - if attachment == nil { - conn.Close() - return - } - var iotasks sync.WaitGroup - iotasks.Add(2) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - Debugf("copying the connection to [%d]\n", attachment.Fd()) - io.Copy(attachment, conn) - attachment.Close() - Debugf("done copying the connection to [%d]\n", attachment.Fd()) - }(attachment, conn) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - Debugf("copying [%d] to the connection\n", attachment.Fd()) - io.Copy(conn, attachment) - conn.Close() - Debugf("done copying [%d] to the connection\n", attachment.Fd()) - }(attachment, conn) - iotasks.Wait() - }(payload, attachment, conn) - } - return nil -} - -func bicopy(a, b io.ReadWriteCloser) { - var iotasks sync.WaitGroup - oneCopy := func(dst io.WriteCloser, src io.Reader) { - defer iotasks.Done() - io.Copy(dst, src) - dst.Close() - } - iotasks.Add(2) - go oneCopy(a, b) - go oneCopy(b, a) - iotasks.Wait() -} - -func ReceiveFromConn(connections chan net.Conn, dst *net.UnixConn) error { - for conn := range connections { - err := func () error { - Logf("parsing message from network...\n") - defer Logf("done parsing message from network\n") - buf := make([]byte, 4098) - n, err := conn.Read(buf) - if n == 0 { - conn.Close() - if err == io.EOF { - return nil - } else { - return err - } - } - Logf("decoding message from '%s'\n", buf[:n]) - header, skip, err := data.DecodeString(string(buf[:n])) - if err != nil { - conn.Close() - return err - } - pub, priv, err := beam.SocketPair() - if err != nil { - return err - } - Logf("decoded message: %s\n", data.Message(header).Pretty()) - go func(skipped []byte, conn net.Conn, f *os.File) { - // this closes both conn and f - if len(skipped) > 0 { - if _, err := f.Write(skipped); err != nil { - Logf("ERROR: %v\n", err) - f.Close() - conn.Close() - return - } - } - bicopy(conn, f) - }(buf[skip:n], conn, pub) - if err := beam.Send(dst, []byte(header), priv); err != nil { - return err - } - return nil - }() - if err != nil { - Logf("Error reading from connection: %v\n", err) - } - } - return nil -} // 1) Find a handler for the command (if no handler, fail) // 2) Attach new in & out pair to the handler @@ -415,24 +198,8 @@ func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error { return nil } -func randomId() string { - id := make([]byte, 4) - io.ReadFull(rand.Reader, id) - return hex.EncodeToString(id) -} -func sendWPipe(conn *net.UnixConn, payload []byte) (*os.File, error) { - r, w, err := os.Pipe() - if err != nil { - return nil, err - } - if err := beam.Send(conn, payload, r); err != nil { - r.Close() - w.Close() - return nil, err - } - return w, nil -} +type Handler func([]string, *net.UnixConn, *net.UnixConn) func GetHandler(name string) Handler { if name == "log" { @@ -836,6 +603,9 @@ func GetHandler(name string) Handler { return nil } + +// VARIOUS HELPER FUNCTIONS: + func connToFile(conn net.Conn) (f *os.File, err error) { if connWithFile, ok := conn.(interface { File() (*os.File, error) }); !ok { return nil, fmt.Errorf("no file descriptor available") @@ -875,3 +645,217 @@ func Fatalf(msg string, args ...interface{}) { func Fatal(args ...interface{}) { Fatalf("%v", args[0]) } + +func scriptString(script []*dockerscript.Command) string { + lines := make([]string, 0, len(script)) + for _, cmd := range script { + line := strings.Join(cmd.Args, " ") + if len(cmd.Children) > 0 { + line += fmt.Sprintf(" { %s }", scriptString(cmd.Children)) + } else { + line += " {}" + } + lines = append(lines, line) + } + return fmt.Sprintf("'%s'", strings.Join(lines, "; ")) +} + +func beamCopy(dst *net.UnixConn, src *net.UnixConn) (int, error) { + var n int + for { + payload, attachment, err := beam.Receive(src) + if err == io.EOF { + return n, nil + } else if err != nil { + return n, err + } + if err := beam.Send(dst, payload, attachment); err != nil { + if attachment != nil { + attachment.Close() + } + return n, err + } + n++ + } + panic("impossibru!") + return n, nil +} + +func sendWPipe(conn *net.UnixConn, payload []byte) (*os.File, error) { + r, w, err := os.Pipe() + if err != nil { + return nil, err + } + if err := beam.Send(conn, payload, r); err != nil { + r.Close() + w.Close() + return nil, err + } + return w, nil +} + +func dialer(addr string) (chan net.Conn, error) { + u, err := url.Parse(addr) + if err != nil { + return nil, err + } + connections := make(chan net.Conn) + go func() { + defer close(connections) + for { + conn, err := net.Dial(u.Scheme, u.Host) + if err != nil { + return + } + connections <-conn + } + }() + return connections, nil +} + +func listener(addr string) (chan net.Conn, error) { + u, err := url.Parse(addr) + if err != nil { + return nil, err + } + l, err := net.Listen(u.Scheme, u.Host) + if err != nil { + return nil, err + } + connections := make(chan net.Conn) + go func() { + defer close(connections) + for { + conn, err := l.Accept() + if err != nil { + return + } + Logf("new connection\n") + connections<-conn + } + }() + return connections, nil +} + + + +func SendToConn(connections chan net.Conn, src *net.UnixConn) error { + var tasks sync.WaitGroup + defer tasks.Wait() + for { + payload, attachment, err := beam.Receive(src) + if err == io.EOF { + return nil + } else if err != nil { + return err + } + conn, ok := <-connections + if !ok { + break + } + Logf("Sending %s\n", msgDesc(payload, attachment)) + tasks.Add(1) + go func(payload []byte, attachment *os.File, conn net.Conn) { + defer tasks.Done() + if _, err := conn.Write([]byte(data.EncodeString(string(payload)))); err != nil { + return + } + if attachment == nil { + conn.Close() + return + } + var iotasks sync.WaitGroup + iotasks.Add(2) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + Debugf("copying the connection to [%d]\n", attachment.Fd()) + io.Copy(attachment, conn) + attachment.Close() + Debugf("done copying the connection to [%d]\n", attachment.Fd()) + }(attachment, conn) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + Debugf("copying [%d] to the connection\n", attachment.Fd()) + io.Copy(conn, attachment) + conn.Close() + Debugf("done copying [%d] to the connection\n", attachment.Fd()) + }(attachment, conn) + iotasks.Wait() + }(payload, attachment, conn) + } + return nil +} + +func msgDesc(payload []byte, attachment *os.File) string { + var filedesc string = "" + if attachment != nil { + filedesc = fmt.Sprintf("%d", attachment.Fd()) + } + return fmt.Sprintf("'%s'[%s]", payload, filedesc) + +} + +func ReceiveFromConn(connections chan net.Conn, dst *net.UnixConn) error { + for conn := range connections { + err := func () error { + Logf("parsing message from network...\n") + defer Logf("done parsing message from network\n") + buf := make([]byte, 4098) + n, err := conn.Read(buf) + if n == 0 { + conn.Close() + if err == io.EOF { + return nil + } else { + return err + } + } + Logf("decoding message from '%s'\n", buf[:n]) + header, skip, err := data.DecodeString(string(buf[:n])) + if err != nil { + conn.Close() + return err + } + pub, priv, err := beam.SocketPair() + if err != nil { + return err + } + Logf("decoded message: %s\n", data.Message(header).Pretty()) + go func(skipped []byte, conn net.Conn, f *os.File) { + // this closes both conn and f + if len(skipped) > 0 { + if _, err := f.Write(skipped); err != nil { + Logf("ERROR: %v\n", err) + f.Close() + conn.Close() + return + } + } + bicopy(conn, f) + }(buf[skip:n], conn, pub) + if err := beam.Send(dst, []byte(header), priv); err != nil { + return err + } + return nil + }() + if err != nil { + Logf("Error reading from connection: %v\n", err) + } + } + return nil +} + + +func bicopy(a, b io.ReadWriteCloser) { + var iotasks sync.WaitGroup + oneCopy := func(dst io.WriteCloser, src io.Reader) { + defer iotasks.Done() + io.Copy(dst, src) + dst.Close() + } + iotasks.Add(2) + go oneCopy(a, b) + go oneCopy(b, a) + iotasks.Wait() +} + From bc22e5589e42895a24feaf6989088f6b93a109a4 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 15:50:14 -0700 Subject: [PATCH 059/347] beam/examples/beamsh: simplify code by using sendWPipe utility Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index cc1b37ef09..076dcef498 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -228,16 +228,10 @@ func GetHandler(name string) Handler { if attachment == nil { continue } - r, w, err := os.Pipe() + w, err := sendWPipe(out, payload) if err != nil { - attachment.Close() - return - } - if err := beam.Send(out, payload, r); err != nil { - attachment.Close() - r.Close() - w.Close() fmt.Fprintf(stderr, "%v\n", err) + attachment.Close() return } tasks.Add(1) @@ -390,19 +384,19 @@ func GetHandler(name string) Handler { } else if name == "exec" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { cmd := exec.Command(args[1], args[2:]...) - outR, outW, err := os.Pipe() + stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) if err != nil { return } - cmd.Stdout = outW - errR, errW, err := os.Pipe() + defer stdout.Close() + cmd.Stdout = stdout + stderr, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) if err != nil { return } - cmd.Stderr = errW + defer stderr.Close() + cmd.Stderr = stderr cmd.Stdin = os.Stdin - beam.Send(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes(), outR) - beam.Send(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes(), errR) execErr := cmd.Run() var status string if execErr != nil { @@ -411,8 +405,6 @@ func GetHandler(name string) Handler { status = "ok" } beam.Send(out, data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) - outW.Close() - errW.Close() } } else if name == "trace" { return func(args []string, in *net.UnixConn, out *net.UnixConn) { From e64b46fb78c32535f804a67191b32afc0fc763ad Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 15:53:03 -0700 Subject: [PATCH 060/347] beam/examples/beamsh: add a few example dockerscripts Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/demo1.ds | 9 +++++++++ examples/beamsh/helloworld.ds | 4 ++-- examples/beamsh/logdemo.ds | 9 +++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100755 examples/beamsh/demo1.ds create mode 100755 examples/beamsh/logdemo.ds diff --git a/examples/beamsh/demo1.ds b/examples/beamsh/demo1.ds new file mode 100755 index 0000000000..20a3359f3a --- /dev/null +++ b/examples/beamsh/demo1.ds @@ -0,0 +1,9 @@ +#!/usr/bin/env beamsh + +devnull { + multiprint { + exec tail -f /var/log/system.log & + exec ls -l + exec ls ksdhfkjdshf jksdfhkjsdhf + } +} diff --git a/examples/beamsh/helloworld.ds b/examples/beamsh/helloworld.ds index d3c6c6ffef..32e59b062e 100755 --- a/examples/beamsh/helloworld.ds +++ b/examples/beamsh/helloworld.ds @@ -2,7 +2,7 @@ print { trace { - emit hello - emit world + emit msg=hello + emit msg=world } } diff --git a/examples/beamsh/logdemo.ds b/examples/beamsh/logdemo.ds new file mode 100755 index 0000000000..8b729a966f --- /dev/null +++ b/examples/beamsh/logdemo.ds @@ -0,0 +1,9 @@ +#!/usr/bin/env beamsh + +trace { + log { + exec ls -l + exec ls /tmp/jhsdfkjhsdjkfhsdjkfhsdjkkhsdjkf + echo hello world + } +} From 979277c7a01c855abbc1638bd1a99cfd1bc63cb1 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 24 Mar 2014 15:33:22 +0100 Subject: [PATCH 061/347] beam: Make extracted Fds CloseOnExec Grab forklock to make sure no forks accidentally inherit the new fds before they are made CLOEXEC There is a slight race condition between ReadMsgUnix returns and when we grap the lock, so this is not perfect. Unfortunately There is no way to pass MSG_CMSG_CLOEXEC to recvmsg() nor any way to implement non-blocking i/o in go, so this is hard to fix. Docker-DCO-1.1-Signed-off-by: Alexander Larsson (github: alexlarsson) --- unix.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/unix.go b/unix.go index 12cfbcbe9f..25767bbb4f 100644 --- a/unix.go +++ b/unix.go @@ -148,6 +148,14 @@ func sendUnix(conn *net.UnixConn, data []byte, fds ...int) error { } func extractFds(oob []byte) (fds []int) { + // Grab forklock to make sure no forks accidentally inherit the new + // fds before they are made CLOEXEC + // There is a slight race condition between ReadMsgUnix returns and + // when we grap the lock, so this is not perfect. Unfortunately + // There is no way to pass MSG_CMSG_CLOEXEC to recvmsg() nor any + // way to implement non-blocking i/o in go, so this is hard to fix. + syscall.ForkLock.Lock() + defer syscall.ForkLock.Unlock() scms, err := syscall.ParseSocketControlMessage(oob) if err != nil { return @@ -158,6 +166,10 @@ func extractFds(oob []byte) (fds []int) { continue } fds = append(fds, gotFds...) + + for _, fd := range fds { + syscall.CloseOnExec(fd) + } } return } From 626ef1644c5da9d8d57e942b3af3a8a562276ea0 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 16:57:48 -0700 Subject: [PATCH 062/347] beam: improve the API with Sender/Receiver interfaces and utilities: Copy/SendPipe/SendPair Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- beam.go | 102 ++++++++++++++++++++++ examples/beamsh/beamsh.go | 172 ++++++++++++++++---------------------- service.go | 12 +-- unix.go | 89 ++++++-------------- unix_test.go | 8 +- 5 files changed, 207 insertions(+), 176 deletions(-) create mode 100644 beam.go diff --git a/beam.go b/beam.go new file mode 100644 index 0000000000..98fc4b064e --- /dev/null +++ b/beam.go @@ -0,0 +1,102 @@ +package beam + +import ( + "io" + "os" +) + +type Sender interface { + Send([]byte, *os.File) error +} + +type Receiver interface { + Receive() ([]byte, *os.File, error) +} + +type ReceiveCloser interface { + Receiver + Close() error +} + +type SendCloser interface { + Sender + Close() error +} + +func SendPipe(dst Sender, data []byte) (*os.File, error) { + r, w, err := os.Pipe() + if err != nil { + return nil, err + } + if err := dst.Send(data, r); err != nil { + r.Close() + w.Close() + return nil, err + } + return w, nil +} + +func SendPair(dst Sender, data []byte) (in ReceiveCloser, out SendCloser, err error) { + local, remote, err := SocketPair() + if err != nil { + return nil, nil, err + } + defer func() { + if err != nil { + local.Close() + remote.Close() + } + }() + endpoint, err := FileConn(local) + if err != nil { + return nil, nil, err + } + local.Close() + if err := dst.Send(data, remote); err != nil { + return nil, nil, err + } + return ReceiveCloser(endpoint), SendCloser(endpoint), nil +} + +func ReceivePair(src Receiver) ([]byte, Receiver, Sender, error) { + for { + data, f, err := src.Receive() + if err != nil { + return nil, nil, nil, err + } + if f == nil { + // Skip empty attachments + continue + } + conn, err := FileConn(f) + if err != nil { + // Skip beam attachments which are not connections + // (for example might be a regular file, directory etc) + continue + } + return data, Receiver(conn), Sender(conn), nil + } + panic("impossibru!") + return nil, nil, nil, nil +} + +func Copy(dst Sender, src Receiver) (int, error) { + var n int + for { + payload, attachment, err := src.Receive() + if err == io.EOF { + return n, nil + } else if err != nil { + return n, err + } + if err := dst.Send(payload, attachment); err != nil { + if attachment != nil { + attachment.Close() + } + return n, err + } + n++ + } + panic("impossibru!") + return n, nil +} diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 076dcef498..ef4354f936 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -87,6 +87,7 @@ func main() { func executeRootScript(script []*dockerscript.Command) error { if len(rootPlugins) > 0 { + // If there are root plugins, wrap the script inside them var ( rootCmd *dockerscript.Command lastCmd *dockerscript.Command @@ -108,7 +109,7 @@ func executeRootScript(script []*dockerscript.Command) error { return executeScript(nil, script) } -func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { +func executeScript(out beam.Sender, script []*dockerscript.Command) error { Debugf("executeScript(%s)\n", scriptString(script)) defer Debugf("executeScript(%s) DONE\n", scriptString(script)) var background sync.WaitGroup @@ -116,12 +117,12 @@ func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { for _, cmd := range script { if cmd.Background { background.Add(1) - go func(client *net.UnixConn, cmd *dockerscript.Command) { - executeCommand(client, cmd) + go func(out beam.Sender, cmd *dockerscript.Command) { + executeCommand(out, cmd) background.Done() - }(client, cmd) + }(out, cmd) } else { - if err := executeCommand(client, cmd); err != nil { + if err := executeCommand(out, cmd); err != nil { return err } } @@ -136,8 +137,8 @@ func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { // 4) [in the background] Run the handler // 5) Recursively executeScript() all children commands and wait for them to complete // 6) Wait for handler to return and (shortly afterwards) output copy to complete -// 7) -func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error { +// 7) Profit +func executeCommand(out beam.Sender, cmd *dockerscript.Command) error { if flX { fmt.Printf("+ %v\n", strings.Replace(strings.TrimRight(cmd.String(), "\n"), "\n", "\n+ ", -1)) } @@ -177,9 +178,9 @@ func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error { tasks.Done() }() go func() { - if client != nil { + if out != nil { Debugf("[%s] copy start...\n", strings.Join(cmd.Args, " ")) - n, err := beamCopy(client, outPub) + n, err := beam.Copy(out, outPub) if err != nil { Fatal(err) } @@ -199,18 +200,18 @@ func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error { } -type Handler func([]string, *net.UnixConn, *net.UnixConn) +type Handler func([]string, beam.Receiver, beam.Sender) func GetHandler(name string) Handler { if name == "log" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { var tasks sync.WaitGroup - stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) + stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) if err != nil { return } defer stdout.Close() - stderr, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) + stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) if err != nil { return } @@ -221,14 +222,14 @@ func GetHandler(name string) Handler { } var n int = 1 for { - payload, attachment, err := beam.Receive(in) + payload, attachment, err := in.Receive() if err != nil { return } if attachment == nil { continue } - w, err := sendWPipe(out, payload) + w, err := beam.SendPipe(out, payload) if err != nil { fmt.Fprintf(stderr, "%v\n", err) attachment.Close() @@ -269,20 +270,20 @@ func GetHandler(name string) Handler { tasks.Wait() } } else if name == "render" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { - stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) + return func(args []string, in beam.Receiver, out beam.Sender) { + stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) if err != nil { return } defer stdout.Close() - stderr, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) + stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) if err != nil { return } defer stderr.Close() if len(args) != 2 { fmt.Fprintf(stderr, "Usage: %s FORMAT\n", args[0]) - beam.Send(out, data.Empty().Set("status", "1").Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Bytes(), nil) return } txt := args[1] @@ -291,7 +292,7 @@ func GetHandler(name string) Handler { } t := template.Must(template.New("render").Parse(txt)) for { - payload, attachment, err := beam.Receive(in) + payload, attachment, err := in.Receive() if err != nil { return } @@ -301,18 +302,18 @@ func GetHandler(name string) Handler { } if err := t.Execute(stdout, msg); err != nil { fmt.Fprintf(stderr, "rendering error: %v\n", err) - beam.Send(out, data.Empty().Set("status", "1").Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Bytes(), nil) return } - if err := beam.Send(out, payload, attachment); err != nil { + if err := out.Send(payload, attachment); err != nil { return } } } } else if name == "devnull" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { for { - _, attachment, err := beam.Receive(in) + _, attachment, err := in.Receive() if err != nil { return } @@ -322,11 +323,11 @@ func GetHandler(name string) Handler { } } } else if name == "stdio" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { var tasks sync.WaitGroup defer tasks.Wait() for { - payload, attachment, err := beam.Receive(in) + payload, attachment, err := in.Receive() if err != nil { return } @@ -353,8 +354,8 @@ func GetHandler(name string) Handler { } } } else if name == "echo" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { - stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Bytes()) + return func(args []string, in beam.Receiver, out beam.Sender) { + stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Bytes()) if err != nil { return } @@ -362,13 +363,13 @@ func GetHandler(name string) Handler { stdout.Close() } } else if name == "pass" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { for { - payload, attachment, err := beam.Receive(in) + payload, attachment, err := in.Receive() if err != nil { return } - if err := beam.Send(out, payload, attachment); err != nil { + if err := out.Send(payload, attachment); err != nil { if attachment != nil { attachment.Close() } @@ -377,20 +378,20 @@ func GetHandler(name string) Handler { } } } else if name == "in" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { os.Chdir(args[1]) GetHandler("pass")([]string{"pass"}, in, out) } } else if name == "exec" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { cmd := exec.Command(args[1], args[2:]...) - stdout, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) + stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) if err != nil { return } defer stdout.Close() cmd.Stdout = stdout - stderr, err := sendWPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) + stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) if err != nil { return } @@ -404,12 +405,12 @@ func GetHandler(name string) Handler { } else { status = "ok" } - beam.Send(out, data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) + out.Send(data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) } } else if name == "trace" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { for { - p, a, err := beam.Receive(in) + p, a, err := in.Receive() if err != nil { return } @@ -423,17 +424,17 @@ func GetHandler(name string) Handler { msg = fmt.Sprintf("%s [%d]", msg, a.Fd()) } fmt.Printf("===> %s\n", msg) - beam.Send(out, p, a) + out.Send(p, a) } } } else if name == "emit" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { - beam.Send(out, data.Parse(args[1:]).Bytes(), nil) + return func(args []string, in beam.Receiver, out beam.Sender) { + out.Send(data.Parse(args[1:]).Bytes(), nil) } } else if name == "print" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { for { - _, a, err := beam.Receive(in) + _, a, err := in.Receive() if err != nil { return } @@ -443,10 +444,10 @@ func GetHandler(name string) Handler { } } } else if name == "multiprint" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { var tasks sync.WaitGroup for { - payload, a, err := beam.Receive(in) + payload, a, err := in.Receive() if err != nil { return } @@ -465,25 +466,25 @@ func GetHandler(name string) Handler { tasks.Wait() } } else if name == "listen" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { if len(args) != 2 { - beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) return } u, err := url.Parse(args[1]) if err != nil { - beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) return } l, err := net.Listen(u.Scheme, u.Host) if err != nil { - beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) return } for { conn, err := l.Accept() if err != nil { - beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) return } f, err := connToFile(conn) @@ -491,13 +492,13 @@ func GetHandler(name string) Handler { conn.Close() continue } - beam.Send(out, data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) + out.Send(data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) } } } else if name == "beamsend" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { if len(args) < 2 { - if err := beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { + if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { Fatal(err) } return @@ -506,16 +507,16 @@ func GetHandler(name string) Handler { connector = dialer connections, err := connector(args[1]) if err != nil { - beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) return } // Copy in to conn SendToConn(connections, in) } } else if name == "beamreceive" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { if len(args) != 2 { - if err := beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { + if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { Fatal(err) } return @@ -524,26 +525,26 @@ func GetHandler(name string) Handler { connector = listener connections, err := connector(args[1]) if err != nil { - beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) return } // Copy in to conn ReceiveFromConn(connections, out) } } else if name == "connect" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { if len(args) != 2 { - beam.Send(out, data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) return } u, err := url.Parse(args[1]) if err != nil { - beam.Send(out, data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) return } var tasks sync.WaitGroup for { - _, attachment, err := beam.Receive(in) + _, attachment, err := in.Receive() if err != nil { break } @@ -553,10 +554,10 @@ func GetHandler(name string) Handler { Logf("connecting to %s/%s\n", u.Scheme, u.Host) conn, err := net.Dial(u.Scheme, u.Host) if err != nil { - beam.Send(out, data.Empty().Set("cmd", "msg", "connect error: " + err.Error()).Bytes(), nil) + out.Send(data.Empty().Set("cmd", "msg", "connect error: " + err.Error()).Bytes(), nil) return } - beam.Send(out, data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) + out.Send(data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) tasks.Add(1) go func(attachment *os.File, conn net.Conn) { defer tasks.Done() @@ -580,13 +581,13 @@ func GetHandler(name string) Handler { tasks.Wait() } } else if name == "openfile" { - return func(args []string, in *net.UnixConn, out *net.UnixConn) { + return func(args []string, in beam.Receiver, out beam.Sender) { for _, name := range args { f, err := os.Open(name) if err != nil { continue } - if err := beam.Send(out, data.Empty().Set("path", name).Set("type", "file").Bytes(), f); err != nil { + if err := out.Send(data.Empty().Set("path", name).Set("type", "file").Bytes(), f); err != nil { f.Close() } } @@ -652,39 +653,6 @@ func scriptString(script []*dockerscript.Command) string { return fmt.Sprintf("'%s'", strings.Join(lines, "; ")) } -func beamCopy(dst *net.UnixConn, src *net.UnixConn) (int, error) { - var n int - for { - payload, attachment, err := beam.Receive(src) - if err == io.EOF { - return n, nil - } else if err != nil { - return n, err - } - if err := beam.Send(dst, payload, attachment); err != nil { - if attachment != nil { - attachment.Close() - } - return n, err - } - n++ - } - panic("impossibru!") - return n, nil -} - -func sendWPipe(conn *net.UnixConn, payload []byte) (*os.File, error) { - r, w, err := os.Pipe() - if err != nil { - return nil, err - } - if err := beam.Send(conn, payload, r); err != nil { - r.Close() - w.Close() - return nil, err - } - return w, nil -} func dialer(addr string) (chan net.Conn, error) { u, err := url.Parse(addr) @@ -731,11 +699,11 @@ func listener(addr string) (chan net.Conn, error) { -func SendToConn(connections chan net.Conn, src *net.UnixConn) error { +func SendToConn(connections chan net.Conn, src beam.Receiver) error { var tasks sync.WaitGroup defer tasks.Wait() for { - payload, attachment, err := beam.Receive(src) + payload, attachment, err := src.Receive() if err == io.EOF { return nil } else if err != nil { @@ -787,7 +755,7 @@ func msgDesc(payload []byte, attachment *os.File) string { } -func ReceiveFromConn(connections chan net.Conn, dst *net.UnixConn) error { +func ReceiveFromConn(connections chan net.Conn, dst beam.Sender) error { for conn := range connections { err := func () error { Logf("parsing message from network...\n") @@ -825,7 +793,7 @@ func ReceiveFromConn(connections chan net.Conn, dst *net.UnixConn) error { } bicopy(conn, f) }(buf[skip:n], conn, pub) - if err := beam.Send(dst, []byte(header), priv); err != nil { + if err := dst.Send([]byte(header), priv); err != nil { return err } return nil diff --git a/service.go b/service.go index 9a21e353df..576f1d786d 100644 --- a/service.go +++ b/service.go @@ -16,18 +16,18 @@ import ( // Note that if the underlying file descriptor received in attachment is nil or does // not point to a connection, that message will be skipped. // -func Listen(conn *net.UnixConn, name string) (net.Listener, error) { - endpoint, err := SendPipe(conn, []byte(name)) +func Listen(conn Sender, name string) (net.Listener, error) { + in, _, err := SendPair(conn, []byte(name)) if err != nil { return nil, err } return &listener{ name: name, - endpoint: endpoint, + endpoint: in, }, nil } -func Connect(ctx *net.UnixConn, name string) (net.Conn, error) { +func Connect(ctx *UnixConn, name string) (net.Conn, error) { l, err := Listen(ctx, name) if err != nil { return nil, err @@ -41,12 +41,12 @@ func Connect(ctx *net.UnixConn, name string) (net.Conn, error) { type listener struct { name string - endpoint *net.UnixConn + endpoint ReceiveCloser } func (l *listener) Accept() (net.Conn, error) { for { - _, f, err := Receive(l.endpoint) + _, f, err := l.endpoint.Receive() if err != nil { return nil, err } diff --git a/unix.go b/unix.go index 25767bbb4f..94d7b5b4fc 100644 --- a/unix.go +++ b/unix.go @@ -19,9 +19,27 @@ func debugCheckpoint(msg string, args ...interface{}) { tty.Close() } +type UnixConn struct { + *net.UnixConn +} + +func FileConn(f *os.File) (*UnixConn, error) { + conn, err := net.FileConn(f) + if err != nil { + return nil, err + } + uconn, ok := conn.(*net.UnixConn) + if !ok { + conn.Close() + return nil, fmt.Errorf("%d: not a unix connection", f.Fd()) + } + return &UnixConn{uconn}, nil + +} + // Send sends a new message on conn with data and f as payload and // attachment, respectively. -func Send(conn *net.UnixConn, data []byte, f *os.File) error { +func (conn *UnixConn) Send(data []byte, f *os.File) error { { var fd int = -1 if f != nil { @@ -33,7 +51,7 @@ func Send(conn *net.UnixConn, data []byte, f *os.File) error { if f != nil { fds = append(fds, int(f.Fd())) } - return sendUnix(conn, data, fds...) + return sendUnix(conn.UnixConn, data, fds...) } // Receive waits for a new message on conn, and receives its payload @@ -42,7 +60,7 @@ func Send(conn *net.UnixConn, data []byte, f *os.File) error { // If more than 1 file descriptor is sent in the message, they are all // closed except for the first, which is the attachment. // It is legal for a message to have no attachment or an empty payload. -func Receive(conn *net.UnixConn) (rdata []byte, rf *os.File, rerr error) { +func (conn *UnixConn) Receive() (rdata []byte, rf *os.File, rerr error) { defer func() { var fd int = -1 if rf != nil { @@ -51,7 +69,7 @@ func Receive(conn *net.UnixConn) (rdata []byte, rf *os.File, rerr error) { debugCheckpoint("===DEBUG=== Receive() -> '%s'[%d]. Hit enter to continue.\n", rdata, fd) }() for { - data, fds, err := receiveUnix(conn) + data, fds, err := receiveUnix(conn.UnixConn) if err != nil { return nil, nil, err } @@ -70,63 +88,6 @@ func Receive(conn *net.UnixConn) (rdata []byte, rf *os.File, rerr error) { return nil, nil, nil } -// SendPipe creates a new unix socket pair, sends one end as the attachment -// to a beam message with the payload `data`, and returns the other end. -// -// This is a common pattern to open a new service endpoint. -// For example, a service wishing to advertise its presence to clients might -// open an endpoint with: -// -// endpoint, _ := SendPipe(conn, []byte("sql")) -// defer endpoint.Close() -// for { -// conn, _ := endpoint.Receive() -// go func() { -// Handle(conn) -// conn.Close() -// }() -// } -// -// Note that beam does not distinguish between clients and servers in the logical -// sense: any program wishing to establishing a communication with another program -// may use SendPipe() to create an endpoint. -// For example, here is how an application might use it to connect to a database client. -// -// endpoint, _ := SendPipe(conn, []byte("userdb")) -// defer endpoint.Close() -// conn, _ := endpoint.Receive() -// defer conn.Close() -// db := NewDBClient(conn) -// -// In this example note that we only need the first connection out of the endpoint, -// but we could open new ones to retry after a broken connection. -// Note that, because the underlying service transport is abstracted away, this -// allows for arbitrarily complex service discovery and retry logic to take place, -// without complicating application code. -// -func SendPipe(conn *net.UnixConn, data []byte) (endpoint *net.UnixConn, err error) { - debugCheckpoint("===DEBUG=== SendPipe('%s'). Hit enter to confirm: ", data) - local, remote, err := SocketPair() - if err != nil { - return nil, err - } - defer func() { - if err != nil { - local.Close() - remote.Close() - } - }() - endpoint, err = FdConn(int(local.Fd())) - if err != nil { - return nil, err - } - local.Close() - if err := Send(conn, data, remote); err != nil { - return nil, err - } - return endpoint, nil -} - func receiveUnix(conn *net.UnixConn) ([]byte, []int, error) { buf := make([]byte, 4096) oob := make([]byte, 4096) @@ -204,7 +165,7 @@ func SocketPair() (a *os.File, b *os.File, err error) { return os.NewFile(uintptr(pair[0]), ""), os.NewFile(uintptr(pair[1]), ""), nil } -func USocketPair() (*net.UnixConn, *net.UnixConn, error) { +func USocketPair() (*UnixConn, *UnixConn, error) { debugCheckpoint("===DEBUG=== USocketPair(). Hit enter to confirm: ") defer debugCheckpoint ("===DEBUG=== USocketPair() returned. Hit enter to confirm ") a, b, err := SocketPair() @@ -213,11 +174,11 @@ func USocketPair() (*net.UnixConn, *net.UnixConn, error) { } defer a.Close() defer b.Close() - uA, err := FdConn(int(a.Fd())) + uA, err := FileConn(a) if err != nil { return nil, nil, err } - uB, err := FdConn(int(b.Fd())) + uB, err := FileConn(b) if err != nil { uA.Close() return nil, nil, err diff --git a/unix_test.go b/unix_test.go index bdd03b1a07..09815aa0d6 100644 --- a/unix_test.go +++ b/unix_test.go @@ -45,25 +45,25 @@ func TestSendUnixSocket(t *testing.T) { // defer glueA.Close() // defer glueB.Close() go func() { - err := Send(b2, []byte("a"), glueB) + err := b2.Send([]byte("a"), glueB) if err != nil { t.Fatal(err) } }() go func() { - err := Send(a2, []byte("b"), glueA) + err := a2.Send([]byte("b"), glueA) if err != nil { t.Fatal(err) } }() - connAhdr, connA, err := Receive(a1) + connAhdr, connA, err := a1.Receive() if err != nil { t.Fatal(err) } if string(connAhdr) != "b" { t.Fatalf("unexpected: %s", connAhdr) } - connBhdr, connB, err := Receive(b1) + connBhdr, connB, err := b1.Receive() if err != nil { t.Fatal(err) } From 5f8c6df2a0bd4a425c67b5ca2876202ad32884f5 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 28 Mar 2014 17:06:34 -0700 Subject: [PATCH 063/347] beam/examples/beamsh: miniserver.ds demo Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/miniserver.ds | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100755 examples/beamsh/miniserver.ds diff --git a/examples/beamsh/miniserver.ds b/examples/beamsh/miniserver.ds new file mode 100755 index 0000000000..9707477ee0 --- /dev/null +++ b/examples/beamsh/miniserver.ds @@ -0,0 +1,9 @@ +#!/usr/bin/env beamsh + +multiprint { + trace { + listen tcp://localhost:7676 & + listen tcp://localhost:8787 & + } +} + From 65a0f0c27df2d55f749cc37b0924bfeb5b261eab Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 11:58:29 -0700 Subject: [PATCH 064/347] beam: replace SendPair() with the simpler SendConn() Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- beam.go | 20 ++++++++++---------- service.go | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/beam.go b/beam.go index 98fc4b064e..f93c11b8df 100644 --- a/beam.go +++ b/beam.go @@ -36,10 +36,10 @@ func SendPipe(dst Sender, data []byte) (*os.File, error) { return w, nil } -func SendPair(dst Sender, data []byte) (in ReceiveCloser, out SendCloser, err error) { +func SendConn(dst Sender, data []byte) (conn *UnixConn, err error) { local, remote, err := SocketPair() if err != nil { - return nil, nil, err + return nil, err } defer func() { if err != nil { @@ -47,22 +47,22 @@ func SendPair(dst Sender, data []byte) (in ReceiveCloser, out SendCloser, err er remote.Close() } }() - endpoint, err := FileConn(local) + conn, err = FileConn(local) if err != nil { - return nil, nil, err + return nil, err } local.Close() if err := dst.Send(data, remote); err != nil { - return nil, nil, err + return nil, err } - return ReceiveCloser(endpoint), SendCloser(endpoint), nil + return conn, nil } -func ReceivePair(src Receiver) ([]byte, Receiver, Sender, error) { +func ReceiveConn(src Receiver) ([]byte, *UnixConn, error) { for { data, f, err := src.Receive() if err != nil { - return nil, nil, nil, err + return nil, nil, err } if f == nil { // Skip empty attachments @@ -74,10 +74,10 @@ func ReceivePair(src Receiver) ([]byte, Receiver, Sender, error) { // (for example might be a regular file, directory etc) continue } - return data, Receiver(conn), Sender(conn), nil + return data, conn, nil } panic("impossibru!") - return nil, nil, nil, nil + return nil, nil, nil } func Copy(dst Sender, src Receiver) (int, error) { diff --git a/service.go b/service.go index 576f1d786d..8e117059cb 100644 --- a/service.go +++ b/service.go @@ -17,13 +17,13 @@ import ( // not point to a connection, that message will be skipped. // func Listen(conn Sender, name string) (net.Listener, error) { - in, _, err := SendPair(conn, []byte(name)) + endpoint, err := SendConn(conn, []byte(name)) if err != nil { return nil, err } return &listener{ name: name, - endpoint: in, + endpoint: endpoint, }, nil } From 3cf484f376a58bf2a7e87dc0640de858c2120262 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 12:01:06 -0700 Subject: [PATCH 065/347] beam/examples/beamsh: cosmetic fix in Fatalf Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index ef4354f936..fa6a8d1654 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -631,7 +631,7 @@ func Debugf(msg string, args ...interface{}) { } func Fatalf(msg string, args ...interface{}) { - Logf(msg, args) + Logf(msg, args...) os.Exit(1) } From 2bc94d4bdc3e10a0907f873caa3779750864851f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 12:04:39 -0700 Subject: [PATCH 066/347] beam/examples/beamsh: commands are messages. Commands in the pipeline should either implement or pass-through command messages. This amounts to a proof-of-concept implementation of the "pipeline" design of Docker plugins. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 168 ++++++++++++++++++++++++++------------ 1 file changed, 115 insertions(+), 53 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index fa6a8d1654..b7eccc3a6b 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -106,7 +106,15 @@ func executeRootScript(script []*dockerscript.Command) error { lastCmd.Children = script script = []*dockerscript.Command{rootCmd} } - return executeScript(nil, script) + handlers, err := Handlers() + if err != nil { + return err + } + defer handlers.Close() + if err := executeScript(handlers, script); err != nil { + return err + } + return nil } func executeScript(out beam.Sender, script []*dockerscript.Command) error { @@ -147,61 +155,92 @@ func executeCommand(out beam.Sender, cmd *dockerscript.Command) error { if len(cmd.Args) == 0 { return fmt.Errorf("empty command") } - handler := GetHandler(cmd.Args[0]) - if handler == nil { - return fmt.Errorf("no such command: %s", cmd.Args[0]) - } - inPub, inPriv, err := beam.USocketPair() + Debugf("[executeCommand] sending job '%s'\n", strings.Join(cmd.Args, " ")) + job, err := beam.SendConn(out, data.Empty().Set("cmd", cmd.Args...).Bytes()) if err != nil { - return err + return fmt.Errorf("%v\n", err) } - // Don't close inPub here. We close it to signify the end of input once - // all children are completed (guaranteeing that no more input will be sent - // by children). - // Otherwise we get a deadlock. - defer inPriv.Close() - outPub, outPriv, err := beam.USocketPair() - if err != nil { - return err - } - defer outPub.Close() - // don't close outPriv here. It must be closed after the handler is called, - // but before the copy tasks associated with it completes. - // Otherwise we get a deadlock. var tasks sync.WaitGroup - tasks.Add(2) - go func() { - handler(cmd.Args, inPriv, outPriv) - // FIXME: do we need to outPriv.sync before closing it? - Debugf("[%s] handler returned, closing output\n", strings.Join(cmd.Args, " ")) - outPriv.Close() - tasks.Done() - }() + tasks.Add(1) + Debugf("[executeCommand] spawning background copy of the output of '%s'\n", strings.Join(cmd.Args, " ")) go func() { if out != nil { - Debugf("[%s] copy start...\n", strings.Join(cmd.Args, " ")) - n, err := beam.Copy(out, outPub) + Debugf("[executeCommand] background copy of the output of '%s'\n", strings.Join(cmd.Args, " ")) + n, err := beam.Copy(out, job) if err != nil { - Fatal(err) + Fatalf("[executeCommand] [%s] error during background copy: %v\n", strings.Join(cmd.Args, " "), err) } - Debugf("[%s] copied %d messages\n", strings.Join(cmd.Args, " "), n) - Debugf("[%s] copy done\n", strings.Join(cmd.Args, " ")) + Debugf("[executeCommand] background copy done of the output of '%s': copied %d messages\n", strings.Join(cmd.Args, " "), n) } tasks.Done() }() // depth-first execution of children commands // executeScript() blocks until all commands are completed - executeScript(inPub, cmd.Children) - inPub.Close() - Debugf("[%s] waiting for handler and output copy to complete...\n", strings.Join(cmd.Args, " ")) + Debugf("[executeCommand] recursively running children of '%s'\n", strings.Join(cmd.Args, " ")) + executeScript(job, cmd.Children) + Debugf("[executeCommand] DONE recursively running children of '%s'\n", strings.Join(cmd.Args, " ")) + job.CloseWrite() + Debugf("[executeCommand] closing the input of '%s' (all children are completed)\n", strings.Join(cmd.Args, " ")) + Debugf("[executeCommand] waiting for background copy of '%s' to complete...\n", strings.Join(cmd.Args, " ")) tasks.Wait() - Debugf("[%s] handler and output copy complete!\n", strings.Join(cmd.Args, " ")) + Debugf("[executeCommand] background copy of '%s' complete! This means the job completed.\n", strings.Join(cmd.Args, " ")) return nil } type Handler func([]string, beam.Receiver, beam.Sender) + +func Handlers() (*beam.UnixConn, error) { + var tasks sync.WaitGroup + pub, priv, err := beam.USocketPair() + if err != nil { + return nil, err + } + go func() { + defer func() { + Debugf("[handlers] closewrite() on endpoint\n") + // FIXME: this is not yet necessary but will be once + // there is synchronization over standard beam messages + priv.CloseWrite() + Debugf("[handlers] done closewrite() on endpoint\n") + }() + for { + Debugf("[handlers] waiting for next job...\n") + payload, conn, err := beam.ReceiveConn(priv) + Debugf("[handlers] ReceiveConn() returned %v\n", err) + if err != nil { + return + } + tasks.Add(1) + go func(payload []byte, conn *beam.UnixConn) { + defer tasks.Done() + defer func() { + Debugf("[handlers] '%s' closewrite\n", payload) + conn.CloseWrite() + Debugf("[handlers] '%s' done closewrite\n", payload) + }() + cmd := data.Message(payload).Get("cmd") + Debugf("[handlers] received %s\n", strings.Join(cmd, " ")) + if len(cmd) == 0 { + return + } + handler := GetHandler(cmd[0]) + if handler == nil { + return + } + Debugf("[handlers] calling %s\n", strings.Join(cmd, " ")) + handler(cmd, beam.Receiver(conn), beam.Sender(conn)) + Debugf("[handlers] returned: %s\n", strings.Join(cmd, " ")) + }(payload, conn) + } + Debugf("[handlers] waiting for all tasks\n") + tasks.Wait() + Debugf("[handlers] all tasks returned\n") + }() + return pub, nil +} + func GetHandler(name string) Handler { if name == "log" { return func(args []string, in beam.Receiver, out beam.Sender) { @@ -324,6 +363,16 @@ func GetHandler(name string) Handler { } } else if name == "stdio" { return func(args []string, in beam.Receiver, out beam.Sender) { + stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) + if err != nil { + return + } + defer stdout.Close() + stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) + if err != nil { + return + } + defer stderr.Close() var tasks sync.WaitGroup defer tasks.Wait() for { @@ -331,26 +380,39 @@ func GetHandler(name string) Handler { if err != nil { return } - tasks.Add(1) - go func(payload []byte, attachment *os.File) { - defer tasks.Done() - if attachment == nil { + cmd := data.Message(payload).Get("cmd") + if attachment != nil && len(cmd) > 0 && cmd[0] == "log" { + w, err := beam.SendPipe(out, payload) + if err != nil { + attachment.Close() + fmt.Fprintf(stderr, "sendpipe: %v\n", err) return } - defer attachment.Close() - cmd := data.Message(payload).Get("cmd") - if cmd == nil || len(cmd) == 0 { + tasks.Add(1) + go func(payload []byte, attachment *os.File, sink *os.File) { + defer tasks.Done() + defer attachment.Close() + defer sink.Close() + cmd := data.Message(payload).Get("cmd") + if cmd == nil || len(cmd) == 0 { + return + } + if cmd[0] != "log" { + return + } + var output io.Writer + if len(cmd) == 1 || cmd[1] == "stdout" { + output = os.Stdout + } else if cmd[1] == "stderr" { + output = os.Stderr + } + io.Copy(io.MultiWriter(output, sink), attachment) + }(payload, attachment, w) + } else { + if err := out.Send(payload, attachment); err != nil { return } - if cmd[0] != "log" { - return - } - if len(cmd) == 1 || cmd[1] == "stdout" { - io.Copy(os.Stdout, attachment) - } else if cmd[1] == "stderr" { - io.Copy(os.Stderr, attachment) - } - }(payload, attachment) + } } } } else if name == "echo" { From 107326fa9821d9deb77a91ac0df1767bf3f9f8f7 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 12:45:12 -0700 Subject: [PATCH 067/347] beam/examples/beamsh: 'prompt' asks the user for a value and sends it. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index b7eccc3a6b..e02424b24e 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -361,6 +361,39 @@ func GetHandler(name string) Handler { } } } + } else if name == "prompt" { + return func(args []string, in beam.Receiver, out beam.Sender) { + stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) + if err != nil { + return + } + defer stdout.Close() + stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) + if err != nil { + return + } + defer stderr.Close() + if len(args) < 2 { + fmt.Fprintf(stderr, "usage: %s PROMPT...\n", args[0]) + return + } + if !term.IsTerminal(0) { + fmt.Fprintf(stderr, "can't prompt: no tty available...\n") + return + } + fmt.Printf("%s: ", strings.Join(args[1:], " ")) + oldState, _ := term.SaveState(0) + term.DisableEcho(0, oldState) + line, _, err := bufio.NewReader(os.Stdin).ReadLine() + if err != nil { + fmt.Fprintln(stderr, err.Error()) + return + } + val := string(line) + fmt.Printf("\n") + term.RestoreTerminal(0, oldState) + out.Send(data.Empty().Set("fromcmd", args...).Set("value", val).Bytes(), nil) + } } else if name == "stdio" { return func(args []string, in beam.Receiver, out beam.Sender) { stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) From 09c76a202f2e33e92a6e7eb66208e78312dc496a Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 12:45:39 -0700 Subject: [PATCH 068/347] beam/examples/beamsh: rename 'log' to 'logger' to avoid conflict with stdout/stderr Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index e02424b24e..535377094d 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -242,7 +242,7 @@ func Handlers() (*beam.UnixConn, error) { } func GetHandler(name string) Handler { - if name == "log" { + if name == "logger" { return func(args []string, in beam.Receiver, out beam.Sender) { var tasks sync.WaitGroup stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) From 1cfa87002c588d141b0ee3b0521070f51c02f478 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 12:46:46 -0700 Subject: [PATCH 069/347] beam/examples/beamsh: fix 'print' to be pass-through Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 535377094d..72e506a90b 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -20,7 +20,6 @@ import ( ) var rootPlugins = []string{ - "devnull", "stdio", } @@ -529,12 +528,23 @@ func GetHandler(name string) Handler { } else if name == "print" { return func(args []string, in beam.Receiver, out beam.Sender) { for { - _, a, err := in.Receive() + payload, a, err := in.Receive() if err != nil { return } - if a != nil { - io.Copy(os.Stdout, a) + // Skip commands + if a != nil && data.Message(payload).Get("cmd") == nil { + dup, err := beam.SendPipe(out, payload) + if err != nil { + a.Close() + return + } + io.Copy(io.MultiWriter(os.Stdout, dup), a) + dup.Close() + } else { + if err := out.Send(payload, a); err != nil { + return + } } } } From 7436d1a9caacded5829b57af893bc151ac93bb3d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 12:47:09 -0700 Subject: [PATCH 070/347] beam/examples/beamsh: add scripts to reproduce various bugs Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/bug0.ds | 3 +++ examples/beamsh/bug1.ds | 5 +++++ examples/beamsh/bug2.ds | 7 +++++++ examples/beamsh/bug3.ds | 10 ++++++++++ examples/beamsh/bug4.ds | 9 +++++++++ examples/beamsh/bug5.ds | 6 ++++++ examples/beamsh/bug6.ds | 7 +++++++ examples/beamsh/bug7.ds | 6 ++++++ 8 files changed, 53 insertions(+) create mode 100755 examples/beamsh/bug0.ds create mode 100755 examples/beamsh/bug1.ds create mode 100755 examples/beamsh/bug2.ds create mode 100755 examples/beamsh/bug3.ds create mode 100755 examples/beamsh/bug4.ds create mode 100755 examples/beamsh/bug5.ds create mode 100755 examples/beamsh/bug6.ds create mode 100755 examples/beamsh/bug7.ds diff --git a/examples/beamsh/bug0.ds b/examples/beamsh/bug0.ds new file mode 100755 index 0000000000..89b75230be --- /dev/null +++ b/examples/beamsh/bug0.ds @@ -0,0 +1,3 @@ +#!/usr/bin/env beamsh + +exec ls -l diff --git a/examples/beamsh/bug1.ds b/examples/beamsh/bug1.ds new file mode 100755 index 0000000000..2d8a9e2ed9 --- /dev/null +++ b/examples/beamsh/bug1.ds @@ -0,0 +1,5 @@ +#!/usr/bin/env beamsh + +trace { + exec ls -l +} diff --git a/examples/beamsh/bug2.ds b/examples/beamsh/bug2.ds new file mode 100755 index 0000000000..08f0431f68 --- /dev/null +++ b/examples/beamsh/bug2.ds @@ -0,0 +1,7 @@ +#!/usr/bin/env beamsh + +trace { + stdio { + exec ls -l + } +} diff --git a/examples/beamsh/bug3.ds b/examples/beamsh/bug3.ds new file mode 100755 index 0000000000..7bb8694d49 --- /dev/null +++ b/examples/beamsh/bug3.ds @@ -0,0 +1,10 @@ +#!/usr/bin/env beamsh -x + +trace outer { + # stdio fails + stdio { + trace inner { + exec ls -l + } + } +} diff --git a/examples/beamsh/bug4.ds b/examples/beamsh/bug4.ds new file mode 100755 index 0000000000..b7beedbae2 --- /dev/null +++ b/examples/beamsh/bug4.ds @@ -0,0 +1,9 @@ +#!/usr/bin/env beamsh + +stdio { + trace { + stdio { + exec ls -l + } + } +} diff --git a/examples/beamsh/bug5.ds b/examples/beamsh/bug5.ds new file mode 100755 index 0000000000..9f9a85515d --- /dev/null +++ b/examples/beamsh/bug5.ds @@ -0,0 +1,6 @@ +#!/usr/bin/env beamsh + +stdio { + # exec fails + exec ls -l +} diff --git a/examples/beamsh/bug6.ds b/examples/beamsh/bug6.ds new file mode 100755 index 0000000000..90281401cd --- /dev/null +++ b/examples/beamsh/bug6.ds @@ -0,0 +1,7 @@ +#!/usr/bin/env beamsh + +stdio { + trace { + echo hello + } +} diff --git a/examples/beamsh/bug7.ds b/examples/beamsh/bug7.ds new file mode 100755 index 0000000000..b6e7bd9201 --- /dev/null +++ b/examples/beamsh/bug7.ds @@ -0,0 +1,6 @@ +#!/usr/bin/env beamsh + +stdio { + # exec fails + echo hello world +} From 80df1aaaaa17c35147ff934f31ada8c5a5b3dc64 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 12:54:50 -0700 Subject: [PATCH 071/347] beam: more unit tests This adds testing to SendConn. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- beam_test.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 beam_test.go diff --git a/beam_test.go b/beam_test.go new file mode 100644 index 0000000000..3c938d9d62 --- /dev/null +++ b/beam_test.go @@ -0,0 +1,39 @@ +package beam + +import ( + "testing" + "github.com/dotcloud/docker/pkg/beam/data" +) + +func TestSendConn(t *testing.T) { + a, b, err := USocketPair() + if err != nil { + t.Fatal(err) + } + defer a.Close() + defer b.Close() + go func() { + conn, err := SendConn(a, data.Empty().Set("type", "connection").Bytes()) + if err != nil { + t.Fatal(err) + } + if err := conn.Send(data.Empty().Set("foo", "bar").Bytes(), nil); err != nil { + t.Fatal(err) + } + conn.CloseWrite() + }() + payload, conn, err := ReceiveConn(b) + if err != nil { + t.Fatal(err) + } + if val := data.Message(string(payload)).Get("type"); val == nil || val[0] != "connection" { + t.Fatalf("%v != %v\n", val, "connection") + } + msg, _, err := conn.Receive() + if err != nil { + t.Fatal(err) + } + if val := data.Message(string(msg)).Get("foo"); val == nil || val[0] != "bar" { + t.Fatalf("%v != %v\n", val, "bar") + } +} From faa83a0fc01af634c4f211bf05dc8228c518c3b8 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 25 Mar 2014 13:32:44 +0100 Subject: [PATCH 072/347] beam: Fix double close of fds in SendUnix Instead of calling syscall.Close() on the fds in sendUnix() we call Close() on the *os.File in Send(). Otherwise the fd will be closed, but the *os.File will continue to live, and when it is finalized the fd will be closed (which by then may be reused and can be anything). This also adds a note to Send() the the file is closed. Docker-DCO-1.1-Signed-off-by: Alexander Larsson (github: alexlarsson) --- unix.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/unix.go b/unix.go index 94d7b5b4fc..b138934084 100644 --- a/unix.go +++ b/unix.go @@ -39,6 +39,7 @@ func FileConn(f *os.File) (*UnixConn, error) { // Send sends a new message on conn with data and f as payload and // attachment, respectively. +// On success, f is closed func (conn *UnixConn) Send(data []byte, f *os.File) error { { var fd int = -1 @@ -51,7 +52,14 @@ func (conn *UnixConn) Send(data []byte, f *os.File) error { if f != nil { fds = append(fds, int(f.Fd())) } - return sendUnix(conn.UnixConn, data, fds...) + if err := sendUnix(conn.UnixConn, data, fds...); err != nil { + return err + } + + if f != nil { + f.Close() + } + return nil } // Receive waits for a new message on conn, and receives its payload @@ -100,11 +108,6 @@ func receiveUnix(conn *net.UnixConn) ([]byte, []int, error) { func sendUnix(conn *net.UnixConn, data []byte, fds ...int) error { _, _, err := conn.WriteMsgUnix(data, syscall.UnixRights(fds...), nil) - if err == nil { - for _, fd := range fds { - syscall.Close(fd) - } - } return err } From b645a78485baf3df086b34fb33e9017fcee8ec85 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 1 Apr 2014 15:49:29 -0700 Subject: [PATCH 073/347] beam/examples/beamsh: move example scripts to scripts/ Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/{ => scripts}/bug0.ds | 0 examples/beamsh/{ => scripts}/bug1.ds | 0 examples/beamsh/{ => scripts}/bug2.ds | 0 examples/beamsh/{ => scripts}/bug3.ds | 0 examples/beamsh/{ => scripts}/bug4.ds | 0 examples/beamsh/{ => scripts}/bug5.ds | 0 examples/beamsh/{ => scripts}/bug6.ds | 0 examples/beamsh/{ => scripts}/bug7.ds | 0 examples/beamsh/{ => scripts}/demo1.ds | 0 examples/beamsh/{ => scripts}/helloworld.ds | 0 examples/beamsh/{ => scripts}/logdemo.ds | 0 examples/beamsh/{ => scripts}/miniserver.ds | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename examples/beamsh/{ => scripts}/bug0.ds (100%) rename examples/beamsh/{ => scripts}/bug1.ds (100%) rename examples/beamsh/{ => scripts}/bug2.ds (100%) rename examples/beamsh/{ => scripts}/bug3.ds (100%) rename examples/beamsh/{ => scripts}/bug4.ds (100%) rename examples/beamsh/{ => scripts}/bug5.ds (100%) rename examples/beamsh/{ => scripts}/bug6.ds (100%) rename examples/beamsh/{ => scripts}/bug7.ds (100%) rename examples/beamsh/{ => scripts}/demo1.ds (100%) rename examples/beamsh/{ => scripts}/helloworld.ds (100%) rename examples/beamsh/{ => scripts}/logdemo.ds (100%) rename examples/beamsh/{ => scripts}/miniserver.ds (100%) diff --git a/examples/beamsh/bug0.ds b/examples/beamsh/scripts/bug0.ds similarity index 100% rename from examples/beamsh/bug0.ds rename to examples/beamsh/scripts/bug0.ds diff --git a/examples/beamsh/bug1.ds b/examples/beamsh/scripts/bug1.ds similarity index 100% rename from examples/beamsh/bug1.ds rename to examples/beamsh/scripts/bug1.ds diff --git a/examples/beamsh/bug2.ds b/examples/beamsh/scripts/bug2.ds similarity index 100% rename from examples/beamsh/bug2.ds rename to examples/beamsh/scripts/bug2.ds diff --git a/examples/beamsh/bug3.ds b/examples/beamsh/scripts/bug3.ds similarity index 100% rename from examples/beamsh/bug3.ds rename to examples/beamsh/scripts/bug3.ds diff --git a/examples/beamsh/bug4.ds b/examples/beamsh/scripts/bug4.ds similarity index 100% rename from examples/beamsh/bug4.ds rename to examples/beamsh/scripts/bug4.ds diff --git a/examples/beamsh/bug5.ds b/examples/beamsh/scripts/bug5.ds similarity index 100% rename from examples/beamsh/bug5.ds rename to examples/beamsh/scripts/bug5.ds diff --git a/examples/beamsh/bug6.ds b/examples/beamsh/scripts/bug6.ds similarity index 100% rename from examples/beamsh/bug6.ds rename to examples/beamsh/scripts/bug6.ds diff --git a/examples/beamsh/bug7.ds b/examples/beamsh/scripts/bug7.ds similarity index 100% rename from examples/beamsh/bug7.ds rename to examples/beamsh/scripts/bug7.ds diff --git a/examples/beamsh/demo1.ds b/examples/beamsh/scripts/demo1.ds similarity index 100% rename from examples/beamsh/demo1.ds rename to examples/beamsh/scripts/demo1.ds diff --git a/examples/beamsh/helloworld.ds b/examples/beamsh/scripts/helloworld.ds similarity index 100% rename from examples/beamsh/helloworld.ds rename to examples/beamsh/scripts/helloworld.ds diff --git a/examples/beamsh/logdemo.ds b/examples/beamsh/scripts/logdemo.ds similarity index 100% rename from examples/beamsh/logdemo.ds rename to examples/beamsh/scripts/logdemo.ds diff --git a/examples/beamsh/miniserver.ds b/examples/beamsh/scripts/miniserver.ds similarity index 100% rename from examples/beamsh/miniserver.ds rename to examples/beamsh/scripts/miniserver.ds From 0e85dc3423578134f1602648897f41dfa4ea8b17 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 16:38:36 -0700 Subject: [PATCH 074/347] beam: Router can route beam messages with a convenient set of rules and handlers Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- beam.go | 11 +++ examples/beamsh/beamsh.go | 8 +-- router.go | 137 ++++++++++++++++++++++++++++++++++++++ router_test.go | 96 ++++++++++++++++++++++++++ 4 files changed, 246 insertions(+), 6 deletions(-) create mode 100644 router.go create mode 100644 router_test.go diff --git a/beam.go b/beam.go index f93c11b8df..fab5f62b13 100644 --- a/beam.go +++ b/beam.go @@ -1,6 +1,7 @@ package beam import ( + "fmt" "io" "os" ) @@ -100,3 +101,13 @@ func Copy(dst Sender, src Receiver) (int, error) { panic("impossibru!") return n, nil } + +// MsgDesc returns a human readable description of a beam message, usually +// for debugging purposes. +func MsgDesc(payload []byte, attachment *os.File) string { + var filedesc string = "" + if attachment != nil { + filedesc = fmt.Sprintf("%d", attachment.Fd()) + } + return fmt.Sprintf("'%s'[%s]", payload, filedesc) +} diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 72e506a90b..f3930e0ebb 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -851,13 +851,9 @@ func SendToConn(connections chan net.Conn, src beam.Receiver) error { return nil } -func msgDesc(payload []byte, attachment *os.File) string { - var filedesc string = "" - if attachment != nil { - filedesc = fmt.Sprintf("%d", attachment.Fd()) - } - return fmt.Sprintf("'%s'[%s]", payload, filedesc) +func msgDesc(payload []byte, attachment *os.File) string { + return beam.MsgDesc(payload, attachment) } func ReceiveFromConn(connections chan net.Conn, dst beam.Sender) error { diff --git a/router.go b/router.go new file mode 100644 index 0000000000..3dcc3cc727 --- /dev/null +++ b/router.go @@ -0,0 +1,137 @@ +package beam + +import ( + "io" + "fmt" + "os" + "github.com/dotcloud/docker/pkg/beam/data" +) + +type Router struct { + routes []*Route + sink Sender +} + +func NewRouter(sink Sender) *Router { + return &Router{sink:sink} +} + +func (r *Router) Send(payload []byte, attachment *os.File) (err error) { + //fmt.Printf("Router.Send(%s)\n", MsgDesc(payload, attachment)) + defer func() { + //fmt.Printf("DONE Router.Send(%s) = %v\n", MsgDesc(payload, attachment), err) + }() + for _, route := range r.routes { + if route.Match(payload, attachment) { + return route.Handle(payload, attachment) + } + } + if r.sink != nil { + //fmt.Printf("[Router.Send] no match. sending to sink\n") + return r.sink.Send(payload, attachment) + } + //fmt.Printf("[Router.Send] no match. return error.\n") + return fmt.Errorf("no matching route") +} + +func (r *Router) NewRoute() *Route { + route := &Route{} + r.routes = append(r.routes, route) + return route +} + + + +type Route struct { + rules []func([]byte, *os.File) bool + handler func([]byte, *os.File) error +} + +func (route *Route) Match(payload []byte, attachment *os.File) bool { + for _, rule := range route.rules { + if !rule(payload, attachment) { + return false + } + } + return true +} + +func (route *Route) Handle(payload []byte, attachment *os.File) error { + if route.handler == nil { + return nil + } + return route.handler(payload, attachment) +} + +func (r *Route) HasAttachment() *Route { + r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { + return attachment != nil + }) + return r +} + + +func (route *Route) Tee(dst Sender) *Route { + inner := route.handler + route.handler = func(payload []byte, attachment *os.File) error { + if inner == nil { + return nil + } + if attachment == nil { + return inner(payload, attachment) + } + // Setup the tee + w, err := SendPipe(dst, payload) + if err != nil { + return err + } + teeR, teeW, err := os.Pipe() + if err != nil { + w.Close() + return err + } + go func() { + io.Copy(io.MultiWriter(teeW, w), attachment) + attachment.Close() + w.Close() + teeW.Close() + }() + return inner(payload, teeR) + } + return route +} + +func (r *Route) KeyStartsWith(k string, beginning ...string) *Route { + r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { + values := data.Message(payload).Get(k) + if len(values) < len(beginning) { + return false + } + for i, v := range beginning { + if v != values[i] { + return false + } + } + return true + }) + return r +} + +func (r *Route) Passthrough(dst Sender) *Route { + r.handler = func(payload []byte, attachment *os.File) error { + return dst.Send(payload, attachment) + } + return r +} + +func (r *Route) All() *Route { + r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { + return true + }) + return r +} + +func (r *Route) Handler(h func([]byte, *os.File) error) *Route { + r.handler = h + return r +} diff --git a/router_test.go b/router_test.go new file mode 100644 index 0000000000..f4c0cb1c56 --- /dev/null +++ b/router_test.go @@ -0,0 +1,96 @@ +package beam + +import ( + "fmt" + "io/ioutil" + "testing" + "os" + "sync" +) + +type msg struct { + payload []byte + attachment *os.File +} + +func (m msg) String() string { + return MsgDesc(m.payload, m.attachment) +} + + +type mockReceiver []msg + +func (r *mockReceiver) Send(p []byte, a *os.File) error { + (*r) = append((*r), msg{p, a}) + return nil +} + +func TestSendNoSinkNoRoute(t *testing.T) { + r := NewRouter(nil) + if err := r.Send([]byte("hello"), nil); err == nil { + t.Fatalf("error expected") + } + a, b, err := os.Pipe() + if err != nil { + t.Fatal(err) + } + defer a.Close() + defer b.Close() + if err := r.Send([]byte("foo bar baz"), a); err == nil { + t.Fatalf("error expected") + } +} + +func TestSendSinkNoRoute(t *testing.T) { + var sink mockReceiver + r := NewRouter(&sink) + if err := r.Send([]byte("hello"), nil); err != nil { + t.Fatal(err) + } + a, b, err := os.Pipe() + if err != nil { + t.Fatal(err) + } + defer a.Close() + defer b.Close() + if err := r.Send([]byte("world"), a); err != nil { + t.Fatal(err) + } + if len(sink) != 2 { + t.Fatalf("%#v\n", sink) + } + if string(sink[0].payload) != "hello" { + t.Fatalf("%#v\n", sink) + } + if sink[0].attachment != nil { + t.Fatalf("%#v\n", sink) + } + if string(sink[1].payload) != "world" { + t.Fatalf("%#v\n", sink) + } + if sink[1].attachment == nil || sink[1].attachment.Fd() > 42 || sink[1].attachment.Fd() < 0 { + t.Fatalf("%v\n", sink) + } + var tasks sync.WaitGroup + tasks.Add(2) + go func() { + defer tasks.Done() + fmt.Printf("[%d] Reading from '%d'\n", os.Getpid(), sink[1].attachment.Fd()) + data, err := ioutil.ReadAll(sink[1].attachment) + if err != nil { + t.Fatal(err) + } + if string(data) != "foo bar\n" { + t.Fatalf("%v\n", string(data)) + } + }() + go func() { + defer tasks.Done() + fmt.Printf("[%d] writing to '%d'\n", os.Getpid(), a.Fd()) + if _, err := fmt.Fprintf(b, "foo bar\n"); err != nil { + t.Fatal(err) + } + b.Close() + }() + tasks.Wait() +} From e94309f056cd0b2f6c035f5bfdd4b18d75b09570 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 16:41:33 -0700 Subject: [PATCH 075/347] beam/examples/beamsh: use beam.Router to simplify the 'stdio' command Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 55 ++++++++++++--------------------------- 1 file changed, 17 insertions(+), 38 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index f3930e0ebb..f4bc2bf2bd 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -407,44 +407,23 @@ func GetHandler(name string) Handler { defer stderr.Close() var tasks sync.WaitGroup defer tasks.Wait() - for { - payload, attachment, err := in.Receive() - if err != nil { - return - } - cmd := data.Message(payload).Get("cmd") - if attachment != nil && len(cmd) > 0 && cmd[0] == "log" { - w, err := beam.SendPipe(out, payload) - if err != nil { - attachment.Close() - fmt.Fprintf(stderr, "sendpipe: %v\n", err) - return - } - tasks.Add(1) - go func(payload []byte, attachment *os.File, sink *os.File) { - defer tasks.Done() - defer attachment.Close() - defer sink.Close() - cmd := data.Message(payload).Get("cmd") - if cmd == nil || len(cmd) == 0 { - return - } - if cmd[0] != "log" { - return - } - var output io.Writer - if len(cmd) == 1 || cmd[1] == "stdout" { - output = os.Stdout - } else if cmd[1] == "stderr" { - output = os.Stderr - } - io.Copy(io.MultiWriter(output, sink), attachment) - }(payload, attachment, w) - } else { - if err := out.Send(payload, attachment); err != nil { - return - } - } + + r := beam.NewRouter(out) + r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func(payload []byte, attachment *os.File) error { + tasks.Add(1) + go func() { + defer tasks.Done() + defer attachment.Close() + io.Copy(os.Stdout, attachment) + attachment.Close() + }() + return nil + }).Tee(out) + + if _, err := beam.Copy(r, in); err != nil { + Fatal(err) + fmt.Fprintf(stderr, "%v\n", err) + return } } } else if name == "echo" { From cfee34a9a7fefb74d2f4da9587681531f03f0d87 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 17:40:21 -0700 Subject: [PATCH 076/347] beam/examples/beamsh: use beam.Router to simplify 'logger' Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 43 +++++++++++++-------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index f4bc2bf2bd..bbe0c8a501 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -243,7 +243,6 @@ func Handlers() (*beam.UnixConn, error) { func GetHandler(name string) Handler { if name == "logger" { return func(args []string, in beam.Receiver, out beam.Sender) { - var tasks sync.WaitGroup stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) if err != nil { return @@ -258,35 +257,17 @@ func GetHandler(name string) Handler { fmt.Fprintf(stderr, "%v\n", err) return } + var tasks sync.WaitGroup + defer tasks.Wait() var n int = 1 - for { - payload, attachment, err := in.Receive() - if err != nil { - return - } - if attachment == nil { - continue - } - w, err := beam.SendPipe(out, payload) - if err != nil { - fmt.Fprintf(stderr, "%v\n", err) - attachment.Close() - return - } + r := beam.NewRouter(out) + r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func (payload []byte, attachment *os.File) error { tasks.Add(1) - go func(payload []byte, attachment *os.File, n int, sink *os.File) { + go func(n int) { defer tasks.Done() defer attachment.Close() - defer sink.Close() - cmd := data.Message(payload).Get("cmd") - if cmd == nil || len(cmd) == 0 { - return - } - if cmd[0] != "log" { - return - } var streamname string - if len(cmd) == 1 || cmd[1] == "stdout" { + if cmd := data.Message(payload).Get("cmd"); len(cmd) == 1 || cmd[1] == "stdout" { streamname = "stdout" } else { streamname = cmd[1] @@ -299,13 +280,17 @@ func GetHandler(name string) Handler { fmt.Fprintf(stderr, "%v\n", err) return } - io.Copy(io.MultiWriter(logfile, sink), attachment) + defer logfile.Close() + io.Copy(logfile, attachment) logfile.Sync() - logfile.Close() - }(payload, attachment, n, w) + }(n) n++ + return nil + }).Tee(out) + if _, err := beam.Copy(r, in); err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return } - tasks.Wait() } } else if name == "render" { return func(args []string, in beam.Receiver, out beam.Sender) { From 6a727eb78d3a302ecc35db867a1cb093c3886aba Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 19:01:34 -0700 Subject: [PATCH 077/347] beam/examples/beamsh: simplify commands by always creating and sending stdout and stderr for them Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 107 +++++++++++--------------------------- 1 file changed, 31 insertions(+), 76 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index bbe0c8a501..957dda6ca9 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -187,7 +187,7 @@ func executeCommand(out beam.Sender, cmd *dockerscript.Command) error { } -type Handler func([]string, beam.Receiver, beam.Sender) +type Handler func([]string, io.Writer, io.Writer, beam.Receiver, beam.Sender) func Handlers() (*beam.UnixConn, error) { @@ -228,8 +228,18 @@ func Handlers() (*beam.UnixConn, error) { if handler == nil { return } + stdout, err := beam.SendPipe(conn, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", cmd...).Bytes()) + if err != nil { + return + } + defer stdout.Close() + stderr, err := beam.SendPipe(conn, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", cmd...).Bytes()) + if err != nil { + return + } + defer stderr.Close() Debugf("[handlers] calling %s\n", strings.Join(cmd, " ")) - handler(cmd, beam.Receiver(conn), beam.Sender(conn)) + handler(cmd, stdout, stderr, beam.Receiver(conn), beam.Sender(conn)) Debugf("[handlers] returned: %s\n", strings.Join(cmd, " ")) }(payload, conn) } @@ -242,17 +252,7 @@ func Handlers() (*beam.UnixConn, error) { func GetHandler(name string) Handler { if name == "logger" { - return func(args []string, in beam.Receiver, out beam.Sender) { - stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stdout.Close() - stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stderr.Close() + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { if err := os.MkdirAll("logs", 0700); err != nil { fmt.Fprintf(stderr, "%v\n", err) return @@ -293,17 +293,7 @@ func GetHandler(name string) Handler { } } } else if name == "render" { - return func(args []string, in beam.Receiver, out beam.Sender) { - stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stdout.Close() - stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stderr.Close() + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { if len(args) != 2 { fmt.Fprintf(stderr, "Usage: %s FORMAT\n", args[0]) out.Send(data.Empty().Set("status", "1").Bytes(), nil) @@ -334,7 +324,7 @@ func GetHandler(name string) Handler { } } } else if name == "devnull" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { for { _, attachment, err := in.Receive() if err != nil { @@ -346,17 +336,7 @@ func GetHandler(name string) Handler { } } } else if name == "prompt" { - return func(args []string, in beam.Receiver, out beam.Sender) { - stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stdout.Close() - stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stderr.Close() + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { if len(args) < 2 { fmt.Fprintf(stderr, "usage: %s PROMPT...\n", args[0]) return @@ -379,17 +359,7 @@ func GetHandler(name string) Handler { out.Send(data.Empty().Set("fromcmd", args...).Set("value", val).Bytes(), nil) } } else if name == "stdio" { - return func(args []string, in beam.Receiver, out beam.Sender) { - stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stdout.Close() - stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stderr.Close() + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { var tasks sync.WaitGroup defer tasks.Wait() @@ -412,16 +382,11 @@ func GetHandler(name string) Handler { } } } else if name == "echo" { - return func(args []string, in beam.Receiver, out beam.Sender) { - stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Bytes()) - if err != nil { - return - } + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { fmt.Fprintln(stdout, strings.Join(args[1:], " ")) - stdout.Close() } } else if name == "pass" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { for { payload, attachment, err := in.Receive() if err != nil { @@ -436,24 +401,14 @@ func GetHandler(name string) Handler { } } } else if name == "in" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { os.Chdir(args[1]) - GetHandler("pass")([]string{"pass"}, in, out) + GetHandler("pass")([]string{"pass"}, stdout, stderr, in, out) } } else if name == "exec" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { cmd := exec.Command(args[1], args[2:]...) - stdout, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stdout.Close() cmd.Stdout = stdout - stderr, err := beam.SendPipe(out, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", args...).Bytes()) - if err != nil { - return - } - defer stderr.Close() cmd.Stderr = stderr cmd.Stdin = os.Stdin execErr := cmd.Run() @@ -466,7 +421,7 @@ func GetHandler(name string) Handler { out.Send(data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) } } else if name == "trace" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { for { p, a, err := in.Receive() if err != nil { @@ -486,11 +441,11 @@ func GetHandler(name string) Handler { } } } else if name == "emit" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { out.Send(data.Parse(args[1:]).Bytes(), nil) } } else if name == "print" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { for { payload, a, err := in.Receive() if err != nil { @@ -513,7 +468,7 @@ func GetHandler(name string) Handler { } } } else if name == "multiprint" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { var tasks sync.WaitGroup for { payload, a, err := in.Receive() @@ -535,7 +490,7 @@ func GetHandler(name string) Handler { tasks.Wait() } } else if name == "listen" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { if len(args) != 2 { out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) return @@ -565,7 +520,7 @@ func GetHandler(name string) Handler { } } } else if name == "beamsend" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { if len(args) < 2 { if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { Fatal(err) @@ -583,7 +538,7 @@ func GetHandler(name string) Handler { SendToConn(connections, in) } } else if name == "beamreceive" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { if len(args) != 2 { if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { Fatal(err) @@ -601,7 +556,7 @@ func GetHandler(name string) Handler { ReceiveFromConn(connections, out) } } else if name == "connect" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { if len(args) != 2 { out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) return @@ -650,7 +605,7 @@ func GetHandler(name string) Handler { tasks.Wait() } } else if name == "openfile" { - return func(args []string, in beam.Receiver, out beam.Sender) { + return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { for _, name := range args { f, err := os.Open(name) if err != nil { From f84e7624aa076cc2c51330dcaeca4471598cc2e5 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 19:18:00 -0700 Subject: [PATCH 078/347] beam/examples/beamsh: move builtins to a separate file for readability Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 367 ++-------------------------------- examples/beamsh/builtins.go | 384 ++++++++++++++++++++++++++++++++++++ 2 files changed, 402 insertions(+), 349 deletions(-) create mode 100644 examples/beamsh/builtins.go diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 957dda6ca9..353ef6812d 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -11,11 +11,9 @@ import ( "net" "net/url" "os" - "os/exec" "path" "strings" "sync" - "text/template" "flag" ) @@ -252,370 +250,41 @@ func Handlers() (*beam.UnixConn, error) { func GetHandler(name string) Handler { if name == "logger" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if err := os.MkdirAll("logs", 0700); err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - var tasks sync.WaitGroup - defer tasks.Wait() - var n int = 1 - r := beam.NewRouter(out) - r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func (payload []byte, attachment *os.File) error { - tasks.Add(1) - go func(n int) { - defer tasks.Done() - defer attachment.Close() - var streamname string - if cmd := data.Message(payload).Get("cmd"); len(cmd) == 1 || cmd[1] == "stdout" { - streamname = "stdout" - } else { - streamname = cmd[1] - } - if fromcmd := data.Message(payload).Get("fromcmd"); len(fromcmd) != 0 { - streamname = fmt.Sprintf("%s-%s", strings.Replace(strings.Join(fromcmd, "_"), "/", "_", -1), streamname) - } - logfile, err := os.OpenFile(path.Join("logs", fmt.Sprintf("%d-%s", n, streamname)), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0700) - if err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - defer logfile.Close() - io.Copy(logfile, attachment) - logfile.Sync() - }(n) - n++ - return nil - }).Tee(out) - if _, err := beam.Copy(r, in); err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - } + return CmdLogger } else if name == "render" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - fmt.Fprintf(stderr, "Usage: %s FORMAT\n", args[0]) - out.Send(data.Empty().Set("status", "1").Bytes(), nil) - return - } - txt := args[1] - if !strings.HasSuffix(txt, "\n") { - txt += "\n" - } - t := template.Must(template.New("render").Parse(txt)) - for { - payload, attachment, err := in.Receive() - if err != nil { - return - } - msg, err := data.Decode(string(payload)) - if err != nil { - fmt.Fprintf(stderr, "decode error: %v\n") - } - if err := t.Execute(stdout, msg); err != nil { - fmt.Fprintf(stderr, "rendering error: %v\n", err) - out.Send(data.Empty().Set("status", "1").Bytes(), nil) - return - } - if err := out.Send(payload, attachment); err != nil { - return - } - } - } + return CmdRender } else if name == "devnull" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - _, attachment, err := in.Receive() - if err != nil { - return - } - if attachment != nil { - attachment.Close() - } - } - } + return CmdDevnull } else if name == "prompt" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) < 2 { - fmt.Fprintf(stderr, "usage: %s PROMPT...\n", args[0]) - return - } - if !term.IsTerminal(0) { - fmt.Fprintf(stderr, "can't prompt: no tty available...\n") - return - } - fmt.Printf("%s: ", strings.Join(args[1:], " ")) - oldState, _ := term.SaveState(0) - term.DisableEcho(0, oldState) - line, _, err := bufio.NewReader(os.Stdin).ReadLine() - if err != nil { - fmt.Fprintln(stderr, err.Error()) - return - } - val := string(line) - fmt.Printf("\n") - term.RestoreTerminal(0, oldState) - out.Send(data.Empty().Set("fromcmd", args...).Set("value", val).Bytes(), nil) - } + return CmdPrompt } else if name == "stdio" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - var tasks sync.WaitGroup - defer tasks.Wait() - - r := beam.NewRouter(out) - r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func(payload []byte, attachment *os.File) error { - tasks.Add(1) - go func() { - defer tasks.Done() - defer attachment.Close() - io.Copy(os.Stdout, attachment) - attachment.Close() - }() - return nil - }).Tee(out) - - if _, err := beam.Copy(r, in); err != nil { - Fatal(err) - fmt.Fprintf(stderr, "%v\n", err) - return - } - } + return CmdStdio } else if name == "echo" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - fmt.Fprintln(stdout, strings.Join(args[1:], " ")) - } + return CmdEcho } else if name == "pass" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - payload, attachment, err := in.Receive() - if err != nil { - return - } - if err := out.Send(payload, attachment); err != nil { - if attachment != nil { - attachment.Close() - } - return - } - } - } + return CmdPass } else if name == "in" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - os.Chdir(args[1]) - GetHandler("pass")([]string{"pass"}, stdout, stderr, in, out) - } + return CmdIn } else if name == "exec" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - cmd := exec.Command(args[1], args[2:]...) - cmd.Stdout = stdout - cmd.Stderr = stderr - cmd.Stdin = os.Stdin - execErr := cmd.Run() - var status string - if execErr != nil { - status = execErr.Error() - } else { - status = "ok" - } - out.Send(data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) - } + return CmdExec } else if name == "trace" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - p, a, err := in.Receive() - if err != nil { - return - } - var msg string - if pretty := data.Message(string(p)).Pretty(); pretty != "" { - msg = pretty - } else { - msg = string(p) - } - if a != nil { - msg = fmt.Sprintf("%s [%d]", msg, a.Fd()) - } - fmt.Printf("===> %s\n", msg) - out.Send(p, a) - } - } + return CmdTrace } else if name == "emit" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - out.Send(data.Parse(args[1:]).Bytes(), nil) - } + return CmdEmit } else if name == "print" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - payload, a, err := in.Receive() - if err != nil { - return - } - // Skip commands - if a != nil && data.Message(payload).Get("cmd") == nil { - dup, err := beam.SendPipe(out, payload) - if err != nil { - a.Close() - return - } - io.Copy(io.MultiWriter(os.Stdout, dup), a) - dup.Close() - } else { - if err := out.Send(payload, a); err != nil { - return - } - } - } - } + return CmdPrint } else if name == "multiprint" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - var tasks sync.WaitGroup - for { - payload, a, err := in.Receive() - if err != nil { - return - } - if a != nil { - tasks.Add(1) - go func(payload []byte, attachment *os.File) { - defer tasks.Done() - msg := data.Message(string(payload)) - input := bufio.NewScanner(attachment) - for input.Scan() { - fmt.Printf("[%s] %s\n", msg.Pretty(), input.Text()) - } - }(payload, a) - } - } - tasks.Wait() - } + return CmdMultiprint } else if name == "listen" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) - return - } - u, err := url.Parse(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - l, err := net.Listen(u.Scheme, u.Host) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - for { - conn, err := l.Accept() - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - f, err := connToFile(conn) - if err != nil { - conn.Close() - continue - } - out.Send(data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) - } - } + return CmdListen } else if name == "beamsend" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) < 2 { - if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { - Fatal(err) - } - return - } - var connector func(string) (chan net.Conn, error) - connector = dialer - connections, err := connector(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - // Copy in to conn - SendToConn(connections, in) - } + return CmdBeamsend } else if name == "beamreceive" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { - Fatal(err) - } - return - } - var connector func(string) (chan net.Conn, error) - connector = listener - connections, err := connector(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - // Copy in to conn - ReceiveFromConn(connections, out) - } + return CmdBeamreceive } else if name == "connect" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) - return - } - u, err := url.Parse(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - var tasks sync.WaitGroup - for { - _, attachment, err := in.Receive() - if err != nil { - break - } - if attachment == nil { - continue - } - Logf("connecting to %s/%s\n", u.Scheme, u.Host) - conn, err := net.Dial(u.Scheme, u.Host) - if err != nil { - out.Send(data.Empty().Set("cmd", "msg", "connect error: " + err.Error()).Bytes(), nil) - return - } - out.Send(data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) - tasks.Add(1) - go func(attachment *os.File, conn net.Conn) { - defer tasks.Done() - // even when successful, conn.File() returns a duplicate, - // so we must close the original - var iotasks sync.WaitGroup - iotasks.Add(2) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - io.Copy(attachment, conn) - }(attachment, conn) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - io.Copy(conn, attachment) - }(attachment, conn) - iotasks.Wait() - conn.Close() - attachment.Close() - }(attachment, conn) - } - tasks.Wait() - } + return CmdConnect } else if name == "openfile" { - return func(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for _, name := range args { - f, err := os.Open(name) - if err != nil { - continue - } - if err := out.Send(data.Empty().Set("path", name).Set("type", "file").Bytes(), f); err != nil { - f.Close() - } - } - } + return CmdOpenfile } return nil } diff --git a/examples/beamsh/builtins.go b/examples/beamsh/builtins.go new file mode 100644 index 0000000000..d85bafd0fa --- /dev/null +++ b/examples/beamsh/builtins.go @@ -0,0 +1,384 @@ +package main + +import ( + "io" + "os/exec" + "github.com/dotcloud/docker/pkg/beam" + "github.com/dotcloud/docker/pkg/beam/data" + "github.com/dotcloud/docker/pkg/term" + "text/template" + "fmt" + "sync" + "os" + "strings" + "path" + "bufio" + "net" + "net/url" +) + + +func CmdLogger(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + if err := os.MkdirAll("logs", 0700); err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return + } + var tasks sync.WaitGroup + defer tasks.Wait() + var n int = 1 + r := beam.NewRouter(out) + r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func (payload []byte, attachment *os.File) error { + tasks.Add(1) + go func(n int) { + defer tasks.Done() + defer attachment.Close() + var streamname string + if cmd := data.Message(payload).Get("cmd"); len(cmd) == 1 || cmd[1] == "stdout" { + streamname = "stdout" + } else { + streamname = cmd[1] + } + if fromcmd := data.Message(payload).Get("fromcmd"); len(fromcmd) != 0 { + streamname = fmt.Sprintf("%s-%s", strings.Replace(strings.Join(fromcmd, "_"), "/", "_", -1), streamname) + } + logfile, err := os.OpenFile(path.Join("logs", fmt.Sprintf("%d-%s", n, streamname)), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0700) + if err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return + } + defer logfile.Close() + io.Copy(logfile, attachment) + logfile.Sync() + }(n) + n++ + return nil + }).Tee(out) + if _, err := beam.Copy(r, in); err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return + } +} + +func CmdRender(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + if len(args) != 2 { + fmt.Fprintf(stderr, "Usage: %s FORMAT\n", args[0]) + out.Send(data.Empty().Set("status", "1").Bytes(), nil) + return + } + txt := args[1] + if !strings.HasSuffix(txt, "\n") { + txt += "\n" + } + t := template.Must(template.New("render").Parse(txt)) + for { + payload, attachment, err := in.Receive() + if err != nil { + return + } + msg, err := data.Decode(string(payload)) + if err != nil { + fmt.Fprintf(stderr, "decode error: %v\n") + } + if err := t.Execute(stdout, msg); err != nil { + fmt.Fprintf(stderr, "rendering error: %v\n", err) + out.Send(data.Empty().Set("status", "1").Bytes(), nil) + return + } + if err := out.Send(payload, attachment); err != nil { + return + } + } +} + +func CmdDevnull(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + for { + _, attachment, err := in.Receive() + if err != nil { + return + } + if attachment != nil { + attachment.Close() + } + } +} + +func CmdPrompt(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + if len(args) < 2 { + fmt.Fprintf(stderr, "usage: %s PROMPT...\n", args[0]) + return + } + if !term.IsTerminal(0) { + fmt.Fprintf(stderr, "can't prompt: no tty available...\n") + return + } + fmt.Printf("%s: ", strings.Join(args[1:], " ")) + oldState, _ := term.SaveState(0) + term.DisableEcho(0, oldState) + line, _, err := bufio.NewReader(os.Stdin).ReadLine() + if err != nil { + fmt.Fprintln(stderr, err.Error()) + return + } + val := string(line) + fmt.Printf("\n") + term.RestoreTerminal(0, oldState) + out.Send(data.Empty().Set("fromcmd", args...).Set("value", val).Bytes(), nil) +} + +func CmdStdio(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + var tasks sync.WaitGroup + defer tasks.Wait() + + r := beam.NewRouter(out) + r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func(payload []byte, attachment *os.File) error { + tasks.Add(1) + go func() { + defer tasks.Done() + defer attachment.Close() + io.Copy(os.Stdout, attachment) + attachment.Close() + }() + return nil + }).Tee(out) + + if _, err := beam.Copy(r, in); err != nil { + Fatal(err) + fmt.Fprintf(stderr, "%v\n", err) + return + } +} + +func CmdEcho(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + fmt.Fprintln(stdout, strings.Join(args[1:], " ")) +} + +func CmdPass(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + for { + payload, attachment, err := in.Receive() + if err != nil { + return + } + if err := out.Send(payload, attachment); err != nil { + if attachment != nil { + attachment.Close() + } + return + } + } +} + +func CmdIn(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + os.Chdir(args[1]) + GetHandler("pass")([]string{"pass"}, stdout, stderr, in, out) +} + +func CmdExec(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + cmd := exec.Command(args[1], args[2:]...) + cmd.Stdout = stdout + cmd.Stderr = stderr + cmd.Stdin = os.Stdin + execErr := cmd.Run() + var status string + if execErr != nil { + status = execErr.Error() + } else { + status = "ok" + } + out.Send(data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) +} + +func CmdTrace(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + for { + p, a, err := in.Receive() + if err != nil { + return + } + var msg string + if pretty := data.Message(string(p)).Pretty(); pretty != "" { + msg = pretty + } else { + msg = string(p) + } + if a != nil { + msg = fmt.Sprintf("%s [%d]", msg, a.Fd()) + } + fmt.Printf("===> %s\n", msg) + out.Send(p, a) + } +} + +func CmdEmit(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + out.Send(data.Parse(args[1:]).Bytes(), nil) +} + +func CmdPrint(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + for { + payload, a, err := in.Receive() + if err != nil { + return + } + // Skip commands + if a != nil && data.Message(payload).Get("cmd") == nil { + dup, err := beam.SendPipe(out, payload) + if err != nil { + a.Close() + return + } + io.Copy(io.MultiWriter(os.Stdout, dup), a) + dup.Close() + } else { + if err := out.Send(payload, a); err != nil { + return + } + } + } +} + +func CmdMultiprint(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + var tasks sync.WaitGroup + for { + payload, a, err := in.Receive() + if err != nil { + return + } + if a != nil { + tasks.Add(1) + go func(payload []byte, attachment *os.File) { + defer tasks.Done() + msg := data.Message(string(payload)) + input := bufio.NewScanner(attachment) + for input.Scan() { + fmt.Printf("[%s] %s\n", msg.Pretty(), input.Text()) + } + }(payload, a) + } + } + tasks.Wait() +} + +func CmdListen(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + if len(args) != 2 { + out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) + return + } + u, err := url.Parse(args[1]) + if err != nil { + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + l, err := net.Listen(u.Scheme, u.Host) + if err != nil { + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + for { + conn, err := l.Accept() + if err != nil { + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + f, err := connToFile(conn) + if err != nil { + conn.Close() + continue + } + out.Send(data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) + } +} + +func CmdBeamsend(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + if len(args) < 2 { + if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { + Fatal(err) + } + return + } + var connector func(string) (chan net.Conn, error) + connector = dialer + connections, err := connector(args[1]) + if err != nil { + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + // Copy in to conn + SendToConn(connections, in) +} + +func CmdBeamreceive(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + if len(args) != 2 { + if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { + Fatal(err) + } + return + } + var connector func(string) (chan net.Conn, error) + connector = listener + connections, err := connector(args[1]) + if err != nil { + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + // Copy in to conn + ReceiveFromConn(connections, out) +} + +func CmdConnect(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + if len(args) != 2 { + out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) + return + } + u, err := url.Parse(args[1]) + if err != nil { + out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) + return + } + var tasks sync.WaitGroup + for { + _, attachment, err := in.Receive() + if err != nil { + break + } + if attachment == nil { + continue + } + Logf("connecting to %s/%s\n", u.Scheme, u.Host) + conn, err := net.Dial(u.Scheme, u.Host) + if err != nil { + out.Send(data.Empty().Set("cmd", "msg", "connect error: " + err.Error()).Bytes(), nil) + return + } + out.Send(data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) + tasks.Add(1) + go func(attachment *os.File, conn net.Conn) { + defer tasks.Done() + // even when successful, conn.File() returns a duplicate, + // so we must close the original + var iotasks sync.WaitGroup + iotasks.Add(2) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + io.Copy(attachment, conn) + }(attachment, conn) + go func(attachment *os.File, conn net.Conn) { + defer iotasks.Done() + io.Copy(conn, attachment) + }(attachment, conn) + iotasks.Wait() + conn.Close() + attachment.Close() + }(attachment, conn) + } + tasks.Wait() +} + +func CmdOpenfile(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + for _, name := range args { + f, err := os.Open(name) + if err != nil { + continue + } + if err := out.Send(data.Empty().Set("path", name).Set("type", "file").Bytes(), f); err != nil { + f.Close() + } + } +} From 8bc15104e2474f479f95408db1a67836e81fa5d5 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 20:03:17 -0700 Subject: [PATCH 079/347] beam/examples/beamsh: use beam.Router to simplify 'trace' Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/builtins.go | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/examples/beamsh/builtins.go b/examples/beamsh/builtins.go index d85bafd0fa..2391ab6e00 100644 --- a/examples/beamsh/builtins.go +++ b/examples/beamsh/builtins.go @@ -188,23 +188,13 @@ func CmdExec(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam } func CmdTrace(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - p, a, err := in.Receive() - if err != nil { - return - } - var msg string - if pretty := data.Message(string(p)).Pretty(); pretty != "" { - msg = pretty - } else { - msg = string(p) - } - if a != nil { - msg = fmt.Sprintf("%s [%d]", msg, a.Fd()) - } - fmt.Printf("===> %s\n", msg) - out.Send(p, a) - } + r := beam.NewRouter(out) + r.NewRoute().All().Handler(func(payload []byte, attachment *os.File) error { + fmt.Printf("===> %s\n", beam.MsgDesc(payload, attachment)) + out.Send(payload, attachment) + return nil + }) + beam.Copy(r, in) } func CmdEmit(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { From d04102e5dd76b9e87e8d0e3a591477415659ea8b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 20:04:33 -0700 Subject: [PATCH 080/347] beam: new routing functions Route.KeyEquals, Route.KeyIncludes, Route.NoKey Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- router.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/router.go b/router.go index 3dcc3cc727..e19ec9d449 100644 --- a/router.go +++ b/router.go @@ -117,6 +117,41 @@ func (r *Route) KeyStartsWith(k string, beginning ...string) *Route { return r } +func (r *Route) KeyEquals(k string, full...string) *Route { + r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { + values := data.Message(payload).Get(k) + if len(values) != len(full) { + return false + } + for i, v := range full { + if v != values[i] { + return false + } + } + return true + }) + return r +} + +func (r *Route) KeyIncludes(k, v string) *Route { + r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { + for _, val := range data.Message(payload).Get(k) { + if val == v { + return true + } + } + return false + }) + return r +} + +func (r *Route) NoKey(k string) *Route { + r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { + return len(data.Message(payload).Get(k)) == 0 + }) + return r +} + func (r *Route) Passthrough(dst Sender) *Route { r.handler = func(payload []byte, attachment *os.File) error { return dst.Send(payload, attachment) From d599ab2f6520fd56cc2372460d50d5f49b2f2c8f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 20:05:00 -0700 Subject: [PATCH 081/347] beam/examples/beamsh: use beam.Router to simplify 'multiprint' and fix job passthrough Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 2 +- examples/beamsh/builtins.go | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 353ef6812d..af20916e5c 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -153,7 +153,7 @@ func executeCommand(out beam.Sender, cmd *dockerscript.Command) error { return fmt.Errorf("empty command") } Debugf("[executeCommand] sending job '%s'\n", strings.Join(cmd.Args, " ")) - job, err := beam.SendConn(out, data.Empty().Set("cmd", cmd.Args...).Bytes()) + job, err := beam.SendConn(out, data.Empty().Set("cmd", cmd.Args...).Set("type", "job").Bytes()) if err != nil { return fmt.Errorf("%v\n", err) } diff --git a/examples/beamsh/builtins.go b/examples/beamsh/builtins.go index 2391ab6e00..da767f153d 100644 --- a/examples/beamsh/builtins.go +++ b/examples/beamsh/builtins.go @@ -226,24 +226,24 @@ func CmdPrint(args []string, stdout, stderr io.Writer, in beam.Receiver, out bea func CmdMultiprint(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { var tasks sync.WaitGroup - for { - payload, a, err := in.Receive() - if err != nil { - return - } - if a != nil { - tasks.Add(1) - go func(payload []byte, attachment *os.File) { - defer tasks.Done() - msg := data.Message(string(payload)) - input := bufio.NewScanner(attachment) - for input.Scan() { - fmt.Printf("[%s] %s\n", msg.Pretty(), input.Text()) - } - }(payload, a) - } + defer tasks.Wait() + r := beam.NewRouter(out) + multiprint := func(p []byte, a *os.File) error { + tasks.Add(1) + go func() { + defer tasks.Done() + defer a.Close() + msg := data.Message(string(p)) + input := bufio.NewScanner(a) + for input.Scan() { + fmt.Printf("[%s] %s\n", msg.Pretty(), input.Text()) + } + }() + return nil } - tasks.Wait() + r.NewRoute().KeyIncludes("type", "job").Passthrough(out) + r.NewRoute().HasAttachment().Handler(multiprint).Tee(out) + beam.Copy(r, in) } func CmdListen(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { From 47751cc50e3f5be62bbcc434ad8d74d82d2856e4 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 2 Apr 2014 21:58:47 -0700 Subject: [PATCH 082/347] beam/examples/beamsh: 'exec' can communicate with its child via beam. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- beam.go | 22 ++++++++++++ examples/beamsh/beamsh.go | 60 ++++++++++++++++++++++++++------ examples/beamsh/builtins.go | 68 +++++++++++++++++++++++++++++++++++-- router.go | 18 +++++++++- 4 files changed, 154 insertions(+), 14 deletions(-) diff --git a/beam.go b/beam.go index fab5f62b13..b1e4667a3f 100644 --- a/beam.go +++ b/beam.go @@ -24,6 +24,11 @@ type SendCloser interface { Close() error } +type ReceiveSender interface { + Receiver + Sender +} + func SendPipe(dst Sender, data []byte) (*os.File, error) { r, w, err := os.Pipe() if err != nil { @@ -111,3 +116,20 @@ func MsgDesc(payload []byte, attachment *os.File) string { } return fmt.Sprintf("'%s'[%s]", payload, filedesc) } + +type devnull struct{} + +func Devnull() ReceiveSender { + return devnull{} +} + +func (d devnull) Send(p []byte, a *os.File) error { + if a != nil { + a.Close() + } + return nil +} + +func (d devnull) Receive() ([]byte, *os.File, error) { + return nil, nil, io.EOF +} diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index af20916e5c..c444d0a6e2 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -23,9 +23,19 @@ var rootPlugins = []string{ var ( flX bool + flPing bool + introspect beam.ReceiveSender = beam.Devnull() ) func main() { + fd3 := os.NewFile(3, "beam-introspect") + if introsp, err := beam.FileConn(fd3); err == nil { + introspect = introsp + Logf("introspection enabled\n") + } else { + Logf("introspection disabled\n") + } + fd3.Close() flag.BoolVar(&flX, "x", false, "print commands as they are being executed") flag.Parse() if flag.NArg() == 0{ @@ -33,7 +43,7 @@ func main() { // No arguments, stdin is terminal --> interactive mode input := bufio.NewScanner(os.Stdin) for { - os.Stdout.Write([]byte("beamsh> ")) + fmt.Printf("[%d] beamsh> ", os.Getpid()) if !input.Scan() { break } @@ -103,11 +113,34 @@ func executeRootScript(script []*dockerscript.Command) error { lastCmd.Children = script script = []*dockerscript.Command{rootCmd} } - handlers, err := Handlers() + handlers, err := Handlers(introspect) if err != nil { return err } defer handlers.Close() + var tasks sync.WaitGroup + defer func() { + Debugf("Waiting for introspection...\n") + tasks.Wait() + Debugf("DONE Waiting for introspection\n") + }() + if introspect != nil { + tasks.Add(1) + go func() { + Debugf("starting introspection\n") + defer Debugf("done with introspection\n") + defer tasks.Done() + introspect.Send(data.Empty().Set("cmd", "log", "stdout").Set("message", "introspection worked!").Bytes(), nil) + Debugf("XXX starting reading introspection messages\n") + r := beam.NewRouter(handlers) + r.NewRoute().All().Handler(func(p []byte, a *os.File) error { + Logf("[INTROSPECTION] %s\n", beam.MsgDesc(p, a)) + return handlers.Send(p, a) + }) + n, err := beam.Copy(r, introspect) + Debugf("XXX done reading %d introspection messages: %v\n", n, err) + }() + } if err := executeScript(handlers, script); err != nil { return err } @@ -188,7 +221,7 @@ func executeCommand(out beam.Sender, cmd *dockerscript.Command) error { type Handler func([]string, io.Writer, io.Writer, beam.Receiver, beam.Sender) -func Handlers() (*beam.UnixConn, error) { +func Handlers(sink beam.Sender) (*beam.UnixConn, error) { var tasks sync.WaitGroup pub, priv, err := beam.USocketPair() if err != nil { @@ -202,15 +235,16 @@ func Handlers() (*beam.UnixConn, error) { priv.CloseWrite() Debugf("[handlers] done closewrite() on endpoint\n") }() - for { - Debugf("[handlers] waiting for next job...\n") - payload, conn, err := beam.ReceiveConn(priv) - Debugf("[handlers] ReceiveConn() returned %v\n", err) + r := beam.NewRouter(sink) + r.NewRoute().HasAttachment().KeyIncludes("type", "job").Handler(func(payload []byte, attachment *os.File) error { + conn, err := beam.FileConn(attachment) if err != nil { - return + attachment.Close() + return err } + // attachment.Close() tasks.Add(1) - go func(payload []byte, conn *beam.UnixConn) { + go func() { defer tasks.Done() defer func() { Debugf("[handlers] '%s' closewrite\n", payload) @@ -239,8 +273,10 @@ func Handlers() (*beam.UnixConn, error) { Debugf("[handlers] calling %s\n", strings.Join(cmd, " ")) handler(cmd, stdout, stderr, beam.Receiver(conn), beam.Sender(conn)) Debugf("[handlers] returned: %s\n", strings.Join(cmd, " ")) - }(payload, conn) - } + }() + return nil + }) + beam.Copy(r, priv) Debugf("[handlers] waiting for all tasks\n") tasks.Wait() Debugf("[handlers] all tasks returned\n") @@ -285,6 +321,8 @@ func GetHandler(name string) Handler { return CmdConnect } else if name == "openfile" { return CmdOpenfile + } else if name == "spawn" { + return CmdSpawn } return nil } diff --git a/examples/beamsh/builtins.go b/examples/beamsh/builtins.go index da767f153d..d4e084ddeb 100644 --- a/examples/beamsh/builtins.go +++ b/examples/beamsh/builtins.go @@ -6,6 +6,7 @@ import ( "github.com/dotcloud/docker/pkg/beam" "github.com/dotcloud/docker/pkg/beam/data" "github.com/dotcloud/docker/pkg/term" + "github.com/dotcloud/docker/utils" "text/template" "fmt" "sync" @@ -167,6 +168,27 @@ func CmdPass(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam } } +func CmdSpawn(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + c := exec.Command(utils.SelfPath()) + r, w, err := os.Pipe() + if err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return + } + c.Stdin = r + c.Stdout = stdout + c.Stderr = stderr + go func() { + fmt.Fprintf(w, strings.Join(args[1:], " ")) + w.Sync() + w.Close() + }() + if err := c.Run(); err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return + } +} + func CmdIn(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { os.Chdir(args[1]) GetHandler("pass")([]string{"pass"}, stdout, stderr, in, out) @@ -176,8 +198,46 @@ func CmdExec(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam cmd := exec.Command(args[1], args[2:]...) cmd.Stdout = stdout cmd.Stderr = stderr - cmd.Stdin = os.Stdin + //cmd.Stdin = os.Stdin + local, remote, err := beam.SocketPair() + if err != nil { + fmt.Fprintf(stderr, "%v\n", err) + return + } + child, err := beam.FileConn(local) + if err != nil { + local.Close() + remote.Close() + fmt.Fprintf(stderr, "%v\n", err) + return + } + local.Close() + cmd.ExtraFiles = append(cmd.ExtraFiles, remote) + + var tasks sync.WaitGroup + tasks.Add(1) + go func() { + defer Debugf("done copying to child\n") + defer tasks.Done() + defer child.CloseWrite() + beam.Copy(child, in) + }() + + tasks.Add(1) + go func() { + defer Debugf("done copying from child %d\n") + defer tasks.Done() + r := beam.NewRouter(out) + r.NewRoute().All().Handler(func(p []byte, a *os.File) error { + return out.Send(data.Message(p).Set("pid", fmt.Sprintf("%d", cmd.Process.Pid)).Bytes(), a) + }) + beam.Copy(r, child) + }() execErr := cmd.Run() + // We can close both ends of the socket without worrying about data stuck in the buffer, + // because unix socket writes are fully synchronous. + child.Close() + tasks.Wait() var status string if execErr != nil { status = execErr.Error() @@ -190,7 +250,11 @@ func CmdExec(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam func CmdTrace(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { r := beam.NewRouter(out) r.NewRoute().All().Handler(func(payload []byte, attachment *os.File) error { - fmt.Printf("===> %s\n", beam.MsgDesc(payload, attachment)) + var sfd string = "nil" + if attachment != nil { + sfd = fmt.Sprintf("%d", attachment.Fd()) + } + fmt.Printf("===> %s [%s]\n", data.Message(payload).Pretty(), sfd) out.Send(payload, attachment) return nil }) diff --git a/router.go b/router.go index e19ec9d449..abdfe61d0d 100644 --- a/router.go +++ b/router.go @@ -27,7 +27,7 @@ func (r *Router) Send(payload []byte, attachment *os.File) (err error) { } } if r.sink != nil { - //fmt.Printf("[Router.Send] no match. sending to sink\n") + // fmt.Printf("[%d] [Router.Send] no match. sending %s to sink %#v\n", os.Getpid(), MsgDesc(payload, attachment), r.sink) return r.sink.Send(payload, attachment) } //fmt.Printf("[Router.Send] no match. return error.\n") @@ -101,9 +101,17 @@ func (route *Route) Tee(dst Sender) *Route { return route } +func (r *Route) Filter(f func([]byte, *os.File) bool) *Route { + r.rules = append(r.rules, f) + return r +} + func (r *Route) KeyStartsWith(k string, beginning ...string) *Route { r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { values := data.Message(payload).Get(k) + if values == nil { + return false + } if len(values) < len(beginning) { return false } @@ -117,6 +125,7 @@ func (r *Route) KeyStartsWith(k string, beginning ...string) *Route { return r } + func (r *Route) KeyEquals(k string, full...string) *Route { r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { values := data.Message(payload).Get(k) @@ -152,6 +161,13 @@ func (r *Route) NoKey(k string) *Route { return r } +func (r *Route) KeyExists(k string) *Route { + r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { + return data.Message(payload).Get(k) != nil + }) + return r +} + func (r *Route) Passthrough(dst Sender) *Route { r.handler = func(payload []byte, attachment *os.File) error { return dst.Send(payload, attachment) From 2a5908261bb4b5780dd338de43b1d725e0b7c5ec Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 4 Apr 2014 17:30:03 -0700 Subject: [PATCH 083/347] beam/examples/beamsh: 'chdir' changes the current directory Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 2 ++ examples/beamsh/builtins.go | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index c444d0a6e2..d8b401168b 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -323,6 +323,8 @@ func GetHandler(name string) Handler { return CmdOpenfile } else if name == "spawn" { return CmdSpawn + } else if name == "chdir" { + return CmdChdir } return nil } diff --git a/examples/beamsh/builtins.go b/examples/beamsh/builtins.go index d4e084ddeb..08b8a6259a 100644 --- a/examples/beamsh/builtins.go +++ b/examples/beamsh/builtins.go @@ -436,3 +436,7 @@ func CmdOpenfile(args []string, stdout, stderr io.Writer, in beam.Receiver, out } } } + +func CmdChdir(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { + os.Chdir(args[1]) +} From e1ace86c5a527839923bff24d69568599894930b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 22 Apr 2014 16:09:42 -0700 Subject: [PATCH 084/347] Fix Go formatting in beam and dockerscript Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- beam_test.go | 2 +- data/data.go | 8 ++++---- data/data_test.go | 6 +++--- examples/beamsh/beamsh | Bin 0 -> 6054492 bytes examples/beamsh/beamsh.go | 36 ++++++++++++++---------------------- examples/beamsh/builtins.go | 23 +++++++++++------------ router.go | 16 ++++++---------- router_test.go | 5 ++--- unix.go | 8 ++++---- 9 files changed, 45 insertions(+), 59 deletions(-) create mode 100755 examples/beamsh/beamsh diff --git a/beam_test.go b/beam_test.go index 3c938d9d62..2822861a37 100644 --- a/beam_test.go +++ b/beam_test.go @@ -1,8 +1,8 @@ package beam import ( - "testing" "github.com/dotcloud/docker/pkg/beam/data" + "testing" ) func TestSendConn(t *testing.T) { diff --git a/data/data.go b/data/data.go index 5604259e37..e205fe43f4 100644 --- a/data/data.go +++ b/data/data.go @@ -2,8 +2,8 @@ package data import ( "fmt" - "strings" "strconv" + "strings" ) func Encode(obj map[string][]string) string { @@ -93,10 +93,10 @@ func decodeString(msg string) (string, int, error) { } else { length = int(l) } - if len(parts[1]) < length + 1 { - return "", 0, fmt.Errorf("message '%s' is %d bytes, expected at least %d", parts[1], len(parts[1]), length + 1) + if len(parts[1]) < length+1 { + return "", 0, fmt.Errorf("message '%s' is %d bytes, expected at least %d", parts[1], len(parts[1]), length+1) } - payload := parts[1][:length + 1] + payload := parts[1][:length+1] if payload[length] != ',' { return "", 0, fmt.Errorf("message is not comma-terminated") } diff --git a/data/data_test.go b/data/data_test.go index 6beb3650bc..9059922b3b 100644 --- a/data/data_test.go +++ b/data/data_test.go @@ -92,10 +92,10 @@ func TestEncodeBinaryValue(t *testing.T) { } func TestDecodeString(t *testing.T) { - validEncodedStrings := []struct{ - input string + validEncodedStrings := []struct { + input string output string - skip int + skip int }{ {"3:foo,", "foo", 6}, {"5:hello,", "hello", 8}, diff --git a/examples/beamsh/beamsh b/examples/beamsh/beamsh new file mode 100755 index 0000000000000000000000000000000000000000..9bfe78ef4aead557147a211abaec817e8193dcdf GIT binary patch literal 6054492 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­%K&_J-R<1vsD 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�x};E%wt&o-$}$do!EWJm(h-Bj&A9YC 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

<`UIVfs`|(t-&`JNkJC+J!&_&LU5T!TV35 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 z zpL@vE=a3*fpONn%K2$w@>R{?>9sfV|wba$sYR08ZbHB_S@GxWk1Mbh@J2(6�+LB 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%0DQD(>1HgIN(JUG#v=|He*w`dxr@vu7~yq9 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 z%0A{;7sE!c`d*!qZO`yeoeIS@0G`jg@$a`m^3|a0m3T1o4W-6lMQ17 z#^KDb)GUrmTR<11MAr*v1f#YETf&~(v)T*%-FYFm_Cs-WH0vbSwcUJ!qa_X4{NlXD z8{!OfUi)$2Grsu#wc5;v(Ka0R^*s=GfUsr=?m{Xky$y9NM6BSZ81lQ~P#5&yN|P7(qQmKzq5AL6q%NL~k>U_^1v z6)>zWQ$7|;$!0Uhp;sqNh&P(`)caihh^Upgg?!gtGDji5E@N-0QCs8;=C^$R2@Ic=p9rlC?g`YP(oD$1JXe0uD%f6NdXLF`e zTVmS>alPGxs5yVl_*xM>NJ+(S0Ybon_YnqAIfA&P0*(U*1FLE>i#qZ2_2Ks);s9VE z(toq)@9rC3{!_=qw8Y}2lv!9~R1({Gmch_R&keA%iM+kCRDQANQg|XR>?NMt*l~%S zAA|w_^NKvU&D#%kAraN=tTG%bB$Msu*p7s-{(Qi%s4CySU>aTmyv#o}Xa`+ple4&# z5ig~p0A9*qa;SxgT4U>%Di{aqd@10I0j_Gl7}+jHjxUwv7CfaBJ&zh9{e1K1SGjlS zFmA~nF3$N6%Wor9RsMJ^L8hd)dz@5R{#vZ#2mFMoB#4ijHMOlBuom2{Tn|^3Z<^cW zbHwhYP+bY$T>!ei0+iyw|CONp@wuNunz$5~<6TY7@&&vpY*y1*R?`gRaUQbS%L0)y z{P8+XtiNZE<$6F@N*xN4he-t;KeFTj{Rg+Xw!GYo*bS}4KW8F5*YKHTl=d1GMdK@b zeT#=NM>-8yU#%=YSv&3sLJevuPu14Ca7A6mnP>xS?D*tzwx0*me4+?dhFD`3#sfrS zi9(v59CaW*H9`A9NCiT=!y$MU$+JW;ImXR05JNSJg#w^UhCorc_jc5f>)&>1(~p_T zmyX(47r?DA$hDG@=51CGu9MrpjvRq6Dr*81IpfeCRV=2T!*9UtFyRI}%=uIXs763y zwf7L6X?Rn#{Cf0cnzXp341zjmk@-zJ`sc$E)C@c@8`L}_O2Eax)qKU%4n*d`QPg|U zNj2j9r&z}ZRspgJrN<}BAu-&MHpCL5Lx#jbe-by$847t<+{XT!<#`&{|L)(^w| zJGI}!lUtKEb!t^?lT$j;UgzN|DAz{WK(W4sHhfN60=EV2mljr)KLuyp*u66$*{IJ% z(!C^ThfyCdrHfEBamcr>t&dQf?y$x=N{FN8{N><(*Z&CrQj)NO>SYx6!D zB%kDfc&Gl`_%Mf$ibW_L)d~oSFV^btGF@NjuMxC=3cbh9p!`)BVt?}+k`CBb!rg+( z1?KJTUxBQD3TV4Dx4Se)2FX8C9kJtN=)u6T0D^@Iqqbj04nS^4lR-qlOXjQTTR$C@ zEX^2Xa_aZpRjMBdrKMPj=-FgRtpNmb732 zy9Xa2c0|Pea`3s_@PQ~@$S#1>9mr65*ZewbloIV&LVYE@CqY2$wr@C>4urV){=jgt z3UG;~S@BPjT&FdMbEGi*HYyD!f$-`8UC&qx0#=~gVtEUeIuOk0JH+s3`^y+Ue}7Kh zSj9~JI$DbhNK!iwj(codUe+nCu(+LCqkU$KQ>Nq_w?w~daOQ0I;oY}C<$b_Ayg z4+937z!l9^e6~D9-eBVKfZgG!eGmsADOG#Sa$)xfm@cvBfLO;8vMz#nc(3raBp^(I zDmjLd`VO(csuOh&=oc(7aXXhkI>z_3V~TZr(1+d75p))RnWGOU8kC;nXOcOZXsocy z)nLh4OJEU%H5Y_;8QMcZcqGm&bC(bwxUwUK)5R9O+p0oYD{o3$MtAgt6h zfF7Vy&8|{)Oq|o4SSkCy%x+UdxLE}~P^<#8+D=ZTHVGh0eiVZ?yR)qJgVWq4ZHwLA zN3F%u8Nr%0Dj`x8PTR4uPqmmYSdmDSx++~#&A=r!Q#wIDsk%96u1se>Zs5#oT;{bB zad%Q&?B2_Zc*w~+6J~I*do&!wJdaqjXrM5>_*mmDI%szyiG&bRjIP}6-(efHV^8?3 zCN-e}>skI%tm9CTcbVJe0wbj(t1%9i2=BnNpLaz@;mHt<A*r9PcnH7}9D!8@1N(I3tipLR?BJ?^%_1dyz}&+?;;jmMbX>_0v@!r<*Nzr6 zO>B}J2LTNE8tCx7ngNY=2*7L=8S;=5766PaLv6gp&)PwUL}=90 z=oOzlz6!%^683`4n2s^tDP*L2NQ}#SnzC@Ijp9<5i%V@3m%9Dna#9ADDy(xRF;@Ww z@4?q|J7$kGmkx+_L1p>+`JbSD!_{F2J&UXkY^BXW5z~sQ@~yGNV~Dz-V?@FEv3v8* zY^KZ9T}-SdGK#1DN8z+*!(k5zI6Q?i!L5ARaL!A^8BMz^r}j=v7H^|K!Z;pl`#L{i zh>g?g2Ia1R;qa$a~XZU{_EymCT3O2r?Qr&aAt;RX&ZT7u-B<~I%gXG*9c%z$8e9T&VO|Vf&5A-HpRHu+5{pO1jKj z_VWkNekRWZFr511w)h$;t%FR3oHowB(r|r>`^az_d*YA4?fhAf6rP{IsgfqwSy_hX z>m+{}l;>efUj{@UYzhV?nF}TGRkM1{y~dHGDt7N#1=C|AqaZX#*BEN}jNLoC_!GgYtCeDIVS1ptq&oF?%n8FE-$lU>zh{r-_PEs^U$;j> z4`)_Lt;Pf+th1PzSuxz(7=G4bF0e;nk2CG@F?*b3j}!EGM^huSaHQ_VU>&}=S{3+< zJ^o~m&GvXik9Sf8xRRMaXZB|<=QJFLj8tJ{h75860e@;ape#Zb{`kJsUiIGW-#IzG zMK*DC*@@H$uA9MFc3}7!hb323Cc-R^6E%7Qbc?W1@4w4N10K%xwQZZEph@MRl%^Zy@N3&|MX6TEVWGXz(*s+a^_X zQLGaUlB#VZpsv;0sHnLm!Po`}Zm?{ZXl!XqE%cXry?XgqY~$5dtl9>mh#)p<)u=^d zt?i@{ji5D%$p3lXbLQ;q%ZK|zJs$+`~>5J3k#MQ*HlX(_Qb zkvnvX6rqy>yIgRnb1MD&NWMbn8?tR=9EtWg5sP!hefw-iF)~4nWtFq63j6zMg<>T+ zm#oQ*Ddqd9{bM=dF29`ud|^{gK%(mag~h{)*K%+H5X$cn*hh}qlh$Jmi9(kqYq3@$ z>$F7N^x(bz<>cLt&Is&shxTuuu6(EX+N=$)j$nY52YYt z!>-p1D!{*CUQw#dfQ1H@HgmfSxj-oPNZnH&Ma@#DY>aeZ> z-mb8<<*Ywp-#A|x3UY)$q_xzFsM|{Gcy;V)>o;8XR4&+{e?d};JxOB!qKL!8>}lX` zcBZ0)0;?n5l1+Y>l&a!rNB1(j6umrY2B&yWa~7Sc8k|=~SE6+FX{oB(yGoD(^Eno7 zuRXVDM67KyD;Jarl@Z_6e>`@7^mA(&H54Kc-_$7&+BZdRR?f`$CYL8e$eQDA(w;C+ zX@*7BY7nOBR%Ww2=$H7|FLW$d2fE{#+rN<3DAMuA`?$H+KJJnWRrU}xAf?iDu86{! z1G+=O9LX%hp=EG0p^1|BcrMpO8UKp3k_O*Y6{6GNnf`Vl%Nnn+emqq~Kdb#BksLUUVKW-I=zvLo zKu?stBj0rlzy)nFZpacQ++QkJ9<@8k-Q3jM4=(SFd+0*miSK10??NRvP2Cu!0<;ME4k`M)wHk?CV( z4euEhx#!NujF61vwVmT)$R0fycA0 zp9L1r(y<3pYJreLilo6=U9t8*9E1`)Uzt)cl51OOImLrOsh-bZgj~}*4g)Fop(c)D zDAaj5h{@GZA_qkRrq#RE`J_lX>DB?PTmjdrQ5SeTFV@cji)VIa5?Quh98x5Wkdoy- z0G_YX&H-dnNKkDdk`fV(LzlH+xFZ2lY{USH6!mg2K~icp3iU)kt=`q?cUr+Dou%K& z6>#fy0RoTbUi~bvc$Ne4fb43(IiyG$A!Qc#ZS;I)N@CQZrIHf6SeoBUVMlTwF^|;PG6dp9L1r2|feaC`fcjku+i}PjgE} z&sU}-M#I`sRj|Z#&j~`Fd_#wz#-c-~wX}t*_p3_f8QljrUBv>RMDilNh#KcYV>%2!t0q_-t-K!uQ=jStO!ro{@+B}* zFISbyvvei3{mRj?yl)fHrh~R?ZuASd22-Cp^e4#)Xb8qcLwh+CCWz~HfDkLuCq4+3 zc!=9KH?yAd1~J-iuM`DFtiw#ZaMZxo4b%2UTCs zW+$Eollej$=LQt*G(lr+%OqQ<66wTFk^bgu3ytEZc8s>%Pf!SL_!-L;$-WCeMxzI}dUD znSB&9rB-hhNzbb@@{+0ZRq(wzQ4A{ms@wu;Xwu^6<6<*LVX;Ugo+mOpY_zKI8Y4Ew}UvD{yIZ!O$Wd+tc| z0v*Nd;fz+(2_a&Vo@itt*Ypmq9o_$S$ML9_gA%I_>#_tet=>hnf(mc-+R`DNPOiYe zQ@kBm$M<+%shi^1=^cV?Bl#b?nG1WHJOAMMSHCl2_ z@Ay1u`pPdHn$*j|&l8uV=maWYmYY`ZEd5T?BZ&AuCf0y%9wx}BNUSknzfzFOE937V8~V8<9RWk;r93*b@(0RCtNz& zV{xv|C+ZNXzg7{C_WdliR297-Y>pR)RSG_)XH_n^O}@8azu){5SL`hBVa6wz_KKPGo3mVx>N+?^0=xRz_uf zbOh^PP--DHZ-q!+JA!`kYg%D!$H_4T@FMQSTN1hOmUIr@#}IEM5{rWZ(TXB-&w(?L zjUL>ui{>8Z+CL#GJ0zfyt4ozDa;2dS{D?blzV>6f1p6hq?723+bhXh&=)K5I8^vNR zM0ts#*K486dp!5@8A43b4DjQWYz4J}b?X%siS|qG^|_M>8c0 zAko2ssaZ^m=f(P2u6QPL{4VM6Oa%EX@A14^r=u-9fGT6O zDWhMPVdt0OejQv!HvvJ1Tv0|Xh5R9QxU}zS7tY-!7bdBo69=yb+U?yRW0@ z>8dbGU8bnZSM!S2vQkC+Wz{z@iy7^sKzIF!r0jXszU$kpdvh}!mXxlSS`w4Tc|`y# zBiYSgRml)MqKQrC0UxGP%E+4}{-h&slU@t078`9=i%xNBk|a|y;xD<*@xzYV?F{EGKYiX-lm1OXa%w( zOu&9hc-#4a8sLlPW-Hj~zcNtFHG&v}ai#ZHxJ+5rVsmE0Q&>HsX2add?BzYa$N!El zLF|^U)_Gvc3U-5VeU=5dp3j`of~Ee$Bb%mjdQGL8Q8JYqHDG!G3nf%dJEjQKWMth6 zSCDMJjH<%q7|Tr>f}3u0z@zq8NjeBYKPh>F8aY8iVvDZk&{-j3h%!as;r}CSqo?1j zchB(|S2lD3Pgg508Vxf4bK zlWi5ufEzm2RFrJCegdw@xWHifn!nRzr4-uh{gRDGUenmo!SlOfzb`J^aOD{hOzv$w zpmlge()|vQ!7(uOj(L6 zi894y^}G^j8s{S90reg11!~nmi#1TnU(y{upbibRj90KlP8#Rj84_+^{=ACop-|&ZO5Q?)I<>5I1sD0Rv#$AfiAkIAs=usIM4V#_~l> zSVWRR?1_J7T=v0F*dt$LdHjaSpD3qg8G%w!&MnBJ{`NBZB(!UZSSNAEbTu?>PcB<2 z)Sq0IC_df*(WqCB^YTm0W-peB?Dj?VEE)EK(q%&hL~Nj=1`og$)8Bx`M{0@#igBi2 z**DFiW=h+6d|B5b;vwzI@nx&=pfzBGXoYB!`s2~371xPAX*ZHVGoAv769JVQ+wai@ zN)!oDtP=42kz4{R4K(BSnj4TTZB7~uEN`+ZubhUDnZmQ^Pq4SZx#+&4*T`bKAFOo1 z+U+Z?%&AaRVL~H$4U@3{BqY}mXev`P52sGx;+>12#@LskYOpc74x5&9{V2X)#EJu3 z6jZuiuN$G3mpaK5viR%a&pdV|xzAG-{;-C~k#Db`nM9;biv6WquJ^62*9fTkE_j2J^PW(_vPJT48Tmmh>A{QC> zu6|@Pv_sdM5Yy+m)*2ixUWX}k*%{I7RZ-{3%FX~W*i+GY0lcNsaWcczgZ~7Dzo&Xh2Y% zpk3U#0qdqc_^setRoVK8sw!P1dw}22U(|@A8^0qBe#t!iC>B(o&<5V2vVq*}uW6ji ziE{;UM(x9{|8(voV8vt){+rqPWR51-Q~Z1XyEM7WKGk!s^{lpIw_lr5zIBO6INrc;NVs-zmMN5_ztc0<9pv_yMr&zGF14^+dX{e zaW(3v=5I%@AK#H~d{4?=p!o}J1&=MI8&yw%wQHLSpehRC(T5dWW%}vyebtZe1*ts# za(58u1DelG2Q$oe;h1!Z-z)!}-`y+t9p?83_gz}RAAEi>8wRvDn3}>(nNkq{+7*74 ztOhJ5;7zUEAd5Zs5M9#A6g^F4%JDHwAyJe)JCmR$Hco34ZVxfJve9(}my%Dutw zt|$HaaONci`27dL-d(GpV#FSJ#2MIgO1OApVZT>DHh*Vt;9GI9pW8pVxB$Lae-ize zyjSpx|I5$MZL}%)cdjr3YgZ%QnZ)O4hegBi- zckN!mFaEM$z6TY;?`pwsH{+Gf?2-D^{=N5cKYnv&6yV?08OnDL?Ro58!8iVrAK#vf z3gG)A!FM2@zvK4`eu-E8 z_`Uuug`dQq$I5PGh&L|p^VH&=`fdgLdp@;1YXj#4m+kB?FQ@k0#;) z@%nw=bmW;IO|T@@-mnw5DND}ZV70bjEWsMu!{2K!*&F=r2x!l3`-V&21>#|K!j;;Q zH1pg<*I{?6$>GIUufr?3Sdi91^`178Y6F;lnns#?6S^CrWI9@Kx{;TXMjqeQ^RC?f zZif;?1wuQh0()H%AvHh{%@#TpTR{h6B{Xu8F z>JXFmv~6)Hun$0T2EY6#k#GKS289 z(dV0R^#|N{flGf5k{&0vSBur@VGKZbC;pr_b8qOk3@3Q-JE#zT>hy`-#Ba+C!S7T0 zkJ`Wb>#I5EJMu5+Ke~SWsr|=JF8ch`{<;5Uzy99$b(j2)<*7E=Gvm^uW4q1|gKFkC z0X_OT&%qDPz9iIF+JCAc2#eeE9;}K({1_K$jD0oAu=dkv|C#ZuLM-Sgf3g1uZZ~LG2^K+!emrL~B{?^_gUY0`+7=-e>T2?i??{7DKQ~3R9@&BtI|1-~X z{DlYq+kZhXv6t}Q$wjT7x_`Da;@6k-Gzb5J{w~q^sr}vLy@G$kF2BF-srgv^hh%^@K~704pL=bql!7f;-C!QQ|x z8PNW?{9KnmIhH2p^A!R3OxP>JT&iU@c}tG2M4i#q)*Oy z3v+hdX9(bE9lP++;+yo*;!o|y(c+37p899P`Flei@d3ZSKU-ax{@h9BIr{Zc=8FDY zf*k!JN12DP!FQCoM=L!182k0T!Hg$-tvOo2LnV<-`j?4W<*AsRhoq z@Uca$oW3gC9?A3qPA@~;Ut*_D1+X)pAl7z~%yN}{u*FsOTwxkI2`<0`w#dhBU5h3b z$mx*$oJP2ELd15ipvRo>aAvvW^bBMbgwvC!mq z;D%25l-=ykrE!*%12}XpfK?87IMZSd6+t;n&C6jdfhyLGRFf$511yOXF4UJ#^gzSX zKaV_jp6keyo;EU?jf4cnEhpu`1 z{77}|x2V_3txU0+!IF?XC|qnG6m(=nzp-KpC0y@guG&@K* z|5F7nq0a?CjESVr#nI!&uezpXG#wB9p27JrS8+Z}(_x(K1o{NMC6{pmA&{z7g0)1J zc%UquGyc5vp7VbsAIBwW`8X$s$L*P)Og=nbAj(;XkY@`t2HWgDzD}f4wRPT%8lL#| zobvqxJl>PX3h8H?3RN}O^i^;RM*v_7QIss>1mlbLqZkvD~G#YHQ0~ zQ!vA*2Y(`-2{0c1O{fmwpPIh&>GZoG|4zZU1Jz{D^n0Eq_@bjj^t-}AwF3G*?;7fM zxoD75W|3OX38N2?Dz4rdjXontqo0#$m(0!R@#nR!vZ$7yvXrFKQyh+_9;m04;rzbm z>;Qga3xQAVPYUvTBgO^xoZn*=zJ}ips(YK?-}w^w0>81h`91k-0sQ8&8ON*cssAp> z@0l3q*mHibI4fVj9aQ%=zu!CQ|Ayb2xK7nKU(sO}YIas}l^B(v$t0}IcvTw)&IkND zdZb}dC3zO*@n6@f@?i8WtbL@e3JSWKE)25rx4%d(5YkxragvEl%;lYhyL01L#!gt@ zH2V9|b^GdBoBOKpVx7J^l`*a!{2n<|_yPP}@q?oF)A`pD(P0xma5k}Gt{fG&$NqJK z!q>zP4yr1C_$dnwiXTwCjvo{vh2w{B2g%{Plaw}A=H!5=0TG^&Loz3a#P{=~2Is)J z;HbePj|p6@ntoF%325W^Qu_z8UJbDeBoxi8S@_y65Si`UYQ>I`H5UEvBqKN$V&TpR zYVBD1yZDPPqr11oX6(N;cF`JiM68z?+$HQt>fe%=_#~Y;dnk_gL-GSSoR&tAiU4aI zr>5ahpK+yjCAbXwP(G3rm)gtT-MI_T2psUYxNJSTQMSfrt(9UFynq$C!4Q^8;#Nr< zNBv6dbbecRa%=u^D$h(0&QHZMjsAfoH{wua-9*W@&t4JP7K@)n0_Aho)^yLgMA01I ze_L!8az*|qZpIVaP=-J8F}cKbNIYW$%qMm;kKqL*8aggQ><_;oi+0{qm$%gApX$;t z7hvZ4dE_}Q>6Pc*BOyMtJ~HdmuPxXbJEoiXC2s|-I3jZ4&Q|0VOONN$%RnhYyT@U^ z;Jgt$;gW1hwkIPsm#?W_IIKWnoC`9yEH0&ZQJru&V zcpro~lqm2Q<9{Ntiy+?kn6ku$l(h&BjLPM4uqTfum4}GgC`vA;x^C#@i^%8+xUMy^ zo32M>4SO1g4T|Q2{V26hO0Da0$wJ=uD`j)P&tY*ZYz3(>*9L!;x;lE-Y^We5)Z!zC zpmlKf0uasgDXmLpDT$Y%c#55EWL2KxsT9;arkHbSPMLx<&yzY>^MguL zRPX!hGDlrztIK!fg7Q83wq>%`H>?3ky@lgo#*b943k@Zi&5hz+aYEV0-OIWXx-f|O?tXkOR`_6c zE0*>A=E#V>WQ2ncnpGuiaZ2+sQ!faXqquljeY%q!2j)Ca9<#@RN{unHz`%R*V9%&m%$b3QG3&<=zaSJy8gLULJe~{`r@>QOKjBzmR!357^I-$v*g*F8IX9!tZ1^ zgQ1`0A8O#Ae%*RnD%l+NKKI z3_Z-2c}3OuBZ}4-To)`PU=w&0JcF@fTw0qc#yh?d;zM zQ#-Yq)G`~=+B)f(_qRO)&M%nw9LSTPOi?ff6p#R5eO#42AFDwe+TamgUl#m>bdjtv zJl)u#34J0K$ryZxfARCsGgi?9eu`}lM;4svmS1N8MYsP(Styoy_=R|_B|@A`QWlgE zS&2F_J>nmJOJcYJhet0{&f*N5MD!?8`S`VvM6^jnTOd-<`Y(wkovq&VJxM)x)kxEFr2g0Ce%Q^Lue<0XU?cNDiD zd2k!nWO8N>{=i-7J|s9unRz6OmdF?$%h)>)J3yJ!M>d0gR1GjloSV$AEq_y~V(snx z1d{8l4B8i{#=%I-QU_>6?a^SmE|RZNu5??WPfXT%=>q25D4An%m{a7Olq&AIYMzw% z)SPn=1w4l13C_aV^CKk{PSSj8&T%T$DGI6Bk~#DrpsSuFH4v>NCD{y?*Y?;uYoreP zx4OKoF1EV7CKtD`aqpG)R~-3_FROb6wG1e>%Xeszv!IfkY?+k@eyo9KN&=tz86Nx0 zCufdQko%SdO#UX58}0Gse-Han^7L_VtT%t;1$j%&V5%3B|B~?hr|IRfadxpqs~<;j zhSOsnpAtQfp*M#X5e_oMZN>4odT6l-XZ!9v%sJmTGl(O^X`V=6P3+@R=6U;AqvQ=2 zj_iwdLuX&{jZrY!K6Kr^NpUXx=u!lbvGyB~ac0dUPh`%%79yZk)*ef-JLKdJC`q0WOX?1;?U*IF21QPwUC@9LuRGHNYMM)|fTn}lzA zY+9xpo!)jfAEV9SGzEig0f&xbD2=>>ZD*%o(QQS!-gyYkT zOIxo)@cV^fZl5hfJ+8B9fhRmFyEkNkI-`>e7G-ihKerB7aWLK?R7TRMJy92f%#{<< z*l_JI`c@ffS9oJ%=48k3V$Cb1F+hfK`RJdl=$Doh@Cod0vKODie8das1o<6SGTs=q z|MN^FONaMIZDvmf`WNVqlB`=$!JvO>O7?TvW6+mhHzj*farWwB+~SP$bD)0Ti&tl- zM5}p7Z`FDZeUU3X4TaL?wgx43Mw$S~CD%JrxF^aZ|H&F3+JG6qqCZpu!uZt{ED8L< zzfUrLr8*{AnYEA4Qa|E$(dkMY$jLKuwH$0KSIrI{k^-_@SR}W@XFvX0K?wDGnT11S z+QU>BvdWE0L!x!g#Y zoauWc^6qEg)Q)9)2(dldnYgJ{$9_qW#Mq4y@P6=?#`&b6N)@gatVjOyobqAL$P`)N zCaIze+*zWje20Q0#?kZO6ZT2E6gZ|?2uGb#Jo)cDUehO;sgM#(6Zc5$vD<08+Lwe; zH8^Ua(LeusAw)-_}!n0yg0a}@(Dub!1a6&Z$ddUuIEVWNAyD+}hnH*%>0v>%Xm5_7t z6x@!~Mb5JyDPg9Y@bZBXPz#4wyn6Vx{C3r-2 zJ5Fby`SdVj&6cVBq*^MtNok7N`UDFFMbSvOOWm!Mur0(tED&3Tte1H8VWR@fvC$+2 z#R9~3j*^XJh(eUoLAW!8Wv1@98}I%$+LTaCdIs6#Ey(!-z4#|VF* z-HlWwnh0_hDv_0lXEqhQ5!?}%g|8@0p_kM)VH88ym{2T2LV##9$^+39397;Yfp7>3 z%lczMbk-k>0xfwDux7kN)p7ki{A`~n{FHiAdzX1jRntVYQ)$$Mom_Xs4@{U*KrQ}c?phf@G%&q7qZn99Jh$?U99jX>pt3W8*Sn;HH zl*ev)n;@C3asb@3l6uYHWUGj`sNi2B;`I(@4N9(XcyT&BBod{gFX8HJ^uFn8%U&kh z$Cu(QLo%7@Wa8wPuxAP|`@DE2m5>yGM9$$V-#c+oVAf3Gd_+;{3)b0nabB7Xn^2-(d zgte=tv~J+vqT5=Zq-4QgSe^%|0~eQOE&79otu^@Mp=MHL@HINaf$s!o)(^dG>I66ivokw zB74@t07&sqiTzg`C?&mzY~jHSTL{Vs2__3OtYJjMU`82BMa{&GHJH$aOrWEWAw1-K zlao~wPqwC$T&+wC)b;?0K=uA>;Fh85)^dJvo{Q!mQ2<%Nv&61uds+x{N)jS!pxY&? zr2o+Y1n@`edEh}jYIb}5|CS?!-{mY3C@EG}z?sNs4x4g3>S`^ckojZisZ><6;9UY# z&~~rs9^t?t19~Vl4cNX$#UKdLVhl2>7exKk$)E!n-=&mD_(^ibgP6bQPY_tNUsHR6=**etxY; ze9H1?6)6AY-79~rDj$-%8iG0>t_>Y+*|RWX6P z7R{p;RT?d-q!xYVOB9luB_91*@de=rER6Q%T0hqIWKebQ&u`UCH3PL`B3@)b$rJeeU#4j7eUr&=hByYWhSui;j z*t(jr9{ydtSMccyz-QaRE_`6RoY#Mi=tz?F0T}mOH4Z-hcA%o*dlW&<0`IeTMBA)U#e_rq}S=~L%&O3Bg!$|@jkpOPWt;@S5*0A3Y zzN4?)1K+OTF;>ph8a^rTc2P0%mR$6EFoqEZl7cjti_P(Jrof}SWP9InM*nn_1YT_Xyb~pDz6;es93n21>P`;60t@HRzDAZ6BK@^kENTO zl@DZ&>9MjIb%N5wDxkOKecj691WJt7u-`J>6Qv44zmF?L>ROt&{p?5zpDB=)>gFr|{oS5D|dck4o?fZ$iwASEV<2#}{fOK`|4MI9EEtpCKDO~`+%-Nq_~OFt9As@=yKs9auYVYPTo66eh3IAEs8`uM_+1SA zSUt-UoVXQx0DP)WZ$B`0%PM4hC0Q1``9E>Xxg(iBTUEpJ=3AK^(w~570_>^XY(2fx zDtfGj9Z_%9RBf7b9V(`MWWM!F$nelBt2W+Hg_{{8aQD3vafegdxE7V&VzCFVE{;9W z6MJ9_W;DHbW%`3i<37RxF`=TtVI~LM+|O8<_fdMwP3kK<+;?>k%tph{e(@OAd4k|m zR@KnF?+7Z7)ganP`B0gwv)^-sILbEE@=Jw>JxdA)gY?hC-<{*!{H50*cNcsI^VDjv znLXAxO%rUNt3m8z0oyUcxEEzcv_=&}qE$WLn}8wGtD+P8$fp1{sbx*~X{^@4;gcm# zh|IRnOIeu@T%C*)U$UP5z$)61D|(tPI(yR8?3u+=vooVr>uxw~N>%swJ~we_(lb-u z-{vo~Y8|EWf>pJ>rPGnh(`e%kw%cEm^2rhpKQ?1mcA8PXc@*Hm^q^A*_NYOi>r!{9pYEAk!&Bu)(lmhZj13R*Evpy zD>)l3=mt1iqJucC7sYJYteepeK46-M}?f&&ASr5$2jL<7iYEJuS|)_wEFXilGIU;u?io zeT$9sF*TVtSlFC1P)FRIJ$50;j7R1l&9vCBY;$HX{rX2pW2N6H%52$h5Mn4U8btMF zf$)-^%(Jcs`;4Q=1y#)agR3)75bY(^@K{ha1;G9vc(LQ?#SW6>oPW6!)x6{f(3((w^GWSKe4vUI{%{dU(Nt zL(;>SwM5gy-(N5?Z6^@Zs33;jBg9sM9FmA4;wVCWB!vM0~GuGIi$#c@!3V z`1{CM;VDGW_XYgHI%Z2)N0fPO@6EF{;i0MLX1?Fj?z{ih${N&~t$ z40I>}G-*Jmg@M-UZF1a}Q*S^I3N^dsDAKwp>>#-=y@po5W1A18) zXzg2m(3J-Cs4&ppZGOTV1A0&x zXszzRcUw-M0qtuDVN>rYf2qR;bVV3wh3@8bml}~4H{IH|!$4~TK%)lq=rGU@y_vDQ z)LsMn=Jg@8#`Uh1ZqPmhdT$tLLjY*M0i7EL+7SS18_-kSpeD>Xcs9sz!i;!-P?)jC zuV~9obG*PC*X6T8vT(wTrv98t?IQc)bBlhk+*6_-XAkpjH@Y!=wIE`wi&WFwl+wP}_h$ zLzQyH3VABg9f0tV0sVOxXm3EN!v=I#7-(t~&uW{^&T|tgM@{&6co^tVK$IOfp#Q)z zas_Ga2ndzS4d~rrpj`o=6$Z2+479(;uM(98^h;r&T~GK`!ZM&ATpdDd?*>0;tpWX0 z7-(v}AK{b%Z3_eK3TPJ88_?=7(C&az8w}`Y!a#>M`DtBjK%c!TgiXl}ep)*W=&~@- z)P8;)UTHut4g*bW@|W6WK#vFmP3j$Z-ImjBK>x`T`U;tPDgbo70bLaa8h^ph;a&s! zA7P*s0ib;b^vhwOk!SpD>NlV}z8gYoA^_Ajpxt4h@jgGTLk4tF7-&NP=&%7jCk(VB z05oD6nXypN7ySrF4d`F43}e$@{2VSZpuY$MP3`Yj|D*xEBn&k9yuVb-fF2nJ+8I!4 ztpT;a6GCf$0BD^7y(bK`v(Jxk%7A_^40Nd9FPsJg`js%yctA%Rqq_yE6exs`}plicGlbiiIY#GoWhJmJHevepd zKx@K4I|D%L4Cn!2pdI?iCO4Z>2K0Fxc36;2kyre*HW<)fhJkhjbh|Yh&{P;`tKOsB zjc|tnEeiwf4d`}TWG@#Ue1G+d2bZD!e!?ppP76w`o(6KpWKo1N9?fi#d zI1Q#3>jj*ZSddNK0iewWba@!)&`v+CD-GynVW1rWoqb&f^r$e<{%w9**Bj75oNHK+ z*2KGh&|U-D6$Uy~><8^PpiN<*@qjKy+kk#G474KvbjX12!Wo1GY3<+cN4UgvyFD5P z+WDa$G+{t9VW8aspydYiyfDx%J&V@u5i1NR&s!`=YwiAigewhbAC5vS2%7xJ51KTf zE5bk<0!pkR0d+%C9~N9+hdIAuWZ4Fl~80IfHmbHhO6 z?nA(JzkY)OmHmwiA>0rE+G;=}VWoBifG#$mkKwe$f^6yy0PQfKKMDhF-R0M&Wd?M5 z7-+vf)W)s;od$GV7-;-Jf2myt^hNGyT#&;7qY3K`=&#(MrgOgeLS)Dp9hg#77VUR+ z&SOAdo}Hfd)Wd$nI!xba(w(~(v_GJ`yw`w^3IlD>$KAR)*=+hBHheRm9eD^R0y@H4 z4d|_5pq&Ar%M9p+VW5$x{A^lnKtC4>8qjqSH|?2Mz7axetv-ds&8CC_y(0{?bF@FS zDmS3@VW9m1pcMx6_%P7abAC2e8qlrON|&1F$+bJ6C!pSdJ`e`l{~156!v?e^3^WlC zfp(dIZb~TVfdQo&(0#%{QzxoT6Wwx+n3!SX1tDxo1(X^!pdDeLodKY61Nx0H(8%k4 zxt18v&xe5~0zeZ6^wsl2XiWxymK)Ij4g*aEfL0jLtHMB&0nv8SfSwQrnmEX>5|#no z_Vo~2Q~&aFc$ooR9R@nI!yn^!8qj%Rpz(lF`ECPxMi^*!K=2wj)zZFUpq&%^Y-%>3 zPu7O8De(nA=t={6TPWz^e$dqh^qZleqtt13ZhP%Epoh9aO%?oJ4ajh+;Ne&Et6+I{ zs^Fl(vmulFBh&NQkp~(yW-)9)Zwdnq>f4S?bw=mU4g(FE7#B65V?sd#I``rR^y%}$ zXbtM2GoU{U0}Yy@mN1|*!$5Oq$WU&eZ`o=UDtwwA9bdF1FBK=b$dY&hD zj?)W!Jo81{U*}4(Hxn{n^mgxj(L|5^;dUxpJS^RHQjpDKrTyZR3em#& zyxp`vILC?dvfs!2Do{As)evJ$yNc zKx&Y#b4ZvRFpb~I0oeNRT|xRe-`m00g(XmyoxwPt0C&Iz3+;Gk@h)Lc8m(z4=Q=7* zDaUN@JbsK`okWrL>er-@X6x~`(k>!_AMc%Am3hBRy_WZ#uKShd-c3GUTG{1lZx7HH zx8M6VS-|}apa)o!!HMIT1`nRfrY&4I1`1nWE{oXzx{FC$xNhMCPSJjR&1aC^HtTMZ z27qHU*<6q=R9_uuR(0gJMQnIeD>s_VNW&>H$Q3)OtrGgUnc4+cN9^QVTX$V_ zk+rBhw&*8>gNW*^3|375^;W(B>L_G+>0+7H#YLOk#t)MKR(A<6sS_4eX zR=k*l-i)&Iw!h_ZcE(RR@l zaFOmp6b9>d8ov~lzjN%m-dV=}%bUWuT1@KK8zg1MmDYFEofx^g#6BAzMet28GH(=DBv}@g2v@ueAENf~ zyo?zj&tj~@!OB6>YFP_=BHUC+tm1mvI7ikz2Fs+LGHIYpnz?6AD>(*A$-RNkVdlRW z%^ODx!=tG;j*y!;QLqnUXh{YR%tb-~s2}Mq;Vo|xyfLc9hkXAq%0B)TQ7s%1Jie^; z+c>Ti{u0{qwzKFOB#EL`QnesRu6Cy*Y$#JWC5H88{q@``qg^&vpqEnfpX@&}utOfO zAc`M%6}+n#k1F`^9g;H%5U$`m-cav@*5|I+Ecl8l1}GlaDB)-SV>^uj`^>=jAQ#!x zh`43&3LJ;b_+DuaEDGQ2E59kKGv;5$XRJj|L=Rx%CvQuE8SAs9BI6hU-0?3viR#@9d<dlKx}=ftfY$zma_jht*&;*qXt^ zGB2ys#50??vI}+zLzeOuANZkYB{YC$4|uLkEP^Nh)sT2{thQ5|d?iU;LT}>8<|56Sa|k5cB25qR`}Y@gU$9cmcSzFIORWr2SCCU_oJDBApZJQ6n<#R^U^ zy8rdV!BbY}QqzE^@Jeu7_LJ;Q!GgC=ME`^?p`&Ja4_?zLe8Z}Gx~Y~>U@r6tBC+@f zrPC|Iovb9JxRV6?q>Vc{RFMv!1V~7JHUS}awWw4Ws-y-?$i18XLEG`rJK+W8UyyBa z+1;?-R#fx{FvcfsXm2dpqT3t%SY)?fiREsqCx3|c#uSM4lJf1l>?dAD^JD1`5SW1x z64XQNQAj;vAGYls5j(VLyo&DOM^dbcR1JMNK+2ZEU-E~Fx~v2DXh*Ox)gWP>o#XWO z+Wr63H7v8R@0HdSG;HueftNpd^l4MCdtQjFq$Sl$Nw|@Uh%8JxXBy)k9MlR9klJi~TxxsUrgyj`5!!`dK>~F(#Tomb!LI;6P&5_9cmm2i{B(Py z{J9*z6q~@WW?>x22JRASnGo0Ek#GyFkbr>|PXTU$Q9Nk^*f6}!QvJ+51)Hkj6O_i++bM)#(q4Vz=JS zyX-;L*!HSAJ2TGwn=KrOF_9a+7R~z_@t58K2o@h`bAgc@0a6 z0dvi?4cx?F*JH9J0QUbJKuj{)R;^2&F+xV(wU0k&-AHIGBF5^>vDKL~aR|e?aa2B} z3J15fP`|p-xOVFM$JZqA#R6S(XJB8=>RlUH^*~D4G+}!pmVSj_vD-}bgPWdIKWs`+ z{r+p*jcU!7kyvFv8r$+!Pqb^W2s-^(MRM`6PJ-vHHE)e%&NtizZbjyg82pvan>#>b z88r%+yRSXvpF)VkDL4@@>FpYAL3fgt25g2eXrleB5muWYAfiJI-9a3|Ke>X*Py_BI z15Q`i7hDLTf+EB$59?k46=2-yFvaeW8VY&1elGoJE4A3Q;k!%qYjUhvuD=z~ z{>xm8A)Vfc@T32H<3`uRvaa#S%_rWU4U3ejH~*v9J{f7T&X*I%SWf zjq$2IAjbm*(njMcM4S3nfVM@{J}qcNn?QuqcKqKR+En(-rCW&7mFFC7>a&NoT+fvf zosc&gL%qs=xk3Sw zmFM>HC#@TK0wv4GJfl$VKHDa)o+-r5Uv66&RLJ8>s~`OH`xm@^=Pw^kRKGt^jjcA< z4DX9mzD}3=+VSlB(EAM{T=Oz4&pqfsDCZ$A%y|e`YdJ_M7EI5v#Z-4rjnhqLyVw)p z>A&!*!yZYDYDxj=tK%?M$?H7!!J*f|p)Zy2vXF~n z=&6h*z>GJckQ!)}#YB#z1R`8gO`9D_sqB|46hMVM=ggRo)tU0@OcLJR!j{u)xGgVj zHb~J+A?(^^pZ_krloK2x3>TC%pLCdorfI`NYWhOL)imup7n~x8jFU5=)xt*^y`ejA z{lElt&e-jLCEn0P=jV$5O#7gcomHxRz%II8otF0uG5E8We#Cm_Uaxa~--- zAa0JZfGmp%c~h%y+@m784Uj><&r2)Vb(MQj-*6FnqS2r7EPHm8HR@5UU!bZ&&k>_U zt>bMh0`_lT@hg?fYI%WddrqbLu#W*XpVWaRyh9xb4Kop-(@)e?1|2W!dIZePBCcm& z4^O_u4Z7M3Abz+YzElsBoq_h&a0K=+<7K59SIc=@82IWSO0Yw@X7D<5PNkJWdf-iF zp-TxK3c}N&S{yeipekW&J&{iEo5j0w-bo#R^tte-(#AP=F744RfcERr(cFRpR5-58 ztXnuFnJzC~uOG_opWq-k3zon)^j%&2LZzD4J_Q?}Vl#E8IRP?bw`>wX*~$)hbn}V( z*%ec-jkg#bYr7L)aJpGVb+)>)I(rd_&JVxxT8<4Q5!m{x+cF%6Yp?in62t>$#qOE5z}C= zG|j@E@-!4yH$d%DDcjTEGRofE11|GCJ|)oc5}=DbVMUJod6y!_E)B4IreLQlI3;KR zd&Q6hyaYV#D+;rSEBo@^nOfv?@!(B@@m4%yLk7?J7c%Y<9QGC%FyeGy^2Xj}#BxP9A6!MI+vsW89W|0wuM z^SuP>gNjnBY*gTDf65wNKRH3cwHuw84WCipve%TT!J8g@fo(>efhT5$pNBsaobsHE z?U_Nv?Bgp&2KBEgv1fUT@#Meh5idQEe}ae@QtW}H0fa5x;1GuPspyyrKVT9(A{Sl0 z_G?JuqtH|SG^cz+-w%RHJIYs@q7SMkoy*t6?KwfE`S`i{VWC(23)Dc_i|DRsvD7Sa z`-hYB{q6X&TA7LFF>%mIqqs_)U!%N=hrV`IUL|>iVpMtF`imdysGVS*_Av=N&6C|- z^=CK^Z!nx<73wK}>>igt@)MQ+9Uaa|wG$ncbMYR09{GdjKgSnWdB+zku>U235}D7) zk45(J=b#a=?04_%vPWVTkbPYbh8BNu*n8kiaal4qv!~X=exl`^hReVQP7B?-VAv|x z)M*_KQoTn)z3n6a366o?<&cVq7sHG!lf#VI+8j=<)tSg+h8bC+ea;C`Ys48PgFiw( zdGzV=sbL%vkD#fU0pMbq5+d@Ixbnw)hN}Ew>uE%$jnYVPX1I;VK|ny?{=2-rUya_& z7&nzcS2*e<3a?u~h%COabb8};GCiuEQMU@@p?flp%<;n2KE~K1uToZ? zV3WJ$XbeUyZY%8smW8kfpPIp^Zi;*mbGl?iag20KLz&r!VTu-~h`9y!e6Zed1#P8e z%wGn;!BDlyJWP{Q5Hal_$?@=UBqP@L5K0kt-Fh$XFhCJ$oUl&e2bnKXy{{SFj38pI zEv3@|$3U0kc2yf&9@IqcYkf%aH>7IQQ4|B11-|6w9@FMymB&l}7z4#EEO0P zrWOk0?x%KIO74yXuw75rfRBLK>_rf#pKz7|LK9RcLp_GXc#;pPkG1_2=#cKFuSjpl zBstf1L+sX*(E>O07f>%HATUMAU(H2POkBeKq9GpPKf72yxxCXmf!?)lG|+UUme-(t zA&oJL!G7{dY13dHr5lTZA|QaY!S=KI_hLW7mI_yc+%<%nB&=z)W3Ou-T!ikRBpF{W zI&<@Wlx^(yhqmrGrirgOVdz?g4iBGYI(6D>IpHx_GaOma&65%)J%e3@=VORMyaSJd ziKRKTs1@bdWb4kEu^--qH@G{d>DpxLN0FvW)!xM@V?RwYb^*uPeNW@f`>2FD7BBfx zc{mX2))$0mG*77`8dd8biX*zlLD@8BUf_7ef$xCbEWBx}_4qna7a1JDQj-erTvkVW!eos!G9$WMR6N5R;goxd| zhL0k*6J6lVR)#Fn7_u9}PJEk_e;e7Z)^jm|IOh1Wm#+=s09h_G^fqvQFD8j`R8odz zhcNm{b+|;OQtD8z)j<%A-O8Pu6;|4_vT#zVIe^WXgE<6orF!gVpCAI1R&3E_;>@LF zFAcLU^Uwf3a3^gjvY}gz)Xm)+O`ly2$Kz){98Ih_P}z9rB)C zdRnq_Ft+F+`X;ha<(whMP@C9WnY-3dh!rNofC;REv(>GBsS!K1HdU}jq(idO50~;~ zq>*!&QauPxr%K+~OB^J`ZoY$wMB$Eax=|xLH3->Sg4J3ErAvVlP(f}=D5$wU1zOy` zK3O%mU@QtrR&87`itH}3Fm25m=wN4P>*HjgeWP3`w4#Bp@qN9#5KjP(3$GW+D|V72 zvpmH{&mlGh?|p-@lAZ{N=RWuVC7U&n6;Asx*+)vY(x)W6WP5Cnfh z0Q6wD>I(#c%t-mFw(+7^rrJ1?k4hV2ZIS$M@+jXfjT_38hN^;UJ*Pl?!+BgaT9o zU~|)G26@Pqla#~}{y?FSQ71FdCIJjXaXbecjW*OgSXMc9OvC0OYHxp3)Nrd@a`7+b z>#TRpr``4&2x;M)tH~8ON*h=Hct50W<-XT--{-pTckU6TbmQJ4XK=q>?$MC9kBH(e z3{SqI0+25fDKm0fG>Vdw9&3ivi#BuiGdq!?^u$F84i7|z9)d3;jZ=x=$Kq6oo`sK+ zTxmQcFP;#we>(>}K&erdx{L)mG1ud3fF2ki(X)19;>pxlnM~kZrHMtu8hO++4`Rk} zmz-ihZogzwfV&Phh6#xSh=By-&V&+aQfRhxGBbP@FS=45ma6uPGoP95l|{$0GGpuN z_j>SQl}aQh3_4x>RAXlnH2L3zu}s#|9n3Z-q#sHtZXh<@z@$!ofNzI8)lM7_=on+L zjA>GL^FN!@Lsc0J=&WC_OwVm7w(S&@Y()J^M{5iABIvByV6{X>Nj?ZP z9xOfxG#=naa>fFN7N(R3f#t|sayUaLhYRWLMNOv~OT?U3X@1tgU0`(4IrG*YcRNkR zr638h;$Kq+YP46p**)FjP>rk*V=J)@v?3*F&GSbc${(fh-oE_T;*Uh+uwRZ=@<)5; z#4P8&!gbG~Nauahxku3@xM#UcOKvChGt=|ATt5?r&%?;X$|(O8k#F>0Tl?seWKy?j z*n{a(n>3EK?|1;+3=1D6zNkf^57`-)E_k?>}-`@QZO5B^QyOyHTjyLrHrt&J2KMBEODRl@grB0Xmy3$+CBR>$H3JikSCuNoP`*CN z7lN&jCf`>x56WC1~z4(Q-A9 zF*kJt)n9RGY9Fkc#WzU{bWsSMAWCvgjh%YDs@lp~ipn)~9?`oGJBF*Wb%2~=p2LLI zI2&l7TqsbBR|J2d+DYip(xzyDwuqS_O0FANuY3S#Hou%dknzOLT+Et&6GEo`W~d~x z&WsBzcy`Xcu8uKI2yLI~>J^g{l9PxQuvi=6cM_)&y8MmgKTj6Riczx%EZrQBG@>KH z0{hUONun0H26EY`kBt3{rMjMuO)iEa_SpaLA;lylOM>fi2(35G4u1cM=94gtdZrv0p4NjM`OI8Q(- z2A5MywS+%$`(B)orOIiC>eaL-l|Ofe-LtjORSO5HZ9v=Ly*~(L?e%dK1TWzls?I`% zWu(UE7x%7v(zvnO1N{>gGy1=#5Xy~aHI6DI3WW1aTf8gH*_}^&9AP3@}qGQyLkz-M5|Dm zNndTmJdI)~1DiTmNPtK`1CqgsCE6jjDR;i`QDP^NHThCQ81a430u_noGtgezVc4=< zW#w=tO4q0JvyWfxxFw-h`k$U0g#@Z|3LV1#%cn_CEUqa%y*l#@MV@4toeR|B+msgC z<7?Eqhdb#xB`=5w9~CL;#V%$H+Q+E^Ow4BzY(`f*9H=ge%P7ZD`BXJFvAETtL}zR`4t3-f2D1 z=}3J^v->BN1H=?IyEa{oIyESbPq!n$B~^tP6D+@ly5>xE8NkY1JmyQ`{EVGPxDTNET5ya0!FyLBV5}wbUdIovlCBQO z`j?(GUn4f@o)Lo1u~Z3H&gsWSSj6Yj9FWFm3g0M2TJ)Zyxv@487BW~&0bsRFtnK%_ zYtPf?shACsug|c13wju9|B|%3-29vKA8rk9oZ%F@KT|sSx^dRrm^0D9p@NOtf0oI| zZX;r$(Eq`k?IZ6O#ZnFP!A|=ic@|@gExJOBRFeefc0Aq;Oylcx_Xw)B#q#AlBA9Lx zjIi~VJ9)E9hrvM!EY5ur5-^2Qz%wt3eKnqg1#_^F8%wP0RSBu|KALl)Ll4eDY~6lh z;~@?wikOWqXYgkTIq44u|87saPniok@NR^|M9ulpoUyJ<1|PJKktCYX2WjRGp6tBM z_X8)|OE{}S@YSyA1p7w+t1I!!FI|%{>L+q&;9Qoba2@zPWNH8Ee~GUBb9L#E3&b;U zge&1rkZL!n6xXQ~I*VhF%AT3`>MTq>vMqUq0`Wue2T4iWmimZ0sZ8rpv0JPwbM>Q& z7nZ}c({Co(BB~d7+%z~hbz?4`|tIo~#fs&txACLS}_yKZSN>d!Blt`)$m{#N9 z+p6uccCqy=ibD9uwQAjQ8P#d~G03aQtiv>HOo6YKm2&-EN;z97gSCR{HaYgQj}6r| zuNPZIJBS{t0kau|)8=8cu7pq<>R`sLcZioK!ayBLsRQlZAzg7n{q@LW>@P$f31%vd_@={z6;5BJ#Nj{)VoidL z3C5+7`QMZ}auW$adj&0`YSw{yL6g*qQr9(>iyb1k$qn!x@*AbeIt)j%31i8>R{06p z#0E+iwLhf%ASdA*B*tJ@dbXauM`aK0rr>2GGUY0r9{KRM(sAz_RFh;4(*bkJziE+ZOmM{rDZ9;BPOqA*7ze~W2qwdQh! z1*WYCI?2kO8AX;Y7fE~y>*tP8-&DEh2&-Dt1gfbm8Fp%k*J;$9Aa?yC6e1l)H0-$U z#a}!X9+kBSa30)B3i$Kj_sCDResccPA2Hp?yT8J5f(hm#@gw$g`|6HecC;Q-pMKJT zNl+jC12)gr$C%?FcVhOop671QIYo^XX`RBRZfcCLSPhK# zEc8xrf%L3U^k6FmbPs&%XsEXIPEkO(vnYYMy?%erm}0msuEgP7(-Ar~{DPA>YCpsl zIv(RHG4k#HaaqK^Vg_H+(>d$RQM1ZAbLb$9Ld@nE3)8|nUNYNB$QWB44X+lGsg&kp z_ZfQg2(vvC0qn*oag?l}h=c1CwLbaHV}sqC_f7LSuGC(PNS$>dG)7#pE_)qkxW19>s zgLaSEZm1p=0ax+o>7TRz#ZQEYW(y&wG)U3!&bq~P%%ZMYsTsg}r^~sQ@+YF*hk{T5 zK6N^u;J*pNRuYq=a7+$!aQwQJDK53|l`h-@MSkL}*_ZX!+=;YeEUZ%961T2YK2!(d z8La3-(By>W@S3m~C%A1kt(V{scVK{2t~{0|m}aV*fC>~rXD#5gpxBvV^5*vgzD#cJQNsBDY_ z7awO@`=erIbxA`RLzqD^RBsOFb ziYf8}dCPfI>)fb_9{f*Q8P)YN+Makf8BnZ@%<)W8!+@2nX7Db-yE@)Myt-il=`gg$ z_F*aXwEUBW<9o`g>S?;34htftKF;Qt3$+1ab{X(&DCOyKu*Y$ijp*7LUzQR}mlDR8 z)$51AHc{h@ueVq3+-cTNMu07Ue*`LD_Vz0(E1pa)vN8e^d%} z0RU>4m_xvRp)*^`+Wb8FvPHUbbf##zY>&*pSe6A#a0oZEY0fpSfGg2>A)0FYHJ*pR zqZ=*!9ou*Y>VMYiWzM)I1C00XZ~{cg8F3>?LFNnYAZd6d8pO5>Ycr^SH@rq4IEKZ24X+pl)^dLmVg=X=ToZTXtVo5DW;>Zm9_Wd{!UMy0Nj^n|iTPIPRx*_!wW(vEhalUwOl5B)bfq52FX4 zZ5^J%cVCltQ{>&BsDJ%Mrq)Y14IDIab*=X|bNr7)K0v@3JVIAUl5vZSS9a*t)uI*b z1iAK9XS@T>H6p}rzex@lF83TnYbJT+m|n2!rI#(0QLr}zi_Fm> zxBoqt5fJe|{zdI42LZyq(XivXQ8^&AzsTC9JU6lPqP?VAYFh1N;D?rxQ%Fb-(=T=EXYpKkUdd-{c8Cj_ z9vFgNqE_{zTspW`P#?SbR_yKUX;^NUPNbKs#29>HLK5N7{EC{jeI6k*`&-!A%F1k0 z?@sdNM$Xi7)jEdj+^%fVms!Zex{&*IA=F5+Wyv-+9Wpz(XI1Rx=f@HOgsZDc8-zx% z3w3H$59-|Hg5IEe9FWvou+{4r9q2GdU!@Vg8q!;(OUCwV zaBHCC1%kh8^sQ&mdIvOUZwgypu7Gjrv0~S%F+z@yzjKCY1RFpXKxv zJ-wry+;JK$_I1`<+Ua!_=x?DK6OKPb8;gdR(powVZL4G%PDU3k)44HWB9sAge* zfHHJpu-#Dxz1vPsGCbv68LLzMJ>(j{1s<$#4?9ZD#Pc=))G?exRZ!Z;Y>hv_v&JnrPeJ00jQ!t zzsH~sURfe6HTR56R0Y9npel;mlQ4$L9w)~UFD>mw`Ujh_r#hW`oiHDJJus8>@V-rx zRfm(*Psf!FeR*QUI|=jF1}dHgb-YdEs0SOECCXR$D6ds3xQRw%AN>v7eqB2*N#!^$ zN#wC7ki3CO7HZl(t06yY3XXgtjF2w zF>g+r`bMn5LbzGh+6dj0-8JmvvO7uXglCn~S?t~EG4V4;15~!Cq&0c!**&LC5LI*9 z6rQRvqWFN>h=TLo!jDW^HBqwU#{f5wuy6jUDhWGy=o0z_z?omkxWnDD!6e({tYdug zz4SUIU&VGk8wHYrYNK+x^&!s7NDuGR^c`0ugU-b-`ZeV{K{+{MM$^}bSesx56DUwM zD5bfka$qjEgn&}U77d~EG_SZI#r*fR?ro18gK&n`H6c#%v9{&R6P8Zy)?~hh8tt1Y z4j6VOb3NcNaW*oc18D8ri)M0rAk6TF#1S@6RUv;RbvkLuQpf+KcCp#u%EM{3I+j5L z0OgKpl-MVHY_{i!0;9A3$`d1KQ}p4&#$rFO5NWSA3DJ|xxyj6#7WpWzGuPDS_^efD zm7bJ*w^E^1dZOpuVp<58l3IP56;ooYh$Mx&0z9h0D|iKZNx^=(o{9-J z=w~Sg-)r@=x7r+yUB{Q7bI2$!8I6m|N3zttwAv;G$QNljDy1r14H=p~Q+uMT8P79u-$atOLhjfZM*}Ho*-sTPKKNZ@h>Io%g&VgewQF z{Nc7j-|}^(a}T9!J&j#@;DE3Lb+crFwi(hut(haf5}M4DRCs0%IXzq@sWDMG2`rg3 zbB$=Mq=Lo{v~b8fJsgcKI-NmmW(-`Hu9AXW)`wR?);Y_T89$D5dHgY86iF_==066G zQn|vP`~|P_aveI~@4oJ0uBhnp9AT~$F&>m6HCbl7MCrA{4AdOo^Gq?Ulv^`60mQog!dlZWV~YO5}=Io6Pt@ss#rdu04KcJp#{N11at#;ZT=3 zvwmPYUf7viMYQSRVvl3)y3|kEll38#1v+LRYaDa=!2i$MyMWhKl>7fF6bV?|K~Vz~ z*+2^6CIPD^h`71wDx{L*H9!kdR6<)MLV^L)l8^+u-Q8HvK`dI1IclY7@l-8XuxLsP ztzfl)Ts=ZO$IA+>P{2zSvH#Eaotd@Q-bvc(@1Lhn_qxoQdFQ>)JMYZ=$~KbN{;JI2 zkeskIc~)LFwz=7Au7tRG-f^oDPbB2&82v1@#%pg-KjORH&-dNW3iq?j{rso<`I7rt z?0)j@=Q{f-i$4r$G-dIJy{-n1zO5r765}E}xah=Fg$lFvehkO}GggVRI9Gh2jk&$^ zVr1r{S_wj{3MU_3&ScyvaI4!Y_>A;d=9q=AM#O=N4`~(%A9JGV;4!YAomhOzdx0TpPQ9V(v zPS_4j!5ROZ0Uf>@v9|TyHRa#+Z@@&l=|==+n~Gsstxx7d1^tv8`U6N;bet zyMV^7&T`@7hWNghM4KBOISS|3n*(ygF-9D=3@;*cNsf5@#C~cN*n}LXmOX*$jX)(- zZx(nS)&EdNF{mE4XFh(t)ZGG2x3pge-}4V74_N5Iu4xG`-v@nC__CG*zN}?#YT~oE zBzRuqVn}1rWpJg@HF9@(Bui4?uFg;;81v&dZa|uMh`DKqi!YYptUns*~t}qAN zG^ZshJ32?M@D1-4LO30)@V;E(y%bu2t2Nmh$OGy${F2o|Aq1zg2gGXB_){W0LUX;E z=Oc4WW+}{F!gg&6+kcj;3bu`eC2ZR*Sd3H@<`k;=XV=x?8bsQA%5ArI0o!WXp;|2) zp1%>N@NA{W;@RLzUV}qDGHNLyzRBO?`xMr(zTy=dKKR!rP zK+TjBuD^x^4e?QF_%nB&|0(79d^jPY7nBcL^Ij+BC)14SLj0(7Gak*w9^~40@Z0hI z&!rGV106m?(DR6Izy;REX`t$dDeWxD%JEc65p&a1$5YloY&9wtwP+->`zg zzyQSP7cJrNe8-H%X%>i0q35o-x+HGV!yI1b`r~Z5jh|C$iL_Eu?@M4OQ%Q#Je*rHYbl1eX z%`OZMa6+ofmIa@8u;|uid2L4E-(~g2oe`Mz*76wv^`rdTb5q}jiGZ=C4o{T|^J)94 z?`@;AEXY6hlUTMWjL$9fF|2NBTCqH+Y~F6|4Tqzq z&kF&z>B`?M4HU1i&jLt*062z9x?3IpUX-9C=D0d+du3>4O4S^zYEUsY4|ZCER7{V| zPvtyV0EYz86`nk9Hq4>K&4#)5br=ybWJ6_1Q^a=fwaN|R{a<+ z#yo`+3)QuH5yaK%Qve#rjWMseHZX*%HhkoNi&KfahsEqR(GrR+6vUYJ#rEs7g5dv- z(LZYe&2+0bKHmKt>3$A%KehJ5cl?#c+qNF&b_Gss{q)pn8^fNMbO$x04s%5}F=Hxbv?HhQ-o*7Yh98EPi2>)n3D6?^q= zKlZ9^z1xr1)yY@=u6O$>y1L-1|LNU6TUQINdRV176|kcJMa4V%x7HXd*Djn|7k@?C zBy*>FD!$a-3|$BG{`I)dOz&T_oyw!gR?+Di%t{l7IQDsQ;Bq4E_dBsj~XplKPMOm+QaX)!&$a z4Twf{R{!2`pqW=mvL^MfKUlXG6+1jL_==j;B1lWL!|`Ml#!GsZEM=t76IO^tP^HBe znd{c*p$`4J?t8jo-2*7A^(PNaZN8=dAVly=2}|xvupn&K}D;4V=KU3gA|BY ze#Qb~PuhV!r=YF3sdS=xK-E{PH!uZ4Xgr1*1MpnlV&)%Nm zNo|+N>K9#=^JGQ+n?4@o-DKR=Zz68OZk)+zVU}1=^>fvtt8Bcku&3H66LvaMQU7KC za{b?5v^(|hw>$O6?HODI~@NSDPIuXS<3*;*$#e{^4SS&j>@u9Q|Mv zudIzzYT~2R|Niyktf$%Jz8_CtBvdEkijkWdk58>e0zoAGJJX3B+#r85sG}5oj2DL7 zc%e~^5WJ-Z8FPn6Z{Ua=bnY1y4mObE1wV24tI;ju=?jIAtXsukwWTS4#VMGH$FFhl zmdwDB(mP2hRCxDhS1b57uh1M1u{4CM)w2$Dhdz0;-77%p79qsRZnqR}_!x^3FXia0 zlxlWpuoEK>FyE+6++}6k?E_WXp*D;}-MXTo5DQj=Ah)507URR7rRvaCJ_EI$jK*CR zVu-e}suV2ds$LDzq{1`NgY>r;&;$Y=AB&~Ir_4jMR($lF_yAy}jW@St{1)~WkmbX!_}u@Kbg80Gp?MSPEy= zkY_$Kzfp%2&6qiNxW0K3$4Zvh)SUlibN;t8n|^U+HhgaFkqP@8QwgCxQyA~>GUL+h ze$H|~r`nIm5dO;Ow^zLBA|oB#VoRa$mrn<_(`#&b(~PF!D?2=B&Be12BI_)xdKLPN z3T35pD*cYK(l!|207)wzKg>}^qDEHHK{HB`GZ+{pC7i}z=(HYu&VI(iTZ%U{3g{4T z7_d;Pii_(MJPFqt?T2fP^xZY_i8nEiQuH(Dwi1Jd5F_S%0&)De>yZ|@cD0tlcgmjP z;iZ0_oufr@zb!67mO$s^sBoFmsOHbGQOO=uj0~U@-8ZgWN~6`p^PWMdVRKl-K_JAI z9bc2Qb%vP=28qkBG+RLTk}kpJA$Vay3zrmS0bRbgc7x_HrBN(pi`2xcH##M0Lj|uS zAM;Am4Ij`E@0Zd*D&TzdoCsGdZDO*U)m5Zt^}1?N=d0dK=jl_8Dl)7hj)=SbC^RMF zj?su;S*}`@T%Eadc9jr3_;zb~>a?M&Nr6E2(Ff&Hpmt1ewCjqBOhJ1a+pTAj23Ng? zbg#f{Gz2CLBgx2Xk&gg* zjpL5zwtmWJ=c}EOAGXcL!>4O}V~<61|BO2MOH}Nn|0T&zpm9BEhU^x@3gj;avQDjw z_ZUmn!H|CHcw~h~2jj*Sz8-uIu8o!QxF$?mtbB@DOp73QzDWU6`!qk<4fNyrjf{Sh z2pQJ!!_yqgXAgACENk?A{Dz;4%n*Fb8u7-+sw1l6f6qGk2dz$;Mwc-#E$O2oRMFVV z=664Mfr)slctec*90z}cjCNx#)96cG$|H2Di9hYr!r@Sl5SSvX8ymMvnCp$#Y#@bC zRr4|Nniu3GJ+;(=7a`(29o8bLMIMr>`~7lK0|{ZTS*_#Di>sW_!M^}uCvV3e`I(Sl zGE#!7A%TkSv{~gcY^6EB>UbZUR2SMKbnPlQoE!UZeLgM6)zm&XpKz-(yI zxb2&Jl346(0t{6l!vtb97G@gB#G6@`4Qr)yl>$xQ>>;#wI$(`oj&$6#?0n@|$#A;D zSTMf@%Z6b>ro5BzK}kajfu(k5=Hy59uVcQ51y1aG;CA`krVjuEowUMDJZYa#w;*)i zu+L|d?DJ_FEOb~XG{($3(wojTx2CeUek>|~l745UkLxYt1SZ4J5lWfWS*YK>^%53F zp|&-rfd@p3K8Z-pU=xu*rA6n<&m%4byQFz$(NFzEhFQmyK{N$nY-hBZbuCOCtYas< z=)eFQb}dls+JjT>FYXo3{xEXgzm=YtT&VwesHSb>|N5#Mm3h90KTxS>iWM2Tx@s%@ zPu6?7`ruL-8|VQ)He(|QReru!QlLbgf!FA&>4C1(ga(KrH-^xsW&klxj05Arvy^aH zUWaUec-Fywr~3yu8dd*d~Zks(t>~LTG_jHDo-a6fPlr!3IrJQw_3UDw`Sj2Uz0j zxXgeuXSv!ZGw>`|=yPtWI=>p_e;!TR5H$+4RyCA7y)*D`q=Pr?=s6@T7+3706$G#9zlC zA9i;qWZ1s21OE%x3LlON@lA7_M|2-3s2ZKCAj^QlnB| zy}kUaR0H{3=)>x0LoUUlkL;cdQq#ZmMAG+o~(CMseJGQ>=W;Y;W?Q7Etj8Ql>JaboefgtGV?Io zy>vn?x0VFSW7KeKLPmV;zLXTT2Ch$}C`4jR@`DF2Klb_cW#5&{k;}NNlp|{Qa@3|P zlcRQBW#bcnRxU@$Mp$9`GR5ADZE`)Z_pQ%rJ2&Qz#Dm=_M#m0yUZbw>X?QS)M*bLL z-r?6jLKqvqAttFs-G4d-SkNnt8sVjiBvYvq!t%pWL?P@gzAMPpBDLc&$NhY_<^D?l zW7B&lknfeRNJ|9-d{d47EAl|>~Itb#29+b5vD~;+oGt3`1e0nFV(@jqx=*<`q|^P za)*=UUg*56YJ?1C8s#=y7W%nz1N*nXE;D$RuJVdI%N(*MsBPrfF>8Xpaxy&*u5D&u ze|-ZzdrwmEBfU5F$T6~b@=E-8_OP!wS}1lS@4di+{dw3V#(TPm@PKxKmBxPxD-Zen z9$^ItZT}{`lGdnrdCrl>J1y0T+8pC%^9%450=n9zrR!_iz#VnM(Sv=H>gY(wG-b%ku z1PU=2V+9=yOn3{~4XHRb`u>32al%OPd*3RInn$zLhe3=9eOeKN{q6Kre*z%;8yA&x zVJu_WQi!f5{BUP&x3uKkp26_okRX5_CSWDUoefd}>yR{T54xK9U? zbYaJ7Z%IbOwUKiRF}`%I6goj%kZ zOsAyRQ+`M%i{^MqHB}CnJQkfihvY1|dXvk)>)$}<{i=&JnpXL~c1od7pO(F&TqlcG zG%9t*RhzD$tpZkDHN@xYv~i4Bx4P^1^XV3nT{P1TsNj64>2@2nYY=VkDYwv5IxHa> z(tYTR2{AV{@!RiCkl@2@yU~}nU!;PMY7ok$T@QzA`fl$jx62K=?=&gry9+aO}RduK6uT91DeHK_Pq}ojH!~6V_H|zj72D5T*k@dAqt@ z@==;$M2!(@qlr{36slI=<)+Ynn_Z7l9XEj&bBLtgcU2|TID&@J?nKo_IA+_Qc8*zX ze4ULEZ}eM`Xc%vf)y~0}m3p@GoLzu_>(d%OU?p}Fe1`=Y{|b38+XYI2hg%x71=LcH zLwzw(XXBIZ5f1&~0lN!~>mS3C1M1?3=8EnzuY8SqTI2)HY*s9)^{w|tbHJX%sK&*5 zXV?CHeD{YeR>$ck`3FXOe46^m+9N5Ao0_Z(kiL(fUM0x`aijaGV1cGN7{%6&U&{va zQQkYpa&BAhs~_Xs{^$fiE;+a7=$jII$cE;e4P~zfdou*6QivP%OG&5GoT47(1nSiM zl*@%iRT_3yOwf)0SkWH)Z_L9Y<3SzYh$hj zr2aUFRPap#^}YNmEL`1%`cEOHZJc&)dvgjY_Ato6t2`nql}SxfWoF*blDeu(SY-d>Vv0Kx$9rRfT( zVfibA8nfEqZqZ%3Lh{V~_5C$>dWL-)zM+SF!rJ!XWS8gu_dBewa6~KRiOYGxCFpSN zgZOy)VP#tf^U~U7#SjC^p2O7MkeYDqU0XATGj^9CyIC&Y@IHh6#Np8?#QABu^j9%n zI{uyTvbOZcnp+GC;E@0`Aa<^vcnWfdjnXhgHW`~ZMdluX3mLYyW1Ij&A0p<79L2Rd z>#B%jBWnqtCNA_cS&)T~$$~K9e&UOJKnB?-K8Jz)5k7Li?^Q6V{99NaVBoiS^k`Ro zy^0us!FYEnqFIVTjQl7agZSQKsH}dM)ieQq_FWzECT@R+A*lnp$-gk6k>b#wgh@tU ze-jCoo=cGQr)%-4{)EJCVB3^D6zIvS>#fO7IghnC zW|eE|In{RlZ&L`OEy_oCwtheud@_w)(%H3fMYJ( z9ViVC=@EPOq@~QHJd!bSN@$IjZ&QOIwtSqnR0HHgz&jBEe@?+x;p4 zVR3yZW!&60XR`QvJ*y47+5JYBkcgb(kVz*C%{YU5})$H-~Ff^hU15$?*zJ zhl2nhkf{QVBXf?bihuixOY`BeAGJ}Y#lATEqb`DEUzloz>%}aTs8w;buN!ddm$tDh zgaM@q!qRcG@yfGkq;LH&(PxO7evZsDg&viBL2^BiOoYx7}YJ`jS8+`1doQS{guP| zVbo~CSL~pFGR)7Ie%X(GMU?TPqT18W%5X2<5yT+uQWJkDeW~^(1zUy+D=5H(id$bU zN5x1vDhi&ZigT&O+4kn*X{pmu|0$H*5mum%kCMV|4kb&h2M#4@vcf(VEiu>n@;!x+ zlovUkYkhH@G9)T6lk|V!Sk)1Hw#>j3Zky@bLbVDrqz+>sPc*aWkLEM3RnF+%@y4^A zH3*v14@>1X{?yz?zbQ}tIByn8p5vw?b_!KdpC?caUX{M({DyNoZ9<%<2IS^5T|@%O z4*ahaky_0vW#f|$cPS#|3KMp1248w!9Y6chU*NfL7MZb#qIJ7g2K%Quee^k`lS7%# zt>TcULIDi9P}JK5J^8mu?gq@-Xx3GZ4fIu#D%n< zX^1dCHo;`&hHr@2)`S$;58&D?r$H>>sDp?L?O8DJZl^;m3Tmrp+mdrDkd8JH9_Vez zsk{p5lEQiQTJ9z9lp^&KAcKmV2HhBF+_cI&!38`6G*?b2mi!Tm4_u}-sr_4FEaU!j zPy|x))|ifSrV~i3g;O+(N4?DA*+Lx9p}$gn#WU;t`ub{B>hs;W1vKk{lPP zG96}qx*-(QCWo0jjIDCvDL#OOZ7obPAq(d?u+sww<0-kR@+BkvR~!H08ucQrLP)(Q zco?f!6C7ad-dU$iCBZ9VxvZoh?&o~Jgv?fwt~Q7kjpHV6zXfM1gSK1hoAkfQeQC4D zc?!25EBth@51J`Q>mx;b4O&4&S8}F&bVVO+#vs(KZi41|snUk{<}a!18V3<0FpMgv z(_?>;?SoMa1c#LSj-~ftjoc)krVR+GzcT*X?EL4A8t?XP)gVOL+uT6(%SQiM+Dz$s zI6Uv~&IKnBRgryK@p#K<=ys}NMO`mN6K(N@7ZYva0~*#TH&*Q27)xxu#Al&Fp(qa@PisRpR^n6d$JP^W%GDSeyjiAdojB z+%)LMKY6ZlH#MYw&X3xkBL+sa4mdBe?oF}m`<3TZ{ z6nNWE@Q%BU875EL9L}6!UhremL=5KhOeP>Y)$xU#>!-{`NM_c(Q*cPI=pc%gnTaFh z5gBK9)d(8LTWqB(Tm{~uNdvuUG;_n3^+Ig3DPiySU-w;6lblr~#ETK$f(#nkG$nYQ>J2f|fF>6RiUC-GwA>tB|SYD(VE z>^S_$^aXrm2LCRt0ool-oPRm`dq3hD*~^c(l5?~~iTF4V)4~AL=v;kZ`6xEF&Udul1X6>on?N~8tgokV`CW)Tok#T51p$${nkuhO&c4is8;p7_P)`#euqR zG^sO@%Z}vBzO6QOiD@wxtZ=g%Q!^E%ye2W+H$^Ym!jLu>f)4VWecDS<8P{z|sSHoNm&9JO|n zGhE->HPfgKGq#HVK(BYIYvaFqJJgb>6*g$y6O$ZCoyLkR0 zz)7QE%2+%NJ|SI@baS2te{MtUT`_@R8b3qxteb=eV^FX%dL=`60OYTvFU&p_2@+wS z>P3(Sa%v5cM!v2$M)}EgvQ*W4wnzLQ7L8S@1QT9W3(p|4(Rbeu9BSjWmk9~OycctFON%@lO6>xMoKnWwNTNYdk!n_PszGg_Gg_L#`69o_GaAvyfE)y?aw7| z``7xj@9G@5k0Y%_?ca)uIa6ZjlCznONYuD(ER$B_GH^cnVf3=-$J*Z}3S6!&st8Fl z2Nv5kCj0qqB7HZ_n_leI1%J{@;t~DHBXk(^n!0~|>&~?LcmG59v!>+>el_&Ou^Y$O zrP-~{5+1C-l5tp>Y(jSR+8waMjQ5Rh8rs0}So50cNr7Kj?yMM@i~jMwdJKE_9*2$# zcy>V~WAXNc#Z7b6#!t_gfF(X-Cm1y&6gctH^|`A)VuQ`&>f)QMeByJXd_ zb`frrd{D*lx9&$ykbAX%;0}h z(pFzt!s>t7or@w@DX)I#QRFAv|E0d=K9=<0)YE7r4({8EtjP^G5rKXj*SpfM$#2(of}s9boC zkfCjU-58dML_L2a>%?NS!k2qh$`niI2cm*IvZ^rKCysZrwAYo8QOs-b+bnklw|2)mBiN zFcmw)JsIM;!ZhY1pe1d--S!7DQjD2z4+_hs+-(5ZyB|~4Cu>I$NJej6YDYx)V!74r z^6haM=qB#s;xnWuC;NkKOXN1U(Wif!e*sX#s({dd0pHmpcS@H!%=Q8`U^l`u*H*UV zglk^k&bnlv7|+wtBMk5H!=bD@(l)d=)t_qXn*>KIX-9vI8J6(F@mBJ?@-D{H>IjQw zD$6->@-A-55{IjbyB=2lNvF)VDJEw*_Q(`(QNHMO<50>&(p#mZ89u0 z?&hm$e9U|`E?o*_NZ>HD$YCXPK`o9yKf9$MZRfK9HD8@5U7J0^-tDmfY2<{x?R#Xd zx07!A*MUd(mU`7+y=QKtokEku(H)uV=PDkly%+GjVU3{fReiu5)h3U@alKI65TCsl z+*`D;qMLWE*r5gvp`9L9EM%_Vu}5e`5*I3q-}Ca{=u_BubRH_j5V%V|%M94rjDb9D z|5Hw$Hl16Yv?7b{0lBKjdWtFU1sTa)y3eOCOE36;CD$pR6S@3wNs4mIcj70GHSL?g z!_?+83=V;VspAbHufGWE6sLlwXToCZp+}_^%h3eGD!x*lT<~p?IAG=MUzTHKY;u7F zDDue#@@*1?JSSx=4Uo#W_Z@XK6#!rPUxXU6f~qmznGLzj;>ZJ z8#~x{tP(g4<8f)DbbEZOI_RriT{S!nuE5tdji2aM+KGS6-UTU(1AjQ-bb7d?-o|fn zBGv6>I{x+1B76Ll`+3Cu{M3Gc&;M1}%i|9)`)h$?w;G{SK58c-%549(zf`2redl5! zSH7%ND7=9rKb6|zx>rjLYy&0bz1?uUg(S@X%UnNAH-6heJAWr*Z>NAL5rS}RZ}-?E z!+LbqQqb3#fnU-Mao$*1+wM)dCbIE+7_5qYcvx+DAcHKoJg|)mC_k^R-STCw^A+c2 zA5s;6`U$bL1%yoR^x$;>Usk*HxHW!yORmORx&S=G_Cs_aw|lVZ>zu|KSuqKE4x134 z)B|oU*RHl+gmeT;JfLd7jljRWp8)>AV&@NZYng1{)@_14Nyx{FuW*s}0$USvy;-kq zO`IkDO5BgpuxaYF8cX97dJ61Z3<_)FWfzDs(#icsGh4YIs%=lIRXV^W?qj6q=ov2k zm+BNXq9L@ng)Q5bIv1J`gDw}skWpALK5>Vr6xy^{?NZ+ZIm5`Yb)hf^1k=pDk(x20 z`ZPFhO!i|#L|E#@NpULvA68sWn?Z#fkEj^6$_bGFVV`k7WY7IHNaFJ()zJjiompO8 z=%ncgdV^UU*AB+bmhUJg0Sw$)-@`nLn``SJd<24mE|J3w5W@x(_8@-t3Ar9N113+C zmaFxS_AGI}!W>hn^^Zy!wXX7=vv^x6X&r?6Eas3hYGSg=TqS9bTq#p_o>XsA+UYx+ z*bjS_TY_yfrV})D=)17U1U=-EcOxY~7QJH%ymT;O2jHzj`XY}IMV=*C)$yMH(6Q}{ zY=L08PL89iML-*yYh+=#(OevSHQ-{AVAH~>ed{G8cziedv_G7_q(u{erGDv))O*K( z>fOyMsb;(A;Kw`@S1XCD@)B1Y&-%V>v@|eaGrHX=*a@iO7M}$XbbG+EAyfMD;lB%E zK4;6L)1h`uM=#0$6CK5DDZZ;exu(LaU3=WRyX5~0`*h2GW}m9vlH-C2ES>3}T-P2y z^cyjD`cZqwc_&oOsg6H=P)Iy|tt*hZ^V_{Nkz1%Cz)yIKqOD%1Ml0I8%(aJVCp4w^ zx@ZpGdH7cF)H5IN&OgR9BIReBWQdgefBEJhFKofi!bcb$%9vOyyHu=8CJlL;#| z$iyF7tzTNMXon{b1k^^GVK?bEU z3Uji$XyF3&VUsG4NBtXW!_q}Mnx7MmzLLz7i4OX!py%vY8~>PHZX4yW>ZO|<2~g{% znXFrmiVQh$>9B*xc?RqFU&mlPB|`0=23o$ZHt^UiRYjT0Al>XhgTZ%56M=|q7NZI3 zq?xMXTaI)N6vf531u)Gg{ABLDrI!NY1oACwp%&^71jGl^4g}6w}NU-rv*mY9)(f#*EGI1-PJj zrKSpddGfmR>y$PAtqTpYbcA{jP7pErqGnN4@7dEFLX(Mq0UEz$zQb(o=m(f31zh)6 z!4L1;$M~Vv;VBH&kC%Fk`BXnVokxlxl zW>Wm~69ki{ro&l;b2{R)Rbzk1u`7em=UX;b8<2!l#*5H{m==K_=R4IZ&H&#&>kx$dIWofnW$7}H!1h12lkqtC_3(G^4g6tIV%X9!6_mgV z$Pdt;EW&bkSp_;T)EOULaKm)7vx`;20bg=UfIs+L_$cwgQ^lFS6>8X@8ZraF)0ZgJ z+OTSWG&3+Fi6jKr5tK;L&k%w@a9Vl3mpLhZih=j7{&X+5>0*JsNZ-QRs3^)$LGmP3 z8ZX%)ggpqhjcaYv7I{pa>@~9=)C6d$73}*tRc@%v4@3!ctrS*ReNcEaT7|xx1GVO6 zqda0(I8UjY$tpuYK};@)oQBu?FfnXopAd7uK1r~+`5s|_%Dp?s4Wd~B3`zHZk<2Ru zch1#d)j;fOGj&w~0nX)2Oqin`!Bc+&?WRtvdarv^8(&lb!32$lrdY0mrrbF;q#(X} zlv5DNT3&HM{MxG}jGj?2d$ps_GizEVf9&6=V3Wn8nfeq>GgE15gb3-!ZA7M)J&Kf~(xr3~jyQpyQK$DJ?+ z2=QE~c!TG{j=MB!_gomi{333hIS3P@<}aTXYJ5gb?G}YI!e0gauk2~?(`k)Hf>vv9 z&n;}fG(p$trhZO(tq`P0f}|PguxW`f+>n4MvgjuiQ2xQCkI(y06n(#+0GZCywSjWA40p~p-d^lW1N=E!}JDGm7q8z~-Ny??46)Ja^eG#`zh zt4)`kA-#o6FHzk{RBKuRw#i6zs0*@xr_!$AJ?>FMu&e$p=ho<75A%VTx?36F&KplWueq49RFnq)3Lu zed|RjTaIm{@)_`P-?5M}(Ulm%e!R7Ki{(MAa8zYe@DoLY!Mjvps%-qnH}jxGqnq_! zo&Me7lw0M#E}R+_KTVKTa;Xtko8^!v6F(M~k}|zWH3#Ze>t;yRS;yfATnsfk6)o0O?Fi6<60==|H|~kHm4uz6`1PV8uUWi*BSPo8B_-{TQ+6AgjI$*v9}?n z0!Ic`C|uB(EY^@XFUup?t$qd1pWhjbLrARPJq$H_6_EY>MGOURoUP;9-lg(P4(ieX> zW#%LB{cGz}3MZ8-E+r?rDJA>adsFHRbztf&=hRt9$u>QwIk9q$cA**zWJNjA6)+UH z8#&D&tndQEJ{%R_{uN3I|E5X`b7@c}mVs4#n{~m+AXgmX)k;>|tfk*e{+(+S6)*R~ z@Ark<=G7ce%hVh!TvJtpC9s8$;#^glRizEOLa?PY2~PD2D0OH9tn<)XA*O6H!&G&> z=xrtQ8W)@vN#nPHFkqF{%U=p|%U$qc>eU}krMT9{niI&vgO-3NF?iY!$R;TGH7gh> zqz^t7MsTguoZKcOIB`h)sifv#Ch2S-Q)GK*RdrQW*J~oY$JKtroSJn!1!?Z-aOtUG zQ=L$UD&ql{X(g=kwL#+0VT{b-V-T(JGSkE>trh}|@!%0Kx)ijn{60Zc0Il=nuiMHR zs6jX-P|28}UQ}vLT&)o{=8xYzEE1^)?pv#aZ$%di=T4rsEfJ2+<0Qb)M~sH~jvMxs zfl4zPFVk)GzW#^`M5?y9{*zt-Zuw4S|7ZTq`X31>pl*S`+UujEpLGccB%LmJw*;X+ z44YWgV8J91zu4x`rFf=JTVmJJT0jhY!oUI`{V>&;zr?Mbq5vDps@1RG z*DhdG*dp`9Z>#+V4?+Y=kp-lgg2RHwA3MwwNcr&W``*t+6e4QdhrLZmcuReWUvIgJ z%9)_!wWG%+A%c?rwtUIifA#zkz>hy8)4*M|YOgxHjAbB3O?-ZUWVcua=gmx<^hNN> zhd00~d;Vybtg^ktDsL-i6_0I!^BHAG(uV0IYt5LZ)LQlpo@o-Rse0p=<_4zGb}q?Z z1%CG1Zuo(Z#i@l$i9o+nwSb*v@SCGNzUy&HICUH^TFE2xZ&?Pz=4Wo-Hwy4|D|$}c zw~s(p>CaPUFhBksl1sITeIa)r>+r zcv-%YchYCscjC&uYBd}Hu~2IM=-}7zTBj%&;BHr&cHMxNIcAD10|IhXQ;_{(TBW@u zasUN)oR^C>oYpFsl0jU4Mpk`YSTZ8-i~84Qqr7)FoI<3!INq+#x!$TxFe(XifqRtj z_@Xg7-4CL2YrT7y7#Ot~|NF-UVmec)m&^%i;L*LornB>|a{x4c6vH7Vz3zj-m;h{tgH%eL>E~43QhUUA zmizIW8tvQq1RrPwFk-(>JJ0?v*F}q65FxNP zHdPK2*nXyj$a42HVTa%Vvzz+9Oh}_LdeS4>``H?chR78gtDxi0y#)~a)(iS|0ZW;I zud975L2C-aR_P3*rx?{i=!TOHNTtxSFU^oXO#wNi#bjw9H-0Pua*Zn;;0%!rff|Oj zW={OL${eUCQTYkL37sJM3ZG(uyg=hfiuD-Ff^j@R+}qRps6{ENBqT4iX*VwRePfZNDwEz zTdo-;uMPv%s9aG9(YsnL4f~s#c#5*5ipF40TLvBjb0azvpnRyxw+q9!sz~~-m z@i*D{suM+!RbF%!1MSFo_h5Qo;Iu%+WpB}_K-ezC=QKHAKpu)5W3c=xXNX8AXcrWpNl@B#~$== zK!-Y66ahCL%THecs7nz18C;`dB5Bo}_sqJxMd-Z%{lFSFqGANc2^^W{kspwAO5405!QKKbhy-twhL`dv-y!Ib`oM87R!8)LA^y>iB`z zsV=EjsZ?*t(u2@>F# z&$TL=QOY;Mo+7VSKt#zP?CS#ss(O>8_aILxOEA6U^1O*g%&p zj5!kFQLHf2^kg~`RqK4Mhu$VyHsb}Tm-P{YbQpKJ(d$wZ{gv*TFIaHGHDF`EAz*`~ z5C*k1UrD$;&11Vkxlf(+0%NxUkH+zY>$4fb@AIjz)J@`z?A3Kf8J0A$T1ml%M_(*8 zkWli~Ud^4hu)UqJ3Fv25RKvd38EC|I_3^zzV(*!C9H-e0?k>u?pq{fa@ujoUa4QNJ z>Lw3kKLMGFc09@hHv(EwmlZnuUXk6%44yxQ8x&fkho&B1g;MhB(H^4pf+{&L;MT0SZ*WN zl9a&{z*v0xRK*0a>aqqrKpj_e*~?|bHDBPX*^PUz`|T>{%5Ya@z44{EuhzZ%N`Cbx zx6)tg@ld$NiuazX91i~pHL7CW>r-x3Gk5x0(r*=WuNri(Qc-?t9hWNNyi&+wk2?V! z@odW}bY+82C!R0f{0jZG;3=+}?`4A;-R65~54q1t8mZf!b07J8C;m%aiZA|c+nf9r zIxE74{U+sYs*e8F^Q%8yi$~pc&?df`;8C~gBW~~%mL{hN)W)~GIk69>{TmDe%EVkz z*XXW|v^l$8>YiCZ}o@#q+bqT&;Nd%u-wr6yCxxcsP+^_Wa_N)2_ z@2EEQe2H9^k5_e`&(9@Qo$psAzEE{$aMs?c7A2_98Ci?t?QNn&XQvE>=D2^V{K}I2 zA8Zw*^uMxqfM+qCLD7H*KWw1cC3@EXGKT*X_~~laO8I8(ZD_X45m2)qEN^z2uV6@& z_mNh%S_-4VB0WjXU6#pp3RY;eSujEW77)NcyWYmH{xEJIH88DEfs=OtSq0g8<=T^V zGtP_5;I+7Ysh9Yb;lSQ4nMEJvCG~!6lHu@U3uo1R)UG}%HC%E``6N<9bWI96GjNIS zz@c^6yIJ+(DZ1=TkFiXx6?5#D)iqt)EXLwb*H0wZB{sKe0-IX}fz7Q3ZffH@k1c2O z)v0!d-L=zTc8%w!Ut{x`UN-Fu*j#U5^Aqf`!7TU!n+ra5)1IL~#EJyq_2&DfE0Y1j0##O|c^HP-B|_^R9@^UY*6ZZ( zmAW4L{@AaF;dVU(={BG#(It%M&9Ya(v)J>FRRcyB`g{8YiWVWn3USjKfA@Jo5r|hd z{UP9XCt>kBN*_)}hZ9a|+}h&A!A5F=ZuD?PVsWA-m;<@0^a1D{?a+93;?hy6wBw1< zjf7s~U%&7I17GpB+azIJ=^4F;F|agD)#%NZ>ExNW@8t%_l^M9-woOSMYD-*J#Rp?q zqKl<=q!j09kq@0I*{$Li`gR;iokrR$hCvJULPsv`dW2tH19BTOfKF8*uWVIN%9iPt zabNi3ElV#=*{Vvu>iGdl-q9ad?15d*&ikB%rQwMe_?77EGTubf%JtLZ3ZUK^>?I0?8su>Vs~w z@i~XU>$^70AnfB+qu*tlIIb?4H2Q9?;^&_mhvVy2wKsv{>CxY?J6n1vHk1wsa&k zD`S@zJ?|H4;#rS4_Aw`CV)c}at3iK*ddc9i+^mm&;sw!xQCDGR4h4hZor-N&s(tu) z^bCr`*K93Ei7~?H)!V%K%M54~NYA^H9pO7^ zP@_;{BnR01W)jMSc;@Hbrn*B|@{{eOH|w6W+?BNa@kyg!cn$!c+%g`3Z{U@0X!O50 zEkNwwe6DA zP0-@6eaEeP3ag~6pV1K6OP!ULCX7GxCaDn3W}47qcot|?14?(XYV<+oC6%>*gW55# z3#vMg7YVE^P`D9>A3Moj@Lh~2ATLGuStk&6*q2vFy{gyKcOlnQd2Lnap(>@Lx+W;4 z7B}ikL?XWC)grnDM3j2~;LGim&ppO%2^dJN6A#}D16Lm+3`p-72AT_dM1}W>y@iXe zNRAJzV8|VB0XVR@2E8d+X|2nYWJ!qB6nnjDZ%{po3JLgLUk2g!AsYq^7G@~hd&HcY zQuWm1(^@IrV20nHE7a(R7dmkPMZtOl3y*{&$E3J7=TORhrM| ze1Ix`fz|z$a)e0u`Z*4b^!1r6% zL*cq068e0tbJl?+_^rcQbXwYWjbWN|yvg>lxd1lJt~K)s(xy)vshnf~*jWK%L>_Zt zQV~G7mYtdZR_@wcaqJgZZqH(0*OJ|;tDxnl8uZ$@T6lDcRi)|f+W5P6icUqUn?E&g zJOJrr+J2e5-19SIEqq{Q0t7?eJ_oeBrDmmFISuWze7>#m4Jeir2~`w~whDmLu-l z!)OYmo+c+oc~+r5Xrs&!;+A}{&qCom90~H#o3?a@>4)6HOWWbV+I5DuxsgJADPcI{9Na_3At$L%9p5jS~mD*bz zS+0IK0jKm0uQ3y%+LwP3NCal{1boVXs_g$yL;rne;&bGC8$a}S*H(2NP9`MyZHEU0 zgRK-rV`S5d=hF>T)PIPpzh1~{5F5o?ysgQ8_9*DvBRg2Jtl`qrWlYlZKK{^_&CC95 zVT`JeZ#pDCLrPgnI3cZFRJ4E3gVw)B)t6JZKnMHsNr$&chqL*%4jDaD>816-5CEv3 zAg-E~3P<|^(#dy=_Lg&_tm9x8x>i_Cf73i36m-u_MO(Xi^KxW#q`2$hGW$~{a-$<0EQdhL3iWtxU^A=#A4 zRN=t^F?W|hSYZR=(0>hx7R}!U=LZ(=zCyc#iG}Dn>7nGT?-zglF>u+pUKDi8VQysi zhzoBJFPWJQl$zaER@W(4QddzWiX?9sdClwDu$K8vrZbnxr*t$}(55UTE0cN~kTaKh zKL|uK4S(%sjiE({IKMi+Pnj$tu55K?;1xB5`;a|Bv6@hY;Wy_eFU*!jfMn64c+l%XPWJ{}s;LoGm&O%GmskiWoQoM}^qQ>XQ|q9^E+(`#hdV}4pB5_B$3b?&R` z0$s6p@Ua-r0VCxr&PqCJF$#&=T-)Cx#rsd)L8A#h2jA}}5<;iq&;3zAxg2%MSq2Lm z2g(iQ?o!j2Z}J}*z!IoG5hEV0)>FuvtScURqg%qxA!a17yZoRtSw7Y%J5NES#26B@ z+ufR~8j&(yP9jl>GkjbG`%*i4xKtHG>hB}EGYbFKD1k5AU3-FPmVg>39q(PQkr>Jo zEYDkBKy1|Qx_yR^=xjF3yJ?mubX^RwBOitynC`V`g2$66Hu@))0>le(L&i=lRn)j; z1rNrIcQ$E_s>KI_KY8$GP=M3$Pjm0-v-F{_#<2chV%>LGeWCW^ixf(GnHBzJ(ZSOo zb5G`b*iVa#HbJi^xo{ELg&$*dzAnmRA8b&yk(J7>0tN0+H9z=%=o2~-9!_HFv_c7u z?J*mXIJ`yn8_%BxfwN&<1$?)gm%Noaa@2bS~x*XyZA#Gj-%LSM=_b%oh zImB5r{J$jlbM^V^PKa3=WMeCr1wqxcX=Y4oM2oYy2KZKyD1z`tD=88*iXQVWCz-Uc z6SX@&_O+WYtggpXm2pL7U?>$w;X7xXlHor!^r~+A=Ph}8=(S0!KGX6c(SS-qt0vSYX%f*}K1C<#eD+4M{RbqjX-4-glDlQKI5zWREue2l$Lr4)8Ri2p1Y^}ywR%B zs;rrfr0eGNwksogyK{B@+}Qc#@ha6w(@9bPKXAa7?Uia@Pp*GSPcnBN-23tgnZfII z!w_l2cShH7xK4u|a-1EWm_xcJm00JE)A#0Sd#unK@CKASI=iC$T6eDc|32(ujR6}E z$ZAy?VqS11hJA?@4qv6i)tLeTDk0L9_f>Fj&-0I|Ds@86i8@fixiOdrD#6z~EDe_< z;1~5MImjR6{-Qf3{$vk@RUsg0YytwD=# zGdQW4f&KNFo84e;?0330{9Kv(|y|<`t~t>hG$_9#_8MaZ;jixOa00vBq#pd*s9E0dCB9$hLkkA+3PX7)g51u z(yghUAfY8G&c+9Q(5YAFWO)TRP7~6weCT93B!Y8t*{DG?1t#!8m6pfGX5If*ohtFt z9r`8#2?k0*R2^G30mwAJaLDi{O^J*w*A2=yOk|YJ7=;eh#2=m{KSxXmnb3~Tyzm|R z0{u93TH6nqyW*Xho>EGKwdE+{k5`B0St-_z1KkJpp)&D-S0Yi$R&COOQP}fV2|`;` zT;q~QgHc-QZfSzmMJ`?qCQOHE%xu?myhD9mXfM2haw3Xs#f9U8ZDFuzWjy?eO$u3^ zWuyd~@z9Ck(+aaxvVO>JY0zwp;>Pk~%!isRnJEjD>*SO^tkD#|I{7=wdj^PKE@=T7 z1E4YqC<_ajfCSE$ah4clfiP^)c(_-6=L(F9IV%-le zOuXu?PC3yhsdm80iD4BzEekQ0?4iZqFLU)bc=v6VzH%)r|`czMAS=ZW__HJ?QMPknub&BZ_Y%yoG!_TWRigF?6!MT1s)lOY( zlo1kDju5S!^({Yo-oC96C~$1>WaA%vU7boos=NSaj$v9&ZN&E-DDrr@feF>8{G-v1 zO(G_7|3@?ZL-ZIhkM-?$oekuZx)`}MOT=AmMpHZ?f*f?Fay>)aHyjv^sy~;gBi5!+ zN1Fig-5txc0X-FJ|LL!#JGSKqaq$7MX?(r?h(;xTVja>#w;r*P=k7e`zOCEUD^!8> zxc+o4N>uxp@Xtxps^r1!BZiFfc+Y`>2oK$Z{WntXc}GcBQ@DAUVvYgy1ll!fo4nXxJJEc z*NroWUV{pcTl$;x4>adDiIws%H8*X_^xtn?PZ+6lM%1*i>s?WPx;J5k6|OfR5}AUD za&68%Gb6+kE0rw!9QIJ=F6F2}}MVLP4DB{+*4%XEgi(V64WQ*3ur$ z*o}E9&B4Eb32WmY{MSy~yUn5kv=_h0>Zi)&uf%Vrzczgj2JPPp>U`t`_8Rhq#cIn_ z*NaovOTx83C%u3B-u`q@FKH%ZE%%KTvX_S>627%y@jE}MIfz~=b+Ms2-O`olIIkr8{GA;?`C6+P~#~O)m8YS z#c(`e;&G*Zpk*|?*0}_JY%-&1n0y2n4^BI-P6-=r`VUwo7Dk?0x~PxQk`?{T3?3j} z*lAz=;FF_OeAU@_gW!jS(PKVQh?|^lL?6%gvm|qVRNEpO(0;s7B%?sSXZ%u^Q$^K+ zJ@VV0p=K53)HDE3+qt8k?9@!u$psKQUmy8hMTAGgr{RxUhhFFR{Yk>{`Ye7~J6(Z3 zY6N{-h5<1BSH^$)u8w#YFZpj{LW`ettFSn)R~P(QPr^lqUAWGpldjFnDtM#Y-tF>Q z9$1r1av1{Xm~{DUw~q5VtI|6idsv29c~+5OBUwyX`ZY@)%$!4@#S^YT^;g2L5L&W$-t7+7iu- zSO~cDt#?HVr@~FpS9HNvB?;ZOjfo5639k5+A3{Bw78Qkm?!%D@g;i~Qptl6ITb8Bm zm+6z)-!W1)sJAUqp|Dz=E%XoT2XmYmw2*CDM{Hg>R!2O(lv)zqz);fYG}Sz}+&GaU zm#pbYqp*g$IL=P6=SB#hyradYJSu9{07ib8nnTiDb4Un8iSIM|O2SPkPy+Gu)G`+0 zg=ZmHfWV%cDNo!w`tSZq{Exl&=chE@PItrkDIv=l_U`?x*t_%~WNyWGB^-X2jn$XB zLnD+yb9LfTgM$&B>0ZgQA;=)U@-|vs;rx>?Pr&73h2cZ0;s)(Zh8QqxIu5m&1mLP+ z8sfRwWm)&C@^r1XpN)Yb{=H26I2HZ)ZmUQt3qMwAvfHU|CK(8_?|2?Aab21b?L6T9 z3t7a$zib0l?uk@cRuZqpjh$r(X?x6t535Vi3kT*Sfdfc~^B>pWybDAeWiEJM_sG?5#?$1$VXWjS(XtRGr7%oC1&Q1_-EZ{w4l*BGM-xAx=N>;QFZ@J>&j5H2 zCWxSn`#_Nhx&onAxw&vGXSU>{#c!~g+Hlm(BF8>dXJ5-ZyM6_uGH|FkS}LVxPBy}w zQ-K@ar2@`x3LnaOx=fEtUU+8kjaH5!f*a08JMeyQOy>G^D&f0!UI}Nxy<;>VMk^rEt@^sNRgxI+ zqyb{nS~~FjkE{cDYKFK{Ku?+lePEiQRa&<#I8$Xd`Jzw4XxK_9XZ}QbXXUUDXGn*w zw9J`-2f)dU{IJ;GIXn+UJ2oaz8i4Qh00zDYQ{~gAWv>xqn$3T{#27+xhvI#htAI6c zvAD1H%(+lZw=*VOq5>8Ub4;iWTq`*6#{FN|5r6&;^guWhM_Oilmty(B6a)J!Rju^z z=w5hH@oD!6`|-){=PmY=8c#X@_Es=#^8NW#dT7 zUvU6+dIF<3*QKWo02v}`FjOky=rM4&&u8h0MV|j?5Dmc?$f!5!PI637U@G*YY5@(&2(|P zs+HTu8tfy-RMmM_R5XWa>a^PT!D_5kt1mlJD)f%LTB7|pz0U@e1{Q|qfrHYiV89HZ-q2!H`xur&qg$? zQ3S*x2J_m`t)O4p6s86NXFRAJ3t1vVG0oB$4N}lSiYSosrP9P#bQX*2CLOWSIc!i9 zA8w>jjD&BqD$55Jkl_OdJpY&AFDCoR$BJY4{p2gga1tT?NxX;jYsm9+XT=K|-an@{ z&VM&?FHD(&NV)0bf0LTFqqDHHkx$kJe$EVBDb|JdF5g4(8yBh6Oq`-(@lp#>DOk>z zvf40$O{u@ul+6KsN`Pl+2d)5D%;iT_)$yrQ;UIXGe)hMZzlN5~Ce}7Gse^r!!FJoX7ZEDjiTMuB0$ExtbN4oCa$!uKwol@q+do&zh z^raVfj1FovKldklj2>b`M+2%f@B@u*mMA`bC9oyCnWt#xjDvW~CRd?SeACx83N=!R zw`h={pl0N1)mZ+KD1Sg*djrD;4!@f77qP?WKS(hEQDyw*_s?qNdHe`537BrPkO^~{ zqoQEpin<|tSQ<5tI+2gUY}sxg;rr(Kwf9G`VKjl)RL z-la@(2yOZ>)n&rrh(3W2bRFBZpyg(pzkv;2fUn-#lF-h;n}MI zLPkI9w_x9}meu7hiBO|M__)K=6BfyN+8Xqm)%TlWiD=_!J)js;o6dNa7QEEP@4R1H z(9#2v@Gg47X~9%8E6ST8cC*?lTvRu#UmEDuFAa1HtHT?oRmF#WTm&@l$!C1#F`a() z&*B=vWzZ&XeL&tV}iKb@-aL?&YqPJ9u&Ow2g^h z(`mZ^*|ypa_cD5iywNFGJOWvhq+bzPVdHKX9?$&(9M-RuCL+jLl?ha8FTMn4Q(Oor zqQ+-|Km3*Hv(+xydbz?qeOotDMyNDtD=e{FTddGEUu}&jf%le=3OOGTavpbD$))9j zoFJzE;pz!vIMjOkd&ubx6&EGbbhh1hHkG=&+PjO>qbTR8N=by6Ln0Phwrx33mjRYfl+XduScK)y;J^fo-#ft6z?3@KGm)9`lom!#JC`ZQ{acyZ>8U$5HM{t&2sXq}&jMn@ zn{1@~`uuatzM;;s%+h9n@WJ--oY0`>4N-n7%2iAU-fGN+Yh5U7_3)|Mz*LSt+q>C{ zj5e5deT$YJwDm>avHjE4uIi_n76E5?M%Nggdq86G1oZ?|yNQHl@zSGc zReq$l`0eD}CL4#jF<3jef)?{+1+_9n9?FVj&QovcM0iUl^*0`T80 z4%l_zG_IRb*kfklqt%qGVVbGA>DTk;(#85HPYTj=(T-tt5{BH=Ow?sA)z}nibl6KX zfTD1I?To?|*_nmYDgS8H^x~DLhZ1KtKG?aFR-+wjX{zUoG}|b&G;jg;BNyx9Z{DtM z#b31_hbaGl1->F4$4hW?g|8YRh<NN z;?<{||LMJ>zTZ8=n_T0zF?dNgwBugt?m;SmxH;6IO! z-cXKC3DcB1P!u)&ZT<&J_{sIYQgy`fL_ORgd&;pQ@`vulh-}<6i3QSs^~QG)~vKiqA{^DGt6U9W=Px4 zul{u1kz8YwzlKfT=K{(?PK4Eu6!xR2jTDwzN;wMV3~;;1=adh)-P&+rKJN|AoonNX1QixPv+tGW_dIxXX7E>g3J5%`Kg!v9 z>(pHQIL+x9m8`J#7+ttMPLnEze?t|8HNJ|=siH?!n3{~gr0;Q1to{J9>T52Z21~;- ze&E}I*8Nl?9qH)EE&LRfbhJ_=3VYNq!{5YQUD_6HaC=s`?QdA?$O4H+uJzj_Jdzo_ zL3Ukx_cy(iS=6VSB$4opsKA)+v}y(>?Bq7v8~~yM7!%y4@waeYa-A5!W4eUo!&3F0 zriFXwNiAmvPB%*boE43zPnR8B_&3<{v=-KsTK-GshK!ZLvMYeRuTk)Iey>v|zAbq% zpMpvo`ZO0cOCe-Ar0y|3RCkExA+@lRO+HQ&*8_hg2*wR^F1A-))e{wx=DX%ZyK4Hg zed8dc^Q5HNuD!)|MyCm6t8cwTPib9SHpd%pHKRpp*V#ZC-(|Ptah?G(Z&i2tudd;8 zsV*zJv0#DuM|6QTD5Wm6@3IT)d&lcSL(&EOH;=i|wTfXF2!nU(lIK8DHR{qLhPON% z@9jE(`s?4o3S39?Z;zfUywj_vwGfKm1^o8C^1l~9eNAR?lb#`Z*{>W$rzRBiTlOjG z3aQ`p-ld;Y6@~NtkZhG9>Y5xum)mq%T;u#{4^1(+*QGGSLW+$&RJJ`ToDHKAVqa}L zE0rQoBOlhj`goRp#E41+&!{6!rdfJHHoiSW&R#IMU~|CK1r4EJ7PcDt-2EWUeqPsO!nZa*!=Y?R%y&%e=bahLB73*AdNL4)V1L9+gHTaPwnha&L z#@U79wU}MBJ&t^pF2FUsnW`O3cQm^eW&Itc=C=US`_;0P8?d zEn#RHl1cn;MMHi7gNhFk9UszwBUT$klk0kaISv2q{pwSC5S*Mg5@xRm60Gpa?1~eF zcnuCKp`I%1&*W*1k83pRV;7dZkQq2e??7JFWgzbaYshS!&q75K7X!+S4a0Phg7?}F z09RX`K6HaA>(y&Y+w=UMgy;anxdTyAD-YJVS26+t`JwbwOY^}xDnjuU)`KMo_B@!j zt%dU(*^6IM_6Cq!u(9iXDfQ)ilQ4O^#!cd4%NCah9k;t4(UCOqhpi(?lq-tz{|1Fl zYaKl{w08#@N|PVSiDklTd~uaDlY9cO(@Q0z%PiJgX7@}ZX1zunZSeYV9~2iK*k8#% zv+?`PMfA(&*UWQ28%{nQZ8XQ5&98_GW9q7pggGW{O>k~mGgayRalK=4+tpwwxH+ANRv;#I z1~L9QbC{U$|BLq;3MTxAa6$a%uj*C=F3}hFW!S~TmasAv=X;pfvJfNu>QC3PyF|2B zxY#*EoSa717fHH8FZn_yqoEvb^af;&f4IX4ZuQ42~f(ZeeI zqrUaSTriyTQTaT9txIHCg#kA?^k$zFGja2KS2Ta5HScRI%w;@_*^~_F5QMmWSdj{a z#ZcVirK~fe341jmUP&x=!)>%25+y&_Eym=coT^G2q5TE~&axZl2+nX!f z;@(4x2mh$oHr7_WC&*j;2-+ltM7)dTY6x|2Ax6mQ?!z7c{(1lQ*JK8NXCV3Hg}f3q z2I_|FYf~K4?HriI-&T*lDAc3&tyGW=PM6k4(#Z?Ri2QZ4$_Ucp(GesZ`UPB(P*47k zSvfe{L8c6hV8kwEXf=6SdnuR=-Tl%mU>i|0fl<|5#?O3@{NG`;4_@?Ty!mfJRcHp* z+HyCVa_=s}m^uIoHjvrDM>}&QmZBoV= z`0dk~LTu+1iGI!uoT?QvWvHs?PWCLfX?@b2`B(0ig2)W~pIp$;J5>JS__be_jxW>i ze!gS%008#+`HmYMsnfch>uq#Ye-{7NiqigTG{ieWqF-*uNDbRe1USLjgStr)DHtq& z&))6=XOCVX+4Qg^OgV6sz72*yGjM~~bWaE}Y{ig%!RLs-H%^oMtvaGAelb#&5_crk z=^Q^d?WPUAkmDATDwGIzW?;MeNF}zQ7f+?txhuHbZEn8s(!ax{MR`_!uoa>sYaA-g zr|*$2bb)}ou1e7`Hjuro6P9J`^suUn?Qk`}fq~OSYsh;osn(LhDf_UqUO2FdgZ<>* zig0hgeQshV;l08+Sy&$9i`nz@5F&CQKuVqezqjeb;hDkB)^&5(c4P+b4R?fq1}rGT zh`3h|ZL&W}-EhvUOi{bg($0t&0wp5=p6B35VCTY*h`qO;Jh15*9$ty&C(wFdX_y=+ zr%EbD%KcSkBjuE~FUM$^Q-?6zt}X-xvP?H=Vfehg-Gwl0ygaQyE=mNTvsnam%r7SK zoBvFx3v-w6l<@*n{C~{73t(JTwLYG{AiSJGK?4*SB!Pgf1VK%?6b2}83aNyL8lc4y z5Cbh3Bq>2sNKJwnr-3RJ3xY-wtx%*Yw^VPz)D~Jmu)qZhT8JXDLkkoXER@p!_kDZs zGiT0B(t!2p0mBsw5dG2=3`St;a^P{g1{$<6E-DEJill)# zTu#?7ydYy=<3JJluq+lvn1`A^uKeTuTz?N4YO=<`ryF{-vcV<& z{Y%)q3RFR#Uj(#sY%&X>VJq8)8Y}ytFtyWV2Y`_|@7)c|*fZIGo=^6F0rLnXoKN=K zniL7hx=kz~sxdcUaWbl&$M};y)9FO>fJru!yP!76!car_`1SVO&)bQflKts|bixH- zWn&5jYjCZu%cYTkA6U9L>)qRp>A%vN2G^q3Xh4H+Um0*UpMRs-04JJ$sy zgO%wN>4#W@C_pqERf@c+-y`m8{cwXq#$}e`)oHaq!nrSbZ02;$Zz@`;+=uF$Ln*E|6*ryibWu&(;C^)(T3V_Lp{rM)E zi!XJ)`lbtLnH-Gy$mS)CG&$1&hoq%GbP|}lgtV19sOS3oZD0(!u+eCEZu~WD$Ge-a zt5I7*5>Cn9b3gXviNu`(8r33y2PwfK1Mt==98+@ztjS`ACx=rwF#zkiM6?HoJnfH_ z{8?S&>>_O9ba`m-Cr@|D$@`=`!;vP5*c_+4^W0%0oOyAxd9cgn=4TpM&66BJIFqwC z+1a``CGmL$4%ix;jug1wJtR%7ETF9}dF0pF6P-5tcLJqP(*2a}6@|ZVlt);wfe%rS z|CD~+ipPIaiyk8o*lEJ=v#t++TRvWw<6&Sp6ZJB!Sc?>A9wfSLBU21zItt}~#i9Jz zaG_UNjnXSf*1p0U;@p>(33Jr**45@M8MPtza?BkS!niv|+rZERg~o+jfx z%?}Ak#M9WCPEa$UpdS3Hs)D;-ohL;+P4m>C=YpELo^(1t3mN2~!&yw*LV@v1Lw=?< zvG@WY*NB+vf<|~6EVCTM?K(qkC&pUV5KKQQHVByAuUPU{h)x9{-thiGT+j<54d8GR z1v8n?VFI2RyYT2Va>!gX5aBHC+`wrJW&pD!=h?#}l0%1R;|VW0;Bz(SBpjcu0hm+S zE(VMSA8BlU`y7{SyTt?aQw74ql#z^<)}JnPhKuQ=g|3|oQds`{AB`Hhl=l2(@GHHyM%ObLR|c!?@LtZBOybiuIVCrUKAd$4Uuv)G6i_WL}6c6 z1=Fo4*gQCWkj8?(6ZpMq*M$ZpP3l79_l0hJt_91gPruuofoKJ_?Ewxj+1*lP|xy)y9ul1U< zZ8aoI&wKP*C3I=Bn?M{y5OfvKw7>|_ao3p-VH zkm%t0C)o?re&+32(E)OCzIDeXX@FvG;oeV|bVYaJCxr>7&*12TqCJs`nk(NWPiX}s z>jE1f;;Q7M;U~ZVYhl74_pigzf2{B+CCe#q!6ikjCF)VRJn^w!M zSYq~qI;(vhgG``Z`yA!YgF=&ZJ+~d=qd$X*uHQzJ^xAyW6IOIVKbJEHZPI+8%8*c? zrE|Gk)t7CcbCCIVcB}(+e#Sd5TNIX33nXqk!}^gXig`C{csaqr;c!xEtpKkB9(Mh2 zyG%8A5c3@n1nT^jZ|K5)_tqJ!sZmsslN`UUQV1q20 zykw`RZfTmh<5Ra_yW`}48LrhIu{Kz?dAnfQrlW!b*J4xUh?e0s$L%XNIXkTK6B%DL zKS5&vM>B~|hI21m(sNBpR?V&N*^3X+RL4mDx|LMNy3ZHT=Mma7KhAgbLDYn(Y*OW5 z^x;OC;pNTF{3~iR|~Ukc7;QLP#_FLo*&7$1+s{AWKCJiSzyShme0}n z!+N2P^)H7h)+w0h|N7@51RtIRQb>npg1PGoS%Fxrcdwf{I0RSoZCeCE;z$f%Dc|@j z(6=#WZ)Sa*s?}KQ)$!JdSzOK)xFuM4PIUb*s#@En;pu&RMBh3HD4sf{qlK-5$)ABa zo3nmdS_H1V)TK>lp6i9fTVC@$`AjjF@n)9!M!CkZRq690YiV3ev+6@|v0ml1v&q3u zEG+9y=hsWnYu%h-B60nq(nut(QRc|!e{-TzOpYJizaT{E*f^$TYADBaGCVmclo&T> zeH>R_dX)G*TQ6o1O%XjRnn9U9X;X~!wU?Jbdf-bCEdXl&^77C#sd7W)Jj6@64R!W< z8^`&j#$&6v8bSf^^$m?IWlBQywWwQ>68IEF8bj`+v>KHb@S z#wh$lxI);lFfFon2htom#e=gu2h$A<_l=L8sQ)Ia01w6IN479)ES9Esl$!Vkvk-VekV z=dm?&=;KsK%VJC5o7}4Rt>{1e+m~U{u%3;^&U{}N+VyA>fd2_7i?&Q?Y*V_9H;}Ek)(duvB$unQC~4;ReNK!t$18+8Ol5>ND^jZnm6# zqiyU;cb^HWFvmP=37QVYxA}0K$&oB;J~YT;5^JP_E;?(O8pc;UvKh2o$KKjNi;k7y z7A@}31*&;}q4ntZOcUwqv1x)Uh8%Vr8P{=~0~=z_8s5WO_-fF4lM zP#P6bY;0AMTfc!cijS?Ta1W@4)kE%~+Wd9hTWFWvP(8KdmtjkWVM{$utp)tRh;JAI z;LVn0N(ho)`M*3q@PGYwF~r8HfOz)$UX-F@TOFGY&Hzk05Eyry7p$|y6r&)_DUFuc z&)`J|GKftM!TKnI4N(L$A%c(UAc%Rce-4F0MDbNs9Pa>l%p5J;D+JP9#+OjbMGnsb z6`j3;h{10vf3#`jEQs~ksv4bU;0y_#Yuz*5FkG#zf`jOg*@hWs!)zd+q8AkLaQ!b0 z9pTjy@h;gA=w$ExSo~!-qBd&69i%}>4hJv?O9p?JqNvdE_^=&v19?Q&UV@I*L@++- zaOIGlI~OphPyh#-EE^p+G^}YJe1v-8h6OS>zb)jlJ6HxSWJX}O%|QaHjX=5cIK}{b zoyXyipgD*ks(JJWBZ1q_p(>*S{R6siqEGwW*-6sjfa9-F*V5EPihdB4|ELzXJws?& z0PRFndH76&x3v^_?Opr*{@xg%;{JU>T*zvX%QLvk5J7USe!Q*-E{EW^+O)8h7B_Z z;vQG!wp6lSH66sB;TK^qM537Eca+M&`fxk^nFtjzf4#2x15jS>u9?PfS+)Fuq}&C&8dK2-TqoRCF#>vh#0fVeqzyIg_)!jF|DKI#-RuQf<6;nnk|AVwdVae z_%zrGI3SUvd{&r?PvQbR2M9zEhpY{h!}$saKQ|iAcCvMI)nX~>Rj?B)cYwRmOApXsFQr4|O&Z8JMq}ccAV&W3^o4(O`-`fX0&@F{ zV3XVV;rN2d1M~M?fG1=Pkb*{5=0OAm1b%q7+Vw%jT@$(Q_xFA+JZyp@L1uoka9Fn= z&!&|(XZu-N8-@wbAAt9C7@AN~R5|=Uluxz70+R|;WI8{{Zy~j@2TYMrihzcTqEfuW zJV6^$f!JxRIOt&7yj}nw3G5iK0ow(9FuYGg&JD} zJ=KCAq%A|v7u(a-qR-SLXdr@ih5$sYFpbAjR0tOFwM&ieVI3c2W3d|_Er6Y)dEc|N zvYqW~&XS=P9Z*kx)X_-Msb^#&8PW}qh78e5LwxLawL~bHYGvI)ZS&wNC}@vjtu~6M zJ8FQm%36}bijt(i{DUnBpe!$!r9RYvws{o)ur8z!4&{T|ML1Lf75d+`sr8?Lde?S6WsC%@F4(N zbCO_VIU6vKEwMf=MWTV!{9HH26bP8A;Zgi|w)5@#{LL8Cz)te1n_jd=no&Oa$NMGr z77~6YB7C}~L{~3=1IKpS};bP4f-1!9c0*GDYh@LJh<&Vt$itx?Op3j;JI z02n~?j|`QPLXG~;Aw!u*U&{~do6 zfu2{{ORD9K#Q)L~sKse;P;}%ASpYoCka~7E5sN#U-RtYcS&y(xsy`qQvVMje~wyDxdBq<6&TG&^JT_ z6H~g$HKbi=T1Wnr@ta1u#x(UFHs>xYg}Ey+zx^4zk%U>qjvL5aKfzB9Sd&rXRS-57 zbW#65Q~x}XS7x&y+4#^0y&$-_sS=JPpKJ`fzZl)O;1@*IIPykI_5nr!a}(JWI&AeF zB$)a|pH<(6P<_37cRmwH(I+;fctq}d;xQ?Wzr4McKe&T?Vs#!LGld;*!$2^CWA?By z$Q}maXQYJ0B*T$V21x(?{)=>Dt-O8s2CIUDm?xE0Xz#F-B`^o!N&?$*Gs7XS+(6T* zyKE`Qug!AL=Xygp!`is#MAP~(!S_fe6o@ay`RbX9i8|gM(}J&J#8D^^W1^7JYS01{ zx+Zco0cFaF(2|~kD#rcMSN_8cCpT~@3K}@$jG(J8(N!n=c&3wP>r^Gpp;Miu*(jY% zDW{6Ep~PS4CEkTiFx(1)fTwA>(F#UN)JDvrg+OpO+~9;@o};SHZw`n2u5m;F&5W>` z2jRhPT)Q|F4?gs}(mYrPnj~;~qt|27EjN8|)QDs&Ef*9xA5K=Ab1`*m&i(=j+<`+3 zftmfw%P-=MH8x+iU@~BxyUvif7<8t>o{3WBNsS+ zq~Kqgb+~xPi5n)#mje*5;uxG9If1&Tqc!GOvxh^}T+O!o^Bw&?21i#b#nu7uC>5ud zjsLhQR`adOd%~7L#4F7G9NL0qsr_ks`I9>t5%$-G>`AlhT#G!g!zp<)$gqM&P7%2o zSBjcAy%HbtfFVzD+!cNxr8>_`LYU{L&4*a{)O0mz>iVE#`_T>s<8L>pE;m0vmN9Y| z9>c`jFSx;0YRHI>-?5c=bH5s-xibr!gTaq96o>bs6GYEib^vYM3v@%M3{FmhYvW7s zmtEry?@2CDIkOq35uCO&4?#p?jUN(Alj$hx&XjctzR5Xk#XlQ<=TQF{czGNK;5=&= zaseS?9v0t=g)PPB-kn@FA2&INoZz@hd?OrC@k7nfb`X^gHH&@53SpQQBe683Y;V6OIM^A2=m-UK$2z%5 zbTUUH{oJzoO>q`ds1%TkTFnVuN(-$6X@pVeT;Pw#R?U5q$$O|{X444pK>2>omV)wr zShnc*_7DS5BdiOwD@cHpsW=qPgJU4GxGE{<5K=@zv^zK^5qiKrt+Mv1nwwK+uUEu{ zh^3F{AuL_RE9Q2z61wYcI88WqEVO|spR=A%kZ?10Ut3s}=xMdpCwadcu0rS8EGQVJ zIe-(#7!pLLd9=U7Wr}$c`_7C@X}3fS_OWU&tNoczQ2YJIX(-4Fz(@mHKa!-LcNJzk zX9`j@1vK^h&{nGSLO1a?1LktebXp9DF@fjCs^&e!+x;+=?XVb;$08h%9>8X0fA2 zf_`x*Hj>6k?E!Nh1?`le(BH0Mk9WD;lf0Xq1|?stPiP{5P4Eecp1UauIS_`+KRcFz zg>Jf4TP&Aa`xkh^ z1nhBM@L5a@CjFoSFeRqtYEB`0@Cg+Jc0N0>4oP6one0-p;!|F5B!Q*L@^BByB655P zhi{X;%YRhkg_a zUqgFQt85uQ^mre0W;pb9!T{1{;}B6GJPDh1&HLw`u`rchgeBU;#x36_(F2qK380u8 zCALnhvJk2Rv4p-z@~MaELyDy><{#HGPsI6x&=_0pq1nIU`v=y-!R%(k9 z{U4!tyQjt``}w@w6dS{4TnzgVsU2ozYz!;I5bEJ?eo7uH2`{gP3=X*^<6$@Ii}y95 z(EulCG=3>1q&cQ3s19;FaQ@*8R+jw;J6LiSJD|l6+a=J>qLpl%^iEsrebCQYn?99} z%;;jvEf!_iL7r6>zHTl29ez_2xJN=bN&l(1|rds<vb zXR55N!!XQ|8FKgx5158T1Odz>^e)-{c3I1=(f$Xnpe}dd3%XcfL3@VCU?ymeNY8y= z6TGmxa4{4SrkLU?bL=-dZw4^-kGGwU>|AE3c^!DOj% zEcUr@<7+|oX&|0!1Ru82>Sb4c@V+gukgp8yGL*DbMEUmq*@i7zaAroS=OX?yjnT0l z?C}Aj;^D=+Sxo`y#@Z0svvlf-R$XePE|^8dmxvrcG58;CBj`|)uerslN;TUDu}~H_ zcDS*w`LM8pX04sGEz+Aapl{}M_S?Zw)^}1|$NUZ@*Kw(2{;xpZceLN%tT;kQr)?e` zks2g4X zUTU0u)}%T=J_dK!j^>!4mF9J5>ddDf!sg5eKF|5T_uLdAb$;z&pf6na0?>~e;0}8+`#^N8S34JQHE(f6jE6sPf(N0#(4u`6U zT|2-iq-ezMboj4Yd~9#5M^aC200Das0Pva|C?_iBy3bRz6qYIAf%34-9#vSszJ)T1 zg7<7l>J{y>IQs!N0k%w4z%ZP4VVP;UR+b9wg~;F@$Y`WjZd$lkOua$D z>d_H{M|1Ld76uSYF$8pl?bhXv(;*c|9LWhW6de6!6b(Z_EGSh_?Jbw5M)7L+|-M>Y&gTaq`93igbkldBBX!B@87=biO`!2i9nP^1n>w%u()4-jmI5L zI*1B{KF%UQ2zX%T?mQowx#P*w%tq^A^77TwSy@e+s`E{bV@hlG`Ub=-G?b0JvW2~O zk?k3)!}nLWKkI}7-uqlbnJxTmYsJ#f+Qj&754K*W-8 zN$)xP14jg&i1M<#K{>EMz`V?b%srCYrIqb$IW~Iu1qpNw9X|=r2Zdg(xV4>S0j9dW3zt7u=Poh~f{Zy-?pxr`SH9IZMV(t4m zbE0CCN)(gTNmoX#&fY54>0l6c_~sBKGQ;MrFv1ckz)5r+r6tymmWuX|O(L)uljyot zXznbNIp`ciUnN*d)wWaAmk95htcK){g$hoB4U=(Abnan?&q!P_6S|Y0oI-&9+DQzi zZj?COMdOEX%1`HJNEG)!c&vI4QJcl(4Ll#NJ zvS!UTG_iMfiUwN+9DFISUdnT4HaLEC?!oswtQU)aT9q>1UT+jVd4ZY^#qt6*T>@oS z2epC6Jzqu2T|{~Xb04>wv+uC#98bhA)(Qjn0VW9TF;GZ^k1u`<<_4Loo~gw7Ie$Q2 z#UQP$=HgDMP=>@tD<;TJuT?NRwz9F-eywh4cf@$(b=tnZHTwD{dm;l&0tqBy;hsd& zeMqQ?(!YVzq(W8hN3l?q4IexcAyOOo3=1SvVC4&HVJ0agc1)zDQX{^c8lgcmW1k~? zIqn8qQ)FwRb2_K<3k=vGto2|pC`dn31-RfuD0$|~8l$1vfex+sj-a-uPz&vu&on@M zdWj0??Xrk1#}H3_l<%kbCSaj;)_hjWLaHD(Y9f1KCdjTHxWb>+z|Z=f7q$Rz z6a?9gSg~u{xRv#68;y}R8Z!fjvjLFKniVDsWIixQ^(}Q7F&_ofQ*IJ_b}C{%n$NV7 zI{)a-Bj~>nBs)Y9L`@P#RU$f^K#Gv}9277cc^`MT zhj~o!tn3Pes;|HC8X|;wqFx=Wk7^WHxLs^>lcADGFxykeq}P+PrzH7yO3%@)k+Wpb za^Vt@JFlm2nd8XV>AJ990gCEpUd|AGn-TT5;_VR#ZLr8=cP#R-ro=Az=|P@OSUe)j zGVejVYeqI>a5Y;?HS3|8p+0O%NCi|`Bq4zbZFs@9W$oCYD*NqxTjL`6F*9(aHAApK zV-bV;hN1H2k=-bvirg5PK`K(T1z6kl7FbeO+0-1cf;9`avh0QZifUBFQMHMYf=oCb zTKQ0D#~YIPVA?7mg|BYl5Qdvy>|_`7)BI6c_I{SilJ2k#=H}cRKrlKH4=E=d>7RXl`eIwZ?nTj)A7xP=3zcYD5jI*fS6oPlB$DBF2Lkhn zAdBS?=o-9Wl(GC6lncjA#h^l%`k&?EwE|t3@;3@R0}ylpeXXM{=gL-Qj?x9@ZuO$# z)AnE4Gh*&aU;!Bm>5F^sCd%VxYp&*WCY!=n|uy)oai~-O?HE~7EGzoi1@JA9uTVPKpTxo_w4VYG&h0g-fY`6`u-jnMc)e@EnKSmcE z%>W60`?~GOvv6l8%0FIT_}=CFsR)(97C=(acUxyE<(MyEsT?kvkdl}mz6(#}Nah#R zgiOHK527H7_?X0t65oylP5qz$6=}!up_g5X52qaEQ~MT-`)NXXJ9)xu*e{JJqn~B7 zRcFhD7bXXjKCk{Gb=bZTLNGXL`sXTy6kutXQ6NrEJSRt_D!EibXCdbc_E`& z&n>4#dLWhxCa+H{hP|`$X5X zYTO@JPd$}(w=q_RcA9o9l^hg}MCT7#-7ooVxj4vf2s+*!fsV^<$H>8Y&TK*U*p9p> zPgvG+T1i@Vi@2gCJ0CSv=Ub!UX13*M*m;$UU@iCDexE_e_&ZdLk@4_}mW=MSk|-rt zu^UoSutOg70s<1J}#3;GA z9mSjih2Ftrju50ckNLmN>HdBogVBIFPLBXL@4vKO;^F;aP_>>{p$Er{#7Qm}b_9Z; z#fw_{rZv0y`aR+LnQk`X*U!weaTDW8d<(NKH!8^C+-!I7awBe1bn&n&d-_r3x7DN8 z8<@?namL=Z!SAu6W-~uPrOglA?3z0fua4pPbu@G`>x>WmU#SrOUaZn&Gxcl+l^t-Q zAKZg6Ph>V8@YxWgDV#7}xokVYr`76;sx+MBKP#7wBH%0gbb+lz@PmKq{9Gx=_-*v$ zD?vqt#roY2{5zI|3?FBKrXYKTu&fQT$lA%W09`CiK>n_i4zvx9lI~;KbJoCC)56y< zB3eQKU@H4~Ewy^5h~I0O63MUMcIzvetAboL4V!s*_aV5CwK#CuOa*IE4s){|;X-bJ zz`wkFNWLzz{fRVi0LTs4`bZ3bSm=|s-X(d<&6XQDYs~z9Xx&dF=TOd*rj%c8eUgNc zJ!f4R^UeuYYt;#+Z+W#n%AM9RLE+^T|Y{OueCK#5a zmcJlngrQneW*UbvPp>DB8Z&m{^@BBTaxl^Lx@)HQmwV$pZZ)F}iHm?>g$-c2e-w^( zcCTa`F%Vdywr_HMaQP7g3-*f{0sK^ErXB`BL5!q}21FM5AsGypTlJKck4FonF}kvl z+qn&q>IZL;j&s}(h~lT&^(tKx1qT)-LIwwPDsze2HR1y2dzg&A<{iKn^enYTH@>gL zT4I;&1vVM@N01sRJKX>{*=#@xv%okfOGy;*Bl%);&#pkfr^NUWOjGW+jzd@#fG#7( z3U{BR)gqck@W!FupXa1;G{FEi-2&;rXtZO~c`Zk7wYA#{TVwr5 zldyhs36oN#Owu?&__0W2d^+Ajwr4Udc;G{Rx{6ZgY+v^Q3c4D1O?oep=qzUghdj_- zS9z4k(D^EaC=a*<-25IV`q0M<9PQptblr_|I8E}5CMHX}e$HAwZeLaIB1S0F>@U}{ zT<#1G&{qPR#5Gs4C=Ejj8r}Fe8U}9&oM!i;oW8e{=q#i1xWdw0R4y~WI-ER~0Qpey zqb!yAd=+3{YT@j;EKLVfE(f#vI$Hxq+E3eHpnT7MW#;eC69Oi)=K5roZxg4kgXRm+ zBl20bLwE4iXa^fuh4756Dl=W`z@x~H`h7>kSk-~q&8i=QNFfCfk!!CF!xyx4TQG~07>hS5~Cz0fCtu7XDQHytM@s<<4_Jf%dm>bB0Kf&&y@>sWeKI8+1*-+xm2Hiym5gh$>kr z8oMcpe#e>|HwL$g>&2i>CWQ?>~y%m?T=lFR+e@dmCny*aL zE!!=?JV3R?_mS_O2kQ683oy3#LSYg=1s+l{80C5*=&hYQ9~6UM#%CMBf<)&EvL$4g zC3g?w2^5(NT2bb`LnXa5E`7{&s?mtE$|ACQXPWtDCE|nh;#GNcD}_Um-&NOPEB)oZ(9i z;FEMf7!#IC_rIj`Z}qWNdWM0&;5i;oPT2!OjP+rFK}LDnvD9~wOul?9(mD$(+W|Wk zJp^_EDl7z~8)m{JWF6e952}Lwu)qUSAFMY$ibvz}y$-49{4q(uyc@qzWOJ%;w01yK zFEVfg**k&m28P&Ae-xHSrJVK*l2YAs z4pCNDr1YH>lA4H+JSM0$d_sg08ZpuYz=INyO_75_q_>I1(;FCrYa+1Lu9{bol)2~; zS{o(6l$vJfWHV5{vin-28FdW(J=^vQtdi`mq4~pMU)iyhrqylRQ(ih#f);2YL+!0F z(~bl|5>D#+mpOUTBm`|S@isf;ND$Cs0Fe#uW-zEjQYn|Nw*nAa?Zh!C>G|F~215%h z??Y!O53nwQbPU`A(+o<5fBEqY#^;M{e!84nUT3dgjY9cpWSg31Jx&$U{_xL-k)T$; z9>EXzOo~dOghC_1Tw4q3A1hb8-zNDDz9=-9{ z92!JCNAFTQy0*d3@4H+gvd;jtmeT4-Jf@|r6MvM(7zeL2WT zpEb5B-?JMp;2m9H0M)OE_?JK437B9y+7Sijhh$IJSc)VAY*y&yH-K?npsPz?gR0VZ zEz$4{%S{g)FHa{OG2dkF{4cbG_7$zr2f(nDnaiW?*DxG{#@6zhSUkEatrspAn)@8Q z7MIE<7K2P|$`3g#C){|011sBQH(~%&%WivI9@Fiey*(5x4Re_i06+oY5$3hLLGxp9 zF%?iUvI_K+;?am|T8NU`W6h~7hIvFK?FkQ|A|*QgJXAYdO>}O+zhq0j3;pKvIrQ=f zjSu-#-orT?1drFtVxVrfiu)KCW_bxRLLoX?Kqn>m@k>+!2g{ZK>fsXz4eRg=rp4G` zSu;Xbr($_y*pDBaMUMn^O;1oCeejq+OwGdYf<2^(gr5sTFkYk`fEhukGQA1Mz+$v< z3k?=bkooMm&3Ve!4&?YAq=j*#x{)ce2BCqvcp^9v8mKC=tOl)vWf(a8<&80B^T#6% z1_Ou38+0NWHn?}RL3|5_ZBaP};|zZ5TN!#gcr)wmS_yz=5XU_gdOIJ?F#Bj79_&=n z4*K2ma}V~DvjaSgR0x%xGCaJC(&!tv!9PD42+C><=0!UAM3JY z_=XuwMlxJ(HNDBC_XdSJR+LB5b@BdsO858V-v{fjE$k1+B+2xHr5^zz<}v&d@2v>G zy={NcO%9g)Vv|O0l5XG;O*qo0cvECy*=jmjevqewx!HU?pnU9FW;wK9o7B#oRt=4T zQlHKka5tr5>%}h9+zHo14soJ0(bYrwfef^Nl93>eQGFIsKCCYo(T0Y44rUes)K{L{ z9B?K@f;$G`(5h)lF*aj$7)Df|>T+T%g6^78F_PAm1LRol(M=R!28QSej^4$euvys9 z8@8e!&~Bes`oZ4zv`j&u~2ih zqF%mj&?OIu(CtW;5Yu>B^KadPnTqA7pi84xs}7>Ut?gu&TfEN*o%8+sm24K&0D9K< zt@|;V07@XLg8jig?5RY;`$)=v=pY$d$&H*{&HbcG3c8dE9v~%dh=_+8-vzy*IF#u8 zq+;a)X4F4#wJ^^guk~+Mkb?6n+d&eyFX?q!@s6*j%37dY-WFjp3irJzg#~B;0V)7^ zEdd=S_D5i1xPEltb~JPE?1u~X z!`v}^*d}Fnij0M%ovHngV~ZO%Ev%&NrQT*-2sH7nTpMs74N(QECsqd&HYB>PCOC{f z5W1CH{VOfj|sBwbt$Lz*qr|0h~HY7^dt74nTpp{n~p+(YHFt?dAx?=o1yu48xNg z4wezhEgUUXFApZH#!(J=Tp5QJ;QHsRm3`L;EuIkGj_cWZT%ISBZT@rULfcU&q_nfJ zp6rJl)?Z8>9xfNWsC5j8g`I970)PiG5N-AUkwXsB3;}kM2cIGXhyzmV>U!|S&g{w{ z`-luDs1bvDe?lF?I+j#LBjc(vIz1KhisPypbql@hSW%M)FHX<#7QTAG2GVN~Zh-_n z&V;^-WuvS5^G8;;urpBGQMHXiz^u9KKh5@z@9@LN8iLn>NF03wdXM1F_Jmj4h8^q! zJ+U46j)eU_Zs76&=H7Qfp$;B?3g?kIsS0Kqg~Q=A!7{(qXbW-2z&Q|@82zVgFZ!dw zIDY0EM=>P+MLRB~PZi6R z!I^?^5S!c?^)PfD;nu-Y@-flE2l{hT2(4$r8E!{^&V}wl6-07GVq-sw%&trVfqO_E zjX_yt2FWRJ%(W<2XrGTD=Heg<4KUF0AK;=r{sV~OP(M@*7-CR!Kyg1o&#y!v_~Z6W z5}#O@H)mK2Au^yQ4vut1T#}vSX`uLskQv@pU?iOyVIKM_shZ@ z-ym-!>1Lp1m5`5Up3Q)Q%uL{)B*3mHGnH#t%az6AsbyH_lG;mi%qU)Oi=$Pvz<)5h zZ72Aemc;ClT|kici)q5sIEqDZ)1({JPP2A~z}w^Qnz`WTNOx{gIgNq&)8(LFkMb0Z zyz&!{kQ`b-E!=`wDv1d7_k{4UiDrP;u|`a)FkP-ykbElhaFT)JI(jl7I=ub7dlsvYQS4a zPaI%OC)Sp=zye5lt=YsqkN`=|s(TpPtjJKMV(>g{;Q_e_4^hfuB?Y2wyM9`x!ba!l zvqF&EFEKm)W|@|VXDf;CEZaT^4*Lo;IbZ3lW;qlmS!PZ;5V%6dQ>@RMYTamXg1Z>J z<86DeD>xfA_w@+B6N|9|^(CGuS<8dx4|xn*kh@Q>+^6|dL2e)CFUUDa@WGbKzg$X@ z;G4u^6qNjNG}98TePX^2Jn}1R^HrR%9+*eV6Q5M0Fz6m$ z*SZIYCI0gG^&sQQW!Kuz_ut%|i6ah~S!P!4?(>h~_kBKe#7G??#P`ch>Lau-_uF4b zm{V?s^;+MKf4;ft)h*`r3*OvfCLV}&0OhZa!hX&RarerMe{C^OpMrl*KY3)C`QgX# z&*6U`QD$DacJmgK{L0%~%%-2bh41e@h9alDhz6z}hiWJM4n;n=!#~m9dH>jAYPtIc z%9FY8<1xKAyZqE1S`Nm*EC$(~tNM73e0FrzDxD{f5n}t^WoGex*2b1IkZ+KhSFmF@ntrE1`uPb zR&h8A@$0`9oll5%o^+k-iq8Amedn0y^quQRyU+{kxoEE0`6{>jOxMEBkB@e~+I23> zm#&ClUZ#nIrIos(^WIXJ>&GI@8yx1k7Iyx?%n0UdT<5(XbrC5}zM!^SvlddE8wfkN0HeO?5cG*62M674**3pR>GEHlYy zk-!zn@TeLVp^Ta-dqi5Pc+R#`NVW&hjT9+k5s__FA=&hUCtLcep~z-`71>f0up+WG zVp}oEre8(2QI>4IOgj`fa&yFw<7C_5$hMJJ(t2VMt+y|#R7UE+3Y7E8N>#w1u&2j< z6z{3Y_0;Nm>fJ6cpl(6q`_Ev?iQh9-4`w{qAY?ya1DT)E619p0x4tXx_)%3TW$P3CJ6Lt}uEx#n2< zM??@XD+?TonTPXSqgi?BhjA2p9rYJDmTAFlAiR}uu<)+Gd+3e9(-G2hNIGQ(! z&cz4P6U?!{adbsbV4mHJfo9Z%*)O(_wjXP!Mjsp{=aHERIa8jTr-GcLe-|NV8LbgK zmaZh{S(co)-ujcDFfFzObNSc>2~p~-?DO|}t2ksQqOuEP>HTE?5hc zP*Npq)QoWri{l|BSLYt8%^??AU=g#8tt$H`D{|zGhjKp9=5_<}6Yq^czQ94QDqz-OY^=gR` z6F@I9f{Uwk?^^*r8}!>yj8F-W51R||VS5&z*%w6csgL5*;P5H?2JpG@w-J1Lo#5*V zM$|b*5b6vlh5rO~qrV5#DhsF^NXa3&pb{QxHWxz8_AJy7HAbM$M4@iva*ec<{W^*CfY|nzdTNLc3DA=tI z?B2Nmdwdk^R;RAI0_;^DY{6X%R-k#2JMHfQw@L%<8nS9gxK+Z#&E`V5*`9@aszO?4 zX4<20cYAU-0q&M15ppM;i`JEbo|0@^q2E{c5PFci0fLR5ghIyO0|iwC3iWt5Gzu!= zQDAc+3T)4!aD&22hr-+_3iG3+|JB_Q6gD`C(G{d$T|oK@{OU=c^7nvSr2%)6wTC3V zN_e>0TnIPYvvB{#jbG$Xd!ukKh{FB$;wao?94$PrfO|~=+;mGG?s9)mxW#U)>fEY^ zs)UD|&4qBYJq!1NQMeaH;a=k4E~CgC6NS5-SOXGWDKa06h|GQwk(m$py~y6WFVxV6Smt%R{ZYD*|@LDXXre{J03^ z$9u~2hfmlCd8pOUF8n8a*7$qiqgH^=Dr(=5_^5=(hs}lfusw^Re%B+3Q1bcDW)I8*2oqLe22^ zKuCqD86+hoi_K&5ThH8zxX>M0g*gMB;j}2noAj{o>SgU03k-K)#u3QPA5ba%o^zdC4fgWrGKx(Uh zcjPEA_zbW#rSBO~l=9{jQCH0gCpwS9?$)q545TW=3Rf1-Nym-8**F32wM7w(dr1#Z zi>IQ$1VU$NrLLgGk|-@Iz$*MM@k;r7;G@C-GAUMqCgRFM`)s+vsvrfpu~g@8V4o;5 zb$8jKJy&A!GqU)V2Zea|I=qwO4VvcF;r(Hrr-^RW4e+dXc&iMaQ&GI%x-)|J1}BB> zCqk>9i~dq30m2}eSK!@$rW+*x#EyQt0Y6X8pq9<`_kcm=fqJ_`T|I!^dbX&usz;qw zJ?bjzQ13qhX$Qx0k9q|a4qfQ#P=BeyzEfSGTI*0(89diG)TMy${vv{Uy98)yrLLOD z+X3isCotuJR_2e<;{C*x{)$)7ks40jGJ7MB7*n?ji34cQtE2ryEPM<50j&d1dzQg-I!gO*+!3LDFX;th>ROWa zr$vi5IUUp$#F!c(#v-Ve2mm=;;_pFpl?5>tNcEr_>Jq0R@Y%{Ct6ElIxum_f29ex& zY+(f6awjXg0)R{efHV}*0}%Lo0HCq}pcd~)B@cj}9XD9lbAxrE3F3yzI&Sn9abqeb zXE9dGcs_hnySiNupnHS(zyf%vk1}EN?GdB`q6{YJT9OHmM2j0Ik-CBg=S65>KmbpJ z4gMZDt1M{Hk9VYj?GmfY`D~fMs-6j~iu*hhrbGeg69<=8>IwiFBLK8RrZ#UTN@ty1MfuBkP-*(Cnp4C464xgRh(XGXoRXx5cIw-y%C53_{<<&8| zV^{l5b%AKNW3rNY2_jkFp3W*OkEXNxzhS`}NWsvd6@^`XYuaXw>k=tM_XhxeIDHt)Itp7R~v zDud^_QM|ADSp@HDiZK|jF;#Q)msSV5t{j8Zfa5;vcZlv?*6)+{L1U_JAPN9Qkh%UI zkf{|40)NA^`lTT7*$IMfognDm#$GDw2vSypAZalO4whF(kP7Sz54!;Y7C3^a44!+V z1ex{I2tmq8Ud9?6l${&>Wi?>}=(>_1`$q_JfF}rr0ul*ru|nbReMJg|lU#L0q2RL< z3f)>77~NYMsHmesUy<@d37pl_)zRSjT`at+3!IlY8mJ7O7daXz2)q2&2n{wmk=Hfu zgZemgb7Hi(-Kw{=Qdek5O>E|-99r#XZj%0a0zS_Eff#*C= zIwFUD?9=4X(ADwa6Ik#NHV>Mway(EOJoiQA@Qqs{_$(ktDTfSu{#5Xb!*qeebOuDv zkF3*>8Gs?t3;aEBRaua_mNLa>$;(3fY)Q?k-X5{4w?``KM6Y*Ce#qzJ|5eUT=<3kk z&h4;PU7)$fp{+7_UL8gI-5*ELZl~xGZRNkCzf?Gft1B4X=g`&wya`&1n!>x)-vdt- z2HuU-YCNlXsGOcH-mL2JW>t^3ih8qCV#ucj>u6F}hxb|xR>E$8r*U|z44(TP-cq^k zqS!Tvic2eXjjLS$6v)6+KZ=lPqxiS9QdbaTgC7Sfzfu8GaHS2sQp(>0RFwubk|Z*o zZKoIj^Vw2^RV_6Zsw(ak_z8s5qadte2MAPk1qfxK!m-;$kRT7j5`T{_RT>~HpoB$0 z(6bBuSQq`K*gETa1r)eW0aN?uJ)>8^z!^bZ9Y^*okMsi$Y;+t^89Z-@N@8NRU^+4gMZ@sx0vCr-b2ItwRv?Y)Q|mUJzN;3!;j81-vtl zwpYL(GAPkymwrX8D^;f4MSvF5@$hQ^Y&#hY_@^DTw$*6R+n+e_7*XPFFJg zG;4QU>R}1c24N(0ef}O@syHxTgm(l%9RPDZTg+M2W6r7`a}{-%r|ODLPou+9SBLpZ zC)=tEOe-AbDud@_6!VTBL@-|?;GM<2Ao|M^wFzP56___i7*0svd0>b!ewcSe{-dL%KS&f9R;IxItHvUJiod6jZ(Axvq{N(;Sgh7X+wv1W_40*XS7@n2SRIR)s6Ct82rM04qmV z1t`lu5<|bEe%cYVaOu#g+)9gaSdzo6&v&_>-5S5ku=1}BYeTsf=vkZ(5p1#D5@O$FTTj6C zf5pqu?zn=BhXgb{r06h}>rBBbM-;sTM(tcoguImAV>wc{78fBU`V?|gZgCMoI4jy> zx47e4oalWlfcWIxw|0(KRh{${Gg+Q{M}{|I_61=XiwnGlX_CTi{6-45!inMluVSBs(J za0dAJ8zbsfE*rJ9Qdc>43{8~KL}k9br(Od}929^&dgd7`joorFU;wX@MxMlND^Ro= z#R&I1o-=rMYnDf1UH@EEvzreq4}b__;bi}Mw-|~&m`x{GdRiu-k-j!9jZdxCqi|GVbmTLss}zw8C66 zuI1GsE6k2oXdvV2UKz4NeZIof%7%gJmu=}mxc0GpX`2EZ7`=YT3a?EHF-B^3;G~y^ zEWJEm`X(ja2fky5g#J4P709v|{yt=dFGVXPNzmWCFeFGd(F&Y)8<@-EzQN=6b^BZ0 z*Ae<$2+6gbW{XZk;?})=pLE-5^ZO;VUw!;)*stjMw6Y*bF~NRLwfkR^ruFGpWs+eS z$5xgo5Oko!r1|z=;>93_k#(8C1xwFf0PHK7VWq>)nR&19!9@m)_!Gu*U=VRS8mb3DVIIL-fw{F9(z2i=% zEO47rxXTkKCDw7eh<$b}O9dT$+}N@Q{$HK0UDxsv+?>IsZ;d1P2slOv4iAsN0_Esm zjNWS>5q>c6Q?b-k*1qK=`f8r8>)mSp(3+a3BS)O)UnhTOUxOij*OfW<{#W(kOt#By zmE5~El`~#bfjI6k=S8=VyL#S%M9?wbrA%X^_9AH;YYg7;+XUXZqlg@K97N##^?mOf z-ipEDo%Qgxpzqu#i|IRRSn!%Zf5ont27MKWqzlHyl+=-_uqU z&^IsJFc;d&YWJ~9BVZxS<8B3hO2^gn%UQ?Sc##@KkTR41 zvVoEZA+{$ytI)cqtro=O>7IwS1-^41F6Pg<%M0)wME=bYh<6n68Zo20_JN z48QRYYzun#Z&!@OEq#L{QObUsPhMmt#iLUii5UDBtrGk?KO;l@$e%{tfGz2*d!*i* zE$GR-DW~T5mB8rH-&u@wdI8*#JEjKxfbIpp$b49mg%4YkKh@+<4Os*K#8XpXKXHsT zPZKZV$3^_S^w#2+HBZF@lfnSU#V@~Pu`nqhOx#}S04k;+(~l90S*ho!?6fimbC!+;ucOVXkiz&P{Sj~ zZ7`$<9~ng+V(?GAe;D*yH9UI#sHhm%?+7l-UxtM#bNC;lWR1ad5BHLGtOq^Yz;cNO zoeaNdAOep9SwPfPiLT$U?JOg?)5Azk=Pzg&z}lX=iOwDe2Z(wShxKIHsIXe(VFK*q2~)2BO*9;ukYX91&86YEnXx~ zcW^svk^CZ&9igMy`0y~~x7_UdWR%cof`2i3PqF<~^OMxT@O0t|G>^{hkvnL@x|W8c zb7zdsT{s%IQ|v(*UrSET9bG;-cS@46Gz7Dl18-@RQ9vvZVh{ohY`XDZ(F1-4{^$Dz z&js+h^Q6j`i%2qB)>gr2H4!@}C6E}-qdLQ)yZX??D9A(4-)rmYdC zEz$LeXj2c>Yyu=l<2o78tWI?OH-C_c(>Vz8-gGh_F419DWsk545zo7Hp2Z-5Ge{L= zc}3c+UPWGtG|tJ;Y4OZ4f0|bA%vQLVR!bRxBHx}^d}BNNN-X|4uh!AHAMeMHtyxh!wBwh?6 z3h6H}1QljawiYU6OdoINu2Sh^p+@nm3)OK2a`McRXik;8KBbhqK9T367AQ}%&OS^- zz@}C3Yfb?^snJ+5WIzK%>|YGtwcJcv6wegeNfZ1bPME?1&fe}joMI{S_Cv#Ht;Re) zoMLISki|l7#Qg0Tvx~*Anp}i}mo|;q|hhrfo%Mx8W1-`_n;vKGk%)@j$xax4bv<5BJ@_{Yk0bd^(Y;?0Y z+Ddacx&ehwLS@?m9*zwL9o;k+v@qP!4co>b$QjB(AH1;Q8k1M;U+q|*VMFfp^r7;x zWhayz{g%r2Jif?}ej9yW*Pacb19_%0z+;4nep`9hU|#1Jb=@gbd4OZ^_Hf^7$9iyM zSV@%B^(EnLf1^0xvtI}=cKrC!I(m^uD`$U2qxMBf%s#|YCNX%|a+B)t;qB#GJ7jl~ zh1rEt@LqbSr*8z_TM4K0!5(7S@_N!ZWqzUZ&&A~KGOIptpj|<}i$rwBrF)31nf1#f>OYR+phbT9X7LlohTS9z~iGVzrV(`4o zt*Rybbzw;JV*j* zSFJ29p#I?FbZ>!T`0Zlx8?OE7UCy&>hNaK9+#c%3n=t4-V>N#z{{w}#PqIL=MbhV_ zIg;P^F3^z}ywkW(mGZ&%w6+5>TkYGcp;b_OwY*E3S3acnaIUxiD`?N&tKmfTN z(2Xf9Bog3VIxE|O4(JpVomW2IqJk!va>aSP$YiAKv@NIWCJfBFkd2^Q{8t?;dwx`~ z?B$8U4(oy}Urb)|yK}GopXsljim$NUX@V>$3-Lu8 z&MvnsqXA$~ZPx?B>OAEw2MXvv#`JKPEQc;!UW57`)EXROG;2C@CZa||kiF0Mn$IUf zX!37;X0hcM!5qsfRvki>V{1M(YTh%zQD1~Yc1xY^*|CUNo_&bzcKjl z;m+0~d*z8Gc}$uBQ!i{X6=Wf`QEJ)(&R%~>l#CYBnNz43DV8$7{Y|{J64t-QT*qRO zz}MjrgMSwbzla=YKCncpb{*=LBI@dcK~zsq|GloM3@=M(X%k)Z25ITZXiLqPkXXRk z5zA8nqUX~s&O+kZj>S`ElBhxnjE%spH>&a82;62~SL%adwi|A%!$IOs2!D_R{0D>!D0t|bNEeh#MO80 z|Dve<7{8`58xxf`a|Nofe*l4$5S1I0n*@VldH){U-^I2s`pT@j_L*2mC-7~PnC(0r z?V~4f1fxszlnT|nu)iM+jgPax8@V$y3@XWX@IN58(Wy(jCe5irG&biKpHtGDya?<5 zDTL?Vq2U>0UbdhBPi1v2C?EttF|!FkN5R)>L;idDm=>3h82@gz?Za3)JvZM+m0|Pm zk*&2q#kL>epKbqr^6vv*+zLKxxu3LSeWbrXolSh+XMZ34(pLJLW&5ip{j7z+4aCri zii9Rv=gcfTc1Arjjgo5nQ4rud=nSgKH7s_Q8{W9 zhhYytaP?ODyV>?PG(FAAuJlM15TJ6P>tRXq74o;Gnm$1Kz;xlU-fE7(~OaF;PcemF5MMdpD^j_M(Cc72*cPVQBEL0f+{+R!I zn43qV@rT0M!T{7%AeBQ#rNp~I;@xs{$lWC()L4HP+5W)U_meM&g)1I??^#te`Yswa zLqyzP44#LX@hHL{Ti45oF#6+=r~;`W2!ckPvHCaL`gwmT`uX}YERrp`G<+|VEkT|+ zYzgO;QZ8&&&=qTcd`b9X{As;oSp2!)rag-1 zJ1&8CW8N;udAxLT(A@N%-$9dw^BwOed-C|Vi<&7CgK*Z(OG8mSa1S?v7Rf`5-sKC2 zLCA8mZvi1o%ilEH-?r3;9Y6MO=)*nSR$7FAeEj?CVc?%M`?6RlNQ2;S`vd-T4f#|6 zWGhSnl+3wR?i(4a+8GVhFFj5zy)5Rhsb~wsozW=J2fzM>J5v8I%-7<3liVd5@=x@@ z!D5lMHPL}(HDg75F~wRo%b*y3^>}NlZKGJ4AO$$NTU{?Sc)W8mC*IT@-TRpt*- z>DE@&l=A6F))c^l^&%mDiVPIHF`kHhkt;fujU)>JYplJ8xwlmIjFfQsHEe|ePXD3& z+B&&__nTiEZ{ZE|YaUc4y(0NFMCbWTS~v;X5PcgiheUp@cq+7O4(Q?>6&yd7Kx~`* z+B9xzjnmsEg#JVHzCzCN{nGoMn*?u2Zx8CWruXi-{{+3AeQNx^LjpQEj3vYyT1!rv zmCA=-bDf_Qfc}S@S`gzGq!#$`m`6+`J^L){xQ2xej1Nrl75HV2Te2hK>qrt~?eKPv}%HQVi3EsfX$5eYz zk;^uTp6?KFC|xZ*c*ePGIu3L{V4Z~pM9%gQg!AQ8WAG&O9$zfQhZC+QAJ}flhtJrl z87yHEAJSaHL_V~9)J@w6qB$44ubkG~shdDkH+XQfV@3Sf#o|}Uk5T_ge*B5sr$H{L z1nt&)oFBXB`a*tqQ2(?1xV!WJFMiDWuJDW5i`e*S)eqwKqHusAdr@wd-MV#qvA69H z{LhD=vK+%2k79gZY(&1*L1Gmck)nYl1kC-#{L`#?!oN@+$D{1O8&3{uAFlYf?8DmY z1aBDMcu?h^uAprYY3rQ}FJ&9n@T;v_?AU^Fd-0&ZWPDlm4H9{9f7K=1|K8_sH#35#Evi3!Xa#-Q0Be! z6ZmtE-kS4sG?f#UiA|EG`N>-R9+S^q=8C@xrD_A}g9H_|@VQFNFQ-w(tUCX#Ew3k% zljzgx5XBM3*Au%kxrc!?qR_$jN8fR++OKuZ+V)Y+x3BRMI;v1d2Vca~ZHl({pohrj z$ifvGF??oS|zeNt`r!{Q(H zs`)FAhZ$W}%PaP5XH2Ck+mCzA0Dbd&{|^|2R1;P=VVRR%x#_;{w$CwdgC6;5_?@fL zuGPS|%5V7MIH7U|aJTb+=9!VUu~e+F$BvFSmU4|%NnVp-jG9o&;egJl@~9aI=9OY6(KBkLzvCd%z&8Xfr`O1aht$1_kWA` zqd(s1mvTkdr<$b*@1zT`#4gB7Nf%(q>ZlMn!#o0RT;F<_Hwl+MykGh)T3Zb7ex>1^ zp>UKNVM1`ZoMRAZi|oUA<{fDNDZ$U+(EoSp@j}!6*{3vUSjHg(4}C|g5V?cM-^|_M zZ=U1$xcQQ&pan$NH18f{cdIh}Ry+E6?ZB)sJ4kPGXBvg4ps<>G>s`8ISp^u1b$#eB z|5qRnE}t>~TLLS<4*R0=9aS5@b!doKA5?&4F>*%M)}PXr(r z;_5Oi<-E(t)AFv7cNNk6Z;|nBDgbogRQeza!xs(!S+N!>09I6)PLb!MP+G{&+v%-Xd)7tZe7ITmv@dZ30_%h0CX4 z;^>R3jwGb|QaFUN|1&)JtkCfOf&i2-yjO!AI1&S=c&YL1*h=#uocTzSmE#NI+XvY- z!Lm(91*66V@KZHXapp^l#4^9nWtc9Jrj7VBD~OYzNXZ z&^U<1rB$~p8lkzSaR+i;jN-xy+@)Bvfp^us%Lvblpq|sF*rMnUCyt3QT3c!zZz~H+ z1R&)UAT)r~Qeool#LNHTWsH6uMQYd>sm}*Q3GN`(j-{3*&AS#P`#V-NLW*e%S1wnc zr{k^krI!bfKOby)D9AoR#>_moF0uHyvdR0dnbdt8T6Lgi0j0&7E8EbQ1hv8hFOZUv zLLpy(jd|vA%NWc5o}DOiguz^LlbCqOpVocDO{X? z;~$N>2OR_@y6!~fQc>|<&7@FtxSiOov8N1)pv=zwf^n#pyREwnc)9@ z=P!G?oX3D>`D(<>?a*=esO9GKw(*l=jiZZL`)if#D1?91%(GzwM}_c@oOwdfao1e7HQ{?mp?_Jcmy*Kqa)f4o zd)dccD(q!fd)d)mM%l|d*OQ-s*Zsxl)x)#~oFbf%8`gLRCa&flZzh$Oy<8izY((N} zML=8NEBQ-J_{+$|)i<*O7;1m24u2Xo^D45`zD|X&N6-8cUXQk~^O7=V=COD^#=g!A z%XTxX@OnG@IxjBUOI)_6xa=xa&5rgm%3j|2uH^X*dwIoPUbL5fT|8y%mEm$(AHro$ zk1;smNf@|E+U079SjJZMeiplM2KhZk-&xEdaQ!0v)eUif1+%hVFu;fK#}Q`lH5lBQ zgE9U+v>R>-ouyu9m=qnzncAxO;I_<-9Lw#8iMPmn^*SNbsEd`i z7(Tmf6MX7R@aH<5F3J!ZeBU~MM$J5j8XH>6kuy&!=~6yX%B6fT>QWpVTfQUAFSeJj z*h@y2Lj8-;V{_ZK;BTq~e><87qeq^S z+oHue_HvfJoUTied~d#DTj1YRLLNFUEyN$8sa03yfbCNd8=shKcgAjfj?b>f6Kr2-r*i~xX-$cUaLkp!n5MNjiu+^Zudbv6B8mY=>bPM$SQmHs`3{}c-! zmRjOO_lNe=C^#KjO~H~h^Izq_J={6RS;T6t&`U78f{2KdDIM79>IfCJy=E#0>_7`Z zN&`pZg8^acb~pY4YRjtGL^oPt!pdg@1rt&ZN!Bt)4G<8d_SRtoru~cI)6*h)E5Dq& zZhxFdf4J?xoV}!6e^Kt5m)ry)GDK*ZC7>cF!OR|;F+bRK3`n9J=FadhlOPP)6I+Aq zH`>vAkln5Fe!LoCK7yPze?=3_;bREiT){+1nlLhj4?=QcONnXQ0Y!=_I+egpy>3{5 zH~GIjem#>a`-1-(aoHHNfGLdG>-$hD$j#ArbpXe)N>lpH-4pqRk+u^k4)zpY3ink4e)qh}JsUpHUeSjO21^fNF%FV<(=#r)TfOCR-*=eS?D=^Q z>mZjodlS1)bZlYrv}Xpgj})5n?rEYX$i!_o9dDO4e`ad{X6ISJvUk~!c6oqoUz4+a zfiO*U^q{K~duD)NSo2fXzUiu&V@Q+{K~c%6v64vg9*tM+Z6INy^A6AUCl()E2jOW7wyfkS<&EjY;7e|nIa1dQvm%Yv-I zZv0EPH$VEOhu(I6e~?|3ujwjErq1Aah%aEHT57@y1 zwgW2ZnuRII19H@t{w+YZ^bNFOddvjs+8k{!hwI{ij{Bd7o6w`q8=Az)6POHQk`^Yk zgD+qPtEaIc=n*%=S)uD`2=Oj9!AowYgO$sGDM;lorc1&5fZ_&Wpn*a^Df6o@*}Obt zU=qi=JS2jaYfp$u6TxLM*t$8D?R@B1ky(zD=LlJ1@om@OqU0PJZK7}$&x^4_)Zgaq z*P5?J>{qAL9~w!Z9&8Qu@0&qU#|*(Ty8s|W9a66OibB-y&JcCiGY|*%+>wqXC+s#5 zme_gA<1J2N@qEJ8zGXb&Y_q!5zAuxcYJw3CFcaXPv{2d}6fR zCq|LYI)*=ldDJjvIx2DXzV;UkkC|ab>NLng4Zy^5^j>D3{`ET%>NHm-K^$lDvQ5?5 zdN}NWD=imXkJ9Px#(ErF(;DO!wBs@A9Xw~zGu00BWx1zG{BnCqn!{e9 z?N{WNpSw!Yp3G;r_@$Z;y?pSB8-5}0t5D!JTDw>D9icTZ3?jm=WhpA?qL%Rh;^#d^ z%Dgr0y-Tl`y=Fu)3+>!n7AJ1v-geT6J{DT&vyCZ=wxeb_1HI3Ql9%u!IG*0{;2>#! z;KJP$G5x_8?nn)%KOqDlLsL4))(4SZlI-Pl^|I5p=>=1&kW*|0%%d_=f?@H6V0;a8 zUtn7~2t3INM?QE9g=0!X+y)4X8(orfD;~St`6{d zCm&|5QFVL{G#Yk!8>|wkA&5=Szx{dF}1d05m`L^O4F)jfibww5|LD97t@$#X4Bb zH?Gn^>I!>lwwH@^87@9(x;TDyiz<%2AmRk(xoFfWGr-wExbR2NHriV#_ma7EZOxwy za^1Xx(V5Q+${1e;=9_gH?XsR1KSrA^;|fX+)=QolaE*=dATB7OIpBx~YU841>89ns z;$gVe&=Lp;hykP!-(e#p2-W)qnS~Y`R1s9wUFm}=D_2*9aus&#C*J*pwZPEqpM3c^ zsPq?Q3g_7nIk$6F@_CH0oT_G@7_p$6{el9Cu8pGz$xW6<6CO%*VO0TMEObO;V~%i| zJx~Cd8&_4q206?$d(r=TE8rKDCOY}$F1obgIq@g^ONuOsM<-rRa90izu@$=V^$j$J z^PE-|1Tvq*I89QL{Z_G*SP7%EFOU*A{dRT^XT_^^R&Ei7_s;j(NRkd4@YdT&*s{dc z*FzMep7|<@W+~77MgCCIGaqSx$$Mrj+yh9x0EHm&>Os=G5Tt0p0IAhV9L@~`tmj7* zg7pVHmjr7ee<%r7&i)bstGP05?IuRUx!c+SR|z`^LB&`g%@da2LW$gbiXq-i;+q#$ zXS7DpW#$Q{J3=;wHY-$SYXkx;5s_hN-ajw0w^>WzrS>-QI@IAfe9}{EW>&Tn9{$ns z6skEiWQ~5Hv_;k3d|c;r$CfoY&5MH@LNTstk<9%93+uS5CH7IUzGquzUc6kUx!+!% zwwK53o&EK@v%6ffNd)((0rXxPcVHdkR!$1tg^f10)imNWvuAaXPdrYF&%QUD>Trw5wgV zYg8ZXZSejof5^!gh5P06QY-vi~EXh`Q72SuJ8Q*Eo)PaC4KSI zJKwr}`udN)ed!~q#xZ^I=>3-;dD;5KjibMrY8=-WFMI6eH|BPs@6}NbL3yp)cPs!>)wwDu`fREsAC%%(bT^# zdFQ6}-@SCtlc~n>gFj>o@)yE)2S?CmeP_|HDvI3kC*y(O09lAp(cFp50AN|-mQW%P zZ)G`{%8V}I>>vFRKnxNjc4E0RE~2dEp8W!yP*x%^KRmO;@GSm_g{N;5tQyBJkY5Yh zgOUsUyFmNqFS0;$VDHGkxx&9A1cey-MVb@HjOP{p^Z(>=9QWq2Pv6X}^6kw3nfPf` z0*JKlT!Er>p5c6`yc_q7G**}9TwvD zZHn{##2wDG7w$V!p7!-O z+=Z4e%8Va{MS7!TfgbWf(}os4DM>A-__GNEM7-s8I%Ha9C#j=F$ix^i&GN9XM_}md zmLEt9f-^I`M`UJmU2ZjYsrxjMELWH?H3@W5RF`_uNewyE_8<`JZPq|+rGV~C+)$f( zvv%SJuCwG;67&7+1GuPEsV!MRoBQr7(`bD$d3%`OG*F z@!nECPSNzyd_x=H^9&sr^D*d+)!`qc)uEhJ8@J?lIv%cONfEZx+ysK{6?oa}UT~K< zsE^AJp7?(OdG07*L3Q&*x@xY7^mY-%)#d&C&8$>Pz>@d%=;w1EAz26o2h})lwcA9D zSTv4|Z+)9goxS#P2xWC7`7fhbPQo#hcL&cyAAmg2}8uDw&_ zAY(^M$c#XowIpl;$fE*DTj>v||ZzbJk+#u4%fE1~u%)3%6%m-XPxn#;w^D zMEGp_mEXQir6ghB2KfOcm*FiCkMU{biRIh(t_xdC~$x3OCC5OyfKklYuGB(GwH z%=k(Es)?;q2wCy0avuql)Ae3jj?3k;3i8BG+n}xhvjs_ATu`H9f zje%xM(Pv$13*;jPnLVsYD9%IyS9*iPE@2W5<7T(Hkw|vP+#rP0W+-}n-7$8FhP(M1 zZ{!yZ#3&+_v6qG?wT4qL6a!a5RnfBd zmt~(4j8tUGtzwRtrWl&5Lt3v=ntez_l~yRK(iTHAkhb&F*OZ)}zO?lG^o3(;()UMe z(sz%mNncu4lfH0#P5N{WtY^UljYA`|;2UOvxFxA|9jrDHw*?owV`gnFJrj@fwjgnGF2TP$yWyQF;)LE38i{WOEK)(0_ z611;7N(5*EGnxs<{)Iv43aV=)@fam2v*6*PbW2g{?Vin%)IiUsu~S}8ZSC20#FW?R zlaqsyK!v-!3UiB6J9>JLV}&E946?!~{2-SLo4e~U2Qr2}_Q9x5lPcpMOP^5uR`D}} zyo=Ah69qBOM_c&Qw-q4(P~2#GQTGjy%g0S0E`|`8ANlF%=E?ot@e?d)m{HqBx9B?^^r9cJ*Odp#shAg$g zN&X=&Qyzo(F%HX0e6m-biS!HgUSo!6OJ-t$hUz7TDNqTZQeoDy${EopJ@&T7o zJQ{=Fad<>-;Ia&tgb0`8VY;a1y>7esG4~$*xl4Z*=+Dji^9lXAMt|z{r&fPv>d(3Q zGgW?a$G=y?u5j%8Wi$32%e|$=z3xL&9z#sND0Y9_gfVXYI~e2QKpJk@;NwFeHom=* z@%e3RFK0jc9bz!dQj4g&W-c7J8I_0X&(QiY2gV#$-%JbH`qgwP@FHUMF)!gB`3W8D zR04+)oiDic3W2Z6K}NjlY7B+ZmMlI=JZ=Vh-FH{Ovm*p;*nx35`YUsn^|2T6MeG?@ z0FBNjnZ36ZSi)>DtVy4MyaWnCo2goXzYxBsDm;P{;#};@Isv>#52fv|p;j9Lp_VZ) z?l^TjCZlp#FBB*meBHE3XwcvMD(Ngezghz3^n8dYrbK!L!BRm(M|Pu6vLicfAOz3j zmkWJ-`nwm?WWuhH#OR8F5mt3fM0kL3-J1|T{|RmrtRr(c+YhfomtE>kSfBlzbDemB zxlSxy%5CQLb;A@FfN2PU?`=Tr{AjAXVn3)6cs4icfN+THIHqhKJr*R)eJ#_E=5;*x zH4U?^9Sy#|Dw_Iv`)`VN@893Przl>8ucV>(Ah>2IBu}@6+K=b7Kls&yYJY7dwHEuwqR7MK+Mlu7AM{&n1Y{H! z7$aUM6BM#f1C*2*(pRy*24hN~iYIP~`4*m|0&FK1T0TIvsVC)l(I6L8dwv%tb!%C= zaU6bPYy;|!2jE(os52)^SSKdUA2ZPR+#qR8{V(Y}B7!C}0el-pZc=j_e z`vX@a)A`U2;Wf zVNMvBn^S3n{TT45^n2VgUm-Xii@;B}iyTTG>{+)7X8RN8GS z4Vg;u?Kx*Lq;e|tn@TQ!G3p}gDHt5l7P;T}a;`>=tEdN=LBj@88#GMF@3?Y5y`1x8q4}4DoK4@MkqE{nr zA$Z0*LND=jD7!ch83;Fcs0j=rdyHLmHfX^C1mRzWI;_9>tKEH%_w{?|MF@!2pqGJ_OOun1h}V zS%z%sf#yR*G=lRXKe|qa;usi9*z=yuhuolT8Wf~mh)g}>l6ne{2pQCt^C7Qc633g! zDm))DW`tm7&4)l--|P91KmF9^MnN%+7w0y3^C4$nD_PLf<;O_6{siQ?qr8cl<`F!B$K5f)iMMJse{2L!w9;GS0;iBEc0<{k%qi631 zA2J2(f`6#?=At%P#A4@6DqwloQa5Ykw@ZGp&^*s{$>KShvB83FR$rFy#wRG-pa2xztZWTTSH#%05E?v@#voQZRvF-$OvHL+?&sJR8_NidL#Gn7HJ+5;Ee zJ&xk&Hx(xiXvG+(GX;9Ab7S&FvJ!gAv$X7e0MJQ)0^a)8hODmw;$Z?06Il;8n@F-aUUzDC(lAc|fzG_VRwx~1hZ;_77F-%nV z)}&soNo}o3y;zfaV^;e8HIb)hrN$xUy}jndEj6i^YyR?F&56&Qe|S$%?+0fUqg;1Q zPxt7VnU%+W`Dz06vhQ0u9h)HbcP_$aN_gIZ%uEo9!e)tu3>wVvU` zgFv|a7_HTdT2WIgD$^3%IB!9`23V^HwSeh%t<@3LTHUBM&eR%rP}C?hwaN~P8skl^ z@drhXn5h*zC~B0OTHrD!X+}zoN>i)ypr|p~)S7%y)TlDGst$@8Q%$X@2Str)Q>*%* zs4?Btntm|U7*{^)%qz>M@}C(0DXn>KgKFEz^#*Fjs@42Qnj0gHi1v+KkI*+8n9hGH z`A^ie0&N_*UR{aFxHA>0$!uhtX#~nSa=}91tSeYm@v6+U0%d)MC8 z`F62A=#y0h8KLWVQyDtjQ!|D2b4-v{h6zGftPC6sJ!7UaRCl0e3hU=sBCQNdbY=N? z))Ux;jOC^>H2678f}(zoLDI@FNQVD_U8z@T>Ozl+FRJI5C9MmyWY{jC3(+Q<%24MK z&`Y>2pbOEeOl4^G2 z5eWz=w_9_#`j~;56D3#*hgjN*7&g(Ayjs4k=5X~fHh2n$T-u6QI1vCrO9&fK_boMt ztB-lggqGnDOj{9KS6J^4hPomW`3%6p5LZM)uo4OfEWyZ$Ti7HV3~5C~1Sg?yz&0EV zX$u>PgCT7}YjH576$ufnguVf@F>=xlXFm>xxT1u44ava}S42e660r$bl!GB|LDO8O&{KRBc4ZU`{B!Cck2nr3zz*BD~fJhiuFd9pda_M&mm3RjJ`Q@)RlD% zlB_KvXcdnI))wt{F%gUmHWKgSD~8NXC2xuby_IP}bK2tu@(b$t_x0WDshwm?adm)#iLDrlctZ-4g(69^{@}9zYH= zJHO(}F>+@m3l6`YQ14s}T55i|j*- z?zw;k?UZUeX`EFx5n54){$#BRALE@qhUp5m_qeu~V6jFKoMtR9#nP=RvvkYMhC-^) zqfopGNY@iB(5H#mgGNrhGwsDYZvYAIycVwmxMNC%LJZ!=i9Al1fH;>!oYSoUlk@1A zW^{%LRxFUwnOEl#_s}{>f`F86g!bWxBc5jEe*2>&E?DgUS^T6_E`GbpgGO+Iq7#MQpp+b4@K2Y1LhJO{ zdBYQkvX)uZ;gtckwG4b~NqKA^4(ohFHWkA}am|(N>(w2<*uNmM z6>R0)DOQ5>0u;bna9lLtqLTV9cM058@iC}&t9oma5|*?S=oGm_)2Z!TE((OAPHHa7 zxlRhZz8BEQO)hV&x>mm2w7+HdetfhErSO>Mi1W&9!vD*n7x)(wQUOd@+4W1&46I2U zCdw?nZN~g_2~0peo*mEgGiZ#(oTi*Wu@;==qAUOW_A?#jt@H!3Kk;Vv)4sD54v&ZP z$daKP-_U^8a!qz_W1Kwf&Kf4XoDJLoeO-4i0U5fz{RN!JrRD9u()^ zx8Z0$hlIt9MmFV0I#}Ig{Q?9#+b`ThztEE3FRU(aW8>J4xro2kJ3yx)F##9R6xQX} z&Q}+KV(KE+CWO1obyZgTM)IQ9T`*N>4ko)t$>HP59Eeb9a_{~~=hd?HK>WO-yivgL zP>u`AE4@wd2(f$xHHQu;;wA>p#y#@DH53W(=z&W_HiEvfnl>2fwA!3?V^&}VXy62B zV2&gRnY34DkqmXvLCfCsJjY4RgGJnc6@0?Bgu$VU_hB0a9OSt;b$jYx7XKm-$XRs6 zA;}g3{@pJAS#1{otTs#U9@2ov8Cqb=V;5UW&#QEbL8~{$#}e-1zY7amT_K)tJAP@orV>~3`=3> zy4X+Oc}@5!THBBZFZYL4Ld7ZF14S^iEXO~ezY-7cIv#{e?rhNZlX2$|01s}~<39&_ zfFN4~Y6;G7&?W&o44=>|`fnUrnBk%wJ~e{N;$pn*eP@@FKU}|r7nQ64!)gy=VBghb zEfB>1yNO#&*bgc*Y)T;>VuDT?6c}v3k=Xb;X-hoK^YPs;6T(77B4f^n3g`pc8XgO zqi;CU(5Fk}N#c|&!$-QBVL&`2On2T+b3ZRAL=014>KZr<5T;3n@ym3SFQai6|GcRTc((6!MG0~Cocsm^MZ_a64Fv%=2alv% z0iy$q?Lj2V%SGquqUS^Pf-ZXRsjB>@2u8+R*crWaoJHZK;clO}M|oK2O>t(hAa1 znjG36={T*ls3zgCaJXSq9>yXad$Hm@IdpiW<4s)XTbQp! zd7w=WeH6!k6MSfbd%N_h6i^pEqxn1!p$l@(K%uD#=*SIk5oDW`3DTr*!)OQx$9@KBP13khi`=x53`Zt!hlnQVOT z{4BM(Ia?_lDYsge?E=qMX&Xm3@;88InUwRQxYgQO2+!js`d24!J;cBZOqf=S|`s#cf~}-Yf|%uytxO3r8o1rhV>5 zu!hs2zV6i%$Oxkcb>-7#O|9%bM}L~jSzDi{>Et_=kAV{YnK{)E8D)3s^ z4;92%??11}3lp-0KV2!rd}m^$^ZU~4298-N`7wj|3IQrt^5waa{8a*A2=QS;clb(X zGlB9NX&vW;N#`cHg>~t|g`kd0cOjHNIE^T)jTL?ig$?TaYthRbG4+wm6M~dU5%~G> zHaYNU04$UFdngw!&TvI+;DbCu+QbJJU5&zB44s?TI7LYZ1{F5k0BX*b_!UD}XI7<$9I9 zMo1#>QLangDXTH+FLk@{330>bb^5jdrw7BFHjOE>?WY=q-~NGXmG17r0xXC7A)o`J zIpQ`EZqcI$^4{M$P;<+;TNs1AKO+=I^YZ7%d%7QkiH_t>#IusEMt*#)OCXV+fM}H_ z-$8KlA}S`|L2$Aa7a%rxH43J}VfE{?hEN!PFm>Z48r(lmr5s7IEFt2kRAS)HlSF*X7m!c!2TVSF zG9BeHFJJZV+*aDYGXXZy?lkh3j%U~JybZF`Q=s0~_Xi3vB&8E-`Gs{tA+#e8d=g=n z_=-8aK;{bHM}ZWq!$MQh8`BFI2qAQ|%V4_AU>eTR$#aA3_B_bu3vt&-IX|-Lm$q|5`9)GL z;0C0#5bEblQPj1tqApntck71)Relw?a|}5T5<_GloZzj@%GBRGv8XOHt2|nl>Vp%0 z#C>ImQ~yB$@`s8~36u=~(U#b+ZbO@xh*hqul;?&vl>$JvA-ju$aC^2Ov=Yiz3PP2% z`jGDI3pmFzX(>Pz=_W*#6RVUeTG&wK58U1NA0ISS8Qt=+T#76`Cq$7g_@t6Y5sw(1 zZ*lZ5*|AbXjDAB5an*Uoe)8N9qbLtC@(D`4lv^z^*KqN|?y#UpXCaatdAgEB3mcNW zgsq3}cPEe}?rr+>HTgk{fqaMhKc*0J_774~+%p7FnP6cKE2*b~`~E@dKdki|eg7$+ z+JWzE@~w5pTH+#<#a1{Gv!c5TO&kAjy2+oNO7ackCOqpMHhGh)sq)+iry7!MO}&qr3f1%z5{&<$sqkVpC4o~|*}A8x{J>PuZc85_nY?GR z5)~ywMq9MMeItp`>yA1>NlW8%EIWZ=jvJK3Cg#yMc|MF`&S!k!FPrI0|IX~ncPFW) zZ6T-zv4IaW>+sRzt&F(8-l1zN5KT{q%(y=p%fcb~G;> zlWHzDsq9VesciluUNrCI5FO)zPvgJohzj%zR`3785YMsUNt)%;27?vZ1lKjNiPP>M zliV}8`Fpr({_fxt$vq!!emJ>jVe_)VNBy46{L;Yfv~6bma6Ya9Bmctq7YqJP4m<)P z0O-WpS12&JgWW}r_=x-KkSK16^PP;JDgt9mBdTCdAZhz3l+2U3HgpN-n|jew^V-3O zlS3y*I-lf2aW}B8Vp!UYyQ$8Vy5VLf?x2ZWkZmFpv?q!DGZPH~!D_~gM@Xs?C#z*d zv5-i4Xt+C%r935vu8(wXm3RasTl8`k$&glm7O#MDr1N{Y80f}7Kve#G`osS;c>d?@ z{Rny5cZwoHe>Dz+G|tA^71SDe;9H?%MVT%rbJADCeqMr^?ro6=_)QoPB=Ue58VtTf z)%?MiYMx!BsI#(YM~oHCrd*@*MSKQ(B^pZ2V=Ox)%aV^xoxG4hxF7`6CalcyF7 zIUe*9w8QHJds6?NCqX+?q}+J+Eap2$5p(w_`2lvpKi~eS|Jw_@BkN;n4^6BQT^*Q2 z=MeSo7okv$|JHb`&0OVx=G7DMz!tubXW2tM|@j&ZyStJ`_JRthGi>Z&~&H()< zg&OlivHk;+{zFDos%VenqgU_-*Di!PyOieFu?Xik-&40r0L;5vA;e$jm#htz)iZ7o+QLlp? z<9e>tcKZQxIRPzk1S2ow1<)4QxBarB$i3;u3aHSo-a(kTMW{szpxyNR7!F}$4B4dJPkTL*VbJWPkHAI> z)RH{v;_@~=!``Ju^7}kK>I}fl^cKE>7JrGkdS>CL>~iqo_YOzGnRS{V_r3g5sm}Zm zNSPohdC@2rz`B(j29u1|r08sHU=04dAGuBaIe=#>!20t#=G4ViqXMVwc!$?AyeGqP z1zgQMZp__(7e-(3F5tvNcjFct8(IMuKGmCcu*`v*Sk5_I84v!w=uCXpN$s(lS?mH)J10oEnW1b&0)%Q+kvfQ?}K^|$VKm4t=Up{_gh_?6{@R+E^seckR8=iq3 z{-4i(@oy9U2=2-Ga}p3BX!#{32-pnxC8NEPiuzZf!y*sOI9QYq@dmxntT7Qn()DLP zqGFghtwP0+wcOipQs?2HgB$Aq;oZ`|3?o7l^JE(2ISyHn7HK&k6=p$%Y;(}BK`jKI zGoOxXn5zjK#K@y=R+A8;TvS_=fLJE~W;c{DRson9tKbL;+}hh|75r1mB{S1e-bQee zSRjdC|1X5!`ZokWm^Ikli=Zw$S5sY(&+@i_SapGVV3i3%Mxu-1%*+Wz?vqm5Fr$gc zH}NY;R2U%-WL7?iWr%`CJ%Pn|zl}{9%7AH-+5%-J-U$#g3|OIXjdhvxW$Me=%tstp z?L|Jvk7uWi6e%^)`q@I@-70*KPYCm!b=}W=((=6!n!hg$`Q3n{rc zp5<_TeBf_~%zF4;0HS@TxI{P-Ashs+exp4@Pgtoy1cY!oZ0HJn}SgMU8 z%!SB;@%{~@ub{N}RLP3wh51n(CkA1TNaJ>PJx|l=dmun}qVHSdhI|S3l@Rj1Ou8uf zAV3QkR2cFZ3p@-3tH?Wy3xm+Kzg(DtXd4v#bm_aG;3?9q_)4R~g^4JLEk2n!1d}*K% z7uCU7{^SRwFemE!ie!%zYBbT=H`GcTf>;Da`)gn+ACjVCDMK-ov6sue6=sP;8O57> z5oDkhrECInhL5=>^Un(aNXD4VrhF!Isb?}H9k(NmPRVZ)JN`jfNVE+tMKA6;d{K%R zB$$vDjG;x4DjR=GtZTRZnD82~iY@WOmCK}Mv4;LkllGu^cm{DNmVD>*2bHv43_Czs z@;5!>-}bTDuV)^Kv0Q0(Z%wL0l6MGPR5^hpwh2oy^wF>0nveBaL0J43i8YM4rO%6c zq9?hfl`6=fU1J>@=$E!un>~0BdDC}A{{~6<>f@A@g`~2HLb0gdM4__R0`k`-4ImIz z>(0HE<^*xsUb)h=%pI2IEC$(RX{N+{`G$#sBfuxHjC`+QyQsonk?*UiHI#4ckdQt- zGqYWa`q^|C(#e>wkfY$ez!f4Ln@6GH6JQ^8zi>T;#z>W8kr{!TQLcc# zQp=>~!%3){HNs-4y7*CvZ!PVzZIh>Hz@gL&L8+7O;2aZ*4DdTL;rX@++>x6V|30%P z9RD_Ys$Dq#?OFncWp&P4?(Meo!Oh?j|9pEa@%O{OmHzX`zYsE*9Grv>W}$Uma|EWv z`MgOp6&S3pkVuX1#aflvbZVSIlFMb7F1j!4=v>|wR z{kOm?5MTr}AI(94zb+?vU&%3;Nb$_5<_H$3%a5`BO7f`xe(37J_o%CC)de%?BS3&L z#|6sbQy#d0u;F9~KnyCBR768OsHX5X@O3@HvAB*wqG2Aemiq@;zX!~P2O)eWC_W9O zXd-)zm@oc3aQ8PB^s;KCc6-YSU9{)AKMUzmkqyR=yxLRmW4|nf8J2!nZO5 zQ7HR?30tU9XjPtwZpO9%y#SIIg+f?FtnsALi#D5h6?L~XP^B4iGPxeZTt=kh7sN1y z$=~_1=_+VU;f)pfRT{$qBAF(mZa^?a$YP|ix2Ur0$ujDgRJdZbgbP(Y zHC|>{8Zk1e;x76idWE3yadTgK_CW9q%ts7~{sQ(1;~A458tNAz5?=-n--Tk54;W~< znz~u(>n3PvzVHroRNGqwwm~)whJL&SN${PE0~s{RPoE|eTOiTG_Fa{Mz_4U+5tiYyknqeG{h zQSSGpw2X2k0^~oTe4q?&J)Z=`APWrp3g-il`vgD`7YE|!%?J8}+vWr01G_ld&9d9O5jhXENIJ(1c{(sG@<`Y@LnA@6&Nc4-1cI&nuuk$eBQ zEpdSvgtd~S0P9OCszQ2-H^O-2n<36PcnnQ+9TUcdwcLN4ZE>NV3jEv)9DqN1EtUw3 z4E~3i?8yuNoq+!*-zo%u!wBH-{y-Rh)^cAlXMg37hZUX#)dO3fhKey;m3mz~%Kj}> zjwW+l6)cc!R>ATy&@{jC>HqSGjL!wIzb`y&G3_fVC0Qwo2Q)q=!C-X_^}_aY#&)5v zXMara>)7B|3~8eV{#nzWabt-v?fI_)52ih5LK2&qdVLYcV?wRCQVMb+mM36*QA!71 zUU2DNy$N7I#VSKNM6bFvJEf$tn4PG5A}h&S7dWN{FNy^0CW@>#(~~ejuSXWofdOKa z*~9>o+t$PYh4kgrmxLZ_e@OW2m$MVK`a*cLP}u&QCZ*qF`}2)CN*uVS0`{lcm-YkL zpQ2;KGS9m1@8n}gj4ito+Amx3nzW7{?gj~?>hMsB>`$rHU_liI79uh_1LIzF5$p?Or7Zh=N%zD5 zZAXjH&MRUV{#SB1kbk1Ycma58VV36wV48KJwdN?C z^tCc_Vu%O-5AB6cafp-eux(aKMBOE<1dHS_RECv69OVIDrNHZg2?5hsBu!%1VL-TuIoDd(B17`qKlpT z7IVW3zTwWj+&2Mg=lI77&k4POOI>*!-OK|qT|4})Tr{ivWD>LJJaFQSuaOhV0nIsR zl8(?VC_g#Ah+nK{P>t}a%%?!XVNm?&Fz&47o;xcTUIqMlro%fA(433e&)keT6cA8$ zPdT~BUHnx-`H)ySlQ8(3E=%Eg9WtOhbS&i%3HvCmcj|T+gq3mx8m?jAu!2AJN6v6{ zOR)}3Oecp%MLLfM-duH`+{3u&j^Bz^WL&gd>(khqxf(nYaZh202CASBQw9mL$mgF{ zCo(C%XaUkiWhcGE-6mzwwpmoKSYU_&MZ+qKp&}?9_AqgIGXJIfGzoCGb-!o_3pt;fij4U;i8W9Qw%i{&F@GiCh2-${)ZWIuyp+q4%V$xYlr z6Wq_ByN|Xx(4%P^pjOBKMuQE@YCBVDCn2puL1dzF^x@9=XCC*w*yyXO{+p2~7ns6a zL7B)us8Gu_9&+=JL4h$9rB|F@1R=hx8voRStwoZw_+^8$c6rE)yVEf0sa7 zzSPm7EY=JuV5}sJh>rkc#DnqHqny-5fZoypc;lMUo4V!PK4RZvA4Z*_+o&w({Yu+= zim=Mo(_e@T79%F#DQfwE|L`ap!W9IYsh!9Z4fHvY4mqaBt9dk*0G7S!L{8ZXqTx(c zTdcE`km2qqR_fftW^i}3+{rmJPzp&Q`${3VP&rJLcgXCkDn*CP?aDRi(nNLZXLAR( z0!Q*JyUg|E{5q{;)Evs6*v}&Xvz6a8topy)OaM!De>Z2$Ev?O(EDIVHFj4KW8at%B zNd~xq5gJ58uVyUVvBs7JhIAmuwXf*DlWJ3L?Q?D|K4X{suj1K|xBBMnc1 z`WIIY+=r&eU(KqWNlQ-3+;+&*0GO-QQ{cHmN?Ldvm6^+op z$OGR4Xn>|%Zr_Yt|0=r}tmVWn|Jv%N;LMmoA;&$=bGvHsMbu<}aoypY1O(C|2u7rH z9=eHq@kXvK@GyZc^%_96+dC`KZLh0*N0<2DT_Ibdx)_Ni_5d8c>Qv9$1ZvC>Y=gy6g=RXj3gm#F=)K%`c;2=vuD4 z=W-9KqpV;wpRG^{24jRJcb22`197KUIrArH$}b03i7X60$Va^c|G-@AlwS_Wifw$- zx(iYbAo(Z!!Kf;3=MUihp$FcOBs8Af#~cjT2iW*>a+>j_IN)YR0$0+Kzl2rK8eTra z=r`dt8njnD(7RcujWcy4Oi6d4^q( z5pya6=#bopo!Rp^wnFLM*k6Y%EfOH54#JTlm@pjPgw?QIofzqu$a@SUunD6ZT33ob zIH-fquO}W5V_haClft;}LIJskU5133Wy~NO#}iChfSTM}@e4uC>;twDgigqt&7l`T zkF>fjxREKSQAlh7PL0!8e2uJxPxeBZ>^lgQo)2Q)Z3e}?#X4P;{*Xi#>lg@u3wVvg z=g=k*lg^0@Z({Dh^Sklz-DsO^MHnLC7s3u1)V6OV@p~PFTr!{#T2U^9R(9lI7D|Fj z^tGedIIg?xHG0=z(2QPkiT3TYC=Vf`tztWNbfrY&qx?kE1I;aAKs28)ll*Ya5Jp=z zgdxZtVY)TF-ae%dvGX`;S6r#+1!A^*B@E0llh70dxB=aQLR1JSDj<_4MJ9Fh0Hrp3-2cV z6hJfR;JXI<4!Vzb5qZab1rU`|OkhByI9V-LTObvq27zL|2DShlp;Up_@fToMW_0*= zg&vM}1>&Z5C5{WUD5eu@wQxZnfVR~300xZeX>y#9$q`j;fS zIn~Ts)1bW(dd+<@AH5F4CR~puA$sk7I`A$;uV2f%cS*0d7eTMFNuOSFPU^d&SJMdS z6+13WFV=GZDu;d*q}Qp)`oJHC*d^=2yF;cKKW=n54+!&YS}^$srHN|s`_CW8dYN{R+HuvO_>n7EhN>B$`oGvA$0!e@Q(GSFHu%Ab)X~GM48Mkn9lRLcsc2knq{oZv+dH19V!v0b|b1#sc_>y_F zN6#>;nHn!Ssx}lMtjIktL=|K#u(EY87v`nK#wEv0*}-H{Iq9Oq`8@AY1N=D4J4$6N_17?Cp-F31v|CceRc!!g**!-F{ zz&}USteteX|5P)gjrAmGb+)2X|M;~haq8*Y05&F!+|FOU4hc4}WXPzDYBv$@ zuqnp+(ERNBPG1`f)6AekPI(APsJu27AFi=cruSg{;PbEgiDCIS(=m+0#Qs6^Zu~RC zJH<&oz(KI_$yfi+*eIwTKr%s9UmqkM+r?Nw zh1p4+&M%X+(aF8h<{z;-q%WV~CO0~iGy4~UZ}te_JMKMzkG{>>|9Me+RUQMYuRjWC z2)^|{68c5yN{YHU|J{lQl5et~j5`6S(L=*=lsPH+WL!+vpsFXi6=qLjbZmjd1=RCa zN1auYUs&_|gZy_fzA=-jU-_XZK|flj?dLF(f4nXWTys2bpL575*Xh9A46b+MA(p08 za;5r1npB6ChabHN%1iGh-%C7Wi(0jNVEWgUw@DqdtuQqeZosS;Km`cO)X>)xU$`ms ztsi`9tPv)Iqn9QJFi3llHjceDkfA5{+F>qDS82Hy&9$r4boy2tOMZ;9*WP2$ErV@9 zN(!-8`ITd)*ApKof#fO7bSK2WKv2lXc;^R&XiM9sn%IU>BI-{1NFc5Pcm4423lq`f zL4=2QoF0yxve3z_(@0m8IFLJ7Ma%$7D@9`&ZfIP2-DR(#>8;^Zi<4fbk`P{Cb6tgp z&pNXM!i0);e#|6Yy4S+X1(PnqX_Hyemz$voUIHN&pvOUER<1iOOchB%fyt6#Y2Vln zG_lC5+rhS%iJ0j@fIRR;pYz;BclWc5;iEu`Xl=3>NQ~+ z+u$A&*hQ#;tcarxzM}5(>=u)KV1Xx+v19!lj_r$JQjpnUoL2~ey%Ec=CTA0W4D5hd z4nM?0ML()TT|cUexi_4ex4L^650V7hh=PLp;r?u0PC~}#pZK$V+*iu+az0hA$~V5_ zWGk?O73Rn(MGGYA0Lr=d8{GvCLGm|K`(g56op#HYm=VDl>%_`JFQJmqE5>II`>1pu zl#G>GY7Pbk z?T_Wb??!&i;=RD{O637C77PvoV~eC<+y(f_v?_NZuPnx@Nrf>E;aiQmuKTFL7eW~d zvd}De$w-T4LWb&0J;;T`BzBw{`?m@JVSHl_zuZk6;Gr>q9+1?4Ij|N$%zVFO$e@aO9#+sF;jUZ?LKZznyR(%Pal#6nfLxyooi^!C(DGuOce>(|0sH285ABx03#GBdw&(jHkK2;30pt^NvjC%_!xgH8AFdo62pZl#f z60>kFVxajHG2-*;oz%~q_P%cRVTZbWlkq%CXR>_Bw9dvYm5o#5o0Fh07E4` z0UHrv0{lcgYR*q-T>9gX?zg^4Lf4g-fgLfRLJXm^}B+m2y;u8(Q z*lsN@f!R>t+O^k#KAnue+NHFy65l<$HR_I9O_k7N(C|&@&hAL(Z^TreQkR)2D{YMs zL7E*Wa|)(Kpd^yPFwvGZe~>3Xe1N#yY==xc_>Nty)dacY_E!*!QlV+D1ItG4k9aF`bbP`64A|hU&c>XQbm6idT9b7zQ#( z7HbKgP;X=*n)!fBb|v{BBYFVq=Lc$Dm0k0@#MgRDGa73k*be<9S8#zGkSw`CYhnlx z-XXUphi&_)K~^+P|IcLs`(0)2H+%?qt+8DHji;g0>{t#3O~eZ;W#--DysC6J@Z*|E zoF^vEBL8`6AN&B760;QprCj1NA|{ajfC-(s-yVbN2k2t$``HCqCH>6zm(GAlLHncf zz)ho+2h;!yxM@t-oYKf0G)DOD-oilwGzEtA%JO=Yf?vjZ#IZ1OZD^B+-!}HnI4OD6 z^vD-J3m%}-^clYxb5(JR9B9?ggB|F9DHT!oDN;Vz+H|7m9|q8D+hyt&?JoWN*T%M- zMPkXEncq;`0UB!g4}qy=0qe?1XMWvTS#^b0BB`>1`dn^CFk_9n)MlJBfd9Ge)42MM zOh;BY1f-?JAXc7Zh@zWSGE^%FP?>RcYzB}>Fo*e|#LC?5GrJxHKTr>@-UyxvEKrZ4 zjPvqAJQOGk4TU!TfRW9Nhdy(5Ch~<8m?At_8mn$E(XX)I^-k4AMUg*eCT_4}@pV^MW~Ak^6$ zgDOLIRfJNvmsv%a2Y4@@o?)$;rvxgjW=9_zUHF(43K3(lgnt45kBkdJlkYFz%$=_7 zJNs$&VAqFe$neK&$)xide#GVb6hf)D`Jpu{Uw}9?0D+Xk1e&ZK2qq_ePPqwvz{*1n z3!L=1Qciz@AA&cqopGm{y++3i{f<{^x-6&fMn+ZDDPi6g?3sNMTyBeD)%(x1W^ zBZz&{^WbYRUME=Td0;k1vU&|3BNE}YL=Q14I1KnqKVF*gN%EXeArfFb0y(L=PJa<6 z72O;dPng%CILWT`GOM}rM@t4k8Cw_tWq4r#j11$FzaChLV%!Pn? zT@;4Q%JOdhhJ_+?D`pTl@noaR5cB&UU<4`_HU()p4J!}n+91z#S};Y8PKwb9_YJ1! zR5Qa(x+M1=7U}$nbi7W#)@)daep&_0<+@HB`pDP|kG%Lxu7M7t5E8hb@6c+(NfA$z z8ZLEbj#JAWWhzw)*_7I9qt_aCbOk>IYC>@>POFcOB>2pI@0>^UwkRT@h;q2|K_zf{00=PxM_s+|%6{jKRB_U*$cOpP_O2#sVTQQ>UUKCTa zf)?qwKmjQZs#lTfklj2-XTL4(ir8q|wvxT~x2CRC_<7LDN&`JsjN)1=ei~f85Dxaz z*ua&0AwY$UC-T04HZ*^-LXGd1Z;0`gQ3%o;N^CF#D3;3fKQ5xO=?odZF41}8)EO3> z!Vmjq#ATbLT8_|~y<~9d5WkSbqGoHzmv4Vl_nHVG9GP)Uuk}P8I93IDWm8P^2@V8Z z!Zb>C)ZP0Bnw*CW7I;N0!R+0tOjaLbBYuL<)nZ8*-thyTO`nZUKi}CMcIM;z$rd zI<4r#>$27Mja%@8-8e&sHUEaDS0II>1XDRmf-Q`PZK29qep{&T3fRJrouE`hi^dj8 z@!@UZz@s{mYEvoZ7i7`Cd|Sw9RZn~Z+-e22NWco-&6tveVtf*GB}PvWppW$^-vQm%zVVnOmOp*LV#Js5L%3l^8d zTQ>>Ig|wCiV)=~4Xx~T($VsI9eks5h-ZzrmqL9^OYMkZ}nSl~LvU?iOrw|G0LnYt< z1GY@6>w;H!6Pe1Q@?K90)5uJfg|nt0aPwm{H8(hV&Ss&q&fAWWLQAC=Yv_!*wBQ4* z0;g^l9R?c(KzV{1jXJum4~_$^5q*Tbt-p}d#r^^e8o4DjMz8`D3jXnWjb2g_x^O8* z#XRCqU_3Ibe4FuyUlx9gXrYB}Q=F|)m-t64*|L+Oec7RMAP)ev*cmV(#BIEZ6XHb9 z8{nJ(TaSw@Sx*s24t>B##K*9vluUt%F##WLqP!s>K#4F?BFapKQ*rXuh$|eOQ5O8e(4Fc zbhe=LBB3+w32vl1BouON4Bzki&QD%5PXmo$7axzKeS4 zyXF{M?~<+zby2RH_m;}+EB_Il7nb;fn;bg9khXnfq)iTuHx&{iW!{8H=dEJqU^FIS znYKq(y{m~plT)VP-@a{(xO`FXR9 zC}*Lul~FOMXlt&D2AXQ*CoOGLI*JRymNBC{z#bDah28@&d7j)mx;a5G&D|l9&atKB z=i>4z)oAQHn9XosT?j@pIitsl{zL|V0ocdL zw%ew+N$Bqu*EG35z zjJAEp;;hYLqKM4{B)#_oqm>G*4iXhkhDR3Bm8QaD-GWL|5Kg5n!oKj`A?@cAKG{Tn zAmO{=9wNB7-1~5x3ZX2KNWL?={N+HtO^lUX&Uk`PKX5{O*mQTiCI-jEY zF{For#97esV>T<)Xx|6}4K(F*skv93L@&GtYI4B*)Jw^lg;d4@2h2-w&CI7x?jZ{b zpXp__fP|OT0uEkQ3;O#|`4I5|UP=+Tgnz+?uR27=e8EHYcgrt^XHpO&6#jy&GAQce zO&;qn&tXBkL}m8@tx|2_38T}9be(oZ{TSpvSggH03WpG;SP9qWTf+t zU`B2FS}dsH*&3V48mMjq(ezbUZo!mFHUQOKfnWSzu2

NSVAxxh^TEsw+ETd6rky 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Ύ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 z zA6DbV4B$7?DaS)tkBhwMx&iOI)i@Z(d86+nSd()bxZE4SY35RfEl1X8RZ(|yF*vvh zS)Ai+sR#(>zd~Qm+(vRoV4Tv#=XyRzjW&^mYV9@0sNF94IjYBz=QfqGyjTURQ1{mpclEkjl_!VlK(2w)~ z89{d7d0A1dCCAo41Eeqlo=37hR=4I8G*KSmzTMQ2zyCI+)I4i zO7SAvDuzR7q>3(HiP7M4vixrgMqdv=RudvZJd4MtYb75wM{5G-7Q+ z*mw$C=EaadLYVa5niuWxkhX&1=Tr~B(@uzb-$#%U2h$i zEmO}p?(T7sDm6)w>9&ta{E$!gEgz@kC9PM4O$QmRi@sw$qCELM;wQ`quK)lZ)Ib4% z2pWjn0MuGJoayJgGD+hu>0L5cm3l7+p!I&gzfC9hh*VVB>)P4CNWY6TGO|e#FTMQ! zlesV&{05ZU+LgrZOHSRUW`Qe6X#9~wNMw3;gcg?HB6sP23UII3VD&aQQQxDeCAGgf z{*fY5octq;t_OoH*xD|$e{1STt3MN8SrHl zKoQ&t5E~rrbEA$$z|ma0Z4r<&)^CSZ#~UV_h_6b4axPYxB2widt&G$t;>}cdu{nCx zlR=65?#ZB3akn1~ecS_#5bMho`V9weP9~ye^pq>7m+4Tih#xd<-MS>&o~8i=@(s9j zWiDUn;z<|Z=HeBMV;Yd^PiO#Qqyy_fX;2(ITC5U7{1vV{E(Y>GQ|SiG?j(U48i0Wc zvKbeW^$;t77giI)d?6fqIu{O&&K(XBLD4zYR7K-*6_!=T*qS|FY@S$k$s}qvRSs;{ z1Bh8Ec(+om0IE3%QuXy%@`A2)7==XRv#{x55h^__!k57UA*eP%wJ?ui3Q~g@QJ;13 zb9z*aG&_v6Dp>)H6uIKX`6VtQ(IzT+vlt0jg2#v|2S!+VL5zTZm*N|L;D!K-Cma!ZgFtqd0`7S4h?e8?$lkRrTt`~O0* zxV;`2p#cjVCPgMW6OpjQ84K32A~Bz&dw5 z!*Ky|>@mjieP%9pnPu;|v>^{Mao1#m_LeZg181_Bn6?Ws;ZI<9%D#(Tvm>khoC9_W zGnqM9!~v49)BmD%95@wF0v_y}Jr*$h$*FAp9VS`Pzm3Ft6Y<}yt-A1lExJiGGZ7_{ zo;chHGFW?_5!|t|{(^IM&7{Yv`19dn_5vFQ&nbmnvOC>N->2dLN0Aoz<1=ZPKbT~W zj=je4ldDtq-x-WqDY5yTOmx0TutfaW%UWPQ^(%y@9PV7+N`sXWfMb&@fX|!#b9A^! z1^c~~#&^&8@XCE$hk$5Ln=el~;*RomWTkE1)5g_-klBpGJog^rn<0kIhT!)TJHp;60HQ?|HH|(_1aj`{8Rd*+|C-nK|lU=&kG`Op-E1zmJ*`B!K(2($R8kPg#*vkp_e8{shRVlmN% zyos`PaX3=8Gk|tK#09JFYSLsHI;=f=9VxG`k+G0L!n_ zSil=eZo4&Dp4+lgXTnfBImy#c<$+!H%YwbA>UX9W!($9_J!&!JzzHaDL@#E0nO6UZ znaSdPna2`wO#*A55lyeoJ%pXyi+B9-x!)d1kL)O6SF zwkh;}fGKo6sL!A%hxjRVi`Xi)U>U2#+Y%VIV`XOEFgk-Li#B5QSo3E+>eC zpU9?BKnKQhJSRH$6m*`hjZY5=uP?LyRQi z%OlgU43UDVg83>bkA_$t;E*+la^zdR>m*Bt=Hu2A!RBWzQcZG1zZ#WYoOEj-iW5s- z9)~#sZB5>Sr$|U>SuLh(H-@zLAimkfO#lSXrFb+;)sY;{RU)%-03zg6DFYF%x2|-g6obDdfflAVD^X@k%z$nuS;u-y*7pAzq_Yoi?;Ub9&C+5A$EO z#&tpsWd?Itc-Z9j&j210uzNK^MsIReC`1*3s>oXsj7|+zaHnyy9eMPl?`W|h4+FYi zhXFZG>fkB8PD5k0FsO5zGJ`S{x+#+C=dP{~(hxfEt*BC-=AoRu4yL4D)5L=<8s3EM z0My$`42YD9x41^-wXI}3#m!hsJ%GwE4|R7jG4d(%?|0jb7Ca%S=t*c0*EQi!7E?sr zB*Nt4U1sLq99$3!&0#xOq&e`em91M%*qjhpiRVP;yYaU!RW2=eNcgRZ#{5c`GUjKx z9Wj674w-*?b3XI;0!X5_pP^^|yHAKQ|8mvnT{L2TB_27k@^+d3&X7Qh?bqyF&~N7ZJ$&+{i)F0g--cMY-wI7j zDjHTDN#m4O#-ZWvdyo>Nfo6`3Ut&{lprITY50(-arRD@=uK`w^ngecK;e5z*8i>YH z_8ZEhp5TwqEJx2yUxYKhDJc=J_6@Rd$=bHp;rrV|S;Kc(Firv4^2o`}$4x`{(aEg} zA?6q+?z{-sb0k)2^xlReRKTlA3T$3|G^2X+)yHBW@gYdhs(r8!^O5;D&FGJscYI;~9yoyqMYP>b?NP-B;e5`lLgF224Q9F-vK{ zLp8jF{N6D!QLvI(VCI3KAs%)1#t6e`C!uqC8BkUbN)H{X9mQZ;xXpxv!9d~gEv!#N zM{*#Y=9UG&s;{Xcvdt5#%uhUP!K>Jl(>aq>$@d&2vCs{|lalr~ElFWY||GCai|U!;db7ak43lMnIr^=dimMo@|0;YTrL$Z{px6G8zmko zR{yUsTKS@3)F5#ftp_7uZ=)Sc_QF!5W*8fGhEO|!)|pOPJ>R7^z{{`I^i=kRm?#j| zCm9og%$tJrB*#hg^RvtMFGs(uG1JFQn*x1uvW0^$5lr!{tWOq@qK%+Q0@|#2YUTVE zde4s=^`F5Y3-g-aOcc;Xyd*I`&Ywrvl!^o*EoH=hf^I z_pH3c`gS+2E#bD)j;&Q>{>Bd+j`oWAlM;I<8apDL9q?bDjtEu~XdYyxaehTGl1>vG z-2yne2|LzR?P&D#%dPBFl}WnWV2#AzEWDZNn5Zjc%#Vo2ewnb zJHy-4OoLmG&_*(Vl^W>Mt$v!iT8Hm99N8!AS^6qb&K3Kv);I7&}Hb@Uu64? zyk=-)`*Edd3y&q*hKi^YmS^&G0xK$@5J=CSs4-}doISy8ssfH-fib86&}2Z`*ygat z=b_khk*68FkJJRLmQuW@B|;SeflE}v&F@F_F|7yl9*y-3>v$#NS;sEy1leC}%*@IB zyaxq3lgl{wLoeiVuID;4@IBLse}NG3FRVR2ffmK);M{QgKfDJSBMFl@WLrOILc$tG z#AUgh`_5qrjV+pqadJkdb+~czO12lowv=H9c3612%sP3F!ZlnRAt?!xDoX|}jn*kg zx1n*a6oNMm?Io@B3QFZ2g8s6`obMpgM_B7{-}J6`DNj~tSEog8RCC(N21(6}2BVvg zR|{-6#7%L)NdGCwt(3&zC1x3q9s@XDd{KtdBqMEw$G>i76nf1q8$d6h808!tzup%fX35HPnh5n2aU&BQ_yF&q?4B`z9*YwC8 z&Y&~rf5cgI(n+DrgI1}2@#-^!bj&r^M(TC`ILU>mGa!jU5;1Mph~aPz*HHZMfDp==pw1G&aj!l<92On=I^2zMN| z?=iRx`-QuL=%}apSWk3Zn1hZr#wuBi!10rZkz6TaY;SmRnSq*ScatS+X#1~x)D$d1 z2+9ry=26`G(V|-;(=k*EasJp>jlYCF9>fGRZGu@}3M&YYdA|P?8B8N-5E_@ifh)N> z&h)HjsF$U;RAP2TlJ$unmH2LP4Ckg*V)PDwcjUjW0p`QxWk&blIt=tC`EA$}{Wk2~ zwGEpcK0wAyr+bhqNdKCQ7Nl<@*J^+B!$I{cS04>+XdA8p`9&DFkCzPqyn#<~5*Ys}%EcSbho03?92!p|R8j3N0FrK+`S6hIQ$SvC65V43m+=vd{%=42wQvSNQ4t zjKKwtA6NKxC!vv_0Z$x(*YxJNU{tTD4nn|ExcO`CUQYoVS^t{#OO*TTSr>giR0uRZRo z_%MUrmlzA_oehDo^ok&o^x_{oHUj5v?KKlvDJyJxqoWVq3h&_x!-y71u5czGmSp+l zIZY0KgUzv|4d@*ye@^X!Hd;K7G+Sqx1`?-hiOyC-m)jIO^h<1|z=asn=U&lbwc$?0JGPaGaUyqFK z=o>`T&1^i+Ysa)mzjKT{`V}u)+C?KY17K&<42bOPO!|=^240&;ai9`e z98&x_4SWXIIua4WJV4&YLO9Mt$RD4n$@J{BS(p%1VTl0;VQ7qFKIy>@+RIz7A>iS& z7CdRepA>LNnhFPx=I;6F)sN0UJpB38ol@q~n+sQ1?{|Ax=d-Z>S&{|=C zWA=<&Z!=+aJwAn}bF*jmQlA05bFNG<>QmI|Bm8Me;ytB_KjKN~Oc zGLqe_^$@wDf_$BQUoed87}f^7O$I|MyP`xwqnTZ3T9tj93?HnZYIWs6P=FF!pj~ax z;GzPaLgOnldV1I*FAydl9uo*l)m8`uhGz6A@koInSJgHo<8M^AfY*|c=wdBrO71{V z?D7|946#@=OupC8f>TdPlAuA=+)|MFkQhE|b%3!`93Gq<*cJq6Bxl8fvW4vQNhril z8}R!;GzK{qgW%p>gSA7&1w>4UJF+O6z&(`VcmfoZ;drXx6J)rzmM4{md#^X311_*A zp?bq6XS9Lxqn<=R1((V2fasz&V``pTm-@Z#6xgo&1^gX8%hi1EE+j{{us7=no02m=?<~hAO07qqu(}4H!e;J3 zU9h#Dq7JrkyFzWP8+SEWY0~8Sr?9n+B&08sCO5eFQpOjoV@5c%xFvrYocPl~L$o^& zqlFGJ(2o1uJAaIdh{(ogptfz~(au-SUEjrL&xAcwB6Px1S1LEfU`(jQBk>A4a3&HM zEC;mFHSx`VG6u6+h_<_|A*WhH;0MACe8($LM`zOX9qzNE=3(dK_<_1~ttKpLp`Tzx zb-V)0*=}Z7KNjgOF5*p${va+KJCazm4WcouKhy>xhUgpYK(oxG^1941@c#IdgKz>B zF1Vk@qpyfi7~d->S8)Opkcy#Oh${y0Eh&q-ddoFC-&42&5|~;E#MZI_vdD36|6_@T z$Et=`$0ZhGaEbony2H4|K$z$S(lJf_P`Z&lUnSCTi$P-InZ{V<2PvNIaGpB2ZbeR* z9~BwFWNA=dtaVgKKX?kxIB*Z-R#PRUe}!#ao)7H6Gr&}s|I6v&^ohu{4YF&TiIksS zX(DA#84vhp_pERZj+cV;*?TNnR4u_Q4 zA=}16b-0MW&Rs;0a^ePAxPD84fsanNqa1@sZf>jiw$hcz)Eg}$#rN8g{*52ow`$(H2&ipeMn)BL^_1`)9-kDKabtX5k!%z!8R-q@36lmPS)uX{v*Q4hqNk zu{E6Mg%ld{wcZ9|Fz$CaXe%CC<1Rk~sJ0~9;CqGfxEi}*g@b171kUIX-7sLb2Vumq zWN$AFkOtFCv5tl$fU;r4y4eXN5w7zTN%R8_$3d0E3`T#AMGEnNR%ne)(!m4RxW?wf z;Gv5TR9-4K6_-EWQ+ajo71$m55d&O(_g-}I?R)rJV867U%=f3KGcvVeyVwAbN0EV& zM)23^Uj49`q2lh4|5D?=c8oPgz*qfT-=72Lt60PqpHR8Bg$BL&5<&dRk>Mj~Db-cMv3?@V2J05NWSCUxa*5hR2R?#<4FH@`K}mz8!&%z&ru$q@Hq5$Z1L z#lHJDCcPcmN}0VPG@l<$_eq!%>ru$~Vt!v;&EYSVP0Lk_k?p>w>0R+GY7m#FYx zZ*33iCIh7#YK%?n*7)h<-YIM$FYzT|MDA6K5kT^b!%!Xe<7fOLb4jrMsP#@AO!;_% z=OO;!uYxOS$69@b(1113vR&D;_EJz52o!IyV5=mE$S0cx!IZNBdqv~OA8i-y0DnAg zjA682WQU)9E04_H3W0tA0t_6wFE$*kMC^lv6VYf3&B%@@2ToL)_v`FdOtblu#VoUp zW5_z+XZ0(*^CtC$C-2D=MZ>zmqEn`!1Z|Axp!r?nhe>Dxys-u!WY^N364e?@lfgGt zF;>fKmsUnbA~%^lj*}UxDbyeLUYQH!&-Pt;q3_$Rbvg+c;myMoE|7@99sO zB1`(MA@U19AmG;#GMM}}QV<1RexU34P|yW^M5J=l5W{HXY!{1xmq57$IFLuU)+KfL zrpx(E65*ZxLFQ+|KTMicd{-@Cb}apPU^j#Hm(N;a+&i-Q822)hQP8Sqi3yYh4LU_j zOjD-Num_q=37@hBh#-(}BOFL5odhXj)tNM35lUs#0Wq$DK}1eIZ#TO%{=jy0n9ce? z49#9&^Fi{LT_Mxqq{-gcT)C0KqIF~t1_O1?9|!dhCY$F&dzTZoE73}PL(Nf;VM#Tu z5nApH)Q^-kIJ{I}eGI2mt=O;`HH~0@z`f|>b*7K)Na;qn=yb()vf`F@-(I#OP++Z# z=36g4_?C|73wyi+(6uuTr>+HqqOk*OC8(!_L8EB9GL(P8LV)c(OzevI!!kSwaxq1f5pkJV<`(^Fj86reV8- z=VgNfzPDyl9`T69C-lTOk5C%Hq&5-{378(G@egeR14#9(5I44b;W3<eB7A@t&zZZ;KQ!=R)IVgXJ8gj= zF@v_SHo&GUN+?inEa&kXjsz`Q6K(HeFt71`SLlGO(S{=sQwrP&{`p@)d*S7ixVcyH z^j?!s`W{<=6@T(W68EEt`}K+Yp~U^>#Qk96{>H@py2O27;{KY%{dI}^j>LUe;=U(w z- z@6$_kRFM2>B){)mQxZTvg~D&J)O1CC;p>ux4;B@Ed9rYe;*~<)oZsB6K2tU-e8?BR zIa&C6y~MgbB)0! zq;$o0S`_!1chFC#`1{BUlm{x~zVqB)pgi^-EslI!xGwJLmNyL$vI1*H=$=ol9n9MGJhBF) zypul}O}L;4_{Q`cSWvso^#1>Q6DB0-{D=7_Vp+s>LX>RPHv8Jt*lzI; zf@51L9M`g43e6QA%h^mr$C5Yha~lX|QP6?=5qU?lM?t|TMK0~j%}sn<`e?X}(sfDuDB4P(hL zC_AJJu*neU4Do`Mi+k#8{G3&A6HKnwG{gcHq1&HHw<_1~JcoOJZL;~Mm1|VBJNv1{! zWH5}pM6UC>Wi*6akjTm4`zt9KDCoDZf%hyBDmO=sPTca={U~aAeRu?IA{s6~kXRR3 zfI{kZ@7tXQJ@|GfD4^7Ar$-ls_z`)an`nhUujVamt#gy#D##bFv6C6^w6=JykJprI zj$1tAbj`!=7Bt6!{sJh_UjPOACjgo$fIRjv#p`_0hA)C1{@GB5I`etOhIU*gZO<0i zexV1i?*cX4tGH6tkMA-xunjM57lf5O0w_D+{l@{u6r+_3cq=^ML&IH;UW2Nm%mk_m zqd@#RMmLT4oal^w3Y#%Yh#olH=^Zz?)qXumhF%Yvbsb!Btr>oBS4JQ-q|ttjVFyg_ z5EiyKBzyn+%IUPc6--JJoFT5^!(o759GPNS{qi!bVYTwSTJ@=L8hWrEZa2jiat$)f znR`vLGk#sNGd`H?jF0*vK#kZDf}ayc<>>1C-IH{6u$7WIiy#~NAA2VoO4Tpn-xSKj ziyQYT50cXodDx6{$2`QY(M2efPq3o0;RxG?YBG#9h9|YKgxPu@~|^0 z4--jws5s4ns-QxwS9_C(1D|*SR@_ci4KdmV_*;nZ~Wgn0sQohB2XN#m6IulMqZ!FC)mi222D;;RA7TN|L6 z466{caGN>$G0=_=^pFx?+&i_`1WvV4h4rW~)%#~MsUPPeB0vOcU0TPpGm~KSUyM1q zcW}NI=*K^eW2phn@rG`~25sgDUH?1NIQb2QTvG1`>>4+xa-U||mpod7vvRYALVtsK z?EPnzW?S-}C<|9-#}@Ji_n9}dr$G2&>lz{?3aG~67Z2sC_o4Gag7Pdv97BKB8Ek-D zvo0~A3-oz2`@1vUwl_$XlUmW-e=3^#Q!(yjcsAvR4#2-@AP$FSU!Lu6!2IPZ%!0xy z-_19x6BxgUu&Ue!$JdJK{Gbeo8 zPN6+gMU~G*6&Dc}?M`7kq}T@l+2n!LH#_m!zJbrL<~MB>6mM%`AHn5m_HlaOEKaNF z;?@_Sc?X!rvzjl+CYa_Y{=4MF|3Sg$eTF=(j$$SB7J&~`HB32Fo6QNQ5#zdkK*j-S z4#oDU9G@8K3=Rs4FiHQxwoVlGju&j!Wi@a`2AP3oe{h1^5KB3@|Na-(aT@Jn+6eDFOA6RLFB({g ziGX1pQ1*sJ{U1bY`_tye-=zl5g|>2P7PPZGPBapoROtjxXm_{_Mdua=oQ5B%Cdb5B ztTn-b@v;LO(HM}a!;e%YK0{n)*=H_3!e{ZCroybmTNXs@;(D7Lj&Da3o!jA;2T2^C zsVD-t2@PbCz~`Tfm^yxHqR5dZ$_5m=3FpK&^)IYz>c6zUIlr-~acIehgJ+-?K7VX; z{{3i6&w}}R4&y1P1QPOPUl=819*oE11;zuLmfS|-uKFtN2J~%tAy{51=`gg7xT95; zJJK$P+vO0u9AK9{rx12GVVB44@<+QoY?oiz<$k-|qYIQM`o;EQ0E4qpytDxc+|Y6I zL)0CHC)-BOKieb(;j4)jYHHQ>{b)zAg$0(d&>pUQ1ERdy;>8d7*=T(jGM4TU zD>gx0z8&%-M{p|A?!!lw?Chmgne6BD$5Ek<#C=z|N2j@m@Bl{zbfU$N0Zy)|^?Q-7 zuRX3;i8nnt6ZF0CMO?>$feAj4jE zN67qiZ##7VYYkoIcy)l^I2p+86p)xQwCYtAu7>-KAQ>cNm7gIWwpP_586_@Vhxyl0 zk^=zcPe^>`OSUjZaViQoHloZQ=N*oi<+uaO*~)eG4E52U#!yHH%{ z$7Ufeyi#0lsn_%^vUrV!;x+}jk@!%H;lE6HNOUcP#C7kg1eD#>VBzf143ptX*%7U1T4BXfGH)q;JWLuykmzcX11=m%drl zCS3R~UP9@vVcIaV&8|gY&L2)za&InWC(LFlcmPBB1VyZc)DxYxqTj11#L1!D5^>^7 z3{a@TF);iO4maExZ@{^#VIY4c)Jim{04&|Bfl?jys|-?C6Pw{)Rk`_&0)z>R~{?w1TN44 z2mbKZ9%b{7Ta5wp5ANF8KxX)-!vZ>p>cE0h#pO%HRun!(Z1-eeuMu8|Q@L-xkLWC> z!Sf3WQLbkI$|VE9ieQ<2)oH#%)!t6ZV%BH#oLO=%?IfdRSIw<(tH;<9$#=fiBFai5 z*e9vOed>luLXU3)*;B!*}hxOY^QHo9jjmoipKVX4L~k zQQSAm3$)r32{h=$a6d>i`kB{MxJz6_qMzHU??nKHN7;)h`D1uRo{OOp8YZ|H_0c)R z@furxj=-oLU5xF;Jx5Rpr?UtQRMNBcHA1>7^Gk#;fqgY|xeGqeMwyNA?ZiF$#q`5` z5kEh)3t!#zqh(Re4E4&pVBIxb8V1@$*7}P2l*RJ(uFtTT3Az()va7?ty^Q!acF>y*py^K%5IfJsVN5>Iwssem*F!3RGQZFeXm zAjS0S+#%X>c8`4|;q2}tI{jhxzntCmd{ye~Le7i=^pO=bz&S?%U~enD>pyFbtkpu@ z!KNc{YeWH)h;5!4l890NQ0-28J169ICrG1ApoU~mxdLgFi=^2R6Qb?U$0I*Nm}|ZB zL<_anJ5HVuNB=%Sh!$22LUafO5u!`C7-A?qm*@Eq;x(T!LRc+E2%eQB>Zh{(Z)0z7 zR%+$o0i=EC-3=T!H~ss070oa#*#C#Kf*28YyJkZw`+e>(c9QD7fO)lenyqg)zmIf85sb#zG$I5+^6E>(hfG&Npt9I3n_TJ*MQmkJUJ=`Tu~NjZ{5Bzf?Mk)QTPn$)62CBt`1Pwz{;U?S zh*-tk+`kZ#g}I&Z)-VNoJ{}NOa9!;LnGFrB3(nm@JIbV348&=mh%MOzlP)Sq$|l8R z1;(hN!_#0fdWa&xVz>*z41H}hfqh2UGhH62GuaD+_jgts-d4WwUa{-64=wyjYULB2 z72$}N9zL_tqsYWka)?ZrZ)USh6EVA&m=YgtHaUrq+%3)Dr;w2JCp5ZlI4D1 z9FNg;)ZxJRZ$6Y@{E(E~rzY>iOy?KG?5f@T@DI2^F8sNcxBap7oyJW!C+BJWsLR?&>GqywJ059VPD$JKjPlucJfW zhQ0YX`aXAXYz)E>_QE17gVD>xsZX^78+righ1FnMKH~aAaNQ1GLViHku zzO&XJG!W{lm&kAKVM)NSPbKcH2jDK>&9F;h9|Jzc($~}5lypM}2T_h}E$-Lx9zW{i zdb?#9st31lRHjttiPPzs&>w;ak!J066ncb7FkH6sqe7WGeR!d4lVrM8a2uGbmATrG zsTytP$t#{Y@A?(9m$pUC0W<{Gfa71s%B&_boGc-$;aOF1x7G?R&b|t0?hUmS&uq>8 z_|B!ru^#y*aXlk4cA=iAj-_j;q?zE4U>q*A#Tu-$`1da&ldRPpOhjXhmcC3wTu+)0 zg3$c&o`Ca5)g$oa8F>=%gKcE_Q1_vqBsKk#lA3Y!?54!JKO7i2l~I?pthk6q`w|z> zr>)WV7c>osodr50p~;%if@d|t&1@Q&$mo;(8`I~pl|~;_%I52aB7K|bmK_FF%Wa3P zdmn(t*x0R0a5QIbL)8d5f?ph;P<&^RrLTv4%$WPx3s0%&!C^0l^-N4#%0Nv0h`aSQ zv>>Pwd+@wP2^_gNSf_t@|8=lj3L zpIQtBxfINY`}oJ6(n^w{x}zXoa59O8yY^$&CZSoFGq?Q##&L$w?Re?350Onui=7tr z0RcX=OefDB`U)0nVfO^h!P)_gUzh1yjCLjZgu!!;I9>7-=4d^g9r##0?Z&;~OxDGR7GJ<1A0pV2$<`;6jq)LaEtza0nJm2$$s*YJ5W&WWP-$B-SqC0| zWXWDXw+j!Pv^!b>^%`K~zC&HupWpPP)E?nJh&5Vfzw_!0ZI$VT5Bpq0AdBSp_>|-w zO&}wya+#K%K?}F;pW%l1D*Q>kcw3$3TQWWBw=r=?mAy{KuibqIY=_`mx!6u5(|260 zd+Yf;=az~OI8jD36@LLN10kbWmgv{Op)Uk{JGayc>?C|Am4WYy{f6(+Lj<4iv-ZJY zy#JqyajYYbXa+ab0LLQwf2$<_v-_3*T+2UI{@q>x5i*IoLFe zhy>62bx&Pr2NnZ0Mtx)UCGbO-#jhuAM=p0N!z{L*l&#V=c(-qPn*`o1kCgKB{22zX zE%+<}nRQ;rIsq{JlHl{xKf!~11$=4XgSEND3lC~|@g>WLAzwfXA2$03crIaRkwZp! z*yg{qyF*1ME=PsbqtWTD?a{YutviE;-RT*wAg_K6DsH1+k-S_wYrpiN;>IcS`&H9R z_|53puP!o9LtBeDZ6FrFckp_#y7gcI38Xo2vrnTk36SNOynI>!61xXR_K!600XPJ) znh$;cp@t8VG<<w)~1{<#euRbeJS zs8@|y#~2Q~5HD-o@;o}K7%K(u;}J&A_6D~yoG09s&4*BeKRXIKX%geNy5u+(kPN>f z{4;p(+PUVG>%#$C=6U1aRu2C?LOgo@gmcMv48Ubu9#qd6&OH75N$ z*b51SR6$Rwh%Af=qc->h0b;w6R1s0JfmF;S1f)nlq#s#ELP$Sfb_)vwv-T~&Kf3CF zLVjhY|s*s52bO<&{;Jq?r8#B zrntprio44r2H4I>qqsVj&EoKIR-K9)oTRv;N{Z|33Xs*KsD@A!9?oi@2)?5nR1fqN zBiX5VSO$&txf$+Qlx@OVv<%jwQ8t52mY31^yQKr@@vneC{`}<4dk~MyZSN`wt|g;b za147;#1xwDY+2W<{_xWN(|u1{(-tf`VMu9qmn+m?fZfZ-?O>K3HzfZ$jvb1!N z;D%Ukh!f^EbQSjR1OCr>{Qp`!(OkK76G$JDVYM&0V`d~rWo=k4Wn9>)4+PRy%~W5egpr%h}9ndg1K|r1|k`2La-u^!<3buneNR| zdCkG+%hOGJZ%Jw9`R$8dcjMe$n4WU*)pKs&{=)aAsJtThN=lm=e8)%S(Z?mK^l#Ao zRFJvezv)6~g^zK9!UjC}H$_clseaCMckdECAV2bN82j^{36>|{T$gD`*#B%l7H;-8 zRcHHKaLqt2hUwsNeksYu(I9fP#x-b`=iVKhN%(zy1P?_6-CqtBzEtS5C)zl+>|)ji z{^5U~*)%;n{OFstjEOIr*8lkYt8ckv$2%*UQr~geJVXrs7fD#-NtogItzWe)XYmtS zW9WzG>b1eE)ztlYd13)je=U;t0iHX|t|sTl0ptK`eYVjpTSjt-v}i=s!|=iSu_$bh zMUUG+=s@hH?Z;$s@}l|!LnXhkN~%&< z{YYO%s*;r)l)7rrG8|M?$-$|suCOl$7gaJVb=3##%Pgyev(t#k?9^3nu{vfa>o^4K zwJrT2MRgpCqp5IUG{8NysE!nlrm`<7U&ljSm8Fw8e}oVHN6tS1DIKuIp18+|0b)fEF|+!*kQGm1w~(XP6i9U24H~PZ2=g*7EM4x1Lcp1=94B1`cJaT zCIRKK`FU102`G;lLCcb5{t1sIKpBof!L$;xXLWt85Zb9<|CQ0R>;lzDYoN zG=KsYZ3>_)fNMQ_K5Pk2fLoYiH{1*>z?;{Ej+i!Y+9Wv`|E>nmi3`(Zal&?7J+|g8c4D>KB71%PR}W zvO$~4(ky`4osGr2sAm!^2*EEFg8ZYU09f%4 z*X#`hPXwv(WEFS-c24&Fpm7X^78;f>(ALPX$mAteeQDwo>>dR^(!F;^-)Q{`bU~BM zRN@H_Ey&+DJYLgxPVK?EtH#{{x~sxn)q=jWYY%MBKitGg>sLL_ph4>9#kB`xvk7|( zkN6QWbrH5&o=w;fn3WwFlzMg8W?u#X-6w6tfoQ@0~xq zqiRw99;*t?`mhvR~!gc?PYiC7Y&{Dq0z8tWi?@d+?+DL^qaw7*W z=!0F_Js<3zpWiiq_>a}|^Uus59>Y@p2}_Gsa|87)Hv&?4l+k2aVpzp<&4vpn% zdv`DnlCpQRF8>(v&05emJ^%FZj+*?RP=5Y#l#UI9Eye81&qRvZI7Zr@54rq}cs?W) zdg$e^#N(l%ywv5h@R;hG4v!~2;@&Wm(>~m5?eZGCr0sHqU0!6DS$3IWm)$dz?Q#lHZH{!?^y*oTFs!$vniuG=iYO zIZA#n_77tS&@nILAt&=r?jI&odH1ZqM^1i+dzSPMivTEbk&{^`^A3|~Jdi~$ax%sL z`G@or|Ia_9N4|Ie@FmZ3Vv9S}E(hAB!Y=udoBLB;InPMIO94@J$rU5bf|I)0!C<*_g_`ntKFAeS02rGCVr1Y0pq| z{(kHmmCEgzUQuMbLmF)07!uuAm%!qhMk_DAKGUp+R{uKNw6RS%9*qm9|5?9y*~ojlpku^ zvzb29(BEe&nz$83ZY@40n#h_H7?ZVw3Pqxo%#40A={gTR!e2Kv?o8#{EtleX3r@H{ z&l3zuw5#tz+`TFHmx`s8*jMH0!2V;9yeYq{Y2KYpxj)X}{GQyd8L5E-@S5UKd0(LL zL8=WD#?n0nI#&-%affEX&0rZ>u$O$+}fPK&Vsh<@e$=-@UtKDy+U zgfKrHyPAm#t9EgyBFBvsA$eR}&QKn%>awBs%k*Sp{KL%TItoM7q#=3MU4QImPn^t0t&cX^30E0KMuI@0L z_hqRDe5kaod4LOB;~fZDVo|OK&$C=@oMl($_-}4y0y+^@z^aLOx7PNMMEP#S_XnU( zocd*p_p$l`ptN9vVnk&{5k%7-PgJZ9gT>3%L%@ z{1q(5%57-Zehh7YKi8Jdw54iwQ_V8n;5#@jidgaZjUZ@Es`on*`e)Lq-Wzy_jSe>d zD%v6CcoyAfwWu0`z#r#v4C)$9IkjqsMqg>wjy`NR)hy1*NkiVO>dmUErU`*AMjTCAn;S~XI;~m;iKasSKci<06jXN=@ffH7GP#a%o zTtDw}(WKdO^*0pO{}J%+1q9$=N_7N4QTYCY{9#y;&M=w6G%DqwyWau z6rXC`x7i{SHh1{rGA@VMj8N3R~G+Y{%_&`;TZp&hQD17(B-ehe|UVV_;YOGe z=y)*SVn?>6XNQM87V(q)VDY5v-yO04brJe6*&*}~wabCJpp=@W2ccvRbB})wkLjgf z#^a%U{G1U-uI&_rgF7`rEo0%>@MjPwR}^2J=?1om6jg}K&zQTic>QA4i2KW91Qbii z__5L*|JJAWxXmwu5{-}+shj82_RW!o_#|9qR>g1rS0H~g-4CrkS&zc?X0PBBI-4XH zuQ%)Yg-xu39z{(eTFP?kxz67brji45>{Ns0W*s`sB00q-!{#En+>FZ}_Y9@Jk{up9 zBAfedWgk)}pr;T-`5_K9w0h}Obycbwf&QWD3sXCWvDM@3&cFNUF?f4ns^M3|sp>4= z;|2+sbP6w#B^{F0hnq~eX$d!N;ikji^!0$s;hwz4{jY~phfRx7*kAY`3h+OafPY^v zJ^V^W_;o}0bwl`dL-=(=_<0lH*S&}THwj(;T;PV1hemIBw>y zv@_h%;cb<}@@RWo;x4a1h&|D9$&J#+p6(?>3^rHPun5)@{Ib6|Yny&(THS>fQT`_5qBSCAM)*;gHX`SsCS^(Wim$-8Q?xV?Xa~RAgpM(+4@53rp5|l#hEs zVRvHP)8=7Tu{9rXC~5ZOkjMbG)0s*0om|1h&ioI(j};``K|WZK=g?n`Tcj2~>;qFw z*q%|F{>0o0cl#Guu9i@;`+@yUL>SDs!>yIlj@R6+A&&{90G<9kU%=v{Z-ARDZUD13 zLuv=efjB}HYbD$%XR!{Sa{#ucc_33?(3wH8TUhLh4THECXJdZG`*pN#MM=KXhib`5 z_-EOEW1|qDkKH)Z`4+-4I0Po4RqOe1$==Iu(P`*n5SYTY(ajxYvux%13Q&`JOX}eG zwM!s}jHc&a+AU*87tqx416tu3b9>_6k@j$eXBkP5X7T~T%pB|XR1N;*Ro4GuE;qO! z^nY##J?zKA!3pelf-N7aM~cUD8<5I1Y%%&UQrAwlf;Jby)!mZK?MB$@9Wb$s5$yJ1 zt4{445vVlyMq4IW6}trPH4C?6PyDE`GW2@#p+K*e=EnP$6_hyoL}`il1GT-E_*IqI z3^%;J3GQEN^*__ZV_Ihadoc@bWcit-1axL&bK{m&?s9%aOc5Rv4n?>K68VlaHVCUj zs3gnpZ^w59yD%iTu%hXNZ43GqBJdYVyW&5x{fA|-&_4a@Qbqdt!234rPju1m zN$aNkPn&S|H~K%^vYjFY-2**rn|6}MW_uzRj$~-ugpBpdNUmF!mN<8-SK*L58x#KO zPpa3Ad8Y2i53^>s-Y(y@%fIWwsLppF{N?oZMut}QUtiN@^z}=pl-Jj#zY6jPgJcE) z#NW5R-pzfOz^S@OU%RHDuWd&b>nn4)otfvSuYEid7l%+aM;+td+8#;_WD1PA2nTDx zS)}UztXOr=N*cIws=IhT70o)_@rf2Jw~Q9Q?!iFC_U6XBmK79UPK#6fQ}|DR$-PG((wKh&}rEu@+-?dSK?Cdv59-zstcK~Q2UWj(^89XlEC4%UV5-S_@SkC_s13Sp0-A(U$cC?V@_=ix%dLY*^~*lNen^ zkfns0Z}hF1K)?Y#!#K7>#v`bEm$x$sV=>+GM8={$HWnqOrhuteA8YmkXLw!x8*O+pL+3@l5UN~H9zo<_LfPSsyqzd`do~W$Dsct5nL(a@U^BTb z&xnpBim0X#XILUcQ4NRp08s(06W1a@k}BMO+ZUVH8v4VVRfqSn!;zP$r()O97MpGRt&hzzryF<^O{}jEh+&If6p;9p zYk%rC0m$5T3}0%e5HgHses$M2G&Sx@t)5F2?QaEm@ML*d-?vd-wjZ>}!t}tG1zw<3 z(jNe!@G@QSGLPV*`~hDLiYMtI9GMIOL~%9ffHIWX{dUxc@>{@cIL#O%YTTO2(aG~Z z3`W&9Vj5>i)!d(nQrTgp=IQ86z#f&|4)9y+P)9uyW1;BXOD>50p~di_FsZZg=S#9O z9`KSbg)cQOcb!qXR(-yA$SYF(m}Ss-6C-6E?W#K$lRPAPmVq7V}m%c^)=iJ>~SI@#>NM<7TiL+`^F05rbF zJ-&$GbmBYYGR?*w{NpmI{JSA;XI5wPr*Yq-#kFtE^u3lrX>R(SNx(w5i{Sa;2GIkO z*9~)0QZJ~Km636szH&f5dF3ZO>T7O6&9=^{sJ=H_eKm4JF2&GRcOC$s8elL-{W1tH zp4QW z6FJa=J)nFCKx#qt*%}T>v~uJ)(^p61+Xis5o~{PFc2nhY7vIr>o^t0*EF>!;e=+^f zHTY4n%(;<3B(LJD7GhuR4m{li5unBAOpyHvAhB55gGaX4hkA?XfA?*o7vPgQvieXC zNq)UZjp#n3itN*}015hj1p zsE_X`D*t#ZznwO`2k9yBT`Hw-aqWkwgZMWO%M?>9Kc~;#=-8Bqak=wS?R3@RG0IDu zt&WaJ(OOKjl9bMmz-CrsRz$_}m-lqneyF1J@3Na1QLLa14ozf^gOw*dI*!v(rz(v9 zdKTPUVHi1~+!zMD0)?Kf=x#Tl3+1}0Ja#xA0>WOO)BtzI+xLy#*ikTLhSjC8N*_WK zL%k`iGdp0#gL|R>w({^1Z~XR#-3u)b&rU(Z#-=O}hx|zL&}O~062;drvfg&Hxev`LUU!+5=%$8* z2?{$uXzBs!@~vzc*M9$?t3~E&^L(fYJuoFT=5z?h;d?8;;t%94E1`OIU8sd zb#7no;YwPS&Wr66cC>yPi$sUBPh)Y^mh8ZXOSPVE2>T(}zY3!jq!M5b>wyV)Ly0f) zHt!J_#H^`u{93~3e?|0o^R1!>_TWVvmj1yxEARpau!?O|I(ofOuNN><>A%$_nlwe1 zu^sg|S6Z=cQ-AHLC~II zIgt@g0;_0J16|B(-$EA<1QD)ks{Ha+dQKz?MM<75HhMS}hcwZNL9f(O9nVzUo(jsM z?da$C9n^;zwSN0+#NmdRJd%!~@rN*vbDX21(J!W-_GdnKz4TjZOCYch?c&-uMr!@x zWz=@XAI@RV!?du)bQo&aDlMcoH}Fr5J69Szdv5((<^yi_o)M5}K*8r$5b#&Pk$Gc9 z=h4~x3|Kvu3+q+wzJRUWEj8ZJo6o>Z6r@-w1B&v-e-)vkn;0L+yR-4azWI{kL=CyFuUZ_DDi+ymXG_1KiZqX|(0pbaCz(KL{$1tjm$nU2iq+S zBb2}vtGyZiX%A50NFA@5;f!d)Oe95beq)6~8atRGI)h*(!-x@+?)U_mB&$mP#1Svx z7RC_SPT^sY`Cut)+)bFl$@UElGSd^w7Ph}2ui!Zsuwa@FDDa5^^m>-HVgspM%&kpN zuy9K{uG8k!cBG2|HI4vs_n(g^x|i9pG<;r|sj+HY-9dLL3OP-ea{ONZpAo;CJ(7$X zvvdxF)GunhFV*{P(6g!kqu2`Wo!AoYl$s{rM{K|iUYwES_Z?)D`2Azv1%9u)vw+{% z>oMjxRG^sOS2O$6_=2@vh1R!6KXEwRJ63k`iY6!4Vwk-V`iwKsNiy!-}lNEinq`=F~ zS0e#;T}1*O%gwSKdoVm=f*p8HU8p9k^<$f9jvzEF@JF4N@?JBkh6WvpCB4^n(PEE(>;p@pgR{ouC%T{GRbY z=oT_jQE2gs;2rpn053u1*0OHt%OP=d>wkzXpgGTrzLyvE!pbf#hm6~fmEhR{I#dIT z=~YGE3LHQTUQwFoZn?>}mxjFzpWWB~)p%4#tWcvD7hh!=vbif+6D$xcFJl~N2(oMv zEQc`%e~a+_(szY#3$nE4CN4-_{Q%PBCR&#^60o-8F;ZJm~3fUMsgGXWVr|9+)yi?h`oCna{nOCEdm7T3b`*>`bO3rHEIjoaKr*V3yB0Os~e1~G|s*TxcJfjNO##r!yao$-S_?4Ze9zMSN3&*q6J8hH2q zK@$vVBm!pMR|kI-@$$lgjdtM%ox+zeqioA?CnkXvOoMj{lC@>?C>gI>F<+zsTZHXF zXOGV+;ff!Lbf84|#qu-ITbl*`<|2IXJAi7%_68^ztOw6bL$U5^&HlKyHiKu1CZOQZ z4jil@lt*Ky;SRP8D^FpXfm>}35IpKl!+|koAzM5; zRmbxNbr~DjG?ZmSs&^FyA0L$yC2Uj1pqb>~O}>y$syjsc->ngbI_r=Vvx%a2tGvKu z-XI4w6+pj@@+rd#Lrud9%BQJI?x?+Ijb|=O)J4I<0)C|lImx<<;9j@B6z&c}k#;!A z2cBm#Zvou#*~F@xhM)-g^GXURs=SnF@o5xkmuB{0n5abcd*>chN9>Bk;4pM=-@{Q! zw0s?7Z>IB!yVkLjc*lMBR$ieN<|eNIh$pg*Bs)o#=;T#es+^{DdJ$(0+?YDm`xX`8 zyLD(YQ!6>|B0x=d0o$|BQE~EwN;P<_5nVrc0jZVs>;oe4HIu9R*leaDEsotgEg~Ao z``r1xGG5Kt0ybAHD?PQcQoS!y0|$ddVJ|j=V}FLQ#_hZ2mu671oA@_5B~bDpuhbv9 z2r_<%kU|R>I)&v((`o6{+Ounrm%oDLZfNrd`3?r35uKWpKj+)(-+jacX zgNb?N*uiw8BCKNC!YGeD22r=H_P2mP*e~8#(`M|*Tiy=vg|-!<(ZXENs~%kB-@g_B z)4yM;uhn=>=Vo*Q^K8LU84j7WE}1kp@bajUF7$|y*ql<_w8(6@VX0DlzM-F$0-}<@ zz`RX;1M8I0fgA4yNJ|eDB=qLTE+ZkJK!dZ71vu(#WkM^hNkuyDZr;W8fHhl4gW{TW zt?j+x)*|Rsc;53%q5(^YTm%S_p5#osf2aY53r+R;k zo3SQ!1JED%u3mSgdjFNLPsHnD|Nbbgbd|zb5OV2D=$@II(m9kAPUru0|d84MKvD{iX~>4lTROV zI&Sx?Um-0FudqUxj&)L%t&V zXK5r`vZX$w4hkbJuJkVLNI65XB>98(3?mU{EWXZu%E7H}Y7NN`c$ge|0NFtvS934n z7N^gqz%fbVF#6UXxmkT{8}0*&z%$I{?x4(}%rK*~4cN4dl*B&<*qhc?Z`}Z{7%unP zB_@i1ivgG%w%SWF2lqwvxzx(*V*juQpXp|@N#R%ojSt2mIO336ISY2U$?IsUcQ=zp zhrLh_9_yT)?Z>>Qe$0F7KMm0%PMLx_B<3Tq4z+#y){XWzG?ry&DsTla2--|dgcIdX zLC~9V$sX1Xsc55Aw3E6}=Xi2ZG^mE@*rrh$PvIcbTOzFb+YtxORxjd|J}ym$HO7Rx z+#^tl-IYrV$BYMAACC^un6dlBO~%8M;}J{u^V? zbF=x`U;}#%j2F9cWs#&uuy()-pwq1RU+0@5AT^Cy9LlJ2hy60blEM{ooL-#6ToQCO z+;3vKFq#u`)WkX17>C!D@oQ8~s{@&OTLDP5%~W18*f%G22@eXMM|mmOQwu8^Px}Z0`ox;Ar`QeZvMlD2uy{H zk<5!vQqLr)q}WTTa$gie@Qku~TKl*vlTBVbM4qPP8B@EU``O4|g|OQVg<@~X+9H#aNTz9p-O#qgJ2lb;>L5pX z>>t?Xo6|h@Ey6-wqO4K1-Mae;owrDG20C9PB1I`yD}{IY4SqDmp$h=)qm&mYWeFVK z(VC61Kl&eIGu0g%qGF6aLx&=D^UE2=i4xqQK9(i;A?}Oq{lCcmNYW$^=}45X)W#!z zGHI(x6{Mz$Oslh*%orHO{OZ+>3aA`zzK7f8A+HPUgrqVX^0peo+kZnksT5P9r71p2 z57^FOv=_~6y0kglvkG#Alr=1;o{7q|dB0R54>uCAW7oKO$#k7lP9W*Mq8WjTajf|g z?RuhhCJAxIN9x9z{1}YGWgno0>7*wh2lxZP>9p!*wr;e`R~<_=>pwE<=k54b5!FE% zP_GasC0y$R#Ghm2p#fbDm=S5?oDc{>qK$O3g^l-gfH!ToJUsYb?mM#GEXWTS{j;xy zg+MCZW1bg)z*I{#7B9daVt8_-%>kCHJ1OMGkK#<8EMF(X10Mp%#K2JTllNheVI^s8 z$g{n1qj)L2$EKqSH~(8|Iax1<*c-=}y+MQ$7NcYl)vQsL7FK~hIx%TxyKk}v73C_@W z#_3?Vs~GD%tlt3IfcpGwvtyEu;w483tomhIKPPk|%7h?ka^jx#SJBPij} zg|-rfA&=SxGr#+Zx74iQXpw9Uj%&~(4=O{@vMdyIPE1?}2fKhIItUp4&TXm+QTcCD z9_Z2_c(8(`0t2I&=pYp!h)Kn19Bpzk zZJK`vK%widUlBZyUMqOoNc46Ry~C?=s`nK%CuQgM(oDz*{w8K*Kf-p+?Ci-f&Y63i ze}IjdGk4HGWZY4&BK&8Q!E~fiA@qvs6Ko1qwuX-o67P_7sZjToPgz!!$PSEQz1OT$ z1LDe~S2b z)Mo?#$T}c^vD%4>r5L#MbF_{Lk&tH0G2yq%u`b!#2(XHJ(>CJXc%v*KbfAm%7;Z>g zxbAxJw}>i*!7Cf4a_1gsJ#SyP#G+t0${l;X$_@ibS_@S$>95>WaSF{;#OaLl%x@dN)1|*|4aCQ*cy6OYNpZP{s9df#kR(i@z^(4ye`A3par7(V=cS)6;HThy zwqn_-asvFm1LgQ|KTiKP%*(Lg#((uJP}jM4f&7GSh)QvP-8_KjsoJN!g1jhFp}p#7 z(22;S_B?8E7ouOzvY_U1W3bn?LWXl-?1uFv@FU$O&oS2>K#{^)VW4qr>d(Vkq4b8CG8TaO+ zSay*R6dq4qp!^8I2%M4-%v3GFPv(?X7-B~y;*GYwjYgm*YEjd?>)<;$dJO6Tiw3ql z8TZkF{V2J()tZ_(zM_Uzcq?B_wS)wOVG^}I3TG((Gbx_sI2D%U0L7SnZnqR|-w;F% zQe3;AmN|<%(nvC~K%juPxcbN(&m9t{0_v%$2sTcekuU;8WB&^iL6u$JR~-$0@bi~Q&*mpV1$bmfcxD&v$C%fOPNrlXKh zFH(I|BouI!%_(g+Ad^WeKBsqTSdzDiw+k?erDx6f% z_N#rp^2$XrA*gyVKkMyZco!DkhL}94U zcRI6Cr!$T#c3zq-w{p1L9tF*CZ((#4!e`&|w}%pP-&syNK8e_;`s>=<#K&cxZ)Lrh zP_@s>62`}(({07`J-&5?=+iE~fpV}Dm9MKU-^jP#>B zn5J`AH(97S37(I=RkMbwTd7mCyEs86NvorM3E?rn3&0fAQ|@W zy7#ktiGK|&s2#G!5M9ebi51(22r7EVn{~A**c$0t$t?~6>D;z3&&^Ms*1Dp#7Eu6! zHQVh?r;@Cqa#$AYQ|B?u!Y3}B_69E4^nT8?+{yY@Y#72tGZQA6`IdQn994x{Fe);R z{TBTcYK_owGhz@Q!{Fmv#(SQvO!XeGJ_V!xh*ENCH##op-1(tjP?8h1F$9RfrfyK& zAYVX4Y%;+JH;hGTm}g$)?j-;y0kO(%N`kGc;Do@7xK-(Kh_gpaGQf4DP}(p9(S#K5 z((WbC8r2|uQbJ8?VX!lh_4o4=WbGkHm@m|kB~2G2*$YF^9XpJmR=yE5|3p*XHRVPt z=W}ksO2~N_+DB+>luwx043YiprzNuG^k0izDcd;0Ch&(F0r<6ycy%Mo0U;m-VI;zR z=HH1VwF%M${X~q2xh0+Xv#PRrD0lu;jG~#`pak&EmWAj(k{=t&Kb=F6Kf0z^A&UH! zOSwc<Oq(zZ-F#t4)%M_;nPglt{8V7BF_%ka> zG2)&Z*sJ{d^K2$QCLxmIWGS}Tglo8at`$G7B3OJIl}(Z+{PH04iPgm{$@$$uBD=f zOkp;grxEko3^gN+Z?SUmwtO*v;U8_b{Y%@B!F{z8NUhku9{1evV?tN& zvY>-Eif8&FYMwABYzx0P-kTce(TA`$4zvik0F8KkU=3r?Kw^z8i37ZKeAvd!c&OJ# zj&#s7?tRh$8Ok-b-ZCIo4Iz&Z(|XGl8wf9ycu&RBvsmDe3M_ykQm*f6g1Xc?F1U_F z3Izj}jsk$qgYav&;G2M3#KFwtPx>g@aYf$1LEK0**+fn2k9h+jj8}k) zg-%5FEZpfI>X~f9KQ!?&lh?E#_3rwB zC9R_%sR%$ICGdC z2?;Jb7D;7r-@l3^alg~0K;O3|^!Az&$Nw=Bo3Je$BQT~&I~YNBeR#l0OW+oTlKIikaPGxP4Hrh1jVFVZ=-c&N0)@a(2|$TqF@ z+VZ%RReQ@(Sx2IbepWv~yoMkaD=WMO*9-J$LmRa0u<#s?GSa>AcjoRFOY@hy3t0n( zpjHxuwMvF0~)>%Zp z{Dvs+lBLD@mYkE!vqXCpH_-WlURr-+%aRjIG98i3botMO1`J%q_#N)i6{N5GZ@c`) zF5B#~)h>7H(%d+-EKwaEm+y)T;`UPZi|wJ-)3)NRyOCYp9M8u*n{L#q+8(@RvnlBj z@fOnHg0qAC!X+%dC+STjol#Q)F@z<{Mve8Go+#5;)6;}3cQGi`!y>8j%q4xV6GmS2 zCs%f9rer%I=nx0L;XJ<7MIhrr%6_9NgR;AahlmkjK*brW451c)aQBk4#3Gyo8*85e z1flI@%k;4JGAa>fsx)ozdR@IiV>i_u-D9d!N-{tk;Hq)o)b>nMGnA#>--NylMEmn+ z0gD^CNbQ|i8Z}dEt*Hge1wf@U27KMxs01ZNpo|%!;3TjV*9sVTLd}(1)hXf0IP`@W z)@a5~>{qhSPy2ZtuQ+aX-f&oGw~cxhd=}p+fRq(D#6ZiqgvL2?%ZF5yT37lqFZnS| zJR!uNHX~>3D&9Jnd#^N!r9`Ruc{q4rs4Bh;F^#y3f6Ixzzft zx*&V}i}iD0f$ewaJJr*a0xy50T(@Pn?#fo;7@Vi6;*Afa zuGECp#@kX?-hc$~WO395OA!oe9*^-ztc?ge?@n^H#G@^=43PnXTnwsiYaYw`vOP=y zY;=_giF{d&lDPYcoZsZkU8hD4S@4^bKj&Y#Z~nYJYApv*)Zdyv-~Ze2=To0BA^TtD z&qg8__%rcwLPYKq@Ta%7nlYF+RetQ?^;vv!Ll=le9n+}Wx7POPisM*trOSVvt}qUI zk1ZE;g?YoZ3I17F2ek4sjb$A-x9`MEMH3cGt!l%IrrfjBQmfvLyJk9L-u2o#(VTxk zqR*3|-Y!6CxvpVd`JZR!!Fb)yFkG-%XkyW@Hs@hAH#arjiA*o^nNXqtf&a0lHqHDH zU?%2skFJ`8%B|Lp~y}D99VechNUT!1I52Tkhh^}FUUa#Ep?TVN>M7(wLS7hTGJ1 z*w7oAj@b1M-L252FK$4L-ilBm#^fw65*XJXpe}Akp$PG2#JRe zVQpGct9-~0*!j3!#yyGiIr*41XE7(Ne7nn?5&dlv zBHSB9zTaRF`ADLwLSyBtN=H?xxeDBnix;>dVh3(y-1&mY6FVZX--06$8dOFre#srv zMdnW&;K}?^-b{teLmp3E^Aws8j`C#Q!UXV#s>zIuXzs~uGR^25zO?u+QxKy5?-fw` zDh~l=NqbPnl#YNx1#;EEy($TXfbx`v+6p2svI3{aClIj%)FO6(TEq@eXWUc&L7)P$ zi!}0*A&{3NA(^F9*2ZcQ1aRx>39FzF+HH7{y|!srAncYTVS`W!lOR;W#0cWOoInv_ zVr-(0uH~LllVC!pZ+LWCQ+}u6)6rRo&%Nc$dmCUw^bQJ*E^3oD7H;tQ*3|N2R_NVY z+pc?9NSe?NJ#cUVL@;e%Q(NUNuCC%52#{vSN?l&+J7m{*X{vXrCvA6EzG0A4#tyKW;r8uL<2?|Smk36B z+bRlaSw8mWWnqr!scEh6-3F&;%S_2gKm*Wkji<~Dr^0V1FT0*~@t&<7sNw&HMO$Le2_dUFCK6v7v#`Ar_S=N*71%A zf%z5U^tHZKSY`1}5F_m?SVw@_EnjWWuGRDg3XW6NaBh4`Jp))hH;#jFKe)`;53VZh zn%V|0R|RS3DTZ9{i)q!>7h|6q{3pxp+oag7sq>$8rHF&hDh-Is3MoGxB;wUfjfWaa zGelZJ=5A2vSL`0I*gzi+#7Cc!NLqL0+S)E(hn~r8J`2hFI|7n=2d?#bz89o5OxlFM zI#0d~d*ANqVp&TtZ1taY^%$zCfT8m56T^Rj42&It-l9tjXm>;mJ8MA6vExK4nlC9@ zA#7kC6JFn_#E>eARs%b_8TSyjQx4Pv{`eL2XZ(0r1KzvOzE{pN$(xLU}?t+gKjR0~%dm-kIqS zE&pe}NzDC7A1E-yv@kq`nbAkMHha*|y;+amo>H;+3?~A}uKpL?FJeF}?gBJ_*pR$) z5h=q?!9Vyn2m`}OFAM`WS3XSe+Uf2<(rIuz*&t{F!q&0~BZCjq0lz^4g91v_=t&?4 zK_GWW-1D{(AL$m;`Iaf0}LFxqMc3>qHi@ zj>er=Jjv-0T>7~yv*e)ceUDH@v3nRcnER8mC*=(@(C7fGf7XVtF8v;f90iyCvz@vk zm97X?;mW4i>58zst~b>V;o8)=aak87V;x_LP-;1Si#e*dq61n;s*fCi&HgpmznCh* zPQ?2ervbUMq~in=-~sL@#`C7zLn|Mu_<%7NBp7MVua$l@<#t0L*38Big+M-Ici0vZ zi)B#GWY7gL(D_;HM^BkpK%=0`7y1p+u8`&d*gzwa zZaw$hwb2csCX76 z8RQkE^V*z$a#7>$sazMz$!Y}fPE4YtdRc|NzH_)%*QWdy4u0lNMe2CZ{NtI|j?C!6 zsSPVf)eR3sU1OUG2f87u1Z-%En=$W_(Z$t2S1%npyZUb41#EtBv1z2o=9~WUXH9#4 zLTs$PLWj&_!)tT?kwuLgQn_mhK>;>aVXyfD$W5OhU~?W)$JjJ6ZvvYa@wwlE3fSd6 zHJ~OC=#)xybKW+yg*>}oJxD<)4HrvrlbJ1!L4Ah(KwO#$An?iFb~r?wlW}bjY>erSy%5TTyn<&vi-x$r*neXl;|Mi>JInB0M+BEa5&?F@Fj~W z%RgZwGf!#@cF(^d{~&Y6wpy(nOEeUHOhR~~fQ-9!JDF017U(Osu~{R1Kl!0TOM>{W z=QwhTFz85=>Z0yFB$vs+R%`O!=JR6&R4Mk-uK5FIIlazp&cO_nbs1XRA=P6uzSc^PeVuJ%WU)fQLR0R+r!p4TVpH?`DO4 zIy@H$F+x36$j2XNGgc?=Yr;Kw&hJDy!BkTreV__`09$Ht3K-57V$Tm=2^f8oNi~=z z9StlI=kETXaSjcZAfJ@-nim7OmC9fsoD?6yKtTCWO~(=qmpY!R-p7FIX=>W}r-2gQ z!9N+d+s|lFQ`IN!@~!JN{z0uP-9`FZmI6T# z>{JA~0V?%whX$yFnj6+ZPlR>QlWO;S?ZmVya!Mq85Eaz5rnZj72f3;D50aY(J@^!; zQ$CAQAX^Xl3V@Ud&wb)^n1i;~&qWzat*%$#Fj(ghNJ7BVlgBCJnkY(a?=2c^{h^KL z2Mtb(6h1PD$_vt3zh}_Hl~M7&82fai|Fp$_+RW18PTzI@vr1?jS$+Z0Qy!q#p_=1P zte(+krdgJHZLf%-its&DXwSw$VOFHTnWg@DPL=lqdm_(&0H!WZ#-YS{R%J0uKRDC~}|@fdGtMk=gF4AR)Zj?(+{B zcY`GN9P?VU9vQiSE&f4z)vAYUEr1RKVIO-fT7XK|i6ut1^}6@!Zk8Nm+Yh~R9=dw> z1&x(Y#hUB~P1-z7)H4!6e7rs5zMwFQr^dD%zA`g)DDVUC{DeHo=`Tk2o!vg4HGDMsB<$V=w2fOL0TwBfmyOo z1YaT&WcWbHv5+H+iSXF0En8GYG@W+cPZAa*lqLm|prSO@6O~p} z4jkATw^(Hq^|!h0RsL|GrLC`g2L zfGQ||egqV1=;f{2wccgI1RB!61wVikoM)BiM>ru&5ngy7{bG3cZ_;g5nsS0~)lSqt|QcB?cMiT8A!lm?3AaHBOq1yfGT$<{m9m!EQa%sYeYx|wB( zDBg^Kcrs7h^ue2_QU3ty#D_P5O2N&ioP8eNJO`jyB4@Nw{}`N7L4MXfTPs12bRs3v z4YF*cyHQul4+mieHt^94L{*^}xMS}$W&wg^N1wD~H-&Ul)Pq;RxK8iQ@T}Lp$8pF% z$OIcDycJE2IpYCiLb?oIk5$>YYA8^MXj!lgfg}C@fAG$fAZc3 zzRI%vA3uYkL(y|otSP7m-EvdRp;lXI9SrR`b*3x-EtOoUGzDwA&G^{B!5PWvFr>1g z!djV%p+#m&g0(SVQ$k0iP7PZT`iy~2P#F;J`+i^dbwB6t5RpE=KCj@K(GQ^K;< zxg=g#hZ5q-7zuw_P$S`@g6Rlll`liEvx|^FKKCa*4D4%~Wo+7d5%gg=(=hA7HnSRn+cgIN7 z-olD~Dl9r?{KTvxgt)zacQ{KFf2_HF7Yqz^MnKgeTB}fx4DAiPPva<$ggf|Dvi`!%(y~rGc`Z9cTZW~B$|i4qo?Me?oYaEGwP?`{ZR6&#P&5uxt>M8= zHmXZdfn8>799X%ZjYT&TFn;gRMl+N-QKYAyWcqU4!52LXMJ6yXmK7v0@b(didVR|2 z>jWik@+k1=c2c0F2|<#M=g5@&BGy@_M8Jg%K`=rn0L3H%SL$~|Kv0~ZUZFvV?>v&Q z5F$-8x2ugc!h9r-2G^3Sq*Ksv_5}C(M9(Jd&C@mlfXS#22L>Ep&s@p^fC`10X)_jO z6fufaC?up!@U3+sVKdm}&&$1C*Nb#HhoYcJicl1kXn8?~fP!^N0&DU}0z||dU@K?= zh{+>Fg-B4~(=SERZYd0Sbw6+?GN4FPypeW^D!`ROn2U752AZky#adjI6ekf(x+&mQ zM2s;B>`R><7w6vj7h5|{(y%MFkx~HS3p8%J(z+%!R3u0qiv-DFkv9 zNS20#qvjI{MsL#jELa3(83~r?a2bCr7LI_MP8%K2xWEcRl6cuVf3%PDdXyx1DVeYb zn>5GtXk)(SlaPcmZ+;%WP!)q)1=5GV)qgvfng9y&a^v6B42_rgbySU zPrljVk9MVh54gc^vuafVY#t*)!2$sUQ1ViHR=6^aC7o#BFk#E7>80nnzlgDn^zKV^ zTYwc+C~b-s8c4=HT8P4#CZNE0U5Pk_9_b)bw%Q+kl|3X~3R4#zJxwoVBY!C|ipEIs zh&Nh{GabJxSxY{|m*G8b8n|3CnamHGL}h*7IEy8vz4XtyiV)y~DH>vnMPnuUx6a20 zlyyapoCb2m+^Y*Nm#52liO3h6L0waatfU1(vw+Zy!Kl0JbC%iV9qOIVZ|Hw9i5n$i?f*r_y^lI; z1V|(9B!lI2$snB0p$Kj9Ao0;D+^C#wh>2>$TQ>2UP@pwN?4}+amXsoaC3DLmLe23Ztoau9PdjyOj3}6jTFp zM!k*tSwa*qQeVnKL})__Kt!az^f4kZDX^r5=xh}ngB08{tfA(%-i5-)=>jEFA2?(q zGr-jl@sQ#{Ldx}~Y03RW$0m3{5VOLYGcs|!*T&c`&DX*fOV?tp0l$+#)@nkN0VK(U z{P3_XL23X6vGUl8f=VIGc?C80J3~OyrE&BAK@%4>{gcmFqLDO6+oEYxDm9%qkOrv0 zV?Oz``2q<^jgTbhreAYPsB|Nxp_B61Kaw92F>q4A)T*_7X(7rNXtinu*Z`hcwdU*> z94YAxXhcZICs-os&=EjsBP3&`O~{=RMPo8_PgYX78XiB0z3Ieyi}a_82SXA|Ev!P0 z82<syR zO@z4A2ACur;!+{vLO_Jb820qFdT*stxTnb7X;xmmiBKhF$MXWIS_y5TMgp!+8l(*f z@ikf_4RACf4XBU^SY9&1$Ea~h1c3WBF6j^-V0_l9Y6R`>s7YimcZ3N(Y=Tow(En-6 zdZvrmR<%-SW7U2()&6o@8VO>$z<%Fe?Zr})6DzpP4FcX zTw#I=6NF80z6m~If^#IG(K#3GH#2iSc$V=84>a z^93hwNKiiEUz+n{T)d1lry_L!YSOHefNwv885Q@B=Ivt=NUaI~Hs(u4xaDWaR0*^L zov&D;Wex;rn510`1|lKhezDV)xt!Se0`~{P-?G$<5~ytxmU%&f)43U4mEZ1OXuz;` zhP;&Oeei7NVOFgWvFJca!!gl;vfGc0wMBbNoNICN6BhE~65=m69336F?e-)1{>#y} z!|Zr!^_cuD{p^+uP5qj?txDJCEC|KsbE>sV%iO-i!-nji8)#o{X|E?JYOE( zL~&Vp)7v!Qq5}o~JGZJS=g}FM!j+s?1#xjR#3}RBL*6AJ96}PBbz*QEDU6V&h~cbN1R2PkhM6lasGaj$CIf1@ z%M#aem-y%WjBfy9c5sIR)4?&Syk$2&jT)tapweuFR$RdH=)q*jRo!#`O3SOG4XE+~ zkgKD6EB$vqgm=-s=lkc}X+AjJs{dMB1#Hx)GE zOKenu+l=YUp(il(tk)`1KMZt|CZL;+Bk%mPAF^7Ib*P|M62QIRWDm><;)u;}jbbkW z`379bBs`NE5*k4xB9Bcf%Fv`_Xn10i4dk32a%f|Bge5zt}p*|C=q892ivY!1IeLrK<^XzckFys}eS3 zn>63ZEjqs`A)9{3X%#HRmMgi--1;j>7Yigi=dN}74-yYzL{p(oko)+g3%WPmN1*Lg zq2{-j4EpCRkviTZfn>+yT`7Vy0x>|DgHCP8T%8GtWb9XW#~%zkgh&C7nSn#o48I!r z&Sv+p*`{7{DV|`tf=hcJkj>UZp>-%3jQn}Xo~A1NP3v&v)ca8v6wq_NjzS=`0|2@A zT0BShe#PH(i9AfNd!@I6pUa;2&siy5c`mxLj%eblqLi*Hx|gdOvg#=$Na9Qhap`-O5Gwjmg9u>*bDBjkw1D{F4~>8@ z5K=&V69R&TCC!(L{Wtj(vHvP5B3sT-5jl;+IkY~y_b_-#epPC$Zczag7pjxM?5d|g zF0}kQS`CV+m+-#IkhEP#j(Ryso@ zz=%lXS*ut}yW99NJKhla7(?SlkXQwW_66J}y3$leb<+PR3(#=gLlX_7*hXjlws5R_ zVzehGGII5H$A8-D?f%Nv?f#>33)~fdeS2`bKLFXu@hJ0e5BpE+oZ>HP+wT9;N~9j| zIx$!07R{0FYNtS`!<2G={0q_~&xc3F0!0f-VI;^FE!Id8BSP3v1vqkG+zz^>=Nvtp zAf8j;Msbq|cbSm~Ia^NL@x%-wnuoiYavCV}L`tl4I@*y0ncu)-hmb$oN`q;`CMVVl z*LXPgH+BH=CcD7C^%F6thC3ZALwwi4yDl(Q_N;&YkMQ7>ZNKGeXYd*3X<Vaw2?xohQVL~ z_h!GLa-j)p#tBU%Q#tk`_TGe+y5BuVMwxLFG)Z8Q1yiCt)+PA*J%CKU({eYuUb@h9 z{mAYNG}Ydkj-uMhN$BBd%JA1(Q%7xSVz!2@#qP;nq1qFHGaTW`KINYF4N6H)@r%8m zqw2+$%8l;RXG%cSM3YAr zSYwRY<@Mhfu-INC=y{L;z3wrML{cb(%zsY*(i|+7RwECmIfwwFj*E3 zu`n%t#i~IOIozv|9FE9h}&;*mWXmTk?xEgXy3Nq3` zJ;EY8@dah6VnzgIs=*WD>sBoa@?Pg&kfwr>x%#D&kp&v5Vq~F4s$H^4Lb9l|o&c7! z0(+tn*eVYKDM@bG=&qU|l<eE;pU`WwV3yglM!F#uMjOZtl0>vj;jE!UG&~`GWjjm@y3oA%m z{-z5#NQSa+L5x2>vrqWrGrNR8wyzRdIO_;GE*OQ4w&1Lg*!%O}ff$bn1DDztoRYZ1Mt@yR%(eZx%etj8`g zD^nt0go!sn!=)r%>!0^Gg_r3>Fq^t1{e#qqQ@0gylBk(3B@k!gx=6OtQnQe!B|;%j zK_LjN$lVDGGP7xe4VlY!cg{BkZVIZJ$!pEy0ieCp!u?Yb zsUQI*pa;Yj$UH_YkO4+ohzUUaF05voEUacr1FI!U6K>0f&&x*5C?ipCf znK04k8T$r2TtzC9dJ(B+MCwHZR)wiI0>=stX#QnEBU(XHCQs8yAsim|d0^eH2u2an zc93BC)F+F|b2`KE>L61FNdcU5=yq@bBAl`ppxZ9}utDWrdQ8YJUJrAqd!D@J zYOEI478{ST8`e(A^L2C{85@QxW`JQVD_{*cOs}{j62oy%SpQ?^AD6KzKrNy40pxLz zLmU{Pi;VS;*MjpBDMiHFA~VyBFM{)seh~@hXrzJ#nBK7N7wgI3R3?-!(0ge?wfhWq zmmBeA!+=&(zhUCO-C zJ%{<{d{&;YL41Cnpph(Rg#_^kd4QP#@0bkRNSt5YMd-0c5CvF~Ml*#~L_jH^P$(Fl z3JL5q6jabNUAA?`_qg_TX0tQ+bodYJ{%n3UX?FgDXfqwwg){w!<8)b$!=yOuqYpdA zkaF5K4-X@Ku^WNa2kaC{{qxLXo8r|@F%FenS9?sd2@&fE53cH)nE&2A%rIZ!URNbMF0Y?zTovl_1kT%t+`K7Ki#oLQ|M90{Nk~ zjELt(eH|oCNR>zfU}Shbw~?uVW=I+4KY<%SV?)^DDREQ%Y*%+cR_(A3apo@-XDaMIhqZhdZ-*9bag6yU6sCY&pNjgs{1#_ra?EIionhO{bnt0Yen?Sc7VG zcF;XjXA2}ZW^RQHU{4pZlc6beX@oR_g@0?YRCl%`_cMJO6s4pqADa~DR#XC4rmRPO(jT3~j44VTGCE1APyY!;3b=!^7q_rb3ZvU7!l5BC^rJwk7OBK{ zHT(ks4<`x#pfL%pn6wt?pHqlq9gU#z1_{)I(kIUWK(Br9EaTi^b5wW|pj0ghILTiy zEd^4Z#2TRAW70!Lb6o_98=jA@s#gd@)IpnJf_HCs_UKs8pX!q+pbX#Hk#TyG3UlKapprvFXwGZQQ{!FNpXZ4*Q#pyxN}I{`99 zriJKMIqlA*70Qjo78)Uh4Q*k%rFSHcVu48P!e{>Y+-)A^xyL?hziAXfLO+Oqw)qHX z1-YM%e$$S&5RyR12kR%%(uErjW?)5x_r>QHRw8u9wL3SwG~xFRhdOP2W3V)oHqA7^ z&np?pi=3b@YIpBFnRuYO;D%x;2|1q_8Gq`LoA2H^9NvwMEV@REp3b7%`aV8%ftQ*B zfi63|ZaI0pP!AZ>l7c&bR`%iblraQ{SV(LCL!+eq;4M$VL$=l*$?4xxrkAA!)W}eD z=xZ!g7z1wVV9)~Vgh_5V58>UJLtXh64 z@E*3T0x#X_!$p-h;+c#rjOqzg-5dv%Zf+PN8pJWwJ{)p7zSEgK zo=g9EjyTF*@Xwa91o+-$9r8Hdt2uz+A3=jK8hZvHx3DgwLDU0{2zV`FLMF6XbknDp zw8Z`5HN-nt1z3g6`e_*p=&@c|@pUhYCZ+IN18Ges7i)>yDb{m+eshvgi-$YvGXPp` z02MbpCBni5#99)9@ocJ6lT!)>YytNPNt!X~-YV_PuoxThy4~G%BB5|k7GSc`+d!T$ z31F+Edp_mTiU+m76qiC3Y;EyIE+)AhI8X5pdZc%k0t#d&rftkk1hlV~3c$KxIEw2W z(#pa7FN%iha6gBFsN91z1JPRz#*hjT=?;gJf*fF8FlI6T5oxpBTY{w-b`BTziy(bP z0Wo77td_j!6wh*SwfH0XN2mx=JV=TM9M-C}R1=*{su4Q{%!r5S%#z21rZRTlJM#@g zLLRXsX%QH5u|SgrD{1oVuw|7<={ko>f1#`FQdb=D$|9`R#|dq1uY-LXfT8F=KINEu zfc5x5U{1*t6fOP0;lUh^FBNRSpP0!-lhJs%{oFPIJ~7tv`qea+xf0ImJUSo@-zqO! zibmV*=t_C9g|GuzNvG^?o=+tyo&l@w&FF*OUg4B&X*gMdwYI1pbpa4MSzL5g4P=>k zVc>>xqB{n0Y#dL^x>P0yBJm4+;c?xO*agXr_BitLW+TU7xoG()3O%nbYeb3|@oI9v zFA4~w8tm`=5iu!f!+m!1E*J{0dpxOGt+k;78N>==>4k@P!=O;{3VK1?d1BaQramA8 zWVVk(rz(kqN+-t7v4YVpnrB*vtazV9phB&tMj78G#L#|qT1hiIEdeViP1-|7g}L=H z5to=DABo8}toRoevE64E%vdRyjNH=WjTn^->BO1u7He}X`iAlW^yYCwF3G~^$<4Gd z#{W-t3nTX!!jQ&~BizZkU`2FGki;5r;CE|t4*{9oE_VkNffA`wAqU{_#L{MtDdB?XYSFgi34_`3|ysMxQWmCRZQ4dT{XmC1mD5+}i=N=2ul-tL?rj`&7iD%gJm$nk8=B-HojCt1mQ^wup`r2$ z5~YQ8MsfY5drH1&wXr5RRswv?hOhi#z}Kv;jm!&~w^%|YI3T2oC$o+)h76d&(7#~} zE3 zFev} zQpD^}C%NCfBP&I9u@%q~-4g18tXZoX5ygGM#|lyHG(oEg{$PTKB}mX$^CWwpP!;mJ zzZ(Q(_B^!>?fCy-``>0Msh9xp9Ewn)U#rjRj8 z6xw9BF$*}Hjt-&CqksU9Hd~Q^Om5&=Vc=2su`1dO8f}q6=NX1EGvJCHOe8~JI-TU+7oLJz{YyK=ec}G!v(@!kQN}*O5`qLz8 z&!G@=KQSatcD9EtL}+A~uCRpXsBPd=PPFG!Tslq{i|Bmu ztsRPrL(F6s0^*eP0jvhQk<%Ag4aTJ^>?=(b9SHj8TuhxqD!CNBM!O3~d(XIvv{J)A z(4b~(jT6H%P2Y+E0Bp{Z=h)cv5t5?Mv0M_#!?7(gi}VJ-NU@l-=!SclpM5Q^<4K$q z!KUtK{ZZ*pvCU3*#&JBu)yhVr07aw%0uKUCtnZL9l$3=pAmc?knGM_Dy!^MX0O0qGBYcu%A7yUoFc*wO~MImXcCfdyZh=W;nW@p1nG0`C&UJ^r9^D0 zoSFU(otenJRN7-qXIhB^i1Rcz_wL6B29X*Dp6<6v#(yI|(&p%4Zm&_MGTp3$y9CMd0RBIsL(Yeq4shMpw?riL1GQY=Py)K8XmCisXzl<} z4v}DX>aNh^li|;m_vn45iw!t%B>41IzGQvG9HGOFQ}gFyO*E(Q{qtwyNsK6ph06pw z-ufXo2wbSqf9oOpQU$uiP`r^&_K^JxSfU7uomgr~+_UxwdU?7)@t}lQL4ga={m}qY zC&a~WE04@ zn?`M0q-eAy-{MH1H5Ue4%Mw%C!dlsuZb|*1gtjdoM(RXc@|iceExYmn6u_(hN*2X} z;(YF(une9G1I#NvK+Z10gN?@BdaBbgoM||;s1zhL6;w%xtCbjHH3+`9yHiI>YvDYt zJ2kZ)xv$T?O6o}S*{A3^3JximB#np=jTI?D{Ziz9cLvQXtODX2cnYO!K&FN~Ara&~ zhxQnvg6AXDgOHv?9C}o!7LCb6vM~Kx^OvxB^7M0gB2oTOnoPDzjPjDeqxu1|78!yD zj74-x0%W2J<_^gP9MQwpXzEkzZwmuJ96 zk7WVoc$Ev#J}c57!hSrSc$%l|xuLXTKMQ0J^M4&hcpY2i9h0o&jhQ5Ayj$uErP6MO5toh1}Y8c z0xnzQwo&#jU!x1OrTAP*MOxK6ea-Sdv8iHTH2Brr6IDJYkiOJ>rhGJ%>>N&K`B>G)$_ zK7*`6{^o}d7L~XE;Qs`bk9{v-CR6#jxL(JynCi0Tn86fIAHw zS(!yBHJM`PT}0y&XNY8QM)NB$H#s#)5sfaYgByI~Eylute8gOnG?(TEBApt61_irI zL{lIxdJwfrBE+kN*EAjC)r?yUq}ONc-fg`f-vxX3MUCnJT#m2crk+=MjKvf3(S6j* zGJA5(*iE&U7i_)Ix!pD9M|bA^3w zR#zs5E*)(p_`Jhe;>5=mF5rq2w0s#}F}_gatr~C9c&Ef6+z1rX3xlx#G~TV>TQuIo zct*I3DX5IQ3-4pOfFTl(Z7DeTAQB>?Tr&-}b zdX^DANj`7G=RSwmO2aL#)+3G+O)2O#8t=BCe$ucpp>&l`E(en5~2pbVe z#SZh-D0_^NAd|7n7%3uD0)&APpNLL=Lgk=gjQ|LAhej&hdwxlIZMBhjb5t+DAg^ZE z2~ddCFhZcHSD{T;6f`2jM$SbTjt9bVCodci1qxTTmcbTRG=~aS?{YN@G z${>A(BK@pz{0l((XMyy?%46pP>9+ytk0{dbQl!r_NXK4KVT^hAKtd9Q(*=cw_8JwP zLVI&HVon5sRP?!ze~qxiE)|&VfdTWBJgg5xmR~f`eN|UbQXboifwNq@Iqyix1_DAT zL*}ji=*=>C;Ht3G$#RwWgfn!wnWP$zxTzk73D1w>MRJ2{?PNxzY?FUZj!A%_@=hd3 zRme2N*fO=#L8pkQy$)iPh%6pnVFY~J>*spXVCo>G#a^dbMpLgDGIU>;g#@W|1@af{ zfsmzmV8)buE<{Bg^$wyIb%F3ir!5^tj@|d>K&}D0A;F^X!sLZUIvTai?Wke;? zgrn`bDIGcQV^CU_8k)C5d8eu9k545{W-P(#CIINr9toSwU18qEx}$+?YlmeSmPsq@ zuuPg_hh+w-9F`p|%N+jCbncFyvUB%ubi?M$!Vw8AC1sb$bb}IudGswngfvjY)zL

^6O8hJz-!B9_;VWcI5g?(&Q6Sye_r*Z)^QB@L=CSzrb>vK7D^8>tE62vzcro z|G?WH^dAi6^t_9}gZ&k+>t75W^xKn@YxMks2mk8siA%vl`Ag@KD>9q^X!FKE>|n@k z{%ZAw+W$uSMu9&x_K)cK6ICz*5A}aEob8Ariot_@YIcC^2M_j5bpfX~f4zOfWlgTe z4|$VMHpCF6X!5D*LH$48{-EDXH_(ygrhgiPhx)TWR5c(05B{UtB_GffJorz-vi!kA z{kzwr3~DFm;N1RS5oJ^UEWo*bUO8j8QW&i=cysU1*&2mSlH{<(jz%U{p_Q2PfS^zYAJ7)|O4 zq_`1ZOwN_|g9rcg?~1o0z5l_v{#+q0``?+(f3T}2XmT5WaA#vGR4BlM{kKgA?~lCw z!GE%CB>f}spua3U;xTxrKf8lr?H#h;rf;%OZTyiQL1o~WTn`e3jb9@#^B=tZtp8Ore;a|b|E|i#bxI)y5BYD*M$*8< zax*`h+Wfb+rg8#01LyL+YR0Fz<=c7#YylqhSF6utz<<>B|Eih4jljA7T^(-pgL6y! z!GnIok>39Z9?DOQ&B}CAoB#N{+JTXQhw>Tso>%ApfCv4?dIF)a`PZ*bZ^r+t>;Kis z;GURXa1nUW-#ouDcqsoVZQm3rB;Y~+sh*!pZG74uB!|!$cql*laFGSMO@DtjmLdf> z_Yb<>>iVDm$=lEV>z=;xcnzuj2WR`cW`G&n_*eA+G684(yHD!zWor4;=VbOSv+3*A zE0^2&y-gLr0O$JI?G5Gd!@2*@+t1}w@vSnTHhobxrGB~PV(zx&1$d}`Vs5?U?mwIQKNu?uBJkk9+uPmVY^RD^ z{v!qt_2>3fE#M{K!M}CaqDmvR>5pi6K)fI`oBn8bup#?D;K9EmT|Wx&VE;&zeW}5p zn)*NKZOiW~BJhy@q_0XKZp80z4a68GX>!$nOTokQF_EKN>i;+56Bj1r&G>44rf9|= z&ZGtZ#oHgsmri$?iRU|N@X-cMfmCHz{v!sj^_RUzs{c)XR}`O1!9)G1ldkf}z(e`X z^b0Hp5A~0>=gBv80nY9JJA&r;@n3cMzhgsxKoWtof8MdF`=>ED*N=A$^ajqvrf=p? zQ*id*J7)LP1DIJ(t5ec{IXL_09sBwLD{TJzqibr1>;G@;-yf;{mk~Jo@0#&n49@vq z6KDIBqKV~d^9i+o;B5c3OY-ec^&g!5Uvbes;JXh=0MKy zN8nt(*W|}3WMABfPwN}P2gxcfe2{_%|MkS+mD0~_{+oR@z{)MB{WYcE`L6)y=i?gj z({cp<-;MpmFN-;6J#RrQ2%K5Mt*`DgNO1{4;R({M*Q)vY@pHxr|!L2 z0?WX|^U+tsBbPV0{5pr;|CXEm>+XMe`-A>_;^jqNiok>a)z^7c|G|TQh@U-OH{uC+ z(4Tls>G^MPy}vYTq)+_GdJvU2kh?? zEuYDUi^|`oKbzeV)0Zx_@%QEI0zLoW!GHU@|DN0Q_to-*E5Nz^zFt`?{_#oPezxzr z*`FGLbN<(F^i>Bnw(;fWVag@}=lA>d4UsqfOu@N+UEk0fC^B%aUnL)k0?fg={H|~8 z^u_XkD=hDu1u)#R73|m3OD+Nr>C^X1a{fF95BgQSuHi{D{=Qs4O~HfxYWE72f0N7U zMVB|Y)Q;+ZBY)aJCc98LZ@#v_ezwYziW*#hfD?n){-N)u#T;q^9_mkDf4`SDBu9@^*qTcY++{}(*yw}0z7`2k$f;B>%~ z7{9xhnfJe0ABn(2`R?zD(F@i8Mtt3WNx*}DsQV_@*HiG|f4zL;GRyDj?|X8a{ylpC zh(1OE9{eZv&Qy+kxoQ9IO=YIM>e`Jvu&Uv>lX4!GnFh!Ocse0m&Nq-&S9cK+fo3qAo4G=l_ z{@)SGkzfHH^c&pj%k!z+D@^&D<}m`V>f`a$tU^X-xq@$ZNid0~o(Q)Y>SAYloMz>}6%sJdk8tg02R}vOP;30qdzD;HjH@IA#qw!B8 z{d?Es6h_+Q*ZZOipMeMa)aEU+-*TP3D{T5SyPz6i+|Luz*V{8(1Rm_y(~~X+5B?)A zyHE)@x1W0VB=!GH{3p-p_A_g8)qdvStpAhOF3I9?h2=NSD(-OKP>8QO$MpPzv;C@b zPASFU+&+|C*3e`HmoLzC1s9+9x(uBCTc$5RV9CL`em`lx?<~NB{zJJsK?eLe|NIC2 z_4KKW8hor)AY<^L-;mbVHtR2dl9l{uD1#I{=&z?QTm~M>N39-G{Ra>Bnf)O}lgsAG zIoxv^@}KDjFaqcNpVG~*i%ooUJ&#Mk*}oN+{oh9VTD{E1?@tC>VgVorXa7IdpG*g0 zg0-;e55&u*EQLSs%b)FkYA{vfhX|bg`!szY5(y(2U%z}dd12b*H`k}~)U`u+E`J{`hEmX9WzrC$6O zgNO7dbbbXx3KQ_4f62uJe7cI?s9%B^c<^r-UsRDCoZHuTioDC8g^B;p-fX5mQ2mSE ze)j)6)#Vt}{(*D)?=tDf;9Ni6Me}P?BmrmpOMXra08(&%|G#S>V^jH?{B8F&2WS7k z+n)aq&i*5=&;S2Ry8QLmWn@1%>-TQixg=F%8{d3CpMZz_iC+{oD7ERU(I?q&xoA5| zPvziTKKk|*Du0u|xqijDzwGVj@_FWnzMmy(@RREPmAJtlQak}?`=8O*ySUVHeZ7mz zEI+Q2ce&*!G%qaI>O1#JZ-3D5K^;G`{FLS~c<^7vPlZaH*!bE#F17qweSu8|&h`5l zoxRI#{v{V3jA9j+9gNR4_LuQ%^#|b1`_Z|Jjn)2_)cLKVMx(t$wB8{CvII z8~~n~`0p|Ca})nP=d?g!xgK6S_j%ra&i_58gBn@>v`#;^+!&ZxZVX5*@9Fe2%Wr9( zTQ1s`QnIjoOUHMgZ|v98H!iYVweHmZS#H{=#Bx!0N=;JB_3+hY;QV~PXa7*=xOmCs zHojUNC;Khe%j?d4fwBLt_D=-P^;aByUkS$G{Qi9Tn)2hM%5x4(`*liM#`)a2>_x)?m@XYL0` zz`6eRz0Es4xdl77`OD35lzw634{mA|B5!|4e{gdsr|2T^ zpdU>R$tElY5B@8;-%?Q(WC9-iv%9SdIBle_7sxX3px^GU`obh{#HZ~~B8Q^EXO~qI z`zmjLsJ~+EqD&?N5BiI_sglRw!G3eUK+@pT7v%UQwVYO0WEPpt-+aE6gNOPx*;YO1 zqRD0Ta_-gMei2{2K_c)_{*#Fqy^#Gj{&c8XfCN1FS5_YKUux5z=@Tk5aBiQ?>)++z z?EhOdJ0r*61vu9q&qX8j8eRWAKUNlP^%sG2`QOsp%Us-uze!UNwU!Au`}daIJViOA z;I;nKzU-c6Hve07+NFZI&3|+BRz_)qP=B>QcAbALkG;Noy>GBN`X{-ezqeX&I-2j}POmg%1s;K9C$ zSpayQw?Fu2e~VpPg%Nm&Z|+x!!Grz#TZ4M`hU^Cq{@dSD?Ni!JfBJ&3AzQ^oA2tUM z_6t@TP}unQ^!Z`#^``vqspF|#1RnIK= zWF~*LI7@OlIG5js`udOTxBQmT;0@k>wr@kf-dzOF_LW>V05Le%kBx0QKv~QYCE#2> z>hOfpew#k6@5v!p1|IaI`x}INTyFCx{>c5cMA1lJ?%pN2H+uVneLMR8hN!{y{S7fV zKc5>r`@`E}4mSZ0{wcX|U~0L!-yyTNiy)@zmjj(<(sdFFYo6qz{B%l?w@dP^7hwUHBT-A5B1M{ zUmSx6{mlIi33#y2-0zS!;_LexvSxgBe?#7gKiu3BPe{?^>i!1zX7l{3(-W!x3tsC# z9MTt>p#b6)T<*U~ntZx1HmIgeK9e6%W#F~{_5BQaBmVfF+<;hshv!?}9!6%|@9nSc zqx&612R#B0^<$#j&lo)DClAl3 z9GuHXu8oy)h0VWephXG~=;wda?tcd7`aygkUvM!v`;WM4A(AFnU(lt^^ws(JStI_I zI$LT!vzq#Kd2Iu-u@m2ekG}7O!m8V~6BR<{FDK-da;K9Gc zJL&<=!GnLz{UC+SU-VrnMNWA8L;Q(8A1(q9_LujEM70TVGroBGsr;MqN0Y5Oe!7Z_ z@j(V2{7ah$M1FH)yY_1~sXeEouuIO**V_7RsCI7JPv?3fn$P5N83{ZgipHMqVXB?o8wx6J)0h0R|-e$Jip_H+H>&cC;B5bv zIe#X$+}v-HfCv3bF6wt`^SAe(G`W~vp#EPYfA#r{D;oKm@4p^0_S^eUz=Qp}`umO; zoa_IVS>H&&xqfYxr%Q|d3F#^>CV;a>{`!8C+~&Vmzx&GySlIOUX6sv0=3)K(6I&mP zS6sA$%g-lb@L=EGtaDfBpEUUy`F&Xm9_ruT>}>Vm;2&8t{>}5kfB7md@-J5K$3%Sh z7XAE_{Wl*I@gwk1e~I4`Yvl2Y_!}aAvV!+T{^=?%;%6)PmWZFP;v#;rf^UoX?vbYb z+ai7h9_l~Y|GX%m7+m`2dGQ8HR>T*Nze`u-KNSwnR-``_{?EZf`zq!>N;M0c{*bPx zmMfT#n&)30?nm(>@L*qgKagmFVjEvCpST1(JRihwP3uNDwdqg#+dG5W!PyGFD|(oD zGk;k;u4v|ecYLH%XYf{2{&c_4hL|IZz(e^@^#@2XcxeC3_uC10c)rd3L@9XiFL6xS zRyt-je{(-k4j%kVTz+3sfb;u#ySCi_dYiYO>(91uO(_srF6ws4V{p!Ydt;l(A5` z>~WK;?-PQ>W^rf%KDL5F7~dMJhl11Z=lLI1LyiHPVOk9yWFI|Q!fovys*4p8mPECqwS~V zle+SfL^t^eBe z&HYU|c+hVk4o@lV2M_)e@2<+sbEf?FsKga3$M7kdoyM*Nw|p=iXPjURsCfm+4$ru=6!c{_lMz(fAD{(b#ky-6qr z5B8b)@dTWo-$9*o^(!^;2N$(K2F~?+&^w_7avR?~9|btq&jCHXY6H{-Z$Im=zka3i z2M_tn#U;`t1`p|P4@dHRj|80kM_(7I1L9Mgzv;haHvQqo^}gug`{Co|}{ZcV_oxVJsh1&lHSI2X@w2{9azh#a1>hn66H@WQHyQ0ZO z@19J3+}mH(evMkPrWzs3eUhp{gjO} z>6hF1qxG>o!m$7k`qRg|>I3PErv9tegX{+n@yBl(%I~LR@KAro$5s7F8vLZM{-YjTx94j%kFJ$h6oP&D|t>o=qZZ};|x@|$)iBXL4u)Zp|5pD3RgJosn2sa61z zMtr@&IR&rvpUz|xmNoePY(waug9rc3dbb32MT46I%AWA{hx})Kd3>vj!0YtysTvZ4 zhx(~zr|J2(>EDs7(^UU0r_<$?{owrmcupEezjJV|f6tAS`K|zG{hpIA?=r1R`uTrO zolZyfADrXg?r8;LaL)g>z5fcF>j!b=fE1kTAMxu0afD3<&i=n`?#Ie)`sMw{!huC2 zzV6?;%ijK={~hh12%P<|Iw$0c7@YmHdrA8zvE2AC1?T#=t9NI+44nN#+jC~}0HwUa z-*-Z#C%;XvG`-^O=kg)GEk6*Az}f$F`?PXU3?B41_iH8Kb^dyQls4ku6}vB} z|7-a`FJR^1K|i%RPW|5|SKr^dtNQsbH<3*k8n({C2=i036a0DLoulRNlh*$Eu zf1H4a`a$ufe^c<gyfq|9}Vm z)$K`C{@|f}h>yh^BDdV!k5$<8N1Jka*|{f8{g;~$sF)-0;2(Sc6?o8(M!)j?n}7%Z z5tlQNDLA(;d!~KKESH5t`sLuEe8t(tWi2hhgMaD!!1BL`zo)$YA%FF86xk0R(zo|t zfd~8S{Z|b>ot+UaPzuiNqiVcJ$qbzJ8(s;TS3h!aw$B{@;tFuqf2g;QJNLA=zvi;_ zCi}rd{GjGJdJG(5Va0~F-zPoyY^xejOv;Go+2m93I3H5)#!}B3rTe>j; z5BBd~oSqj$u+-+it0%BC8=qERbP7pcsSK z`Rnh467b-kx@uOnEVc2?`AwP4f4bZ6ixxb$>FeQ@E5Nz@)aLF|gZJp?pSU_;JpvE$ zW#@;Y$KY(=$c$eSoBnO}d8A8i`sRMB44muFXm?XRAGyt6_@*?ku=$Vm{%rTGuKy$Y z{5C2h;x7W{@+~>DGK|54e#B)1ku>>4F0rKzUVfimSCR}o_}BCga?9(em70Z3f4Y7_ zZLxZ-S^ch%aYvsQ!a<`Ht!QtNuh(;l$g|^-K0m%L)`(zFAeP@Q)Zg_{ZGulz@l)>Ff40 zVg)~4!R7cc0}uYA^WWqZxjA_7k7=I@@SvYu94M{mnexBAF+CNmBm2RF{`UT-CMOry ztMmzY$p5xJe=xOtR}H^h1|G`COd#ao!G3*wvn#-Z{-ZG+pC}rMTi*UUzF_2s2t4Rd z>%YQ1E(QC44IN+<>A=YLGcM{kM@GMoQI?{Ch*L;axDKk4D38DG!PZ?{spH0;L zo^I3FKbwft_sD+mU>|WgzY{m(%g@_f0v_s*-oENm@SwkWe`Mgn|1anR26L1C^ZWYy zh60@559amhT;JQz^>=cuF5B`~1kU!Cw`*<8>P}V+&ia*HwxJ0)mmgg&uqky&!P!5m zb3plLjr3`RCfb0!kv`qOBups4*}oHWzmnV1&;MlOxQI>mg9rOI$`5dBkr+JKXS!Dj zc(8Bdjx^t;;KBd$;VR$-|Q=l^i^jufCqo6^-<_cIEfEZpYhS+o$h$ ziok3C?2&#!eHS;l-d~@9*ZPUg83*rYdbICHkJowMtPnBAJhfc>43S>6@ zJLL)3wLlIY>^JMz1$eOU1#^J$uBrboYzXgC{RijwXPvVbi@~{kr`J_Z>roEf$ z6Ymt9{X<+WQD@++|Fm~UPCvRFoXdx9uMmS98voe*iIazGCHK7jK|kVG#s1`I1(!R# zV(_3J9pAE9r|uH)V4t~vD+TBBGt)mVYsBAB_iyD*uI|?=z=MCx_{yvgP9_^xQC|Fqg+ zH1_rf|I+!A`vWq5YPHPx?pTK|i|wpf5ZSH@W(NKLHQrN1x}) zBO=m9e0_gc1|Ia&)yw7Jp?u8wECqP*|71hG{@v8uFSuNua8Z-X?N=@auk+W_3ki78 z-@HIm@ZjI_1tbKsW;@r$U|GInUBJfatCBIO=Vq@^& zKjLx*D`{|jzggPIU*B(*t>AKjG;gLaujg?Ecx}I2Jt05td;4qq^!;WLcqm^pzY;g% zPv`|**MS7Q_76=EZP(?OHsceoD@oRjzb{@NE(Z_#nfuWSoBsYS+G1I!@9r4;_x1f~ z5qPMdG`}M2XABKLHQ|HvaDPaW#eiK2!dCy8I&Wp#R>uD<|k<@Sxw`SUo=p zc<|5OSal#%oBl|3uU*#QXczOR=?V$oZ zl%IaQo%>S#{HwiDluQI3?3?Va%RA;`@Q}W4ep~_`{AcbrOTmME)4m$NW;Xt8>;6-< zc`gSJ{+n${>*qTIXZ>F=>rc6juWnDK_RsPiwLRat4|w~7eLHe?i|Ri(m){F=@s=u349@;1 zE>{1k{2TG*=!ND#Z2kik-DTkXe7&IFp49&Z5B@jv`-M$kP5zJpU+(P>>Fe&Di@<|@ zdimAG;35B#ixuQ#6&EWs=_)Sf=du-CeqfV>2mMS1Ex@^ctH!l#0KP((|J@UvhsyuV ze-SwQ=k7b1_%H_N`f*pC{zl~w&iR|;A6#nke_wy1DoAFzoE#(-a+CgxT0K{Qv;Hqy zfv@!T^YiuMi-)FP@+Ea55jdCci!ag!9w88evwiQcqgKBXaL)hz9W9Vrenj)kq%Tyf z1alK#s8;a;oXh7YKPDRQQsRT&e&)aMBbrBs|M8FiXq9f;Ke~{A1q7n#{zKD84?X{I zbZA=Moitv}r_ATzpUv^#ut8r8M4S72bn7~)x&Z$y=G|)-pE`ZxeDuWm>T1Fz_{*60 zrcpWL7vbLzZ2p5GB|hnuyADg4wZG#15%eccN0LNkr@rK!2A@X5!S0)*;b>O!F8F=) zyZnm=#67D1eGL9N)xQxhVK3UEUT<|V&m271PimFVL`0t*moMgp&7THC(P%58eG}Eb zho#MbJfa?1y&`a6_@VV9o#)rr*P)JE`zmig>wjqdXlE*T$MWgJhc@Yd9KUP$>kmy| z|IDFjxRz=R&i23IjgP!Fe)C%%e$T5Pc;?x+J?iG*T)u}7-=Z5k)~}J7WIfq$;)6d) z-NtI&dlgS~ybd^*kKotK zac#E|e}_)gSf@F$VU^+-ob5k+craS;(x$wp{l%Vh@LK z%)blH?FW^wy76+{jQ@~~KL;27eU_d8nv(M8S}wrD^G6qoR(p!q{js^rX8O{7?qEgw z)#LL%-?3QxI#d5CeOZ4y;C1~tT323r0=wXK{XKfjR}b&taWlRuzd3kq|IrgCMg3ZU z*Y)e@gVMldGksM)2jJoPex|x`HB1SteZ99|A!Zf2}`pppAiX+o9RDWy@4+H7tS2KuHVN{ziC{tNAJHC@kR6ImMeIvKF-u}V^N?r(I^eZ`j@QmD>wl9=_qZ{5oxiI7Zr+H0LYF^y?f(-;WC1Ok@rCx( z{x!MMZ*A`Fuk};Sr|W>%_McP+bemiyFm7^{|GbgEQr|7W>+*T9Biol{BYo98xPwOe z59;#&CU1Z3-&5l4Oz%JN+J0aB+<TFntwNMaOEDi0I%OKN`1Ek56@4p zKV7H)pT)gG2jHRq)uRjh*3S%P*Jstj-;NTzyDVAa#Fh5Hr)je^=E@lgpBGty~p4| z|BBO*TI<#D#m#N{f%~s|7vQ1(R=n;ZEgSKxiobpa_wpSy^7ovoe|0nB+P8W8L;c+F zd;|BUb=o-Q{JRZ4q7|?H-6KbR2XYKv`^R%$bC`pN`m-_FICgaX1~2yP*Rxta$yez_ZS{c<>!V(r_#{h@p|sdmu+x&7#X2mfzQd+Xiuqq%-H z@7ry}FZup0+Sc?$c{J46#;5Z(2V+_lT|ZmhOf&}%&zByax&?SBpNi9#ILx~(8|jzB z+w*q^GcR)h9{jI|w{GpPnff1iHN15l@Q{DS(fF0`fAHYHikJ2OLN$aQg9rZw?$emB zj87dHp8r@GzwF_7fhBmTAC&&AU$-9z;GuqbPEV0P7-a23-u}@3iLqhXL+h;MTzkoW z@Y;SlQ2s)BXmTWs&L$IRFp-+osvQ^~ZU5Fp2xuhOR*tH$(IHfhjV$*-5YiZAce;zAcZ_^*mz@v8qa1`qYW z;x}mel5&{L+#J02Z)yLnaBJ*hB@feUZV9gavl(vPIsn)9_3!pJ{I-|1@ACHR_&ed$ z-43|cpSF}$&Ck?zSMt5ylui{Z_tlKSb^d$%ch3)J6M8?)S8{sy!~ctwd^#M^vApHh z;w8A&zuwhzV0kq=Twcl)y;!a-tbN#&KXty!1Dm-6)d3IXL;P&{NnBOBRQ@aCm(!d4 z1dUrbr$1l8%eb7!VnzO(cG*5J!9)EEoyXJFzKMgD^!t+wbn-vh|J_ad%chC*=zxdv zFViQ^O>lPwuWW+>V{qv|w!PGU4lecg+%GCFR;0hTzdIX1!DSmqCI{f5eJ1_oi8O0} z!`mt9aS< z!m{4Ms`M{*gN18<)7!7|zt{~HbXN1r)WB8tb-|T>7rR$@&)*na`R`)6Lgg=pn}aL= zT&fP0tURy)5B0CK|LQn+V7ZFlI2#N+XyI(&+W+e9SLr`_F2wJ&aE{*vSNfO3Z+Ljz z#*x4rJk;;fzME&uCCr=DRJ#SZs-GLYxoKo`Dy|)J~oO=jse``hgQ+&R( zu>)??C;oW(VRsi?l|RMjOC87H%D)x&mpabDmHptSPoH)RaOGdmFP|yv|4Z=4h#$NJ zzearRd%XRt(l56@blUlq>%_a@)<1MW|p5y7srd{i^(^4)UR39dPBJ@o0DVTz|Sz+7BMyFJ=7|2a=6f#h=ng zJw1Oez#Lrpk7mB9bJ#2UM+kXfCv5b@~T_=-@N@H zeQ>^1wbQ~cV^d=nJoty=U!pU0xq%w5;9WW}h539%`g9`s#_5@#U|E2N_LPv7&id2a20_x4Nwi0a`w;L<-OFNc_vyz7Do|NF(c^3Jnrfo=>Q z%GdLAqnTg7n}Y}cd46#Vw_+|w`b5;E1YTlHTxi zmVeJ*+`0Ds)_&wq=dzX;|8>A?`@wOsa~HgRe!%_qBsXr0zwIwJn}gTogZKmgW!R#P zV|`=Umj7PqT`GU@y8a>kJwJ)L_5&^UqkeY48}{${gPptJ4gG1KU)jWr!5jX;cL{Uw zM*YCS1PjaQH1H#0fV>0``VprcBthZ;JlH?2cGj%(y=7}ZXzZuU+-K|c0Ik#D)w=1F zXV|;o!M^go#Byy5I|Rqz!M=)L3Wv7L!9)93@yoRPk0uxCZ?Q7{t3&?iXbB$tU&X)n zG^cO?UfW;l_cZO=e{3?Mi`mu|-hLf_5>A!rfY<)@A6%AW@ZpHsKX8#g&0g>Bu3y|b zM=MQk+!p^L9VO__^^our51F-Vw^JN>q<_}&uXyfQ4uKitG{;;p?;N6_L zP8+{@wi=&y!9)4c_t;{3-HpM6f6KmowL~+iPHvgo^aHQD2yW3xUu|D>%Vzqtz41o) zD)In4lwY;^>l}6f)BEr5dHXe|`dRG|rv49jZC|Pu`>PoNSWnIj?HZp{{TGH&q}|NS99=g?T5VmwSBwO z^6{-E4=8>I{AKjJ{5w4JeCYqxb-`=abkJ%QKbx{?wWS@Y;TgPiHF9XCYM&Xzho+{VM(GboW^2@@eXR zxXvn0IvxS=!z=M6&_FkI49}Krf6o2hwru<8ewGG0q1Fquthh&2PtiKB$o}coAlJ&Dx z{@v=@>+woXJ*y}EhjDZ8V1E_Ad;T)|z>Af+^ac9l%a>@^#3xRJk4cZqdkoJ0 zBmRzZ>8(8UxRjaO^l#DPOGNtNtGtCx-{`kA`~ezzJb=ADrTzyd{fg6-V|^S8xAqUb z{j4u@zBZ!+&h|6sZ?e1KT>mRR3+{7caDKikPOUGW>NvOg_h%aq?9dn6n7>|tbNzat z_6tG9`bw)&h@)PRGr`**~;9{(fry zW_0aH^#)m(^p6}pO7V^zIeNmUzqIjB96fRB!BY=)PI`$0aQ5GkhdK`)JAUfqv7@J| zG}iv1uK!1mA3t)OBU2U~a4!F2ofAhMJn^89T-p!L{yTQ+$nld8J$Urw39rByob5kO zn{$snc;v*Xquz))IQ#ebsZ-F*+qVE`|DHV3IdL!)`ugqADsR3 zmgpRfn+C&25BUl_250@=Le0Z?Kog`8n1i!@Z;2kK1@LO>vU0$p5&v@U?)|5?`;Yo> zaF&hynfnjV4!~dL-Ra&Em9vkm9o7GT?Cod&za_ff-w-FNbsBtYv_IS=%l%&$ob7+) z{%V6-*Z?;M=lmb(MLRUb@aU@%e-6(6e`GMM8fX9g(_7sFoc;62aO7LZxB3K@;9NeB z><@1bM=uPkkHARg0G#XRqmMrNR{At8D!)-G(_H%zZ$ImQ`uz3#Y46(oXU~*xf2#kh z_(Mkn@2=o9{tA2y&i0+Ye)i(Un~(SJ-aJ=cT;k^7tp8~`j%GZ&|12F#R^3amu<<=V z&u`%6YJQ1658E&AbvgiN`;k6PaM2QLY5$LU`?-8PrvX{g&XN{!q`TG~k}^9=QXXzvu76@W!qExUv6EZ?MaoFDZ|X z;b+dDzI^WdnJ3G&weqhE&h_IA9oMx@BkM5!2j}POOm8!KjONx}s75zr{|a93PNMP$ zXaAm|o*SK5iqRF7e}nID($}4VAAqxe&rrYbCXF3tlTqn@x0Y-B&kVND4{7_*u!Qv2 z0T1~PhNC@kpj#K5%lFJ+GTRYlG;X9nqw@&rD<|hoj-BZ~|Apn{(1{nHNMyN+iyK7` zz(e`a&MMwpQ|7St6W;z{A1~ba>|Lk9$D_SbHFT&Xy5J#w>e_AirHP7nt*PkQ?~|Fh?> z-MDz+;#vB{xYDo#&i)Zo#})5_vwh6{+n>h2;9Nh>_UORW`|AogxAAH2=(;!)aRJWt z_iS~XEAO75@^7S1Q)9dJ6Lio>f7-7a|4MtZ|EF~M*CRJC&;bwrp^@ESYe3T@{t@ef z^ZTug4_>a(xiNUqzvh*T=HS79<;L8)`F9I&E8X&7d+Tk^UA(4c+h`$&>zlD zQ!DKKI|mQ?2ksYW7U01@6+e5L>(>%I=vVH|yE39O@FUoRMttJs+7y@nKk@e0`4cZ! z7x9wpfYlb; zeQZrFu43!Le=6c;e+*56>mX4RxB5jq)DEqkL6v5yR$C)z?v;z|Cv_q3Sk1jZ4M`MbBiV+iVJ)c`Js>x8qqhtJ0M5FA4BC2^B~ zHb$}Beex-P&=5EIXL!#KD(aJ}`7aInn|!F+=-o~<{ermF&l#?l_{%k+h)d#@e=_z< z8m^1OcXV2Uqv;S7Xd@M|`z?N!;XrJHw0M6P+Gr4RNhM_prXX zfA9WHU7+N@Ea2=t z@IyH7pX>2M))2SyeK|S3nv9S6uL$~E`qKqH7eWRFag*OpP6A#MH~SISpk}VazyEM= z3;QS5ek|}a~{Uu4F?(*ec z%U!ImID##SYya!{-n}~P&o{)id_1noA^rSU1^o@j>7^U9@dGc2n|_Pq$<)RErR?Hw z4o=RK7gHT^9Y62mdKwOQ_jn4JRm8Ra#hYuQJ@hAT_Q%aO8F_U9zU<-d!O3)FF%28y zrr(=IJbXa<`L7Q8n||Us#JjbUe?dIT2Rw;LR}zo%5oZtR`uJ=lp6kS`PW}(Z&u8b} z^HFk#{vG~<$@t{(&I$Gq0=^`!^~d8Mz1@Kheut(ZuKE+V2~_@Tg8o`Q3I0GLa~8x^ ze~;Vj4C{a5s=uhFzQrP;Bd+!p+?)@AR|9ymyv^zX+=K^zIe?$p>=5mrc(l)(@nPJ4 z$?|2;-{cRKN4u}AAa3%XOkeZpOw`Lt;%1-e?D^ynQw)zn|1KXxzu16qRt?~(esw?n z({un^4&c0c=(A|L>CZ+lutOE+zrQxakXQ$^cj}0$7_$PaN<+bbEVe=h{xMAF)zE#B4KEmHGpFIA` zFANgYT^x&}ld*4_{s&9q+P-p0 z-1GG*|teSu5=r6X|NO}}+Ig#NFKzaC)+*|yiRhPdj#^KGYFa(Xp# z;o;}}H@3@v=i1{fH$@T*yIv4i`-ZDSoLs>OC2^fU?fBKz(PTUegM{ny569CNnExHK z1E`3r{yRrkAHg~0>ci2(N6oB>tNnM5==h}NPh87y=V;XWLDS9u=#)RW;Zw+eQ_x?_ zXGfwJNZn=!SP(b;&#pchyOXz98S}FwZuy^Kg9*DMtp1rJZt_dGWgA^E{`L5FHOk9Z z6F2+l)hX{?hVmc6PsiB74t;ntgd?<;*020G2mNFE{`d`R0NnF~1O;)EAMc?cpt}wa zSxMaNHy77`xquc5$PqXD;AWB!5E0<4>hT4S=La=$9e;M_AD>L0k4~P#jYf8nmp%Tc z)2Vw7AwvcYaVx+1L%BU^JJ9)W3HnF*9-oEC41r(t@F(LJ=O-gwpp`vbM@H&T-0VAl zikr_k{y`IwI#Lmj_Cw{Ej1F~ttck1rzh{K?WqSTWT-*2ez;7r$-)K7gFTyGDWzv7; zzcuKu>3?zbc67Y|=_E*x@+YqL!Q}b=*Um>4b-x_I-=P1|3gU>X{pDEd%r6nbFDl|H zKX5s{(CV4h#MOR+%abp2*`tJzOX4QKc@_l?8sdrk-t$Q1%YR$YU+w=z9K25F$5`bA zenDLG{}h$(Dki8}er1O*xSW9Nqoj_w>i;R`7H5y+qw`gd{}$7#`{;v0{xxx}|6yZq zOE&o7MF9UN;wInZRC*sTz^*Z3%~uCd{z-x`#uyrCZE;a z{6{Bfp(plc`?AZ&^hwu#V!(#D>4(E{xKDo1?&C+^zWMJA`fK^XdnAa@MLZ?PY-v_B&a+mkooTl`dj%<&t!cP&wsmkXMeXOZu*^{q{nNSBX0K9 z(MReqtWXix_UlI{_#Q1Jh79ai6W8`{I9vF#pZ{Wl`H3%F{LysqM~~Ch1?vCr4*F~U zV%I}I06yNi2Yx|Z%m2~n3uwZ--o8LKXT{Cah66 z-0b7|SiKzw3%Ei4Q|HL9x;Xk~gy4FutAv`k_D_$A`!K-3Mmn^X;@3POI$JsOb{~d`VpEr;H6a+_g@;A#UY|?UBVX9MoQf3Y!0+pnsHa zJ`Xong8~KdsK2>J_#c$Swf$gngx>RPfA{U#VuT%dM_lV)Il|u69v&4xdE`f^s++#t zTtX7Me^3)Q`Hm6VWxurjrzLSKzvC(V5Ao#aS&+Z!@!!tV^X>c(cl6hb?SY;Z#4Y_K zwv+s%9KacR$fw}C=}&Pj*Ssq*{`Ya6`gnd#T-!e`)_Yv{z?a?pfsan^VwCputRZgY zhtpf{pAz6K|06+v(@*XOojSfgfcj6|>W|@}gvvhduzf1Cv!Fk5EC1P8aPy$4h?{;m z*k14uS}I6Q+{%A8@$Q`zKU)%y^4ryA|C6SdK6X!@pS;BtXMaYV|ItqQC$T3afr5CH z-^ZSiIlQ-U*~b^tJMeL&i=QJN<-^?UVLSn^2Jv_TUK5Y@30FIGlCUHm?K6EfvD=~O z|A<@p$IzVKKKUOD`bT^ry^Ds=&Wd4N!yjkmFm3@N9dYd+zV{q$Um5_GNVAuy|HQR^ zJ%NLT1m{x~>Q4H8aS^94*^;>0*W(sF75evZ46WY9$g7{_e>~_P`LB6FA>ajZwGSd6 z@66}tyuFC_Ph9N}9QT_fa!dF);-=r|^=^#*0{w}reZW`z&KXjviEIC!;Mf9ulP!rS z@+GI+(4Tms-|o3T9|-d0e2pS6E?;_;;DWTd2go-ctzamholc2A-MbxYT~K>9_I~&pc&Z<86+d&tQ~d$?&(NvfK1<@M ze5wC%Lp+r)Z6Nud4*I9^r90RKach6Dj~~2PNlW5s`mOPwc&Z=b56Ko{nEwz@^&8JZ z>_$+~wio1lNpUn93m>Zt#H{8bu1u_PYtfAH#S z(#HpS=7>l89K6C7QgF_}Z>nDUN3HY2y2n37V2QW^y6okDiogOmVP*bJFMZs;Kd|mQ z%l}N!KbEhL3~T561@UNKkJ}o%Bp&ti_|qplK>$ZQ+D9&5jt_19vjPvNb0~k}F@Ic( zve`Y#pLi_4xONu_8sf2i2Yhe($^AR`u>SkALH{nUb+{lN+Xwv0&#uZIs8_J;@n11^ zfV3j?f5go`lNZN}#DAwEZuXJAoqM>z7R;B`L-^io;)pMaTl*5e;8OxXBkoe+!(|#7(|~sYHgf{%c8G z+XrrM%IuQ6!zll5`s4AI-^1~#qyGPepugHzI!=@?U+;td#4Uf|t^SX=$&cHM=?0)9 zuH}PcA1u#f{Mf3;NADm`FqE(E<*$*a!w;6kt$d_+nZ*r+ribHlrA60<{(mv(ALU!1 z@FoX(L!%%b^^bEak)R|V^Iz!Jl^4(vkL3g0-#)`U62GX3NBd*-m$*pR{rr>YuBiV* zIQ$=d=J=!O<7oS~JjwFE)YJcq<1t)x@O+7+Q4o*iyTJ4*#EuudB%a9sFg=2D#1s2G zn%*1Z5KGw5zn{Kd4e@y0=WA#Tk1zZD68DSsdTQ1XPwX#kBfkIfmxKN~{^8XF!L1Am z;)(w0^eHR*xU3(|z>c`}595U&T2z3ln?G)E!gB+aAlwkGiCg{i+vm1Dlr6jY3m&dM zdHXco{1xXaC;ux!f79>f#Nh~1!z*P4aVuZBo0c4Kmc&iIba4j>9C5Qh@g2koy#>5l zgUiF{HF0a7j5XC9rPz|<%f4;#tWH$h6to3aVsAT{%0>@1#!Lf1&%#+ z&yOpZnt0St_|buCN!-fE^W*%s>8FplxbX-n|LdLd_i=Og)O{%{h+F^Qam)eeK~)kr z{ln&hxViW-+I9H>NA<-#89%9roBRRS=~Gq{H~levOC5lg-TdF4;PT)8qtT1mM9Qxr zZua&2(l$NH^1l)EkN7+dKbsZAO}@8tM(&Z+QU8gX{vmvrW#EWg{dx=kkJB(W7Jk*q zfA6DRxk74JJZj?Fe-gJVsLL+@ZW&xmSOps5T7G+IeLh9x;3UiK~53bDodRUhDENb3J^rzjtiz8(B4ge`%u8)6xHRalJSpnd7r0Zt@Y= z7S<5g`lA;ww1VY-tD`^o4882rFNm9dP+rrPAC$zkeD{tg^Ynb(b@|8Vvw1SVuDUo% z7Wb!)edhS1?%~)th~W>iC2`Xat1fsj+Wu@qT>G!RX?uq?&#w5ajE~E~XA+&40u;ne zKRLQd9GJ^4e}?-<v z!&?sGafieQd8tcpyDt zZTkFK0%!RT>F5uB?48m74dAW&F9W!2?y3D<2gkH?61{KG{}17b|6Wa8_4m`(=pLCZ ziEH@;+@43v8sb`iy>~5q+qDnNe`wHO$Coc*eJZZGh%?}CaTi1Q+fV4FkN%IimY?Up zeT*00!WDQ&T6e<)5rjn?d~ixeqP{CG#H<^l!;09e`Z!!lxkK%71UF>SrbK zmVNf7@%)2$%Ra#E{DXMQ{xe>#K>jsxoxgqMDo&qpK?!@9^0#bBT;>1D)t%F$@C!f1 zX?l1mzDr<#A#T>o-sn?&l>i-pZXQcc4C2`eX@I|t}?})2@-}m^@ z{hdb-9!uKtsfcU;@!30v&$i@^*7@Kho`j@?VotG@9k&u z#Iin-ToaG>3+k(a%N4k8KsLSn+wY6#-`Lf^{XTfn!`ttBmp#1wzPBSD_4Df43(^&F z>z}Sm@rC$S@V#AEw;<|pvmoZvOYWBImD~BWM@I zWBIq5cUBU&^0^T@IJLhcZut|}4zMC__PKGr)xK)tW}h23o?!{-Wt1lzmOcK>^m+KK z>E++9pZSmN=#Su)&pwMf7DG53bVqDrC2_Nl@KJ)=zdPblKj2CKQLVyhz?yipFZnd! zvWLIdD&U5Aw12z)=6TRRrvE|9Kn3xrU#ok`%0XO9AN$|LWBIk~cSYRlAG*)v`SYwE z#PxI<{Xg-jUrYV0>EkxGNEzinF6f`=C%9J6tRNok<4eyXoR`Ec|C{Xr-gVQziTa(? zkBYeIfAa<+1jqVUck{p59zT`?xG10{&=8OEwa1tIn>za64E>+h--5X5fAfQufy*AA zwjPu}@tFTJ|AO}eW>68g`r(JKr2ivs{o76UZ&(JLB8_D~{nq@f>ErG4|K^~7BA?(o zykrG&s~_#*F)N8%`@U6tkd82}hrbsp2*>ZLoByq(@S$H#-0H`zXP;e9GFTEf`TX!~ z;%5zUv#-aaee-YW=zptKyjju5TlOi3ajkxtBc8}7d~07-m;Y|N{nW(GzVBj!l}NB8 zZuL`f=Fs%gPmBlq=085@ANlS2TM#$A-sRWGXt@U#LgiJSfW=&QNo{HMonmrwo^gZ>FWO+G7#Tm3`x z^}|0UEQyyMaA9U6~Jv@$WG6Yn_P5%$Se{^zoe){1vL81Q;?v6)_F9-1X z!DOO%)5o8mjLu#vp8w>af0F+J+*3{zFZwuMXPzt+FZ;L;@1eNsHUx zAQZ0$aO_VQzU(sjyj6Tz)5BBgQU8BxSN~S=WknBf6<=2N@K*6D4iwon15^gG;_pl{CehhU*~6&qa*m) zWK}PHbbfJqn$^T(`C@sPoNp|La5*4S|A!$wE+4b}X9oRa`N{*%@qDr%9`zI4w*Rw| zc+}71szc_8NBISh4}@35WBIfCGe}_F2e*AUw->AW{+6{$(^j zyT1LAoZ*X~BgVgO`hwrb0)at+0@c$6OwByhe}`5keqKmL82c)nW^H~Y*{JtTM?@|I6c-0JUQPj1NL zcqGKgUUvD5>Cw#_);(lRH-C5rpSl=-DE~Q~`cM4BkbPDVxB7K{IGJ91Jqq6O=>NNX zct@G@C(>}l&A!2VO6~yrBr4+CexBof9BIJ8yB7KrSNjW&>s$K9Mz$Q_!$U4Su88~_ z;#xk!mn-bE!!7^7W&UmL`Y-t0`)J}JG~6O925?+{5g)g$mv|q$B(C-mJ}zK9-+Ct) z&=F7cgKN!f7jEYM2Nm%|zEE}OL0b3npO0_fLJL5cZfPJ(;#$9+kMAEnc=7S8kURA6 z@-ex;it2$NZ}1{qWcjxT{k43;dbuIpC90AmOKIz7T9GU$Ji8cM_lVqI(AF`6>+T}3GTfR>u&mS z?Dt*ZlDM`H;m;*NLb&CSHC;YplWryF`}wt?zm_i+UT0g0e^5c(>?1h$K1BYKxVB%< zmnA;OFGt+$Cw##%!}0nPH~j@qmiRSs(@*fQ#P>`1nzX4GZE{zmb13ea}kbiT!3DBfON}&vw1^(SP6#SqSgjNJTu_7kCn%t0r#s zM~3Fuy=6<{(f+{G_^-pbrI23_`bYi1_bU%69nAlUn|=KIX50P+B*9DKmVdx8hr>h& zxFc@*1^nQ-#=l#EFT(UGs|WFTL2pUi>=WN#6Y;W!cw2t|ew(j<`Hi4|TRwe#1^Rb! zgpNmmI$HskJ$wS+`;V=Ia>T9v`pZY3SQP$>xXB;zF{Th+{+hV8kBIyJVM*NTpT{5G zN{ol=w{+_@4$sGo0D2TVy-#wSIl}}0B>?`ljZJpTzbdGq`AGnV& z>BFdJ)k-`J0yXidzw*V?9rGXJR(~ab-2V*Hq5O$Q`vU(Ib2!e=@>@aw7LFj9`hH$P zyro~jeGM*&TmFd6gYjFZr4as0RBmW z=kEpm)AT>V8>>EX{813M_AxuSd1E^U7%PdJ{vO8}Bkr(E8m`Be_xa{>3)*K<^>9qB zrrYuatjBBOR=zT|nqI>esfV*AakFp05BxBIpESe#L*?i12mL$gAI^D$vmhSz^ZAbt z_=}Rb)!&dm`tJ$$$PO|`JlfCmk55No0IY`dKRsjzUJvtU7(l!Mmc#tn!L4AQW(BVL zu&xbE`(i> zUlP~yIV7%kG#cV2ANKwZ#|Y6u`{h3`=x_S@@R!oVhyB%pc#^)<@V$w=0)jM3;!%G8 zexh!lX0DgM$88IvB5w8>A0aYu+<&Tj`D5ue#sLBE$S(W*$ypL%v>_h#pJ8h(EW{XPEB-p440@sERa(4TmsALM&z`MY8M6XjRK_*WFK2k}R{iZ6*L<%j&sJ5{nh-%|v59mgZsriIYj>5L4Rxif+sOz3*uIP<|Ds% zt08vEF5liiJ@GFXxDFqy$CJ0-f8)WKn5gRF2hjf&rbz6fYT{}?Kk-N;ToPCPJ)TI| z5Lf%!#DwLO-wFB~pA(mDK7v#b{~Uj>{KqfD7bS76|6{z*iVj5Hi1t5l#AE*QJh?_^ zhW^CW{&G0?b_*exwn;%&qD5){}DI+gui3%DOvte(BI_K zgC*))5I6aVUz3Ac{H7#s<)ip>gn+{;%&o+6hKX(XYE}AQ4exK&#I^n*Ft9)Py5_`h?{){ zPxhCpZu(dnJU^Mtzt5Hf_+2@;OXO_ui})i9!g&qmylpd-0Fw$#lw;VY(qTN zPpZF0aLexp{Zqa~htfG{LEP#G(oc#P?C@Y9Z`x)*{ToPCLju7|V7N^MH5!d?Td+s#; z=@9;@JYp8~tBI?9JU(-QS@`fO+UfEGzya= z;1zMxPjESZq7PF|-0ZJ7(^wL>`XM+bkn+f;WYP?!4_rmazbEM5N?%+Y`GbOZlKx`6 zEla%6N0h`9{fUS3K}THsU%#!ojZ?BosG-$h`X}R8;}h=zTldoUkDIIb*^+oHAK=Lb zbTfq0w^qt0|6JpD)iPu%nqoLrG_N!;x3ahYKR`!~c*Kj6=?zZp>I|7p-aP2Zm}OXBzx#MAU~ zv~>s%Q4v2YiKq6NLq8os+(7#9&QkZWtRimx$7wshY~4?v@nypiz>;_(AMtPm&=61b z_j}Xo0h~V!`gd_XKq!bO@?rX*DD?01Tk%;P@x;FA^dYPI_*36}#kly?{q*4-C3{!_ zUlLF1&%SgYV~zj~@kIXp13NuI`9BK!r})uxwGPUE5Kr{);?t8u?>G{~%N%jje>!`4 zO|B>quZUaw0WL4U=>cus=bv7cO-k~Y#7%$SHtqN!YlvI@@OT{H^T$DdlMmrN)BVeW zxXFjP)wh2E9t0>Pu~JFg`bWhv4UlQRTZKy>3pe#@Rr-SCjH@2T?Gnh6xalAAHxGt} zxalA8u`ENxgn1eC@95_*frx&^8eD2YN!;2`NFTz70&>JV`O|vn|5oCmj@86F_7x9` zJ8%=tmc*_93Hb}|FKINxI7)@s|EReP4uGN&Fj-mwdeHf`@-*ZbkY(cPsp;T9N+E8()xLWHs?t z`2qm$b6BpxL+L^P!StuwVSM>QmOl;pxAY7CRd{Oc3t2(DRlcG3@B)-Wd@;=zw!8t| z5MK}qSP^gO=S>^*tBGs*AhIQHKAgabQUXz<{u9^nJK%PGAZv)Leu^W3m$Ji@f2pm% z$0rBoVp$MZ`Cg0{J9q*L>+>^j|B|@YzXZQ~j9<83`rfxgJoNlAentFqtS{ip{TN)Z z2w&91O}`_kjVr$VdA1~O_L)u(cQL=6ya_J$4e@W#^rvu6!`1?)Pg(xupugz{w~p;N zJ;;h7JUQViiK~2gTl&b1gFGE^wGZ6qV7}nKAsYx)C;foW?x_P+J;znA_z-5$&GuLS+oKF3%WNACmlf5g>3hI5Ko64&w*{MvyyK?H+4;?X{@ z#)uKB+f!LZ+~mjF0`D7PYzd3Bnz**VV~_93BLRN?vh1cmesfRm=d-x8hPdfBe$$$N z=f5!MZ}LsP3fGLde^3xNK5@NZQFd`SHf)=B1InMc$&bjXTN7NM;}bU(akKAY;ov(u zeK`p=wC?f+_xsP(e~53j1LZ%&kJ~3%{(V7ztDlnollTB|F@)n0lUJxed1LA)hDdQQIqfgH*q{B$%&74j)K;;sBo&)?j~8H6~2S3@}55A*@% zdI-1M)6k!IOMY?Rr2GwW?f?Dl>(>%Qb@uoSw;c1otyBMDziZdG)x9JuhH-tqDk}%@ zsU*ygBX07cZ^qGt zt9>SL-+zJkd*%2{lB`$Y^YQql;LC3Mr-+|@?fI$tw={$Ji-{gE=ieXnGxI zhh?=2UxXXNHSwrF(#ICLdeAJ1x8$3h>+~sWdg;HC2;{zgZ9#|pZx8xM`H6E6sURNh z6Y$V`qx^|S`2s%I_n(QI{?ly<9DcTiQ~@1#zpt8l3P>m|~Q~6a4~TX1L(H0X%);ts-vrL;C3xZ*?E{x~T$7;)(pG zyU5=VPvj3cuOR2ogZ@eWr+Bz+qDClI;F?KE-0IJCJFJfQ14lf{cWojQ@DmXZpQ@L> zfN(*3^$314DE}@#-x_V<0ZkkdPGtaH61VIwXdxE1! zyZ{0R$?!!%-0UYulV`}CQ^bBGx&fmZb;;O&6Wo*ai z>#~x#+V3SEPrHg9MmP8!ajjo3(R*#rr>CPgVG>snSN$-xy7K}{Jh=oQI@H9~e#z8J z;A}};e{96R3Om5#)ytIq~HHj_2hj()Y-xA+GjEU<`R(Lq-=LAw53| z`p5kBPlt#@91E-Q&^`3s&@kIWG_`%KPWKE(7mq>lFA!|^^+ zxccgUQWLlGk(nzVP}BpEWf#Zmqc%8-{zLda9Au{91R{SC^w<6y-;YlApTFJb9p{3$ z2pW@CvNr2U+vkQ zp3lM)b`5bWpXrP3PZ8K7tRB(+kAwaZ7s2EEkp=OXzTl6Kj`)B=N!-eJI(5=RQM}9% zSNmak+}eMrI(*>AI=7HC>Q4TrI5=*te~GJof?=bBRntrVY?0nS$|pg8Z6COJ{2AtO z79_GDuJvE=Fu;W<^5p=ZIFdp8C$9Fz>pL&g5vn2{<+r7yH(^a&?T@7;8US87#U z!IHSz9|zON*RX%?$@rt`r4KxDP|3gA)&Gru8r;VJJ|1=#{I4+oBOc{@<4?~u#DF7i z`uoFWIJmI_S6%$@T`b@A_6*9OxYeIAUSB%=k~vT;iCg($?RU-3V6cgcJR0IweiH;> z!TYWnVQ~$v@)^{`wSJ24)RyZc=~mJgyoBKvU1s2av? z2frqs)-UkYJuzDj^X(2&Lp;?Fe7l2`&w~DG{g2TpQU8gj^~2-);Ra1fJhcyTe}~Bt z@8oZHn5va{xWiNvPs=x?AMPkESK}W`18i2NAMPmS^PvAg`cH&ktj510c)1b}ca$9Q zPWjs%rD`P}?kLr(aeqf?xe^a|l$v22yOZILQoacKr}bAnJ48466vWf|fj02qUVyWb zcxpd4Jvq5Ip8Exs8^Gm&cO=d`_*BGG`$&X3eS@_op4Pu~e}73lt$(lM@kZ7VPxQMc zXCM?m%g=-UN&eU5_{0Zs#E%N%pCbXffB5-{dv)vc;frzwew(->p45K?Xntu&fK?BF zjoUwZhyQa~O+3o~+Rjcyf@LrN*Af`QPFNe_vHadF(ggBX-TMDV_D5z9X5+6(`UUZ* zKXAQV4!k5D<$JT(K>-R^K5iiWN7FNVK(QLY#eY!quZM7n-oYMlxe9+2PB0qcsr)|r z2M6%{b+?O1_9cO2vx>OMH@%v=A7?dj z({Fl;-eES?^Q&bKce*w1Rcw0c&)?eRInn=Z&_Bw*zy|Z~-jn-x9!dfQ@u!*Jw-2kbGNBhh3oiT<^P2B3Q7%tIZ*-3wTFn7uEebx-%@E^w| zns9`de?920>BD`u)qfPk)&5i5Ot~+22)%XD{s(Y>2a&iVuH`#*W6XTw_)_(7xw$nu zAw8>!t9{$ivC;nx;}3OzupzGH3qH1QU)lsW|ABV-123_KVt7G3$sgUv!JP#IG?m27 ze&DledlejUtv`}}z=IcmMcnK=-^R&(G(g?w@1{@8FZ=nUa>fe|4e>;NF~4N)<;(w$ zpnuH&+C0s_Aa3?MU$hQz%MRb&xN(bDXM_G-d~}GpN8F#QdN{n>lK@;bakVeD2F7Ri z#%^&OYRHnfwjbd0@%BeJy$oB#4RN)9!2Jn;|3UtXg8n-G2OI&ExWil!Z}T5W7vg_W z5?A{K{>~BUnIqnoPnJL77u8_?k0!dqT@z3Ahklwm>i=N+f`?O_W)PPn)R0F0cecwv z$Pd@YVBV}C-qzo5A^8MK;%)u*FoO!|JK}Bm_jLO_s|NY;mE?L5ms{2${Uz~s`60k- zfU{;We@u`#faiZ#(7!Fe;K6z6FPtQo*%|5Ne&?+*H>@(V6=Z23_^Jjvhh zU+MlyNnHC6;qdzWH2UDAD{Y;?ceV=k>X)CLZm#INm-Pef=%xM@!;Se(Y~c z59iQ}Ba?=>$%naBdcKzbJwbm4%v)8b4~l znb5PUn|^ZlSn!&-)sL44^Xo~7ge7sSzb_|mw(q~e8QR?6fNqGJe1ga0oh<)*JNi$t zZMc{^`H$pZ5I6mkwVmK4ag%TA&LwhM*ua=)j=1TMllv0>Z9Lx1s&4wT@vGFnHF2wd zvi0h_U&$T)-w+;;2eO8^=`Vb_U=-+C{`Up_O~2U$_w#LflNH31{FCSu(4V-~zuELT zl7EXLI+Z*e@tFTqYUlCSnSa&CePqHd;x%zAUq&u8|DQhp&D%Q&vQBJ0<;#z(lhj)u=Sq*c+sDDDxYnx0?+@Upud$L(*I=a z&p?5q{~N-CkE+K@;;H>qH~E1hp2{z{1~99J_&7uNiQ|u&cq;!BILGP;x+I>;Z_bh6 zHv{RX{cHXY2mP&nLw}V`WGINI`KJ^3l6aaw+`G}mg$m#X__BJ|^RtS0T0emMV=BqN zCZ5*6@$3$wxJaN=-2WTMe>{sLd_z3dPtMOzC2@T6eNlQ+*s6jT#AE*c?T9H3 z&~QuabyoKHf=3T3M?B_#AY8j(Q1#LedkgB~U-$5%6L_C(V+8|GTIf$a+K>3u`6YU@ z0{0Z{H!G2&0j6xh{yUL_&P*aEBJ^L;C&cs;?e$r zkI_{e0kY+a^e3ETHY@n>j(ejcY=XV|08|M8%IN52n04+F^- zcCiYFf`XUCJNke4`8mS0j6a{b9{gVyj=`@59EQ!bT;TW|W_Rb}JM?Bhh z?tQbczdM%(TJ`yQ^+V`cP2Aew(ZTgwH*VfJc`^0)lDOGt^5S@rH~==pt^UNRh3Du0 zWYFJmaV*`N+521tag!g;yW_3+!cN)e1D{Qv`_!R7ajSoxA5VZP;#U5x*X5vpmoM?@ zk_d52;wE1weqBS{%5OgUV(Ma=|5HK#B>y!0T~-h``@lJyu1{XWvdahl^h{WB8fBK`3ZCi0NK zA>Ogi_7S#Fa8n`6|LIQsr+(@{R}k;=UmVCD&pa!MclCQQ4I3101z*Rnin!H3=0CwA zRqS7{z~vbp!I#97`YGkVeJUV64e@UIo${0=|7U{!JvhyemH< z;QRT#Bi@xyC%6^yZvC5&kG=dg@z42xW!Ws)=k7u-AL6qd&VLU!@DtF6xV67m4|QhZtRBEIGI4bU{fVpngfH>?bb{Rs;}*X!|L21KYG2{|3$!#qL0rpEa624xbvVJMN4ERs;A0EW$N@Urju<-;Tedhx12RVL8Bmh^u{Y;1@W|e()CkGJWb!ou#X$yKjq$f6AIJUm;VDY8?mrXZ)#rXzA{x1amt$cu|>+gcN*~j}1>gojLPu%1;JgmSS zaVx)o%ie)M!LNv${XD*dTYjP)`oBTG;E&IwgI^Li`*?ox{>NbYaRW5}7lZ!o{FC=T zh_};E-v8*~@GqX8?dSmSh)4T+JRJT(zlwOYug5LEcum~u-?$wgYuU%s=9x9bqkh=F z|C((-XZgPr^iR^4>aE>hRuGT+FQod0;5?AOByRoBc!AedpX>0HIpRtFt@sXApD#0m zeQxh(HSt)#7K;06(z44(;QrKsydiG(^@022FY;K=QaFZuUJsU+CR``9amiCokmYbK%MOqaMcX{`Hc$wJ(2oyN$IAE-Isc zZ2Ej0F5B`k%m0<2zm>1>HMleKFNmA{Cvc6y<1h@emX%#T9=1&VPh1z5W#L{}`-+Yg zakGy;3@#u(br(;3#{^#zH~mq3@;ZIEgbV$NoBZA{8%qGc0fG1@|7y_R@^_Q7vv@q6 z6~wLl<>kG^fvO~K^=EeQ(fLulALF{|&rfa^{^e1T9{LkE`^(E9difi8-OXR{#6xCD z-0HXC!NaIoi6cxt($D|3pug!S{1@kT|F9Us5t%jIPDlOkb8Q1g0I9&;?aInmt>zc#I1Z6Gq~5i+LpZKlmF{Mf2$wF z`HncD*@dCz@c%mQD4|8A9 zuOV*j!>2#rRtfWeBj_LPXHUloJu8SO^1*R59>A5v6a9ck{aiQw^XKXGD65E@{m)&v zI^ms2=2^W8_fZz-*|L{D-nB*H==j?ZxAJ>E!2^e?J<9*z4Ene6Xy1ak+2`#U;x|v@ z`44fkkKlf86{hHpxY%%y4@S7nV{WIR5N9{oW z|L+I=&HloFh{8LT+@U{llV5N@!3fK&lDO$Fcx;}T8%p1Hr%?XH&A!6_GMtPKNB;b- z9!fure>;SKU8BcAf8tjDlD^G6# z{QWH`=<_d#r+jhFlNj@|fl(4S`+%Ru0CWSmxZrDygK8lC^p1Q@+{zE>!-dMun3n_T z&yzJqGk`$(QX|D#U%Czu$Z=;O9`A$UpL|}iJ{w|$p${rsF3(5H8h+F-|1~#A86Z2&iakJm-ZAdv(&#dn9v2?b^2mX?{*543X zG_D_-4qxzyqW%9TL4VZ`(urfm;TE@G3*y>801pGJmmcL$T>u?0otcgea1ir3smi_$Sys+EZ(4TnJ zZ}P@riLV!k^Z%?{{x8oEnsV!7gwc~CDu_q>23-9k%2hZP__9EEEATVo74cYqLi(}@ z6dTsWt$yS2NXVzvD_ate_CbUVY(1Z_0Gb|uCbx6U12q57gZ@#!`RE8Ey!gM$3aKC- z>)%}G9)AC!ByRc7PV8(|L~z8d`~}AnNLz75-1G}V?dnz)r8aNmCY>=gBX zfUj?43BMt3^>cOt2L>N{Qs6BAFM|Gt&##W=2a|~h@kc@2^oML)IHNcipZFv|0`7=w{eth;1SePGT{4jes4Lf-Ng~0a(WH%6;B04`FHW@3D$3Ng(=_-ag|^0F52ciev;Qgf6ZTTw2<)l8t{U6 z%Ab!<_4$RYB(C-ozTgLpVdaQx`6;e4RK&G?3x1C9Ne3^(4Zpg_KY6)x^mryWL`1_S zajieEM<*|R-zp$J%>aKdSwrUkRabwk3cYV(;1^wda+tcWXC-lyA9Cs1Pf~Ei&3 z89T%wb(DXXFL>ghS`#<@1phQTh%SkneFeAI$D#jF`iTQ+{$B_ETl~a@s|8&@dp)gtACPy2uTJy z$NQm%)I<3vo!pYR+BaF+`2-r`T0TGU19Erj7yY7;I@+)sy50kfZABE`*x1B@&ZC3nOP5zJPR}#F= z&(ZuG4322t3pD<|`?rStA4lMwcfR$VgKw7yCb0eUUGMleF1nob-^G6y z{|UseTsic6zw-kuWZ*`eJoPx3Lh;|X^}lk(N09cr2RcU^B=So~{A37Tv?nz*ceP`{IA<>VF=d-wG?Zy>zZO zl#U}m=5Hem=7H%>!4MnsKl06fpB2wS6HFcn7^eDf8}haPxdJ|1&-@(%%tKEOcQKh? z!!Q2lpug3>&#vEkh7hy<5JwL&*6+?UM0tM}9278<#4-n*6B$jmuQO ztm*M@zW2-zLCGTu19IzE#s3!ckMiHVl>Dy8zjY~oO@1uD*!*@ozA!3t`roFP|GSsU zzxdy~`rp3wOr}qV6I@XVZ^)(jb^q?jkL7p!Qsq~ZAKTyi?^*rBS(W$Z?Pi+%yCFZ? zFIL|R(6i$I2>M6Znc&mRj|c&Xr&@MMz>ivKImP0j$$*tr5Xz=~frwcO;um-H zhvz;v4kmDdJ4X~@--oU1za072{*B*_6g8ZG-Q&x}w)ys0{?qa#9OgIVoBcF4Od3RH znCibReo4^ZaKhs+L2T**-5~#v4l1pqgh454@~!>&{P{rXW_s3;Z{_d#SV8Fn z@q@X>FNwm)R37dER8KjLva6^8of9nDJ zZibzI7r(4u{@}ws7|+BYj?Jbiup{64k0AeX=b5ukuJNDsTE0Dl773ldHRN~nKN+{5 z`RK6XKZ{=;^iS&_^uOTj72_ZIvHsxgT=+n=F3HC1dVi~j_@Vl#i${->e$jOKe(2@> zr3(z;#jog;zvm-_pO4bBvHE3>e5=2nuMrwIPeE$(&HjO}x3tAYbnT}Z%>TJY;oGP{ z@hgY)mj@c*UZGC1Yb0>wTmAR)p% zW<&jRfr8lP^Cwk-!mxz3}SHfz;%;`@b*%T%h@6%`pE$bw>m%e(g~GpL_mA@^|F7?T^;i z@={!Ff_g1~vjh$K?eg>a%kf=u(myOi@#}{4e=Vo<8@ZCABfnk#o*!oK8#<7he4D@c z`s4YDm%y;>@@+%DwO=g$Kb;_m@r8PCl>e^}`kVae=0Pjc^so$${4{^O-Xz}V7Z^QI z|H(J~k^jYOKlJbC?;lt^o3`U*4@(dIe?!pU^6x%?wTj5^9r@P(CC8_@g|Kl9s>wI| zMgE2C*R0MT2brxC;!a=_4^5yUe5!SJNi3dP7be>4DCg1cI{wKJe z`5J+c<29SXyyeS=e6zpsch0;AiO@GmQ2eG&`3paNz-4950dVBE;;(h3Do4b z~G zaOC&$*8r@;YTLIp`MvrV#NT)X(U9M>AL5tFEei{DZaKF9QvBYae@}i5@Y?=)?_ZAm zUj9Bl>U!HrVm0|a{jmsa1>)%C9KLAC@3o)6-zY%w`-1+x{-b-*Z$7_qD zK_t=elJ9&48DH1rTmO%<1MmO#aC|BkQP)s?q7C^`fAW3&O23c0I&&b!?+^M%`;$Mu z*a4&?Kh_`eH2~$>+@b#}z6PM&z;9OZFWUb9K)3x>1_8m)`|EAlV?Xjgyl`nQeg-;5!aRxrcYj{MkuIsuf{veEyO zAIo3)a)Ss%q1|*IPN?b2j~>VeVA2pt!$f{t{IPERXZ|}!ql+Zq$hYxR?+)x7oic$N z>jbFDkL`!~w_f2}okFuJe+lw>0sraZj|cs2{;u*T{5xm*8e(4#M}DmTl>dnYLVpMc zlFC}LPLJ+zcl{^E?>RzA z_>iC`-{y~Mf93CBL-f`v>CyjRgnxTAzxb0u|6ciN{<4?7nw~lGd-WfifETI4HTk{z zFPH2Q>TZ(*YD0dn{}Db;0oI7_q2f=iX#eCRM8(>VBfr;weHjeddq>Dct^zYeE1GH_(-;r`3L}DLKp^%QHM^|crCKl1zfU*Pf=B&o@_`WLS+US#^7HRN0W75NW$ z9^T))|MzEm`fC8U3!T3@@~!`i`Qshw%}LbcNBz-nr2*JlrPcpOLw>Zs@VSW~eb}te zNxv!nT(|xs09Ueoo&I*{?~eRf|Ag-!P?J~sHtxUF#o`*uzZuH^AVye} z7-s7}#h)M0KinZ;gsOFH)PM3@`X9sx5s#+~yI)k>8U4W%>fmdIf6oWBo_|X@I!(^sE`mA2GBR-i39u0gAsE z^l#O_S?3X*H8MEzZT>6)_UQg4j{w|5D8hA8)a1A7Pr_fv6|oxfTlSx0+6@Psjg1HV z;x7gLt^d&L-*<5j%Aew`Q67*Z-^x$T*0fgGVc8Cx`?enO6XYd>Co@}J`Ti*auH%s8ug{!6}%A3lFK#WNB( zJ;goPQ;p<1oJK=_yZt)7{ ztMm8#O&1=h?-sX;cfYTAuP8PM;5z*4*FU&Xd~oCa58i#Zc<=q| zH{RXAugTZ?bN$u_#r5mAk<88aZ@qW>-P;>dXgd5G#pN_8eo)X~>;Da8d;R@)-}~Tt zaeZUv(9Myr?f=FH?-w_2-as<%-TvU+n;Q*Kclfu8TU!oW##?w`4`D13E_b~F8}haM z-u>WqaqIT2TkpO1?#&O1P1eKw=LZM<)&B3@dbfD@{Q}8+03B{@EI~)U=KtZ=DV}D- z#x+B?ZLJqStI1dUf4GHBOGNNQ7&tk(-9*ot4*xr^isR0f^gwBt_LWi;KP2d{^wTb3<5jAYp5P-$k+0d zhhuShtZPEW4-5Kh|NYVV#2kgx6U?(z8G<=rQrUTE@& zqAh-SyZk-h$WjG1lt1}e|NWJj9lT8z_psJhfSP=@ztFahNAs=c<1zj+`KrXSUQ>V# z`DTCHI{R?TM>_w;^;4kYM+E&7zJ#5*dT)Xoa2N0ZapY_Jh5Vj>(fBF#3jU{vAAY|6 z=+GBTvx@Iuc!}@8tt!RhM+W_^{!C}HbGO(zL;GD{^FoS_eCjTMzIQ!n(RIdNt&0 z{l%fviL}~_dQcaiYuA6og-6^|OhFD_$}B`~ zsrb?D`Vap2;CwdT#XFDjm8sPNIPzoui|vo6&k=jbKLBtx)rUM*BvB9W#dYpO1i!^h zaB{eXi^Tfa{6HEF`Bwhwwk((5HgDf&#Wx21t^AaK0j`MS$dBb00+(#<`YX^|oBGh2 z{Aj@$%ZsPi67_@caaEfJW;bI34-g z|L;WpQv_1oz()HgU;B@6Z4eVbZ@;}ycL&Nm{i-2f=TDzbUm(|${l_z0z~8_B=3wkM zK~qZW@5PS|`fLCBaP&rJFY^*t*s&4Z`hE8wj(n{@57Fym0)McN@JVxwU)|q#|6P-> z_BZ|o$B%}5wLhGGj;DuPkFa{YgX5Rio5qhK5BjV9A0qnn;TAN|MAHoJYR5fECa~%wOzMQpdnxN ze>{6JI-7jmPasAoXoBmjZ&rL$(BI@=97FLtCk{`jj8TtQDo((Wul?U+&;J;2JIM=x zXn>dvubIAQHTkB$=kMHu?JdUtIvE=BRsT|=XZxND7vUBUHb(F+zPa80@v??=;QL=b zMhJoZ^rhorDIED~zjE~U6zyh9f+tKi16<(F{-Djebl-MuMh zAe+vAzNOv%%dqqAT~BcZX>IIEv54#P<(0S<%-M&yXDXX8+Oa zy^nU27Q8`#y35C%Un;zP5iX`hDc0;P@sEU>HnStDhA= zIq0wL_sRIx6dO(#E!5mU~%GivDb^AHRNmghqaTv zfp<23jV8FJ5*0tCUH`fE!W%9xu=qG0zu7v(F6L?rI`U0^JZ&1+ZquWqxxPdZGe?fGYDaSwc0>iDfA-|V0A=iJR& zGXbi5`7ivPmwRZ(>q{=k(2%e7*S2miIQ|qrt)oBhOkAk*h6s*)D}T9pzmOhiHa)q( z8oDOm%FjpMlJg_&f!4R5rYrx2J!gXbil5$Y|Lx9uL+}F8zsuM6pD_arG2B8vtNyIX zSNrX8-M?SL{d;k~-uVHEHstI0B|Y9{HeiaM5%kybOZx1G^1drO^7Yn-{#`!eFUb3> zS1-5$UX!om&mQ>~q-PEJTL1mA(HtAU;`+2{^9A-Rer8*Lte7zEJ>19f*%a?=x=sG4 zuE!7WTfW8%zFYJ74*SaTCtt^}r{VoePCyrLH>uE&ulkdJVF$QkE9kH7kNijD1vGfM zDR-1V`P%Sw;rMejJDRhK-c7J{qygx$(vbQ4<0{xcxP|@=?&^X`C5PEZOyB9 z;QzFcL^d4$Ncn$jyZ!sXCsKFzcku$|!KUr!%#p9{_ma==WOXNh;p+|Ti$ri}$XEL% z{EN`D;`43&!B-E^3wf|Q^0oXwyI#oW!jD+g4XLDT2I*XFPHp)Gz^yZ%G| zHhqH&uiM05pM6%7AN9YS08O8N{W1y^KRf83O$-KR&yDsqC}5m;a4RCD8Qp zzi}Dyv*Mj@`FHpm%Fp%qH!qccy@|ge|Azcnezz`Fe#Ot}>VM0>pLNj?dX9V@e=hla zSXK|@f0+)b*~H&qzvA1v`d`X?nIk{i|MvTrsQ`5^|4Vg$S+j}1N&j!}w*U7!4Pbo- z=*W-l|5EB_bua(Ry}#6uAM4+xo`1`VFLd?4)bn|n>+|gfI+^+t&+TGU%zU%Qj{pSXLO}@<^Z`_UvT;L8?L%#LDH{R^!OiKs{D%Wpue@>%RRrCIr6RlxLozm>J9u2 z)hBDnxBlbiCENeCPWj)w)bulRoA?_PsC)d&8L%PW?0-}E7k@yoD1!dhes12nR0VY8 zNBhU-dyxfXy@|iUehv9ne=qm^XI5PAmj5N&Kl#!A?dG?k`^f4I{0-`7O;`R~m+Jnq z;zmdR%Pk)=*W-8QuNxGodwhF7R3osg+B);!H{_fBFQ9rU;U^K#Gk zW{!MoKb_{kA^WV}z~7*L){t-Y@4Zg_*^of-UZ?!u>nN~+@5nd(FE@N-^#=Zi?6Zb^ ztACe!J~=Di@8}PHtN+fZ;Q4s?V4>K?yS|2FWO9{+L%C_e0z{|A@rKOFgHzsu3Hx|{#b zqrE4Ocgy>C_jVpXdWJKc^(R0L`Fj5O*|RH`dcn2$c^&hPZ)#O|IeRd^8@W=fLxZoac3gF+6Z|hIx`-3dp#MzKQ@tr;W(f)h{ zQT%5U8|Q!IC-U3=*B(Q0t((Brr>yv{p8h@p!9^W_9QiSS z)WA!mP?I0)kAJ}X!fwP(PyX-#=|vy#EPj5_KiXdcSAY8#pi}&UpnsI#$paMLZ+Y|WHPnCdt^dE= z_HkB|AN98Y{1-aEZF=%6|3dVv`0k*8tiQ?+UZk5IfNl-F0!Y{W{29RYLd)N*AwTM`0aW+z?jv;0ruJ8S z6!eesTlamDi@5!&-{{=RWAzX1c=pXY} z{zZ1L(Eiu+H%%Y2n*7-RYW^2lJwku-qx~eB4AB;|AB^+5{Z=YX6Hz&I&D~ z9_C-<={ui5L%!A@=6{i=>pZ`B5cKcJKM%oo*FIh6`HpeeEBt8aJNP$GkDOx#VyjU^Z7de=a1X^kH+)MJpYtA^40#MBLtru z%MI-B868YFU*M|A*ZybZ<8Sy^6E?=a7Yj7xtNp=8=q&FxdJO>#7U4GWYWo$RwA+8m ze{=Q4*C%c@R}e?Oj6X1~y%e4Rgd{w~9}j7~N> zFcv$V@}Hkw-`@4%TQ+jN{^Ymv_is1hCK|$s;4<0TIdDzBj=x@hggtvHp6eH=0slW` z?*S**jpX+~XM62)y0d-J_fB^_Ni^96DN3sy?fL&_l;&2Xc$}ehw=^yHO!v(6vZovB zKyoC@Ip>^n&W6J|=N!*D=bUXg=kP0_fcNko!lOQ)mB^X>K2#M7g;W4E^WJ|*{>}Ip zCurX`S3u;euM%Ht^>5pM=Y^#?G&`POz?XK!3z=`oGJiS8t1^Ej$Lk(X_s_WOVLC^g z&%qU+vHE-ayZdJbUce-o_w|pHV@N*bCTMQ}%9yWG%sczz#8z#u560mG9A8Fvlzl%y zGw#{ zncC1*y8j`@&&S90+O%Ox0?tYx?pXa@{ZaWR2wlt78BV_7@O|M52+4fA{ubNQgXyY~ z;Dd|=iutzwJOae^Uv&FnouLu`B0O#YzztfUVae${bNB>b7I(Y#AKssoEgZj;%zOWv zj!*ISjTt%Z;plJa{%zGQ-(1}>x{kM#aSC*tUwlLPI?f*q<;6Qze_wy}bR?Y593onk z5AjOo-T3KXd(?hGJTr2!mQ~Dq`w_oW<1;u!Q6FvR`Qx9J?#gfZ1&(iRFnFyGaRt{V zQ;Fi9)!&zoXM@mvV%$97@gS;y=H2+2o*i0`t{d@pZ2v!AWg?hj-rJw}=Qu#7^L+6D znfN-ZzZ<{M>tDD#0aFKDfw7t57Q0h~g0ul8^G<)qn`_YO#SDk|mbn$A7(JYGrWo&UFZI{1+fzA&pwmv671DU`37 z_x4AJS=%Li`wGV%-c!p2A+gt~|Ars51t6n*^9Vxe1q8*s>p#uyg=PsA(Ql5^tZCOX zztOSs4gVC^0OA}iy7Al}@9PixfBIsLSFp`V!b0>x`;YL)(;G8f|FGICKVMTR z=3V?br2Fe|Z38sl;ssS4#K{{#cgr^=kFHY~$3;$=nV;+}t+8Lp|C#sk%kb{({qmef`_}18XcC*l~Qi>dbEx^Im@3JBTB!^?ZhF zOzJ7_Z^AQp85wl9{MB;3zR2S@EdOO(-;^)D!Rqhjr#8DB4ZXg-lFa+~Y4}UD2zrTj zk_zfqs>4sP<7Tc+#RYaZi@R^A|Bn24b`w$0-8_5lNq+Ynu>gCW-gyO zIIBOzU20k3@k`w;e`!Vz)3>kMp+?`d(AfF+6-$s#`wxY|#7(1RFnY4=8s9jTl?~UHrDZC-ItNcKBII=G*e`nAnTaSAiwf6!WhC zq4IJ2IY*wC&aGe0G=A`!`L_Px_e=mIyuSI)-COBzhy$y?_di>H!>3VGGm?2Xey}$W z(fu#8#TL`gabX2eG2h6KNh3^NA1s&iH|z@tx%Csxyl;Qz{$%i2dmMmQ;?U~v{nzox zohUj#EFhWhl}~*r#6UI(;(#$#^k0hkrv4>e8(6p2QKFptq3-Zz?cBNV^chyL^F6Sb zgzew1y)UP0JAR-KxT2!}mCQT;F+4pVWY_+(dw=vn#k{jW@p8O58O_HZo?#U16{Uq~Vf9ySs%+4W=Kq&v9C2Zu6D#lN? zxcC}F;CE>uKLWLWq?vc|2ibqeqoet9ym{^F0K5`Mq5m7+I_(g=k}-aZ#xtz=N-^)^ z2bI5rd&lOorqy@MVY9>MN;B{4e~$G64BUp^VlR$6^>297dE)kEQ;{ue_x~uFZ`D7_ zZ)QP-?W;;L-_jra3D(b%{d?0)=2rbuo1f?$Z?-}6<46tP${(6NiulKTX#W;p zSbtS9p4R^{dZFvD%@`o_jDcp}$B)wuz5Y6Vu%P^pyzXR0G3)q0c*pF=MYr+kr2`&5$ouKze53gpDE6!TsGalHL+ z`V*S@uKlU?ymDoL{-<&M9beR+`L6!MS}*FK`I!7@{iWh7&3vc*oIf!8@VGp*Fn$n= zsQ!Eih3-GhA0Uxg{@zR$j*uwkJNln@S?H?`b`hzeC;rh1-ee)uGX@ll6D<8$EUo^X z_+iel9ndCHhNWLg<~#Q1XUHgu=0Bj~Oh- zenMLPegA3W=fg+b0p+EK{>*pm_wW%iFh=j;62!s>6!V?<`_LbwD2zgNynI@Oo==}$ zzEXI8wh|vi^&fcp1^P4Jsefbq!qG2d8O6Mt|8f6;y0@!0^+z9PEvV!2a}LUY@y{x% zKllO3hmcG%->Lt_bTit$cW1mVwI3BPpLiVNxqm;aJbtN}@7Ry{a`G^Ev9|hm>JR(h zw=t8ff>d+U{J8-~r|-h6IiJXTH;ZkbQYLLidZklq70? zp_uRZuRFw4OhVDjckE}n|C_vwl9NC@wfcAb*YJ0+idnq>m-$ZrY509?WarAJ-znxh z{%832aF_aIoJl?dubJ=EA048?8O-t)j(8T;f4iEGjPI2KfMh->|2%d6yBPV`?oUZG zDCUFq>!_FO;wVHjANXIxqaRHcZGIuntp0)j1pI4Pb6=3m2magecKVX}fXeeU2+Rtg zneW>Vi8C+PR1x??S^)8()xU2)!x!x*neXdw__F@Y2mWvDXL!;-Ej)gsneX^tCkr<{ ze-s~C{ZssO^)f9+C1sGzcjWiwgHN*b3zaF~j==Ke>p0)a!p-yI`&<1x^0)b{{F3>O z{S0qc(DLQ0D1W#*eC5grFHd0oH_z*+`~jbpUwj;^f0Ki3QeFcf}8g>F@cyX~F)I`Otp?J|jK+ zpZTEwJ%5B%SepW0Qb5P$2aj)DaQ#R6E8+)Q{l9>vH1jW0zTv6v(=ZsxeCYoqzv0a? z=qp#!pHKt%*RG~{&3x!TzI^yzjz<0eAgh1qzn(8Gzg3d?zW!2PpvYNhKZ^Oj{h7}h z5BAq3KCgZyez4WQ;RLv1zOO%(U+g|BohiS(`ic7gAu0b~ zuLmqYR+9O?{}EqwpGrl`KRF#Aj_6d>H>4K3jSCrTC#%|ImLuf1x%Dx#{*N znGeTLt+lr_YD81ahyG`H&fU*{KreHkrD4dRnGfp^%Xbn>?*kgJ_z|)CpW^{SyrhfduTle)%!l>g z@U{;~TTw;JKb^cfX!HmDnGeSgEk0ee`HlFIG5wn>ypRKu_kZTY`lsbb8h({SxMDtx zA9ne)=)6?_%!mHtc>CX+3B-@G`p5Zl|09_X>))13k5HF%P|Sz^+vc;w=SpYFM;2N! z0Ei!L_3zi;?mf%r#{e?J-=)EG!GtQwzawu^E@;7kI?3kW;0MSrneVrs!vWrh`497b|F?YJ`_TTG@7EvN z(CwSW{#X3Cl>W>Y{8us`_Mg;#EuV`$^gG3TIQ}7CF6VPPh?edCD$RUof8M?+YLEW^ z$6NhF`+L5iJ?4MRhxYe;aT8ZDAGROnY5SsUO< z)A0XH`PcCl;^9gD3!3@R|7`i#{F*KDcqM+4)jzbq%c@<&>E)U9MbR=&AAuu#5Y zK5YNC{N1AhjPf<}G5fphm7D_NC#UtlJ1bUSC7BP~ua*CxcdsemY;9?5ms;h@Y1Be;lDGnZJ_E z$Lb#mI5dIGc0h{xnEjZ~j^8x%;rz+gpXKuvD1N%tzau~00ozJHNLx@cAI47v?#T$v z2MhRF=@I{#5A_fE+!CT5z~?p)#m|W8-zuL*Fc|@4o;U8FTY^>0hwX25cy(kC-=-~Z z>s2$~vH$dl9&fc<*x65rpK0|E`yZEnLHih4ypqg^?RT{vx6VN3zM$ge^BuaBfS9Av z{+SQ`$E9!Z0o2SV#Lu$&cleX>_1KV3TA(kG{{0p=0pEA{2e6UJ}Z4dF(3M$;qSjU;0v1h z(Ekiiw{N_;T5e@d2Jv%Z{%`mdd0%P&S~A})A09ZL^Bpp|@)h$P|KmH5ar_$hVdl2b zHS=Np`#X$RPcQ?@g<$b>t^Qs9*+#CGxCnyxu#+w*nGf~%=|6?u5AmP*(EnR}PIySA znGfw3^4a+R^P>9GEAspJS8@GHmU!wvG6E>(6Y`ga50z#BkF^2fNvxV(O-nGfR^>2I>vOX^qR7g+uK@*BQ1e61w& zVf>=HC$Oh! z)Ialq|2}*Ke1P(>s%Ad0pW%@>K#@Nad#F;xFShyz@t1ky{Du4j$$Suhz%NHP=q9XO z*JXS{#ml$#He~&a`5=CB&>E0_S&3f~Y5$%tML(?nWcgzHVWpT4#*e=I?9|cNPcz@C zf4gfxAb&&rQmcQb{+NgVm{QXJlFWDfhxuajt5lY!&*UF~(nUTqd4pQwmqq=b<){DT z8<1o^=6?gyuPViS5I?y7hvbjwEN|_Xi$CI*r~Th1f8+yzEb_V8FXA8bLI3B@P9X%A zPEl#*1N%G5^7;JVUlGxto9zI+lFSF~$Mfa(qnHockLSznM>8M956@Hmr`s<5M*K>v zf6xA~njQS)*RLe=LH|WzYe4L#@)h%;{lE|De86kw!}|B>$EEa{O8lx={TqG{F9~dJ z<2+!l{m2;KoW3h|;)?meel4DCl>0|BAJkvN7p*9MwbehcAM)c;6Iihl73a`wERQTuPX7|to}j#v*iy-zp5njk@_2wepM;v zBl-_Xzp6CzLH}pvFXpaLU=zRH>L2mnA?aI{WIm$*ko2ueF(0%)D?jo_j*Iy_IxYX+ zfb^?M{0^&sME)V^SCvfjL(-QjmF9<}FIAfPi2n>pU#i6KwE9QdFWp{J9E3{dBmQUj zZ0CtzD&`~hC!Qu>>EHogGas~HH+7@iOR_Zl|93_7cf2V*KYo%q-c0@S`*(`@p#EI> zmd~0{GauEzoW4_u-yLcH!_!A98Ra)CWbZ#2A%F2UUB#NI1I2vce|F4)2>>ZzMuJHj zXy$|X;rNG-3Zoa)|L?K-2jfS_512qm<^%gXK0ov@Iw|IZ_TzX=Ad-snFEsOk|2W?M zH~R_kdn5jDIX*sH@PFom_Um|-BPW20^6m+6T*E%jpFh_z`F;A!J|2Le3vJU5D1KkW z|2hH@Bc>9E6n#TGU^RE7J-=2MUXTaM}^j($WZYjMXytALR7+xR1Gd|_l&!Io_UVgfH zfa{(1Ua5@SKbm>h{>|2td;aeh9U#up(EpEh^r!Oigp#>=V89iil6hbMhR36`lYKm) zgxuYH@s)~|k4KpI%;dGKfM!0>pKhMG_0H|$<$;h*{PEELjs0--&&R;pDkvayZ7!EA5X<6B=au*8~>T(<>kGnv(4d2 zu?keI{L}HX>vV%!k%s=v2li{-JW}!>@uwpGzcQ|WZ85PqjJa>fI6pDZ&<*In6!Sj* zQvBeTKS%(?^IY+jWhk<%m?;=I_T+R<5%L(M(W@2 zwg)P8V3PT^{5v(fPE8Xz+`*smV8y&2KfwQY>U;0(?c3o)_VIM8f9BozkK#`={=-X3 z^o~lM7C?NH)jyP<-YsX_XS3Jg|ID}TkN3~OqvcL;gdttD`Hf<}-T%=0Y4v)0cw%0V z&3`~M@5b*|e-0o6Oep?bSpTyLo_wO$pH_H(=yds{F#M||^RE78N0-oePw;}^;>Ask z_jBuWPjVV4=3V{G=JV+>9*=pjfBWL=c*G2^xn|#x(#*U1bNm7N54=Ew7nBy+CjiBt z58J=v4^PG`ydZoy&c42Y`e)wj&+;3dp8?A1&wN*Y;_;FWs^RW~^yvxse?tD*0zr6d zE^x>dUx~jE*MDKo?$-z7b#C?s{h9CTzdYQa7VTGZ0x0HP`*HTi77!+m&_4&`ce-2t zVlsV(S7S{Rly(B0`-J$5R)6n*mfvpZ8|Vg(r+5J~J^igD^REA%Eih?1HLq^C2fT8{ zSBiPp{$~q30DTED6aN{qfS{T8_QQ$+t}PqT@~v3nFLm{Y&FR@pdcGHf0D6ly^ZZmL zV?4e7G(*$HJDPaEY;l;m!do%#;+I+RSZ(p{Jl+mG1AS^9BTd>+_j$a4O>Zbd@Om;^ z;|cI-<^fspmwWoR`01j6SCV<(eixe-kK5-lf&Pl5^qBuL-}ujy@q9L^arq!Fa9P#3 z#5_a8|Cw*>XZZ*Bcj+0?q7RC{(rNz-$G^?tug;b)nRnyw8T073x23mp>BA~f{$zQI z%Uf!CNikc#X1=Sx8v?_PCuqXSZ-~EY_4o2GM{m>9>%(S`h=0uc_G^#Knvq|5_5l6+ z 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 z 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�<=>jc4S>%GE*E8PYD_ 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 z�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%0D|G|MS6D7%;9RhB64;3^ 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 z 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 JBqP3Op*z81Zv$U%93}`)l z;(m+hOLTUCVXtQX718wli)mk&wd-0nmU#1fRYm`dm0^!jPrZSaACHo!^b`1X6W%S_ z?yFYwD^EM-`#W(Q9v#FVl=cekE%duUtCQ_Wa4s;_+e$kG+KX&Q8{TazooS)6gh0VB zS}<;F?8xzJZnT;Vz8XWr_gJt@>&x~ebQM3f2(0H0a7*z#Cfl{xF42vP8M|f0od4X_ z2Nly=@P&_C#iwMYLT_mmoq|=7F0|Sag)hXdP55@th#_z#WOI^Ui?H$PqHhi$u!-z1i=wn0H2w-9_Df=#o+kuD63 zHQ_0AZZi%l(Q;4^&he+G9b8r&+CZbM3W-=%4c={MftlPuD%sgebry!t50BDDM_3qE zOR76(=r#+5Bv9Jas@fGMsX8mPc}^- zTey0f8v-TCi_BC?pIbP3TYNe#&9FXONM-ZN#C{gsno-z27AAkp=m@dI1*+BsoTjJ_0@!E7WM9nv$ zaJ(G&u}q-ASiUu5tl}+fby6{{gT(DGT|)O9J#1U#NjPk&wT&^vD~suj2+AuK{}4vy z>>}FCdM%QWUa^d+eCq+&HV@X)bzzjjSHmEmPP(Q2W>{Y~P~fFEgb7`?Cq(dW`fV6X zcM>)#dL_%_?2%V9=~u;c7@DYRtH5NDp1kZMER^Sw=n@NP&+s`Mm}bHvL*B3Ovc(}9 zYf19h3hspEyR+J@0_BC119Xmsw72kglcVn~j9Yy)^9NYPmBS`+n3HvO^jLtv=io6@ ztY_|$FNH6E_KHEOTo>JCL1_dCUBuHQrWV2{>V=6rTeZ6tw>NgtudVh8wY7uRx4JP{ z;v-8O69FuV^TFr_3qoLtVo^Iw>3?Dfi6dwmyWaylM(d9jj`6K_TEptzAphcudZXB6 zdfp1Jcy;2UhDKS0vn+|>av1%-vhvd2gwZ{yIqTzX$#RV>c2))M5epPRzdEeyYtX}(sCUa(NCBv0nCyp-Q5)?Q?3 zD`W(d*8G}z5hXWxTkAtapX&XyZohGL6`=dBU-6mP(-Ht{~ z$p!{dd655XtAIsBc|;lR{>&jRtSD$t}lw((Xul^=UaKlg^hh}*fDQsec>&| zbPg03S$V|k^uLjptQ`614pv(HeX}n&|BC4C+luKsc*8v{qiU!fo_oG!P>;VKY(Y{s zBP{b>I0J$^FGpCIl&hXh{kw&;vWC~P9=y9J+n$tZSuSR*2%c||Di6}E*X^>? zT-hVZ(-B(OScosVrtzC?7v}s-yRaix-z*<#Cmg< zC7`qss#aKq$4l~*b1=O2NM>lmDkx2FUwt{AI?OLgt47(LorMf{8dX^1KkHt9ET-pR z;?Gv4=dPXZ`4m}Y3fOddmI0QvQl@Acd=>tF!<^Cc(=Gi|u}o9%4ahVGaKf|psS zv<{rQx1x^Q^pf;cjNtw01ITrXZn8r&wa0m>E=Jw^*pBjO|-5JMqc%qYKAH zE90$7>)FB8X|*nVCgof(mUUdjL&t$%< zoesAVZV^?Wf29TU(wa^z8?_)r2P(GeZlUij9Icm!ms?G~Cy)2hV&RCwaUXX_j!v*Z z?7NfMtKUX3cpCa^6mHI-d;U!nM+Mv5>ZxkODC$a}7|2AzOYxV!5-e|t%912{42U!W z<#T0$)i3N0EH7G;gz=rrzarY^AH{Sz{S%wjl= zco0_xE_{V0uNTvmc(JTt>YDV=vmszIooOL5_IsNJs6pRgS15r)2`!O6K3I?JnU8ED zgq=u@R5G?12{Am1yl{NqZJ2oxnUCB(ZNrdvY9sBa?sTF}Tl#Z;9UpZD{!d z;0d`Vfo26!1p3?-S|B!L2SadmH#l8p$*{RjG@0Cy`M|<^)L8ar*5}`x!-jN@jGFXd z@QF@RnkkvqGmqjcq7%z!CS|2VWM~;;?#i|Ee$Q@fAMszMFnN>!MxZ;}C^9b12SN`Z z;KW?Q0bw-`&$@AtPO^!2N78BWJimul5&A>C5XuP=7JX?+;B8}vGHqx%79P*ZchXD? z>Nuz;*^{KDHl#xCLoG-uAa?&?mjLRV`d38Xy;DqUY^DZN)ULR?WM93E(D4iiT>-%m zP9Jy}P6-y#Qa-o2lPXcul(0|m+r;8s`jvxQoJ@Ame;fo`rB>9Hur(%TbNKX-gH&70 zh2|#ArCZP8(_s$M+MdpXpkdwFa^C^w1vkUn36q?u2I>1FmUgnTx_)Q843{crI7i&q zbFmF-bo?j>EqewUGxU*z6JLT{)Bf#)m}GXzS?lxS&rwe)6> za4?mKX+BewE9oUJLcO1lTvQ`3%bJeS%7`^KOaF8+aMgSa1GQq!R74FQJm=#k z7uV3;2`}@VM|pcc=nPD5D^t>e=DBWTnV;FbO8G`#iy^ZRhu_rQ=#Sp zq`c8z#|T*8?V~XwoPfOdFJlC(?|1y#?k8Xy>NDM|fP{RiClnA+)#2^}5~d2qh{)@} zXS)gJQCzR7kHdi3_;hPx1k@+l8^ijag#)<5G(I%#JcVbioU#!>4hY8F{EN- z_;twFc)lmVkQmRZ_T)JilZ6mh)NR%?xwF)ymY(BcScq0y-=V{dJnsQ6)~cMhyLi@? zvKYUC!?sl|4|egat?J}wakNy(12=RSHyO{-TXD302m5T~P?wTMJ$&3n_L)k!%f=2> zRRd3TQGWG%(?v_7RJ)18s8I4EZjPm;q_^2LPFp|jZ(IUgT2kM1?1Rq0$RDw%?-xX~ z0r5t9_MW_dDxrVl!ilat-#3AUZ@gJ9N9P6^aksAoF`nebCfCL2?eesC8sQDw*0!Wv z4acF6#dV{G@+{p~V^8nu!h1;5e{}9EK=+*9mz$9d4F5si0Fm|8NqfxjW z@F>J5AtUnu?;eHQnt}f+iet+P?Tnx#WQBLF&?g>_1_ohRX}S9D8W4~u`2en~*h6ks zKFQ4yb~rTUd%VcwWHJSp@nP%vKf)k}A!rJM54M823R&byJwC9Q7c!vQ-lHLPTA0j@ zydQw%)H0fdKtN@v8^;>(@n$KxqlFjl`FJ(HT6!-4@hH@`XqtT?RW{dYtXk&saOV-) zN0yO%wb5nzr#kVljW$Bt#59_sOty`V)<2att%N3sStU&g{Zp}>X?i=r1DJ!hg%war zaz`ays{t$-z*u}w7fnS2!4j%mden)wjXbUNV1U8gI-dYX)6gdP^7v~uFJL(-j8@ST zVW@`hLZ_|JEClo?^#eUMjADl`AGSg3!P^JKm*90m;ixb!pE;`ZD^3C$li~dXma5e0 zgrH82p}5Y!8|HMaZbV}cFvs;dN86#(8-N${A*85(-v$VHOnq7%-Ltu^p(e&_llkSD z)*Rikh0RF~Qm^s!EhB{7@kPyBMTmMe;;i_?#@c)b^%Uj)BZwa!f#f59Hvp?|aL4hsHma^jo*F>AdUAQr zhEOjAC@VPHa)NCs$=?(m5XJN>eK5c@W;!s}w^NC-kW$x^(INUb2Enib75%LTG=M8Z z@u&?QscwaT=HXeLO}^q?hlC4DO}>1xM^3V%vmKQ8pfk&q9vmHa(;DO)#CtTTav+}V z`v8>lGPV15CSA^KUY_vrAcikrd=HJ^UOzdGf$f)K9?*zN2-9G>9*hHi9YDKz>}A;w zb}}d`KCs}F0LVL`aE9|c0Wi}cE(UjE>Tig1$rVa`%tHYf)nYcE&9(i+u&}yFm#&Nu z@(}Az3d^$@IC?&Y{e%b!r$tLAhgH}KQF(<8%i26uXZiz#UY#dYj*6z(O1!fL>xor} za(jT{$JQQ-YNk4rbfvvIz#W7;z>~NJ6JK>ZZ8yzU!wSDSDIBgq$An>NiT@i$wUPGe zwh_+NB8+wIIzyrINzK=bd2ZLBsvoTxuA;Q{Ok3ZKQrrO9XB+S<59GNCfpan$xce+)L`y69 zCJ*-H&F4!a5$~&XwTj0ejF*2!l%F+%Hbt$>;P+5YxoE(SN;&p@2L$v(RjA^V_WvGkb5Y}`D#3#%@*j@;i;CE*K*rWJ?N_pBgN8k^_9^&=$Z^uFISnzEXndN zUM+LfaMc@m@!05LritTcIOe%{xOxkc18CE58PHxhIG+wcA7@yP3U!&(%hCGi*bG;- z1}ocoS`ouNI$Y(t3{s|A^p1v`rrhqBqgRKk%EvA7D*2xF<=>mi&G=Ts3ass2#&F!+OMpe4b1t-*ouma8;!WF2?}R zuoC1=vU!}`j}%`Xu5N?1etBPvAq^{GD07Z6Q^|*~y}N?y-ume@2BwCazSKsYf$vsS z-^;<#7~&dM4%COg0S2{(rN*noGaYo)5cTZ1Nvg8clV?^`TV;B4451Ar({|#X!&?3m zl;sn?dj$;`$1@6JcEinmz;o@jq6Xl+E?;q7d3YXh9B$^73)=}pj>FXyFLv|_DEf}< zFDsxeb#x<)ZVorUmOD$XfV%C`ZeKBd%c+gPkn3<%g29L zz=-k{^DuBc+)~g!?u;R;>hU2x%(DfCn}?R9r)PSGj}1}P3`lWT^pU$#l)$LJ}^S3YYvs?uK_v)V8ovZPEGY$;#oPB*Wh zF2By*hBmUO9@0ve-{`|DsLL;Px1kL%M$*;qm5(4Cva_?YtzYf^ZnUj%w1>!M$-n%O8upbC{a)Wqm(PrIIq936<60HM|qKW^hLy$gZVd$1B6nTXB6^ z$ok$-(9h&(+TbljT=r!~_}CTKmq~P49slx*8yVy)xAQ)c=ezOZ^i_`g4&KDs+E`QN zz4#SLRL&iJ6as975oqu6JaSvS9wjY5&z*cTIhwrV@pxN$tAq+-P3Cw zJTMf!1{|oMmL`rGJP;I(IjJ1)_~Q$s=*%JNsFku&92-j4}FrTitmnnz`K`ZkMlQ=$1&I*H+4FB`# zExo8-_|0q5>S#680{w%oRDYM0EllCkvScf3c*~G^OD+TvYT+g+v?u}c;25%jSE=HD z#aPYCyd2K&GA!F%pE0^!JvfLYkS1@ThMruo$KH1a%LlDf$UTit7$x`oAD4*6OD6c3CWSBR*L>N6YfJn?u@d7QiPWUog zCirY?Ae{2l4W%sa6HED)A67E51afP{C@>|T;?DTn`V;{NDh8eJ@mPx)VT(~ggW7?b zLkD=g(hjnIWiP#O1ohobR0W8KrAx}@$aRmU<*lfnaz@%|nv(u)T{4d|BRhx>lw)}u z3X|#NyU{Vj`nJZ{0wqx0g9ZiuP{VwwB)x!&%`!X~iB;;mqB?4ox(0bIvhf(J-7j!3 zjW{*{OBd-q7l%8Ba3E@SfTp8jvQ6A%-G@+#ubbeXsoWe~xtvP#xGU|e!6eR8N#KlT z>Ooy%seE<-%Y;Ry1@(g=z1F$DzNwNX;LV1x%F0T5K*M|^3zkr{;po3NJV=gZI|{Fs z729!5JOlG_DiVDf0&5o2k$8zL*P708UDw7k2z(eVDFd!XRk4K$hm6ycHnT?$8a}uZ z%}qeu;AtWIMo|yT_QlX*_irJxs;;tjF4l622cvBf4A_=6E1JiIxcN18)r&mM=iRJm zPR8(&ZMAl`r*^o55}jAV#5_-j_dN&9ffAjg!bBj4&$?OBoQTzI0h9G!YKJ-~(RnFM z?Ct4{!?Lx2IZ&c=M2M(s@O1v{phRZ^)|%PI7B~8t>v3_S^=yb~SXAjHwG~#D*%pNp ztwTagY(QKrcjRKu^=j( z5XQUF9!Us5{qejs*YuP_fR8O?r%IcSiCSk;sUE0V?f20t(ajplsU<$%9P+ATl_B7w z>k&zx@UZ)$SWQcIZ*EEbRQ`K|m$ZbrPQ7qMSFzlVoOAGvZm`HQ` zHh)}591p{n_|oHHB9+F`LTxl*+mHh0{utjkjH`-pe;Cd!@4*$zeQDZ$e8`X}NU;w% zDOKo?hdI&MWkSdpqq0WuNf(3fgnnHTQc?CdFLl9Ky>g9{U`xx&LMnRe*C%1T700gD zZ>NM?_&80qn3>Mi7{5WRox@vvX?rE*trf4`K>=Aj7l#Bn`maXRajx9GNwr9@u%KM) z^2Yme{S9BK!ICoRPx9qTG7*MzW=Bm_@&QVMdz?fkbtgwTE#oQA9;o46bM&Gn;INWe zwrYq4lay6ULxQE}HSQ@i%1JoM$x2)TNl!;{#TAM}@!(8{4*F34Mg-cy`;>Dub&8Vk zjB<@v%Cn|=%JLa>V;2}Z3{N!hq)KP(bWbP1Qa$#6v2xAg-l_Cg>qjjg1vY!8VKEl5 zBrUg=U=XgAPPGYyb=`96-QR4~ONX|^_AiwNtav3Mi;8@q9$SbDCB#4O3Eu%6idiIWriXL*+9;I1Zg6{RG8uVI`3SzS$p zon!imgiZRtb?sbdXHP<%S=Xw8X5MnFpu07cOTiZ=+0a5%rk)7h0uW-+fxKs^7V{>{mAMJ+8isf?ZNXG}3VnGQ{`7fEo1&%n;35$U!> zSE_S>)Z;{e&v&y$x zRm=SrD@yz^Qd1jm=%zh1+>O+9{ieO@6{wm#&bJpcZP%bE)oGR|zfeQmWG>ETaGOB} zM*^MwTQeLS1ehA|4gBtc! zHjJDKJ01$5Dta2ZS5VepTDnJwu~vWnCPZP$idRhEM>)=v$1mGEm>_f|f1bbtQ2{of zmy(a!$E~jEV?(qov3&{7fI{q;n<&W5xu$w_*slY1qx~O{^mKtyeXz-@e*D^-K=GB{{gNlZQ*(%A^C<)#(Eo~T|Op? zPnMq_LUH^70-Gdj%t_=E^lFID!W;`w4;aX%&Rp@t2HYSDa#ooIjYl0D_<;fkN(lmKgP8v*;GE0pdSB6D?RG}=%;O4m6*E8 zC9i+s-n2YDqJKz`Al_wSQVH{uHQ)w9oOqt2_cdt714VLao09BG^sDjFWOg?EY-gsO z?$#8y-&iyDWV@2=lws6l*7K#A<%&S}P)BY|;o_ehjY)+mlZYpBc|^pEO+A_M2YO~K z7jd(Xif7TTVOEDHyZ{$qR(4|VDgDU@>oQn9ml&WuIz2hOd_Jw~U4sndIB7idkzGng zcf-b{)z6Z$#;QGmxNlG7)(lUF{oXtnljkC~FMU*4+`C zI>5q_!IC@ldyqJXL-dF(tO6wOvzmI4Wk_*;m-^@!QnfzMMp<}%UBHvG5xXG$w{(G% zH!ti*&2sp~MYwWaS>scKIg>or(4jGTL#D2wdnzZWu+npd1gN^l%Al{Vn$WY{qy#l@ zxj8(Y*WS(Tb=sDe>k`eWBsrhE^%?0Ub3#?^lqjXE+Dn=-HKH*CWt!X{F{P{8p;5-F zYEMO3W0+lJ5a%Y!Y&AWbj1IRxLVdF3GyO{sF~A$LABj-}tnP}*+l zFr~@Wiqn~SxMvBwQ~B-s9jN0RoG$xk9h5GTEsjtYu||Mrv3LiPRGQN@t~Pk7lv3#K z^Ke=#y`kA2h&L#ARD6^&WL^Uv9VG4NgxhgaINj@{c#sy}ZIh#oIiBNd%pg#p7LBItGQZAou{`}Mjx)w>H7&J( zv-0Z`lr{B9O76$~(oVp456ZiU$i)RkX!R4_7L)r4-6uxI|mz|9m%HdfKkSybUqF7H;<5Y zHT($tWyv?N!#T#DR`Qs$z_2I}NnuJUFlPGC5a$h>PChrNs(|E>6lbTI;KZaj!S93 zD6TyBaZy6K(;K6NKkD&Hl(YsuM*b#}HQUclb<&(oFWPH!ib#$F^W_jMWt-JqPQyCv!jG6+XteAU$!4aNvmu(yd;t}yKLt; z=|I``Iz@tId!19pD%)3_0(RN1dTAu1Qnr&l9Ic=kpj#3FrDP9@z^Y&`kKn3YpNQao zv3?ohtWq6wnaQlllwGK`E;dl6hr1+#MS8PK#46D@T)bVNYh51Bqm<_~4`z4nmFO}D zEM1%3g+_f$}v&@Z-@MvGtBR>GC zq7Xa=?CIq*Yh4#Gi3Pzd1QAcM%aedr2mh+a+Yckl11JC1822+I#JL_3*5T!YpLuLh zjk%@Q8fV}BQ?wKolTTu^IodedVTQn-r&qrx&AQDP4d^w1 zx&oB?SY+h|qDvJ<{>#JdxiOEPeY;T$&v2Sv%y|VQ%%sD=3(0uX4!hrBa_>DF_d}G^ zyTT*&qxsZocbYu*@f>h=5hils3uGO7zvg^K6K{hEx#y-T2AXoR(61?hq*Lj(49&mG zNa~bhT&z?FUPI*zvk|TLyfX^uHpyv|%JYvl7t^ApDM+s<<=XG|x=eVkpkW ztMsdT(1R;P9@8IQroZ+$q2%c8@kqil&zL8_e~@cWq_`X~bb*E1=Y%*b8KffriYUEg zBqi5V*Qz0ri9Oj)bPwg-nVN!5Hm5ICDu+X#>2DU&lV*hPD>X7||Dl-Bv+eB`i%YzF zI$QM~#YZgyZazD(B#qUMynAt6k#7)Jp(*eK3lwo}rebAZSd0E(LFmorFd>FYfwh=xFD+ihDGOOIB^knS`9XZmM z5u`qO5U&qkQeQ)FS)5E%(dnanX+bJ`aFRbhk^x#Y+Nbac^$Wev|3-_EQ~Gn|^Dt~V zY878W!-&x2R9y4&G>os5?uknCi31s%H>$p#%uY8@O?>r4t!-@5O5eaHJ6_7c+0lOPF>rrUB8e{_9$Bs z#AhJPYcDBNFQ-)M$sX&t7_KVsIT@}khpp?<;R^F7C!=eD@j-FpWl1|uOc_M5Q zD=Fh}Tw+&&2`@RUXfG>Ys8D1o) zz)OtjfC#MjsoftUc~^ zf{9u4)<0KBNtyT7bC^ZsrB)^IeRiQ>_Y}k33dVzVW83W|>Q~OLNcC`RLB$TPE*FGg z{dyO}%DZkVsov`}xIWvSR?O-5dRz>R_xfxsrQYk-aGhLU`AjQytG~U1Ftty`Fz<%g z((*p8>sP>I+F8S@b+spR19-zAk<}m50U<`G(__AZTiiTufi+)2F}$PLR@F{cC)XH^ z2YdsS<}Abbm6S%p2U-@mK4V+uDM3^PkUu&=$Q}=$XIYS4o8#cqEKKxuBY&ErYCHI| z`9l4uTFyVJ;M6Q71@dXv02g&*1KkJeZ@vW=-$O0mJXC@>E1=Vb_jg7ZqjL$$LN5z1^=Vg!9RzOS~_~&X}wZy3c@Z z)}o>D8wDh}639(U(3ZddrTB$8Ch9j12xqnXS#6UDOkF{&n`Pl)wmhhQHKSpW_^)VlVR^P@4&G;l`U&^Y*GgZhAM)DyX#4%Q5Lwwa z`i1(NeK&2nrQlpZHHa>G>6DbhDGJY{b>KzmSj)og#0v^#4+Q6&<5_~yTZsXF30y-= z=Pnn5YjT{$dn0Ilvc0DhC##GY6Ew3J+r(*s0&$%mtaG+7LC-r-&W_^B{+o(ufDmVh zjub>695qaRM0gO^;DCjx`OJMaV{O>=jk7 z=&UFyZ|O~i8x>sx_^ig=#(NoMW0n3ixXj-@2CnEuW3o|^cYo2 z2H&hCMuY1T0&0&As44PIk2EjDix_BTsj;gSO)No|c#P5VS_S&X|bW=87+R# z@*UpcQA)`pHrp>V^`7z%p(9_fEYwDjzea#ZD9Al)cUq}!P|c%ZqbtrXjCc-PRS4kpnJ z_uoqIIVknmGzIaq*sGG;JO5^W%7S+)Dbg&jX{Q6tFS$bN2J=fkZKNRoif9}T9e5b- zqXxfKA{^**JI<#sV1Egn@NIFiDwsP&@)x}s!`mTGGoo|jWdb)e~^Y|dL|Y?4vi1gH$LwXx8J z{iO5Ea%7#$OD(>nOjSd{y|V}TPxHbYo#GFDO+ z$-XJ2a|(;ug>?hMYh#fgwE^COeGhvLQ~b0!f^8!NkKhpT-w+>HIhd@SfwK{H`|?~* zOtQYsO%X}Q$=J4TjmR|w9>lk}7{PVWVp!6)I}I_nk(NRdtJUn8vh<-vc4n}^IG5)G zBs1v-oYs#8X4MF~jk35?6rWNp#ljsNU3k4EknHd7L}jI^h`o&xHwyThPPeeCOb_YVXn|Qh^+&1qJ3c)#lm>n5D~T!MQv1W z^-~KJq>dU9R2w-Zbe)BW`<;wX+lbUAx`|_K^Be0Q;p(%rIDjq8@EIIu+gLW$wJ_P1 zuSREs{uLtXQ|-$YvlOAWXBsLZezOHiIS4umF}D%r*WEAZc^1km^L_b^5O*7St|?VL zdAK`KI^3cfbw=rx5Ga|XX^7B`6&6*uXC4|tv1y&_*9R7C9KgK@)QtgII&U~ANeQoL2X4w$TG>usZOl;%$8UVId6>}l&i5%Uz@Kv-p6?`-)prBj^r@EGY`h8Io=+*oGkmrunB2#1 zMyc(D*P)HFnr{`4e{LM7RNwPy^+j2Etw!N%vq4U&p5xPUt!p6JFJnoiJQp9Mw%yv3 z#km8Sw3YIe@vKt++6d&ZKebx+?++lz(-s-PtH-KBoZs|_0|&XNC(k#f^F@(itvzv> zd7j5emc@~Dxr0$_sc9vIf?}*p!?z-R>ax%h(g+Gd~*60EZ%O3|nE2)bl@Z^$I65zeP>EF_mUF31pGr?SDAn+AE?W@8 zg%x$P^u2?U%Z*i%XCtZ$YigQyKqwdH=6K&vmYyiUQ!|3Qurg%@NjEbN2W*@p=bFd;=M4brZsm!kmqDtX~0lQ@?7(ihkVudOg|V5<67nuui>-8 zn-D6BSrf!erlZ181$|~932OF1G-$OsqRv+7CXYay9TQ5hLi^hI)Vyk5u-`U!Lb zT7nRafh?RVFb_W5CwTBVP=x0OXnA&t6=uMn`)Yz~U;bc}LD@HBe{ZXnsDs-M={9h= z$td{8P7-A&?8)%LQB{j&Q=pf~w^JtXgh3DQUXZBT>_X)C72D4>7N%oL>@Vcl(_r&mKPJ zWVGMg2#z~y)65B{+$@IF?}}qoOSr1cs;Q61t3^E0ZYJrPoC4llH;)lSvxNcoqng{FzWYc_=_;fr?c9+Gt8R98EAPF!CD@Cp$E$x z$FeC#{@)(K@*eD$!dL$qN#ph;S_lYT@BBoRCdOg&NwmT_p2#UJ@9xPhr{Bf%T?w2q zOPu2v{Y*F2#nZW@gs(TpOY|nP(w~tjg_uMzo!rCE8puLxrUz$yV~VSVFCF+(g!dj1 zO;0A(57P9ki3mVNpPmzKRguGjjsNXsmm`k-LSuTw-!wY^aUXbm{86rGcK}T>~ z9jGbZ153io`LtmcT!1FHfFJ_?6vrhZyCquI0MU0UEJ-nz$nsBgaL?UEj&@ zzXe33|N7^`GP;ROp>tKh5<0v|K51kW`b`DIaN-{pEhSrx_>G0drCUff=x!CTi8_hH z?)vGy!eVo~y7M@YQTI!zAAPN$QG~UrEFZP;LWJ_lzZg{QP3nBtMytE*R zMxQT159;E?QdBf~R`w1#T8ue>pa|v{E&fp#uTpnp)cJ(Fo=j`odE+`sVr(Mu5; zEME4pm;(q}>{KTmejOorEf;OcgZP1>#rgqsRN5mr?m?qRBPjZaW5$F{z;n{_2s*#9 zcA;M6{$c@Ae^;}{hOPSgSvobs?%tqn@49tZ(NNm*FQSQ+@>RWmv29~VwR23Hh0aoaE%vBF!)>9&ZR z7!hu}@r7*2qN*bbizNH#tAY{|QBIvuC>?CkMBDpLL75iZbU{l?3Yo#ggOpt(wvkX# zX(3S)806@%f^t~oo$AWb_XUO2$J(D#$m~nE-foJ=|wDg zGJj^7fXlI~v5Zjg6gDJiV5vQr{jh0}t{w-J>=6UxtBR8700LIm<(UN|XHx-OzLSYmt>F^;AFETUL2HLX=$ z5zgb#lB=N8BAP=;uY%T`vSJBNp}iuSLr4%hQ-_;ii@I-=Y9g8i6EtdfMAQZ=(qv~Y z$sbV`^EE}&!r3jDsI8ifs1BNNny(#^bRUc;7f#pL++lh+$Acy-y9x6Vy}~Jq((4hW zAtlyE<7b3(Ie2PqbbUl?(B%3N!sO|Th+^U7l-8Lu!!8PX8^m(M$R8*s?fVES#j$`k#o_U{BeH%Qj6#s#p-tY{4{b z)lXQ}A1c9_Ou-(sH(G+@2CR9_Sh43lF&Quk+tcF^G99y1Z2^n6;LR);8alz~y4r5E zQe6xwBkcP-Ssr6o+P4W97l@nX^UO9Wr$zp?xaEj zV&bDh5;BXB*dv^XKZ}s2+hSQUzfOHvxuh)Ht7aKg7TXI-h><4>iby7RYY3-fQjsZ? zGvjGV;qwU3+0>IADxWot;S>TQV&;azGLqAAOTu=%ge0r|1$aq>^uHq7qR*I^4o6mXSUDzJZS;2DMs~t>xHq$4k z_=Huk0KSh>MNwO_D}kPkV|3PcT{)`Bn=9m|3*Ks{(vyuwow(6~HYhfjUqF%+HsA3X zKjHidHyb5L>y3zEWlIllwhQZWM(AA!QO6^*I4;VmA&K1-LrPkkkBVwqn-7nUrN#97 z4w`eyWR8}Nj@rg_U8`)#qh}l}>*}{LdljQxBU5QFd%x!=a(atR#i~XInBLZPiih!T zr8dmhtD#Dio?Pq0LjAn~AE| zG)5RxeeRPzEVy^|1qUuQV%A#5h_Ao|_O1RohLRUIVeP1%wP*EI2hC=s%KWc`w5m+= zI#JWITeWE2C}BRAQ#{U}M0p^BO{XIGCG~=2LdADlJMA-yZpKdpR$4%+jXbO`^&zDG zfuD%`NLKFT%CWGSPWFG6lnJgXp*g3_H}Lq@P`a>ZZm4GKZ8-6ZeuNt?^OKG1PX6AS)(fjdSOG zEzEm%_Jacq*kNtKCD|kC*=-1mV6Hx8oPb~OsiskMN2zL*a`|ja zCf$omaM3-J#UZai(4aW-4A;Z8r!(1P6`$2K6NO|rxyTW(=0pp_b-S2r?n-p39ni8J zOec^9awsKZ#8PO(?caIqpU%;0CE-%9)Lg~+Rou&8i0 zKT(d(Mf2gZR+q`5-t%!WAH+z=k^J4b25~xC6PF2<9DE9YK{OssgG&l0OZIo;nuiN4 zUSqYmd6Cvdo8i){PW2~orn@q}BiaKalxRH=D>>MS&EaY$a`b{F06*>(S_4isL_C74 zfRv$=(TKztqWblHu2RmiP+!#h7OwaASM!Bo87${AwwhDzf;DgCV{Kf-Dw8={7wf8w zFg9zZTTRaB1&e9x%Fm_yv5Lxw0;ndvIa(YafZ6mt) zl^O9@^RZ&dzz6kY@<~|@x;d658FUXusVR&!W-1%1YHH}ZFd+{A-xjKhPs|9nXv>gs zMvb}OSY$}ih^&m|P9}3zScQn`Zpk^-T7)_@l($M7(Ish-!UD=H^^A$&G;*wup>)+| z{e3O4IhRaiTbARVhufkk-14eh`vz(dnzA!J!@?v|xdnhVo?$X)Tr;h)jp4CWBf|E3 ztc+e5UN>CyyhmHghTM6au^iAfp9h`q@s_g37H{j+W*=L%982#g;R#skKK-;uOX|yJ z^7?YA#9k77eYh$bSa1nk;0b6OvU)vej5s7x6HGG7O2w4@#G9fOeb}Q|*&@c5 z1a&4)Ryug=hj|q1Sj0OXq0{jn*)Ntk2xa_du5gL?vCoz#j-oG4S3xHlzD~?5Bi>A6 z^dBoc)z-CM1T==414^NvTPXKPYLhtNRV{|3TM^M1jRol1m=nT&u<(*H^nm2dj7AK_ zm6n@dv6EGaNRHwTbacQr)7+gPy zkYWNNr-(UOSFQMd7tf_ae{eCXOlWOHS-w?MII5^rQPX7wMDXovsc#ENDUsO&Qe@m6 z_fyox;@f%7Me8*9?3{>d!1!-m66S4wXc6n0Y5J1&liS_E^(o_-PL>ptJ2O3Khusr|2kI=c!& zJ)<6x@he-RkXWE%eQZfK$bo2$I3fb46;clIpq~_41{{{A@}f%S--UVex=%v*Sip?> zc;uD7f)H^~Njek(qLJe4U`@?mEogBb7qruQhzN}k#%%NAzPg1v+oIaiy_4xf3-DxX zctb!J_7~x}-3=VJRA|k+M3CA;E{Q7if|J>NN{MWPP}F27<=Z~Qg4Nc6&H>*vy=KwN z6TQirR^$jbV|6aUuv@ls0O!bX5zsFY)EetuNt~mElP_PlFxjHr!7g)K#Iil zN#F|?!zWqnj0irML=|r#IL8UAA=fV>9Nu#$ZH;KzSW+(pJJ*u9wl_;_Az(IC8!oiO zIb>*qKeSM`puTqcE5c(VtRA`wL$DJN`G!zA2Xk2z*IQ)nj4;w7tcfT$Xh=B;4vrnT zaSk8H(NgQ05dAupy;k6*s04SyX%Zsapr(vC(o+sRPg^5C4NBt$qr;~BFJ&XN&)sWr zy&UrS)UF6zgH}CGZrVOQ%IA3R)&~w8Zwz~ory_a{T9h#8&Ut7NKGz^6%p@65f&Z&sYi7^iI5G73jZR6qn`P$qs{D(JpWiUR_(I z!l5Rm-{fM<3%J%rB0fQjNB@p;GUa#slt@xa;lB~0F*_hHbjj4P3K)5LH%A$6X?LF% zR*+}8JPN0CiMFJ)692YHjzn_2(Wy3(Z&^+Yr~Brrco)y6Sdwf$&00QMQl9Ku3l-;$ zpyv|{labu|nZ7DdoZM~wRvtegW4H)d_Sn%ERg{ia=sAnwPCO!*McuT+PQE<%Rk=Rg z6~a{Y*=<%(($u)8Lb!gFbAJ&OR}JxlAyn1q89V#3Exmcp!^uHNUd5Y1OtQtYJ7Qs| zDOsosE(&J`3COBP`8bHPtRkv+jas6Mf}nZsFM}|Q>nE?^3&(r$!p7z^bc`KsSd!CE=s)K#x)Mp(xA0D8EMe&a8X%l(293=*fW9n zk{FU>@vGb%V(a1sPLrLT%Ihw7(Grxu>|!{c-gcqOqJ-2VCg_^icl z%ZirR`qxeo39sLBQ>gohuq*a(n3f>>NEgH5&(ki#3x6ipI}Dm=`)DVr0`9k6oF8*f zYjD{WRXrSeu}i{>y#MWDP3UYIuYDRFi5MZ(7Cu}^gx~hIOA6SK_V;9$goy+H?jj|0 zo4%*Ru!Q4RxEKlQK6Wt@l<&8f!k~#&BF)ABf?+3OjbG+pxT!1o0<3Nsi-RaWV3Y6ZUf$#GxZ5nm@$Fdy)03`#ZEvaNS{%D(sdB;?4-HTksK0 zzA+`Q2(S5`8zW%F4ktjw5h&?Vp|?ENij*|B`vFePUOxJjuJA}pQBkWU{9H$dsJ&2Y zH%lsITsseD`XSeOmPo{qu2N4Gl;QEP|1BgTb5lDs7s#-hgK8=yB2BK6JExGGv?Grf zl4z0nJo>(njG6Q)Zz+&#HGEb`!b}34SxCs540^JVoJ1-=6p~O8%MPst@*Id<+J+!0 z4|(wr1!ace)k4CU(OD%~Ab&iGv|}Lw_OGcz0$%HT@gP#j%3lW&;kl%h+X`ft1*Q}d zP}3pFLL$~I$VG+Ze1C(%g})V&49<$I)$VjLE$Ae&E1(XKx4ewUz6jRu%Nf|32_L!K z7cjK%UiPurk}|`4JM#gO7p-iRTUi&#D7XUb02@*=y$h=>C@Fox8=$q29q!C2AGBK` z)^wcmg@xoXt{GfLoX+bpa`?zcce-=Ru4YOM$6jXt7|wGrzls+?viHTa>@_}!p_yC1 z%bjE8Oe$ko%a7z@L;^14ni!#=_xL-c9HC7jn@tRe``9sU1T6RA(^rA^{fCEJ4&+5k z!sC4pQkID^po5crVtMu<$H%eaL~e^?l^1y{j<(#$`rR?v6F*WJ$7)B?9mo5gFXC9`QO0It9zba0QuZ7~ zN*?B2 zkIA{^T@Hwo3AmTD++ zm9x2|3~NtP<7Rz7GT;`_UgYXRto9+V zxMhq78P)I1pL}u^Zq9g*1KhObJI-)Ri08Q9%_+a}egV>Wjm-v}IoF;=9-wwm5%Czu zxW(|%-r#1~TfFF|*jLcO&YXFkVqz?hB$vgK>zM;cSTE5{Tw}cw-aC6!>eCcL=-!SfQXRftx*rO1ueZ#SC8RHvnb<^@` z{lm=}->}*d&b(Q^;TLWR@eS>6PWgs23y{V)JXTOf9^l(SMZ`ChAL)J&ET?rd>>G}9 zQ|ueAcT=8kcr})XZy0%$Gc!6Ci+%iGmF!pGt zZ^-dLw|IxcJps!*`1FUM{n)|7Ef2BTF}{Sy`#vIL(KvV7r0WfBTpY`@pLi;c6;JVP z9IJfA_+$N?1(LSB#XfN|;xCSmW3|V)BaZid#(Qxh+G}ihTudevul>e?I4R>f4v7%JU zll|jJ_9rLBk)B7nuYd%S{-6NOu4Ch0#$=nxIdP=&EZI2P@-0`z$ppO1t8r36|FZUp zfy`P9^S#-X*_KGo6YxF6xfahS)B9`tbs+J0ya4-%uVQI&65E^SKA!O&lL9 zB!1%dSXw)Zf5r;gn(SGr^ciada9 zc<`k!g7ksKL{)&W>3Vs2O}dTFGC%4Pb@ZJ1fzu)M&i8Fr(!#tpR?Z(d#~{i6ZhFD` z(bdzLPtlG=T0u6j({<)&CoX*GrY%?2Y-gsuf->e8FH?NvuE}(o4bTnvWxc#*GbVXk zQdh=vD2mI*BK*f4xz%Vw6e5S2$m3QvV{}XZE25LaG^X?oiz|EA95b3y_`N&+C)(A# zN8b|Y3kxii2Q(5z^d6xf(A;!yDvPsB`EDqKVQ+g!rMmL3CSA2Wg$r(ehgW0MeAANL6ZoA) zG;rv;IG^QHo>aq>qoeR%j3O>a$R!u0S(om#a4dwuaiPt8S2Jydmu2KRA0nI^;e!ow znq)T9!uO}FKGG*}rbIqjUo)HTwm=-^!*DHx6Yba&iyH?z61>^y;!(b4Ng3ARsO4x; z!I7h#g1l%lDtxUaEN6&t>R1G?C26x&d}B7>V6t_%B~Vg^^BlZ1@|lpW{{%$+C*UuO zZ}fKO@S0Wq98`7X+POLSJcOwOly+Usmu!KgtkgTs0_6cX=e!C^j*m8vIdgSil}kJ< zFdv7(B(tbuV)OTw^pbR{U(R&OQR5oE5lPD8?zFfRAI-4Fn!Yfvu$HRm*F!oc#0P3A zy=SpFlrhznLD%bXn@@Y`KlpAZo zuCrji8x)m2-;*;p9)26oDnVMXj&Ih|SGT`oZ{9_Pc>2iAR$)uvoSv?3`o+3#>-h{$ z_rNs}Zkp>xD%}Ht*WCgQ&{sK>+pEmiZ{@!+o9M1e;QBy1X1!n*rqaaqeFRI=^@miG zPUfdtpZhJbQqwJ|DI2(K@td}UZg&cCO~$=z9hTsZ8~WDpB{ybF=I8~BscdOUcH_d| zjeKFaY5r=`*ds_!2J!ABABY8f+Qz>8Y%H~><1GM1p5~nauUZ%xg;FcURqv@KjhpJ zQ~68Ee6Ad#sb?lNwr-6!}mExPJHW?}p>pz1c3 z_+sr|O{8xvIOoF`l?J4}4`=hT0PcNg7g>12@}7JvA3#;KoiD6%Az#Z`7R+myrE<^P z-jc=6K~(N{Er{i~B4>68iZS-SjY;LElgfRuww83hlh&Q+Bi%UaoU#_s!BzJY3#eL- z4eC@m$=8wSi_Wx=Ik@8HE9*C3tV`QY_EoA|#7ch<>dL^C2O%!2B?wqe^{vLq-Fdn< zfDGUS$knG(zE}Nu(`gQ8$#nwE&!fiRygBbYE$4A729r9d4HC zj~1{b&5Z+L9$p7Vt4dLIy( zJvU$nH%*&z;22Cgq?dUjJWAmZSgSf3NjWV8??$iCkLO! z>~yeJSuC48X}Y=K`c#kNyjuisYP5BxR2Y?-`G#Q?A1D2b$G`)vk_4uF3af9+I z)Dy*~)A<%ypXf8P4>@7@di}46nmb0*wdk8138cU!?{rt%Ol#B(_ZN76|_-Owm5^G8n{-bw46tXd3#&WN-LHhW67LUgb|_@dMv&oryJrrrOpj%OQ9RpJz~YO zCMU+C7STH^Xux{+oFyDBnonU2je16|ScXFOsQkidoWjOw)Yg3YxJT zjENTBfhp_dHyk!VI6=WJX!Vd(Zr|cF94LuP0UHR26v@kixGOc7$ECI`$IRxu^9HDZvtdpCZB2> zpiV?kzP)ZeYjjHh?aXAl>G=R;rWn5spq#6oF4_(G^lc{7e5#=ChYbX%HVkj5JFIUE z;PR>Y&;II>qv<02M5t`pRYlOG%v09I@raT!gEH(rYBa4mn+O3uw!58VH&vmLueHo#{Y zuqbsHq_U0AGrQjW~V1~!Hr87y#1<;y? zMNH6!8`!cK7)AH?umCnc)03s&2cTL^V)2mRhPG~lR4u9vfPS5$a{~lF4(IiCgPQtg z3UmLBv~fPC9w9P4X8~MY`9M&4N>9^IEJyhWtMZqlha!x69J~X}`~)rXv*)P6;Ehs+ zaA*6~0i>a)nZ64km~fU?cn4;T{5R3cZ?y`uK?32ei_EhIsKY%|Kbjws)RM+3n!UMg z0)rFi$(#_tumtI~0Kh`>>29-yt-BQ60y;PV$vDV^5r_+tMq--D&-=Vgv$}zWt~R*( zlyTryrWto2;GP#R(YbrWqB^?9Fh*$!W^#Ob)EKQO8Cqt3@p>A1#{81f zx_YdgM57ru|8D@s@&L@GG;FO!Td}$5X7i(@%oI;)Ih-tg?;^DSp0|y*AU8os`CVZk z+m3EI7LC*5QBIc1m24Z!FKTP!misne0+l6EiZj448o%jyPfww^5@ITKMNmxk)58XB z=Ba+?ak{1hn31nq&zB6+_C74Ld)7+s21CV>ed5#{z;Rl&0i#M-7rX_f6P zK^o7$_+X5337Evf!CVOs@dyOOKKzCU2jwvinaY6aF+w9ThA$iq~w1i>Zlspv1Rco^8#E=!;M6`u*ZV-MK20K+lF=kT8 zhackXm&m@|#Z%9#C<>SSIk{4nhs2H9QT5eALN-ep?I1irW=Jr_pVGjBFMB&xoQ zwlEC;{BRiazL+&JXBNn^c$tncDt_?}7b?DbWz4GutoZJ_Jxtkd`ROp}In?cT3|Uk@ z^>`mP%`V4$a=Ph@F3x{#Iob}Bb~=}qvW`d(b&;lJe%eK<#(8th{-5_f=bn4cz30wM{p#%9 z8_;(#dx#|%*{@oUrlt#{nRficYq5iJX&D}Kxx-7~r>+9V{%hGPF!Jd@=MnFDUKYiP zAA{q~v2I{kG4GQ(A}NbM60|qz4zxquMi%a8fXg)L%mArs3gh6rU7~)N!Zjd zKnGxc->VbXDtkpiGW|JOiY-i&G5(FKZOft`c&j7g5x^S`Qd5T(vM<}ElAYISIMF7p z=PGnLlIHx{ogHRzpeN8F@)wfjDvT6H-Jt@R(`e&?cv!=PQagOQ#jsE&5;(hK-rdr) zq;bMT^IFhxM#crxmi)m;bm_-qKvEWw#`__^hlQoVl7!`A&&M~QDd5cnRKjBh*!IP* zRnae9cZXCECE5i!TG0fMEvJE(;{#c4pv2Eg6b3q=koXlL@lwJweDcKINyx&2;035b z;cSB(C`f;{E0-Qv(B0Wv%x3B404}Xe52B>@WNA0#Dq(gN+HxxjL$oRKh5*M5=Q4ew z?OOpPu1Ac^GMV?KZHdn+zjMeZ;HSdqsj!O#WArkgX2>M$oe7Hjsyzrvt)Zi(9n%Oiv+& z|CFtrg&EyxRCB@K2zno0j>gyhCZJ{DEyEss9+74#1yqp1G+sFkd|<+E$!|BH0k{|7 zzf7@E!a7?%j~=7`8$l0)FogWUgc7z-)#I_t{#+)7bqvgHWwC#nBgNHSBb`!~qw7oJ z>}M%L|4;d@i3_xsGa{0?{A`GXc(X^MJ^d>p!u%Ls6%k*1a(=f=5K&;BiTVC7Za|+P zch3Vdtloyjs<<>J4)M&|kOQiX?mxA#TnTT}Z3-I$ zpScnex5onJl<4P{Ggq3iDw7}P>BPC1e;A+%D5rsEYyrH*a^hU`dWcjY?JO+h-Jf)b zgUv0h1jbKu1-yIU=x3g3LlbA|dGA7IF*mgn(A;OqisBERm(+pwwh2}i`E_-5=%Oe1+i zMeQ2BD~8HQyctOwk_QTdvTL!Jl7Hw_M>;={(qj(Zm0d9(PyVLVmedA(fKX!~V>9@8 z0DaF97x7X$IwWs9pvL4(hlDY1l)$B=ixefkUXK&P1^` z#WvBS$#RtjV^Hgc3XFH<`*}ym53Wj5)atZ26yG)UYl%&A;0wy%2zuhp4X7LZ>2Tu! zR*K&!xJLh$BNyxA3$lRceR{Cv8!xKLT)#TpLGQ-I3xpAN%oc+65oVRV5yvYB(mDiTmeK zZNzYFD_5co@ZBQHa7GUqu01AzAN^$e#EH=GmgCbuL;D-y~5@ zN%|$UB*tmM0@46&gA{lD%7G)iW8X_XFdkt7%S&b!B3BBrA;kWCPmzT-AQy@JxO0(9j^35Le3g%yw}N z!7Ee95Jt-PVIn64!rIjGY)?+-j`zzFrK($v3}kc_p&v&_vh=u(;sf+!E+B_Z(>;rO zu}4@f2kwSUWPBPcq`pTrr0V@k%5qd)`WKsnE>$TzJG+WIBXlJ4qX_|du8lj0-?c$D z7-g{q>!-X^eFQRz@qmXj1U7Ro8C%Le18>d955`*wHO>&u>&u5c*C)Y_uHh{G))wVT zN*AAcqur4;jJiOA0X=rqmxOSPO^_HX-%9as5~Ny#BDEqXnJ}U%7MAd(=nb0^n8C4v z2JCC(F_zJwnu`=qT7JcYBZ=u<5029SG#e|uQ9Zo6@jVaTn#EIH9$aOX*3ofInLN+h z|HhW63PI&FmCe*}fDYNv@{er`QdoGz#myoQS-w?{AVU*=*V05Lt^$W$2e6!M7&_T_ z7?kb8iGTSvSk2ow&JlYt|64-R{LGfOV8sia>vUcz<9h=(+{E&ad@mb|XqAoTO4wYX z@Oy0>EBnR5P$5&uJB$0&lxS?m*(;o9rFRlY z3o*iO#zW#mbl_%ASVm1y+Ab_Brwumudq>_>8mK3M(Vp$j7EwLko*-9mzo&~sT=9W7 z4a?V7q8LNvSUk#9z|pRwP$ba~5^(@S>{7=-uDhFllEmSN$@o0IrxRR9wundWYNca}k3b9evc%~7=L#yu zk_G5$TZ-yuIulfyQC*GY6IG8bJI$5_{*+>Qv~}lNk6$IHUR#CjR83DaX;w4mPdY?CA; zx;shSjX_TdrAE3JGy*#XtfUQtnki*re^;!M6B^QaC1356t3q;fqDTzH%q^dPqYrJ` z3ho=vZ<|jCG&p9daM8y>eY-2BhrJf_PD1q3QIpFisF@ftA(?nK*-M`-RTsUSB$xc8 zE2#0LN#_>~^72?)iz!v5^w+kWDT`_m;} zJ`Lq7u!X=V=|HNO5II zZ(%r(?=XOIhC~fR#vWwTv&(xE<+?iEvAJvrLYO_DtD|6Pma6$BlROIs~iMOL*~o6oQWN+BvP?7X#c3>sm$?$p=Lw0vN) ze&HbQ4@A(dg<hA8xV@pmBqlD zjyyO?okVXA>Tbk`?}p(bNw+7{(*v1oK4>U+ImA+n85Ue3HX}FGn=Q8ReB^*Fb>fgw zVX4a*k--9eqvl%rFn?#$YEu{>u39aF%PyB^r4Bl5L1gHoL>5d9SS`JDGFB5!8FlQm zc(m#KBo^jR5CKjN>xz(OWc<3K^CxtzA==tvw4J-01c}PgrRIY~9hF%6K8>?oUMW7I^O?=C za&K5rHkG$k6B$VnvnCW8w%zz=t?k5_T&MC5e2b3 z=xB%G47}`N>9sD;9pl)B zhZl_uW;>GU1;>~9#@r;+rABDSRzzzLI<_D?s7|`+(o6q4Sf)D2W=Fa1iqHoXII-KpR#bF?Nyr^vo7RK zE?MFFR0b<^gEldyFkn4mvwZ5z;!Qict;lSnhOF>oYNPCvZMIK+bp7vM+e1u!ls$Ra zGRCJ~)y)GoEv8g)p0hcLs??B#-#;^D$*)flPqc|XrP5H)tu`&DPjT8-T4DNBIg6C% z+3c7`hq~^n3W~#3z5{J)Ol!!y)aLnY6{^WAvMl(r?Z>a%^{`}h1-ruq#fxofOn1mz z``8L9-4)1Yn;ui^a(`rVeM!Pr$g<@-HZ!Kx&`v$Bf~~5*5H54xZ+nR8jk3ocUqQWh zb(CKQOD-5*FHhTEd>B0Uo+A%>Z9AME_)_|sCM`AO z60ZkiQiP5-Bv$REykjV$2Lsdixi@}r0|)Rrz7zxrZRLm$8=|sp0!KAbZPOW++9l<= z*Bh>mby>|@pJ{8BV~UAZTwu7-bifuy=f0o68K#>IQQpyK1)(cj$2(DrvVU#Z{He-w z=bi0n_9iYs%;e*%{lt)6a}~jfS?U}|FZ%oCRe#g)+2%@Y(tjgpm(xemMr*6HIOcf8 z(WSybN?jEfoCm%FKD_eaC?Ic}_Y&sd=-zm_vB(w61lL6|Uo~|qV2rUO+33$@C_&(h zMnnS-)u`~p81HlDNI7tE2%t=H_25uJ9o=MmxH3f#-NEHJLA%s(x@!9%!axXg9;}RN zBfgNyYM^X6PB18)v^i`yqgp>DH2$WuN7CO%5*-T2BquH#$F1loTqH4L0G0kginsdW zywBBTNo~VJn)hj0o<78MsQnpYA!=nfQ*>2X9xFp`__QoZD+6zV{as^$>I`ymS<)8 zJ);s;Cotb*RW^Z48uPaADAOdQPDh>vxw9P|SvP#rFWq3h4GBfxaL05fsB>huY(O4A5Ram7`eb2GEK`h_* zWpyp`E%03-wu@-lCMa#LjCTTZr%l~Sqdzm3+;X%=+6YCc97C_!Usi_3;mTRUBt5E2 zcP8TNGNh=6iE{ZRBWXkAORP5r^)Buw!l`LF7s&NEMw$@`YVur1^HFqc{H(|OS2%MQEKKnr8E>-{s0qpSUk;^L@_rBk zE}O?wl8^n*gW+?&Me4@4{oh7sUP0Zx#}^y^Z$rXOc1QZR^B4Y-~8_@4?4trR`Y*g_db(sylA`e-TtreH@0K%KtoGT!Z}W|3yGjiF{?$|AQz=JrXvS zdtNh=ZbKbujW*HpHke+DHQE$B>{6&c%8gJJw#N-}T>Zlc7W$DK+2V9C8qlZ)-JY-$ za!DdbbwRdux*)cW4s<|%8IekndmEs)o6(TcU5GhIhv-OGA|2~uymb9Y`VnG@O;Jwl zRX+!y{EeUsZx~4@;WzW-aCCi1E;L9Ni@3>E%n~O4H-a|3aU^x)*G&9Z%=Ta|Jjz%B z2F|?7(;Pg=a7S)Ee=tuhO$_wAX55{xg4aGgK>w&j#ewIn zn%|*L&JE>)&+^+7-SliF9^Ydz2VaI-xfAQrhz~-)Pmr0&;yxVO6^&?uf==kAuP4jr zW^wURHlORK&CpyXC~46b^=FeQ@<^ys^jI=$&Oj;Gm2H;ouCxSgT|$8BBAC093D%Pw z2cvaKP$SQw(`CtoMd@OW?+d53P??ugvY=?FUrwN!FOtTw$s+bZ<8~m_lBl~A6w6Zz z>14UiZx19eOn7_+gyv4d@FpR&Lx*vOjlPjgz*7;5^LYX%S8C1=_NEb3wup<97H#Mc z3oDB${3mbc(Dh|V!zci}w;J0u|ByhNkIro;-(bf7qbVEtL&S|I*yGCF+LXRW;=(GZ zdir4FjVo*A2edg1x}r)l{WFo+i4v)7)dnouB*}n~$_CKQi9~)n(}_Pnhv3TyI23NE zI{0r?LFM4(dCucEtE^XSeJ+uxO23l=<2O&zYLi9pONmsjq;ML_Nrov~Bq?^-IwkI? zjxBa9-7-mYST*T5;({2wD)Myo9@P2)KYr`~gwYVhpgR-jIQ(L&uD!NSQW;R3&vHqX zbP50OiR9LT&hJu)7i^PcgW>7VacyO$gj~06lE(SDyo!*7d}?K$4*BKEObPj@?ffAl z%~jL$U;?40PUKE%H*N1%=5Qt0^Ank9QgQ=IEB0j38`ThXoI7_&3f@vG!QYg~oQ_3a zCr+bxOi~(BMd#%SM5Lr{+PZd1Ql$tg+!Ei-hL=WAym3bx?i{MhmrjB$cdjM~vG?Re zs?z18!YfsgMemurB$ZRCyNN`;dX5KN zj-m6$Ch2wQV(#cY{bbpUMvo>)`PftzUxvpLbmU%s6#+?)#xAdl)<_>!#cQG?YRU&I zL&di%kT?SKaVx7lFEhKgvPMI`DuK*vA|va{E0S$iEqulk$@j+!WIe8%zjt|^LZk0i zV#(ofnzl~`WkOpZ7ifM|fh+xK?9oDhI=gRqwK(RDht!MoLIob?X^TTD2hK{BS6RZF zJBoQ;1!j5(=dFnE74Ua&RE}1<{$5|6l}0PKY@DAnr!=E~aA-BFqgxX=LD3lG%Xa9; z4Sr1ys}&ak^1WcVk!SzL@_e3mkzvD26^NV=3yOMNd~Q>Dt!XuUZXI8q#&44Iv<2NT zp#qWP&V_)lXE}Ldd2+5hV0KI@&qT%DW7O76E>Ff`o8Cb2zbbI`v23>Xi&M(0&7wsL z)NZ|Bc`m+{RN(=C#MJWqj2dsy9Tj+ZAqq)>GC8fhKAaowryuTLo`h{+dwIg z=MEMI(XB7ha0MRDvVun=4)m*&*~nCaP~P;zy^l>JPTK&P>L}S6RRgf(s9!j7GCa471 zZHC_h!!p62REcSY{b&NWrp_HJOD@=Frr!jcs*F85ff-e6Y<@4ngQME851r*VB&yzu z==T!5I00Dv4-)u%$)+^}Bk9sU+i#A=RLOEv0x_c0#B+-|l@%NEPy#uk+=}A^2|jGQ zE&3J*`>nBO+ax^(s~{S)pRR&z8NruA_^QBQ!cQgiv6WaR_~$Dzt+4l)>kqr8&Yr-N zBsjGysiNB32j`2Ux(de zzE53K=Mr^ec3#zV6XTDn_F_eRcAMWU*C>_zKd6pt4B8Mohka3w=(em`n&6|R&P+5K z?RQn?TAD|-`)$#B!`@I&1)`<%hY3{d2M;DOjkTL~_`|ojmgb`p*jjIB?awL@EuHIj zCRt$3Yf5p?RKqked!QP&Wyh8a{dO2DRAwtwq!|mIs7SSf-+qxlcr+~GM64vks%n_V zh!?71TXxhg_S<2sP|0vwMVhhTj}@s_@O-06g$gg2?xn9AZbDUOm>VDNk5o-vK+)A( zUll|XvB#<)TT$Eo2)_}52`XWSDzQxPzpBKv!ro~~#bgbqzUd6ZPDogbOGo-+6&yZM zvzU@`msLeI@w=}ox)sUIm-?1Mc+)taVwT_9ifKx+Yv1(+TvwYPga{Yvugm zJ6esknQGXU&9@}*jm0XlHagmGL`X9hh~HdQoJ0o z^%zHI$#(=lDHP7*I6Hp7QGu}j69tDB9UGQR@t-KKV8$~>3rG1s(?R-g1iiTHC^~Mv z=y7ITzB+L{?{uG`-}|Es8Ua_???|N5nO^ z6pF>+!J#<=gTq6z0G^Wn({c~jHnt0k#xRzje=8TKRzs0R5Ed}H#JhKGET$l|BQqC%ccjwCETFz*Eq@(uR#FRB?u zbsG?24xRe>VeVY1vjf+}^DVXKS{Pr`iqU(KeieXtLL<{RkDs9Bg4LSCwZwXlZ5OhG z=#nLKLyA2VNcyl91L$!U~?jRm9litDY1(GJ>ktO=^%z zHdg{g@acZKF%V(dGlN^f`30|mEcPg41Md+?HXSrx!lZ8o&fx)e$`i+uCRkpl>FYZm zEUCz%Mp1WE+-Ue^3b9lrOEa58_ z`mv{iU)XF%L5iv3<5$5U(FKDjntU2I!YZkYpgB}^v5kIb^TIe4OAFYVQJdnh<&e;y z%5V_0aQ4$5)3ILZ84NZ7;FH;z>#VpJRB$R?XdV5nEq&Oq#|mj>Tojm$b?IT=E2UDS zq+ZaDro6IBPF*k5*~AJ3*6Jsj)MYzU@bM#Q8HA?JWuN0C1YdVPx)WmbekhqSH32JE zn#pfXOy^6Dacu?NU7j59;%#c1oPvjr-D3M(K}nQBB=3gF)s`QK#)-C0)=l5oFs3Z5&L2n?Hq!fXp;YzTZWPm4Qx_{*`c9P2H6S++ z(M46#@n(A;Jy9*0&tvjSak0GTv0CNle4HKQs-p4NYMF@LIh(|6h-;Oor8cdG$?-Zj z&a9~m%dh?nVSW5$^C%ibeY^k=-$up#xChPL8s;cb76z|ohA9$yVGA8E%G3)`(Yt|%Ubvo8J39YfhNTpDWhFJQ zMrH4+Ltf!cTw30airkfl!Et?Jh;LUQ;+U#Dltnk89#7JU6+Kppos#RJ7LKyI0;$f# zXL&fvdu=Mi*VjWG{jLm&$>6AOaR@5pXo!I}P2?0S(fbvMVY#8FP$9cI&6|@Ui{G8B zL*42U%_aIS@w6BbLk8~j27TY>Vg$LJH+Ys(_mKBRRq2M;i7c!~2gk*PQqO-U2G`Vu z#;H5vgZDS>3~h6`o+zP)bi;P_a8>bA1rFC1C!qF>>T%*4B*_aPT4NE{j~X#dL9MAM z=*{{Fw;F=J#ZHE_Jc1d8%F}pV(q!&2;r<+dG;e`Kv4G zA08UUGa-@^9mDAD(P60YEU!E`9O&j(jnw7jb9jhzNfHMW_BgzgB$azJCZeA7>Q|{Q zMwIBhBo>}KXu;Rcb>q3&p)3XwGCtS}b*5M8^x<5-iz%H2%Nud8+TwR*yVJw@AuAb5 z^rTDSf{P8*G1|JQge^_#nG|FeR#>0qum^+ff>lGq~UtyRB6QWG-KHl)%jmWID3P&>hJP+|-pFV$P>7rzk_*Hf*}* zilz%SdqNPHao~HN=vY+I7G)4`R~5p`9O_Z2T2fpeVj_>p6;Uu2Ri#6bn-uu^uM&4I z2b0C}h}x5ha`l|$LUg0@G!u2HFA)Bs^uwqyG!nxsi41LnD%VjEa=LN)K#_9Eq!PbH zuUPAE9#N$-LlLI5V`8n?MX&f7{Ni9U*WmgEoH<)~6&V`c;3vp^-a4qxExkI}7=97~ zcVP5o=|ewB-N$j}R$dK~vRiKLm8k*FYQHcH_EA59lS|E_@at(=n!JrSkOeIrZKel! zo}YtvmvNGiUsW1F%|{z;>(!KzXJJFTPTk3&sg@z=2GGtsJ5tnh%6k?MY0fL5dBCe= zmBL`+2G`1?;p)o&>da%-gv+HolGG_dq z5$%3*V9b@((L-al+bg2q$`7r0xyUl*^lGSqA%Cof9GbDHCSryv5&jSKY<1+olp|`Z z(j6M}WYmLtpf=lOCB}@ph*F0W1pW20tT4p2_l{`egOE~PSV10Jo)m=HuuoZCVW2;b z60NMIA5pPFpRjL4Z2~(m;}2ExLwjybC5NDDVauGR`l`r*H9xD49vU-lTtq*b`3_uN ziUWV0IXo^mWZ80KRouXo2@Ta~4lTLHP7U~+b6 z`Q_?-cHyCLUX}`5+6^aE6=YXo=5RhAdV67FRo-ylDkjeHIyGvd61_F4Do@-q!YToL z;Slb{ldJN>Ju)YM(L|hTbh?xNPrx2cVE0$&XRuhvATPI|{VnlJsp=EbZ*ex#2~qVr z@#>T{n4=SL($Qk^7&*JTxd%O5erYw;lO4cGN8~rjFjfUlZ8-W^#$#ZVbcJkxr|e&i zzj%242bA>}7^)&~2YAJSj>rD42|OJ!8;_UKxPu%KHUb8-0ahB+mPv$nnyXTfm>8p4 z*2I52QMy{I@}HbIFU)Wh3`(+GIMW5&XEuzZ%V$Nwrg3!cYzM?c&sY@WJlIyu&J#xm zMva(jJAIBr>_houn!{;2#NnWd4oZSpb(Sj*T4wiM zJg-o6tG)|(wD0_6mMYH7`jN}x%2pa0UCFA!0H5};N>7v&v@Sm_PYausJ=-GsRAJXc zZq>%oK8JcqdSI_fP3;j9>PtLE%(n8`^jjGKZo*Otbu!bjuC zi6yp0XLdRwSp~py<_c6W@J;LCoQCC7Pp_qFEKDUc&$QLvcUyNq&33);R222OSWTTw zf|~QfKTi;=iO@|KIX2kyr+gFouum*LS^B&y#aGpnocey&eQ^TAii|Di`O15u;$W&% zd*2f0EFABloV{Ni6-O%bauwNEaD>899rK%5hxOw4Lseem)z=K1Zz%6Ix#rpprxGl` z5qp#CZ2nF=;V?lNze!PLuWR9~KxMD7sIu30%X>|Xs^ly_91!lmv@FPAas(NWCVe4b zV0FPGzY=l_wkPJ~N!4eP<@zzzbU(6$Y6~m&%Rux;A*dqhQ$umhH-ubQB(OjtOIt;{%asRGUL40{ zcQ(2}^Y|7)blqa-_J{62mF9 zQt}FZ;H-a9&Zxjt6BIpnX?2Ih3U{Q8u%k&m{ zIVRu_IK4$DJ$4RE4+GL(G3&cLV+i)gyu2c}#pKG8de(&9g?g=7g{?m+!agR}JA@wLVGG*%YY$NMVmq zKSFeaEk$C&4}D-`p*lJQ=@r#9JvUS$e%C1~z`~!%KJv(#mzQWBQZ4Fdezu3c@4->O z)2>LrC?C(n%X=tM91oKc7d#Ix$71Mok8pZ!pwQ2|lDAqf?h~5}=|m5XrBr&ugM-ha zRqMx9wdPjPdRV!Q8CU3{?|N|XaZ^2YkBob1=^vy!Jh+-1qxG=VYC^%(KXw%j(L5WJ zr7!i2E3Sn8nJv=aop;-&hv?s2=SdLk>)fmWOMQzW`u16JAy2c}FhGn~N754%h8|mo^k7z-Ww%a=H<1m~F_=*Q-HSc)vS%u|jF8J`p zax7IwqYf!5be6v0kqg$H*mm`?{`2{Y<@VX#0bjPKbD++dDq>c9BEW=P~czK#D+p$>EHOXcqT-_e$mC%JdTOMFFw${F9 zL;dMh)QpwexKb{L=h_lUR#lk!ReSHdYedqOTd|m~@Srqyw>Wify4aJYzwRE9 zELT;+oINZYhcwjjk1yLO8zYt99b+vnqv&$w`qOz`Uya%`A}*oylX{47u2jHHcT{VkctkpfEj!X%khXV$EoJ*+j9a3NQg5E7U?tB4 zC6Vnd(%mso8hFa>9U&tf>Fy}Vb=*X(!8vLHa{0eEileSLeBTIn6~GUoV1J=&F}0>5 zRNhNg=%>;35gh3_e?D!51uVx3ffwUVlEO+XVeEhvC`XLx4yyt$G)BbBrSbVi6h>)Q zjnA%4mIvwaO}CMnI;1b}mE}6;IFCfCorgREsd>hZx3p_rLFIG0U#9DyH~dm+nGn~= zwa`r-9JK}QFfq>Ox~S;EO?C94Ur5U)#g)O6D)mo!gi`S5Opg14fS&Q=s`zK7#69U6 z;1-Waiu*jQ8JWDHQ`;@^-}5kZq2FL?+_O{ef94^mqF*~L?lo4DPw|krF#pAi7wHJB zG({uBxfZ4Od5?%o^@IcBUbtX?$B%Q_-W1DA(NIv5kMqD>!r$=VQpgWHD6U7B^9MX4 zRn%LX5g$XG6?dOn-5p-u$A4l(q*~rQRZ-U)zu>p^IRM zoPrESp$KB$aDEYVK4Xu<*koXb+k+`xhE(kNEvGFu9ZmP6qbM^P!JDYvd>Ss*T_~=^ z@hQ0s{1*7Y{j%!GR3#3kd}roX@v#rAou%{ADU_|4NR@K@1>N2F7>2$T(jr2~94}6u z;Q8dlVv#yVGz3Jeiw#u7O1=gcBOD|!u5g5Hj^ zv5%4yhHuvC;HPDZDeh6tz&DAg^$|-Yx~Cdu$IA2|?TK-2L?`+nXy;}Yv2pg~B&q&# z^h%r%J3g!@2&ZD$90>_S$7~UY5$$=zuf%EUXpE48$+fq9EdA-#C<32eTIM}4l#T?8 z7uhh-P}!1Cc<^2&wQaS(GFkR~zFnE8CZK0v^c@6MuS!5Pblz++TV-0>4 z?Z-Q6XxmCO7Ly1S)N;CYtnR0uRHk<4hcVpV7}Et2oz{cTOXE^Zv~lLZeC3^SVKFO% zezCT8)0pP)tmqlZ!bbX2Tqv1*LrhXw>l_iYtxAH5hRMq{ZryD2-T*Hmmid>kyaq*a z24*?RgpGLT349^p?VePnuCtS-gRUP6y1dlMQ=Aug62vZ@k2zeAst$3D?9IM!Z z6nGo#Io?(`*S zLZ3)DLoNqq;D9Qgn8N8sZO>m^Mok^2w`_vF)^-T@{_GHA+`zUUS7Zhj?!rC0P^V;9 zzC^{sYU=C+4r*cK82KAPZ4*b+@A37l?A41SnMhmyr#3azk0)Nbh-*)+)e-ZKwhhC4 zCHBDtVfZn(3v-sET-B}}5h)kIpG7c96&+s;$Hq+=O}r#GCyY@sGd^Xf zlFo*gxr{IyZWLP0Ua_rOvL_!2=PG}8lGs@ez0qZfl~22v|J&8Uc&l30Uxf|PxssR9 z!=_VZ4@(>-#U9f}(<^Yw$TZ|(9)eRtt=fj{wf7%QXYZnFEFI`7?Cay`W9qgI@4(fj zu+yeXcJJr1U2QnY$YaB2!(@!{o4dN$vsLHT$2o(zI!9=-C$w$GJo{5%C;TS($Qe;Jp6VNX|hG?3acH_ zR9cPdw7QcS`amyM%F_9q>OJWUd}vsa zh`!)ln>~blDZ*Je&^J(6InX>j)LSU#hF06${lcn6^x;YLAci*Wf(T7z5N#$#nkB3# zV53tfmU`p)$j~Gkt)_K&^r-Ttgc(t`oKGp^PMq98i4N!SqeaDJQ>HhFbBT84@t-9g zD$K=%cM+YSY;#A;oH=xHgb)cz85HQFSv-=n)X6aiu>>o|C_f8JX)Lll8DZfNHg8zK zxvwJbjq2ef?(OHT&I{(WQaz92ER`U)4dXyU2I^wu3nFAbu-MfyjDs72y4NBMjNAje z0?Ls*z_UWcmOaeYA~lB= zRr{cy^SG{p{+9N+CJ36&!!ygn!hv2)+UAj3NPQfJ&(Bze9n5^#N0*!LL_A12G+%-~ z!Qjl+Ct|B4QWj$un;<3KCcF_LM3V^9979>efeygxuB|CTR8@>FDfdLU+@e?|l(yN{ z)g>*?)CgEpXH}E6Rz0~9R&o<9vFo0oi&2D!crz8Rhv+wk$Rj=LI|W5eav&XorD0o& z&b28|pMa_oER=^;klw^vkGb{@|%8f%S@hb!<8@0Y8xur8~nt6 zt;X;$pTcwGyGD8;hSr|NY9=%%WXFH%7V!K_t*K-S?=`v=h863eChi#!x<+ zl2lF)40U1)O$+9s(6geuDzNZ)czKfL0n{;fVj0 zBmCqzfSJQtN*3w;7s_lQrx zs@4g+$Zj}|jpJ#YN7%-KqdkH_2qa4f#enaU)QyW#9g@Nlz*jsb^EjWr5cYgMnslCf zAnf^iNLJ=~B<#W_5>3AOTG$(P$a6|usnTZ&Vzzp5*i&`9VvI~bOpqb3(oVcs5UD;m z-8#_0N7HkBg19}~HJr(+?Ill^<< z-r66A`dWszUf2b8RPm}j!t0WEf3YjNl)$sT>m^|)*-_P5&~@o)VeixsFv@G3%xhg- zf6l;el6AxWqaktXvwV84hdLAFxMvB{+dNWfPhRl|a4lz0W@=NOT70*#n`umO{aERJ zR3&nx!u?hyzHZDm4*RWsBf^6Gl}c1D6|>O$jOINjQo1-lSBYnR`4iDwEvr*;O`#q! zCeAmX!uKU^DDT1g3|H=2PIcrPgk8i_&lydBK%+e;>}239ymUqGyRCs=JP0DlaJcxS z<~*-;#XJxD7Z(bB$jtBlVXwl~7f$_tIfi7afZ*e1y3jx4QA=lmPl`Mj73sk^UmEUs5eqhfRq@dj zZWVyeaDIVL@I*&GQ4W78M?X5U!BmmD2J;N7XC(nR44uU{3cK1W1cwxsE4~suIXGQT zt-Al|1W=uj|h8E6_=xBtb=d7+{keEiQvcvIKSIG{0Vk737OD zlt=`Rw)%(BFs<0>`Uf)tTU|a{22zIr!Wgu`C*kS`v;8=}J|tHs-w_q4>l&^5*vFzG za=cH?J1*iCeJz-Yq)g$E25)q9 zqY#SQb3MHnMDYPbUNLlOVu0b&;izt1!U9=`3LmRYsp;{DVnoptWz%$2xvoMLB8HO< zjgzJA@iP{7w(vX=%|XTKQJ{vLd2GGx656eP8cGayBVZ)0l8SagJ?m=Al?;alVp8>e znkQ)Q&-e+QY2F8_=hOO7!@5C;5?o3;3^==>o4$>j)x(gdU*&|JE9BjA>f%{U>PnPlYQJb1qIUN;?t3gZ@1B8;rE|L;$g*w5dp};O2z>*_ock-RMsDZAD zQEKY29k`E^T>3ZIYsqff0+oiVD^BDMUOiRtR${>e_xaKvV_bcs4EIlU?plnFj~lM$ zs1o^LOpN?8alHPNd^@Vwvo4gp!s3-{|C?cO>dNyn=c>h-m{{B93d3nhl!cu$Cu=otCUH7f7Fu&Xypi(|jDfu&1vNko z2EZ<%#G6i>L^?6X39>?=Yc*YrH6>SrmZ~E6B!fn&7=)C*rv?`cd>Cda6b{4UM#!Djqtb)9704vuj zohR>FIev;R$+4mex*GQ1R4r3J_dC_H#fsY9DjO|U=mhMomX9{~dsT3k^I6JN4;PbH ztEO|3t9M!U*ga~#+oMRSqWZ;3G%2UQsl<{(+PX)DAf<%W)H5CH3is5b5aV7HG)K<`|3g9JG z(d286s;fq$1b#tPRGn5^?_G^v6uNIzA}$Y0+=dv?y3I(W^eApv+(`e8pv)7aX*-PT z+JNY3GTt~)KiHRBg{e}0MFY?F5Rg{&^sS+Mmy z>f>R#HQXLJ7n{3ld9VD8RfD-A&Uw!s;ZZG}H0uVTcr4s-!z4KV>CyCV`z(9UzYCg!u>{zK#`D^kDrtsH*x&< z<=J#oY%|I^Wm$R$j2>S-SPhp;IPaDjfoTYLOUv#+k_>X0oPV0OT?FqjzdVs7bV8duXen67$&ZgQ5(ubuJ7{bp%*l{L)7jYUDb04W9cerVI z-zah}5awgn=xh4tWV#%`>X3{0RPD|9t$#kxaG(&KphAB?t^;SiA4B35%t<8(dLUS` zH1M+wo%mkdXmq1R53suWP(^^X05g`Ts4cN*raLdjeJ4?J46$vFVV^PPUnif{(t@g)CxWTf(FKmL$w}&gM}m9nKlNBMUWY!J zu;)TWE-6mAN`wo_6XIq+zos5GnP7dfpp40fPC*is7e{bTlHeK$mMrDSPNvuS_c&AF zbWY!BVyII?XU3r`0GV8*^4RTwB%jpMz2VQN@zV+ySiT-9&6trNf4uy3ns0Wa;PV^oJr<)>XB8l!Q zBYQa}i_X?uKP{>`%6JBhI+bRB)IaI{m@j8u>B#+~N*(b@F)=#N_Cy=qRFUyqoDt5z z(OL&Y4d}3>dq7&ucIR;xCnXKj)F^N$fI4#{$QmbY+Yq*xeIgsFh%+xXHagK3ogXmQ7 zm=oyxP>t@Qx+wX-r*`+&AVTUmoMjjt09kpv=%UJ$J3v`7Ng9IZ_$NvPHxD23?Z+GmV3m9=!qn$aH%!?o4XTM793v%=Eqco@q9)m%@&Pb&@7d_ZJSPB&IV z`mK-DIlUvQ?9SPq5Iwv? zO~HPRcoKQ3IZ#pX!sVEgqQKVx1RXsrW}~`&IEMTl$daY8AltJm3Vk@{7S00E)VUth zJiHsKO>vwGtU!XC_bsY_)1rtNNC!gZdKdm=ok*z-f>oOm-f3HVF;bwxu2`G|YJ%7{IeH|LIw}!XgAmK2a$5e9h*yrN2>zNR z*!VEjLsZju=p1r~rUu}WrLiFNDRWu{v5o;%wX5#r5KKfj6TL};5-H<2L0CS#l_LU0OS$nUpd}nN28XkcZ6tBl0D#X zuan_x&#|C4JV@y>vQt=zR(Lmlb5~m@WRkkK#fzGv7$aL2u)5GoO-q8g5(`}519JdF ze%_PsKnQKj@^1Z0_WCC;lu$eoi8TA841z4Op8{R7k>+44yIuuU5%f05l!0m8FE>8 zk)Dhzi!io2DrQZDF%1mW$3~dPvZG4biQU6W05$NN_))iv)J#>O}L9O9rV zh{|^Pf~g6jqQ{a&??9wWfUZW^bD#A*AZ?wlNI3wMB=27+BRd%~J3dah-wVRkqosYu zm>)cWS33q-D(rTCxJK+fmm^@u|NcNEAyiH^fz^(&B8CfvW@0W^o&Y^#O+DNN4+*+n zP8NL*k)1@g3AfY1`QNOGjz&O{TBFy&7E0T2V$n;{b!&{dt#Rzfnb4p0#~D zvM+@)=}o8=)&=sgYKgYU8lN8N#8Arl)P8x8ZYU#r0=%0M+!e%#nWzrx_}7!dZPcnv-|!u!d}RCX0S&M5*wE1AXj8 zx9E3Tbti?a&<+GGN%jTEtW2%mQstY1WPbMqNI8=PzGFjrD#|-QfEI4}#{@RfoA|yKDuX?*o4TQ0?%Tj@wUhG3kzj5unikyw1O1kfsB$ zgH(^k$>Yd)Fq*m{wvsC%ed?HU(hniERjX&_jOuNQj^~JU&r&(*97tW&;rpZ12VwXL zIUVf=^bS`sy380#nb&~nx8=qEa>Y>IFpeLl+-1ly*WlA!Ja{aVaDAVht_D93csNB| z&&Er=%j0q$Gu{IElBOwv^BHyq-ShX^F+LD&I*cSzzDlSC2J@J9Dbn6RW8fh^Fl&Lu z!23x)@S6bpv5Z#Vk4pt|I7~2<;{WNI=l-(N*CDNoc*YjtAzEieOsU{ECg6_(M_pQv z>G~mD{ytPl&6_iC#%xvly$fNTQ!v(984p(*yaz-Pi?rm8M9F%qIDp~qu)^I5hyz?7 z1?~f24N>$5eu+^xF-ur}!o^N(gj_ORq@7k*L7D|p9Sp+r#DRBYfaO4A;O#!}R|-^d z#~$=IBks@O#ymUhR!axzF)9kq%ZlTVb^03~#vmBd7Re|?x^(Chf6a^j5GeQAK)4q_ zlS1b_fQ-p@-91bltnVp^V6d;JK3&Z8Vp_T$+r(0;jMb_o3wr(k zhcK6&Kx9Rch9mB?;r`#mn%;uy|4Dk%>M#DUH2?O$uen$1*&vV6jFbNBwnsv^9w7v? zOsEYWhto`Qs<+(m5JV4dqTqXc-YP5I=wvRnll1U=A9hVJ%d&If-q*cB+MHmCMn{}iXDii!_{cu6pCa1=X&SRBueVCv?Z z>}Y7v5&WrmnzYo!sx*+pP5Brx{0Wjcy4I;abVs1P;HvAo{n^=MM%% zcw3?6*Fhd>_-68JZLcNZYn|p)gl1NK=O`ZSUT`ke{elJHqNf-QHY9upgfij>I4rlZ zwzM~$UQW6QQe?DpNpdz*CI)GI4P55)AYbQkYX#qG@p1zGDeyYu0asv`u!tzbkL|x? zX|e@}pOGL~2|=h!b{-Al)e!os?IDEMKg-e+!n*^u+AgHL*SrOwCCM&xRbXOxV2oeO zqhOX1zo!+2p4<71ZfPjNs6EcMQ$Ta+K%gcL0r-b=Jm9|oN?60id}<-C#oYW{#R}Zl zM%;J99eTj%NH&tcV6y^n+TPz&mFn+8UPk=E`DMjhUw|5eH|Vr4R@-pC90jfhU}dQAOW;MHu1*{i zMdqfbLGnx9Pn2wWq3$`wvIjP7gkPn7uGy)vWQ~1X1Rr&_F1jYrp(@XPbcY&2!hV@0 zGQs`5dg`8ERvAf6Gfja@=6qUl!GX+T9?WtzRFT6mMM?v4fSaPg0|1bbH2-? z)z+hO71gvSU=tIA9{g1wng!}wxROt+2NlCvwkJn&Pom@%NWx4w#5+T|<_%P?eX(Un zOuC?~v^vKY8kuF>zI0w6=|$>TZ4yq+(fo#u;>i*#W{#%*APrgUU6=R0qB6+L5nH0U;8 zw*oY1BT&mSV^RO`su{S}Z8aTcdo$>jUi5Ao4WjXa5B$gmQN!aBhJe50C6=A8Xc|P3 z_!eoA&6ju;Y2$BLIyANyFe|3=*`vxZn2c2K`;0M3q7AI270~p5@czXA&HLuxwBp9+ znC7?54@%GMGO`?G9DiiKpa*s`Al1v|skkd_&r)5g>aZ=HE7J4jgr7nfCS_@54tMG5 zs&t1-Eo&Xg>_kbAEfGW1oQ)WAMLFSp5JnBrb6tP1{V7AVWRuHcCTd9v61Vz`TC>p4 zuoCWgTYDaJ3>}g@I)uB*N`G%lrG70g7|5@t(ciKxw(uI@Ru-2t0nNZ94w5cBy`p9l zwE%x4D4rtW3mCd2LP}W*TmW8Y?917zul!@c{j%2xaiOz&H zQTTW{;d>Bb1M;M$l1dw2Zl$Q|t>_HglqhMpC0ORwoy)WR@b>|S-$6RDY6?I-2u6=W z9%fxf^tP?hk!*g2Wws+}fW&HvLi3J;V342C?8c~&f28v1V^-@Oo{I>U^>KkFwo*_( zWq1l^F>D+W8+#?=F?gQ9*wqxFuVg%;9a=7Dcp_#`G`+jPmy@9CeguLT_?Zvf<|?RY zoQTc-S_i+wA<0jz5XI56yy%q{+C}#}uIJ#AxtmC&{>^x3yab9Q+w1#G$H@?z4!n)= zi4mMP#t1*I=SsojY56$gVSIyN|Hd$;vYcR{ewV9(N3;W;#V~I?vaJL@$aq}KB@8#l zjk%9;-f3p5L1f<%Jf1!~+?oqKT0p;zVNAc-wm|tSqQ#Rm zqpo4~k<1M};{}g@sillZ=+J*U!`S~34fiHd<1zmQ@etR)_O(zHhxcZfkGe$S)hT$~ zo)Z|4Bm-h~6~j$&^-nS$`Ldw@gW-sBz`I-rm^VsAjG4`NQ@n^58INd3ntfB~@ihAd z&rhadY|@A0Lm_#f(ph=z;#bg&$A*Ka2i&GHh`J z^hCcE?Ac%Nagl%#Krai>q({^9BF3W;1OHCpM+`*(uS)&P&AqGhG@l!C}&tOVQHO{M5=+j z03siLy?BXyeuVLygyG2-Yuzk?M|>dgeOS;K`Owg`h;ggw3R?V=gda%_@UN8sCPlsj z0(e#g<09zZJ}Gwv?|4?o(8M3r7>yVF-pZ zifwSJqn1UC_)~~<7v+G-Ce08!D-M0ffjSDqMVvsn(+55W5E*vz((ZgA&CAT600@4s z^CK>F6(T5oS%4KL4>9kT>|C;7OD`HCN_ zkgM=aSA!en(Y*joko2tMdK0d=5wy-v*h|DTs_~*NK)Ejidyy}evn#NkPGOhxZH48m z<=qaBNwYNXTy1J}2p@vLsV9;k*KBkfe65z7Qd0ep@`QH5gPjSCJq5m zQ!i{bE*Md_H^>hF`>++^|0a&dOtT^C6NvlV{(sd_f(9{*FE}|pNnNmi;O0PM{((&QCH4(nI)#_DECWtA zunrfx+k!fHuLQ584HXOddD)UYk~iXx(2ti;V-Z^VOFg|^MH=v6X8_|xKR5gvEoR4R z+*(`6@Hrvs{FxQ3g&zaFF3{0}yOMAw5=(}3zQwoT-}vDVE!YHk$em%32FwCfnU25m zm2jERZFBEq8oF3Pz498n(F4&RZ{54X^Y-c(;({2`4WuqOl&>z5Ing31r0?gUB88j+ z#CQuX0~_=$9E$)(pr_-|pDn06pYEYgEC5L-cNn!$+dZMO z5bXnM^0vJ)Hg$}ucufQ)&P$CGD)io`XP`priNI7pljvS6xwLoM9$?@vz!rP3K?{>h zB5*PI0Da$!-V4;&sUjy|#TaYFb+N7uJ_rK8EMarjA*~m5w>CfZAsUSTZUHj^0?7osA9Xbis`_<_vZ> zG@;w8=>|CD$B*$N2m!aQ=Wqd-y1#MMg9(BfOMqF`ncTsmejj)Sz$KHV zQji!J_AMgd%EHBe$9SVk7jzUqW2a$-sWS7Ip=lC3d28)rFM2c3B_>VY3tiBkdML6z zFEtbO#=P_(&4YwX7c4|K$yctrJ z*f zaf~^RGIb1pr7*qcKB3YODWA07B{J)>`1%KJZF_oNmhB?T+hFxOhoH z3txc~IZp$J@(u>^w|p`wTCu+(V{Nv%JR9IT3~@{4Lul#UbcO5 z;e>0x;(Gt2}$5MbglHzYo=F=mkJaCN_jO?}_I; zc2Cm!uSVGdFZ9F501i#a=a5)u*-SyMi6Qp@vBO{1xQt%6SnS^Z51}FKu7|tMgw;c> z><$tS7u2GEMoTR}8v1e^y2gSA3OI56%P8;?0J#*vx$u$J`=f@{$J~pZ`XT{zD`&wO z*wd52{j%s_JmkS%1t#@`v7SF~EzxU!d?(-zmBs_Xj6kEwR*P*)Dcei^00LXseMQ9m zW7dESfQZ2IXW-Ptm#4Gr;&Rar~-;1r^z4*IqzGOmV#HyfAP|3n?40xOe(}z}0jk+OwG~@3_Gs zAhdCR_>X+;^e*y?6rHf`pAM`p3LeQsx&I?1o-D)&cqxOjktoIU2m>(fM}S=9@V`Wn z!4Mh5O%*fI{L)Px>>*%v!F=fpaA50sg~U>arAirWFy?K!n3u&;#LV}g=Rfgy8a)0d z{yzQ>{Z065WkaP`xo{x23cb<+%ELzm3tbPluBnH&*e332n=sdUU-gU)utyZwPXie? zvBP#`;Sg=mIJ1>jYngIg@_|yUT-RwA4@~Iiw&N-77%b%Tt=UqB{uTvBe`wXIGsAi2 z=5b>%`H6k&i_^IwxwZxsa0kc{l=7^=A<~0!=w#fT_0b>&Ps~hJn=|1Uc4o1ge^n!j=kV`yYU(s-mxL`X~7P z>D&Nr0#cimC;mMG%mq+Q8Pj!ikxpGx4?l$mEMOrcg%$40!0Mvl#|+92GcJ)*18n*a zz30pzdjXL$#*Z@a3-ELR5EdI?VHD^CfDEK&Rw4x^P&{=^b3@r9s%Fruk`_hlU8oHX zBj~+z>wO%9b_S%nar)eXqN0})T#`{s?NxA&Q>uBJrpz_z5HIn=w*s!*ph!t+#|FSG zZT(4=IZM$G2ED3mBg!vZBleSEV-A!D?YezL=T~>IYGt;GcK@eN)Fi^vN`zBEsFOXV z7nPw(Cz2ko$oPo01$m)J8+^JZiCLum!LK?si*){)(eGnx+=hBV~8^V&${rU~zh z-~x4f;#b=!7QA1^KW+JMf9T?KB7{qDx0jixcdEqGAx)BfA2M&cZJwj!nPIUxlF31zl*W}Z1+0rx$f=Y zMk5rAjSq*D9lUst-3xg5mg&ZMi|c&QWvhh#y~9yh?fSMFg-r(*>_Xt)Fr&jIIt;Mc zAJ9H58z_#ks2X}`gV48zes4j1BNfl6){P8l0oDQxGth;UZk|trJ9J&*xULhfv~$5O zl=lER!1|*iz)k?9IH{(o0nSPpRkiYJj9sK&_ThZSFEYYIVso(aYd{>}b_OiMC+sDu zOXUtN&{5iFvd(YRsivN3dFb0rMM&GB-fnOu{Ju38{G;O078fWxCef&EnIN=bVbEInTZ z54@DDmpvY+(!V>cLU=~6LZJ2xQ9UmPW9k7<>6LP_IDg*%Rlze*P$}NF31&)qv+dT% zbmQ-u|Ipv-Yv#`+RWODA(hh56Z_NL0JM#A)*BDgzt#C{6S(DU@YBe`r(D(kk>iz+B z{};n(|D8~>^_JWj#o|DL<^#cmDC!@z$(;rP@Dyo?oWT^!{SY%MnPCl3K4ZRgGDDqP z@2vZsA(R4CmDXTr(#0OoBFxS8W8l}N8-*_dje$4%z=yPdx$jZ?epL}|Xx&{zp$+W> zNcykZ*HLh@CBo5Lw^mx-G<0bk`jPfIn8Rb14=B0(K5~qND!=>jTYABm#O$K?9M_0l zwG1z|;p#iuHsanF?mDv*=OA{$&^838Z9fc1xLF+iNlX3On!)C<&b0`Pes z_@U*WZ@JxItntat6J6&;j&n8^ik9tZ^BGwI#8_zdh1~^|s|0P8!Cz3g+Sxmq{=!b? z;Q5Vz2fvXT$hFuurV?q#y;P79_#i)gBw*1f>)ZuR630!p<6by|E}dBw2x{TrU)|H& zq^5fALEr`-NPnHf0O@ql$nRpvhn6>!SR2)by4u^9wajmxH-q*97=CMoE%9JOuIJfv z=Ho?~^BtnXp7LOSc0JFVj@dsuSOBRg&QS#(wuxIE%VjQpv~5{&kC zf){K%V0M7*G|pwU(@{}iDB|ZZI>)6PMvq2;S6x5zJLqGF0$|U5Z1Vt217O+K*4a*- z4u_G`V#uYgw~htP^dpDF$kKi7z!(_u6s@Z#yJLjz~G7 z0XYVU6T9YPqGV)=|(V#pCd0&`G@ah+5Q zAhU#h7LcG9!$XZUuXyzo7rR!bi&@e2h!1=X zpb9VaUE3HYCyydAiVqfu4^9>x4Urk}MZBG3%S=Fl(i<(MG2wgVgqt;mmd@!${@~MR zcl*HS9gvSB(NPm^&jPKmAU)-Z-3ixu(FcKICR=x&BN5(ml9d=HOV;~P4p??fwnG}I z3%nTN#*@nk$3e*F(Q~}9b-u;K!+|kP|EeJ0b&4IYz&qsto6l>$5@)R7GhPTrV855} zOeMl6HlaJMzvs34S$Yln08nF3VC5VXq>1z=%Y!Rvof@igB^gU%rJ7RsemUV5(_jb} z;5lvcv0-j6I73&57MBSc1;u%jh#{Tsvqb{X3vm$DF)>wagxy z+1;*C~574bd?>R>~t6%eZpk>MC}E)dmJ$ULUp0Ecg^w|}b1O{>*-ea-0G z9|WT?`(-94^XV~ckv^tkAAC8Osg{hs06^Bz)Q*#6pLeiN8ECV2eTe7R0HfHuOf+Xy ziZr4b>zi1Hk{87Bx`OLG5YB1)iVj1f!vl_9wczTrh!=~sA_sjDXwW^MI9^iJ^wMi- zm2cD@x{i5Ie?9j?Wu}^8ak9EuKE>f>P z2WRN|n-Z!cC6j4ni?(WEs~lXST>!8NfqPlRJ;WY@B0Co?EE4NHU=is4IP@a>WYx$j zQf}S{V7s?yb=@^^iwD>u9uCli!2N}Ydzd{0h6L3l51;9)kaz`;CkfuR1XjH&+V-0f zYKzL2K!$m^@v2Qb7B0C{Hnpr}2#aOQRIyo>Mj@B`gRfu$Cqjb!0m#dUubo*|{Ddn; zcA($85LbFQhreuyK8C=y1jVFCo6mCe3pN&*P1I2`)#t&kpQ!k%^5TbG@v>#I_yzl3 zbp@sLvhH+$F25S0|Bt=*4s)vN;(s^e00ScsMHCAXM0{yNKtP&fr~*k28FpWRl$~L*>vssMWn|=q zBM~j?9ae{N!K+NY$Tm9EkH0nGFd3}eyqBH35*rh!-RahStII(e00j-L~{5Of? z>Ca(9e8*}`l;RVJwntqbs_*aSei#(l+ zCewXDYN$nOG5b@SH&~;LQsWqZFLyYyVGT7+E;#HEoybN z?{BHp>KIB6f%e)O&;AxTv6OH zEuCYvH5R`)r+AFK3tuQ?N zJOCYij8R+SC~v=iBF_Da>HSr2#8JN<|EsvAl%JWSh5t8MjMZ8jrVUCkEG2_Hdc^nO z%8dzI$!0vtWSaKHWi%*6^`=(EEk~@PHmyYVmqn&+H3sWSd1ouShGa7;HBIepGF^C( zRj7?cajEpE#GIq0R^y(y)OZJkj_|hD+N{Uo;xTw#zC^A#1liin7m}Ga0Y*D`x2}eh zfxa87Z#t1zWZaj^_!Jo%TS~q~Y#jQVwnplQRK}d4#!yXpSG`%7o>8M)0s4{FQVT!0 zHjYi)>1qo9h32aT418YDEdHT@AerLh!f4*!B+DCIOy7$rJLscivRi6jpJ-`L7QVcO zyY;#-8m-qiCPWMnP~}Q7#>VCJi~Dki+#XGTc8+O_%K86s5C;gy1^pq zHmwLJOdc|8ooV%_wBE%b=+fEhdM(jMxvPv46>d=t`BnOuU{dHzw9&y%oD@I&UZA%X7w#bP#E5!4beB zIeKbIjp1qX;Onw-b2lkc)e{%Ie=5O0B%qZzRgl4WVTn=GkP&Hev8iU0>Xe}>jyw%f za}uS=3(p`LY0W2D%H*x0htpJO)wJ}cPRgnoMjG0Xppp8?IVw|$+O)h*p%OsIFY`o)6CfMG*YqClU+1AO{eHv>y3o3Ayuk=v5CGv z9npDXlG=qnwyh0a(#ou(s+d)&^6F{4#*SVoR%)bw7wJwz<}5fZS#Of1thI0Xq*17` zJWVKz5dYaaR1K4ydd zHl7vRl^lfMDHcg(?#V9)`!SVg5N)-~RE>#A36)O4OTb*IeA1a^sy{pRR~_5Zu_hs( z>&537ZY7J&@N}Z#9WFzAB%1V|(u`I)IRyQYtVzaJlTsM_k}+N$FSb*K7NxdDQrNyG z+pxAS{r0A+#gIw#U|?&V z!jl{&P9IsLnD50qZj>?KBN)%AR*8{QiZ}7KGCY>I1okovme&Y+MPWuY>+`cq@7AUi z(XG2`Et%|=uahjwCu5njtvMn?S9U(+1;V$R{nK z?VhYsGY`9`9(l|SGo8vAc^6vsu!U0C4w8*G(G*jC$dTmF-`T9YliEawe#Rb0ol|D5 zZER7&uYu^LYHcmdNqo#ph7B^=$Dj{8`j((@b_aiu8oolzu}CwH=pnRo({F?Xra zFjodY&wi-EB#<)B8P0^~B4mluQR-?EamqY0+o}hdbi0fpC>x;{$)3XeZ))>}<)*rb zuC{}$)lIE&GBtIN0n)oSox);`O}Scz5$taAk(@irS*P`m7XcL z4vbIJyZ$8?9a&(Ds_IU+VuKWGh9#(|7X_FLqpHG77cifOG&R(>atZIr6^WX*Jj z#?>@(>b{bl&;0)zWx`y$4x{%YA6ktxtZ2K-FB<;cYBruUt9FZ}G*8#5ORW~{s;**N ze2q{0hTooGp}?jYxHF@ymq}e8F|7? zoAniSHJ;Te>?^r|R$DHN%gsoSW$?CAACNaq(N?O@Z5f;;LM_s@|!#Ktz-Sj6VKY}Se(xBpw%%McZ%)wTf%7LLA$YlwrQiw z)ZSS(DXedkm6ixEW4iC}XQFt%`Nh+9wl!v(Wi966sm;^L9FL;kkiU|Q=0M>Qk@V*M zqtIvgT0UvLnLr#Q9{g89K5=H^VaQI~7k?!^xM%wI;o54_DC+_eCDEhL1Nh z##XrwO-uZYxt0`qmQ10G*B6pW*DRLaNtV&pVi=3JSX3}|n`efCX*ijvTg;6B7S+vU zPhs9<$df+o@HCrslKOKR?^}%+6+ao}EuWRBJfG_~KRa;|^Z%nq6-OHpElH--pz_Hcbq(2#y&tXfjns`c zD&aEm7X{BIGOir;p-*HKssK9;_T-nA;bxL;T4S+Ywh-kkwyVj;hY042q16yF(Qd-U zUj{Tbmy^g~Kqr7|pm6;9PLaVhu*H2VV|;<-JH^Z&ioumRT0~on zBDQgmO7<4Z%&#Mr7LUWHk7DFVWpB4QwS6$zErE=S%VQ90s;!L8wKKiz4UTC0cG6dd z#ro-`zsV9GaPqn-=aM8-TQbGFD`9*a_kL2J%e4mSB0gQ?B79M{XZ+-8XR_%fGBr-R zc6)@asXkVv?jT31&v;&JchK|Fefd@0?a6G)wY49M`Bt0c&yAL_i|@2DzJ+SMdO7~+ zW`KNYTu0NpDlesoIQ(y`E?`Owf_o)8kS~pEOnTQGa?yccykM7-k_klx>Q!4sFn(nX z1KUT-EVaV+E7|y|%%rGi2dJ_X_6}q>Mv*Lj%iC%B{JxQzdU4j`xy#eK+K|hPMkm!$NTw2oTFWK)R%Y<+vIR9h7f)~Y zz(Ri4S}?))&Wof?$JUP^W|d76(dR*S6R4a?R$EfpG;r^$l1-Eu>b*au`ac7w*G)OV~&h+T0t z+2{@m^v?N=`hjHxX-PKRj&6jxhBfgnO#0UL1e@E~;2_W<^2Ezo9lxY=oVCVU72RNO z^t!s7%<({R>)mTpS@)9F%$7bEK^H~4&;dqKak+jXJ8CVMQqggpC3H%~Xi{Vx&9eEW z#VNzsI6Tm|$k1?p-ChH&E10hEuD4ZfI&LFJx*B;oNj>pyl5k|C_nlZS?XZ%nuXLBS zmr%8njR{)So{ZKFqw1e%C?rF=#LOkZqn0WTk=V>p-g4TV-?{ujI>&Kxm|^G>Wksd5 zNc9U+FW6v-m*^av$vKUjM#JLi*wAuM&%_mPR zYc^583boeVw7RCS4@qO6Om;J=vf`q#W9jf+1=!3VL^cjv@3V;trsa>G%%W$=9B)tD z`g2NawR^1fOrr0)6pY~*jmaL5VVdWpHV3Wd!pV~+a)_@|8P!H^fbm8%Y?sa>i_OrE zCGomPm5iCLt|OD(5=pWgwOaHJ33YrQw3JWqRlnC-U4qlaPBR($)?yhgQQF89E03)l zk9iuam`l5feDQqku1I=Uj3XM`^my4Z^tJ~Yt9)-;%}wURM{>kxakeI>B~N>mL+s9h zbbAVIZA&Msa(2Y);-2o-uRAR|`YNYdO};d)y7#4ZT}>`yO*8i8jnv=-osal*xIVf-s2ZQ8; zZ1fbXL2>CQL7AFstELzzUzBUB78;~an>UD5U$zPfy7Yk8y^SFs6qw**A^YP1~%5;T?Z4$jfJ8rY;gA*FQatMCm1J<^cN_srF z3+bBYRW_$(%^hZQ@BuGxJExE}-nH7eh^74Dy|^d7U)aX3_@3E1M}VV%h*7q+`Ostv z%}I%$QFFNF-!fy#Z!9D-$ownh-o`GhCh^rokTlwrS|yKdNy*nctxX%it|gSHycH7 zXep*eT&$jFw`H|`pBZ(O73R~IqUq}*O5cghotJl^RPkzN%^n@)X8 z64{K~ua1x+qrki46oPpq;0Xg6Mru8wN&DEDDt^}zssGb7;kDoS-_+G>e>d`{te|g^ z+{HE_O#tnG=oJ1p(^WtN!05r_X#!|}+nuRfp#8(ipRxr76U*d|>pAHnXhBveO%+i255`!>MI|lFV|3Yxxr^e!WMz57J~R z8fs5(QW2z_%Q6mf<;e{7CI+OdBeWOhuVl~& zqFTMXQq;;KHIqFFsovzn4)9)brt^KD!B>5Ea?mn58KNU9j*Nr*b}3XmXNJm$vzrfW zczns+pd41sAV(_uBWdh!B-!Z!-^nGTOD0OZYL6vV)Td{kZs>Mbve#aGFbjrVVGJ8S z3Z7taD}6vclM(w!o&ex8F{)Q>NU#^?PaNBYPa_{E2lS(he1-Jt($0Lz#CVwaa0cJs zrjP5Pi4wXa%viV2-4l<<9y%y<)9!sxWp%?Lg#$KGU&{su&BQ)upz4l(i;eWxzi6vd>!W!4yktCLWO`#Zm zO2wRnYR1y3L|I|M7><9xy|mT!WqMb|efGp{o%Npt=V-G#2GjG&W2bYy*OAE5u9TW} zr=fW+v9gIp1;vxEEtuYI8lM-BGdl6Rgg~h@tsl21lu9##G%`UCGDQxC%M&uby;txxRVQ1*3%^7=?&Ug)a1XhXiLlTn|aDd(M^1`_*F~x(0#UW z8e5%i(|FhqGCm|IETrhe}VL|@^ov3`LarD8QNwf;7$4F!u zS1C1hpEs zlRH`MOt6-fO}xU@r&Aa8T7rWXe+$F$ZGwXaoNYKbp0n4Z_Y^#Fr&_WzzAEH96Z5f6 za*Saye@XRp3#_LCh?q~0z))KJxd}O}*=$6GL0h3GVqwOl1&hZa9`1@3J7YI!*H5*a^u-6z zRT)}VPo0kFD2a?+1MMS?_rT#!l-e(+wznpGhRjg4msJ^CIG+>=El55`-<~Y$$&(v& zWl1(y-=xTf&jfLf_DWJ6rt{iN&Pn9tkwu-N7SrE}EiR-l*U-m#X?>=t5c+Iz3dtDq z$(17-)gL5RX7ew9Eh$r*|1t8@X-^B|?r?RGC=SOASBrK=u78NG<&|ypndDiov({p0 zO$K9uC$`C2VIwvA^kmCOmKeysh#pI!NM6#Pv5K!;H6L9%`iho%PWW#!CtF**k;>Ye ztk|R)m%r2~GRScbz2GXy-eIlvHL6{vxcL~`H_?AxWIy*dd9Zi1JN`-MxF{lng%2~S zrmF}o0c?A{q2!|jP050^lb9`Hx+F$lHtO1K0Fqf@kCo{DF|)hooA&6oR9ah{g_H6} zH{<^)4_T3qX?!P@@dwjbI=Yp8=U(M4vto9lH4Vs&;1=t+l-Ah^A#AyCwm6N0b>D>1 zWi2d6o-dm*Q~KAw9nU1C|0(j*=1cChFctKcJmYgPbTxfIC#r5zfvWvZibyGRWv8hN zl1`5Z<0QpAoDQ2I5bECaR4s6+H|x#(1=-O#O2z!KLq7 zx`%7*(tn^lmQ+F>y@;*$$I{r}CcAEKyr0{uA5FQ%+WEbBaEo;~Ss#3!D!29c`zZa%~|h#d!;sK7joL-%8U%I1FLcDrtY`a+{K)~P)o>9 zr=4m2PZ{Mi2tFqPPf633ht5tj)O6Mdlu7&qf#%|9eKO8%oz~ne=e+d(+oCbf_<2*x zZl#m(VvcJKVVvk0H-AhnFD+0j$)CafYG!vVF*==Knz3tsXpe1k_R8d(NKTzK&P?NH zn0HuwJj$B;CKOGx&O!2rNz`6e*;lJbLcwN~Pp66FO6azQ!bvo3o=?w2(~UpsZ_-)2 zB#o@kN2ev5PBPsTW2KPCYIE}Qz~Mlur-@LMUW7r_Q#fulx#1OG?PeUT^7cx8}la)C?7?qQUz*# zX7|(Nwk45J{PUy?5(KS3u?LW`Mr&a~F;B3m8`z()A4+P&91&$+Rn^Xfs+#4OPcEd5 zK+iGi4RTpK!Swu=)^pCMl$pIsdSFcU0j=3*4OmP=pQi0-^Fya$^d664B*^67d8ZE9G)Fb$j>sRs#=lLnw!u&Z6tg+QX^M8~&L2DIUoci3 zO>@r7r1j7jI1o!~GJ&-SPFd_f+3MWGqL z|DN|Y=YErHYi_X_uYORaNtT6VvGzUJRgaU6_Pc`2w}y2#oYKCsX4Fi%8*2oc@se-j5O6XZNGA8Rr2huSy{yC2 zfOHjZH>2^$Dc!gC5<_`$k#R3!7rIr)cyXfo+-e?MGI5M2pWb-%kJV}jDMIbbQaBbPtaN-$3llvYWo*VDWNAMEW15*#`jcXe01prb+OHgmnyX-qgK)+jZfA3 zA;HkZVi;ASiM&QR|6!r{7RZk=^LVpf6tJ;p*Zt+ zrsNGtE0W0Q;e#l8XGnwrR3p5eamTsTB{C!pJ1Gd&3zz)71WF$#3tQl=aQ$Hs$SG#{R`K^iAy-Ta;dg8kP<2{IZYM*tJW@LG{UkP$J*D!lT-|}El)gez=}UQ6Tb}yC zuyEUO-&vljd8XMU-d(k&gGS@uJhhBmdSOch(-$J2B%Dy_&T8@e56CFEh>Kqe2uad`}PRy_vov+VBjkCysJV}$M zoaZE_7C&9J${rwDLYgUche&5lIi={uS_$c=RQ*IMdsAwit9w?C=Gze4yH)Hv$)1p` zI9?-%H9N@9OGrn|uaH^lr;(ngzBSOgQq`y(ubvd~Rcbz&b?sLBX0jWVTa9zi*L7R1 zL9*JL{(@mK1{J*;qM=qVV9?l5!zEW%-*_5NgDQB z$!<-{Fph90Bw|>nlht1J-G;^1cl2fJ;xPm1&LDbkM4pO}z@ALJNp|54^^(#{qg+Tz zYr<({w_K9YgfzMbNoQ}=YlejzrQe*Er+y)uy&a~{S3fCr)4772)@)7Bv`Z5bG+k@S zWzXqJ!(z|r2-(u*G_pauYP(&gW1HI@Jin5s$_yu0V>&JG|HxDKlK^#^3KVZ@T5M(7 z|HtefQ*w$zlc|u=Z>L?Nw4v_L(=M`&irD-4b;H6Pzy}OYGm@=E6&uBS0h^>u>Q$sp z*tBMnA0WAP#AMQj8|yZoMjk(t*xuT6o3KSjRhp(=OOnJvmPYy>NfX*>eea#E2XmU* z8<|%4HwkU$#A%gHFHdZq$FQJz2@iSl1OD>(W1d<>x}-K{&|larRYNlrxQ+@~7b&$N zgZkR$$xY56pGk82V!h9>NV{cR_7-YSr&dXA(XM=Q zS+mymZmkpY(~i;PuxB#gu-KRG4zk&EF?S}7+t{l#J&r4NY|HVc@dy!JLNI*R_U4lX zbtKB;hs$4*MsEVrifXh)LTMF$lR{Sdw2}txbnd#RdKwna*mn4A-oTirZY7Dmo6<_F zv^QHKH8f4DZBJV3LQN}d-a)tPR3S%@(!SVd8y0R}X~8&pXJ2#rqA6YdZbrL@(rZdf z%6)li4@vCJODpZtF{ycJwUbF}ZC+Yo(Nzh}ORHQCYa;dPbS;YH>Bn~Pj|POk|mZY zm`DO6vy|S!opgdJ-8Yk4UqLM^A5$_;9ZRzO%OUKd^E#Wwrsfw-zDe~;vgBJVg?yl) zhIBDYiKUn;@5TKuHnp5`=^j!qRV;y z5n{ozc%EwAQx~!r zCy)_cVX@95tHiSyXZDI`WwEX&tE6Tz=3bkks!n7~3fjK6E>5RH^zsCL!(N_xh^+DD z7q@;+R&%k%&Hs{F;#xzT>=Vz{YOd8+*JqhNoJU5f&SHF$jHu0GeUGeCnZ+3C7q81= z{g$lKGX?xUUAn&M(bd4PhzzI#mV3z};bB;PT|6`_JII0#FGzkp6Cdp4smuH8n$jIo zqlIh4%!Qktz>p&+)>hFJ5=qu{sA$}@c59wGN=8Z3VyrVNo|nbimaLM9#n@tWyk?8FH(8}B zZ1(n%L8^h_TQW#67@}izk$ArwFT9LTBn>anA<_sok|1#m*h9QXiiEDT3tkx;Z%vv? zekMi2qECE-CCzz_OG-6aw2wrI=_aebAXP%j$)fKIlhaOC)h|AYqeb3AY1)v8c0+7vTWtAV4AYj z+W%y$X;rNjN6T!r#57Q;4Pe+ZX1xT z=nyRa%Tg~7%2vD1h#RP`+pf=6D{Q44!?M+7Hcgum+3H4{X2nQ~W6QAnP1&kOjy3Y2 z>DlUc(?E4ydvmsW$QI}LjBFLEWQwxX*4f$WgKVqCKR;V-w6&t{qHJ}RP2*act!}mD zvtwhn`rZsfwXY9mtFE?EpKPXOYRl)>`?J+Zn`OY(Y(xI+wr4B4hcW)kQsZ}I zt0T4^>-})HT5Zeu$fMcnWaW4v%IBjevQ?HX^2g6)tD7rYHAD7itG8@%8Xd@1*V<~I zd@x&evqjz)$yPbGe4c$fTaBt>ja>iZY_-WWP(J&~60lhYeUhy<+wwX2dA6!{p()Bz zmHy3E#T~7d$sH=H3z}OkOUGAKUsShRN~c#;gKJnV2NqORciKk6@MRU%tG4y4(OnhQ z)V$ct~9#lyc)U;~eF07>HH?>-Bpo(6$_3EW-E2(fjtLBS+l~kUs?Uy`L zNjWdDYC3;VNsX}875uJ}8f5GF-+rv5E*)$wb$<8Cs-CS>`|B&KkSU>M@eNr%wpm`f zp|aX!8!bg6E34g&Oi`A)cwuGri)9gJsk1J~QHxCpMczP`@wPaX>gK39HqD|WOLb?C zDza&&CRw6nDYR*N)Ju%~Dp_{+FhyBv#`qj{)HG0rqbB622hKK4S*q%7IVxgXULX2% z)CN;RrKZfvQPn$}rYtq*`5d*$Hs&vTEl0JpSw_B_qgI%OD9%r08E+d=!`{zP#Wu}B zvP`z+bJa&V>ZGk#+eCBJO}0{7$ui1jsq$Hl+HYHPUq6~)5)oi1#>4GZic3Xx!7gbTe+uDBrsw(OaTd9p}tEe+=V}ASHRn!dII(XTG zRn#6^sgED3q8_!iE3l)A^4lzq|5j0BZI&ryDJU~dv^}g>Rn4$%0R}g$sv6tc?srvH z{cPL$H#${SKAYw00aeul0O>z~)2tE!4^OR&RBRaIUWYn=G_LlD$AyMzj3bm)0EH{d%H=lqQj{8FH2q3ELTm9Gap^-BFhHb zNbt1DRZ&|hSG!#GtIcw0$6WQPEzTKN<*G$>O;eV-V+3NU1i;X6O8nculz$WdFM2+H6MdkfG_`u|M5VCk`RGpcL3GW8 zGc)P=*iZD1#uC4AYPpj5d}JtkH}q#)MxV8)==r!&^xkF?|5?jYP1f^KrRbe~MZeoB zvivRa`IuAmQRqLv!XmQ#DSAF46@6s3#Q)H;&9=zVUOrwGedtcnm&-p^sqweO=c8HC zyVi*CJIh*SEhKtA))l?;ZqeUq89~W|Nc6X5jL%2lqW3%^!uDOQQO&<4J|CZpK7hmnmSYf8t+2fK z=w0;As}h7B`-jgsM6c*N691NWwyMm(C4W92K|X%b(>!O&pXm8) zMf9=RA}qFSkF5no&*w6t_bw5ALB{s-nU3fqD@1>D#(elZNc5gNMOZImK75uWdfz>w zubNTM=TM^eZx#K;8OJA|VTnHYxab#WjL+v^qIbO@`diMo_M-W>^e3O4i9YnP=yzMr z+D)|{4}9(>dfze84?okYGXIwNd}b&52zKGrVJUy2=kq?%`%g;ztc>dypB0Ke@R#US z#(a!(Mx*`!P95*hxV_>tN{R1wNFpOM#^>`*(FZRQ{rHrv)&0q5qoQ}z5q+B7wccLQ zxvJ=0(9g)Yzu+@j(T6UP_+2}tPDuKn&vQku#)!Vcg{e2tqUW<<=x54;y|YWE_cWmLNU?vnLF}%N(Nek)N(9eKCc(OBP{xD*CYf6N_;-+NB))N-`^)?(({}E z^yTvJR~grLo-q(z$S?mcDa;g~=MzNd{#yQhFJpY3Z4jOFSNXSJ+f4C!E<$v^rm`V? zJL7ofnF`T+uwyC9xW4l|hUg>Z5hzHh&j^X$ z@sh+(bGQLL&lic_d0Kj&O%lE9wDdgJBziaWIL%0EwX~OKqC_7(AoflXC;D?!r;q;U`7z|bUi3d* znYsbeUY}-iI>ok9g)y^u7}kzhB1ud0r0jq0dj9KHAH( zcA|IwA@Q%v7@z0#kPr0tWYqJFpXeQbO8mpEQWuc^OFM6KC6uo1POy{+g!x}R%{t`XUaEjiuK=iFMt}i_QiF}rc{#sdVY2x$j zsOY12i~jnIsPo66lz59^pbN^$;wEiXWc_vx(p1(xjB+sfc{}w&ZGmGBeUOKXVGgD*zOY}So zjr&3RxST6dY+>ez3)PqP+sIrR0@lpXRt-DI*NW&#`T5gw-Mhh`a`lCNUB8Q z^X#|iJ$*&*tetv;D|((ANBps}Cz_NoAD%fEeRRC&|C43|C-He+UG$ES=zq$1e#f)! zqF0ZJer{4rt^LV!@}dtw|3k+7dB$G!{wE}UUFoKzS|op-&li0#BKi+4^WxS*qUYIu z#QzNWr#Zk9JzonDz2lhZ>4Z4tPxO4HK=iTiM88x{Ym>@|p06VypP1;Itw@p@2GR3X z2GNIRpJ&+991dgr^EC+MbGzuTPd(hA=PMMV_skW2gO-`{;p-R3e~;+N-L?6wl=PM&3a5on{HtT8P^K}!^J35KJB;)wut16=RUnlyJ zX*ST3KVNeZeYAoc2<*?ezu+q}q7T&){XJ>UM=CTgFDq?MUu?^tX#I*RZa;61e=i?5 zW>hoZ^rY7R&+xw<_+JnFuLu6u1OMxR|MkHCdf@*jJ-|~L)#-n2`!_c-;$w5>oB_go zF3;=$^SJ?YZE!uX6MQ+iA-Emb1?F=jqdxF;U^jR;xCgih>;ad9hk|E;z2G~*h2V8y zANYRoH1NYs9<25VzXA>q6nT@F5IxGBK2 zza8v-K=@HzexC3XTEAHMd94o%zrtKWDgWQ}Kl;4`zPzrS+T&&6Qp7U9dmF64VPI7Y9t#vqsKR-AKUIC7QH-lZ6e0>b;1|QIjn`zzw>ziMWg2QFf z|3879?^BZW`$zk6vtbpQo2gC{GLb{lzMA0o!F9k<@MX*tD)NrRYpxmb+kqYLioXZg zQn)x1!63o|X> z@SsjcJ`bb3dRO=fupjZl;2ij00Xx8a%YAh^h>Jen*@#D1*NpxN+#v1!7wiL{Pjz$u z#fFN%CD?Jj@U>tUxKQiC^R$1M=d2pqaj{H?(X`aa-*Tm0j+ z9_$Bu^TfXz9Jxk#CpZlKez2#D_&)_Zy9%EKtM0FKNcjeIJ1xXz#aR*HxnbSL^eIFQ_5$eBc(~5XS#C zU?(4_(r-982%ZY|j1>P0uz$4hL*UQ|;TOT~;lfd{1O7k3F~mEMCjYs;3i>O+A#gu% z1o@8zdqzq8S>Pae1K5H5_JRFg(Z8k3qy5LUA6$X1=^FWD-K;U~b6HNp|F zf3@(JVBcEdf571l!nNrdG1u>1Cfow-UMJiO9K}_T0?iA>KSS%0&kC>u{_Wt%U7~*x z99l2@88~o<@Nw;5C43fLtl|9JcM3NF2bKz71CFf_9tn0X5}phW-7UNn?0ZOf6F3Oo z1CH(x|LfrJPT`|q*Tcf<9Ldk~sBkUKAz>HT_lWSd;0W%z9t{p$DC47qnWRCCpIPub zH%a;B;4t`JU4EnZcYvd~+3+c_|32}*1ol24{I2$I5&jzN+b(<(?A|I|jSdTq^#T1= z2khM={>zzZD2K5=@L?e9Bk+54`3FVs1$&V11ZG-4W?}uf1%Agi(Fb&S7MU?zP8 z`i1a^;eQ0|-z56?z^;3R|Iz+{aAUg0%JJSuyz7~%epgWZv%uEK7$adk&!M=xt2ZNnEglB^N zGlaK*6_(dQaCo!$k1*3QvU`l%=>I>NX*{`K>tyi7^bk3(zqN6^-5Klz7cf(P`sNTn z*tbREuLB3S3O}O#6NEnjdnO52xk%zU9}up?OzY2VtUp)6ADAZo8^J;FY;X+xfad!| z|D5Lgg+FGd_6Kj0_Md=1I9>c_)7`$@zQE1G&6#QZ9K(3%1CD_wK<^0Aj){H?!Jcix zTfpA?gkRA9&BA>1zER&s;i?xCQ~!ss{k#+$26tqp{6hDLejwP3`o}R-|J{!M^TV%i zmRko_O11}E!495iq~F8f$ULfqe*3__`NGeEU&Q>t+u-oy(qG?!o#21LfqmkyNe@SI z{;@s6jleE&JFvdlrx)0>SM(#8X}rd;{kw^o`|GPtM!qwlk3qkfnfhZ6`r~e9TK=vp z+=l*9=)E0i!$`k(z>zk>zia=M!sj}vJmnvSzYW;aO8f)C5pWSRb?pg^ms#*f+lqdj zX51{c3mj-5{@1l1^?wC+LSLbt;8nssz@g^CBf@N{!F-~<}ZaiF;o8YkpBSY3QDPKqj|@DGGv z-)uJ??0#GHv%#Uagx53Ecyo7i8}awRAA$a5?e8o8uiy`$zkX+?{#}6nJ@Yb&=ZC&A zGmVGnA*nA9{s_kRAaL+1i9Z>7FZ4^`clQ$iRz)sYTN=+_Gz0#5`xt`h%puowI&I0*h&>+?i^MnkFJ*+#e? zI0)_xR#%FDEZ75{4-SAsTHjXmhqNE{{RDPgEq+HMsow`~366lT13TQJp9c1W@6wF= z9s{d(qJIbM1^)&PgKIWM|F;)?JFpKt4D4}!oEWZ$QRizr@ zc)=uovt-OZsyb*oppH4GzC6 z`u{Rh|2eSzJqW)a@sEIG(EkYzzAxp^aY??O4}~vh&Q)qL#&Zv_dt7H@{N^)Pq58UY zGI$CzjrZWU!i$-yzg*u+y!*g`zlEO%M@|SwwLe$do83an2absU5^&^8;VxirRCpZN z16}}*9uxn=VE0kscfrAnq`tqvE^wokQojc`ANL1`Dv7>a`_C3$4i5e-@gD*^zY%^3 z?Eg;qQ|25xzQX?IH~4)&iQjRB)F1jm*adc-DfRUO`@a|ecyJi~JzMK*h<+p3eU9)x zW?FtOEWh`eIiJ36V|gBDrse6v_Up`6!fnCzz;19GW-9M*Ddh)&qk4bJ%;N#uqh;XO z7qUOz0ajlMzXXoLAJyfLi2nrG1OM5rCB7dw>t7BIAl_Br@KGt>mzl=*5{&Nx_#Jhn zf97bu82txU@b3f1>WTj?uoM38!5)7H&FXc*4&1!noSE{w1Nn7> zU*8Nr6s#7WCF`H|FA|=|Ov^8dm zdjCD5KeL_W=iDY-7aU$J+#Vd{XP9t_X80F^ec=1R0q|4c5coZ? z1Mz-hru+l1%6L7igK!8>Xdx*@>C9@4?A#qx=Z? zV|ZA|4-U?e@v>3#%{2}EE8x&n;qSqYX~MPhq&^4yEy2-p@%ION;HR&S8~OR36#rb! zPYXW)_C6)N9~`(%_y{=kjBwV~5-+?@_yTYg`nF)#Oz{r^2f;Uk9e(lO19pdn!`lCt z@CVxeobX?ozdOh1uR7Gt-2aiUg!91evuYXsA>hz=U&J-RC4o#4F8^AukuuH!;z_Cff+1E<> zfM2*ZIJ8)}1RNbDyb0`{Bm5RPvQRjyx5SIg7rqkg!1x~l_JZeYJ@^r@ueOvw1om7Y z{D;7B3WMx!9Mi&Y;Xt<|E~wT;NQ($RjEQ8FTbq)<0W2{nfkvi zj;Bs){{-<@zfSya_%CCod?U!G1N=SUAHZCNuD|1WYyvm{Uc{WE)TJ%l#`4+-z6`tz z+z@<_ndR6aaH`m;MYGF*5V*bVlf zya(qS0cOg#G4gqsIajGyar_v8zbX7bgPVcR86f3d;I`nF;2W7KKga8m&&^=p`@$Q* z{ttzp27BKSeh(acQ#b~8Vf|7AC4L0`SD%^sYbg4wCo{EYCE7ERnU-G&%j*`D_wkJ? z^xFVd*#7SZ2f=TET@z~>`XkI#pBMF=fIsrWIflQ^AgM2c`r0#7fA}|w|2nV-$H&Fs z$Z?6k0IXgU{e8^T9uMa49)&;fxcFbt%s1lD?+`QPSBU(+hTr|H`2T?42Y>a!l3#R@ z)ZY*s_($|zn5q6%=+Cj*kNxdTuovSuz)bZ|L;TI~yYG^CAAo%|Y8m;SHAL!n-zom? zU`KWF-v;)={|MLv|JUHadMRILsKkrGKaiQ0e+Vd|>qoeo+sJPp zSalbE9o)Nx@K0b5_?+vhJheYKO}2;4z&@NG_W;+%^FpH%_!hA8OZnB{^Pvxcr-5Gv zhu4Yz3-AT-{{s%*BL3PpNPZW>-xBOaeZ9ecEWfc}=WSBn&rJR4#`84m!G7>Aa2WhL zSj~~`*D+lloHb11`N0=~!{9bxHCM`ez;5t(W?EjpHnKeCfc@Zmz(Md{a0vVsGcB+1 zCTZVy%(T9`%Vd0H-zcoWb(m>;9KrnzSHti6RDj0A^{3oimkPY7=Z`|&c6_rQ*B z=NaX*hf9624#LgA(RRW&f}N$pv%r4%H-Q7^iT?$#w~_DoPcEUdr9JyKibC_v)s3o#IHfUZhybJ7{ zC;TePhxo=d`uz^}qCe_+rG6Lc@5fBb&x`$G8T|elQhp`;KKLJlKkO6#+u&G^@K0dR zU$T79&X@Z9S>nF}97g{R27A$ew}4|<{ts$Kz8`>tC|_Ze#E;?SFb%*i%;)p~`@jXv zS#*6J>+@XrL-23WjCjw2UCku_&zWg`cXaQh_*Y@H)bDC5ekU{eUGR5=KiW$C1z@L3 zcq!OBU3eonhVk|Ua~2&xBHs_0Y5#L4_CG&CA88=v&m4n%_(nzgHD;!KJjka9*asd9 z4uI!?L*Px|2>5Am415^uxJLTp1lR?>r~vhYJA-}TLT~^a0EfVP!4Ys290Q**R^mH) zNd1?AUEp3|57-CxfmeeA;3t`>f4w-qc#XLNu}Avz8?dj6aLzdKJGu+k2Zv6|`0vI{ z%g>MfofjMc&j1I(tHB}g!{9LZRd57+6s-53S%p&HT8x)E;3)KM!9n;3fFqc{E(XWI z3&A@6<^+C5>k?o4_bi5{Db)#&*x`Uk?h4aDgdxdXdu0rRN0a@N_m~*Iq zd%2DA{s=e>ehsXy75_1?8+^uilm}l74uji)-QA`9K(Oj3T%yavzexLgi~oLI9vs$s z@JHY<_;<~Sch&^SPhBJNnu5cfgs;*5KEk6kcNV@C>;|s|`@xTD{dJ;$9qa{v4Gx2| zCrUof{-Uo7_JiAlqu@bc_W;rRz(Me0uo@`-E#UAF;b(PuwC^x;6x9}^*4z9Q+KeVp{%c?HJ@|7;@=9eetFe1;1K*@fg{yKU$t1`J9C9E z1AC$G$egRxYHY8EGE@E`Y;UH5BjA!{8y{D0nJZU5)ygseht)zV>cr zT7HgSXd_C$t?)bW{OqIf`+pMuv&^*or(yZO4qkxgH4lOH^P7j6c|3KM{{5Pn>+3`R zqu4Ngk?<8LjGu7vf)i(Ua;J{D9tHAD`g`Wfme-Qp0?Eg`?QYqs7F5DFC2VVzv z?-qYKI0*lGa2WgyI0`-nR>!6M*=16n6Wjsp29E)I!OOsY@NRGrd>9-CSDY;IqhJ?U zosjy6ft}!4U^jR>*b6=c_Jb>wOZ*_X5jYGU2#$j1fStRf{s+Mk^yiz}KUnzDNvYd>Dzw-g-MBKj>_zg74EGmTF_j`u&)jP>bvZ~*?Zr;0uZ zZVnECyEF5ubW-9Mfqme`;1GBR*zt$x-v9@}zk$`C;=gE`#1DcygPnhgzYrV%2ekih z@jnXofZqehz<+~X|A@Z9bg9n=?gI{i`OSmeUiZJEUjq(+p9U*+zOlX@1^dBg-i-dj z%M)9H-Qaw1Y^TKcgI(VWuVkkE%^GZ99@74O;(rnB9U~mo{FLyYV9y@m3umCcD1Rl` z|BUztgM+UM`@pWl!i&L?=Y_X{eS3xX>+(+ue+Kr3g)85J{(MfjDL8<9`+|M@#Xm{= zUld*hj=mtgjhV)G7~}Ib_`M^<|1CH;P`Ki)Qh#`;@FiexiEsyS z`yOy`fcW=-z5RtFVE-`TU%_g$@OigMKA!Qyt-+B3;Xz=BSJ=l)?Tw(lOTkg_gV2ZW z7yV1jwEuD7c>D{n6I@}Y_+8+O!ESH|um?O8>;;#Dec%;fKX@lN0Dcu51b+<Tr{N2DF z@F=hsJQM5#Zvgwj`@jM4yWk-B7jOvdn2r7cUk;9ddx4|iao`wu4p@zl{<#<8DnUGj0Fd`qwk+z;#qPt^M95`Q5$hI?lr;(!D^jw3>*fZGhgZttP+1)uxqvOjbQg$VLvnF zr=Qnf4}Wx}_@4rY@iP6-!7;pyzw!d9&wH2Xn}MSN;r?LH2I1-8AV2s|zq`S1#D4)C zM*UxEJ^WP`qJ5~pF<7DgzF-gPF9C<)UkUatm-=^sqsZ@lutNWR&rJQZ4$CiR5iu=4 z#Wx<&uO8R|Zp%#LTYoH~7c-S#kMg6mf1cDo8yuW390Ysee+KNr#}y8P1K{Ie{qcpG zizPoN@@Wosfx9zPerm4NcRh2iQgM*?wFJz3cI+hJOH9e=KPPbGA}{KAUIw$H6}V z@82qBK7;P>d`#j^hd*?kD<{?=fhL;QWg z;Tpo@wH`bh?B|6{zq>Uz5Pk$4$q{}L?7&wM4}-l`#Qz)E3H_PNB;TkKe|>Na?Q0A6 zfct`j^+i7h9Jo|?hSr}UybkQHAiP7D=NDbk?+sg9}4z?%fZn<#J?2m{!@4x*#Eomv)~x`Bd{0w#J~}7&I&Al`m7HB zoL~p)>i`a)5dQ$M3;JSk@VNNr=9b)czTw zKLK{l6wbX<+7m*47lZwX*AlD{uRA!1^4Ei%$bTZ(HBI8*3ieGGUIuoQ2?w(EY}em{W&RfMzGNP8lir2M&H|3=}4 z;J|j_4&W&Ky|n*9@s9#W_(i+)o343_@KViNh3^B0g2Io1UAu%|0eiLye+u?)7XC%^ zeZo0wv3%|jJ`e1BQn)$T|EzFVaQF>jFF5$Ba5>nuPI$5QUoQQ(8SHK%{1iCaRQMfm zsJ`&$VE?7Uzk?kpUv-`2?`|ai3pCSb-uc%Y9BUwaH8_N?qItjppZG_CeZ7Ql2CFND zmw;ovh40f$pJnIY6JSq?@T=NiD*OpJg8Y8a`iA1qUN7x&T_b!x*nfp^LvXaCaC@-x zGU49fAbpmde;S8FqJJ73LVvslcJ~+m7vR{{!heHZ z?S&n8N&Ec$gf9cTI|;W1JMx74fYngpk>D8orC?82@y`XjTM4fNN5Kz*gRRB?6gcJ- zepi=YDdYDuuyd90ce;E)_yjn_FV3c4#SPNF&?OSD1~{->{1<=~^bNrN72 z%oHz*csIZwhQAR0WAIOhUrm+r^TF;l(x0oqzBc0D1P(#Jotg5v2l+e>zy5gji|{Ml zFY^{NwJ(PDd=9<0vBduoe#f<)jPddp*afb3kF+D6Czz@J2;#lWO!3@nCI9!J zkKlOq2=p=Nzk~mM_>VJF{VvRBR^2G<0oT!t`B4|x3+}>9hvoxYxQ+fD3|;^(0=EL+ z0uF$ef!BgJfxClugNK3-fE`yzeIJ2+ErovoJK?Vol>FMD{5jxh(EkSwSGVF{S&-t>@^JK)BDoT4q{au59Xb`fX*V@(nS+vWJ=c z5vTZ{W2W-QQ2qcofcb^Dz%lp_qrB@&3PQgqGllYFe&i@vU+@2snWf)}{vT$_N8b-o z}G|7aUw7ybl~$B>X+tai{Pln><3qVP|63vUBFJ1zZvX!R^mMjcEkUr_Rki7^=%R_HdnYk z*u6%095{Nr@Jg`DFB}G|nZnfwj$rkG@OWmbUkz?<^xs|ZJK#SEe-8YA!0&>;;Uf~? zy-nf`21gzeo&)y$SNIWdc&Bg_91RIqe^lc69~SNic0M9J9vlF#Wv2Wc$nPNhLHLh@ z!~EeA`Zd@k@uRzh`!eS$wGqd2x56L3NBld$v7qpWn(q^?vRmrc_wROOuAu1s9^#)2 z_J1k-UvT7z@K@l#=fW31CgnX}2wxA5A>MM$@V^R<91#6q%vEVTVSn3lkHqu6BmR7F z5aVe%GwIcPos9l@34Z5$hzIsWg|FBv@d6(T7lOSX3EvHN9~M3Y4t^k9b)S@XAzo*2 z2>IOv_Pj0ntzhS?!XJU7uM3~`IK`voUmMH67c=$0>jm-q!O{J~yTA_g*Z0~Fef=jS zo)htIWTto_S@_kv^a{|Z(o#P51a z$~(Xlz)tX1&4~9U*aiP(PfK|>cn#PCuKbMnz2F&OANXgmA6ys~eE|FkI0zp6toTFV z*TG?MkLSc60f)g+aGU4F9|P|ME3~h{3*vWuCH*r5?1z5^*n$2$p#9*J%(VRO#qx9Q zmw4`E!?Uy<^@Tg871I5u1OAlMDA`Ksu>=vV)=KFen_Ad{w_vf5rXZKs*)c#YPGX8#RnC~6RgWTqLKgRLCC%3s@lxOMv zZf)+`=JOEuzk2Vgz4Nz@f9KpLFYn0srvQU`%A9*p85;^m5;~HKl0@` zBcGDn%=dBTyCSz4KW6;x)CVJXuR0&yRQ*Shd|GbPem3o|BoE4UtLi_r^{eFe@2kD@ zmOLA0Z_BmUD)(`O(>IlWj1$_o|G?Cn`IeaP131CI;xaz(L)E8vG0yNlA1SZkD|4Is zamIQ+#@-6e=cJF7yDQ~Ka71416Xj*vUxownH?jYQ+8?ma)SLZ$g8jTEw;A7kUHR(V zX1yNYe>7b$2Y765Qy;#j`VVj!AN8qnkN$4XZO+eTy#H*#9zOXq_3v=LPQwx7{g~T~ z7hP{UF|VE2#Wg=yUb?1MRel^!@TIv;(}?d+M&lyB3&(gqF5y);!C&Gs-horR?-v>` z!!2nTPdLQ2zGVHlDK26k$M_;#!q?ygPse4v z2&edcoZ$+t;Jr3zK7~;0Z;l<@5xe*t?BPM!$M@p^zmG$_XU6(*Ph7+|;uvSRgnz>c z-g~3^D`OX@xE;=L4_v_^E?lhjkH!wZ7rXcw?BSKz$DiT=|A9li_gAbRySRu?z%dSR z2@k{xo`}nMCQkA5IK!)P1!uT$iPrxIcJSU`YrZZ%1bet0_VM{Rz+-TT@4^wDo!i{s z8gjo`gI>^S74p|++wTxYlcT)4?m6D;%(T+^}kp9uDA^j za6jA|--JUv2M@t-;RyePN8|cGXuKkBgD2wv$M|YI6Hmbdj_VF0p6;HwN#RvYz@y8vohX>%cxQKoHDDH|^-~fM%d*k}QYrGJ5!9(zH9N~NMXuJp) zafT=3THDosjE}`L@x{1=@5XcSYdFE%@KSuxAL_r1d*D_0dYt0Te5f zgDZFd-hn6M!e=`E^KmWwF?R5;xFO#APmSl|qj59b3wwAtZj0~4KAwZS;?+37TX1h& zbEn1+aWgywcfk=Jgh%7saS_kMlksXC<6rSi?EaeH#S?Hd{2cc1*SIaNQ$zjv_ypV)55@srgL~tSHPt@Em*OG# zE*#+(@o2mq7jdIn>Tfdch+`b$nfPv8!f)WYxPlYhWOwzy6rYdFcp_ef=in5-kJsT} zafT15t^T**vvCEF#5?dkxbUTp|I4@*{ti31;U4P0A?}j9n)&lTPc^Ih{Lm}+F6R59 z0p@?2*G0J0Uml3d3*{?t`nNnDyS+^(<~13I4=SIAy<_EB*#AuR^Ks<^c`+{ZQvEBr zYn$(T59wUh|Lf#MuTGWU&AmsV@Fd^weMufZ+n_4{2S>Q!o?35!kHyY&s_%{qco2>j zDW90z%*SOvXOJg}@~3b{|I2V;iSmzW-;DO#$RqL^due{zV%0auZPqu3^&Lg-FkUC} zx#VY)7a4yb4(P9lvum{9Q?PrjJR2t*&u47?S;}9+>0tRy>nr3>aCD*k4NfBYXB>}^ z|F&ML<6YC7jQRc+zV1|Y{OaSG{CS|JxlL1NirOEIy;yEXy~qBZYIFX5)}G|E=&vt% z@Lk=i@vh2k_WLRJGbVTYXnqgjtakOP`X#v7NM3_e{39;lUF&H6$^NR}9~TagPsAR1 zFP!e7d?+sMB~P;Xp7O)CeI5A)9N>3xp`P;1xVWFZ184Q+T8`%HHfgtu z>hc#huO|PH+sr>=ygzXf*Ql%Ui;Y#kcW!h3%;WrNjP2k5J(T*SqwZgwaRK+k>B-8+ zVjs`QZRQg*{#@I>jp~=h-?@I@e2RG?{a#?P(-#+_s1$H)fs@jjMa6^1u?%mD5 zBX_d$>&Z*pZ*IX|>F?g$W~j7>?k}^fdue?M4$hX}z#0Aw7td4vGj`6DciTt(hv&!* zv2(6`G*0m;I5=N8j|nvhrMuSITiJOlRsSlfP{j&}#_G|=(riX(ist>0I9zue|O zOSiPFIv+-oS01fm;YM*ap(be8gYMAum3sd^LGM{sp-+NBNKBy~zs=v>(ZE z&X8lPXpz(8*2R- zd86EB{Yfw7hvEQxI6PgsZ}ZdSvv72l+&i~9zqZi-W#n03%$&t(VECVt2WG4))6OCAJ=q!r@BgMI5b`@4=-t^26A9UtWMSyd0-%mA_-_KaxMi z!6))}*j+F0z?Dzsn)_=%3LE7HxP%YGvH3Yv{yNU)=I2QH>l9qxDxZy`@8yeaz4W7mA|m%rBI3f_V} z^SxXC`X#qHKNfO+R6D@fyg!t9zN(koTrZUiRPW|C=i?5}$5!M8S9yC}fPO@A@ZA2;9!~kM{}p+#$TTvq zA8h+n-j1V2yH@4@SiiAnm1`WN@sefoJ~$>n5Ib)wZ)WRXl3QVy{3Pt-F4)68ae?uA z+xE-V-^Dn7MZN+TUzNvV?{)d++~#_GhU;+}dH9<0M{%VrKW)8IUV=U5^G0sdUpTCD z)&6`y9`xF`%HQI`+45i5nIzXaSo;}HmJi333*?TtFi}1S7q60s;v|r7u)b2Bj9wYD3RP!wjmtE|3)Ax;)w-WN0Ed0#t89Lbd^^qt z$|anhDlfrqclmAG{(SjcTYs)x{ZP#}=_xnDQ7`#e9G@khj>{Lz{czz@`Fb2&Am59f z)8r?y7s|_U+CzR1XUu<#&CgW6%VC;t*hOxDz5a4@?6W_oANB?)AB9uS?}@nZ zlFql-)(=(v<2V^4FT$0<@(P?jrS>1-GVQ<4ZJyV%>bk%0ATM5``rVH(xp_Yhc>ZdN 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 z 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 literal 0 HcmV?d00001 diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index d8b401168b..3f258de332 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -2,6 +2,7 @@ package main import ( "bufio" + "flag" "fmt" "github.com/dotcloud/docker/pkg/beam" "github.com/dotcloud/docker/pkg/beam/data" @@ -14,7 +15,6 @@ import ( "path" "strings" "sync" - "flag" ) var rootPlugins = []string{ @@ -22,8 +22,8 @@ var rootPlugins = []string{ } var ( - flX bool - flPing bool + flX bool + flPing bool introspect beam.ReceiveSender = beam.Devnull() ) @@ -38,7 +38,7 @@ func main() { fd3.Close() flag.BoolVar(&flX, "x", false, "print commands as they are being executed") flag.Parse() - if flag.NArg() == 0{ + if flag.NArg() == 0 { if term.IsTerminal(0) { // No arguments, stdin is terminal --> interactive mode input := bufio.NewScanner(os.Stdin) @@ -168,7 +168,6 @@ func executeScript(out beam.Sender, script []*dockerscript.Command) error { return nil } - // 1) Find a handler for the command (if no handler, fail) // 2) Attach new in & out pair to the handler // 3) [in the background] Copy handler output to our own output @@ -217,10 +216,8 @@ func executeCommand(out beam.Sender, cmd *dockerscript.Command) error { return nil } - type Handler func([]string, io.Writer, io.Writer, beam.Receiver, beam.Sender) - func Handlers(sink beam.Sender) (*beam.UnixConn, error) { var tasks sync.WaitGroup pub, priv, err := beam.USocketPair() @@ -329,11 +326,12 @@ func GetHandler(name string) Handler { return nil } - // VARIOUS HELPER FUNCTIONS: func connToFile(conn net.Conn) (f *os.File, err error) { - if connWithFile, ok := conn.(interface { File() (*os.File, error) }); !ok { + if connWithFile, ok := conn.(interface { + File() (*os.File, error) + }); !ok { return nil, fmt.Errorf("no file descriptor available") } else { f, err = connWithFile.File() @@ -345,12 +343,12 @@ func connToFile(conn net.Conn) (f *os.File, err error) { } type Msg struct { - payload []byte - attachment *os.File + payload []byte + attachment *os.File } func Logf(msg string, args ...interface{}) (int, error) { - if len(msg) == 0 || msg[len(msg) - 1] != '\n' { + if len(msg) == 0 || msg[len(msg)-1] != '\n' { msg = msg + "\n" } msg = fmt.Sprintf("[%v] [%v] %s", os.Getpid(), path.Base(os.Args[0]), msg) @@ -363,7 +361,7 @@ func Debugf(msg string, args ...interface{}) { } } -func Fatalf(msg string, args ...interface{}) { +func Fatalf(msg string, args ...interface{}) { Logf(msg, args...) os.Exit(1) } @@ -386,7 +384,6 @@ func scriptString(script []*dockerscript.Command) string { return fmt.Sprintf("'%s'", strings.Join(lines, "; ")) } - func dialer(addr string) (chan net.Conn, error) { u, err := url.Parse(addr) if err != nil { @@ -400,7 +397,7 @@ func dialer(addr string) (chan net.Conn, error) { if err != nil { return } - connections <-conn + connections <- conn } }() return connections, nil @@ -424,14 +421,12 @@ func listener(addr string) (chan net.Conn, error) { return } Logf("new connection\n") - connections<-conn + connections <- conn } }() return connections, nil } - - func SendToConn(connections chan net.Conn, src beam.Receiver) error { var tasks sync.WaitGroup defer tasks.Wait() @@ -479,14 +474,13 @@ func SendToConn(connections chan net.Conn, src beam.Receiver) error { return nil } - func msgDesc(payload []byte, attachment *os.File) string { return beam.MsgDesc(payload, attachment) } func ReceiveFromConn(connections chan net.Conn, dst beam.Sender) error { for conn := range connections { - err := func () error { + err := func() error { Logf("parsing message from network...\n") defer Logf("done parsing message from network\n") buf := make([]byte, 4098) @@ -534,7 +528,6 @@ func ReceiveFromConn(connections chan net.Conn, dst beam.Sender) error { return nil } - func bicopy(a, b io.ReadWriteCloser) { var iotasks sync.WaitGroup oneCopy := func(dst io.WriteCloser, src io.Reader) { @@ -547,4 +540,3 @@ func bicopy(a, b io.ReadWriteCloser) { go oneCopy(b, a) iotasks.Wait() } - diff --git a/examples/beamsh/builtins.go b/examples/beamsh/builtins.go index 08b8a6259a..cc94d2b5fb 100644 --- a/examples/beamsh/builtins.go +++ b/examples/beamsh/builtins.go @@ -1,24 +1,23 @@ package main import ( - "io" - "os/exec" + "bufio" + "fmt" "github.com/dotcloud/docker/pkg/beam" "github.com/dotcloud/docker/pkg/beam/data" "github.com/dotcloud/docker/pkg/term" "github.com/dotcloud/docker/utils" - "text/template" - "fmt" - "sync" - "os" - "strings" - "path" - "bufio" + "io" "net" "net/url" + "os" + "os/exec" + "path" + "strings" + "sync" + "text/template" ) - func CmdLogger(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { if err := os.MkdirAll("logs", 0700); err != nil { fmt.Fprintf(stderr, "%v\n", err) @@ -28,7 +27,7 @@ func CmdLogger(args []string, stdout, stderr io.Writer, in beam.Receiver, out be defer tasks.Wait() var n int = 1 r := beam.NewRouter(out) - r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func (payload []byte, attachment *os.File) error { + r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func(payload []byte, attachment *os.File) error { tasks.Add(1) go func(n int) { defer tasks.Done() @@ -398,7 +397,7 @@ func CmdConnect(args []string, stdout, stderr io.Writer, in beam.Receiver, out b Logf("connecting to %s/%s\n", u.Scheme, u.Host) conn, err := net.Dial(u.Scheme, u.Host) if err != nil { - out.Send(data.Empty().Set("cmd", "msg", "connect error: " + err.Error()).Bytes(), nil) + out.Send(data.Empty().Set("cmd", "msg", "connect error: "+err.Error()).Bytes(), nil) return } out.Send(data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) diff --git a/router.go b/router.go index abdfe61d0d..fc41a8991b 100644 --- a/router.go +++ b/router.go @@ -1,19 +1,19 @@ package beam import ( - "io" "fmt" - "os" "github.com/dotcloud/docker/pkg/beam/data" + "io" + "os" ) type Router struct { routes []*Route - sink Sender + sink Sender } func NewRouter(sink Sender) *Router { - return &Router{sink:sink} + return &Router{sink: sink} } func (r *Router) Send(payload []byte, attachment *os.File) (err error) { @@ -40,10 +40,8 @@ func (r *Router) NewRoute() *Route { return route } - - type Route struct { - rules []func([]byte, *os.File) bool + rules []func([]byte, *os.File) bool handler func([]byte, *os.File) error } @@ -70,7 +68,6 @@ func (r *Route) HasAttachment() *Route { return r } - func (route *Route) Tee(dst Sender) *Route { inner := route.handler route.handler = func(payload []byte, attachment *os.File) error { @@ -125,8 +122,7 @@ func (r *Route) KeyStartsWith(k string, beginning ...string) *Route { return r } - -func (r *Route) KeyEquals(k string, full...string) *Route { +func (r *Route) KeyEquals(k string, full ...string) *Route { r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { values := data.Message(payload).Get(k) if len(values) != len(full) { diff --git a/router_test.go b/router_test.go index f4c0cb1c56..f7f7bf1d2d 100644 --- a/router_test.go +++ b/router_test.go @@ -3,13 +3,13 @@ package beam import ( "fmt" "io/ioutil" - "testing" "os" "sync" + "testing" ) type msg struct { - payload []byte + payload []byte attachment *os.File } @@ -17,7 +17,6 @@ func (m msg) String() string { return MsgDesc(m.payload, m.attachment) } - type mockReceiver []msg func (r *mockReceiver) Send(p []byte, a *os.File) error { diff --git a/unix.go b/unix.go index b138934084..b480c47eb9 100644 --- a/unix.go +++ b/unix.go @@ -1,11 +1,11 @@ package beam import ( + "bufio" "fmt" "net" "os" "syscall" - "bufio" ) func debugCheckpoint(msg string, args ...interface{}) { @@ -13,7 +13,7 @@ func debugCheckpoint(msg string, args ...interface{}) { return } os.Stdout.Sync() - tty,_ := os.OpenFile("/dev/tty", os.O_RDWR, 0700) + tty, _ := os.OpenFile("/dev/tty", os.O_RDWR, 0700) fmt.Fprintf(tty, msg, args...) bufio.NewScanner(tty).Scan() tty.Close() @@ -170,7 +170,7 @@ func SocketPair() (a *os.File, b *os.File, err error) { func USocketPair() (*UnixConn, *UnixConn, error) { debugCheckpoint("===DEBUG=== USocketPair(). Hit enter to confirm: ") - defer debugCheckpoint ("===DEBUG=== USocketPair() returned. Hit enter to confirm ") + defer debugCheckpoint("===DEBUG=== USocketPair() returned. Hit enter to confirm ") a, b, err := SocketPair() if err != nil { return nil, nil, err @@ -193,7 +193,7 @@ func USocketPair() (*UnixConn, *UnixConn, error) { // returns an error if the file descriptor does not point to a unix socket. // This creates a duplicate file descriptor. It's the caller's responsibility // to close both. -func FdConn(fd int) (n*net.UnixConn, err error) { +func FdConn(fd int) (n *net.UnixConn, err error) { { debugCheckpoint("===DEBUG=== FdConn([%d]) = (unknown fd). Hit enter to confirm: ", fd) } From 00480dcc8c6e5ce25c93d8c4c5d64009aa6603ce Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 25 Mar 2014 13:19:41 +0100 Subject: [PATCH 085/347] beam: Add more tests to unix_test.go These are failing, and indicate things that need to be fixed. The primarily problem is the lack of framing between beam messages. Docker-DCO-1.1-Signed-off-by: Alexander Larsson (github: alexlarsson) [solomon@docker.com: rebased on master] Signed-off-by: Solomon Hykes --- unix_test.go | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) diff --git a/unix_test.go b/unix_test.go index 09815aa0d6..976f089c23 100644 --- a/unix_test.go +++ b/unix_test.go @@ -25,6 +25,30 @@ func TestSocketPair(t *testing.T) { fmt.Printf("still open: %v\n", a.Fd()) } +func TestUSocketPair(t *testing.T) { + a, b, err := USocketPair() + if err != nil { + t.Fatal(err) + } + + data := "hello world!" + go func() { + a.Write([]byte(data)) + a.Close() + }() + res := make([]byte, 1024) + size, err := b.Read(res) + if err != nil { + t.Fatal(err) + } + if size != len(data) { + t.Fatal("Unexpected size") + } + if string(res[0:size]) != data { + t.Fatal("Unexpected data") + } +} + func TestSendUnixSocket(t *testing.T) { a1, a2, err := USocketPair() if err != nil { @@ -83,4 +107,131 @@ func TestSendUnixSocket(t *testing.T) { t.Fatal(err) } fmt.Printf("---> %s\n", data) + +} + +// Ensure we get proper segmenting of messages +func TestSendSegmenting(t *testing.T) { + a, b, err := USocketPair() + if err != nil { + t.Fatal(err) + } + defer a.Close() + defer b.Close() + + extrafd1, extrafd2, err := SocketPair() + if err != nil { + t.Fatal(err) + } + extrafd2.Close() + + go func() { + a.Send([]byte("message 1"), nil) + a.Send([]byte("message 2"), extrafd1) + a.Send([]byte("message 3"), nil) + }() + + msg1, file1, err := b.Receive() + if err != nil { + t.Fatal(err) + } + if string(msg1) != "message 1" { + t.Fatal("unexpected msg1:", string(msg1)) + } + if file1 != nil { + t.Fatal("unexpectedly got file1") + } + + msg2, file2, err := b.Receive() + if err != nil { + t.Fatal(err) + } + if string(msg2) != "message 2" { + t.Fatal("unexpected msg2:", string(msg2)) + } + if file2 == nil { + t.Fatal("didn't get file2") + } + file2.Close() + + msg3, file3, err := b.Receive() + if err != nil { + t.Fatal(err) + } + if string(msg3) != "message 3" { + t.Fatal("unexpected msg3:", string(msg3)) + } + if file3 != nil { + t.Fatal("unexpectedly got file3") + } + +} + +// Test sending a zero byte message +func TestSendEmpty(t *testing.T) { + a, b, err := USocketPair() + if err != nil { + t.Fatal(err) + } + defer a.Close() + defer b.Close() + go func() { + a.Send([]byte{}, nil) + }() + + msg, file, err := b.Receive() + if err != nil { + t.Fatal(err) + } + if len(msg) != 0 { + t.Fatalf("unexpected non-empty message: %v", msg) + } + if file != nil { + t.Fatal("unexpectedly got file") + } + +} + +func makeLarge(size int) []byte { + res := make([]byte, size) + for i := range res { + res[i] = byte(i % 255) + } + return res +} + +func verifyLarge(data []byte, size int) bool { + if len(data) != size { + return false + } + for i := range data { + if data[i] != byte(i%255) { + return false + } + } + return true +} + +// Test sending a large message +func TestSendLarge(t *testing.T) { + a, b, err := USocketPair() + if err != nil { + t.Fatal(err) + } + defer a.Close() + defer b.Close() + go func() { + a.Send(makeLarge(100000), nil) + }() + + msg, file, err := b.Receive() + if err != nil { + t.Fatal(err) + } + if !verifyLarge(msg, 100000) { + t.Fatalf("unexpected message (size %d)", len(msg)) + } + if file != nil { + t.Fatal("unexpectedly got file") + } } From d0b1155e891223f2ef645b7ea3b1c62fe74e7064 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Wed, 30 Apr 2014 11:22:11 -0600 Subject: [PATCH 086/347] Fix various MAINTAINERS format inconsistencies Docker-DCO-1.1-Signed-off-by: Andrew Page (github: tianon) --- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index db33365bcd..aee10c8421 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1 +1 @@ -Solomon Hykes +Solomon Hykes (@shykes) From e9651077fc84335472d3af354f32396b1a1f7c42 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 31 Mar 2014 11:06:39 +0200 Subject: [PATCH 087/347] beam: Add simple framing system for UnixConn This is needed for Send/Recieve to correctly handle borders between the messages. The framing uses a single 32bit uint32 length for each frame, of which the high bit is used to indicate whether the message contains a file descriptor or not. This is enough to separate out each message sent and to decide to which message each file descriptors belongs, even though multiple Sends may be coalesced into a single read, and/or one Send can be split into multiple writes. Docker-DCO-1.1-Signed-off-by: Alexander Larsson (github: alexlarsson) Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- unix.go | 166 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 136 insertions(+), 30 deletions(-) diff --git a/unix.go b/unix.go index b480c47eb9..b2d0d94150 100644 --- a/unix.go +++ b/unix.go @@ -21,6 +21,43 @@ func debugCheckpoint(msg string, args ...interface{}) { type UnixConn struct { *net.UnixConn + fds []*os.File +} + +// Framing: +// In order to handle framing in Send/Recieve, as these give frame +// boundaries we use a very simple 4 bytes header. It is a big endiand +// uint32 where the high bit is set if the message includes a file +// descriptor. The rest of the uint32 is the length of the next frame. +// We need the bit in order to be able to assign recieved fds to +// the right message, as multiple messages may be coalesced into +// a single recieve operation. +func makeHeader(data []byte, fds []int) ([]byte, error) { + header := make([]byte, 4) + + length := uint32(len(data)) + + if length > 0x7fffffff { + return nil, fmt.Errorf("Data to large") + } + + if len(fds) != 0 { + length = length | 0x80000000 + } + header[0] = byte((length >> 24) & 0xff) + header[1] = byte((length >> 16) & 0xff) + header[2] = byte((length >> 8) & 0xff) + header[3] = byte((length >> 0) & 0xff) + + return header, nil +} + +func parseHeader(header []byte) (uint32, bool) { + length := uint32(header[0])<<24 | uint32(header[1])<<16 | uint32(header[2])<<8 | uint32(header[3]) + hasFd := length&0x80000000 != 0 + length = length & ^uint32(0x80000000) + + return length, hasFd } func FileConn(f *os.File) (*UnixConn, error) { @@ -33,7 +70,7 @@ func FileConn(f *os.File) (*UnixConn, error) { conn.Close() return nil, fmt.Errorf("%d: not a unix connection", f.Fd()) } - return &UnixConn{uconn}, nil + return &UnixConn{UnixConn: uconn}, nil } @@ -52,7 +89,7 @@ func (conn *UnixConn) Send(data []byte, f *os.File) error { if f != nil { fds = append(fds, int(f.Fd())) } - if err := sendUnix(conn.UnixConn, data, fds...); err != nil { + if err := conn.sendUnix(data, fds...); err != nil { return err } @@ -76,42 +113,104 @@ func (conn *UnixConn) Receive() (rdata []byte, rf *os.File, rerr error) { } debugCheckpoint("===DEBUG=== Receive() -> '%s'[%d]. Hit enter to continue.\n", rdata, fd) }() - for { - data, fds, err := receiveUnix(conn.UnixConn) + + // Read header + header := make([]byte, 4) + nRead := uint32(0) + + for nRead < 4 { + n, err := conn.receiveUnix(header[nRead:]) if err != nil { return nil, nil, err } - var f *os.File - if len(fds) > 1 { - for _, fd := range fds[1:] { - syscall.Close(fd) - } - } - if len(fds) >= 1 { - f = os.NewFile(uintptr(fds[0]), "") - } - return data, f, nil + nRead = nRead + uint32(n) } - panic("impossibru") - return nil, nil, nil + + length, hasFd := parseHeader(header) + + if hasFd { + if len(conn.fds) == 0 { + return nil, nil, fmt.Errorf("No expected file descriptor in message") + } + + rf = conn.fds[0] + conn.fds = conn.fds[1:] + } + + rdata = make([]byte, length) + + nRead = 0 + for nRead < length { + n, err := conn.receiveUnix(rdata[nRead:]) + if err != nil { + return nil, nil, err + } + nRead = nRead + uint32(n) + } + + return } -func receiveUnix(conn *net.UnixConn) ([]byte, []int, error) { - buf := make([]byte, 4096) - oob := make([]byte, 4096) +func (conn *UnixConn) receiveUnix(buf []byte) (int, error) { + oob := make([]byte, syscall.CmsgSpace(4)) bufn, oobn, _, _, err := conn.ReadMsgUnix(buf, oob) if err != nil { - return nil, nil, err + return 0, err } - return buf[:bufn], extractFds(oob[:oobn]), nil + fd := extractFd(oob[:oobn]) + if fd != -1 { + f := os.NewFile(uintptr(fd), "") + conn.fds = append(conn.fds, f) + } + + return bufn, nil } -func sendUnix(conn *net.UnixConn, data []byte, fds ...int) error { - _, _, err := conn.WriteMsgUnix(data, syscall.UnixRights(fds...), nil) - return err +func (conn *UnixConn) sendUnix(data []byte, fds ...int) error { + header, err := makeHeader(data, fds) + if err != nil { + return err + } + + // There is a bug in conn.WriteMsgUnix where it doesn't correctly return + // the number of bytes writte (http://code.google.com/p/go/issues/detail?id=7645) + // So, we can't rely on the return value from it. However, we must use it to + // send the fds. In order to handle this we only write one byte using WriteMsgUnix + // (when we have to), as that can only ever block or fully suceed. We then write + // the rest with conn.Write() + // The reader side should not rely on this though, as hopefully this gets fixed + // in go later. + written := 0 + if len(fds) != 0 { + oob := syscall.UnixRights(fds...) + wrote, _, err := conn.WriteMsgUnix(header[0:1], oob, nil) + if err != nil { + return err + } + written = written + wrote + } + + for written < len(header) { + wrote, err := conn.Write(header[written:]) + if err != nil { + return err + } + written = written + wrote + } + + written = 0 + for written < len(data) { + wrote, err := conn.Write(data[written:]) + if err != nil { + return err + } + written = written + wrote + } + + return nil } -func extractFds(oob []byte) (fds []int) { +func extractFd(oob []byte) int { // Grab forklock to make sure no forks accidentally inherit the new // fds before they are made CLOEXEC // There is a slight race condition between ReadMsgUnix returns and @@ -122,20 +221,27 @@ func extractFds(oob []byte) (fds []int) { defer syscall.ForkLock.Unlock() scms, err := syscall.ParseSocketControlMessage(oob) if err != nil { - return + return -1 } + + foundFd := -1 for _, scm := range scms { - gotFds, err := syscall.ParseUnixRights(&scm) + fds, err := syscall.ParseUnixRights(&scm) if err != nil { continue } - fds = append(fds, gotFds...) for _, fd := range fds { - syscall.CloseOnExec(fd) + if foundFd == -1 { + syscall.CloseOnExec(fd) + foundFd = fd + } else { + syscall.Close(fd) + } } } - return + + return foundFd } func socketpair() ([2]int, error) { From f132e3fb0362e4089076c9863d10475ad494e391 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 16:13:41 -0700 Subject: [PATCH 088/347] Initial commit --- MAINTAINERS | 1 + swarmd/swarmd.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 MAINTAINERS create mode 100644 swarmd/swarmd.go diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 0000000000..5a61dee410 --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1 @@ +Solomon Hykes (github:shykes) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go new file mode 100644 index 0000000000..6007fa7c03 --- /dev/null +++ b/swarmd/swarmd.go @@ -0,0 +1,53 @@ +package main + +import ( + "github.com/dotcloud/docker/api/server" + "github.com/dotcloud/docker/engine" + "strings" + "os" + "fmt" + "time" +) + +func main() { + eng := engine.New() + eng.Logging = false + eng.RegisterCatchall(func(job *engine.Job) engine.Status { + fmt.Printf("--> %s %s\n", job.Name, strings.Join(job.Args, " ")) + for k, v := range job.Env().Map() { + fmt.Printf(" %s=%s\n", k, v) + } + // This helps us detect the race condition if our time.Sleep + // missed it. (see comment below) + if job.Name == "acceptconnections" { + panic("race condition in github.com/dotcloud/docker/api/server/ServeApi") + } + return engine.StatusOK + }) + eng.Register(os.Args[0], server.ServeApi) + + // Register the entrypoint job as the current proces command name, + // to get matching usage straight from the job. + go func() { + serve := eng.Job(os.Args[0], os.Args[1:]...) + serve.Stdout.Add(os.Stdout) + serve.Stderr.Add(os.Stderr) + if err := serve.Run(); err != nil { + Fatalf("%v", err) + } + }() + // There is a race condition in engine.ServeApi. + // As a workaround we sleep to give it time to register 'acceptconnections'. + time.Sleep(1) + // Notify that we're ready to receive connections + if err := eng.Job("acceptconnections").Run(); err != nil { + Fatalf("%v", err) + } + // Inifinite loop + <-make(chan struct{}) +} + +func Fatalf(msg string, args ...interface{}) { + fmt.Fprintf(os.Stderr, msg, args...) + os.Exit(1) +} From ca7c1fbf496a303e002c40558687a58803a2b42b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 16:21:14 -0700 Subject: [PATCH 089/347] Add basic README --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000000..ff63221781 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# Swarmd + +## Control a distributed system with the Docker API + +`swarmd` is a simple daemon which can control all machines in your distributed +system using a variety of backend adaptors, and exposes it on a single, unified endpoint. + +swarmd uses the standard Docker API as its frontend, which means any tool which speaks +Docker can control swarmd transparently: dokku, flynn, deis, docker-ui, shipyard, fleet, +mesos... and of course the Docker client itself. + +Usage example: + +``` +./swarmd tcp://localhost:4242 & +docker -H tcp://localhost:4242 info +``` + From cd9abab36a56aa86d6107ac764dbc3093f06e10f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 16:29:16 -0700 Subject: [PATCH 090/347] Move call logger to a separate backend (more backends to come) --- backends/debug.go | 30 ++++++++++++++++++++++++++++++ swarmd/swarmd.go | 19 +++++-------------- 2 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 backends/debug.go diff --git a/backends/debug.go b/backends/debug.go new file mode 100644 index 0000000000..ad30844008 --- /dev/null +++ b/backends/debug.go @@ -0,0 +1,30 @@ +package backends + +import ( + "fmt" + "github.com/dotcloud/docker/engine" + "strings" +) + +func Debug() engine.Installer { + return &debug{} +} + +type debug struct { +} + +func (d *debug) Install(eng *engine.Engine) error { + eng.RegisterCatchall(func(job *engine.Job) engine.Status { + fmt.Printf("--> %s %s\n", job.Name, strings.Join(job.Args, " ")) + for k, v := range job.Env().Map() { + fmt.Printf(" %s=%s\n", k, v) + } + // This helps us detect the race condition if our time.Sleep + // missed it. (see comment in main) + if job.Name == "acceptconnections" { + panic("race condition in github.com/dotcloud/docker/api/server/ServeApi") + } + return engine.StatusOK + }) + return nil +} diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 6007fa7c03..5a5d7c992d 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -1,29 +1,20 @@ package main import ( + "fmt" + "github.com/docker/swarmd/backends" "github.com/dotcloud/docker/api/server" "github.com/dotcloud/docker/engine" - "strings" "os" - "fmt" "time" ) func main() { eng := engine.New() eng.Logging = false - eng.RegisterCatchall(func(job *engine.Job) engine.Status { - fmt.Printf("--> %s %s\n", job.Name, strings.Join(job.Args, " ")) - for k, v := range job.Env().Map() { - fmt.Printf(" %s=%s\n", k, v) - } - // This helps us detect the race condition if our time.Sleep - // missed it. (see comment below) - if job.Name == "acceptconnections" { - panic("race condition in github.com/dotcloud/docker/api/server/ServeApi") - } - return engine.StatusOK - }) + if err := backends.Debug().Install(eng); err != nil { + Fatalf("%v", err) + } eng.Register(os.Args[0], server.ServeApi) // Register the entrypoint job as the current proces command name, From 29df891a2d730d4105824570c7d811e9cd80a37d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 16:29:39 -0700 Subject: [PATCH 091/347] Add .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..12534f3b7a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +swarmd/swarmd From 4bdc2407b6d536e64364ce089660351f6c2d0a62 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 17:25:17 -0700 Subject: [PATCH 092/347] Sleep 1 full second at startup to workaround a race condition in api/server --- swarmd/swarmd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 5a5d7c992d..fced1ae7e6 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -29,7 +29,7 @@ func main() { }() // There is a race condition in engine.ServeApi. // As a workaround we sleep to give it time to register 'acceptconnections'. - time.Sleep(1) + time.Sleep(1 * time.Second) // Notify that we're ready to receive connections if err := eng.Job("acceptconnections").Run(); err != nil { Fatalf("%v", err) From cb213c5a68168de95e7519ae246fbb941d2b22d3 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 17:26:46 -0700 Subject: [PATCH 093/347] Better error messages --- swarmd/swarmd.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index fced1ae7e6..e300eb1c71 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -13,7 +13,7 @@ func main() { eng := engine.New() eng.Logging = false if err := backends.Debug().Install(eng); err != nil { - Fatalf("%v", err) + Fatalf("backend install: %v", err) } eng.Register(os.Args[0], server.ServeApi) @@ -24,7 +24,7 @@ func main() { serve.Stdout.Add(os.Stdout) serve.Stderr.Add(os.Stderr) if err := serve.Run(); err != nil { - Fatalf("%v", err) + Fatalf("serveapi: %v", err) } }() // There is a race condition in engine.ServeApi. @@ -32,13 +32,17 @@ func main() { time.Sleep(1 * time.Second) // Notify that we're ready to receive connections if err := eng.Job("acceptconnections").Run(); err != nil { - Fatalf("%v", err) + Fatalf("acceptconnections: %v", err) } // Inifinite loop <-make(chan struct{}) } func Fatalf(msg string, args ...interface{}) { + if !strings.HasSuffix(msg, "\n") { + msg = msg + "\n" + } + panic(msg) fmt.Fprintf(os.Stderr, msg, args...) os.Exit(1) } From 142e43a4476c430762de440fbc5ba02277044451 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 17:27:17 -0700 Subject: [PATCH 094/347] Use codegansta/cli for argument parsing --- swarmd/swarmd.go | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index e300eb1c71..805413a194 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -7,20 +7,39 @@ import ( "github.com/dotcloud/docker/engine" "os" "time" + "github.com/codegangsta/cli" + "strings" ) func main() { + app := cli.NewApp() + app.Name = "swarmd" + app.Usage = "Control a heterogenous distributed system with the Docker API" + app.Version = "0.0.1" + app.Flags = []cli.Flag{ + } + app.Action = cmdDaemon + app.Run(os.Args) +} + +func cmdDaemon(c *cli.Context) { + if len(c.Args()) == 0 { + Fatalf("Usage: %s ://

[://
]...\n", c.App.Name) + } eng := engine.New() eng.Logging = false if err := backends.Debug().Install(eng); err != nil { Fatalf("backend install: %v", err) } - eng.Register(os.Args[0], server.ServeApi) - // Register the entrypoint job as the current proces command name, - // to get matching usage straight from the job. + // Register the API entrypoint + // (we register it as `argv[0]` so we can print usage messages straight from the job + // stderr. + eng.Register(c.App.Name, server.ServeApi) + + // Call the API entrypoint go func() { - serve := eng.Job(os.Args[0], os.Args[1:]...) + serve := eng.Job(c.App.Name, c.Args()...) serve.Stdout.Add(os.Stdout) serve.Stderr.Add(os.Stderr) if err := serve.Run(); err != nil { From c22a80a071b6f9db457ca981f3a3f6229751f9a9 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 18:13:55 -0700 Subject: [PATCH 095/347] Choose a single backend with `--backend` Note: for now there is only one backend available, `debug` --- backends/backends.go | 19 +++++++++++++++++++ backends/debug.go | 23 +++++++++++++---------- swarmd/swarmd.go | 37 +++++++++++++++++++++++++++---------- 3 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 backends/backends.go diff --git a/backends/backends.go b/backends/backends.go new file mode 100644 index 0000000000..04c66f3477 --- /dev/null +++ b/backends/backends.go @@ -0,0 +1,19 @@ +package backends + +import ( + "github.com/dotcloud/docker/engine" +) + +// New returns a new engine, with all backends +// registered but not activated. +// To activate a backend, call a job on the resulting +// engine, named after the desired backend. +// +// Example: `New().Job("debug").Run()` +func New() *engine.Engine { + back := engine.New() + back.Logging = false + // Register all backends here + Debug().Install(back) + return back +} diff --git a/backends/debug.go b/backends/debug.go index ad30844008..2cbf83e51c 100644 --- a/backends/debug.go +++ b/backends/debug.go @@ -14,16 +14,19 @@ type debug struct { } func (d *debug) Install(eng *engine.Engine) error { - eng.RegisterCatchall(func(job *engine.Job) engine.Status { - fmt.Printf("--> %s %s\n", job.Name, strings.Join(job.Args, " ")) - for k, v := range job.Env().Map() { - fmt.Printf(" %s=%s\n", k, v) - } - // This helps us detect the race condition if our time.Sleep - // missed it. (see comment in main) - if job.Name == "acceptconnections" { - panic("race condition in github.com/dotcloud/docker/api/server/ServeApi") - } + eng.Register("debug", func(job *engine.Job) engine.Status { + job.Eng.RegisterCatchall(func(job *engine.Job) engine.Status { + fmt.Printf("--> %s %s\n", job.Name, strings.Join(job.Args, " ")) + for k, v := range job.Env().Map() { + fmt.Printf(" %s=%s\n", k, v) + } + // This helps us detect the race condition if our time.Sleep + // missed it. (see comment in main) + if job.Name == "acceptconnections" { + panic("race condition in github.com/dotcloud/docker/api/server/ServeApi") + } + return engine.StatusOK + }) return engine.StatusOK }) return nil diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 805413a194..c470050df7 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -2,13 +2,13 @@ package main import ( "fmt" + "github.com/codegangsta/cli" "github.com/docker/swarmd/backends" "github.com/dotcloud/docker/api/server" "github.com/dotcloud/docker/engine" "os" - "time" - "github.com/codegangsta/cli" "strings" + "time" ) func main() { @@ -17,6 +17,7 @@ func main() { app.Usage = "Control a heterogenous distributed system with the Docker API" app.Version = "0.0.1" app.Flags = []cli.Flag{ + cli.StringFlag{"backend", "debug", "load a backend"}, } app.Action = cmdDaemon app.Run(os.Args) @@ -26,20 +27,37 @@ func cmdDaemon(c *cli.Context) { if len(c.Args()) == 0 { Fatalf("Usage: %s ://
[://
]...\n", c.App.Name) } - eng := engine.New() - eng.Logging = false - if err := backends.Debug().Install(eng); err != nil { - Fatalf("backend install: %v", err) + + // Load backend + // FIXME: allow for multiple backends to be loaded. + // This could be done by instantiating 1 engine per backend, + // installing each backend in its respective engine, + // then registering a Catchall on the frontent engine which + // multiplexes across all backends (with routing / filtering + // logic along the way). + back := backends.New() + backendName := c.String("backend") + fmt.Printf("Loading backend '%s'\n", backendName) + if err := back.Job(backendName).Run(); err != nil { + Fatalf("%s: %v\n", backendName, err) } // Register the API entrypoint // (we register it as `argv[0]` so we can print usage messages straight from the job // stderr. - eng.Register(c.App.Name, server.ServeApi) + front := engine.New() + front.Logging = false + // FIXME: server should expose an engine.Installer + front.Register(c.App.Name, server.ServeApi) + front.RegisterCatchall(func(job *engine.Job) engine.Status { + fw := back.Job(job.Name, job.Args...) + fw.Run() + return engine.Status(fw.StatusCode()) + }) // Call the API entrypoint go func() { - serve := eng.Job(c.App.Name, c.Args()...) + serve := front.Job(c.App.Name, c.Args()...) serve.Stdout.Add(os.Stdout) serve.Stderr.Add(os.Stderr) if err := serve.Run(); err != nil { @@ -50,7 +68,7 @@ func cmdDaemon(c *cli.Context) { // As a workaround we sleep to give it time to register 'acceptconnections'. time.Sleep(1 * time.Second) // Notify that we're ready to receive connections - if err := eng.Job("acceptconnections").Run(); err != nil { + if err := front.Job("acceptconnections").Run(); err != nil { Fatalf("acceptconnections: %v", err) } // Inifinite loop @@ -61,7 +79,6 @@ func Fatalf(msg string, args ...interface{}) { if !strings.HasSuffix(msg, "\n") { msg = msg + "\n" } - panic(msg) fmt.Fprintf(os.Stderr, msg, args...) os.Exit(1) } From 9acaf7597f16bdb9f70b6900c98805b557ca083d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 18:32:06 -0700 Subject: [PATCH 096/347] Backends can receive arguments --- swarmd/swarmd.go | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index c470050df7..a6ddecf3ad 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -6,6 +6,8 @@ import ( "github.com/docker/swarmd/backends" "github.com/dotcloud/docker/api/server" "github.com/dotcloud/docker/engine" + "github.com/flynn/go-shlex" + "io" "os" "strings" "time" @@ -36,10 +38,13 @@ func cmdDaemon(c *cli.Context) { // multiplexes across all backends (with routing / filtering // logic along the way). back := backends.New() - backendName := c.String("backend") - fmt.Printf("Loading backend '%s'\n", backendName) - if err := back.Job(backendName).Run(); err != nil { - Fatalf("%s: %v\n", backendName, err) + bName, bArgs, err := parseCmd(c.String("backend")) + if err != nil { + Fatalf("%v", err) + } + fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) + if err := back.Job(bName, bArgs...).Run(); err != nil { + Fatalf("%s: %v\n", bName, err) } // Register the API entrypoint @@ -75,6 +80,28 @@ func cmdDaemon(c *cli.Context) { <-make(chan struct{}) } +func parseCmd(txt string) (string, []string, error) { + l, err := shlex.NewLexer(strings.NewReader(txt)) + if err != nil { + return "", nil, err + } + var cmd []string + for { + word, err := l.NextWord() + if err == io.EOF { + break + } + if err != nil { + return "", nil, err + } + cmd = append(cmd, word) + } + if len(cmd) == 0 { + return "", nil, fmt.Errorf("parse error: empty command") + } + return cmd[0], cmd[1:], nil +} + func Fatalf(msg string, args ...interface{}) { if !strings.HasSuffix(msg, "\n") { msg = msg + "\n" From a1b63f4b793e3400a44b72c6d160a95d4ad53fc9 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 23:30:34 -0700 Subject: [PATCH 097/347] Pass standard streams through between frontend and backend --- swarmd/swarmd.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index a6ddecf3ad..bd00273067 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -56,6 +56,9 @@ func cmdDaemon(c *cli.Context) { front.Register(c.App.Name, server.ServeApi) front.RegisterCatchall(func(job *engine.Job) engine.Status { fw := back.Job(job.Name, job.Args...) + fw.Stdout.Add(job.Stdout) + fw.Stderr.Add(job.Stderr) + fw.Stdin.Add(job.Stdin) fw.Run() return engine.Status(fw.StatusCode()) }) From 6a6596913a1c28a465dcc49f0ee9f367b6a85935 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 23:31:06 -0700 Subject: [PATCH 098/347] First skeleton of a simulator --- backends/backends.go | 1 + backends/simulator.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 backends/simulator.go diff --git a/backends/backends.go b/backends/backends.go index 04c66f3477..10047d1b17 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -15,5 +15,6 @@ func New() *engine.Engine { back.Logging = false // Register all backends here Debug().Install(back) + Simulator().Install(back) return back } diff --git a/backends/simulator.go b/backends/simulator.go new file mode 100644 index 0000000000..99a4b72620 --- /dev/null +++ b/backends/simulator.go @@ -0,0 +1,32 @@ +package backends + +import ( + "github.com/dotcloud/docker/engine" +) + +func Simulator() engine.Installer { + return &simulator{} +} + +type simulator struct { + containers []string +} + +func (s *simulator) Install(eng *engine.Engine) error { + eng.Register("simulator", func(job *engine.Job) engine.Status { + s.containers = job.Args + job.Eng.Register("containers", func(job *engine.Job) engine.Status { + t := engine.NewTable("Id", len(s.containers)) + for _, c := range s.containers { + e := &engine.Env{} + e.Set("Id", c) + e.Set("Image", "foobar") + t.Add(e) + } + t.WriteListTo(job.Stdout) + return engine.StatusOK + }) + return engine.StatusOK + }) + return nil +} From 3aed457ac5b4c3e4e8af8732257e7a2a51def84a Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 23:39:13 -0700 Subject: [PATCH 099/347] Freeze dependencies with godep --- swarmd/Godeps/Godeps.json | 128 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 swarmd/Godeps/Godeps.json diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json new file mode 100644 index 0000000000..1d37b02042 --- /dev/null +++ b/swarmd/Godeps/Godeps.json @@ -0,0 +1,128 @@ +{ + "ImportPath": "github.com/docker/swarmd/swarmd", + "GoVersion": "go1.1.1", + "Deps": [ + { + "ImportPath": "code.google.com/p/go.net/websocket", + "Comment": "null-61", + "Rev": "64ee4bbc10fac4f8d1d56451beac771d7cae54fe" + }, + { + "ImportPath": "github.com/codegangsta/cli", + "Comment": "1.0.0-43-g3fa24ca", + "Rev": "3fa24ca4f3284911d9cac655d06b1d548653c180" + }, + { + "ImportPath": "github.com/coreos/go-systemd/activation", + "Comment": "0-4-g2fb21b3", + "Rev": "2fb21b34171f083d46d66195caa7ec121d941ec5" + }, + { + "ImportPath": "github.com/dotcloud/docker/api", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/dockerversion", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/engine", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/nat", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/opts", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/beam", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/cgroups", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/listenbuffer", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/mflag", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/mount", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/sysinfo", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/systemd", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/term", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/user", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/version", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/registry", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/runconfig", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/utils", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/dotcloud/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar", + "Comment": "help-99-g4b65512", + "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + }, + { + "ImportPath": "github.com/flynn/go-shlex", + "Rev": "4fa131185c2e4fd376fc2662775da3bd58afb4dd" + }, + { + "ImportPath": "github.com/gorilla/context", + "Rev": "a8662172a384296ff59d28f837e151643c662985" + }, + { + "ImportPath": "github.com/gorilla/mux", + "Rev": "9b36453141c35697401168b07f2c09fcff7721ce" + } + ] +} From 954e5334f0ef6a396d36eda1b5b83f3860f965cf Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 2 May 2014 12:52:44 -0700 Subject: [PATCH 100/347] Basic forward backend --- backends/backends.go | 1 + backends/forward.go | 87 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 backends/forward.go diff --git a/backends/backends.go b/backends/backends.go index 10047d1b17..a812f5704b 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -16,5 +16,6 @@ func New() *engine.Engine { // Register all backends here Debug().Install(back) Simulator().Install(back) + Forward().Install(back) return back } diff --git a/backends/forward.go b/backends/forward.go new file mode 100644 index 0000000000..f9271a595f --- /dev/null +++ b/backends/forward.go @@ -0,0 +1,87 @@ +package backends + +import ( + "fmt" + "github.com/dotcloud/docker/engine" + "io/ioutil" + "net/http" + "net/url" + "strings" +) + +func Forward() engine.Installer { + return &forwarder{} +} + +type forwarder struct { +} + +func (f *forwarder) Install(eng *engine.Engine) error { + eng.Register("forward", func(job *engine.Job) engine.Status { + if len(job.Args) != 1 { + return job.Errorf("usage: %s ://", job.Name) + } + client, err := newClient(job.Args[0], "v0.10") + if err != nil { + return job.Errorf("%v", err) + } + job.Eng.Register("containers", func(job *engine.Job) engine.Status { + resp, err := client.call("GET", "/containers/json?all=1", "") + if err != nil { + return job.Errorf("%s: get: %v", client.URL.String(), err) + } + // FIXME: check for response error + c := engine.NewTable("Created", 0) + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return job.Errorf("%s: read body: %v", client.URL.String(), err) + } + fmt.Printf("---> '%s'\n", body) + if _, err := c.ReadListFrom(body); err != nil { + return job.Errorf("%s: readlist: %v", client.URL.String(), err) + } + c.WriteListTo(job.Stdout) + return engine.StatusOK + }) + return engine.StatusOK + }) + return nil +} + +type client struct { + URL *url.URL + proto string + addr string + version string +} + +func newClient(peer, version string) (*client, error) { + u, err := url.Parse(peer) + if err != nil { + return nil, err + } + c := &client{ + URL: u, + version: version, + } + c.URL.Scheme = "http" + return c, nil +} + +func (c *client) call(method, path, body string) (*http.Response, error) { + u, err := url.Parse(path) + if err != nil { + return nil, err + } + u.Host = c.URL.Host + u.Scheme = c.URL.Scheme + req, err := http.NewRequest(method, u.String(), strings.NewReader(body)) + if err != nil { + return nil, err + } + resp, err := http.DefaultClient.Do(req) + if err != nil { + return nil, err + } + return resp, nil +} From e3cf0c416f3054de2a05cf8eedb4fec66250b715 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 2 May 2014 16:18:52 -0700 Subject: [PATCH 101/347] Document backends --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/README.md b/README.md index ff63221781..cceb3b8991 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,61 @@ Usage example: docker -H tcp://localhost:4242 info ``` +You can listen on several frontend addresses, using any address format supported by Docker. +For example: + +``` +./swarmd tcp://localhost:4242 tcp://0.0.0.0:1234 unix:///var/run/docker.sock +``` + +## Backends + +`Swarmd` supports the following backends: + +### Debug backend + +The debug backend simply catches all commands and prints them on the terminal for inspection. +It returns `StatusOK` for all commands, and never sends additional data. Therefore, docker +clients which expect data will fail to parse some of the responses. + +Usage example: + +``` +./swarmd --backend debug tcp://localhost:4242 +``` + +### Simulator backend + +The simulator backend simulates a docker daemon with fake in-memory data. +The state of the simulator persists across commands, so it's useful to analyse +the side-effects of commands, or for mocking and testing. + +Currently the simulator only implements the `containers` command. It can be passed +arguments at load-time, and will use these arguments as a list of containers. + +For example: + +``` +./swarmd --backend 'simulator container1 container2 container3' tcp://localhost:4242 & +docker -H tcp://localhost:4242 ps +``` + +In this example the docker client should report 3 containers: `container1`, `container2` and `container3`. + +### Forward backend + +The forward backend connects to a remote Docker API endpoint. It then forwards +all commands it receives to that remote endpoint, and forwards all responses +back to the frontend. + +For example: + +``` +./swarmd --backend 'simulator myapp' unix://a.sock & +./swarmd --backend 'forward unix://a.sock' unix://b.sock +docker -H unix://b.sock ps +``` + +This last command should report 1 container: `myapp`. + + From 2c9e18009f59f60b4215f28cc384124da9e65fe5 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 9 May 2014 15:39:55 -0700 Subject: [PATCH 102/347] Fix stdin handling in engine.Sender and engine.Receiver This introduces a superficial change to the Beam API: * `beam.SendPipe` is renamed to the more accurate `beam.SendRPipe` * `beam.SendWPipe` is introduced as a mirror to `SendRPipe` There is no other change in the beam API. Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- beam.go | 41 ++++++++++++++++++++++++++++++++----- examples/beamsh/beamsh.go | 4 ++-- examples/beamsh/builtins.go | 2 +- router.go | 2 +- 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/beam.go b/beam.go index b1e4667a3f..88d3ea7c79 100644 --- a/beam.go +++ b/beam.go @@ -29,17 +29,48 @@ type ReceiveSender interface { Sender } -func SendPipe(dst Sender, data []byte) (*os.File, error) { +const ( + R int = 1 << (32 - 1 - iota) + W +) + +func sendPipe(dst Sender, data []byte, mode int) (*os.File, error) { r, w, err := os.Pipe() if err != nil { return nil, err } - if err := dst.Send(data, r); err != nil { - r.Close() - w.Close() + var ( + remote *os.File + local *os.File + ) + if mode == R { + remote = r + local = w + } else if mode == W { + remote = w + local = r + } + if err := dst.Send(data, remote); err != nil { + local.Close() + remote.Close() return nil, err } - return w, nil + return local, nil + +} + +// SendRPipe create a pipe and sends its *read* end attached in a beam message +// to `dst`, with `data` as the message payload. +// It returns the *write* end of the pipe, or an error. +func SendRPipe(dst Sender, data []byte) (*os.File, error) { + return sendPipe(dst, data, R) +} + +// SendWPipe create a pipe and sends its *read* end attached in a beam message +// to `dst`, with `data` as the message payload. +// It returns the *write* end of the pipe, or an error. +func SendWPipe(dst Sender, data []byte) (*os.File, error) { + return sendPipe(dst, data, W) } func SendConn(dst Sender, data []byte) (conn *UnixConn, err error) { diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 3f258de332..808f038c68 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -257,12 +257,12 @@ func Handlers(sink beam.Sender) (*beam.UnixConn, error) { if handler == nil { return } - stdout, err := beam.SendPipe(conn, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", cmd...).Bytes()) + stdout, err := beam.SendRPipe(conn, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", cmd...).Bytes()) if err != nil { return } defer stdout.Close() - stderr, err := beam.SendPipe(conn, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", cmd...).Bytes()) + stderr, err := beam.SendRPipe(conn, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", cmd...).Bytes()) if err != nil { return } diff --git a/examples/beamsh/builtins.go b/examples/beamsh/builtins.go index cc94d2b5fb..3242237cc1 100644 --- a/examples/beamsh/builtins.go +++ b/examples/beamsh/builtins.go @@ -272,7 +272,7 @@ func CmdPrint(args []string, stdout, stderr io.Writer, in beam.Receiver, out bea } // Skip commands if a != nil && data.Message(payload).Get("cmd") == nil { - dup, err := beam.SendPipe(out, payload) + dup, err := beam.SendRPipe(out, payload) if err != nil { a.Close() return diff --git a/router.go b/router.go index fc41a8991b..15910e95b1 100644 --- a/router.go +++ b/router.go @@ -78,7 +78,7 @@ func (route *Route) Tee(dst Sender) *Route { return inner(payload, attachment) } // Setup the tee - w, err := SendPipe(dst, payload) + w, err := SendRPipe(dst, payload) if err != nil { return err } From 372562846720054e145221082e2f138dba942d19 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 3 May 2014 12:29:38 +0000 Subject: [PATCH 103/347] Beam in-mem: an in-memory implementation of Beam --- inmem/inmem.go | 89 +++++++++++++++++++++++++++++++++++++++++++++ inmem/inmem_test.go | 44 ++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 inmem/inmem.go create mode 100644 inmem/inmem_test.go diff --git a/inmem/inmem.go b/inmem/inmem.go new file mode 100644 index 0000000000..d5c6645b1d --- /dev/null +++ b/inmem/inmem.go @@ -0,0 +1,89 @@ +package inmem + +import ( + "fmt" + "io" + "sync" +) + +type Handle interface { + Send(msg *Message, mode int) (Handle, error) + Receive(mode int) (*Message, Handle, error) + CloseWrite() error +} + +const ( + R = 1 << (32 - 1 - iota) + W +) + +type Message struct { + Target string + Name string + Args []string + Data string +} + + +func Pipe() (Handle, Handle) { + red := make(chan *pipeMessage) + black := make(chan *pipeMessage) + return &PipeHandle{r: red, w: black}, &PipeHandle{r: black, w: red} +} + +type PipeHandle struct { + sync.RWMutex + r chan *pipeMessage + w chan *pipeMessage +} + +func (h *PipeHandle) Send(msg *Message, mode int) (Handle, error) { + h.RLock() + defer h.RUnlock() + if h.w == nil { + return nil, fmt.Errorf("closed pipe") + } + var ( + rh Handle + lh Handle + ) + if mode&(R|W) != 0 { + rh, lh = Pipe() + if mode&W == 0 { + lh.CloseWrite() + } + } + h.w <-&pipeMessage{msg, rh} + return lh, nil +} + +func (h *PipeHandle) Receive(mode int) (*Message, Handle, error) { + pmsg, ok := <-h.r + if !ok { + return nil, nil, io.EOF + } + var handle Handle + if pmsg.handle != nil && mode&W == 0 { + pmsg.handle.CloseWrite() + } + if mode&(R|W) != 0 { + handle = pmsg.handle + } + return pmsg.payload, handle, nil +} + +func (h *PipeHandle) CloseWrite() error { + h.Lock() + defer h.Unlock() + if h.w == nil { + return fmt.Errorf("already closed") + } + close(h.w) + h.w = nil + return nil +} + +type pipeMessage struct { + payload *Message + handle Handle +} diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go new file mode 100644 index 0000000000..4bac748dd4 --- /dev/null +++ b/inmem/inmem_test.go @@ -0,0 +1,44 @@ +package inmem + +import ( + "testing" + "time" +) + +func TestSimpleSend(t *testing.T) { + a, b := Pipe() + defer a.CloseWrite() + defer b.CloseWrite() + onTimeout := time.After(100 * time.Millisecond) + onRcv := make(chan bool) + go func() { + msg, h, err := b.Receive(0) + if err != nil { + t.Fatal(err) + } + if msg.Data != "hello world" { + t.Fatalf("%#v", *msg) + } + if msg.Name != "print" { + t.Fatalf("%#v", *msg) + } + if len(msg.Args) != 0 { + t.Fatalf("%#v", *msg) + } + if h != nil { + t.Fatalf("%#v", h) + } + close(onRcv) + }() + h, err := a.Send(&Message{Name:"print", Data: "hello world"}, 0) + if err != nil { + t.Fatal(err) + } + if h != nil { + t.Fatalf("%#v", h) + } + select { + case <-onTimeout: t.Fatalf("timeout") + case <-onRcv: + } +} From c0364720db6d40663d4951a3cc75b24d7565d41d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 3 May 2014 17:45:03 +0000 Subject: [PATCH 104/347] beam: no target field yet --- inmem/inmem.go | 1 - 1 file changed, 1 deletion(-) diff --git a/inmem/inmem.go b/inmem/inmem.go index d5c6645b1d..67302e70d6 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -18,7 +18,6 @@ const ( ) type Message struct { - Target string Name string Args []string Data string From f6f3cd31814867f119d0bbdddebb27ad84f162ec Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 15 May 2014 14:43:50 +0100 Subject: [PATCH 105/347] Copy env when creating job in catchall --- swarmd/swarmd.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index bd00273067..17ccbd9442 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -59,6 +59,9 @@ func cmdDaemon(c *cli.Context) { fw.Stdout.Add(job.Stdout) fw.Stderr.Add(job.Stderr) fw.Stdin.Add(job.Stdin) + for key, val := range job.Env().Map() { + fw.Setenv(key, val) + } fw.Run() return engine.Status(fw.StatusCode()) }) From a799e0fe20c1ca009e6d94cc54f6867fab2b77a8 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 15 May 2014 14:45:00 +0100 Subject: [PATCH 106/347] Pass HTTP params through when forwarding `containers` job --- backends/forward.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backends/forward.go b/backends/forward.go index f9271a595f..cad86750f0 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -26,7 +26,15 @@ func (f *forwarder) Install(eng *engine.Engine) error { return job.Errorf("%v", err) } job.Eng.Register("containers", func(job *engine.Job) engine.Status { - resp, err := client.call("GET", "/containers/json?all=1", "") + path := fmt.Sprintf( + "/containers/json?all=%s&size=%s&since=%s&before=%s&limit=%s", + url.QueryEscape(job.Getenv("all")), + url.QueryEscape(job.Getenv("size")), + url.QueryEscape(job.Getenv("since")), + url.QueryEscape(job.Getenv("before")), + url.QueryEscape(job.Getenv("limit")), + ) + resp, err := client.call("GET", path, "") if err != nil { return job.Errorf("%s: get: %v", client.URL.String(), err) } From f887982f22427ece0a02d500365691d2a15281fa Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 16 May 2014 17:52:06 -0700 Subject: [PATCH 107/347] Update README to explain libswarm --- README.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cceb3b8991..62a4ce2d47 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,58 @@ -# Swarmd +# Libswarm -## Control a distributed system with the Docker API +## A library to orchestrate heterogeneous distributed systems -`swarmd` is a simple daemon which can control all machines in your distributed +*libswarm* is a lightweight, standardized abstraction for federating and orchestrating +distributed systems. It can discover and communicate with all machines in your system, +using a variety of backend adaptors, and expose them via a single, straightforward API. + +This is very useful if your system spans multiple locations on the Internet (your home +network, office lan, colocated rack, cloud provider, etc.) and uses heterogeneous tools +for deployment, clustering and service discovery (manually configured IPs on your laptop, +zeroconf at the office, ssh tunnels + custom DNS on the rack, Mesos, Consul or Etcd/Fleet +on your cloud provider, etc.). + +*libswarm* federates all these elements under a unified namespace and lets you orchestrate +them using a lightweight and flexible API. + +Because the *libswarm* API is dead-simple to learn and built on standard components, there +is a growing ecosystem of tools already compatible with it, which you can use to manage +your swarm out of the box: + +* `swarmctl` is a simple command-line utility which lets you easily compose any combination +of backends, and orchestrate them straight from the terminal. + +* (coming soon) *Shipyard* offers a powerful web interface to manage any swarm-compatible +distributed system straight from the browser. + +* (coming soon) *Swarmlog* is a logging tool which consumes all log streams from your swarm +and forwards them to a variety of logging backends. + +* (coming soon) *Deis*, the popular Docker-based application platform, supports *libswarm* +natively, and can deploy applications to it out-of-the-box. + +* (coming soon) *Drone.io*, the Docker-based continuous integration platform, can spawn +build and test workers on any swarm. + +* (coming soon) *Fig*, the popular development tool, supports libswarm out of the box. + +* (coming soon) *Docker*, the open-source container engine, has announced that they will +adopt *libswarm* as a built-in, and recommend it as the preferred way to orchestrate +and manage a Docker-based cluster. + + +## Testing libswarm with swarmd + +Libswarm ships with a simple daemon which can control all machines in your distributed system using a variety of backend adaptors, and exposes it on a single, unified endpoint. -swarmd uses the standard Docker API as its frontend, which means any tool which speaks +Currently swarmd uses the standard Docker API as its frontend, which means any tool which speaks Docker can control swarmd transparently: dokku, flynn, deis, docker-ui, shipyard, fleet, mesos... and of course the Docker client itself. +*Note: in the future swarmd will expose the Docker remote API as "just another backend", and +expose its own native API as a frontend.* + Usage example: ``` @@ -25,7 +69,7 @@ For example: ## Backends -`Swarmd` supports the following backends: +Libswarm supports the following backends: ### Debug backend @@ -74,3 +118,14 @@ docker -H unix://b.sock ps This last command should report 1 container: `myapp`. +## Creators + +**Solomon Hykes** + +- +- + +## Copyright and license + +Code and documentation copyright 2013-2014 Docker, inc. Code released under the Apache 2.0 license. +Docs released under Creative commons. From 323ebae5f61d55054882b11feac71249888cc366 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 16 May 2014 17:53:39 -0700 Subject: [PATCH 108/347] Add LICENSE and NOTICE --- LICENSE | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ NOTICE | 16 +++++ 2 files changed, 207 insertions(+) create mode 100644 LICENSE create mode 100644 NOTICE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..27448585ad --- /dev/null +++ b/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2014 Docker, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000000..358b2781e3 --- /dev/null +++ b/NOTICE @@ -0,0 +1,16 @@ +libswarm +Copyright 2012-2014 Docker, Inc. + +This product includes software developed at Docker, Inc. (http://www.docker.com). + +The following is courtesy of our legal counsel: + + +Use and transfer of Docker may be subject to certain restrictions by the +United States and other governments. +It is your responsibility to ensure that your use and/or transfer does not +violate applicable laws. + +For more information, please see http://www.bis.doc.gov + +See also http://www.apache.org/dev/crypto.html and/or seek legal counsel. From a1ed1ec1fab8a4e54f68a263ecbafc492bf17e38 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 9 May 2014 20:55:39 -0700 Subject: [PATCH 109/347] inmem: switch to a Sender/Receiver/Pipe interface similar to io.Pipe Signed-off-by: Solomon Hykes --- inmem/inmem.go | 243 +++++++++++++++++++++++++++++++------------- inmem/inmem_test.go | 27 +++-- 2 files changed, 190 insertions(+), 80 deletions(-) diff --git a/inmem/inmem.go b/inmem/inmem.go index 67302e70d6..12e2791199 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -1,88 +1,193 @@ package inmem import ( - "fmt" "io" "sync" ) -type Handle interface { - Send(msg *Message, mode int) (Handle, error) - Receive(mode int) (*Message, Handle, error) - CloseWrite() error +type Sender interface { + Send(msg *Message, mode int) (Receiver, Sender, error) + Close() error +} + +type Receiver interface { + Receive(mode int) (*Message, Receiver, Sender, error) + Close() error +} + +type Message struct { + Name string + Args []string + Data string } const ( - R = 1 << (32 - 1 - iota) + R = 1 << (32 - 1 - iota) W ) -type Message struct { - Name string - Args []string - Data string +func Pipe() (*PipeReceiver, *PipeSender) { + p := new(pipe) + p.rwait.L = &p.l + p.wwait.L = &p.l + r := &PipeReceiver{p} + w := &PipeSender{p} + return r, w } - -func Pipe() (Handle, Handle) { - red := make(chan *pipeMessage) - black := make(chan *pipeMessage) - return &PipeHandle{r: red, w: black}, &PipeHandle{r: black, w: red} -} - -type PipeHandle struct { - sync.RWMutex - r chan *pipeMessage - w chan *pipeMessage -} - -func (h *PipeHandle) Send(msg *Message, mode int) (Handle, error) { - h.RLock() - defer h.RUnlock() - if h.w == nil { - return nil, fmt.Errorf("closed pipe") - } - var ( - rh Handle - lh Handle - ) - if mode&(R|W) != 0 { - rh, lh = Pipe() - if mode&W == 0 { - lh.CloseWrite() - } - } - h.w <-&pipeMessage{msg, rh} - return lh, nil -} - -func (h *PipeHandle) Receive(mode int) (*Message, Handle, error) { - pmsg, ok := <-h.r - if !ok { - return nil, nil, io.EOF - } - var handle Handle - if pmsg.handle != nil && mode&W == 0 { - pmsg.handle.CloseWrite() - } - if mode&(R|W) != 0 { - handle = pmsg.handle - } - return pmsg.payload, handle, nil -} - -func (h *PipeHandle) CloseWrite() error { - h.Lock() - defer h.Unlock() - if h.w == nil { - return fmt.Errorf("already closed") - } - close(h.w) - h.w = nil - return nil +type pipe struct { + ch chan *pipeMessage + rwait sync.Cond + wwait sync.Cond + l sync.Mutex + rl sync.Mutex + wl sync.Mutex + rerr error // if reader closed, error to give writes + werr error // if writer closed, error to give reads + pmsg *pipeMessage } type pipeMessage struct { - payload *Message - handle Handle + msg *Message + out *PipeSender + in *PipeReceiver +} + +func (p *pipe) send(msg *Message, mode int) (in Receiver, out Sender, err error) { + // Prepare the message + pmsg := &pipeMessage{msg: msg} + if mode&R != 0 { + in, pmsg.out = Pipe() + defer func() { + if err != nil { + in.Close() + in = nil + pmsg.out.Close() + } + }() + } + if mode&W != 0 { + pmsg.in, out = Pipe() + defer func() { + if err != nil { + out.Close() + out = nil + pmsg.in.Close() + } + }() + } + // One writer at a time. + p.wl.Lock() + defer p.wl.Unlock() + + p.l.Lock() + defer p.l.Unlock() + p.pmsg = pmsg + p.rwait.Signal() + for { + if p.pmsg == nil { + break + } + if p.rerr != nil { + err = p.rerr + break + } + if p.werr != nil { + err = io.ErrClosedPipe + } + p.wwait.Wait() + } + p.pmsg = nil // in case of rerr or werr + return +} + +func (p *pipe) receive(mode int) (msg *Message, in Receiver, out Sender, err error) { + p.rl.Lock() + defer p.rl.Unlock() + + p.l.Lock() + defer p.l.Unlock() + for { + if p.rerr != nil { + return nil, nil, nil, io.ErrClosedPipe + } + if p.pmsg != nil { + break + } + if p.werr != nil { + return nil, nil, nil, p.werr + } + p.rwait.Wait() + } + pmsg := p.pmsg + if pmsg.out != nil && mode&W == 0 { + pmsg.out.Close() + } + if pmsg.in != nil && mode&R == 0 { + pmsg.in.Close() + } + p.pmsg = nil + msg = pmsg.msg + p.wwait.Signal() + return +} + +func (p *pipe) rclose(err error) { + if err == nil { + err = io.ErrClosedPipe + } + p.l.Lock() + defer p.l.Unlock() + p.rerr = err + p.rwait.Signal() + p.wwait.Signal() +} + +func (p *pipe) wclose(err error) { + if err == nil { + err = io.EOF + } + p.l.Lock() + defer p.l.Unlock() + p.werr = err + p.rwait.Signal() + p.wwait.Signal() +} + +// PipeReceiver + +type PipeReceiver struct { + p *pipe +} + +func (r *PipeReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { + return r.p.receive(mode) +} + +func (r *PipeReceiver) Close() error { + return r.CloseWithError(nil) +} + +func (r *PipeReceiver) CloseWithError(err error) error { + r.p.rclose(err) + return nil +} + +// PipeSender + +type PipeSender struct { + p *pipe +} + +func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { + return w.p.send(msg, mode) +} + +func (w *PipeSender) Close() error { + return w.CloseWithError(nil) +} + +func (w *PipeSender) CloseWithError(err error) error { + w.p.wclose(err) + return nil } diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index 4bac748dd4..03267eb4f1 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -6,13 +6,11 @@ import ( ) func TestSimpleSend(t *testing.T) { - a, b := Pipe() - defer a.CloseWrite() - defer b.CloseWrite() + r, w := Pipe() onTimeout := time.After(100 * time.Millisecond) onRcv := make(chan bool) go func() { - msg, h, err := b.Receive(0) + msg, in, out, err := r.Receive(0) if err != nil { t.Fatal(err) } @@ -25,20 +23,27 @@ func TestSimpleSend(t *testing.T) { if len(msg.Args) != 0 { t.Fatalf("%#v", *msg) } - if h != nil { - t.Fatalf("%#v", h) + if in != nil { + t.Fatalf("%#v", in) + } + if out != nil { + t.Fatalf("%#v", out) } close(onRcv) }() - h, err := a.Send(&Message{Name:"print", Data: "hello world"}, 0) + in, out, err := w.Send(&Message{Name: "print", Data: "hello world"}, 0) if err != nil { t.Fatal(err) } - if h != nil { - t.Fatalf("%#v", h) + if in != nil { + t.Fatalf("%#v", in) + } + if out != nil { + t.Fatalf("%#v", out) } select { - case <-onTimeout: t.Fatalf("timeout") - case <-onRcv: + case <-onTimeout: + t.Fatalf("timeout") + case <-onRcv: } } From caa60040647bf918c038eab6e87f8fd333d3a264 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 9 May 2014 21:12:27 -0700 Subject: [PATCH 110/347] inmem: use pkg/testutils Signed-off-by: Solomon Hykes --- inmem/inmem_test.go | 56 ++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index 03267eb4f1..122bfc063f 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -1,49 +1,43 @@ package inmem import ( + "github.com/dotcloud/docker/pkg/testutils" "testing" - "time" ) func TestSimpleSend(t *testing.T) { r, w := Pipe() - onTimeout := time.After(100 * time.Millisecond) - onRcv := make(chan bool) - go func() { - msg, in, out, err := r.Receive(0) + testutils.Timeout(t, func() { + go func() { + msg, in, out, err := r.Receive(0) + if err != nil { + t.Fatal(err) + } + if msg.Data != "hello world" { + t.Fatalf("%#v", *msg) + } + if msg.Name != "print" { + t.Fatalf("%#v", *msg) + } + if len(msg.Args) != 0 { + t.Fatalf("%#v", *msg) + } + if in != nil { + t.Fatalf("%#v", in) + } + if out != nil { + t.Fatalf("%#v", out) + } + }() + in, out, err := w.Send(&Message{Name: "print", Data: "hello world"}, 0) if err != nil { t.Fatal(err) } - if msg.Data != "hello world" { - t.Fatalf("%#v", *msg) - } - if msg.Name != "print" { - t.Fatalf("%#v", *msg) - } - if len(msg.Args) != 0 { - t.Fatalf("%#v", *msg) - } if in != nil { t.Fatalf("%#v", in) } if out != nil { t.Fatalf("%#v", out) } - close(onRcv) - }() - in, out, err := w.Send(&Message{Name: "print", Data: "hello world"}, 0) - if err != nil { - t.Fatal(err) - } - if in != nil { - t.Fatalf("%#v", in) - } - if out != nil { - t.Fatalf("%#v", out) - } - select { - case <-onTimeout: - t.Fatalf("timeout") - case <-onRcv: - } + }) } From 338a7d50a8446c4318364a1d2520de6b85dcaa1f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 10 May 2014 15:31:09 -0700 Subject: [PATCH 111/347] inmem: fix nested in/out channels in each message Signed-off-by: Solomon Hykes --- inmem/inmem.go | 12 ++++++--- inmem/inmem_test.go | 63 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 4 deletions(-) diff --git a/inmem/inmem.go b/inmem/inmem.go index 12e2791199..f94ac9480c 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -53,7 +53,7 @@ type pipeMessage struct { in *PipeReceiver } -func (p *pipe) send(msg *Message, mode int) (in Receiver, out Sender, err error) { +func (p *pipe) send(msg *Message, mode int) (in *PipeReceiver, out *PipeSender, err error) { // Prepare the message pmsg := &pipeMessage{msg: msg} if mode&R != 0 { @@ -101,7 +101,7 @@ func (p *pipe) send(msg *Message, mode int) (in Receiver, out Sender, err error) return } -func (p *pipe) receive(mode int) (msg *Message, in Receiver, out Sender, err error) { +func (p *pipe) receive(mode int) (msg *Message, in *PipeReceiver, out *PipeSender, err error) { p.rl.Lock() defer p.rl.Unlock() @@ -122,12 +122,16 @@ func (p *pipe) receive(mode int) (msg *Message, in Receiver, out Sender, err err pmsg := p.pmsg if pmsg.out != nil && mode&W == 0 { pmsg.out.Close() + pmsg.out = nil } if pmsg.in != nil && mode&R == 0 { pmsg.in.Close() + pmsg.in = nil } p.pmsg = nil msg = pmsg.msg + in = pmsg.in + out = pmsg.out p.wwait.Signal() return } @@ -160,7 +164,7 @@ type PipeReceiver struct { p *pipe } -func (r *PipeReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { +func (r *PipeReceiver) Receive(mode int) (*Message, *PipeReceiver, *PipeSender, error) { return r.p.receive(mode) } @@ -179,7 +183,7 @@ type PipeSender struct { p *pipe } -func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { +func (w *PipeSender) Send(msg *Message, mode int) (*PipeReceiver, *PipeSender, error) { return w.p.send(msg, mode) } diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index 122bfc063f..f220c4c79a 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -5,8 +5,22 @@ import ( "testing" ) +func TestModes(t *testing.T) { + if R == W { + t.Fatalf("0") + } + if R == 0 { + t.Fatalf("0") + } + if W == 0 { + t.Fatalf("0") + } +} + func TestSimpleSend(t *testing.T) { r, w := Pipe() + defer r.Close() + defer w.Close() testutils.Timeout(t, func() { go func() { msg, in, out, err := r.Receive(0) @@ -41,3 +55,52 @@ func TestSimpleSend(t *testing.T) { } }) } + +func TestSendReply(t *testing.T) { + r, w := Pipe() + defer r.Close() + defer w.Close() + testutils.Timeout(t, func() { + // Send + go func() { + // Send a message with mode=R + in, out, err := w.Send(&Message{Data: "this is the request"}, R) + if err != nil { + t.Fatal(err) + } + if out != nil { + t.Fatalf("%#v", out) + } + if in == nil { + t.Fatalf("%#v", in) + } + // Read for a reply + resp, _, _, err := in.Receive(0) + if err != nil { + t.Fatal(err) + } + if resp.Data != "this is the reply" { + t.Fatalf("%#v", resp) + } + }() + // Receive a message with mode=W + msg, in, out, err := r.Receive(W) + if err != nil { + t.Fatal(err) + } + if msg.Data != "this is the request" { + t.Fatalf("%#v", msg) + } + if out == nil { + t.Fatalf("%#v", out) + } + if in != nil { + t.Fatalf("%#v", in) + } + // Send a reply + _, _, err = out.Send(&Message{Data: "this is the reply"}, 0) + if err != nil { + t.Fatal(err) + } + }) +} From a5cb570bfbb3934fb822e276f7596eb102d683d5 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 10 May 2014 23:25:54 +0000 Subject: [PATCH 112/347] inmem: more testing Signed-off-by: Solomon Hykes --- inmem/inmem_test.go | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index f220c4c79a..5448885f7b 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -104,3 +104,52 @@ func TestSendReply(t *testing.T) { } }) } + +func TestSendNested(t *testing.T) { + r, w := Pipe() + defer r.Close() + defer w.Close() + testutils.Timeout(t, func() { + // Send + go func() { + // Send a message with mode=W + in, out, err := w.Send(&Message{Data: "this is the request"}, W) + if err != nil { + t.Fatal(err) + } + if out == nil { + t.Fatalf("%#v", out) + } + if in != nil { + t.Fatalf("%#v", in) + } + // Send a nested message + _, _, err = out.Send(&Message{Data: "this is the nested message"}, 0) + if err != nil { + t.Fatal(err) + } + }() + // Receive a message with mode=R + msg, in, out, err := r.Receive(R) + if err != nil { + t.Fatal(err) + } + if msg.Data != "this is the request" { + t.Fatalf("%#v", msg) + } + if out != nil { + t.Fatalf("%#v", out) + } + if in == nil { + t.Fatalf("%#v", in) + } + // Read for a nested message + nested, _, _, err := in.Receive(0) + if err != nil { + t.Fatal(err) + } + if nested.Data != "this is the nested message" { + t.Fatalf("%#v", nested) + } + }) +} From 0feebd2320d1275aecd9a0ae15c410d730ef5fb1 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 03:05:56 +0000 Subject: [PATCH 113/347] inmem: Implement `Copy`, `ReceiveFrom` and `SendTo` * Copy is the beam equivalent of `io.Copy` * `ReceiveFrom` is the beam equivalent of `io.ReadFrom` * `SendTo` is the beam equivalent of `io.WriteTo` Signed-off-by: Solomon Hykes --- inmem/copy.go | 53 ++++++++++++++++++++++++++++ inmem/inmem.go | 96 +++++++++++++++++++++++++++++++++++++------------- 2 files changed, 124 insertions(+), 25 deletions(-) create mode 100644 inmem/copy.go diff --git a/inmem/copy.go b/inmem/copy.go new file mode 100644 index 0000000000..4f655f46d0 --- /dev/null +++ b/inmem/copy.go @@ -0,0 +1,53 @@ +package inmem + +import ( + "io" + "fmt" +) + +type ReceiverFrom interface { + ReceiveFrom(Receiver) (int, error) +} + +type SenderTo interface { + SendTo(Sender) (int, error) +} + +func Copy(dst Sender, src Receiver) (int, error) { + if senderTo, ok := src.(SenderTo); ok { + return senderTo.SendTo(dst) + } + if receiverFrom, ok := dst.(ReceiverFrom); ok { + return receiverFrom.ReceiveFrom(src) + } + var ( + n int + ) + for { + msg, r, w, err := src.Receive(R|W) + if err == io.EOF { + break + } + if r != nil { + // FIXME: spawn goroutines to shuttle messages for each + // level of nested sender/receiver. + r.Close() + return n, fmt.Errorf("operation not supported") + } + if w != nil { + // FIXME: spawn goroutines to shuttle messages for each + // level of nested sender/receiver. + w.Close() + return n, fmt.Errorf("operation not supported") + } + if err != nil { + return n, err + } + if _, _, err := dst.Send(msg, 0); err != nil { + return n, err + } + n++ + } + return n, nil +} + diff --git a/inmem/inmem.go b/inmem/inmem.go index f94ac9480c..e5369a0660 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -1,6 +1,7 @@ package inmem import ( + "fmt" "io" "sync" ) @@ -18,7 +19,7 @@ type Receiver interface { type Message struct { Name string Args []string - Data string + Data []byte } const ( @@ -53,6 +54,33 @@ type pipeMessage struct { in *PipeReceiver } +func (p *pipe) psend(pmsg *pipeMessage) error { + var err error + // One writer at a time. + p.wl.Lock() + defer p.wl.Unlock() + + p.l.Lock() + defer p.l.Unlock() + p.pmsg = pmsg + p.rwait.Signal() + for { + if p.pmsg == nil { + break + } + if p.rerr != nil { + err = p.rerr + break + } + if p.werr != nil { + err = io.ErrClosedPipe + } + p.wwait.Wait() + } + p.pmsg = nil // in case of rerr or werr + return err +} + func (p *pipe) send(msg *Message, mode int) (in *PipeReceiver, out *PipeSender, err error) { // Prepare the message pmsg := &pipeMessage{msg: msg} @@ -76,28 +104,7 @@ func (p *pipe) send(msg *Message, mode int) (in *PipeReceiver, out *PipeSender, } }() } - // One writer at a time. - p.wl.Lock() - defer p.wl.Unlock() - - p.l.Lock() - defer p.l.Unlock() - p.pmsg = pmsg - p.rwait.Signal() - for { - if p.pmsg == nil { - break - } - if p.rerr != nil { - err = p.rerr - break - } - if p.werr != nil { - err = io.ErrClosedPipe - } - p.wwait.Wait() - } - p.pmsg = nil // in case of rerr or werr + err = p.psend(pmsg) return } @@ -164,7 +171,7 @@ type PipeReceiver struct { p *pipe } -func (r *PipeReceiver) Receive(mode int) (*Message, *PipeReceiver, *PipeSender, error) { +func (r *PipeReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { return r.p.receive(mode) } @@ -183,10 +190,49 @@ type PipeSender struct { p *pipe } -func (w *PipeSender) Send(msg *Message, mode int) (*PipeReceiver, *PipeSender, error) { +func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { return w.p.send(msg, mode) } +func (w *PipeSender) ReceiveFrom(src Receiver, mode int) (int, error) { + var n int + for { + msg, msgr, msgw, err := src.Receive(mode) + if err == io.EOF { + break + } + if err != nil { + return n, err + } + pmsg := &pipeMessage{msg: msg} + if msgr != nil { + if pmsgr, ok := msgr.(*PipeReceiver); ok { + pmsg.in = pmsgr + } else { + // FIXME: if we're not receiving from a PipeReceiver, + // we need to create a new pipe and shuttle messages through it + // in a new goroutine. + return n, fmt.Errorf("operation not supported") + } + } + if msgw != nil { + if pmsgw, ok := msgw.(*PipeSender); ok { + pmsg.out = pmsgw + } else { + // FIXME: if we're not sending to a PipeSender, + // we need to create a new pipe and shuttle messages through it + // in a new goroutine. + return n, fmt.Errorf("operation not supported") + } + } + if err := w.p.psend(pmsg); err != nil { + return n, err + } + n++ + } + return n, nil +} + func (w *PipeSender) Close() error { return w.CloseWithError(nil) } From 3d03104af4bf545dc0c7a2ddb15b88a35211c1d6 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 12 May 2014 19:05:34 -0700 Subject: [PATCH 114/347] data: expose EncodeList and DecodeList Signed-off-by: Solomon Hykes --- data/data.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/data.go b/data/data.go index e205fe43f4..5ece063f51 100644 --- a/data/data.go +++ b/data/data.go @@ -26,6 +26,8 @@ func encodeString(s string) string { var EncodeString = encodeString var DecodeString = decodeString +var EncodeList = encodeList + func encodeList(l []string) string { values := make([]string, 0, len(l)) for _, s := range l { @@ -65,6 +67,8 @@ func Decode(msg string) (map[string][]string, error) { return obj, nil } +var DecodeList = decodeList + func decodeList(msg string) ([]string, int, error) { blob, skip, err := decodeString(msg) if err != nil { From 1eb832dcbcf7929bfb3fbf351855c90d5f341083 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 13 May 2014 22:43:36 -0700 Subject: [PATCH 115/347] inmem: Copy requires either SenderTo or ReceiverFrom Signed-off-by: Solomon Hykes --- inmem/copy.go | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/inmem/copy.go b/inmem/copy.go index 4f655f46d0..be81c3d041 100644 --- a/inmem/copy.go +++ b/inmem/copy.go @@ -1,7 +1,6 @@ package inmem import ( - "io" "fmt" ) @@ -23,31 +22,6 @@ func Copy(dst Sender, src Receiver) (int, error) { var ( n int ) - for { - msg, r, w, err := src.Receive(R|W) - if err == io.EOF { - break - } - if r != nil { - // FIXME: spawn goroutines to shuttle messages for each - // level of nested sender/receiver. - r.Close() - return n, fmt.Errorf("operation not supported") - } - if w != nil { - // FIXME: spawn goroutines to shuttle messages for each - // level of nested sender/receiver. - w.Close() - return n, fmt.Errorf("operation not supported") - } - if err != nil { - return n, err - } - if _, _, err := dst.Send(msg, 0); err != nil { - return n, err - } - n++ - } - return n, nil + return n, fmt.Errorf("operation not supported") } From 91133d63be21cbcb636cacb8d7edd43883a66b5e Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 13 May 2014 22:43:56 -0700 Subject: [PATCH 116/347] inmem: Fix PipeSender to implement ReceiverFrom Signed-off-by: Solomon Hykes --- inmem/inmem.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inmem/inmem.go b/inmem/inmem.go index e5369a0660..451656123b 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -194,10 +194,10 @@ func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { return w.p.send(msg, mode) } -func (w *PipeSender) ReceiveFrom(src Receiver, mode int) (int, error) { +func (w *PipeSender) ReceiveFrom(src Receiver) (int, error) { var n int for { - msg, msgr, msgw, err := src.Receive(mode) + msg, msgr, msgw, err := src.Receive(R|W) if err == io.EOF { break } From f22b8f52f321a076fe5e48f6fe353bca8e99afc7 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 14:25:43 +0000 Subject: [PATCH 117/347] inmem: Receiver and Sender don't need to implement Close Signed-off-by: Solomon Hykes --- inmem/inmem.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/inmem/inmem.go b/inmem/inmem.go index 451656123b..cbdee9ca8d 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -8,12 +8,10 @@ import ( type Sender interface { Send(msg *Message, mode int) (Receiver, Sender, error) - Close() error } type Receiver interface { Receive(mode int) (*Message, Receiver, Sender, error) - Close() error } type Message struct { From ffa47f54454bee0be3cc611402130a05f9c5e537 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 14:26:39 +0000 Subject: [PATCH 118/347] inmem: fix the tests Signed-off-by: Solomon Hykes --- inmem/inmem_test.go | 102 ++++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 46 deletions(-) diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index 5448885f7b..8e216e4ddb 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -27,7 +27,7 @@ func TestSimpleSend(t *testing.T) { if err != nil { t.Fatal(err) } - if msg.Data != "hello world" { + if string(msg.Data) != "hello world" { t.Fatalf("%#v", *msg) } if msg.Name != "print" { @@ -36,26 +36,56 @@ func TestSimpleSend(t *testing.T) { if len(msg.Args) != 0 { t.Fatalf("%#v", *msg) } - if in != nil { - t.Fatalf("%#v", in) - } - if out != nil { - t.Fatalf("%#v", out) - } + assertMode(t, in, out, 0) }() - in, out, err := w.Send(&Message{Name: "print", Data: "hello world"}, 0) + in, out, err := w.Send(&Message{Name: "print", Data: []byte("hello world")}, 0) if err != nil { t.Fatal(err) } - if in != nil { - t.Fatalf("%#v", in) - } - if out != nil { - t.Fatalf("%#v", out) - } + assertMode(t, in, out, 0) }) } +// assertMode verifies that the values of r and w match +// mode. +// If mode has the R bit set, r must be non-nil. Otherwise it must be nil. +// If mode has the W bit set, w must be non-nil. Otherwise it must be nil. +// +// If any of these conditions are not met, t.Fatal is called and the active +// test fails. +func assertMode(t *testing.T, r Receiver, w Sender, mode int) { + pr, ok := r.(*PipeReceiver) + if !ok { + t.Fatalf("%v", r) + } + pw, ok := w.(*PipeSender) + if !ok { + t.Fatalf("%v", w) + } + // If mode has the R bit set, r must be non-nil + if mode&R != 0 { + if pr == nil { + t.Fatalf("should be non-nil: %#v", pr) + } + // Otherwise it must be nil. + } else { + if pr != nil { + t.Fatalf("should be nil: %#v", pr) + } + } + // If mode has the W bit set, w must be non-nil + if mode&W != 0 { + if pw == nil { + t.Fatalf("should be non-nil: %#v", pw) + } + // Otherwise it must be nil. + } else { + if pw != nil { + t.Fatalf("should be nil: %#v", pw) + } + } +} + func TestSendReply(t *testing.T) { r, w := Pipe() defer r.Close() @@ -64,22 +94,17 @@ func TestSendReply(t *testing.T) { // Send go func() { // Send a message with mode=R - in, out, err := w.Send(&Message{Data: "this is the request"}, R) + in, out, err := w.Send(&Message{Data: []byte("this is the request")}, R) if err != nil { t.Fatal(err) } - if out != nil { - t.Fatalf("%#v", out) - } - if in == nil { - t.Fatalf("%#v", in) - } + assertMode(t, in, out, R) // Read for a reply resp, _, _, err := in.Receive(0) if err != nil { t.Fatal(err) } - if resp.Data != "this is the reply" { + if string(resp.Data) != "this is the reply" { t.Fatalf("%#v", resp) } }() @@ -88,17 +113,12 @@ func TestSendReply(t *testing.T) { if err != nil { t.Fatal(err) } - if msg.Data != "this is the request" { + if string(msg.Data) != "this is the request" { t.Fatalf("%#v", msg) } - if out == nil { - t.Fatalf("%#v", out) - } - if in != nil { - t.Fatalf("%#v", in) - } + assertMode(t, in, out, W) // Send a reply - _, _, err = out.Send(&Message{Data: "this is the reply"}, 0) + _, _, err = out.Send(&Message{Data: []byte("this is the reply")}, 0) if err != nil { t.Fatal(err) } @@ -113,18 +133,13 @@ func TestSendNested(t *testing.T) { // Send go func() { // Send a message with mode=W - in, out, err := w.Send(&Message{Data: "this is the request"}, W) + in, out, err := w.Send(&Message{Data: []byte("this is the request")}, W) if err != nil { t.Fatal(err) } - if out == nil { - t.Fatalf("%#v", out) - } - if in != nil { - t.Fatalf("%#v", in) - } + assertMode(t, in, out, W) // Send a nested message - _, _, err = out.Send(&Message{Data: "this is the nested message"}, 0) + _, _, err = out.Send(&Message{Data: []byte("this is the nested message")}, 0) if err != nil { t.Fatal(err) } @@ -134,21 +149,16 @@ func TestSendNested(t *testing.T) { if err != nil { t.Fatal(err) } - if msg.Data != "this is the request" { + if string(msg.Data) != "this is the request" { t.Fatalf("%#v", msg) } - if out != nil { - t.Fatalf("%#v", out) - } - if in == nil { - t.Fatalf("%#v", in) - } + assertMode(t, in, out, R) // Read for a nested message nested, _, _, err := in.Receive(0) if err != nil { t.Fatal(err) } - if nested.Data != "this is the nested message" { + if string(nested.Data) != "this is the nested message" { t.Fatalf("%#v", nested) } }) From 6616f08fe071a403455e30f346f4bed4c8ddb161 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 14:27:10 +0000 Subject: [PATCH 119/347] inmem: gofmt Signed-off-by: Solomon Hykes --- inmem/copy.go | 1 - inmem/inmem.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/inmem/copy.go b/inmem/copy.go index be81c3d041..d38b34baeb 100644 --- a/inmem/copy.go +++ b/inmem/copy.go @@ -24,4 +24,3 @@ func Copy(dst Sender, src Receiver) (int, error) { ) return n, fmt.Errorf("operation not supported") } - diff --git a/inmem/inmem.go b/inmem/inmem.go index cbdee9ca8d..8010b00148 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -195,7 +195,7 @@ func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { func (w *PipeSender) ReceiveFrom(src Receiver) (int, error) { var n int for { - msg, msgr, msgw, err := src.Receive(R|W) + msg, msgr, msgw, err := src.Receive(R | W) if err == io.EOF { break } From 12b5459a1ce1cc7a6ac406828903685150dfa43a Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 14:31:00 +0000 Subject: [PATCH 120/347] inmem.StackSender: a dynamic beam forwarded with health checks StackSender forwards beam messages to a dynamic list of backend receivers. New backends are stacked on top. When a message is sent, each backend is tried until one succeeds. Any failing backends encountered along the way are removed from the queue. Signed-off-by: Solomon Hykes --- inmem/stack.go | 48 +++++++++++++++++++++++++++++++++++++++++++++ inmem/stack_test.go | 33 +++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 inmem/stack.go create mode 100644 inmem/stack_test.go diff --git a/inmem/stack.go b/inmem/stack.go new file mode 100644 index 0000000000..4509962830 --- /dev/null +++ b/inmem/stack.go @@ -0,0 +1,48 @@ +package inmem + +import ( + "container/list" + "sync" +) + +// StackSender forwards beam messages to a dynamic list of backend receivers. +// New backends are stacked on top. When a message is sent, each backend is +// tried until one succeeds. Any failing backends encountered along the way +// are removed from the queue. +type StackSender struct { + stack *list.List + l sync.RWMutex +} + +func NewStackSender() *StackSender { + stack := list.New() + return &StackSender{ + stack: stack, + } +} + +func (s *StackSender) Send(msg *Message, mode int) (Receiver, Sender, error) { + s.l.RLock() + e := s.stack.Front() + s.l.RUnlock() + for e != nil { + h := e.Value.(Sender) + r, w, err := h.Send(msg, mode) + if err == nil { + return r, w, nil + } + s.l.Lock() + next := e.Next() + s.stack.Remove(e) + s.l.Unlock() + e = next + } + // Silently drop messages if no valid backend is available. + return nil, nil, nil +} + +func (s *StackSender) Add(dst Sender) { + s.l.Lock() + defer s.l.Unlock() + s.stack.PushFront(dst) +} diff --git a/inmem/stack_test.go b/inmem/stack_test.go new file mode 100644 index 0000000000..5c406ac1d9 --- /dev/null +++ b/inmem/stack_test.go @@ -0,0 +1,33 @@ +package inmem + +import ( + "github.com/dotcloud/docker/pkg/testutils" + "strings" + "testing" +) + +func TestSendStack(t *testing.T) { + r, w := Pipe() + defer r.Close() + defer w.Close() + s := NewStackSender() + s.Add(w) + testutils.Timeout(t, func() { + go func() { + msg, _, _, err := r.Receive(0) + if err != nil { + t.Fatal(err) + } + if msg.Name != "hello" { + t.Fatalf("%#v", msg) + } + if strings.Join(msg.Args, " ") != "wonderful world" { + t.Fatalf("%#v", msg) + } + }() + _, _, err := s.Send(&Message{"hello", []string{"wonderful", "world"}, nil}, 0) + if err != nil { + t.Fatal(err) + } + }) +} From 655a0af86207eaaa9a563030e0179b4f5a6c9950 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 14:34:07 +0000 Subject: [PATCH 121/347] inmem: NopReceiver and NopSender Signed-off-by: Solomon Hykes --- inmem/nop.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 inmem/nop.go diff --git a/inmem/nop.go b/inmem/nop.go new file mode 100644 index 0000000000..56acdc26ef --- /dev/null +++ b/inmem/nop.go @@ -0,0 +1,17 @@ +package inmem + +import ( + "io" +) + +type NopSender struct{} + +func (s NopSender) Send(msg *Message, mode int) (Receiver, Sender, error) { + return NopReceiver{}, NopSender{}, nil +} + +type NopReceiver struct{} + +func (r NopReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { + return nil, nil, nil, io.EOF +} From 7d0ba6e26b206ab6fc0b4f46f91125d93912bd88 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 15:09:53 +0000 Subject: [PATCH 122/347] inmem: Sender implements Close Signed-off-by: Solomon Hykes --- inmem/inmem.go | 1 + inmem/nop.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/inmem/inmem.go b/inmem/inmem.go index 8010b00148..d1766f2aec 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -8,6 +8,7 @@ import ( type Sender interface { Send(msg *Message, mode int) (Receiver, Sender, error) + Close() error } type Receiver interface { diff --git a/inmem/nop.go b/inmem/nop.go index 56acdc26ef..d4042a7e5c 100644 --- a/inmem/nop.go +++ b/inmem/nop.go @@ -10,6 +10,10 @@ func (s NopSender) Send(msg *Message, mode int) (Receiver, Sender, error) { return NopReceiver{}, NopSender{}, nil } +func (s NopSender) Close() error { + return nil +} + type NopReceiver struct{} func (r NopReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { From 5b89b2fd8367ca95ef52cb6b4ecbd90dfa666883 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 15:35:51 +0000 Subject: [PATCH 123/347] inmem.StackSender.Add returns a reference to the previous chain Signed-off-by: Solomon Hykes --- inmem/stack.go | 81 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 66 insertions(+), 15 deletions(-) diff --git a/inmem/stack.go b/inmem/stack.go index 4509962830..90b66e87ed 100644 --- a/inmem/stack.go +++ b/inmem/stack.go @@ -2,6 +2,7 @@ package inmem import ( "container/list" + "fmt" "sync" ) @@ -11,6 +12,7 @@ import ( // are removed from the queue. type StackSender struct { stack *list.List + front *list.Element l sync.RWMutex } @@ -21,28 +23,77 @@ func NewStackSender() *StackSender { } } -func (s *StackSender) Send(msg *Message, mode int) (Receiver, Sender, error) { - s.l.RLock() - e := s.stack.Front() - s.l.RUnlock() - for e != nil { - h := e.Value.(Sender) - r, w, err := h.Send(msg, mode) +func (s *StackSender) Send(msg *Message, mode int) (r Receiver, w Sender, err error) { + ok := s.walk(func(h Sender) (ok bool) { + r, w, err = h.Send(msg, mode) + fmt.Printf("sending %v to %#v returned %v\n", msg, h, err) if err == nil { - return r, w, nil + return true } + return false + }) + if ok { + return r, w, err + } + // Silently drop messages if no valid backend is available. + return nil, nil, nil +} + +func (s *StackSender) Add(dst Sender) *StackSender { + s.l.Lock() + defer s.l.Unlock() + prev := &StackSender{ + stack: s.stack, + front: s.stack.Front(), + } + s.stack.PushFront(dst) + return prev +} + +func (s *StackSender) Close() error { + s.walk(func(h Sender) bool { + h.Close() + // remove all handlers + return false + }) + return nil +} + +func (s *StackSender) walk(f func(Sender) bool) bool { + var e *list.Element + if s.front == nil { + s.l.RLock() + e = s.stack.Front() + s.l.RUnlock() + } else { + e = s.front + } + for e != nil { + fmt.Printf("[StackSender.Walk] %v\n", e.Value.(Sender)) + ok := f(e.Value.(Sender)) + if ok { + fmt.Printf("[StackSender.Walk] %v -> OK\n", e.Value.(Sender)) + return true + } + fmt.Printf("[StackSender.Walk] %v invalid: removing\n", e.Value.(Sender)) s.l.Lock() next := e.Next() s.stack.Remove(e) s.l.Unlock() e = next } - // Silently drop messages if no valid backend is available. - return nil, nil, nil + fmt.Printf("[STackSender.Walk] -> no valid handler\n") + return false } - -func (s *StackSender) Add(dst Sender) { - s.l.Lock() - defer s.l.Unlock() - s.stack.PushFront(dst) +func (s *StackSender) Len() int { + s.l.RLock() + defer s.l.RUnlock() + if s.front == nil { + return s.stack.Len() + } + var len int + for e := s.front; e != nil ; e = e.Next() { + len++ + } + return len } From 048bed0cd1b924436b59b2374918e9b445344d47 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 18:47:54 +0000 Subject: [PATCH 124/347] inmem: a message is simply 1 opcode + an array of binary strings. Remove redundant `Data` field. Every argument can be arbitrary data. Signed-off-by: Solomon Hykes --- inmem/inmem.go | 1 - inmem/inmem_test.go | 23 ++++++++++------------- inmem/stack.go | 4 ++-- inmem/stack_test.go | 2 +- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/inmem/inmem.go b/inmem/inmem.go index d1766f2aec..e5b240b8ff 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -18,7 +18,6 @@ type Receiver interface { type Message struct { Name string Args []string - Data []byte } const ( diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index 8e216e4ddb..aee864cd13 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -27,18 +27,15 @@ func TestSimpleSend(t *testing.T) { if err != nil { t.Fatal(err) } - if string(msg.Data) != "hello world" { - t.Fatalf("%#v", *msg) - } if msg.Name != "print" { t.Fatalf("%#v", *msg) } - if len(msg.Args) != 0 { + if msg.Args[0] != "hello world" { t.Fatalf("%#v", *msg) } assertMode(t, in, out, 0) }() - in, out, err := w.Send(&Message{Name: "print", Data: []byte("hello world")}, 0) + in, out, err := w.Send(&Message{Name: "print", Args: []string{"hello world"}}, 0) if err != nil { t.Fatal(err) } @@ -94,7 +91,7 @@ func TestSendReply(t *testing.T) { // Send go func() { // Send a message with mode=R - in, out, err := w.Send(&Message{Data: []byte("this is the request")}, R) + in, out, err := w.Send(&Message{Args: []string{"this is the request"}}, R) if err != nil { t.Fatal(err) } @@ -104,7 +101,7 @@ func TestSendReply(t *testing.T) { if err != nil { t.Fatal(err) } - if string(resp.Data) != "this is the reply" { + if resp.Args[0] != "this is the reply" { t.Fatalf("%#v", resp) } }() @@ -113,12 +110,12 @@ func TestSendReply(t *testing.T) { if err != nil { t.Fatal(err) } - if string(msg.Data) != "this is the request" { + if msg.Args[0] != "this is the request" { t.Fatalf("%#v", msg) } assertMode(t, in, out, W) // Send a reply - _, _, err = out.Send(&Message{Data: []byte("this is the reply")}, 0) + _, _, err = out.Send(&Message{Args: []string{"this is the reply"}}, 0) if err != nil { t.Fatal(err) } @@ -133,13 +130,13 @@ func TestSendNested(t *testing.T) { // Send go func() { // Send a message with mode=W - in, out, err := w.Send(&Message{Data: []byte("this is the request")}, W) + in, out, err := w.Send(&Message{Args: []string{"this is the request"}}, W) if err != nil { t.Fatal(err) } assertMode(t, in, out, W) // Send a nested message - _, _, err = out.Send(&Message{Data: []byte("this is the nested message")}, 0) + _, _, err = out.Send(&Message{Args: []string{"this is the nested message"}}, 0) if err != nil { t.Fatal(err) } @@ -149,7 +146,7 @@ func TestSendNested(t *testing.T) { if err != nil { t.Fatal(err) } - if string(msg.Data) != "this is the request" { + if msg.Args[0] != "this is the request" { t.Fatalf("%#v", msg) } assertMode(t, in, out, R) @@ -158,7 +155,7 @@ func TestSendNested(t *testing.T) { if err != nil { t.Fatal(err) } - if string(nested.Data) != "this is the nested message" { + if nested.Args[0] != "this is the nested message" { t.Fatalf("%#v", nested) } }) diff --git a/inmem/stack.go b/inmem/stack.go index 90b66e87ed..87378ca7f0 100644 --- a/inmem/stack.go +++ b/inmem/stack.go @@ -8,7 +8,7 @@ import ( // StackSender forwards beam messages to a dynamic list of backend receivers. // New backends are stacked on top. When a message is sent, each backend is -// tried until one succeeds. Any failing backends encountered along the way +// tried until one succeeds. Any failing backends encountered along the way // are removed from the queue. type StackSender struct { stack *list.List @@ -92,7 +92,7 @@ func (s *StackSender) Len() int { return s.stack.Len() } var len int - for e := s.front; e != nil ; e = e.Next() { + for e := s.front; e != nil; e = e.Next() { len++ } return len diff --git a/inmem/stack_test.go b/inmem/stack_test.go index 5c406ac1d9..1a37eeebff 100644 --- a/inmem/stack_test.go +++ b/inmem/stack_test.go @@ -25,7 +25,7 @@ func TestSendStack(t *testing.T) { t.Fatalf("%#v", msg) } }() - _, _, err := s.Send(&Message{"hello", []string{"wonderful", "world"}, nil}, 0) + _, _, err := s.Send(&Message{"hello", []string{"wonderful", "world"}}, 0) if err != nil { t.Fatal(err) } From 1508c1d46fb4408dd1b7083f9286d6119722d331 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 23:47:11 +0000 Subject: [PATCH 125/347] inmem: PipeSender and PipeReceiver return clean nil values This is necessary because `(*PipeSender)nil` is not equal to `(interface{})nil`. Signed-off-by: Solomon Hykes --- inmem/inmem.go | 29 +++++++++++++++++++++++++++-- inmem/inmem_test.go | 24 ++++++++---------------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/inmem/inmem.go b/inmem/inmem.go index e5b240b8ff..516f72d1e7 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -170,7 +170,21 @@ type PipeReceiver struct { } func (r *PipeReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { - return r.p.receive(mode) + msg, pin, pout, err := r.p.receive(mode) + if err != nil { + return nil, nil, nil, err + } + var ( + in Receiver + out Sender + ) + if pin != nil { + in = pin + } + if pout != nil { + out = pout + } + return msg, in, out, err } func (r *PipeReceiver) Close() error { @@ -189,7 +203,18 @@ type PipeSender struct { } func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { - return w.p.send(msg, mode) + pin, pout, err := w.p.send(msg, mode) + var ( + in Receiver + out Sender + ) + if pin != nil { + in = pin + } + if pout != nil { + out = pout + } + return in, out, err } func (w *PipeSender) ReceiveFrom(src Receiver) (int, error) { diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index aee864cd13..28660422e7 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -51,34 +51,26 @@ func TestSimpleSend(t *testing.T) { // If any of these conditions are not met, t.Fatal is called and the active // test fails. func assertMode(t *testing.T, r Receiver, w Sender, mode int) { - pr, ok := r.(*PipeReceiver) - if !ok { - t.Fatalf("%v", r) - } - pw, ok := w.(*PipeSender) - if !ok { - t.Fatalf("%v", w) - } // If mode has the R bit set, r must be non-nil if mode&R != 0 { - if pr == nil { - t.Fatalf("should be non-nil: %#v", pr) + if r == nil { + t.Fatalf("should be non-nil: %#v", r) } // Otherwise it must be nil. } else { - if pr != nil { - t.Fatalf("should be nil: %#v", pr) + if r != nil { + t.Fatalf("should be nil: %#v", r) } } // If mode has the W bit set, w must be non-nil if mode&W != 0 { - if pw == nil { - t.Fatalf("should be non-nil: %#v", pw) + if w == nil { + t.Fatalf("should be non-nil: %#v", w) } // Otherwise it must be nil. } else { - if pw != nil { - t.Fatalf("should be nil: %#v", pw) + if w != nil { + t.Fatalf("should be nil: %#v", w) } } } From b9c316df299426471136cdda7a0d631a4cc71f1c Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 23:49:07 +0000 Subject: [PATCH 126/347] inmem: complete Copy implementation Copy can now handle arbitrary nesting of streams, without knowing the underlying type of either the source or destination. It does this by attempting `SendTo` and `ReceiveFrom`, then if that is not supported, falling back to nested copies in separate goroutines. Signed-off-by: Solomon Hykes --- inmem/copy.go | 53 ++++++++++++++++++++++++++++++++--- inmem/inmem.go | 75 +++++++++++++++++++++++++++++--------------------- 2 files changed, 92 insertions(+), 36 deletions(-) diff --git a/inmem/copy.go b/inmem/copy.go index d38b34baeb..cc13eef5ef 100644 --- a/inmem/copy.go +++ b/inmem/copy.go @@ -1,7 +1,8 @@ package inmem import ( - "fmt" + "errors" + "sync" ) type ReceiverFrom interface { @@ -12,15 +13,59 @@ type SenderTo interface { SendTo(Sender) (int, error) } +var ( + ErrIncompatibleSender = errors.New("incompatible sender") + ErrIncompatibleReceiver = errors.New("incompatible receiver") +) + func Copy(dst Sender, src Receiver) (int, error) { + var tasks sync.WaitGroup + defer tasks.Wait() if senderTo, ok := src.(SenderTo); ok { - return senderTo.SendTo(dst) + if n, err := senderTo.SendTo(dst); err != ErrIncompatibleSender { + return n, err + } } if receiverFrom, ok := dst.(ReceiverFrom); ok { - return receiverFrom.ReceiveFrom(src) + if n, err := receiverFrom.ReceiveFrom(src); err != ErrIncompatibleReceiver { + return n, err + } } var ( n int ) - return n, fmt.Errorf("operation not supported") + copyAndClose := func(dst Sender, src Receiver) { + if dst == nil { + return + } + defer dst.Close() + if src == nil { + return + } + Copy(dst, src) + } + for { + msg, rcvR, rcvW, err := src.Receive(R | W) + if err != nil { + return n, err + } + sndR, sndW, err := dst.Send(msg, R|W) + if err != nil { + if rcvW != nil { + rcvW.Close() + } + return n, err + } + tasks.Add(2) + go func() { + copyAndClose(rcvW, sndR) + tasks.Done() + }() + go func() { + copyAndClose(sndW, rcvR) + tasks.Done() + }() + n++ + } + return n, nil } diff --git a/inmem/inmem.go b/inmem/inmem.go index 516f72d1e7..67007867f8 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -1,7 +1,6 @@ package inmem import ( - "fmt" "io" "sync" ) @@ -106,7 +105,7 @@ func (p *pipe) send(msg *Message, mode int) (in *PipeReceiver, out *PipeSender, return } -func (p *pipe) receive(mode int) (msg *Message, in *PipeReceiver, out *PipeSender, err error) { +func (p *pipe) preceive() (*pipeMessage, error) { p.rl.Lock() defer p.rl.Unlock() @@ -114,17 +113,27 @@ func (p *pipe) receive(mode int) (msg *Message, in *PipeReceiver, out *PipeSende defer p.l.Unlock() for { if p.rerr != nil { - return nil, nil, nil, io.ErrClosedPipe + return nil, io.ErrClosedPipe } if p.pmsg != nil { break } if p.werr != nil { - return nil, nil, nil, p.werr + return nil, p.werr } p.rwait.Wait() } pmsg := p.pmsg + p.pmsg = nil + p.wwait.Signal() + return pmsg, nil +} + +func (p *pipe) receive(mode int) (*Message, *PipeReceiver, *PipeSender, error) { + pmsg, err := p.preceive() + if err != nil { + return nil, nil, nil, err + } if pmsg.out != nil && mode&W == 0 { pmsg.out.Close() pmsg.out = nil @@ -133,12 +142,7 @@ func (p *pipe) receive(mode int) (msg *Message, in *PipeReceiver, out *PipeSende pmsg.in.Close() pmsg.in = nil } - p.pmsg = nil - msg = pmsg.msg - in = pmsg.in - out = pmsg.out - p.wwait.Signal() - return + return pmsg.msg, pmsg.in, pmsg.out, nil } func (p *pipe) rclose(err error) { @@ -187,6 +191,29 @@ func (r *PipeReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { return msg, in, out, err } +func (r *PipeReceiver) SendTo(dst Sender) (int, error) { + var n int + // If the destination is a PipeSender, we can cheat + pdst, ok := dst.(*PipeSender) + if !ok { + return 0, ErrIncompatibleSender + } + for { + pmsg, err := r.p.preceive() + if err == io.EOF { + break + } + if err != nil { + return n, err + } + if err := pdst.p.psend(pmsg); err != nil { + return n, err + } + } + n++ + return n, nil +} + func (r *PipeReceiver) Close() error { return r.CloseWithError(nil) } @@ -219,35 +246,19 @@ func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { func (w *PipeSender) ReceiveFrom(src Receiver) (int, error) { var n int + // If the destination is a PipeReceiver, we can cheat + psrc, ok := src.(*PipeReceiver) + if !ok { + return 0, ErrIncompatibleReceiver + } for { - msg, msgr, msgw, err := src.Receive(R | W) + pmsg, err := psrc.p.preceive() if err == io.EOF { break } if err != nil { return n, err } - pmsg := &pipeMessage{msg: msg} - if msgr != nil { - if pmsgr, ok := msgr.(*PipeReceiver); ok { - pmsg.in = pmsgr - } else { - // FIXME: if we're not receiving from a PipeReceiver, - // we need to create a new pipe and shuttle messages through it - // in a new goroutine. - return n, fmt.Errorf("operation not supported") - } - } - if msgw != nil { - if pmsgw, ok := msgw.(*PipeSender); ok { - pmsg.out = pmsgw - } else { - // FIXME: if we're not sending to a PipeSender, - // we need to create a new pipe and shuttle messages through it - // in a new goroutine. - return n, fmt.Errorf("operation not supported") - } - } if err := w.p.psend(pmsg); err != nil { return n, err } From 1f1de00af8146d5c0f27f25c44eb2617a51a7ea3 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 23:52:32 +0000 Subject: [PATCH 127/347] inmem: Buffer is a convenience message buffer Signed-off-by: Solomon Hykes --- inmem/buf.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 inmem/buf.go diff --git a/inmem/buf.go b/inmem/buf.go new file mode 100644 index 0000000000..32243e0e2d --- /dev/null +++ b/inmem/buf.go @@ -0,0 +1,15 @@ +package inmem + +import () + +type Buffer []*Message + +func (buf *Buffer) Send(msg *Message, mode int) (Receiver, Sender, error) { + (*buf) = append(*buf, msg) + return NopReceiver{}, NopSender{}, nil +} + +func (buf *Buffer) Close() error { + (*buf) = nil + return nil +} From 165164ded01de39f731e92014a1dcb73c08877bd Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 11 May 2014 23:51:44 +0000 Subject: [PATCH 128/347] inmem: fix StackSender StackSender is now more solid, with the beginning of a test harness. Signed-off-by: Solomon Hykes --- inmem/stack.go | 78 ++++++++++++++++++++++++++------------------- inmem/stack_test.go | 63 ++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 33 deletions(-) diff --git a/inmem/stack.go b/inmem/stack.go index 87378ca7f0..282b8eaf03 100644 --- a/inmem/stack.go +++ b/inmem/stack.go @@ -3,6 +3,7 @@ package inmem import ( "container/list" "fmt" + "strings" "sync" ) @@ -12,7 +13,6 @@ import ( // are removed from the queue. type StackSender struct { stack *list.List - front *list.Element l sync.RWMutex } @@ -24,15 +24,16 @@ func NewStackSender() *StackSender { } func (s *StackSender) Send(msg *Message, mode int) (r Receiver, w Sender, err error) { - ok := s.walk(func(h Sender) (ok bool) { + completed := s.walk(func(h Sender) (ok bool) { r, w, err = h.Send(msg, mode) - fmt.Printf("sending %v to %#v returned %v\n", msg, h, err) + fmt.Printf("[stacksender] sending %v to %#v returned %v\n", msg, h, err) if err == nil { return true } return false }) - if ok { + // If walk was completed, it means we didn't find a valid handler + if !completed { return r, w, err } // Silently drop messages if no valid backend is available. @@ -43,9 +44,10 @@ func (s *StackSender) Add(dst Sender) *StackSender { s.l.Lock() defer s.l.Unlock() prev := &StackSender{ - stack: s.stack, - front: s.stack.Front(), + stack: list.New(), } + prev.stack.PushFrontList(s.stack) + fmt.Printf("[ADD] prev %#v\n", prev) s.stack.PushFront(dst) return prev } @@ -59,41 +61,51 @@ func (s *StackSender) Close() error { return nil } -func (s *StackSender) walk(f func(Sender) bool) bool { +func (s *StackSender) _walk(f func(*list.Element) bool) bool { var e *list.Element - if s.front == nil { - s.l.RLock() - e = s.stack.Front() - s.l.RUnlock() - } else { - e = s.front - } + s.l.RLock() + e = s.stack.Front() + s.l.RUnlock() for e != nil { fmt.Printf("[StackSender.Walk] %v\n", e.Value.(Sender)) - ok := f(e.Value.(Sender)) - if ok { - fmt.Printf("[StackSender.Walk] %v -> OK\n", e.Value.(Sender)) - return true - } - fmt.Printf("[StackSender.Walk] %v invalid: removing\n", e.Value.(Sender)) - s.l.Lock() + s.l.RLock() next := e.Next() - s.stack.Remove(e) - s.l.Unlock() + s.l.RUnlock() + cont := f(e) + if !cont { + return false + } e = next } - fmt.Printf("[STackSender.Walk] -> no valid handler\n") - return false + return true } + +func (s *StackSender) walk(f func(Sender) bool) bool { + return s._walk(func(e *list.Element) bool { + ok := f(e.Value.(Sender)) + if ok { + // Found a valid handler. Stop walking. + return false + } + // Invalid handler: remove. + s.l.Lock() + s.stack.Remove(e) + s.l.Unlock() + return true + }) +} + func (s *StackSender) Len() int { s.l.RLock() defer s.l.RUnlock() - if s.front == nil { - return s.stack.Len() - } - var len int - for e := s.front; e != nil; e = e.Next() { - len++ - } - return len + return s.stack.Len() +} + +func (s *StackSender) String() string { + var parts []string + s._walk(func(e *list.Element) bool { + parts = append(parts, fmt.Sprintf("%v", e.Value.(Sender))) + return true + }) + return fmt.Sprintf("%d:[%s]", len(parts), strings.Join(parts, "->")) } diff --git a/inmem/stack_test.go b/inmem/stack_test.go index 1a37eeebff..44425ce38a 100644 --- a/inmem/stack_test.go +++ b/inmem/stack_test.go @@ -31,3 +31,66 @@ func TestSendStack(t *testing.T) { } }) } + +func TestStackLen(t *testing.T) { + s := NewStackSender() + if s.Len() != 0 { + t.Fatalf("empty StackSender has length %d", s.Len()) + } +} + +func TestStackAdd(t *testing.T) { + s := NewStackSender() + a := Buffer{} + beforeA := s.Add(&a) + // Add on an empty StackSender should return an empty StackSender + if beforeA.Len() != 0 { + t.Fatalf("%s has %d elements", beforeA, beforeA.Len()) + } + if s.Len() != 1 { + t.Fatalf("%#v", beforeA) + } + // Add a 2nd element + b := Buffer{} + beforeB := s.Add(&b) + if beforeB.Len() != 1 { + t.Fatalf("%#v", beforeA) + } + if s.Len() != 2 { + t.Fatalf("%#v", beforeA) + } + s.Send(&Message{"for b", nil}, 0) + beforeB.Send(&Message{"for a", nil}, 0) + beforeA.Send(&Message{"for nobody", nil}, 0) + if len(a) != 1 { + t.Fatalf("%#v", a) + } + if len(b) != 1 { + t.Fatalf("%#v", b) + } +} + +// Misbehaving backends must be removed +func TestStackAddBad(t *testing.T) { + s := NewStackSender() + buf := Buffer{} + s.Add(&buf) + r, w := Pipe() + s.Add(w) + if s.Len() != 2 { + t.Fatalf("%#v", s) + } + r.Close() + if _, _, err := s.Send(&Message{"for the buffer", nil}, 0); err != nil { + t.Fatal(err) + } + if s.Len() != 1 { + t.Fatalf("%#v") + } + if len(buf) != 1 { + t.Fatalf("%#v", buf) + } + if buf[0].Name != "for the buffer" { + t.Fatalf("%#v", buf) + } +} From 8c645d0236b03731b2fd8730e5ae62cc83e88a1b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 16 May 2014 17:03:29 -0700 Subject: [PATCH 129/347] Initial README and AUTHORS file Signed-off-by: Solomon Hykes --- AUTHORS | 1 + README.md | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 AUTHORS create mode 100644 README.md diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000000..db33365bcd --- /dev/null +++ b/AUTHORS @@ -0,0 +1 @@ +Solomon Hykes diff --git a/README.md b/README.md new file mode 100644 index 0000000000..1ba8e57532 --- /dev/null +++ b/README.md @@ -0,0 +1,79 @@ +# Beam + +## A library to break down an application into loosely coupled micro-services + +Beam is a library to turn your application into a collection of loosely coupled micro-services. +It implements an ultra-lightweight hub for the different components of an application +to discover and consume each other, either in-memory or across the network. + +Beam can be embedded with very little overhead by using Go channels. It +also implements an efficient http2/tls transport which can be used to +securely expose and consume any micro-service across a distributed system. + +Because remote Beam sessions are regular HTTP2 over TLS sessions, they can +be used in combination with any standard proxy or authentication +middleware. This means Beam, when configured propely, can be safely exposed +on the public Internet. It can also be embedded in an existing rest API +using an http1 and websocket fallback. + +## How is it different from RPC or REST? + +Modern micro-services are not a great fit for classical RPC or REST +protocols because they often rely heavily on events, bi-directional +communication, stream multiplexing, and some form of data synchronization. +Sometimes these services have a component which requires raw socket access, +either for performance (file transfer, event firehose, database access) or +simply because they have their own protocol (dns, smtp, sql, ssh, +zeromq, etc). These components typically need a separate set of tools +because they are outside the scope of the REST and RPC tools. If there is +also a websocket or ServerEvents transport, those require yet another layer +of tools. + +Instead of a clunky patchwork of tools, Beam implements in a single +minimalistic library all the primitives needed by modern micro-services: + +* Request/response with arbitrary structured data + +* Asynchronous events flowing in real-time in both directions + +* Requests and responses can flow in any direction, and can be arbitrarily +nested, for example to implement a self-registering worker model + +* Any request or response can include any number of streams, multiplexed in +both directions on the same session. + +* Any message serialization format can be plugged in: json, msgpack, xml, +protobuf. + +* As an optional convenience a minimalist key-value format is implemented. +It is designed to be extremely fast to serialize and parse, dead-simple to +implement, and suitable for both one-time data copy, file storage, and +real-time synchronization. + +* Raw file descriptors can be "attached" to any message, and passed under +the hood using the best method available to each transport. The Go channel +transport just passes os.File pointers around. The unix socket transport +uses fd passing which makes it suitable for high-performance IPC. The +tcp transport uses dedicated http2 streams. And as a bonus extension, a +built-in tcp gateway can be used to proxy raw network sockets without +extra overhead. That means Beam services can be used as smart gateways to a +sql database, ssh or file transfer service, with unified auth, discovery +and tooling and without performance penalty. + +## Design philosophy + +An explicit goal of Beam is simplicity of implementation and clarity of +spec. Porting it to any language should be as effortless as humanly +possible. + +## Creators + +**Solomon Hykes** + +- +- + +## Copyright and license + +Code and documentation copyright 2013-2014 Docker, inc. Code released under the Apache 2.0 license. +Docs released under Creative commons. From c2c078952ca0492135ab40e27efc14d2c609cd61 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 18 May 2014 14:40:44 -0700 Subject: [PATCH 130/347] Move unix implementation to a sub-package, promote inmem interfaces to top-level [Signed-off-by: Solomon Hykes ] [Signed-off-by: Paul Nasrat ] --- beam.go | 160 ++------------------------ beam_test.go | 36 ++---- inmem/buf.go | 8 +- inmem/copy.go | 13 ++- inmem/inmem.go | 50 +++----- inmem/inmem_test.go | 41 +++---- inmem/nop.go | 5 +- router.go | 184 ------------------------------ router_test.go | 95 --------------- service.go | 85 -------------- unix/beam.go | 166 +++++++++++++++++++++++++++ unix/beam_test.go | 39 +++++++ unix.go => unix/unix.go | 0 unix_test.go => unix/unix_test.go | 0 {inmem => utils}/stack.go | 19 +-- {inmem => utils}/stack_test.go | 24 ++-- 16 files changed, 289 insertions(+), 636 deletions(-) delete mode 100644 router.go delete mode 100644 router_test.go delete mode 100644 service.go create mode 100644 unix/beam.go create mode 100644 unix/beam_test.go rename unix.go => unix/unix.go (100%) rename unix_test.go => unix/unix_test.go (100%) rename {inmem => utils}/stack.go (78%) rename {inmem => utils}/stack_test.go (75%) diff --git a/beam.go b/beam.go index 88d3ea7c79..3403a1ec95 100644 --- a/beam.go +++ b/beam.go @@ -1,166 +1,22 @@ package beam -import ( - "fmt" - "io" - "os" -) +import () type Sender interface { - Send([]byte, *os.File) error + Send(msg *Message, mode int) (Receiver, Sender, error) + Close() error } type Receiver interface { - Receive() ([]byte, *os.File, error) + Receive(mode int) (*Message, Receiver, Sender, error) } -type ReceiveCloser interface { - Receiver - Close() error -} - -type SendCloser interface { - Sender - Close() error -} - -type ReceiveSender interface { - Receiver - Sender +type Message struct { + Name string + Args []string } const ( - R int = 1 << (32 - 1 - iota) + R = 1 << (32 - 1 - iota) W ) - -func sendPipe(dst Sender, data []byte, mode int) (*os.File, error) { - r, w, err := os.Pipe() - if err != nil { - return nil, err - } - var ( - remote *os.File - local *os.File - ) - if mode == R { - remote = r - local = w - } else if mode == W { - remote = w - local = r - } - if err := dst.Send(data, remote); err != nil { - local.Close() - remote.Close() - return nil, err - } - return local, nil - -} - -// SendRPipe create a pipe and sends its *read* end attached in a beam message -// to `dst`, with `data` as the message payload. -// It returns the *write* end of the pipe, or an error. -func SendRPipe(dst Sender, data []byte) (*os.File, error) { - return sendPipe(dst, data, R) -} - -// SendWPipe create a pipe and sends its *read* end attached in a beam message -// to `dst`, with `data` as the message payload. -// It returns the *write* end of the pipe, or an error. -func SendWPipe(dst Sender, data []byte) (*os.File, error) { - return sendPipe(dst, data, W) -} - -func SendConn(dst Sender, data []byte) (conn *UnixConn, err error) { - local, remote, err := SocketPair() - if err != nil { - return nil, err - } - defer func() { - if err != nil { - local.Close() - remote.Close() - } - }() - conn, err = FileConn(local) - if err != nil { - return nil, err - } - local.Close() - if err := dst.Send(data, remote); err != nil { - return nil, err - } - return conn, nil -} - -func ReceiveConn(src Receiver) ([]byte, *UnixConn, error) { - for { - data, f, err := src.Receive() - if err != nil { - return nil, nil, err - } - if f == nil { - // Skip empty attachments - continue - } - conn, err := FileConn(f) - if err != nil { - // Skip beam attachments which are not connections - // (for example might be a regular file, directory etc) - continue - } - return data, conn, nil - } - panic("impossibru!") - return nil, nil, nil -} - -func Copy(dst Sender, src Receiver) (int, error) { - var n int - for { - payload, attachment, err := src.Receive() - if err == io.EOF { - return n, nil - } else if err != nil { - return n, err - } - if err := dst.Send(payload, attachment); err != nil { - if attachment != nil { - attachment.Close() - } - return n, err - } - n++ - } - panic("impossibru!") - return n, nil -} - -// MsgDesc returns a human readable description of a beam message, usually -// for debugging purposes. -func MsgDesc(payload []byte, attachment *os.File) string { - var filedesc string = "" - if attachment != nil { - filedesc = fmt.Sprintf("%d", attachment.Fd()) - } - return fmt.Sprintf("'%s'[%s]", payload, filedesc) -} - -type devnull struct{} - -func Devnull() ReceiveSender { - return devnull{} -} - -func (d devnull) Send(p []byte, a *os.File) error { - if a != nil { - a.Close() - } - return nil -} - -func (d devnull) Receive() ([]byte, *os.File, error) { - return nil, nil, io.EOF -} diff --git a/beam_test.go b/beam_test.go index 2822861a37..ee0096b189 100644 --- a/beam_test.go +++ b/beam_test.go @@ -1,39 +1,17 @@ package beam import ( - "github.com/dotcloud/docker/pkg/beam/data" "testing" ) -func TestSendConn(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) +func TestModes(t *testing.T) { + if R == W { + t.Fatalf("0") } - defer a.Close() - defer b.Close() - go func() { - conn, err := SendConn(a, data.Empty().Set("type", "connection").Bytes()) - if err != nil { - t.Fatal(err) - } - if err := conn.Send(data.Empty().Set("foo", "bar").Bytes(), nil); err != nil { - t.Fatal(err) - } - conn.CloseWrite() - }() - payload, conn, err := ReceiveConn(b) - if err != nil { - t.Fatal(err) + if R == 0 { + t.Fatalf("0") } - if val := data.Message(string(payload)).Get("type"); val == nil || val[0] != "connection" { - t.Fatalf("%v != %v\n", val, "connection") - } - msg, _, err := conn.Receive() - if err != nil { - t.Fatal(err) - } - if val := data.Message(string(msg)).Get("foo"); val == nil || val[0] != "bar" { - t.Fatalf("%v != %v\n", val, "bar") + if W == 0 { + t.Fatalf("0") } } diff --git a/inmem/buf.go b/inmem/buf.go index 32243e0e2d..244953644b 100644 --- a/inmem/buf.go +++ b/inmem/buf.go @@ -1,10 +1,12 @@ package inmem -import () +import ( + "github.com/docker/beam" +) -type Buffer []*Message +type Buffer []*beam.Message -func (buf *Buffer) Send(msg *Message, mode int) (Receiver, Sender, error) { +func (buf *Buffer) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { (*buf) = append(*buf, msg) return NopReceiver{}, NopSender{}, nil } diff --git a/inmem/copy.go b/inmem/copy.go index cc13eef5ef..8fe3e7b14e 100644 --- a/inmem/copy.go +++ b/inmem/copy.go @@ -2,15 +2,16 @@ package inmem import ( "errors" + "github.com/docker/beam" "sync" ) type ReceiverFrom interface { - ReceiveFrom(Receiver) (int, error) + ReceiveFrom(beam.Receiver) (int, error) } type SenderTo interface { - SendTo(Sender) (int, error) + SendTo(beam.Sender) (int, error) } var ( @@ -18,7 +19,7 @@ var ( ErrIncompatibleReceiver = errors.New("incompatible receiver") ) -func Copy(dst Sender, src Receiver) (int, error) { +func Copy(dst beam.Sender, src beam.Receiver) (int, error) { var tasks sync.WaitGroup defer tasks.Wait() if senderTo, ok := src.(SenderTo); ok { @@ -34,7 +35,7 @@ func Copy(dst Sender, src Receiver) (int, error) { var ( n int ) - copyAndClose := func(dst Sender, src Receiver) { + copyAndClose := func(dst beam.Sender, src beam.Receiver) { if dst == nil { return } @@ -45,11 +46,11 @@ func Copy(dst Sender, src Receiver) (int, error) { Copy(dst, src) } for { - msg, rcvR, rcvW, err := src.Receive(R | W) + msg, rcvR, rcvW, err := src.Receive(beam.R | beam.W) if err != nil { return n, err } - sndR, sndW, err := dst.Send(msg, R|W) + sndR, sndW, err := dst.Send(msg, beam.R|beam.W) if err != nil { if rcvW != nil { rcvW.Close() diff --git a/inmem/inmem.go b/inmem/inmem.go index 67007867f8..f401f7ac19 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -1,29 +1,11 @@ package inmem import ( + "github.com/docker/beam" "io" "sync" ) -type Sender interface { - Send(msg *Message, mode int) (Receiver, Sender, error) - Close() error -} - -type Receiver interface { - Receive(mode int) (*Message, Receiver, Sender, error) -} - -type Message struct { - Name string - Args []string -} - -const ( - R = 1 << (32 - 1 - iota) - W -) - func Pipe() (*PipeReceiver, *PipeSender) { p := new(pipe) p.rwait.L = &p.l @@ -46,7 +28,7 @@ type pipe struct { } type pipeMessage struct { - msg *Message + msg *beam.Message out *PipeSender in *PipeReceiver } @@ -78,10 +60,10 @@ func (p *pipe) psend(pmsg *pipeMessage) error { return err } -func (p *pipe) send(msg *Message, mode int) (in *PipeReceiver, out *PipeSender, err error) { +func (p *pipe) send(msg *beam.Message, mode int) (in *PipeReceiver, out *PipeSender, err error) { // Prepare the message pmsg := &pipeMessage{msg: msg} - if mode&R != 0 { + if mode&beam.R != 0 { in, pmsg.out = Pipe() defer func() { if err != nil { @@ -91,7 +73,7 @@ func (p *pipe) send(msg *Message, mode int) (in *PipeReceiver, out *PipeSender, } }() } - if mode&W != 0 { + if mode&beam.W != 0 { pmsg.in, out = Pipe() defer func() { if err != nil { @@ -129,16 +111,16 @@ func (p *pipe) preceive() (*pipeMessage, error) { return pmsg, nil } -func (p *pipe) receive(mode int) (*Message, *PipeReceiver, *PipeSender, error) { +func (p *pipe) receive(mode int) (*beam.Message, *PipeReceiver, *PipeSender, error) { pmsg, err := p.preceive() if err != nil { return nil, nil, nil, err } - if pmsg.out != nil && mode&W == 0 { + if pmsg.out != nil && mode&beam.W == 0 { pmsg.out.Close() pmsg.out = nil } - if pmsg.in != nil && mode&R == 0 { + if pmsg.in != nil && mode&beam.R == 0 { pmsg.in.Close() pmsg.in = nil } @@ -173,14 +155,14 @@ type PipeReceiver struct { p *pipe } -func (r *PipeReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { +func (r *PipeReceiver) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, error) { msg, pin, pout, err := r.p.receive(mode) if err != nil { return nil, nil, nil, err } var ( - in Receiver - out Sender + in beam.Receiver + out beam.Sender ) if pin != nil { in = pin @@ -191,7 +173,7 @@ func (r *PipeReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { return msg, in, out, err } -func (r *PipeReceiver) SendTo(dst Sender) (int, error) { +func (r *PipeReceiver) SendTo(dst beam.Sender) (int, error) { var n int // If the destination is a PipeSender, we can cheat pdst, ok := dst.(*PipeSender) @@ -229,11 +211,11 @@ type PipeSender struct { p *pipe } -func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { +func (w *PipeSender) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { pin, pout, err := w.p.send(msg, mode) var ( - in Receiver - out Sender + in beam.Receiver + out beam.Sender ) if pin != nil { in = pin @@ -244,7 +226,7 @@ func (w *PipeSender) Send(msg *Message, mode int) (Receiver, Sender, error) { return in, out, err } -func (w *PipeSender) ReceiveFrom(src Receiver) (int, error) { +func (w *PipeSender) ReceiveFrom(src beam.Receiver) (int, error) { var n int // If the destination is a PipeReceiver, we can cheat psrc, ok := src.(*PipeReceiver) diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index 28660422e7..f8c7cb7b67 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -1,22 +1,11 @@ package inmem import ( + "github.com/docker/beam" "github.com/dotcloud/docker/pkg/testutils" "testing" ) -func TestModes(t *testing.T) { - if R == W { - t.Fatalf("0") - } - if R == 0 { - t.Fatalf("0") - } - if W == 0 { - t.Fatalf("0") - } -} - func TestSimpleSend(t *testing.T) { r, w := Pipe() defer r.Close() @@ -35,7 +24,7 @@ func TestSimpleSend(t *testing.T) { } assertMode(t, in, out, 0) }() - in, out, err := w.Send(&Message{Name: "print", Args: []string{"hello world"}}, 0) + in, out, err := w.Send(&beam.Message{Name: "print", Args: []string{"hello world"}}, 0) if err != nil { t.Fatal(err) } @@ -50,9 +39,9 @@ func TestSimpleSend(t *testing.T) { // // If any of these conditions are not met, t.Fatal is called and the active // test fails. -func assertMode(t *testing.T, r Receiver, w Sender, mode int) { +func assertMode(t *testing.T, r beam.Receiver, w beam.Sender, mode int) { // If mode has the R bit set, r must be non-nil - if mode&R != 0 { + if mode&beam.R != 0 { if r == nil { t.Fatalf("should be non-nil: %#v", r) } @@ -63,7 +52,7 @@ func assertMode(t *testing.T, r Receiver, w Sender, mode int) { } } // If mode has the W bit set, w must be non-nil - if mode&W != 0 { + if mode&beam.W != 0 { if w == nil { t.Fatalf("should be non-nil: %#v", w) } @@ -83,11 +72,11 @@ func TestSendReply(t *testing.T) { // Send go func() { // Send a message with mode=R - in, out, err := w.Send(&Message{Args: []string{"this is the request"}}, R) + in, out, err := w.Send(&beam.Message{Args: []string{"this is the request"}}, beam.R) if err != nil { t.Fatal(err) } - assertMode(t, in, out, R) + assertMode(t, in, out, beam.R) // Read for a reply resp, _, _, err := in.Receive(0) if err != nil { @@ -98,16 +87,16 @@ func TestSendReply(t *testing.T) { } }() // Receive a message with mode=W - msg, in, out, err := r.Receive(W) + msg, in, out, err := r.Receive(beam.W) if err != nil { t.Fatal(err) } if msg.Args[0] != "this is the request" { t.Fatalf("%#v", msg) } - assertMode(t, in, out, W) + assertMode(t, in, out, beam.W) // Send a reply - _, _, err = out.Send(&Message{Args: []string{"this is the reply"}}, 0) + _, _, err = out.Send(&beam.Message{Args: []string{"this is the reply"}}, 0) if err != nil { t.Fatal(err) } @@ -122,26 +111,26 @@ func TestSendNested(t *testing.T) { // Send go func() { // Send a message with mode=W - in, out, err := w.Send(&Message{Args: []string{"this is the request"}}, W) + in, out, err := w.Send(&beam.Message{Args: []string{"this is the request"}}, beam.W) if err != nil { t.Fatal(err) } - assertMode(t, in, out, W) + assertMode(t, in, out, beam.W) // Send a nested message - _, _, err = out.Send(&Message{Args: []string{"this is the nested message"}}, 0) + _, _, err = out.Send(&beam.Message{Args: []string{"this is the nested message"}}, 0) if err != nil { t.Fatal(err) } }() // Receive a message with mode=R - msg, in, out, err := r.Receive(R) + msg, in, out, err := r.Receive(beam.R) if err != nil { t.Fatal(err) } if msg.Args[0] != "this is the request" { t.Fatalf("%#v", msg) } - assertMode(t, in, out, R) + assertMode(t, in, out, beam.R) // Read for a nested message nested, _, _, err := in.Receive(0) if err != nil { diff --git a/inmem/nop.go b/inmem/nop.go index d4042a7e5c..2d822fe340 100644 --- a/inmem/nop.go +++ b/inmem/nop.go @@ -1,12 +1,13 @@ package inmem import ( + "github.com/docker/beam" "io" ) type NopSender struct{} -func (s NopSender) Send(msg *Message, mode int) (Receiver, Sender, error) { +func (s NopSender) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { return NopReceiver{}, NopSender{}, nil } @@ -16,6 +17,6 @@ func (s NopSender) Close() error { type NopReceiver struct{} -func (r NopReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { +func (r NopReceiver) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, error) { return nil, nil, nil, io.EOF } diff --git a/router.go b/router.go deleted file mode 100644 index 15910e95b1..0000000000 --- a/router.go +++ /dev/null @@ -1,184 +0,0 @@ -package beam - -import ( - "fmt" - "github.com/dotcloud/docker/pkg/beam/data" - "io" - "os" -) - -type Router struct { - routes []*Route - sink Sender -} - -func NewRouter(sink Sender) *Router { - return &Router{sink: sink} -} - -func (r *Router) Send(payload []byte, attachment *os.File) (err error) { - //fmt.Printf("Router.Send(%s)\n", MsgDesc(payload, attachment)) - defer func() { - //fmt.Printf("DONE Router.Send(%s) = %v\n", MsgDesc(payload, attachment), err) - }() - for _, route := range r.routes { - if route.Match(payload, attachment) { - return route.Handle(payload, attachment) - } - } - if r.sink != nil { - // fmt.Printf("[%d] [Router.Send] no match. sending %s to sink %#v\n", os.Getpid(), MsgDesc(payload, attachment), r.sink) - return r.sink.Send(payload, attachment) - } - //fmt.Printf("[Router.Send] no match. return error.\n") - return fmt.Errorf("no matching route") -} - -func (r *Router) NewRoute() *Route { - route := &Route{} - r.routes = append(r.routes, route) - return route -} - -type Route struct { - rules []func([]byte, *os.File) bool - handler func([]byte, *os.File) error -} - -func (route *Route) Match(payload []byte, attachment *os.File) bool { - for _, rule := range route.rules { - if !rule(payload, attachment) { - return false - } - } - return true -} - -func (route *Route) Handle(payload []byte, attachment *os.File) error { - if route.handler == nil { - return nil - } - return route.handler(payload, attachment) -} - -func (r *Route) HasAttachment() *Route { - r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { - return attachment != nil - }) - return r -} - -func (route *Route) Tee(dst Sender) *Route { - inner := route.handler - route.handler = func(payload []byte, attachment *os.File) error { - if inner == nil { - return nil - } - if attachment == nil { - return inner(payload, attachment) - } - // Setup the tee - w, err := SendRPipe(dst, payload) - if err != nil { - return err - } - teeR, teeW, err := os.Pipe() - if err != nil { - w.Close() - return err - } - go func() { - io.Copy(io.MultiWriter(teeW, w), attachment) - attachment.Close() - w.Close() - teeW.Close() - }() - return inner(payload, teeR) - } - return route -} - -func (r *Route) Filter(f func([]byte, *os.File) bool) *Route { - r.rules = append(r.rules, f) - return r -} - -func (r *Route) KeyStartsWith(k string, beginning ...string) *Route { - r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { - values := data.Message(payload).Get(k) - if values == nil { - return false - } - if len(values) < len(beginning) { - return false - } - for i, v := range beginning { - if v != values[i] { - return false - } - } - return true - }) - return r -} - -func (r *Route) KeyEquals(k string, full ...string) *Route { - r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { - values := data.Message(payload).Get(k) - if len(values) != len(full) { - return false - } - for i, v := range full { - if v != values[i] { - return false - } - } - return true - }) - return r -} - -func (r *Route) KeyIncludes(k, v string) *Route { - r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { - for _, val := range data.Message(payload).Get(k) { - if val == v { - return true - } - } - return false - }) - return r -} - -func (r *Route) NoKey(k string) *Route { - r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { - return len(data.Message(payload).Get(k)) == 0 - }) - return r -} - -func (r *Route) KeyExists(k string) *Route { - r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { - return data.Message(payload).Get(k) != nil - }) - return r -} - -func (r *Route) Passthrough(dst Sender) *Route { - r.handler = func(payload []byte, attachment *os.File) error { - return dst.Send(payload, attachment) - } - return r -} - -func (r *Route) All() *Route { - r.rules = append(r.rules, func(payload []byte, attachment *os.File) bool { - return true - }) - return r -} - -func (r *Route) Handler(h func([]byte, *os.File) error) *Route { - r.handler = h - return r -} diff --git a/router_test.go b/router_test.go deleted file mode 100644 index f7f7bf1d2d..0000000000 --- a/router_test.go +++ /dev/null @@ -1,95 +0,0 @@ -package beam - -import ( - "fmt" - "io/ioutil" - "os" - "sync" - "testing" -) - -type msg struct { - payload []byte - attachment *os.File -} - -func (m msg) String() string { - return MsgDesc(m.payload, m.attachment) -} - -type mockReceiver []msg - -func (r *mockReceiver) Send(p []byte, a *os.File) error { - (*r) = append((*r), msg{p, a}) - return nil -} - -func TestSendNoSinkNoRoute(t *testing.T) { - r := NewRouter(nil) - if err := r.Send([]byte("hello"), nil); err == nil { - t.Fatalf("error expected") - } - a, b, err := os.Pipe() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - if err := r.Send([]byte("foo bar baz"), a); err == nil { - t.Fatalf("error expected") - } -} - -func TestSendSinkNoRoute(t *testing.T) { - var sink mockReceiver - r := NewRouter(&sink) - if err := r.Send([]byte("hello"), nil); err != nil { - t.Fatal(err) - } - a, b, err := os.Pipe() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - if err := r.Send([]byte("world"), a); err != nil { - t.Fatal(err) - } - if len(sink) != 2 { - t.Fatalf("%#v\n", sink) - } - if string(sink[0].payload) != "hello" { - t.Fatalf("%#v\n", sink) - } - if sink[0].attachment != nil { - t.Fatalf("%#v\n", sink) - } - if string(sink[1].payload) != "world" { - t.Fatalf("%#v\n", sink) - } - if sink[1].attachment == nil || sink[1].attachment.Fd() > 42 || sink[1].attachment.Fd() < 0 { - t.Fatalf("%v\n", sink) - } - var tasks sync.WaitGroup - tasks.Add(2) - go func() { - defer tasks.Done() - fmt.Printf("[%d] Reading from '%d'\n", os.Getpid(), sink[1].attachment.Fd()) - data, err := ioutil.ReadAll(sink[1].attachment) - if err != nil { - t.Fatal(err) - } - if string(data) != "foo bar\n" { - t.Fatalf("%v\n", string(data)) - } - }() - go func() { - defer tasks.Done() - fmt.Printf("[%d] writing to '%d'\n", os.Getpid(), a.Fd()) - if _, err := fmt.Fprintf(b, "foo bar\n"); err != nil { - t.Fatal(err) - } - b.Close() - }() - tasks.Wait() -} diff --git a/service.go b/service.go deleted file mode 100644 index 8e117059cb..0000000000 --- a/service.go +++ /dev/null @@ -1,85 +0,0 @@ -package beam - -import ( - "net" -) - -// Listen is a convenience interface for applications to create service endpoints -// which can be easily used with existing networking code. -// -// Listen registers a new service endpoint on the beam connection `conn`, using the -// service name `name`. It returns a listener which can be used in the usual -// way. Calling Accept() on the listener will block until a new connection is available -// on the service endpoint. The endpoint is then returned as a regular net.Conn and -// can be used as a regular network connection. -// -// Note that if the underlying file descriptor received in attachment is nil or does -// not point to a connection, that message will be skipped. -// -func Listen(conn Sender, name string) (net.Listener, error) { - endpoint, err := SendConn(conn, []byte(name)) - if err != nil { - return nil, err - } - return &listener{ - name: name, - endpoint: endpoint, - }, nil -} - -func Connect(ctx *UnixConn, name string) (net.Conn, error) { - l, err := Listen(ctx, name) - if err != nil { - return nil, err - } - conn, err := l.Accept() - if err != nil { - return nil, err - } - return conn, nil -} - -type listener struct { - name string - endpoint ReceiveCloser -} - -func (l *listener) Accept() (net.Conn, error) { - for { - _, f, err := l.endpoint.Receive() - if err != nil { - return nil, err - } - if f == nil { - // Skip empty attachments - continue - } - conn, err := net.FileConn(f) - if err != nil { - // Skip beam attachments which are not connections - // (for example might be a regular file, directory etc) - continue - } - return conn, nil - } - panic("impossibru!") - return nil, nil -} - -func (l *listener) Close() error { - return l.endpoint.Close() -} - -func (l *listener) Addr() net.Addr { - return addr(l.name) -} - -type addr string - -func (a addr) Network() string { - return "beam" -} - -func (a addr) String() string { - return string(a) -} diff --git a/unix/beam.go b/unix/beam.go new file mode 100644 index 0000000000..88d3ea7c79 --- /dev/null +++ b/unix/beam.go @@ -0,0 +1,166 @@ +package beam + +import ( + "fmt" + "io" + "os" +) + +type Sender interface { + Send([]byte, *os.File) error +} + +type Receiver interface { + Receive() ([]byte, *os.File, error) +} + +type ReceiveCloser interface { + Receiver + Close() error +} + +type SendCloser interface { + Sender + Close() error +} + +type ReceiveSender interface { + Receiver + Sender +} + +const ( + R int = 1 << (32 - 1 - iota) + W +) + +func sendPipe(dst Sender, data []byte, mode int) (*os.File, error) { + r, w, err := os.Pipe() + if err != nil { + return nil, err + } + var ( + remote *os.File + local *os.File + ) + if mode == R { + remote = r + local = w + } else if mode == W { + remote = w + local = r + } + if err := dst.Send(data, remote); err != nil { + local.Close() + remote.Close() + return nil, err + } + return local, nil + +} + +// SendRPipe create a pipe and sends its *read* end attached in a beam message +// to `dst`, with `data` as the message payload. +// It returns the *write* end of the pipe, or an error. +func SendRPipe(dst Sender, data []byte) (*os.File, error) { + return sendPipe(dst, data, R) +} + +// SendWPipe create a pipe and sends its *read* end attached in a beam message +// to `dst`, with `data` as the message payload. +// It returns the *write* end of the pipe, or an error. +func SendWPipe(dst Sender, data []byte) (*os.File, error) { + return sendPipe(dst, data, W) +} + +func SendConn(dst Sender, data []byte) (conn *UnixConn, err error) { + local, remote, err := SocketPair() + if err != nil { + return nil, err + } + defer func() { + if err != nil { + local.Close() + remote.Close() + } + }() + conn, err = FileConn(local) + if err != nil { + return nil, err + } + local.Close() + if err := dst.Send(data, remote); err != nil { + return nil, err + } + return conn, nil +} + +func ReceiveConn(src Receiver) ([]byte, *UnixConn, error) { + for { + data, f, err := src.Receive() + if err != nil { + return nil, nil, err + } + if f == nil { + // Skip empty attachments + continue + } + conn, err := FileConn(f) + if err != nil { + // Skip beam attachments which are not connections + // (for example might be a regular file, directory etc) + continue + } + return data, conn, nil + } + panic("impossibru!") + return nil, nil, nil +} + +func Copy(dst Sender, src Receiver) (int, error) { + var n int + for { + payload, attachment, err := src.Receive() + if err == io.EOF { + return n, nil + } else if err != nil { + return n, err + } + if err := dst.Send(payload, attachment); err != nil { + if attachment != nil { + attachment.Close() + } + return n, err + } + n++ + } + panic("impossibru!") + return n, nil +} + +// MsgDesc returns a human readable description of a beam message, usually +// for debugging purposes. +func MsgDesc(payload []byte, attachment *os.File) string { + var filedesc string = "" + if attachment != nil { + filedesc = fmt.Sprintf("%d", attachment.Fd()) + } + return fmt.Sprintf("'%s'[%s]", payload, filedesc) +} + +type devnull struct{} + +func Devnull() ReceiveSender { + return devnull{} +} + +func (d devnull) Send(p []byte, a *os.File) error { + if a != nil { + a.Close() + } + return nil +} + +func (d devnull) Receive() ([]byte, *os.File, error) { + return nil, nil, io.EOF +} diff --git a/unix/beam_test.go b/unix/beam_test.go new file mode 100644 index 0000000000..2822861a37 --- /dev/null +++ b/unix/beam_test.go @@ -0,0 +1,39 @@ +package beam + +import ( + "github.com/dotcloud/docker/pkg/beam/data" + "testing" +) + +func TestSendConn(t *testing.T) { + a, b, err := USocketPair() + if err != nil { + t.Fatal(err) + } + defer a.Close() + defer b.Close() + go func() { + conn, err := SendConn(a, data.Empty().Set("type", "connection").Bytes()) + if err != nil { + t.Fatal(err) + } + if err := conn.Send(data.Empty().Set("foo", "bar").Bytes(), nil); err != nil { + t.Fatal(err) + } + conn.CloseWrite() + }() + payload, conn, err := ReceiveConn(b) + if err != nil { + t.Fatal(err) + } + if val := data.Message(string(payload)).Get("type"); val == nil || val[0] != "connection" { + t.Fatalf("%v != %v\n", val, "connection") + } + msg, _, err := conn.Receive() + if err != nil { + t.Fatal(err) + } + if val := data.Message(string(msg)).Get("foo"); val == nil || val[0] != "bar" { + t.Fatalf("%v != %v\n", val, "bar") + } +} diff --git a/unix.go b/unix/unix.go similarity index 100% rename from unix.go rename to unix/unix.go diff --git a/unix_test.go b/unix/unix_test.go similarity index 100% rename from unix_test.go rename to unix/unix_test.go diff --git a/inmem/stack.go b/utils/stack.go similarity index 78% rename from inmem/stack.go rename to utils/stack.go index 282b8eaf03..1309402b83 100644 --- a/inmem/stack.go +++ b/utils/stack.go @@ -1,8 +1,9 @@ -package inmem +package utils import ( "container/list" "fmt" + "github.com/docker/beam" "strings" "sync" ) @@ -23,8 +24,8 @@ func NewStackSender() *StackSender { } } -func (s *StackSender) Send(msg *Message, mode int) (r Receiver, w Sender, err error) { - completed := s.walk(func(h Sender) (ok bool) { +func (s *StackSender) Send(msg *beam.Message, mode int) (r beam.Receiver, w beam.Sender, err error) { + completed := s.walk(func(h beam.Sender) (ok bool) { r, w, err = h.Send(msg, mode) fmt.Printf("[stacksender] sending %v to %#v returned %v\n", msg, h, err) if err == nil { @@ -40,7 +41,7 @@ func (s *StackSender) Send(msg *Message, mode int) (r Receiver, w Sender, err er return nil, nil, nil } -func (s *StackSender) Add(dst Sender) *StackSender { +func (s *StackSender) Add(dst beam.Sender) *StackSender { s.l.Lock() defer s.l.Unlock() prev := &StackSender{ @@ -53,7 +54,7 @@ func (s *StackSender) Add(dst Sender) *StackSender { } func (s *StackSender) Close() error { - s.walk(func(h Sender) bool { + s.walk(func(h beam.Sender) bool { h.Close() // remove all handlers return false @@ -67,7 +68,7 @@ func (s *StackSender) _walk(f func(*list.Element) bool) bool { e = s.stack.Front() s.l.RUnlock() for e != nil { - fmt.Printf("[StackSender.Walk] %v\n", e.Value.(Sender)) + fmt.Printf("[StackSender.Walk] %v\n", e.Value.(beam.Sender)) s.l.RLock() next := e.Next() s.l.RUnlock() @@ -80,9 +81,9 @@ func (s *StackSender) _walk(f func(*list.Element) bool) bool { return true } -func (s *StackSender) walk(f func(Sender) bool) bool { +func (s *StackSender) walk(f func(beam.Sender) bool) bool { return s._walk(func(e *list.Element) bool { - ok := f(e.Value.(Sender)) + ok := f(e.Value.(beam.Sender)) if ok { // Found a valid handler. Stop walking. return false @@ -104,7 +105,7 @@ func (s *StackSender) Len() int { func (s *StackSender) String() string { var parts []string s._walk(func(e *list.Element) bool { - parts = append(parts, fmt.Sprintf("%v", e.Value.(Sender))) + parts = append(parts, fmt.Sprintf("%v", e.Value.(beam.Sender))) return true }) return fmt.Sprintf("%d:[%s]", len(parts), strings.Join(parts, "->")) diff --git a/inmem/stack_test.go b/utils/stack_test.go similarity index 75% rename from inmem/stack_test.go rename to utils/stack_test.go index 44425ce38a..19b2c5011c 100644 --- a/inmem/stack_test.go +++ b/utils/stack_test.go @@ -1,13 +1,15 @@ -package inmem +package utils import ( + "github.com/docker/beam" + "github.com/docker/beam/inmem" "github.com/dotcloud/docker/pkg/testutils" "strings" "testing" ) func TestSendStack(t *testing.T) { - r, w := Pipe() + r, w := inmem.Pipe() defer r.Close() defer w.Close() s := NewStackSender() @@ -25,7 +27,7 @@ func TestSendStack(t *testing.T) { t.Fatalf("%#v", msg) } }() - _, _, err := s.Send(&Message{"hello", []string{"wonderful", "world"}}, 0) + _, _, err := s.Send(&beam.Message{"hello", []string{"wonderful", "world"}}, 0) if err != nil { t.Fatal(err) } @@ -41,7 +43,7 @@ func TestStackLen(t *testing.T) { func TestStackAdd(t *testing.T) { s := NewStackSender() - a := Buffer{} + a := inmem.Buffer{} beforeA := s.Add(&a) // Add on an empty StackSender should return an empty StackSender if beforeA.Len() != 0 { @@ -51,7 +53,7 @@ func TestStackAdd(t *testing.T) { t.Fatalf("%#v", beforeA) } // Add a 2nd element - b := Buffer{} + b := inmem.Buffer{} beforeB := s.Add(&b) if beforeB.Len() != 1 { t.Fatalf("%#v", beforeA) @@ -59,9 +61,9 @@ func TestStackAdd(t *testing.T) { if s.Len() != 2 { t.Fatalf("%#v", beforeA) } - s.Send(&Message{"for b", nil}, 0) - beforeB.Send(&Message{"for a", nil}, 0) - beforeA.Send(&Message{"for nobody", nil}, 0) + s.Send(&beam.Message{"for b", nil}, 0) + beforeB.Send(&beam.Message{"for a", nil}, 0) + beforeA.Send(&beam.Message{"for nobody", nil}, 0) if len(a) != 1 { t.Fatalf("%#v", a) } @@ -73,15 +75,15 @@ func TestStackAdd(t *testing.T) { // Misbehaving backends must be removed func TestStackAddBad(t *testing.T) { s := NewStackSender() - buf := Buffer{} + buf := inmem.Buffer{} s.Add(&buf) - r, w := Pipe() + r, w := inmem.Pipe() s.Add(w) if s.Len() != 2 { t.Fatalf("%#v", s) } r.Close() - if _, _, err := s.Send(&Message{"for the buffer", nil}, 0); err != nil { + if _, _, err := s.Send(&beam.Message{"for the buffer", nil}, 0); err != nil { t.Fatal(err) } if s.Len() != 1 { From 78dcbe03d22a89ff1db8149fc5d565039814f303 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 18 May 2014 15:37:19 -0700 Subject: [PATCH 131/347] Start to move unix implementation to new beam interface. Nested streams not yet supported, only supporting mode 0. [Signed-off-by: Solomon Hykes ] [Signed-off-by: Paul Nasrat ] --- unix/beam.go | 2 +- unix/beam_test.go | 2 +- unix/conn.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++ unix/conn_test.go | 37 +++++++++++++++++++++++++++++++++ unix/unix.go | 2 +- unix/unix_test.go | 2 +- 6 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 unix/conn.go create mode 100644 unix/conn_test.go diff --git a/unix/beam.go b/unix/beam.go index 88d3ea7c79..9e6dc90f1b 100644 --- a/unix/beam.go +++ b/unix/beam.go @@ -1,4 +1,4 @@ -package beam +package unix import ( "fmt" diff --git a/unix/beam_test.go b/unix/beam_test.go index 2822861a37..83bd91e0d3 100644 --- a/unix/beam_test.go +++ b/unix/beam_test.go @@ -1,4 +1,4 @@ -package beam +package unix import ( "github.com/dotcloud/docker/pkg/beam/data" diff --git a/unix/conn.go b/unix/conn.go new file mode 100644 index 0000000000..9f4df82bbd --- /dev/null +++ b/unix/conn.go @@ -0,0 +1,52 @@ +package unix + +import ( + "fmt" + + "github.com/docker/beam" + "github.com/docker/beam/data" +) + +func Pair() (*Conn, *Conn, error) { + c1, c2, err := USocketPair() + if err != nil { + return nil, nil, err + } + return &Conn{c1}, &Conn{c2}, nil +} + +type Conn struct { + *UnixConn +} + +func (c *Conn) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { + if mode != 0 { + return nil, nil, fmt.Errorf("operation not supported") + } + parts := []string{msg.Name} + parts = append(parts, msg.Args...) + c.UnixConn.Send([]byte(data.EncodeList(parts)), nil) + return nil, nil, nil +} + +func (c *Conn) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, error) { + if mode != 0 { + return nil, nil, nil, fmt.Errorf("operation not supported") + } + b, _, err := c.UnixConn.Receive() + if err != nil { + return nil, nil, nil, err + } + parts, n, err := data.DecodeList(string(b)) + if err != nil { + return nil, nil, nil, err + } + if n != len(b) { + return nil, nil, nil, fmt.Errorf("garbage data %#v", b[:n]) + } + if len(parts) == 0 { + return nil, nil, nil, fmt.Errorf("malformed message") + } + msg := &beam.Message{parts[0], parts[1:]} + return msg, nil, nil, nil +} diff --git a/unix/conn_test.go b/unix/conn_test.go new file mode 100644 index 0000000000..27c031d58b --- /dev/null +++ b/unix/conn_test.go @@ -0,0 +1,37 @@ +package unix + +import ( + "github.com/docker/beam" + "github.com/dotcloud/docker/pkg/testutils" + "testing" +) + +func TestPair(t *testing.T) { + r, w, err := Pair() + if err != nil { + t.Fatal("Unexpected error") + } + defer r.Close() + defer w.Close() + testutils.Timeout(t, func() { + go func() { + msg, in, out, err := r.Receive(0) + if err != nil { + t.Fatal(err) + } + if msg.Name != "print" { + t.Fatalf("%#v", *msg) + } + if msg.Args[0] != "hello world" { + t.Fatalf("%#v", *msg) + } + if in != nil && out != nil { + t.Fatal("Unexpected return value") + } + }() + _, _, err := w.Send(&beam.Message{Name: "print", Args: []string{"hello world"}}, 0) + if err != nil { + t.Fatal(err) + } + }) +} diff --git a/unix/unix.go b/unix/unix.go index b2d0d94150..594eb21b10 100644 --- a/unix/unix.go +++ b/unix/unix.go @@ -1,4 +1,4 @@ -package beam +package unix import ( "bufio" diff --git a/unix/unix_test.go b/unix/unix_test.go index 976f089c23..7f947760b3 100644 --- a/unix/unix_test.go +++ b/unix/unix_test.go @@ -1,4 +1,4 @@ -package beam +package unix import ( "fmt" From c4c06fb39a6d0b192654855d97b5905d48d4e816 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 18 May 2014 16:42:03 -0700 Subject: [PATCH 132/347] Add support for nested streams in beam/unix [Signed-off-by: Solomon Hykes ] [Signed-off-by: Paul Nasrat ] --- unix/conn.go | 89 ++++++++++++++++++++++++++++++---- unix/conn_test.go | 119 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 197 insertions(+), 11 deletions(-) diff --git a/unix/conn.go b/unix/conn.go index 9f4df82bbd..d76832c261 100644 --- a/unix/conn.go +++ b/unix/conn.go @@ -2,6 +2,7 @@ package unix import ( "fmt" + "os" "github.com/docker/beam" "github.com/docker/beam/data" @@ -19,21 +20,67 @@ type Conn struct { *UnixConn } -func (c *Conn) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { - if mode != 0 { - return nil, nil, fmt.Errorf("operation not supported") +func sendablePair() (conn *UnixConn, remoteFd *os.File, err error) { + // Get 2 *os.File + local, remote, err := SocketPair() + if err != nil { + return nil, nil, err } + defer func() { + if err != nil { + local.Close() + remote.Close() + } + }() + // Convert 1 to *net.UnixConn + conn, err = FileConn(local) + if err != nil { + return nil, nil, err + } + local.Close() + // Return the "mismatched" pair + return conn, remote, nil +} + +// This implements beam.Sender.Close which *only closes the sender*. +// This is similar to the pattern of only closing go channels from +// the sender's side. +// If you want to close the entire connection, call Conn.UnixConn.Close. +func (c *Conn) Close() error { + return c.UnixConn.CloseWrite() +} + +func (c *Conn) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { parts := []string{msg.Name} parts = append(parts, msg.Args...) - c.UnixConn.Send([]byte(data.EncodeList(parts)), nil) - return nil, nil, nil + b := []byte(data.EncodeList(parts)) + // Setup nested streams + var ( + fd *os.File + r beam.Receiver + w beam.Sender + ) + if mode&(beam.R|beam.W) != 0 { + local, remote, err := sendablePair() + if err != nil { + return nil, nil, err + } + fd = remote + if mode&beam.R != 0 { + r = &Conn{local} + } + if mode&beam.W != 0 { + w = &Conn{local} + } else { + local.CloseWrite() + } + } + c.UnixConn.Send(b, fd) + return r, w, nil } func (c *Conn) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, error) { - if mode != 0 { - return nil, nil, nil, fmt.Errorf("operation not supported") - } - b, _, err := c.UnixConn.Receive() + b, fd, err := c.UnixConn.Receive() if err != nil { return nil, nil, nil, err } @@ -48,5 +95,27 @@ func (c *Conn) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, err return nil, nil, nil, fmt.Errorf("malformed message") } msg := &beam.Message{parts[0], parts[1:]} - return msg, nil, nil, nil + + // Setup nested streams + var ( + r beam.Receiver + w beam.Sender + ) + // Apply mode mask + if fd != nil { + subconn, err := FileConn(fd) + if err != nil { + return nil, nil, nil, err + } + fd.Close() + if mode&beam.R != 0 { + r = &Conn{subconn} + } + if mode&beam.W != 0 { + w = &Conn{subconn} + } else { + subconn.CloseWrite() + } + } + return msg, r, w, nil } diff --git a/unix/conn_test.go b/unix/conn_test.go index 27c031d58b..aa5be778e2 100644 --- a/unix/conn_test.go +++ b/unix/conn_test.go @@ -25,7 +25,7 @@ func TestPair(t *testing.T) { if msg.Args[0] != "hello world" { t.Fatalf("%#v", *msg) } - if in != nil && out != nil { + if in != nil && out != nil { t.Fatal("Unexpected return value") } }() @@ -35,3 +35,120 @@ func TestPair(t *testing.T) { } }) } + +func TestSendReply(t *testing.T) { + r, w, err := Pair() + if err != nil { + t.Fatal(err) + } + defer r.Close() + defer w.Close() + testutils.Timeout(t, func() { + // Send + go func() { + // Send a message with mode=R + in, out, err := w.Send(&beam.Message{Args: []string{"this is the request"}}, beam.R) + if err != nil { + t.Fatal(err) + } + assertMode(t, in, out, beam.R) + // Read for a reply + resp, _, _, err := in.Receive(0) + if err != nil { + t.Fatal(err) + } + if resp.Args[0] != "this is the reply" { + t.Fatalf("%#v", resp) + } + }() + // Receive a message with mode=W + msg, in, out, err := r.Receive(beam.W) + if err != nil { + t.Fatal(err) + } + if msg.Args[0] != "this is the request" { + t.Fatalf("%#v", msg) + } + assertMode(t, in, out, beam.W) + // Send a reply + _, _, err = out.Send(&beam.Message{Args: []string{"this is the reply"}}, 0) + if err != nil { + t.Fatal(err) + } + }) +} + +func TestSendNested(t *testing.T) { + r, w, err := Pair() + if err != nil { + t.Fatal(err) + } + defer r.Close() + defer w.Close() + testutils.Timeout(t, func() { + // Send + go func() { + // Send a message with mode=W + in, out, err := w.Send(&beam.Message{Args: []string{"this is the request"}}, beam.W) + if err != nil { + t.Fatal(err) + } + assertMode(t, in, out, beam.W) + // Send a nested message + _, _, err = out.Send(&beam.Message{Args: []string{"this is the nested message"}}, 0) + if err != nil { + t.Fatal(err) + } + }() + // Receive a message with mode=R + msg, in, out, err := r.Receive(beam.R) + if err != nil { + t.Fatal(err) + } + if msg.Args[0] != "this is the request" { + t.Fatalf("%#v", msg) + } + assertMode(t, in, out, beam.R) + // Read for a nested message + nested, _, _, err := in.Receive(0) + if err != nil { + t.Fatal(err) + } + if nested.Args[0] != "this is the nested message" { + t.Fatalf("%#v", nested) + } + }) +} + +// FIXME: duplicate from inmem/inmem_test.go +// assertMode verifies that the values of r and w match +// mode. +// If mode has the R bit set, r must be non-nil. Otherwise it must be nil. +// If mode has the W bit set, w must be non-nil. Otherwise it must be nil. +// +// If any of these conditions are not met, t.Fatal is called and the active +// test fails. +func assertMode(t *testing.T, r beam.Receiver, w beam.Sender, mode int) { + // If mode has the R bit set, r must be non-nil + if mode&beam.R != 0 { + if r == nil { + t.Fatalf("should be non-nil: %#v", r) + } + // Otherwise it must be nil. + } else { + if r != nil { + t.Fatalf("should be nil: %#v", r) + } + } + // If mode has the W bit set, w must be non-nil + if mode&beam.W != 0 { + if w == nil { + t.Fatalf("should be non-nil: %#v", w) + } + // Otherwise it must be nil. + } else { + if w != nil { + t.Fatalf("should be nil: %#v", w) + } + } +} From 384c50510634e7df76514a4b0f01a1b903f8d728 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 18 May 2014 16:52:37 -0700 Subject: [PATCH 133/347] Test that beam/utils.StackSender works with beam/unix [Signed-off-by: Solomon Hykes ] [Signed-off-by: Paul Nasrat ] --- utils/stack_test.go | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/utils/stack_test.go b/utils/stack_test.go index 19b2c5011c..90ed590694 100644 --- a/utils/stack_test.go +++ b/utils/stack_test.go @@ -3,12 +3,13 @@ package utils import ( "github.com/docker/beam" "github.com/docker/beam/inmem" + "github.com/docker/beam/unix" "github.com/dotcloud/docker/pkg/testutils" "strings" "testing" ) -func TestSendStack(t *testing.T) { +func TestStackWithPipe(t *testing.T) { r, w := inmem.Pipe() defer r.Close() defer w.Close() @@ -34,6 +35,35 @@ func TestSendStack(t *testing.T) { }) } +func TestStackWithPair(t *testing.T) { + r, w, err := unix.Pair() + if err != nil { + t.Fatal(err) + } + defer r.Close() + defer w.Close() + s := NewStackSender() + s.Add(w) + testutils.Timeout(t, func() { + go func() { + msg, _, _, err := r.Receive(0) + if err != nil { + t.Fatal(err) + } + if msg.Name != "hello" { + t.Fatalf("%#v", msg) + } + if strings.Join(msg.Args, " ") != "wonderful world" { + t.Fatalf("%#v", msg) + } + }() + _, _, err := s.Send(&beam.Message{"hello", []string{"wonderful", "world"}}, 0) + if err != nil { + t.Fatal(err) + } + }) +} + func TestStackLen(t *testing.T) { s := NewStackSender() if s.Len() != 0 { From b49480e01f79d906a839557a351f27c28c8f1e9e Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 19 May 2014 13:27:55 -0700 Subject: [PATCH 134/347] Placeholder for http2 transport --- http2/README.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 http2/README.md diff --git a/http2/README.md b/http2/README.md new file mode 100644 index 0000000000..d9af9bc043 --- /dev/null +++ b/http2/README.md @@ -0,0 +1,6 @@ +This package defines a remote transport for Beam services using http2/spdy and tls. + +Pointers: + + * Low-level protocol framer: http://code.google.com/p/go.net/spdy + * (incomplete) high-level server implementation: https://github.com/shykes/spdy-go From c6f0a701418a0d587ade82fe3fc65654b282f63f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 19 May 2014 13:45:33 -0700 Subject: [PATCH 135/347] Move utilities and interfaces out of `inmem` * `utils.Buffer`: a Sender which stores messages in a slice * `utils.Copy`: beam equivalent of `io.Copy` * `utlis.NopSender`: a Sender which silently discards messages * `utlis.NopReceiver`: a Receiver which always returns EOF --- beam.go | 17 ++++++++++++++++- inmem/inmem.go | 4 ++-- {inmem => utils}/buf.go | 2 +- {inmem => utils}/copy.go | 24 +++++------------------- {inmem => utils}/nop.go | 2 +- utils/stack_test.go | 6 +++--- 6 files changed, 28 insertions(+), 27 deletions(-) rename {inmem => utils}/buf.go (95%) rename {inmem => utils}/copy.go (59%) rename {inmem => utils}/nop.go (96%) diff --git a/beam.go b/beam.go index 3403a1ec95..c0f7b4be9e 100644 --- a/beam.go +++ b/beam.go @@ -1,6 +1,8 @@ package beam -import () +import ( + "errors" +) type Sender interface { Send(msg *Message, mode int) (Receiver, Sender, error) @@ -20,3 +22,16 @@ const ( R = 1 << (32 - 1 - iota) W ) + +type ReceiverFrom interface { + ReceiveFrom(Receiver) (int, error) +} + +type SenderTo interface { + SendTo(Sender) (int, error) +} + +var ( + ErrIncompatibleSender = errors.New("incompatible sender") + ErrIncompatibleReceiver = errors.New("incompatible receiver") +) diff --git a/inmem/inmem.go b/inmem/inmem.go index f401f7ac19..7ca887a016 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -178,7 +178,7 @@ func (r *PipeReceiver) SendTo(dst beam.Sender) (int, error) { // If the destination is a PipeSender, we can cheat pdst, ok := dst.(*PipeSender) if !ok { - return 0, ErrIncompatibleSender + return 0, beam.ErrIncompatibleSender } for { pmsg, err := r.p.preceive() @@ -231,7 +231,7 @@ func (w *PipeSender) ReceiveFrom(src beam.Receiver) (int, error) { // If the destination is a PipeReceiver, we can cheat psrc, ok := src.(*PipeReceiver) if !ok { - return 0, ErrIncompatibleReceiver + return 0, beam.ErrIncompatibleReceiver } for { pmsg, err := psrc.p.preceive() diff --git a/inmem/buf.go b/utils/buf.go similarity index 95% rename from inmem/buf.go rename to utils/buf.go index 244953644b..514f9c8f0a 100644 --- a/inmem/buf.go +++ b/utils/buf.go @@ -1,4 +1,4 @@ -package inmem +package utils import ( "github.com/docker/beam" diff --git a/inmem/copy.go b/utils/copy.go similarity index 59% rename from inmem/copy.go rename to utils/copy.go index 8fe3e7b14e..ad41758d46 100644 --- a/inmem/copy.go +++ b/utils/copy.go @@ -1,34 +1,20 @@ -package inmem +package utils import ( - "errors" "github.com/docker/beam" "sync" ) -type ReceiverFrom interface { - ReceiveFrom(beam.Receiver) (int, error) -} - -type SenderTo interface { - SendTo(beam.Sender) (int, error) -} - -var ( - ErrIncompatibleSender = errors.New("incompatible sender") - ErrIncompatibleReceiver = errors.New("incompatible receiver") -) - func Copy(dst beam.Sender, src beam.Receiver) (int, error) { var tasks sync.WaitGroup defer tasks.Wait() - if senderTo, ok := src.(SenderTo); ok { - if n, err := senderTo.SendTo(dst); err != ErrIncompatibleSender { + if senderTo, ok := src.(beam.SenderTo); ok { + if n, err := senderTo.SendTo(dst); err != beam.ErrIncompatibleSender { return n, err } } - if receiverFrom, ok := dst.(ReceiverFrom); ok { - if n, err := receiverFrom.ReceiveFrom(src); err != ErrIncompatibleReceiver { + if receiverFrom, ok := dst.(beam.ReceiverFrom); ok { + if n, err := receiverFrom.ReceiveFrom(src); err != beam.ErrIncompatibleReceiver { return n, err } } diff --git a/inmem/nop.go b/utils/nop.go similarity index 96% rename from inmem/nop.go rename to utils/nop.go index 2d822fe340..943f0ce1c3 100644 --- a/inmem/nop.go +++ b/utils/nop.go @@ -1,4 +1,4 @@ -package inmem +package utils import ( "github.com/docker/beam" diff --git a/utils/stack_test.go b/utils/stack_test.go index 90ed590694..dd1aa9ae9e 100644 --- a/utils/stack_test.go +++ b/utils/stack_test.go @@ -73,7 +73,7 @@ func TestStackLen(t *testing.T) { func TestStackAdd(t *testing.T) { s := NewStackSender() - a := inmem.Buffer{} + a := Buffer{} beforeA := s.Add(&a) // Add on an empty StackSender should return an empty StackSender if beforeA.Len() != 0 { @@ -83,7 +83,7 @@ func TestStackAdd(t *testing.T) { t.Fatalf("%#v", beforeA) } // Add a 2nd element - b := inmem.Buffer{} + b := Buffer{} beforeB := s.Add(&b) if beforeB.Len() != 1 { t.Fatalf("%#v", beforeA) @@ -105,7 +105,7 @@ func TestStackAdd(t *testing.T) { // Misbehaving backends must be removed func TestStackAddBad(t *testing.T) { s := NewStackSender() - buf := inmem.Buffer{} + buf := Buffer{} s.Add(&buf) r, w := inmem.Pipe() s.Add(w) From e7e31cf71bac8e434a84591fbf4836b8a00db8f0 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 19 May 2014 13:48:49 -0700 Subject: [PATCH 136/347] Hub: a hub for self-registering services using any Beam transport --- utils/hub.go | 53 +++++++++++++++++++++++++++++++++++++++++++++++ utils/hub_test.go | 49 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 utils/hub.go create mode 100644 utils/hub_test.go diff --git a/utils/hub.go b/utils/hub.go new file mode 100644 index 0000000000..ce3f09e623 --- /dev/null +++ b/utils/hub.go @@ -0,0 +1,53 @@ +package utils + +import ( + "fmt" + "github.com/docker/beam" + "github.com/docker/beam/inmem" + "sync" +) + +// Hub passes messages to dynamically registered handlers. +type Hub struct { + handlers *StackSender + tasks sync.WaitGroup +} + +func NewHub() *Hub { + return &Hub{ + handlers: NewStackSender(), + } +} + +func (hub *Hub) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { + if msg.Name == "register" { + if mode&beam.R == 0 { + return nil, nil, fmt.Errorf("register: no return channel") + } + fmt.Printf("[hub] received %v\n", msg) + hYoutr, hYoutw := inmem.Pipe() + hYinr, hYinw := inmem.Pipe() + // Register the new handler on top of the others, + // and get a reference to the previous stack of handlers. + prevHandlers := hub.handlers.Add(hYinw) + // Pass requests from the new handler to the previous chain of handlers + // hYout -> hXin + hub.tasks.Add(1) + go func() { + defer hub.tasks.Done() + Copy(prevHandlers, hYoutr) + hYoutr.Close() + }() + return hYinr, hYoutw, nil + } + fmt.Printf("sending %#v to %d handlers\n", msg, hub.handlers.Len()) + return hub.handlers.Send(msg, mode) +} + +func (hub *Hub) Wait() { + hub.tasks.Wait() +} + +func (hub *Hub) Close() error { + return hub.handlers.Close() +} diff --git a/utils/hub_test.go b/utils/hub_test.go new file mode 100644 index 0000000000..466e7c0cfc --- /dev/null +++ b/utils/hub_test.go @@ -0,0 +1,49 @@ +package utils + +import ( + "github.com/docker/beam" + "github.com/dotcloud/docker/pkg/testutils" + "testing" +) + +func TestHubSendEmpty(t *testing.T) { + hub := NewHub() + // Send to empty hub should silently drop + if r, w, err := hub.Send(&beam.Message{"hello", nil}, beam.R|beam.W); err != nil { + t.Fatal(err) + } else if r != nil { + t.Fatalf("%#v", r) + } else if w != nil { + t.Fatalf("%#v", w) + } +} + +type CountSender int + +func (s *CountSender) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { + (*s)++ + return nil, nil, nil +} + +func TestHubSendOneHandler(t *testing.T) { + hub := NewHub() + defer hub.Close() + testutils.Timeout(t, func() { + in, _, err := hub.Send(&beam.Message{"register", nil}, beam.R) + if err != nil { + t.Fatal(err) + } + go func() { + if _, _, err := hub.Send(&beam.Message{"hello", nil}, 0); err != nil { + t.Fatal(err) + } + }() + msg, _, _, err := in.Receive(0) + if err != nil { + t.Fatal(err) + } + if msg.Name != "hello" { + t.Fatalf("%#v", msg) + } + }) +} From 6fedd8c7ab142123a0287bdba8511866eabea8c1 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 19 May 2014 14:20:53 -0700 Subject: [PATCH 137/347] Construct messages with explicit fields to allow for new fields This is in preparation for the new `Attachment` field. --- unix/conn.go | 2 +- utils/hub_test.go | 6 +++--- utils/stack_test.go | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/unix/conn.go b/unix/conn.go index d76832c261..113d2caeb8 100644 --- a/unix/conn.go +++ b/unix/conn.go @@ -94,7 +94,7 @@ func (c *Conn) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, err if len(parts) == 0 { return nil, nil, nil, fmt.Errorf("malformed message") } - msg := &beam.Message{parts[0], parts[1:]} + msg := &beam.Message{Name: parts[0], Args: parts[1:]} // Setup nested streams var ( diff --git a/utils/hub_test.go b/utils/hub_test.go index 466e7c0cfc..3ecd5a0a61 100644 --- a/utils/hub_test.go +++ b/utils/hub_test.go @@ -9,7 +9,7 @@ import ( func TestHubSendEmpty(t *testing.T) { hub := NewHub() // Send to empty hub should silently drop - if r, w, err := hub.Send(&beam.Message{"hello", nil}, beam.R|beam.W); err != nil { + if r, w, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, beam.R|beam.W); err != nil { t.Fatal(err) } else if r != nil { t.Fatalf("%#v", r) @@ -29,12 +29,12 @@ func TestHubSendOneHandler(t *testing.T) { hub := NewHub() defer hub.Close() testutils.Timeout(t, func() { - in, _, err := hub.Send(&beam.Message{"register", nil}, beam.R) + in, _, err := hub.Send(&beam.Message{Name: "register", Args: nil}, beam.R) if err != nil { t.Fatal(err) } go func() { - if _, _, err := hub.Send(&beam.Message{"hello", nil}, 0); err != nil { + if _, _, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, 0); err != nil { t.Fatal(err) } }() diff --git a/utils/stack_test.go b/utils/stack_test.go index dd1aa9ae9e..679e8349f0 100644 --- a/utils/stack_test.go +++ b/utils/stack_test.go @@ -28,7 +28,7 @@ func TestStackWithPipe(t *testing.T) { t.Fatalf("%#v", msg) } }() - _, _, err := s.Send(&beam.Message{"hello", []string{"wonderful", "world"}}, 0) + _, _, err := s.Send(&beam.Message{Name: "hello", Args: []string{"wonderful", "world"}}, 0) if err != nil { t.Fatal(err) } @@ -57,7 +57,7 @@ func TestStackWithPair(t *testing.T) { t.Fatalf("%#v", msg) } }() - _, _, err := s.Send(&beam.Message{"hello", []string{"wonderful", "world"}}, 0) + _, _, err := s.Send(&beam.Message{Name: "hello", Args: []string{"wonderful", "world"}}, 0) if err != nil { t.Fatal(err) } @@ -91,9 +91,9 @@ func TestStackAdd(t *testing.T) { if s.Len() != 2 { t.Fatalf("%#v", beforeA) } - s.Send(&beam.Message{"for b", nil}, 0) - beforeB.Send(&beam.Message{"for a", nil}, 0) - beforeA.Send(&beam.Message{"for nobody", nil}, 0) + s.Send(&beam.Message{Name: "for b", Args: nil}, 0) + beforeB.Send(&beam.Message{Name: "for a", Args: nil}, 0) + beforeA.Send(&beam.Message{Name: "for nobody", Args: nil}, 0) if len(a) != 1 { t.Fatalf("%#v", a) } @@ -113,7 +113,7 @@ func TestStackAddBad(t *testing.T) { t.Fatalf("%#v", s) } r.Close() - if _, _, err := s.Send(&beam.Message{"for the buffer", nil}, 0); err != nil { + if _, _, err := s.Send(&beam.Message{Name: "for the buffer", Args: nil}, 0); err != nil { t.Fatal(err) } if s.Len() != 1 { From c9a7897773180c5c7f25d4df2da6853e103dc1df Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 19 May 2014 14:21:45 -0700 Subject: [PATCH 138/347] Beam messages can attach arbitrary file descriptors. Each transport is responsible for implementing file passing using the best available method. Current state of implementation: * inmem: full * unix: not yet implemented --- beam.go | 2 ++ inmem/inmem_test.go | 42 ++++++++++++++++++++++++++++++++++++++++++ unix/conn.go | 3 +++ 3 files changed, 47 insertions(+) diff --git a/beam.go b/beam.go index c0f7b4be9e..7fb13119cb 100644 --- a/beam.go +++ b/beam.go @@ -2,6 +2,7 @@ package beam import ( "errors" + "os" ) type Sender interface { @@ -16,6 +17,7 @@ type Receiver interface { type Message struct { Name string Args []string + Att *os.File } const ( diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index f8c7cb7b67..69611637b4 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -1,8 +1,11 @@ package inmem import ( + "fmt" "github.com/docker/beam" "github.com/dotcloud/docker/pkg/testutils" + "io/ioutil" + "os" "testing" ) @@ -141,3 +144,42 @@ func TestSendNested(t *testing.T) { } }) } + +func TestSendFile(t *testing.T) { + r, w := Pipe() + defer r.Close() + defer w.Close() + tmp, err := ioutil.TempFile("", "beam-test-") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(tmp.Name()) + fmt.Fprintf(tmp, "hello world\n") + tmp.Sync() + tmp.Seek(0, 0) + testutils.Timeout(t, func() { + go func() { + _, _, err := w.Send(&beam.Message{"file", []string{"path=" + tmp.Name()}, tmp}, 0) + if err != nil { + t.Fatal(err) + } + }() + msg, _, _, err := r.Receive(0) + if err != nil { + t.Fatal(err) + } + if msg.Name != "file" { + t.Fatalf("%#v", msg) + } + if msg.Args[0] != "path="+tmp.Name() { + t.Fatalf("%#v", msg) + } + txt, err := ioutil.ReadAll(msg.Att) + if err != nil { + t.Fatal(err) + } + if string(txt) != "hello world\n" { + t.Fatalf("%s\n", txt) + } + }) +} diff --git a/unix/conn.go b/unix/conn.go index 113d2caeb8..84b70ea130 100644 --- a/unix/conn.go +++ b/unix/conn.go @@ -51,6 +51,9 @@ func (c *Conn) Close() error { } func (c *Conn) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { + if msg.Att != nil { + return nil, nil, fmt.Errorf("file attachment not yet implemented in unix transport") + } parts := []string{msg.Name} parts = append(parts, msg.Args...) b := []byte(data.EncodeList(parts)) From db08b61616debdbe9727125130e5ee4b6d6a7c0e Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Tue, 20 May 2014 16:00:48 -0700 Subject: [PATCH 139/347] Added instructions for adding a new backend. --- README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README.md b/README.md index 62a4ce2d47..c76f200d5d 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,32 @@ docker -H unix://b.sock ps This last command should report 1 container: `myapp`. +### Creating a new backend +Create a simple my-backend.go: +``` +func MyBackend() engine.Installer { + return &myBackend{} +} + +func (f *computeEngineForward) Install(eng *engine.Engine) error { + eng.Register("mybackend", func(job *engine.Job) engine.Status { + job.Eng.Register("containers", func(job *engine.Job) engine.Status { + log.Printf("%#v", *job) + return engine.StatusOK + }) + return engine.StatusOK + }) + return nil +} +``` + +Then edit backends.go, and add your backend: +``` +... + MyBackend().Install(back) +... +``` + ## Creators **Solomon Hykes** From a9d93b21793a9aa1590e0f529af0cc27d4e90547 Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Wed, 21 May 2014 12:43:58 -0700 Subject: [PATCH 140/347] Add support for a cloud backend. --- backends/backends.go | 1 + backends/cloud.go | 219 ++++++++++++++++++++++++ backends/gce.go | 397 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 617 insertions(+) create mode 100644 backends/cloud.go create mode 100644 backends/gce.go diff --git a/backends/backends.go b/backends/backends.go index a812f5704b..ee0de0c718 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -17,5 +17,6 @@ func New() *engine.Engine { Debug().Install(back) Simulator().Install(back) Forward().Install(back) + CloudBackend().Install(back) return back } diff --git a/backends/cloud.go b/backends/cloud.go new file mode 100644 index 0000000000..c977b8d5c0 --- /dev/null +++ b/backends/cloud.go @@ -0,0 +1,219 @@ +// +// Copyright (C) 2013 The Docker Cloud authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package backends + +import ( + "encoding/json" + "fmt" + "github.com/dotcloud/docker/engine" + "io/ioutil" + "log" + "net/http" + "net/url" + "os" +) + +// The Cloud interface provides the contract that cloud providers should implement to enable +// running Docker containers in their cloud. +// TODO(bburns): Restructure this into Cloud, Instance and Tunnel interfaces +type Cloud interface { + // GetPublicIPAddress returns the stringified address (e.g "1.2.3.4") of the runtime + GetPublicIPAddress(name string, zone string) (string, error) + + // CreateInstance creates a virtual machine instance given a name and a zone. Returns the + // IP address of the instance. Waits until Docker is up and functioning on the machine + // before returning. + CreateInstance(name string, zone string) (string, error) + + // DeleteInstance deletes a virtual machine instance, given the instance name and zone. + DeleteInstance(name string, zone string) error + + // Open a secure tunnel (generally SSH) between the local host and a remote host. + OpenSecureTunnel(name string, zone string, localPort int, remotePort int) (*os.Process, error) +} + +func CloudBackend() engine.Installer { + return &cloud{} +} + +type cloud struct { +} + +type Container struct { + Id string + Image string + Tty bool +} + +// returns true, if the connection was successful, false otherwise +type Tunnel struct { + url.URL +} + +func (t Tunnel) isActive() bool { + _, err := http.Get(t.String()) + return err == nil +} + +func (s *cloud) Install(eng *engine.Engine) error { + eng.Register("cloud", func(job *engine.Job) engine.Status { + if len(job.Args) < 3 { + return job.Errorf("usage: %s ://", job.Name) + } + instance := job.Args[1] + zone := job.Args[2] + var cloud Cloud + var err error + switch job.Args[0] { + case "gce": + if len(job.Args) < 4 { + return job.Errorf("usage: %s gce ") + } + cloud, err = NewCloudGCE(job.Args[3]) + if err != nil { + job.Errorf("Unexpected error: %#v", err) + } + default: + return job.Errorf("Unknown cloud provider: %s", job.Args[0]) + } + ip, err := cloud.GetPublicIPAddress(instance, zone) + instanceRunning := len(ip) > 0 + if !instanceRunning { + log.Print("Instance doesn't exist, creating...."); + _, err = cloud.CreateInstance(instance, zone) + } + if err != nil { + job.Errorf("Unexpected error: %#v", err) + } + remotePort := 8000 + localPort := 8001 + apiVersion := "v1.10" + tunnelUrl, err := url.Parse(fmt.Sprintf("http://localhost:%d/%s/containers/json", localPort, apiVersion)) + if err != nil { + return job.Errorf("Unexpected error: %#v", err) + } + tunnel := Tunnel{*tunnelUrl} + + if !tunnel.isActive() { + fmt.Printf("Creating tunnel") + _, err = cloud.OpenSecureTunnel(instance, zone, localPort, remotePort) + if err != nil { + job.Errorf("Failed to open tunnel: %#v", err) + } + } + host := fmt.Sprintf("tcp://localhost:%d", localPort) + client, err := newClient(host, apiVersion) + if err != nil { + job.Errorf("Unexpected error: %#v", err) + } + //job.Eng.Register("inspect", func(job *engine.Job) engine.Status { + // resp, err := client.call("GET", "/containers/ + job.Eng.Register("create", func(job *engine.Job) engine.Status { + container := Container{ + Image: job.Getenv("Image"), + Tty: job.Getenv("Tty") == "true", + } + data, err := json.Marshal(container) + resp, err := client.call("POST", "/containers/create", string(data)) + if err != nil { + return job.Errorf("%s: post: %v", client.URL.String(), err) + } + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return job.Errorf("%s: read body: %#v", client.URL.String(), err) + } + var containerOut Container + err = json.Unmarshal([]byte(body), &containerOut) + _, err = job.Printf("%s\n", containerOut.Id) + if err != nil { + return job.Errorf("%s: write body: %#v", client.URL.String(), err) + } + log.Printf("%s", string(body)) + return engine.StatusOK + }) + + job.Eng.Register("start", func(job *engine.Job) engine.Status { + path := fmt.Sprintf("/containers/%s/start", job.Args[0]) + resp, err := client.call("POST", path, "{\"Binds\":[],\"ContainerIDFile\":\"\",\"LxcConf\":[],\"Privileged\":false,\"PortBindings\":{},\"Links\":null,\"PublishAllPorts\":false,\"Dns\":null,\"DnsSearch\":[],\"VolumesFrom\":[]}") + if err != nil { + return job.Errorf("%s: post: %v", client.URL.String(), err) + } + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return job.Errorf("%s: read body: %#v", client.URL.String(), err) + } + log.Printf("%s", string(body)) + return engine.StatusOK + }) + + job.Eng.Register("containers", func(job *engine.Job) engine.Status { + path := fmt.Sprintf( + "/containers/json?all=%s&size=%s&since=%s&before=%s&limit=%s", + url.QueryEscape(job.Getenv("all")), + url.QueryEscape(job.Getenv("size")), + url.QueryEscape(job.Getenv("since")), + url.QueryEscape(job.Getenv("before")), + url.QueryEscape(job.Getenv("limit")), + ) + resp, err := client.call("GET", path, "") + if err != nil { + return job.Errorf("%s: get: %v", client.URL.String(), err) + } + // FIXME: check for response error + c := engine.NewTable("Created", 0) + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return job.Errorf("%s: read body: %v", client.URL.String(), err) + } + fmt.Printf("---> '%s'\n", body) + if _, err := c.ReadListFrom(body); err != nil { + return job.Errorf("%s: readlist: %v", client.URL.String(), err) + } + c.WriteListTo(job.Stdout) + return engine.StatusOK + }) + + job.Eng.Register("container_delete", func(job *engine.Job) engine.Status { + log.Printf("%#v", job.Args) + path := "/containers/" + job.Args[0] + + resp, err := client.call("DELETE", path, "") + if err != nil { + return job.Errorf("%s: delete: %v", client.URL.String(), err) + } + log.Printf("%#v", resp) + return engine.StatusOK + }) + + job.Eng.Register("stop", func(job *engine.Job) engine.Status { + log.Printf("%#v", job.Args) + path := "/containers/" + job.Args[0] + "/stop" + + resp, err := client.call("POST", path, "") + if err != nil { + return job.Errorf("%s: delete: %v", client.URL.String(), err) + } + log.Printf("%#v", resp) + return engine.StatusOK + }) + + job.Eng.RegisterCatchall(func(job *engine.Job) engine.Status { + log.Printf("%#v %#v %#v", *job, job.Env(), job.Args) + return engine.StatusOK + }) + return engine.StatusOK + }) + return nil +} diff --git a/backends/gce.go b/backends/gce.go new file mode 100644 index 0000000000..2343708d80 --- /dev/null +++ b/backends/gce.go @@ -0,0 +1,397 @@ +// +// Copyright (C) 2013 The Docker Cloud authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package backends + +import ( + "encoding/json" + "errors" + "flag" + "fmt" + "io/ioutil" + "log" + "net/http" + "os" + "os/exec" + "os/user" + "path" + "strings" + "time" + + "code.google.com/p/goauth2/oauth" + compute "code.google.com/p/google-api-go-client/compute/v1" +) + +var ( + gceDefaultClientID = "676599397109-0te3n95co16j9mkinnq6vdhphp4nnd06.apps.googleusercontent.com" + gceDefaultClientSecret = "JnMnI5z9iH7YItv_jy_TZ1Hg" + gceDefaultScope = "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/devstorage.read_write" + + gceInstanceType = flag.String("instancetype", + "/zones/us-central1-a/machineTypes/n1-standard-1", + "The reference to the instance type to create.") + gceImage = flag.String("image", + "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/backports-debian-7-wheezy-v20131127", + "The GCE image to boot from.") + gceDiskName = flag.String("diskname", "docker-root", "Name of the instance root disk") + gceDiskSizeGb = flag.Int64("disksize", 100, "Size of the root disk in GB") +) + +const startup = `#!/bin/bash +sysctl -w net.ipv4.ip_forward=1 +wget -qO- https://get.docker.io/ | sh +until test -f /var/run/docker.pid; do sleep 1 && echo waiting; done +grep mtu /etc/default/docker || (echo 'DOCKER_OPTS="-H :8000 -mtu 1460"' >> /etc/default/docker) +service docker restart +until echo 'GET /' >/dev/tcp/localhost/8000; do sleep 1 && echo waiting; done +` + +// A Google Compute Engine implementation of the Cloud interface +type GCECloud struct { + service *compute.Service + projectId string +} + +type gcloudCredentialsCache struct { + Data []gceConfig +} + +type gceConfig struct { + Credential gceCredential + Key gceKey + ProjectId string `json:"projectId"` +} + +type gceCredential struct { + ClientId string `json:"Client_Id"` + ClientSecret string `json:"Client_Secret"` + RefreshToken string `json:"Refresh_Token"` +} + +type gceKey struct { + Scope string +} + +func gceConfAbsPath() (string, error) { + usr, err := user.Current() + if err != nil { + return "", err + } + return path.Join(usr.HomeDir, "docker-cloud.json"), nil +} + +func gcloudConfAbsPath() (string, error) { + usr, err := user.Current() + if err != nil { + return "", err + } + return path.Join(usr.HomeDir, ".config/gcloud/credentials"), nil +} + +func (conf *gceConfig) Read() (err error) { + if err = conf.readDockerCloud(); err == nil { + return + } + if err = conf.readGCloud(); err == nil { + return + } + return +} + +func (conf *gceConfig) readDockerCloud() (err error) { + confPath, err := gceConfAbsPath() + if err != nil { + return + } + var data []byte + if data, err = ioutil.ReadFile(confPath); err != nil { + return + } + err = json.Unmarshal(data, conf) + return +} + +func (conf *gceConfig) readGCloud() error { + confPath, err := gcloudConfAbsPath() + if err != nil { + return err + } + f, err := os.Open(confPath) + if err != nil { + return fmt.Errorf("unable to load gcloud credentials: %q", confPath) + } + defer f.Close() + cache := &gcloudCredentialsCache{} + if err := json.NewDecoder(f).Decode(cache); err != nil { + return err + } + if len(cache.Data) == 0 { + return fmt.Errorf("no gcloud credentials cached in: %q", confPath) + } + *conf = cache.Data[0] + return nil +} + +func (conf *gceConfig) Write() error { + confPath, err := gceConfAbsPath() + if err != nil { + return err + } + var data []byte + if data, err = json.Marshal(conf); err != nil { + return err + } + return ioutil.WriteFile(confPath, data, 0644) +} + +// Create a GCE Cloud instance. 'clientId', 'clientSecret' and 'scope' are used to ask for a client +// credential. 'code' is optional and is only used if a cached credential can not be found. +// 'projectId' is the Google Cloud project name. +func NewCloudGCE(projectId string) (cloud *GCECloud, err error) { + conf := &gceConfig{} + if err = conf.Read(); err != nil || conf.Credential.RefreshToken == "" { + return nil, errors.New("Did you authorize the client? Run `docker-cloud auth`.") + } + if projectId == "" { + if conf.ProjectId == "" { + return nil, errors.New("Did you define project id? Run `docker-cloud start -project=`") + } + projectId = conf.ProjectId + } + + oAuth2Conf := newGCEOAuth2Config(conf.Credential.ClientId, conf.Credential.ClientSecret, conf.Key.Scope) + transport := &oauth.Transport{ + Config: oAuth2Conf, + // Make the actual request using the cached token to authenticate. + // ("Here's the token, let me in!") + Token: &oauth.Token{RefreshToken: conf.Credential.RefreshToken}, + Transport: http.DefaultTransport, + } + + // TODO(jbd): Does it need to refresh the token, transport will auto do it if + // it fails with an auth error on the first request. + err = transport.Refresh() + if err != nil { + return + } + svc, err := compute.New(transport.Client()) + if err != nil { + return + } + return &GCECloud{ + service: svc, + projectId: projectId, + }, nil +} + +// Implementation of the Cloud interface +func (cloud GCECloud) GetPublicIPAddress(name string, zone string) (string, error) { + instance, err := cloud.service.Instances.Get(cloud.projectId, zone, name).Do() + if err != nil { + return "", err + } + // Found the instance, we're good. + return instance.NetworkInterfaces[0].AccessConfigs[0].NatIP, nil +} + +// Get or create a new root disk. +func (cloud GCECloud) getOrCreateRootDisk(name, zone string) (string, error) { + log.Printf("try getting root disk: %q", name) + disk, err := cloud.service.Disks.Get(cloud.projectId, zone, *gceDiskName).Do() + if err == nil { + log.Printf("found %q", disk.SelfLink) + return disk.SelfLink, nil + } + log.Printf("not found, creating root disk: %q", name) + op, err := cloud.service.Disks.Insert(cloud.projectId, zone, &compute.Disk{ + Name: *gceDiskName, + }).SourceImage(*gceImage).Do() + if err != nil { + log.Printf("disk insert api call failed: %v", err) + return "", err + } + err = cloud.waitForOp(op, zone) + if err != nil { + log.Printf("disk insert operation failed: %v", err) + return "", err + } + log.Printf("root disk created: %q", op.TargetLink) + return op.TargetLink, nil +} + +// Implementation of the Cloud interface +func (cloud GCECloud) CreateInstance(name string, zone string) (string, error) { + rootDisk, err := cloud.getOrCreateRootDisk(*gceDiskName, zone) + if err != nil { + log.Printf("failed to create root disk: %v", err) + return "", err + } + prefix := "https://www.googleapis.com/compute/v1/projects/" + cloud.projectId + instance := &compute.Instance{ + Name: name, + Description: "Docker on GCE", + MachineType: prefix + *gceInstanceType, + Disks: []*compute.AttachedDisk{ + { + Boot: true, + Type: "PERSISTENT", + Mode: "READ_WRITE", + Source: rootDisk, + }, + }, + NetworkInterfaces: []*compute.NetworkInterface{ + { + AccessConfigs: []*compute.AccessConfig{ + &compute.AccessConfig{Type: "ONE_TO_ONE_NAT"}, + }, + Network: prefix + "/global/networks/default", + }, + }, + Metadata: &compute.Metadata{ + Items: []*compute.MetadataItems{ + { + Key: "startup-script", + Value: startup, + }, + }, + }, + } + log.Printf("starting instance: %q", name) + op, err := cloud.service.Instances.Insert(cloud.projectId, zone, instance).Do() + if err != nil { + log.Printf("instance insert api call failed: %v", err) + return "", err + } + err = cloud.waitForOp(op, zone) + if err != nil { + log.Printf("instance insert operation failed: %v", err) + return "", err + } + + // Wait for docker to come up + // TODO(bburns) : Use metadata instead to signal that docker is up and read. + time.Sleep(60 * time.Second) + + log.Printf("instance started: %q", instance.NetworkInterfaces[0].AccessConfigs[0].NatIP) + return instance.NetworkInterfaces[0].AccessConfigs[0].NatIP, err +} + +// Implementation of the Cloud interface +func (cloud GCECloud) DeleteInstance(name string, zone string) error { + op, err := cloud.service.Instances.Delete(cloud.projectId, zone, name).Do() + if err != nil { + log.Printf("Got compute.Operation, err: %#v, %v", op, err) + return err + } + return cloud.waitForOp(op, zone) +} + +func (cloud GCECloud) OpenSecureTunnel(name, zone string, localPort, remotePort int) (*os.Process, error) { + return cloud.openSecureTunnel(name, zone, "localhost", localPort, remotePort) +} + +func (cloud GCECloud) openSecureTunnel(name, zone, hostname string, localPort, remotePort int) (*os.Process, error) { + ip, err := cloud.GetPublicIPAddress(name, zone) + if err != nil { + return nil, err + } + username := os.Getenv("USER") + homedir := os.Getenv("HOME") + + sshCommand := fmt.Sprintf("-o LogLevel=quiet -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i %s/.ssh/google_compute_engine -A -p 22 %s@%s -f -N -L %d:%s:%d", homedir, username, ip, localPort, hostname, remotePort) + log.Printf("Running %s", sshCommand) + cmd := exec.Command("ssh", strings.Split(sshCommand, " ")...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + cmd.Run() + return cmd.Process, nil +} + +// Wait for a compute operation to finish. +// op The operation +// zone The zone for the operation +// Returns an error if one occurs, or nil +func (cloud GCECloud) waitForOp(op *compute.Operation, zone string) error { + op, err := cloud.service.ZoneOperations.Get(cloud.projectId, zone, op.Name).Do() + for op.Status != "DONE" { + time.Sleep(5 * time.Second) + op, err = cloud.service.ZoneOperations.Get(cloud.projectId, zone, op.Name).Do() + if err != nil { + log.Printf("Got compute.Operation, err: %#v, %v", op, err) + } + if op.Status != "PENDING" && op.Status != "RUNNING" && op.Status != "DONE" { + log.Printf("Error waiting for operation: %s\n", op) + return errors.New(fmt.Sprintf("Bad operation: %s", op)) + } + } + return err +} + +func ConfigureGCE(clientId, clientSecret, scope, projectId string) error { + // Set up a configuration. + config := newGCEOAuth2Config(clientId, clientSecret, scope) + + // Set up a Transport using the config. + // transport := &oauth.Transport{Config: config, + // Transport: &LogTransport{http.DefaultTransport},} + transport := &oauth.Transport{Config: config, Transport: http.DefaultTransport} + // ("Please ask the user if I can access this resource.") + url := config.AuthCodeURL("") + fmt.Println("Visit this URL to get a code, and enter the code.\n") + fmt.Println(url) + + fmt.Print("Enter code: ") + var code string + fmt.Scanln(&code) + // Exchange the authorization code for an access token. + // ("Here's the code you gave the user, now give me a token!") + // TODO(bburns) : Put up a separate web end point to do the oauth dance, so a user can just go to a web page. + token, err := transport.Exchange(code) + if err != nil { + return err + } + // (The Exchange method will automatically cache the token.) + conf := &gceConfig{ + Credential: gceCredential{ + ClientId: clientId, + ClientSecret: clientSecret, + RefreshToken: token.RefreshToken, + }, + Key: gceKey{Scope: scope}, + ProjectId: projectId, + } + return conf.Write() +} + +func newGCEOAuth2Config(clientId, clientSecret, scope string) *oauth.Config { + if clientId == "" { + clientId = gceDefaultClientID + } + if clientSecret == "" { + clientSecret = gceDefaultClientSecret + } + if scope == "" { + scope = gceDefaultScope + } + return &oauth.Config{ + ClientId: clientId, + ClientSecret: clientSecret, + Scope: scope, + RedirectURL: "oob", + AuthURL: "https://accounts.google.com/o/oauth2/auth", + TokenURL: "https://accounts.google.com/o/oauth2/token", + AccessType: "offline", + } +} From b2b2d16d0487e1707f27a1deb892e7c1419fb3e7 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Wed, 21 May 2014 18:17:30 +0100 Subject: [PATCH 141/347] Rename swarmd import to libswarm --- swarmd/Godeps/Godeps.json | 2 +- swarmd/swarmd.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 1d37b02042..b7aa5eaf13 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -1,5 +1,5 @@ { - "ImportPath": "github.com/docker/swarmd/swarmd", + "ImportPath": "github.com/docker/libswarm/swarmd", "GoVersion": "go1.1.1", "Deps": [ { diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 17ccbd9442..4f3ccdf684 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -3,7 +3,7 @@ package main import ( "fmt" "github.com/codegangsta/cli" - "github.com/docker/swarmd/backends" + "github.com/docker/libswarm/backends" "github.com/dotcloud/docker/api/server" "github.com/dotcloud/docker/engine" "github.com/flynn/go-shlex" From 1b8e9f69e236b35475d066ac54779984a219c600 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 23 May 2014 15:36:23 +0100 Subject: [PATCH 142/347] Add cloud backend dependencies to Godeps.json From https://github.com/docker/libswarm/pull/7 Docker-DCO-1.1-Signed-off-by: Ben Firshman (github: bfirsh) --- swarmd/Godeps/Godeps.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index b7aa5eaf13..473369db3c 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -7,6 +7,21 @@ "Comment": "null-61", "Rev": "64ee4bbc10fac4f8d1d56451beac771d7cae54fe" }, + { + "ImportPath": "code.google.com/p/goauth2/oauth", + "Comment": "weekly-44", + "Rev": "696c088491246273e92442aa66b5281e5bb34faa" + }, + { + "ImportPath": "code.google.com/p/google-api-go-client/compute/v1", + "Comment": "release-84", + "Rev": "2ba9f0995cf0215c20ebd6de43a14d70af30fea6" + }, + { + "ImportPath": "code.google.com/p/google-api-go-client/googleapi", + "Comment": "release-84", + "Rev": "2ba9f0995cf0215c20ebd6de43a14d70af30fea6" + }, { "ImportPath": "github.com/codegangsta/cli", "Comment": "1.0.0-43-g3fa24ca", From fd9c7c9cfad0e2db5eb2234cb0a1ba9840b06c76 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 23 May 2014 16:28:12 +0100 Subject: [PATCH 143/347] Go fmt the cloud backend Docker-DCO-1.1-Signed-off-by: Ben Firshman (github: bfirsh) --- backends/cloud.go | 48 +++++++++++++++++++++++------------------------ backends/gce.go | 2 +- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/backends/cloud.go b/backends/cloud.go index c977b8d5c0..642cf3ee0c 100644 --- a/backends/cloud.go +++ b/backends/cloud.go @@ -52,19 +52,19 @@ type cloud struct { } type Container struct { - Id string + Id string Image string - Tty bool + Tty bool } // returns true, if the connection was successful, false otherwise type Tunnel struct { - url.URL + url.URL } func (t Tunnel) isActive() bool { - _, err := http.Get(t.String()) - return err == nil + _, err := http.Get(t.String()) + return err == nil } func (s *cloud) Install(eng *engine.Engine) error { @@ -91,7 +91,7 @@ func (s *cloud) Install(eng *engine.Engine) error { ip, err := cloud.GetPublicIPAddress(instance, zone) instanceRunning := len(ip) > 0 if !instanceRunning { - log.Print("Instance doesn't exist, creating...."); + log.Print("Instance doesn't exist, creating....") _, err = cloud.CreateInstance(instance, zone) } if err != nil { @@ -101,17 +101,17 @@ func (s *cloud) Install(eng *engine.Engine) error { localPort := 8001 apiVersion := "v1.10" tunnelUrl, err := url.Parse(fmt.Sprintf("http://localhost:%d/%s/containers/json", localPort, apiVersion)) - if err != nil { - return job.Errorf("Unexpected error: %#v", err) - } - tunnel := Tunnel{*tunnelUrl} + if err != nil { + return job.Errorf("Unexpected error: %#v", err) + } + tunnel := Tunnel{*tunnelUrl} - if !tunnel.isActive() { - fmt.Printf("Creating tunnel") - _, err = cloud.OpenSecureTunnel(instance, zone, localPort, remotePort) - if err != nil { - job.Errorf("Failed to open tunnel: %#v", err) - } + if !tunnel.isActive() { + fmt.Printf("Creating tunnel") + _, err = cloud.OpenSecureTunnel(instance, zone, localPort, remotePort) + if err != nil { + job.Errorf("Failed to open tunnel: %#v", err) + } } host := fmt.Sprintf("tcp://localhost:%d", localPort) client, err := newClient(host, apiVersion) @@ -123,7 +123,7 @@ func (s *cloud) Install(eng *engine.Engine) error { job.Eng.Register("create", func(job *engine.Job) engine.Status { container := Container{ Image: job.Getenv("Image"), - Tty: job.Getenv("Tty") == "true", + Tty: job.Getenv("Tty") == "true", } data, err := json.Marshal(container) resp, err := client.call("POST", "/containers/create", string(data)) @@ -143,7 +143,7 @@ func (s *cloud) Install(eng *engine.Engine) error { log.Printf("%s", string(body)) return engine.StatusOK }) - + job.Eng.Register("start", func(job *engine.Job) engine.Status { path := fmt.Sprintf("/containers/%s/start", job.Args[0]) resp, err := client.call("POST", path, "{\"Binds\":[],\"ContainerIDFile\":\"\",\"LxcConf\":[],\"Privileged\":false,\"PortBindings\":{},\"Links\":null,\"PublishAllPorts\":false,\"Dns\":null,\"DnsSearch\":[],\"VolumesFrom\":[]}") @@ -184,11 +184,11 @@ func (s *cloud) Install(eng *engine.Engine) error { c.WriteListTo(job.Stdout) return engine.StatusOK }) - + job.Eng.Register("container_delete", func(job *engine.Job) engine.Status { log.Printf("%#v", job.Args) - path := "/containers/" + job.Args[0] - + path := "/containers/" + job.Args[0] + resp, err := client.call("DELETE", path, "") if err != nil { return job.Errorf("%s: delete: %v", client.URL.String(), err) @@ -196,11 +196,11 @@ func (s *cloud) Install(eng *engine.Engine) error { log.Printf("%#v", resp) return engine.StatusOK }) - + job.Eng.Register("stop", func(job *engine.Job) engine.Status { log.Printf("%#v", job.Args) path := "/containers/" + job.Args[0] + "/stop" - + resp, err := client.call("POST", path, "") if err != nil { return job.Errorf("%s: delete: %v", client.URL.String(), err) @@ -208,7 +208,7 @@ func (s *cloud) Install(eng *engine.Engine) error { log.Printf("%#v", resp) return engine.StatusOK }) - + job.Eng.RegisterCatchall(func(job *engine.Job) engine.Status { log.Printf("%#v %#v %#v", *job, job.Env(), job.Args) return engine.StatusOK diff --git a/backends/gce.go b/backends/gce.go index 2343708d80..b1dc4de2c9 100644 --- a/backends/gce.go +++ b/backends/gce.go @@ -28,7 +28,7 @@ import ( "path" "strings" "time" - + "code.google.com/p/goauth2/oauth" compute "code.google.com/p/google-api-go-client/compute/v1" ) From 458e6a71f12e2d6b46377beedefbe15fa85f121d Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 23 May 2014 18:36:04 +0100 Subject: [PATCH 144/347] Add some missing return statements Docker-DCO-1.1-Signed-off-by: Ben Firshman (github: bfirsh) --- backends/cloud.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backends/cloud.go b/backends/cloud.go index 642cf3ee0c..4802cfcc30 100644 --- a/backends/cloud.go +++ b/backends/cloud.go @@ -83,7 +83,7 @@ func (s *cloud) Install(eng *engine.Engine) error { } cloud, err = NewCloudGCE(job.Args[3]) if err != nil { - job.Errorf("Unexpected error: %#v", err) + return job.Errorf("Unexpected error: %#v", err) } default: return job.Errorf("Unknown cloud provider: %s", job.Args[0]) @@ -95,7 +95,7 @@ func (s *cloud) Install(eng *engine.Engine) error { _, err = cloud.CreateInstance(instance, zone) } if err != nil { - job.Errorf("Unexpected error: %#v", err) + return job.Errorf("Unexpected error: %#v", err) } remotePort := 8000 localPort := 8001 @@ -110,13 +110,13 @@ func (s *cloud) Install(eng *engine.Engine) error { fmt.Printf("Creating tunnel") _, err = cloud.OpenSecureTunnel(instance, zone, localPort, remotePort) if err != nil { - job.Errorf("Failed to open tunnel: %#v", err) + return job.Errorf("Failed to open tunnel: %#v", err) } } host := fmt.Sprintf("tcp://localhost:%d", localPort) client, err := newClient(host, apiVersion) if err != nil { - job.Errorf("Unexpected error: %#v", err) + return job.Errorf("Unexpected error: %#v", err) } //job.Eng.Register("inspect", func(job *engine.Job) engine.Status { // resp, err := client.call("GET", "/containers/ From e4beab1432de23c2aac2f33a9983d40acd6f60ce Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 12 May 2014 04:58:28 +0000 Subject: [PATCH 145/347] Hub: convenience API to register jobs * `Hub.Register` * `Hub.RegisterTask` * `Hub.RegisterName` --- utils/hub.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/utils/hub.go b/utils/hub.go index ce3f09e623..b0dba9a5ef 100644 --- a/utils/hub.go +++ b/utils/hub.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/docker/beam" "github.com/docker/beam/inmem" + "io" "sync" ) @@ -44,6 +45,80 @@ func (hub *Hub) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, e return hub.handlers.Send(msg, mode) } +func (hub *Hub) Register(dst beam.Sender) error { + in, _, err := hub.Send(&beam.Message{Name: "register"}, beam.R) + if err != nil { + return err + } + go Copy(dst, in) + return nil +} + +func (hub *Hub) RegisterTask(h func(beam.Receiver, beam.Sender) error) error { + in, out, err := hub.Send(&beam.Message{Name: "register"}, beam.R|beam.W) + if err != nil { + return err + } + go func() { + h(in, out) + out.Close() + }() + return nil +} + +type Handler func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (pass bool, err error) + +func (hub *Hub) RegisterName(name string, h Handler) error { + return hub.RegisterTask(func(in beam.Receiver, out beam.Sender) error { + var tasks sync.WaitGroup + copyTask := func(dst beam.Sender, src beam.Receiver) { + tasks.Add(1) + go func() { + defer tasks.Done() + if dst == nil { + return + } + defer dst.Close() + if src == nil { + return + } + Copy(dst, src) + }() + } + for { + msg, msgin, msgout, err := in.Receive(beam.R | beam.W) + if err == io.EOF { + break + } + if err != nil { + return err + } + var pass = true + if msg.Name == name || name == "" { + pass, err = h(msg, msgin, msgout, out) + if err != nil { + if _, _, err := msgout.Send(&beam.Message{Name: "error", Args: []string{err.Error()}}, 0); err != nil { + return err + } + } + } + if pass { + nextin, nextout, err := out.Send(msg, beam.R|beam.W) + if err != nil { + return err + } + copyTask(nextout, msgin) + copyTask(msgout, nextin) + } else { + if msgout != nil { + msgout.Close() + } + } + } + return nil + }) +} + func (hub *Hub) Wait() { hub.tasks.Wait() } From 2b547caa75d0c2e7d976d19d3ccb0ee20f4666cf Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 12 May 2014 05:00:09 +0000 Subject: [PATCH 146/347] Fix Hub and StackSender to honor modes StackSender.Send and Hub.Send now return a valid Sender and Receiver when the corresponding flags are set in `mode`. Signed-off-by: Solomon Hykes --- utils/hub_test.go | 12 +++++++++--- utils/stack.go | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/utils/hub_test.go b/utils/hub_test.go index 3ecd5a0a61..c9b40a4817 100644 --- a/utils/hub_test.go +++ b/utils/hub_test.go @@ -9,11 +9,17 @@ import ( func TestHubSendEmpty(t *testing.T) { hub := NewHub() // Send to empty hub should silently drop - if r, w, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, beam.R|beam.W); err != nil { + r, w, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, beam.R|beam.W) + // Send must not return an error + if err != nil { t.Fatal(err) - } else if r != nil { + } + // We set beam.R, so a valid receiver must be returned + if r == nil { t.Fatalf("%#v", r) - } else if w != nil { + } + // We set beam.W, so a valid receiver must be returned + if w == nil { t.Fatalf("%#v", w) } } diff --git a/utils/stack.go b/utils/stack.go index 1309402b83..a8b1f6baea 100644 --- a/utils/stack.go +++ b/utils/stack.go @@ -38,7 +38,7 @@ func (s *StackSender) Send(msg *beam.Message, mode int) (r beam.Receiver, w beam return r, w, err } // Silently drop messages if no valid backend is available. - return nil, nil, nil + return NopSender{}.Send(msg, mode) } func (s *StackSender) Add(dst beam.Sender) *StackSender { From c5b8976409a4db82c1ccf22cf19d126b71949f61 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 31 May 2014 00:33:53 +0000 Subject: [PATCH 147/347] [WIP] switch to Beam --- backends/backends.go | 70 +++++++++++++--- swarmd/swarmd.go | 196 ++++++++++++++++++++++++++++++++----------- 2 files changed, 208 insertions(+), 58 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index ee0de0c718..e363b10167 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -1,7 +1,12 @@ package backends import ( - "github.com/dotcloud/docker/engine" + "fmt" + "github.com/docker/beam" + beamutils "github.com/docker/beam/utils" + "strings" + "sync" + "time" ) // New returns a new engine, with all backends @@ -10,13 +15,58 @@ import ( // engine, named after the desired backend. // // Example: `New().Job("debug").Run()` -func New() *engine.Engine { - back := engine.New() - back.Logging = false - // Register all backends here - Debug().Install(back) - Simulator().Install(back) - Forward().Install(back) - CloudBackend().Install(back) - return back +func New() beam.Sender { + backends := beamutils.NewHub() + backends.RegisterName("debug", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { + backends.RegisterTask(func(r beam.Receiver, w beam.Sender) error { + for { + msg, msgr, msgw, err := r.Receive(beam.R | beam.W) + if err != nil { + return err + } + fmt.Printf("[DEBUG] %s %s\n", msg.Name, strings.Join(msg.Args, " ")) + // FIXME: goroutine? + splice(w, msg, msgr, msgw) + } + }) + return true, nil + }) + backends.RegisterName("fakeclient", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { + backends.RegisterTask(func(r beam.Receiver, w beam.Sender) error { + for { + time.Sleep(1 * time.Second) + _, _, err := w.Send(&beam.Message{Name: "log", Args: []string{"fake client reporting for duty"}}, 0) + if err != nil { + return err + } + containersR, _, err := w.Send(&beam.Message{Name: "containers"}, beam.R) + if err != nil { + return err + } + go beamutils.Copy(beamutils.NopSender{}, containersR) + } + }) + return true, nil + }) + return backends +} + +func splice(dst beam.Sender, msg *beam.Message, r beam.Receiver, w beam.Sender) error { + dstR, dstW, err := dst.Send(msg, beam.R|beam.W) + if err != nil { + return err + } + defer dstW.Close() + var tasks sync.WaitGroup + _copy := func(dst beam.Sender, src beam.Receiver) { + tasks.Add(1) + go func() { + defer tasks.Done() + beamutils.Copy(dst, src) + }() + } + _copy(dstW, r) + _copy(w, dstR) + tasks.Wait() + return nil } diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index eda7f68828..90596d78d3 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -1,15 +1,20 @@ package main import ( + "bufio" "fmt" "github.com/codegangsta/cli" + "github.com/docker/beam" + "github.com/docker/beam/inmem" + beamutils "github.com/docker/beam/utils" "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" "io" "os" "strings" + "sync" ) func main() { @@ -24,63 +29,158 @@ func main() { 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) { if len(c.Args()) == 0 { Fatalf("Usage: %s ://
[://
]...\n", c.App.Name) } - // Load backend - // FIXME: allow for multiple backends to be loaded. - // This could be done by instantiating 1 engine per backend, - // installing each backend in its respective engine, - // then registering a Catchall on the frontent engine which - // multiplexes across all backends (with routing / filtering - // logic along the way). - back := backends.New() - bName, bArgs, err := parseCmd(c.String("backend")) + hub := beamutils.NewHub() + backends := backends.New() + // Load backends + for _, cmd := range c.Args() { + bName, bArgs, err := parseCmd(cmd) + if err != nil { + Fatalf("%v", err) + } + fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) + _, backend, err := backends.Send(&beam.Message{Name: bName, Args: bArgs}, beam.W) + if err != nil { + Fatalf("%s: %v\n", bName, err) + } + if err := hub.Register(backend); err != nil { + Fatalf("%v", err) + } + } + in, _, err := hub.Send(&beam.Message{Name: "start"}, beam.R) if err != nil { Fatalf("%v", err) } - fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) - if err := back.Job(bName, bArgs...).Run(); err != nil { - Fatalf("%s: %v\n", bName, err) - } - - // Register the API entrypoint - // (we register it as `argv[0]` so we can print usage messages straight from the job - // stderr. - front := engine.New() - front.Logging = false - // FIXME: server should expose an engine.Installer - front.Register(c.App.Name, server.ServeApi) - front.Register("acceptconnections", server.AcceptConnections) - front.RegisterCatchall(func(job *engine.Job) engine.Status { - fw := back.Job(job.Name, job.Args...) - fw.Stdout.Add(job.Stdout) - fw.Stderr.Add(job.Stderr) - fw.Stdin.Add(job.Stdin) - for key, val := range job.Env().Map() { - fw.Setenv(key, val) + for { + msg, _, _, err := in.Receive(0) + if err != nil { + Fatalf("%v", err) } - fw.Run() - return engine.Status(fw.StatusCode()) - }) - - // Call the API entrypoint - go func() { - serve := front.Job(c.App.Name, c.Args()...) - serve.Stdout.Add(os.Stdout) - serve.Stderr.Add(os.Stderr) - if err := serve.Run(); err != nil { - Fatalf("serveapi: %v", err) - } - }() - // Notify that we're ready to receive connections - if err := front.Job("acceptconnections").Run(); err != nil { - Fatalf("acceptconnections: %v", err) + fmt.Printf("--> %s %s\n", msg.Name, strings.Join(msg.Args, " ")) } - // Inifinite loop - <-make(chan struct{}) } func parseCmd(txt string) (string, []string, error) { From 5b54be92cabd4bf622dceacab5b0e150f0cafbb8 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 27 May 2014 12:14:42 +0000 Subject: [PATCH 148/347] Update beam version to fix a crash when calling unknown backend. Signed-off-by: Solomon Hykes --- swarmd/Godeps/Godeps.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 905d163b4a..5ba22a7e70 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -32,6 +32,10 @@ "Comment": "0-4-g2fb21b3", "Rev": "2fb21b34171f083d46d66195caa7ec121d941ec5" }, + { + "ImportPath": "github.com/docker/beam", + "Rev": "36b9bf7958abaeaa574ecef0cb8b782cc7f3a58e" + }, { "ImportPath": "github.com/dotcloud/docker/api", "Comment": "v0.11.1-466-g77ae37a", From 5052519b1addd53ffe3e96fa0d65248ff00ba163 Mon Sep 17 00:00:00 2001 From: fermayo Date: Tue, 27 May 2014 15:30:20 -0400 Subject: [PATCH 149/347] register acceptconnections before calling it --- swarmd/swarmd.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 4f3ccdf684..eda7f68828 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -10,7 +10,6 @@ import ( "io" "os" "strings" - "time" ) func main() { @@ -54,6 +53,7 @@ func cmdDaemon(c *cli.Context) { front.Logging = false // FIXME: server should expose an engine.Installer front.Register(c.App.Name, server.ServeApi) + front.Register("acceptconnections", server.AcceptConnections) front.RegisterCatchall(func(job *engine.Job) engine.Status { fw := back.Job(job.Name, job.Args...) fw.Stdout.Add(job.Stdout) @@ -75,9 +75,6 @@ func cmdDaemon(c *cli.Context) { Fatalf("serveapi: %v", err) } }() - // There is a race condition in engine.ServeApi. - // As a workaround we sleep to give it time to register 'acceptconnections'. - time.Sleep(1 * time.Second) // Notify that we're ready to receive connections if err := front.Job("acceptconnections").Run(); err != nil { Fatalf("acceptconnections: %v", err) From e738a671a89139cb1c276f779899de23637b9eb3 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Wed, 28 May 2014 12:00:29 +0100 Subject: [PATCH 150/347] Update godeps to use Docker master Will be easier for folks to get started if they don't have to add shykes/docker. Docker-DCO-1.1-Signed-off-by: Ben Firshman (github: bfirsh) --- swarmd/Godeps/Godeps.json | 85 +++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 473369db3c..905d163b4a 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -1,6 +1,6 @@ { "ImportPath": "github.com/docker/libswarm/swarmd", - "GoVersion": "go1.1.1", + "GoVersion": "go1.2", "Deps": [ { "ImportPath": "code.google.com/p/go.net/websocket", @@ -34,98 +34,103 @@ }, { "ImportPath": "github.com/dotcloud/docker/api", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/dockerversion", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/engine", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/nat", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/opts", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/beam", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { - "ImportPath": "github.com/dotcloud/docker/pkg/cgroups", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "ImportPath": "github.com/dotcloud/docker/pkg/libcontainer/cgroups", + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/listenbuffer", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/mflag", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/mount", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/sysinfo", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/systemd", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/term", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/units", + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/user", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/pkg/version", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/registry", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/runconfig", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/utils", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/dotcloud/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar", - "Comment": "help-99-g4b65512", - "Rev": "4b65512961657ab2ea347e7239268b7c803ac6ad" + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, { "ImportPath": "github.com/flynn/go-shlex", From ecfe57234ff350a51b2f3c596baab258f535419c Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Wed, 28 May 2014 11:23:47 -0700 Subject: [PATCH 151/347] backend/gce: switch to container-vm image --- backends/gce.go | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/backends/gce.go b/backends/gce.go index b1dc4de2c9..7c36c5fb25 100644 --- a/backends/gce.go +++ b/backends/gce.go @@ -42,21 +42,12 @@ var ( "/zones/us-central1-a/machineTypes/n1-standard-1", "The reference to the instance type to create.") gceImage = flag.String("image", - "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/backports-debian-7-wheezy-v20131127", + "https://www.googleapis.com/compute/v1/projects/google-containers/global/images/container-vm-v20140522", "The GCE image to boot from.") gceDiskName = flag.String("diskname", "docker-root", "Name of the instance root disk") gceDiskSizeGb = flag.Int64("disksize", 100, "Size of the root disk in GB") ) -const startup = `#!/bin/bash -sysctl -w net.ipv4.ip_forward=1 -wget -qO- https://get.docker.io/ | sh -until test -f /var/run/docker.pid; do sleep 1 && echo waiting; done -grep mtu /etc/default/docker || (echo 'DOCKER_OPTS="-H :8000 -mtu 1460"' >> /etc/default/docker) -service docker restart -until echo 'GET /' >/dev/tcp/localhost/8000; do sleep 1 && echo waiting; done -` - // A Google Compute Engine implementation of the Cloud interface type GCECloud struct { service *compute.Service @@ -258,14 +249,6 @@ func (cloud GCECloud) CreateInstance(name string, zone string) (string, error) { Network: prefix + "/global/networks/default", }, }, - Metadata: &compute.Metadata{ - Items: []*compute.MetadataItems{ - { - Key: "startup-script", - Value: startup, - }, - }, - }, } log.Printf("starting instance: %q", name) op, err := cloud.service.Instances.Insert(cloud.projectId, zone, instance).Do() From c90ce90113e06b2a13c0658b2d720dc2c42df8ba Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 1 Jun 2014 22:34:03 +0000 Subject: [PATCH 152/347] WIP more beam conversion --- backends/backends.go | 40 +++++++++++++++++++++++++++------------- swarmd/swarmd.go | 30 ++++++++++++++++++++++++++---- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index e363b10167..e7bbfbf392 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -1,6 +1,7 @@ package backends import ( + "io" "fmt" "github.com/docker/beam" beamutils "github.com/docker/beam/utils" @@ -17,18 +18,31 @@ import ( // Example: `New().Job("debug").Run()` func New() beam.Sender { backends := beamutils.NewHub() - backends.RegisterName("debug", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { - backends.RegisterTask(func(r beam.Receiver, w beam.Sender) error { - for { - msg, msgr, msgw, err := r.Receive(beam.R | beam.W) - if err != nil { - return err - } - fmt.Printf("[DEBUG] %s %s\n", msg.Name, strings.Join(msg.Args, " ")) - // FIXME: goroutine? - splice(w, msg, msgr, msgw) + backends.RegisterName("cd", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { + return false, fmt.Errorf("no such backend: %s\n", strings.Join(msg.Args, " ")) + }) + backends.RegisterName("cd", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { + if len(msg.Args) > 0 && msg.Args[0] == "debug" { + debugr, debugw, err := out.Send(&beam.Message{Name: "register"}, beam.R|beam.W) + if err != nil { + return false, err } - }) + go func() { + for { + msg, msgr, msgw, err := debugr.Receive(beam.R | beam.W) + if err == io.EOF { + return + } + if err != nil { + return + } + fmt.Printf("[DEBUG] %s %s\n", msg.Name, strings.Join(msg.Args, " ")) + // FIXME: goroutine? + Splice(debugw, msg, msgr, msgw) + } + }() + return false, nil + } return true, nil }) backends.RegisterName("fakeclient", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { @@ -43,7 +57,7 @@ func New() beam.Sender { if err != nil { return err } - go beamutils.Copy(beamutils.NopSender{}, containersR) + go beamutils.Copy(beam.NopSender{}, containersR) } }) return true, nil @@ -51,7 +65,7 @@ func New() beam.Sender { return backends } -func splice(dst beam.Sender, msg *beam.Message, r beam.Receiver, w beam.Sender) error { +func Splice(dst beam.Sender, msg *beam.Message, r beam.Receiver, w beam.Sender) error { dstR, dstW, err := dst.Send(msg, beam.R|beam.W) if err != nil { return err diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 90596d78d3..9369142ea1 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -154,7 +154,7 @@ func cmdDaemon(c *cli.Context) { } hub := beamutils.NewHub() - backends := backends.New() + back := backends.New() // Load backends for _, cmd := range c.Args() { bName, bArgs, err := parseCmd(cmd) @@ -162,12 +162,31 @@ func cmdDaemon(c *cli.Context) { Fatalf("%v", err) } fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) - _, backend, err := backends.Send(&beam.Message{Name: bName, Args: bArgs}, beam.W) + backendr, _, err := back.Send(&beam.Message{Name: "cd", Args: []string{bName}}, beam.R) if err != nil { Fatalf("%s: %v\n", bName, err) } - if err := hub.Register(backend); err != nil { - Fatalf("%v", err) + // backendr will return either 'error' or 'register'. + for { + m, mr, mw, err := backendr.Receive(beam.R|beam.W) + if err != nil { + Fatalf("%v", err) + } + if m.Name == "error" { + Fatalf("%v", strings.Join(m.Args, " ")) + } + if m.Name == "register" { + // FIXME: adapt the beam interface to allow the caller to + // (optionally) pass their own Sender/Receiver? + // Would make proxying/splicing easier. + hubr, hubw, err := hub.Send(m, beam.R|beam.W) + if err != nil { + Fatalf("%v", err) + } + fmt.Printf("successfully registered\n") + go beamutils.Copy(hubw, mr) + go beamutils.Copy(mw, hubr) + } } } in, _, err := hub.Send(&beam.Message{Name: "start"}, beam.R) @@ -176,6 +195,9 @@ func cmdDaemon(c *cli.Context) { } for { msg, _, _, err := in.Receive(0) + if err == io.EOF { + break + } if err != nil { Fatalf("%v", err) } From 396253a4eeb838e128b9cd925d909b9581af9736 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 1 Jun 2014 23:30:33 +0000 Subject: [PATCH 153/347] StackSender.Send never returns a nil value Fix StackSender.Send to always honor the `W` and `R` modes, by: 1) returning a valid Sender and Receiver when the respective flags are set, and 2) returning a value which doesn't need to be Closed, when they are not. This also moves `NopSender` and `NopReceiver` out of `utils`, to prevent a circular dependency. Signed-off-by: Solomon Hykes --- inmem/inmem.go | 9 +++++++-- inmem/inmem_test.go | 26 ++++++++++++++++---------- nop.go | 21 +++++++++++++++++++++ utils/buf.go | 2 +- utils/nop.go | 22 ---------------------- utils/stack.go | 2 +- 6 files changed, 46 insertions(+), 36 deletions(-) create mode 100644 nop.go delete mode 100644 utils/nop.go diff --git a/inmem/inmem.go b/inmem/inmem.go index 7ca887a016..0c7a7e90fe 100644 --- a/inmem/inmem.go +++ b/inmem/inmem.go @@ -161,8 +161,13 @@ func (r *PipeReceiver) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sen return nil, nil, nil, err } var ( - in beam.Receiver - out beam.Sender + // Always return NopReceiver/NopSender instead of nil values, + // because: + // - if they were requested in the mode, they can safely be used + // - if they were not requested, they can safely be ignored (ie no leak if they + // aren't closed) + in beam.Receiver = beam.NopReceiver{} + out beam.Sender = beam.NopSender{} ) if pin != nil { in = pin diff --git a/inmem/inmem_test.go b/inmem/inmem_test.go index 69611637b4..4703ddb053 100644 --- a/inmem/inmem_test.go +++ b/inmem/inmem_test.go @@ -9,6 +9,20 @@ import ( "testing" ) +func TestReceiveW(t *testing.T) { + r, w := Pipe() + go func() { + w.Send(&beam.Message{Name: "hello"}, 0) + }() + _, _, ww, err := r.Receive(beam.W) + if err != nil { + t.Fatal(err) + } + if _, _, err := ww.Send(&beam.Message{Name: "this better not crash"}, 0); err != nil { + t.Fatal(err) + } +} + func TestSimpleSend(t *testing.T) { r, w := Pipe() defer r.Close() @@ -37,8 +51,8 @@ func TestSimpleSend(t *testing.T) { // assertMode verifies that the values of r and w match // mode. -// If mode has the R bit set, r must be non-nil. Otherwise it must be nil. -// If mode has the W bit set, w must be non-nil. Otherwise it must be nil. +// If mode has the R bit set, r must be non-nil. +// If mode has the W bit set, w must be non-nil. // // If any of these conditions are not met, t.Fatal is called and the active // test fails. @@ -49,10 +63,6 @@ func assertMode(t *testing.T, r beam.Receiver, w beam.Sender, mode int) { t.Fatalf("should be non-nil: %#v", r) } // Otherwise it must be nil. - } else { - if r != nil { - t.Fatalf("should be nil: %#v", r) - } } // If mode has the W bit set, w must be non-nil if mode&beam.W != 0 { @@ -60,10 +70,6 @@ func assertMode(t *testing.T, r beam.Receiver, w beam.Sender, mode int) { t.Fatalf("should be non-nil: %#v", w) } // Otherwise it must be nil. - } else { - if w != nil { - t.Fatalf("should be nil: %#v", w) - } } } diff --git a/nop.go b/nop.go new file mode 100644 index 0000000000..061e5f41a5 --- /dev/null +++ b/nop.go @@ -0,0 +1,21 @@ +package beam + +import ( + "io" +) + +type NopSender struct{} + +func (s NopSender) Send(msg *Message, mode int) (Receiver, Sender, error) { + return NopReceiver{}, NopSender{}, nil +} + +func (s NopSender) Close() error { + return nil +} + +type NopReceiver struct{} + +func (r NopReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { + return nil, nil, nil, io.EOF +} diff --git a/utils/buf.go b/utils/buf.go index 514f9c8f0a..d4164a0220 100644 --- a/utils/buf.go +++ b/utils/buf.go @@ -8,7 +8,7 @@ type Buffer []*beam.Message func (buf *Buffer) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { (*buf) = append(*buf, msg) - return NopReceiver{}, NopSender{}, nil + return beam.NopReceiver{}, beam.NopSender{}, nil } func (buf *Buffer) Close() error { diff --git a/utils/nop.go b/utils/nop.go deleted file mode 100644 index 943f0ce1c3..0000000000 --- a/utils/nop.go +++ /dev/null @@ -1,22 +0,0 @@ -package utils - -import ( - "github.com/docker/beam" - "io" -) - -type NopSender struct{} - -func (s NopSender) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { - return NopReceiver{}, NopSender{}, nil -} - -func (s NopSender) Close() error { - return nil -} - -type NopReceiver struct{} - -func (r NopReceiver) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, error) { - return nil, nil, nil, io.EOF -} diff --git a/utils/stack.go b/utils/stack.go index a8b1f6baea..11fd678288 100644 --- a/utils/stack.go +++ b/utils/stack.go @@ -38,7 +38,7 @@ func (s *StackSender) Send(msg *beam.Message, mode int) (r beam.Receiver, w beam return r, w, err } // Silently drop messages if no valid backend is available. - return NopSender{}.Send(msg, mode) + return beam.NopSender{}.Send(msg, mode) } func (s *StackSender) Add(dst beam.Sender) *StackSender { From 8a8e36e364a5d68ec463e8a8eabd88d3a74edce7 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 00:04:08 +0000 Subject: [PATCH 154/347] Change imports to use embedded beam version Signed-off-by: Solomon Hykes --- backends/backends.go | 4 ++-- beam/inmem/inmem.go | 2 +- beam/inmem/inmem_test.go | 2 +- beam/unix/conn.go | 4 ++-- beam/unix/conn_test.go | 2 +- beam/utils/buf.go | 2 +- beam/utils/copy.go | 2 +- beam/utils/hub.go | 4 ++-- beam/utils/hub_test.go | 2 +- beam/utils/stack.go | 2 +- beam/utils/stack_test.go | 6 +++--- swarmd/swarmd.go | 6 +++--- 12 files changed, 19 insertions(+), 19 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index e7bbfbf392..1272bca5c1 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -3,8 +3,8 @@ package backends import ( "io" "fmt" - "github.com/docker/beam" - beamutils "github.com/docker/beam/utils" + "github.com/docker/libswarm/beam" + beamutils "github.com/docker/libswarm/beam/utils" "strings" "sync" "time" diff --git a/beam/inmem/inmem.go b/beam/inmem/inmem.go index 0c7a7e90fe..b9c4ffccb4 100644 --- a/beam/inmem/inmem.go +++ b/beam/inmem/inmem.go @@ -1,7 +1,7 @@ package inmem import ( - "github.com/docker/beam" + "github.com/docker/libswarm/beam" "io" "sync" ) diff --git a/beam/inmem/inmem_test.go b/beam/inmem/inmem_test.go index 4703ddb053..62691eec8d 100644 --- a/beam/inmem/inmem_test.go +++ b/beam/inmem/inmem_test.go @@ -2,7 +2,7 @@ package inmem import ( "fmt" - "github.com/docker/beam" + "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/pkg/testutils" "io/ioutil" "os" diff --git a/beam/unix/conn.go b/beam/unix/conn.go index 84b70ea130..a06f3f5eb0 100644 --- a/beam/unix/conn.go +++ b/beam/unix/conn.go @@ -4,8 +4,8 @@ import ( "fmt" "os" - "github.com/docker/beam" - "github.com/docker/beam/data" + "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/beam/data" ) func Pair() (*Conn, *Conn, error) { diff --git a/beam/unix/conn_test.go b/beam/unix/conn_test.go index aa5be778e2..074201cf79 100644 --- a/beam/unix/conn_test.go +++ b/beam/unix/conn_test.go @@ -1,7 +1,7 @@ package unix import ( - "github.com/docker/beam" + "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/pkg/testutils" "testing" ) diff --git a/beam/utils/buf.go b/beam/utils/buf.go index d4164a0220..674d5f2b20 100644 --- a/beam/utils/buf.go +++ b/beam/utils/buf.go @@ -1,7 +1,7 @@ package utils import ( - "github.com/docker/beam" + "github.com/docker/libswarm/beam" ) type Buffer []*beam.Message diff --git a/beam/utils/copy.go b/beam/utils/copy.go index ad41758d46..0d9543b043 100644 --- a/beam/utils/copy.go +++ b/beam/utils/copy.go @@ -1,7 +1,7 @@ package utils import ( - "github.com/docker/beam" + "github.com/docker/libswarm/beam" "sync" ) diff --git a/beam/utils/hub.go b/beam/utils/hub.go index b0dba9a5ef..0d574a0042 100644 --- a/beam/utils/hub.go +++ b/beam/utils/hub.go @@ -2,8 +2,8 @@ package utils import ( "fmt" - "github.com/docker/beam" - "github.com/docker/beam/inmem" + "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/beam/inmem" "io" "sync" ) diff --git a/beam/utils/hub_test.go b/beam/utils/hub_test.go index c9b40a4817..2ec1f98011 100644 --- a/beam/utils/hub_test.go +++ b/beam/utils/hub_test.go @@ -1,7 +1,7 @@ package utils import ( - "github.com/docker/beam" + "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/pkg/testutils" "testing" ) diff --git a/beam/utils/stack.go b/beam/utils/stack.go index 11fd678288..0748d6a041 100644 --- a/beam/utils/stack.go +++ b/beam/utils/stack.go @@ -3,7 +3,7 @@ package utils import ( "container/list" "fmt" - "github.com/docker/beam" + "github.com/docker/libswarm/beam" "strings" "sync" ) diff --git a/beam/utils/stack_test.go b/beam/utils/stack_test.go index 679e8349f0..fdc35201b0 100644 --- a/beam/utils/stack_test.go +++ b/beam/utils/stack_test.go @@ -1,9 +1,9 @@ package utils import ( - "github.com/docker/beam" - "github.com/docker/beam/inmem" - "github.com/docker/beam/unix" + "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/beam/inmem" + "github.com/docker/libswarm/beam/unix" "github.com/dotcloud/docker/pkg/testutils" "strings" "testing" diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 9369142ea1..5a2c4156dc 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -4,9 +4,9 @@ import ( "bufio" "fmt" "github.com/codegangsta/cli" - "github.com/docker/beam" - "github.com/docker/beam/inmem" - beamutils "github.com/docker/beam/utils" + "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/beam/inmem" + beamutils "github.com/docker/libswarm/beam/utils" "github.com/docker/libswarm/backends" _ "github.com/dotcloud/docker/api/server" "github.com/dotcloud/docker/engine" From 4963740da34fc258aa8ae2876e6cdee0706e757f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 00:05:38 +0000 Subject: [PATCH 155/347] Remove separate beam repo from Godeps Signed-off-by: Solomon Hykes --- swarmd/Godeps/Godeps.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 5ba22a7e70..905d163b4a 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -32,10 +32,6 @@ "Comment": "0-4-g2fb21b3", "Rev": "2fb21b34171f083d46d66195caa7ec121d941ec5" }, - { - "ImportPath": "github.com/docker/beam", - "Rev": "36b9bf7958abaeaa574ecef0cb8b782cc7f3a58e" - }, { "ImportPath": "github.com/dotcloud/docker/api", "Comment": "v0.11.1-466-g77ae37a", From 38d8b4eb035cd2856c1eafc8495ed0cf3b74e626 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 00:22:51 +0000 Subject: [PATCH 156/347] Splice: close destination when copy is over --- backends/backends.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backends/backends.go b/backends/backends.go index 1272bca5c1..1c7d76ecc5 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -77,6 +77,7 @@ func Splice(dst beam.Sender, msg *beam.Message, r beam.Receiver, w beam.Sender) go func() { defer tasks.Done() beamutils.Copy(dst, src) + dst.Close() }() } _copy(dstW, r) From cb275dab0b5a04b01d8fdeb3edfa4be908cd236f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 00:23:42 +0000 Subject: [PATCH 157/347] swarmd: don't trigger an error on EOF Signed-off-by: Solomon Hykes --- swarmd/swarmd.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 5a2c4156dc..e385fe7204 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -169,6 +169,9 @@ func cmdDaemon(c *cli.Context) { // backendr will return either 'error' or 'register'. for { m, mr, mw, err := backendr.Receive(beam.R|beam.W) + if err == io.EOF { + break + } if err != nil { Fatalf("%v", err) } From 5dd211ad0be9c5ad82e13ac611dc249790cb1074 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 00:24:25 +0000 Subject: [PATCH 158/347] swarmd: more informative error messages Signed-off-by: Solomon Hykes --- swarmd/swarmd.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index e385fe7204..45d8f3f1a3 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -173,10 +173,10 @@ func cmdDaemon(c *cli.Context) { break } if err != nil { - Fatalf("%v", err) + Fatalf("error reading from backend: %v", err) } if m.Name == "error" { - Fatalf("%v", strings.Join(m.Args, " ")) + Fatalf("backend sent error: %v", strings.Join(m.Args, " ")) } if m.Name == "register" { // FIXME: adapt the beam interface to allow the caller to @@ -184,7 +184,7 @@ func cmdDaemon(c *cli.Context) { // Would make proxying/splicing easier. hubr, hubw, err := hub.Send(m, beam.R|beam.W) if err != nil { - Fatalf("%v", err) + Fatalf("error binding backend to hub: %v", err) } fmt.Printf("successfully registered\n") go beamutils.Copy(hubw, mr) From 4f3c557bcf5c6d8be46aa288a6ebe4ae5fce6a47 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 00:50:20 +0000 Subject: [PATCH 159/347] fakeclient backend: switch to object model navigation --- backends/backends.go | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index 1c7d76ecc5..32e19f036f 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -45,21 +45,30 @@ func New() beam.Sender { } return true, nil }) - backends.RegisterName("fakeclient", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { - backends.RegisterTask(func(r beam.Receiver, w beam.Sender) error { - for { - time.Sleep(1 * time.Second) - _, _, err := w.Send(&beam.Message{Name: "log", Args: []string{"fake client reporting for duty"}}, 0) - if err != nil { - return err - } - containersR, _, err := w.Send(&beam.Message{Name: "containers"}, beam.R) - if err != nil { - return err - } - go beamutils.Copy(beam.NopSender{}, containersR) + backends.RegisterName("cd", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { + if len(msg.Args) > 0 && msg.Args[0] == "fakeclient" { + _, fakew, err := out.Send(&beam.Message{Name: "register"}, beam.R|beam.W) + if err != nil { + return false, err } - }) + go func() { + defer fmt.Printf("[FAKECLIENT] done\n") + for { + time.Sleep(1 * time.Second) + fmt.Printf("[FAKECLIENT] heartbeat\n") + _, _, err := fakew.Send(&beam.Message{Name: "log", Args: []string{"fake client reporting for duty"}}, 0) + if err != nil { + return + } + containersR, _, err := fakew.Send(&beam.Message{Name: "containers"}, beam.R) + if err != nil { + return + } + go beamutils.Copy(beam.NopSender{}, containersR) + } + }() + return false, nil + } return true, nil }) return backends From a1dcc4acebe72e016b473e6a6a2f9939e08b75c2 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 00:50:35 +0000 Subject: [PATCH 160/347] swarmd: default LOG handler Signed-off-by: Solomon Hykes --- swarmd/swarmd.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 45d8f3f1a3..5c8d2be118 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -3,6 +3,7 @@ package main import ( "bufio" "fmt" + "log" "github.com/codegangsta/cli" "github.com/docker/libswarm/beam" "github.com/docker/libswarm/beam/inmem" @@ -154,6 +155,11 @@ func cmdDaemon(c *cli.Context) { } hub := beamutils.NewHub() + hub.RegisterName("log", func(msg *beam.Message, in beam.Receiver, out, next beam.Sender) (bool, error) { + log.Printf("%s\n", strings.Join(msg.Args, " ")) + // Pass through to other logging hooks + return true, nil + }) back := backends.New() // Load backends for _, cmd := range c.Args() { From f556ed19f705f42987f967480352605593979f91 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 06:09:44 +0000 Subject: [PATCH 161/347] swarmd: remove unused engine/beam adapters. Signed-off-by: Solomon Hykes --- beam/{utils => }/copy.go | 0 swarmd/swarmd.go | 123 --------------------------------------- 2 files changed, 123 deletions(-) rename beam/{utils => }/copy.go (100%) diff --git a/beam/utils/copy.go b/beam/copy.go similarity index 100% rename from beam/utils/copy.go rename to beam/copy.go diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 5c8d2be118..3bda8e79dd 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -1,21 +1,17 @@ package main import ( - "bufio" "fmt" "log" "github.com/codegangsta/cli" "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/inmem" beamutils "github.com/docker/libswarm/beam/utils" "github.com/docker/libswarm/backends" _ "github.com/dotcloud/docker/api/server" - "github.com/dotcloud/docker/engine" "github.com/flynn/go-shlex" "io" "os" "strings" - "sync" ) func main() { @@ -30,125 +26,6 @@ func main() { 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) { if len(c.Args()) == 0 { Fatalf("Usage: %s ://
[://
]...\n", c.App.Name) From f86db62eae59a66ffebc010337cf164335d8c47e Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 06:12:41 +0000 Subject: [PATCH 162/347] beam/inmem: remove unused structure field --- beam/inmem/inmem.go | 1 - 1 file changed, 1 deletion(-) diff --git a/beam/inmem/inmem.go b/beam/inmem/inmem.go index b9c4ffccb4..7b96473206 100644 --- a/beam/inmem/inmem.go +++ b/beam/inmem/inmem.go @@ -16,7 +16,6 @@ func Pipe() (*PipeReceiver, *PipeSender) { } type pipe struct { - ch chan *pipeMessage rwait sync.Cond wwait sync.Cond l sync.Mutex From 3265abfa2eb049e8373789cb592239fcc24ff837 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 06:15:28 +0000 Subject: [PATCH 163/347] Simplify the beam API * Callback pattern that is easier to grok: each message has an optional nested return channel, instead of 2 nested streams * Return channel is in the Message structure: less arguments and return values to pass around * Caller can request a pipe as return channel, or pass its own. This makes proxying and advanced plumbing operations much easier. Signed-off-by: Solomon Hykes --- backends/backends.go | 54 ++++++------------ beam/beam.go | 26 +++++++-- beam/beam_test.go | 17 +++--- beam/copy.go | 40 +++---------- beam/inmem/inmem.go | 110 +++++++++-------------------------- beam/inmem/inmem_test.go | 120 ++++++++++++--------------------------- beam/nop.go | 8 +-- beam/unix/conn.go | 79 +++++++++++++++----------- beam/utils/buf.go | 4 +- beam/utils/hub.go | 97 ++++++++++++++----------------- beam/utils/hub_test.go | 33 ++++++----- beam/utils/stack.go | 8 +-- beam/utils/stack_test.go | 16 +++--- swarmd/swarmd.go | 33 ++++------- 14 files changed, 259 insertions(+), 386 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index 32e19f036f..50f3150859 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -1,12 +1,11 @@ package backends import ( - "io" "fmt" "github.com/docker/libswarm/beam" beamutils "github.com/docker/libswarm/beam/utils" + "io" "strings" - "sync" "time" ) @@ -18,18 +17,19 @@ import ( // Example: `New().Job("debug").Run()` func New() beam.Sender { backends := beamutils.NewHub() - backends.RegisterName("cd", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { + backends.RegisterName("cd", func(msg *beam.Message, out beam.Sender) (bool, error) { return false, fmt.Errorf("no such backend: %s\n", strings.Join(msg.Args, " ")) }) - backends.RegisterName("cd", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { + backends.RegisterName("cd", func(msg *beam.Message, out beam.Sender) (bool, error) { if len(msg.Args) > 0 && msg.Args[0] == "debug" { - debugr, debugw, err := out.Send(&beam.Message{Name: "register"}, beam.R|beam.W) + debug, err := out.Send(&beam.Message{Name: "register", Ret: beam.RetPipe}) if err != nil { return false, err } + // Spawn the debug object go func() { for { - msg, msgr, msgw, err := debugr.Receive(beam.R | beam.W) + msg, err := debug.Receive(beam.Ret) if err == io.EOF { return } @@ -37,34 +37,35 @@ func New() beam.Sender { return } fmt.Printf("[DEBUG] %s %s\n", msg.Name, strings.Join(msg.Args, " ")) - // FIXME: goroutine? - Splice(debugw, msg, msgr, msgw) + if _, err := out.Send(msg); err != nil { + return + } } }() return false, nil } return true, nil }) - backends.RegisterName("cd", func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (bool, error) { + backends.RegisterName("cd", func(msg *beam.Message, out beam.Sender) (bool, error) { if len(msg.Args) > 0 && msg.Args[0] == "fakeclient" { - _, fakew, err := out.Send(&beam.Message{Name: "register"}, beam.R|beam.W) + _, err := out.Send(&beam.Message{Name: "register", Ret: beam.NopSender{}}) if err != nil { return false, err } + // Spawm the fakeclient task + // FIXME: only do this after started? go func() { - defer fmt.Printf("[FAKECLIENT] done\n") + out.Send(&beam.Message{Name: "log", Args: []string{"fake client starting"}}) + defer out.Send(&beam.Message{Name: "log", Args: []string{"fake client terminating"}}) for { time.Sleep(1 * time.Second) - fmt.Printf("[FAKECLIENT] heartbeat\n") - _, _, err := fakew.Send(&beam.Message{Name: "log", Args: []string{"fake client reporting for duty"}}, 0) + _, err := out.Send(&beam.Message{Name: "log", Args: []string{"fake client reporting for duty"}}) if err != nil { return } - containersR, _, err := fakew.Send(&beam.Message{Name: "containers"}, beam.R) - if err != nil { + if _, err := out.Send(&beam.Message{Name: "children", Ret: beam.NopSender{}}); err != nil { return } - go beamutils.Copy(beam.NopSender{}, containersR) } }() return false, nil @@ -73,24 +74,3 @@ func New() beam.Sender { }) return backends } - -func Splice(dst beam.Sender, msg *beam.Message, r beam.Receiver, w beam.Sender) error { - dstR, dstW, err := dst.Send(msg, beam.R|beam.W) - if err != nil { - return err - } - defer dstW.Close() - var tasks sync.WaitGroup - _copy := func(dst beam.Sender, src beam.Receiver) { - tasks.Add(1) - go func() { - defer tasks.Done() - beamutils.Copy(dst, src) - dst.Close() - }() - } - _copy(dstW, r) - _copy(w, dstR) - tasks.Wait() - return nil -} diff --git a/beam/beam.go b/beam/beam.go index 7fb13119cb..d1ae87a0ed 100644 --- a/beam/beam.go +++ b/beam/beam.go @@ -6,23 +6,24 @@ import ( ) type Sender interface { - Send(msg *Message, mode int) (Receiver, Sender, error) + Send(msg *Message) (Receiver, error) Close() error } type Receiver interface { - Receive(mode int) (*Message, Receiver, Sender, error) + Receive(mode int) (*Message, error) } type Message struct { Name string Args []string Att *os.File + Ret Sender } const ( - R = 1 << (32 - 1 - iota) - W + Ret int = 1 << iota + // FIXME: use an `Att` flag to auto-close attachments by default ) type ReceiverFrom interface { @@ -37,3 +38,20 @@ var ( ErrIncompatibleSender = errors.New("incompatible sender") ErrIncompatibleReceiver = errors.New("incompatible receiver") ) + +// RetPipe is a special value for `Message.Ret`. +// When a Message is sent with `Ret=SendPipe`, the transport must +// substitute it with the writing end of a new pipe, and return the +// other end as a return value. +type retPipe struct { + NopSender +} + +var RetPipe = retPipe{} + +func (r retPipe) Equals(val Sender) bool { + if rval, ok := val.(retPipe); ok { + return rval == r + } + return false +} diff --git a/beam/beam_test.go b/beam/beam_test.go index ee0096b189..6d504f2ce7 100644 --- a/beam/beam_test.go +++ b/beam/beam_test.go @@ -5,13 +5,16 @@ import ( ) func TestModes(t *testing.T) { - if R == W { - t.Fatalf("0") - } - if R == 0 { - t.Fatalf("0") - } - if W == 0 { + if Ret == 0 { t.Fatalf("0") } } + +func TestRetPipe(t *testing.T) { + var ( + shouldBeEqual = RetPipe + ) + if RetPipe != shouldBeEqual { + t.Fatalf("%#v should equal %#v", RetPipe, shouldBeEqual) + } +} diff --git a/beam/copy.go b/beam/copy.go index 0d9543b043..dd979dc55f 100644 --- a/beam/copy.go +++ b/beam/copy.go @@ -1,57 +1,33 @@ -package utils +package beam import ( - "github.com/docker/libswarm/beam" "sync" ) -func Copy(dst beam.Sender, src beam.Receiver) (int, error) { +func Copy(dst Sender, src Receiver) (int, error) { var tasks sync.WaitGroup defer tasks.Wait() - if senderTo, ok := src.(beam.SenderTo); ok { - if n, err := senderTo.SendTo(dst); err != beam.ErrIncompatibleSender { + if senderTo, ok := src.(SenderTo); ok { + if n, err := senderTo.SendTo(dst); err != ErrIncompatibleSender { return n, err } } - if receiverFrom, ok := dst.(beam.ReceiverFrom); ok { - if n, err := receiverFrom.ReceiveFrom(src); err != beam.ErrIncompatibleReceiver { + if receiverFrom, ok := dst.(ReceiverFrom); ok { + if n, err := receiverFrom.ReceiveFrom(src); err != ErrIncompatibleReceiver { return n, err } } var ( n int ) - copyAndClose := func(dst beam.Sender, src beam.Receiver) { - if dst == nil { - return - } - defer dst.Close() - if src == nil { - return - } - Copy(dst, src) - } for { - msg, rcvR, rcvW, err := src.Receive(beam.R | beam.W) + msg, err := src.Receive(Ret) if err != nil { return n, err } - sndR, sndW, err := dst.Send(msg, beam.R|beam.W) - if err != nil { - if rcvW != nil { - rcvW.Close() - } + if _, err := dst.Send(msg); err != nil { return n, err } - tasks.Add(2) - go func() { - copyAndClose(rcvW, sndR) - tasks.Done() - }() - go func() { - copyAndClose(sndW, rcvR) - tasks.Done() - }() n++ } return n, nil diff --git a/beam/inmem/inmem.go b/beam/inmem/inmem.go index 7b96473206..6d6a2a9d53 100644 --- a/beam/inmem/inmem.go +++ b/beam/inmem/inmem.go @@ -23,16 +23,10 @@ type pipe struct { wl sync.Mutex rerr error // if reader closed, error to give writes werr error // if writer closed, error to give reads - pmsg *pipeMessage + msg *beam.Message } -type pipeMessage struct { - msg *beam.Message - out *PipeSender - in *PipeReceiver -} - -func (p *pipe) psend(pmsg *pipeMessage) error { +func (p *pipe) psend(msg *beam.Message) error { var err error // One writer at a time. p.wl.Lock() @@ -40,10 +34,10 @@ func (p *pipe) psend(pmsg *pipeMessage) error { p.l.Lock() defer p.l.Unlock() - p.pmsg = pmsg + p.msg = msg p.rwait.Signal() for { - if p.pmsg == nil { + if p.msg == nil { break } if p.rerr != nil { @@ -55,38 +49,20 @@ func (p *pipe) psend(pmsg *pipeMessage) error { } p.wwait.Wait() } - p.pmsg = nil // in case of rerr or werr + p.msg = nil // in case of rerr or werr return err } -func (p *pipe) send(msg *beam.Message, mode int) (in *PipeReceiver, out *PipeSender, err error) { - // Prepare the message - pmsg := &pipeMessage{msg: msg} - if mode&beam.R != 0 { - in, pmsg.out = Pipe() - defer func() { - if err != nil { - in.Close() - in = nil - pmsg.out.Close() - } - }() +func (p *pipe) send(msg *beam.Message) (ret beam.Receiver, err error) { + // Prepare nested Receiver if requested + if beam.RetPipe.Equals(msg.Ret) { + ret, msg.Ret = Pipe() } - if mode&beam.W != 0 { - pmsg.in, out = Pipe() - defer func() { - if err != nil { - out.Close() - out = nil - pmsg.in.Close() - } - }() - } - err = p.psend(pmsg) + err = p.psend(msg) return } -func (p *pipe) preceive() (*pipeMessage, error) { +func (p *pipe) preceive() (*beam.Message, error) { p.rl.Lock() defer p.rl.Unlock() @@ -96,7 +72,7 @@ func (p *pipe) preceive() (*pipeMessage, error) { if p.rerr != nil { return nil, io.ErrClosedPipe } - if p.pmsg != nil { + if p.msg != nil { break } if p.werr != nil { @@ -104,26 +80,24 @@ func (p *pipe) preceive() (*pipeMessage, error) { } p.rwait.Wait() } - pmsg := p.pmsg - p.pmsg = nil + msg := p.msg + p.msg = nil p.wwait.Signal() - return pmsg, nil + return msg, nil } -func (p *pipe) receive(mode int) (*beam.Message, *PipeReceiver, *PipeSender, error) { - pmsg, err := p.preceive() +func (p *pipe) receive(mode int) (*beam.Message, error) { + msg, err := p.preceive() if err != nil { - return nil, nil, nil, err + return nil, err } - if pmsg.out != nil && mode&beam.W == 0 { - pmsg.out.Close() - pmsg.out = nil + if msg.Ret == nil { + msg.Ret = beam.NopSender{} } - if pmsg.in != nil && mode&beam.R == 0 { - pmsg.in.Close() - pmsg.in = nil + if mode&beam.Ret == 0 { + msg.Ret.Close() } - return pmsg.msg, pmsg.in, pmsg.out, nil + return msg, nil } func (p *pipe) rclose(err error) { @@ -154,27 +128,8 @@ type PipeReceiver struct { p *pipe } -func (r *PipeReceiver) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, error) { - msg, pin, pout, err := r.p.receive(mode) - if err != nil { - return nil, nil, nil, err - } - var ( - // Always return NopReceiver/NopSender instead of nil values, - // because: - // - if they were requested in the mode, they can safely be used - // - if they were not requested, they can safely be ignored (ie no leak if they - // aren't closed) - in beam.Receiver = beam.NopReceiver{} - out beam.Sender = beam.NopSender{} - ) - if pin != nil { - in = pin - } - if pout != nil { - out = pout - } - return msg, in, out, err +func (r *PipeReceiver) Receive(mode int) (*beam.Message, error) { + return r.p.receive(mode) } func (r *PipeReceiver) SendTo(dst beam.Sender) (int, error) { @@ -215,19 +170,8 @@ type PipeSender struct { p *pipe } -func (w *PipeSender) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { - pin, pout, err := w.p.send(msg, mode) - var ( - in beam.Receiver - out beam.Sender - ) - if pin != nil { - in = pin - } - if pout != nil { - out = pout - } - return in, out, err +func (w *PipeSender) Send(msg *beam.Message) (beam.Receiver, error) { + return w.p.send(msg) } func (w *PipeSender) ReceiveFrom(src beam.Receiver) (int, error) { diff --git a/beam/inmem/inmem_test.go b/beam/inmem/inmem_test.go index 62691eec8d..9a67acab4b 100644 --- a/beam/inmem/inmem_test.go +++ b/beam/inmem/inmem_test.go @@ -9,18 +9,33 @@ import ( "testing" ) -func TestReceiveW(t *testing.T) { +func TestRetPipe(t *testing.T) { r, w := Pipe() + defer r.Close() + defer w.Close() + wait := make(chan struct{}) go func() { - w.Send(&beam.Message{Name: "hello"}, 0) + ret, err := w.Send(&beam.Message{Name: "hello", Ret: beam.RetPipe}) + if err != nil { + t.Fatal(err) + } + msg, err := ret.Receive(0) + if err != nil { + t.Fatal(err) + } + if msg.Name != "this better not crash" { + t.Fatalf("%#v", msg) + } + close(wait) }() - _, _, ww, err := r.Receive(beam.W) + msg, err := r.Receive(beam.Ret) if err != nil { t.Fatal(err) } - if _, _, err := ww.Send(&beam.Message{Name: "this better not crash"}, 0); err != nil { + if _, err := msg.Ret.Send(&beam.Message{Name: "this better not crash"}); err != nil { t.Fatal(err) } + <-wait } func TestSimpleSend(t *testing.T) { @@ -29,7 +44,7 @@ func TestSimpleSend(t *testing.T) { defer w.Close() testutils.Timeout(t, func() { go func() { - msg, in, out, err := r.Receive(0) + msg, err := r.Receive(0) if err != nil { t.Fatal(err) } @@ -39,40 +54,13 @@ func TestSimpleSend(t *testing.T) { if msg.Args[0] != "hello world" { t.Fatalf("%#v", *msg) } - assertMode(t, in, out, 0) }() - in, out, err := w.Send(&beam.Message{Name: "print", Args: []string{"hello world"}}, 0) - if err != nil { + if _, err := w.Send(&beam.Message{Name: "print", Args: []string{"hello world"}}); err != nil { t.Fatal(err) } - assertMode(t, in, out, 0) }) } -// assertMode verifies that the values of r and w match -// mode. -// If mode has the R bit set, r must be non-nil. -// If mode has the W bit set, w must be non-nil. -// -// If any of these conditions are not met, t.Fatal is called and the active -// test fails. -func assertMode(t *testing.T, r beam.Receiver, w beam.Sender, mode int) { - // If mode has the R bit set, r must be non-nil - if mode&beam.R != 0 { - if r == nil { - t.Fatalf("should be non-nil: %#v", r) - } - // Otherwise it must be nil. - } - // If mode has the W bit set, w must be non-nil - if mode&beam.W != 0 { - if w == nil { - t.Fatalf("should be non-nil: %#v", w) - } - // Otherwise it must be nil. - } -} - func TestSendReply(t *testing.T) { r, w := Pipe() defer r.Close() @@ -80,77 +68,41 @@ func TestSendReply(t *testing.T) { testutils.Timeout(t, func() { // Send go func() { - // Send a message with mode=R - in, out, err := w.Send(&beam.Message{Args: []string{"this is the request"}}, beam.R) + ret, err := w.Send(&beam.Message{Args: []string{"this is the request"}, Ret: beam.RetPipe}) if err != nil { t.Fatal(err) } - assertMode(t, in, out, beam.R) + if ret == nil { + t.Fatalf("ret = nil\n") + } // Read for a reply - resp, _, _, err := in.Receive(0) + msg, err := ret.Receive(0) if err != nil { t.Fatal(err) } - if resp.Args[0] != "this is the reply" { - t.Fatalf("%#v", resp) + if msg.Args[0] != "this is the reply" { + t.Fatalf("%#v", msg) } }() - // Receive a message with mode=W - msg, in, out, err := r.Receive(beam.W) + // Receive a message with mode=Ret + msg, err := r.Receive(beam.Ret) if err != nil { t.Fatal(err) } if msg.Args[0] != "this is the request" { t.Fatalf("%#v", msg) } - assertMode(t, in, out, beam.W) + if msg.Ret == nil { + t.Fatalf("%#v", msg) + } // Send a reply - _, _, err = out.Send(&beam.Message{Args: []string{"this is the reply"}}, 0) + _, err = msg.Ret.Send(&beam.Message{Args: []string{"this is the reply"}}) if err != nil { t.Fatal(err) } }) } -func TestSendNested(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - // Send - go func() { - // Send a message with mode=W - in, out, err := w.Send(&beam.Message{Args: []string{"this is the request"}}, beam.W) - if err != nil { - t.Fatal(err) - } - assertMode(t, in, out, beam.W) - // Send a nested message - _, _, err = out.Send(&beam.Message{Args: []string{"this is the nested message"}}, 0) - if err != nil { - t.Fatal(err) - } - }() - // Receive a message with mode=R - msg, in, out, err := r.Receive(beam.R) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the request" { - t.Fatalf("%#v", msg) - } - assertMode(t, in, out, beam.R) - // Read for a nested message - nested, _, _, err := in.Receive(0) - if err != nil { - t.Fatal(err) - } - if nested.Args[0] != "this is the nested message" { - t.Fatalf("%#v", nested) - } - }) -} - func TestSendFile(t *testing.T) { r, w := Pipe() defer r.Close() @@ -165,12 +117,12 @@ func TestSendFile(t *testing.T) { tmp.Seek(0, 0) testutils.Timeout(t, func() { go func() { - _, _, err := w.Send(&beam.Message{"file", []string{"path=" + tmp.Name()}, tmp}, 0) + _, err := w.Send(&beam.Message{Name: "file", Args: []string{"path=" + tmp.Name()}, Att: tmp}) if err != nil { t.Fatal(err) } }() - msg, _, _, err := r.Receive(0) + msg, err := r.Receive(0) if err != nil { t.Fatal(err) } diff --git a/beam/nop.go b/beam/nop.go index 061e5f41a5..603d9b2ec5 100644 --- a/beam/nop.go +++ b/beam/nop.go @@ -6,8 +6,8 @@ import ( type NopSender struct{} -func (s NopSender) Send(msg *Message, mode int) (Receiver, Sender, error) { - return NopReceiver{}, NopSender{}, nil +func (s NopSender) Send(msg *Message) (Receiver, error) { + return NopReceiver{}, nil } func (s NopSender) Close() error { @@ -16,6 +16,6 @@ func (s NopSender) Close() error { type NopReceiver struct{} -func (r NopReceiver) Receive(mode int) (*Message, Receiver, Sender, error) { - return nil, nil, nil, io.EOF +func (r NopReceiver) Receive(mode int) (*Message, error) { + return nil, io.EOF } diff --git a/beam/unix/conn.go b/beam/unix/conn.go index a06f3f5eb0..24c63647ff 100644 --- a/beam/unix/conn.go +++ b/beam/unix/conn.go @@ -50,75 +50,90 @@ func (c *Conn) Close() error { return c.UnixConn.CloseWrite() } -func (c *Conn) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { +func (c *Conn) Send(msg *beam.Message) (beam.Receiver, error) { if msg.Att != nil { - return nil, nil, fmt.Errorf("file attachment not yet implemented in unix transport") + return nil, fmt.Errorf("file attachment not yet implemented in unix transport") } parts := []string{msg.Name} parts = append(parts, msg.Args...) b := []byte(data.EncodeList(parts)) // Setup nested streams var ( - fd *os.File - r beam.Receiver - w beam.Sender + fd *os.File + ret beam.Receiver + err error ) - if mode&(beam.R|beam.W) != 0 { + // Caller requested a return pipe + if beam.RetPipe.Equals(msg.Ret) { local, remote, err := sendablePair() if err != nil { - return nil, nil, err + return nil, err } fd = remote - if mode&beam.R != 0 { - r = &Conn{local} - } - if mode&beam.W != 0 { - w = &Conn{local} + ret = &Conn{local} + // Caller specified its own return channel + } else if msg.Ret != nil { + // The specified return channel is a unix conn: engaging cheat mode! + if retConn, ok := msg.Ret.(*Conn); ok { + fd, err = retConn.UnixConn.File() + if err != nil { + return nil, fmt.Errorf("error passing return channel: %v", err) + } + // Close duplicate fd + retConn.UnixConn.Close() + // The specified return channel is an unknown type: proxy messages. } else { - local.CloseWrite() + local, remote, err := sendablePair() + if err != nil { + return nil, fmt.Errorf("error passing return channel: %v", err) + } + fd = remote + // FIXME: do we need a reference no all these background tasks? + go func() { + // Copy messages from the remote return channel to the local return channel. + // When the remote return channel is closed, also close the local return channel. + localConn := &Conn{local} + beam.Copy(msg.Ret, localConn) + msg.Ret.Close() + localConn.Close() + }() } } - c.UnixConn.Send(b, fd) - return r, w, nil + if err := c.UnixConn.Send(b, fd); err != nil { + return nil, err + } + return ret, nil } -func (c *Conn) Receive(mode int) (*beam.Message, beam.Receiver, beam.Sender, error) { +func (c *Conn) Receive(mode int) (*beam.Message, error) { b, fd, err := c.UnixConn.Receive() if err != nil { - return nil, nil, nil, err + return nil, err } parts, n, err := data.DecodeList(string(b)) if err != nil { - return nil, nil, nil, err + return nil, err } if n != len(b) { - return nil, nil, nil, fmt.Errorf("garbage data %#v", b[:n]) + return nil, fmt.Errorf("garbage data %#v", b[:n]) } if len(parts) == 0 { - return nil, nil, nil, fmt.Errorf("malformed message") + return nil, fmt.Errorf("malformed message") } msg := &beam.Message{Name: parts[0], Args: parts[1:]} - // Setup nested streams - var ( - r beam.Receiver - w beam.Sender - ) // Apply mode mask if fd != nil { subconn, err := FileConn(fd) if err != nil { - return nil, nil, nil, err + return nil, err } fd.Close() - if mode&beam.R != 0 { - r = &Conn{subconn} - } - if mode&beam.W != 0 { - w = &Conn{subconn} + if mode&beam.Ret != 0 { + msg.Ret = &Conn{subconn} } else { subconn.CloseWrite() } } - return msg, r, w, nil + return msg, nil } diff --git a/beam/utils/buf.go b/beam/utils/buf.go index 674d5f2b20..226c1fea38 100644 --- a/beam/utils/buf.go +++ b/beam/utils/buf.go @@ -6,9 +6,9 @@ import ( type Buffer []*beam.Message -func (buf *Buffer) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { +func (buf *Buffer) Send(msg *beam.Message) (beam.Receiver, error) { (*buf) = append(*buf, msg) - return beam.NopReceiver{}, beam.NopSender{}, nil + return beam.NopReceiver{}, nil } func (buf *Buffer) Close() error { diff --git a/beam/utils/hub.go b/beam/utils/hub.go index 0d574a0042..42cc75cf8a 100644 --- a/beam/utils/hub.go +++ b/beam/utils/hub.go @@ -5,6 +5,7 @@ import ( "github.com/docker/libswarm/beam" "github.com/docker/libswarm/beam/inmem" "io" + "strings" "sync" ) @@ -12,6 +13,7 @@ import ( type Hub struct { handlers *StackSender tasks sync.WaitGroup + l sync.RWMutex } func NewHub() *Hub { @@ -20,73 +22,65 @@ func NewHub() *Hub { } } -func (hub *Hub) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { +func (hub *Hub) Send(msg *beam.Message) (ret beam.Receiver, err error) { if msg.Name == "register" { - if mode&beam.R == 0 { - return nil, nil, fmt.Errorf("register: no return channel") + if msg.Ret == nil { + return nil, fmt.Errorf("register: no return channel") } fmt.Printf("[hub] received %v\n", msg) - hYoutr, hYoutw := inmem.Pipe() - hYinr, hYinw := inmem.Pipe() + hIn := msg.Ret + if hIn == beam.RetPipe { + ret, hIn = inmem.Pipe() + } + // This queue guarantees that the first message received by the handler + // is the "register" response. + hIn = NewQueue(hIn, 1) + // Reply to the handler with a "register" call of our own, + // passing a reference to the previous handler stack. + // This allows the new handler to query previous handlers + // without creating loops. + hOut, err := hIn.Send(&beam.Message{Name: "register", Ret: beam.RetPipe}) + if err != nil { + return nil, err + } // Register the new handler on top of the others, // and get a reference to the previous stack of handlers. - prevHandlers := hub.handlers.Add(hYinw) - // Pass requests from the new handler to the previous chain of handlers - // hYout -> hXin - hub.tasks.Add(1) - go func() { - defer hub.tasks.Done() - Copy(prevHandlers, hYoutr) - hYoutr.Close() - }() - return hYinr, hYoutw, nil + prevHandlers := hub.handlers.Add(hIn) + go beam.Copy(prevHandlers, hOut) + return ret, nil } fmt.Printf("sending %#v to %d handlers\n", msg, hub.handlers.Len()) - return hub.handlers.Send(msg, mode) -} - -func (hub *Hub) Register(dst beam.Sender) error { - in, _, err := hub.Send(&beam.Message{Name: "register"}, beam.R) - if err != nil { - return err - } - go Copy(dst, in) - return nil + return hub.handlers.Send(msg) } func (hub *Hub) RegisterTask(h func(beam.Receiver, beam.Sender) error) error { - in, out, err := hub.Send(&beam.Message{Name: "register"}, beam.R|beam.W) + ret, err := hub.Send(&beam.Message{Name: "register", Ret: beam.RetPipe}) if err != nil { return err } + ack, err := ret.Receive(beam.Ret) + if err != nil { + return err + } + if ack.Name == "error" { + return fmt.Errorf(strings.Join(ack.Args, ", ")) + } + if ack.Name != "register" { + return fmt.Errorf("invalid response: expected verb 'register', got '%v'", ack.Name) + } go func() { - h(in, out) - out.Close() + h(ret, ack.Ret) + ack.Ret.Close() }() return nil } -type Handler func(msg *beam.Message, in beam.Receiver, out beam.Sender, next beam.Sender) (pass bool, err error) +type Handler func(msg *beam.Message, out beam.Sender) (pass bool, err error) func (hub *Hub) RegisterName(name string, h Handler) error { return hub.RegisterTask(func(in beam.Receiver, out beam.Sender) error { - var tasks sync.WaitGroup - copyTask := func(dst beam.Sender, src beam.Receiver) { - tasks.Add(1) - go func() { - defer tasks.Done() - if dst == nil { - return - } - defer dst.Close() - if src == nil { - return - } - Copy(dst, src) - }() - } for { - msg, msgin, msgout, err := in.Receive(beam.R | beam.W) + msg, err := in.Receive(beam.Ret) if err == io.EOF { break } @@ -95,24 +89,19 @@ func (hub *Hub) RegisterName(name string, h Handler) error { } var pass = true if msg.Name == name || name == "" { - pass, err = h(msg, msgin, msgout, out) + pass, err = h(msg, out) if err != nil { - if _, _, err := msgout.Send(&beam.Message{Name: "error", Args: []string{err.Error()}}, 0); err != nil { + if _, err := msg.Ret.Send(&beam.Message{Name: "error", Args: []string{err.Error()}}); err != nil { return err } } } if pass { - nextin, nextout, err := out.Send(msg, beam.R|beam.W) - if err != nil { + if _, err := out.Send(msg); err != nil { return err } - copyTask(nextout, msgin) - copyTask(msgout, nextin) } else { - if msgout != nil { - msgout.Close() - } + msg.Ret.Close() } } return nil diff --git a/beam/utils/hub_test.go b/beam/utils/hub_test.go index 2ec1f98011..925e2894bc 100644 --- a/beam/utils/hub_test.go +++ b/beam/utils/hub_test.go @@ -9,42 +9,49 @@ import ( func TestHubSendEmpty(t *testing.T) { hub := NewHub() // Send to empty hub should silently drop - r, w, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, beam.R|beam.W) + ret, err := hub.Send(&beam.Message{Name: "hello", Args: nil, Ret: beam.RetPipe}) // Send must not return an error if err != nil { t.Fatal(err) } - // We set beam.R, so a valid receiver must be returned - if r == nil { - t.Fatalf("%#v", r) - } - // We set beam.W, so a valid receiver must be returned - if w == nil { - t.Fatalf("%#v", w) + // We set beam.R, so a valid return pipe must be returned + if ret == nil { + t.Fatalf("%#v", ret) } } type CountSender int -func (s *CountSender) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) { +func (s *CountSender) Send(msg *beam.Message) (beam.Receiver, error) { (*s)++ - return nil, nil, nil + return nil, nil } func TestHubSendOneHandler(t *testing.T) { hub := NewHub() defer hub.Close() testutils.Timeout(t, func() { - in, _, err := hub.Send(&beam.Message{Name: "register", Args: nil}, beam.R) + handlerIn, err := hub.Send(&beam.Message{Name: "register", Args: nil, Ret: beam.RetPipe}) if err != nil { t.Fatal(err) } + ack, err := handlerIn.Receive(beam.Ret) + if err != nil { + t.Fatal(err) + } + if ack.Name != "register" { + t.Fatalf("%#v", err) + } + handlerOut := ack.Ret + if handlerOut == nil { + t.Fatalf("nil handler out") + } go func() { - if _, _, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, 0); err != nil { + if _, err := hub.Send(&beam.Message{Name: "hello", Args: nil}); err != nil { t.Fatal(err) } }() - msg, _, _, err := in.Receive(0) + msg, err := handlerIn.Receive(0) if err != nil { t.Fatal(err) } diff --git a/beam/utils/stack.go b/beam/utils/stack.go index 0748d6a041..1d2c0188ce 100644 --- a/beam/utils/stack.go +++ b/beam/utils/stack.go @@ -24,9 +24,9 @@ func NewStackSender() *StackSender { } } -func (s *StackSender) Send(msg *beam.Message, mode int) (r beam.Receiver, w beam.Sender, err error) { +func (s *StackSender) Send(msg *beam.Message) (ret beam.Receiver, err error) { completed := s.walk(func(h beam.Sender) (ok bool) { - r, w, err = h.Send(msg, mode) + ret, err = h.Send(msg) fmt.Printf("[stacksender] sending %v to %#v returned %v\n", msg, h, err) if err == nil { return true @@ -35,10 +35,10 @@ func (s *StackSender) Send(msg *beam.Message, mode int) (r beam.Receiver, w beam }) // If walk was completed, it means we didn't find a valid handler if !completed { - return r, w, err + return ret, err } // Silently drop messages if no valid backend is available. - return beam.NopSender{}.Send(msg, mode) + return beam.NopSender{}.Send(msg) } func (s *StackSender) Add(dst beam.Sender) *StackSender { diff --git a/beam/utils/stack_test.go b/beam/utils/stack_test.go index fdc35201b0..7cc53eb466 100644 --- a/beam/utils/stack_test.go +++ b/beam/utils/stack_test.go @@ -17,7 +17,7 @@ func TestStackWithPipe(t *testing.T) { s.Add(w) testutils.Timeout(t, func() { go func() { - msg, _, _, err := r.Receive(0) + msg, err := r.Receive(0) if err != nil { t.Fatal(err) } @@ -28,7 +28,7 @@ func TestStackWithPipe(t *testing.T) { t.Fatalf("%#v", msg) } }() - _, _, err := s.Send(&beam.Message{Name: "hello", Args: []string{"wonderful", "world"}}, 0) + _, err := s.Send(&beam.Message{Name: "hello", Args: []string{"wonderful", "world"}}) if err != nil { t.Fatal(err) } @@ -46,7 +46,7 @@ func TestStackWithPair(t *testing.T) { s.Add(w) testutils.Timeout(t, func() { go func() { - msg, _, _, err := r.Receive(0) + msg, err := r.Receive(0) if err != nil { t.Fatal(err) } @@ -57,7 +57,7 @@ func TestStackWithPair(t *testing.T) { t.Fatalf("%#v", msg) } }() - _, _, err := s.Send(&beam.Message{Name: "hello", Args: []string{"wonderful", "world"}}, 0) + _, err := s.Send(&beam.Message{Name: "hello", Args: []string{"wonderful", "world"}}) if err != nil { t.Fatal(err) } @@ -91,9 +91,9 @@ func TestStackAdd(t *testing.T) { if s.Len() != 2 { t.Fatalf("%#v", beforeA) } - s.Send(&beam.Message{Name: "for b", Args: nil}, 0) - beforeB.Send(&beam.Message{Name: "for a", Args: nil}, 0) - beforeA.Send(&beam.Message{Name: "for nobody", Args: nil}, 0) + s.Send(&beam.Message{Name: "for b", Args: nil}) + beforeB.Send(&beam.Message{Name: "for a", Args: nil}) + beforeA.Send(&beam.Message{Name: "for nobody", Args: nil}) if len(a) != 1 { t.Fatalf("%#v", a) } @@ -113,7 +113,7 @@ func TestStackAddBad(t *testing.T) { t.Fatalf("%#v", s) } r.Close() - if _, _, err := s.Send(&beam.Message{Name: "for the buffer", Args: nil}, 0); err != nil { + if _, err := s.Send(&beam.Message{Name: "for the buffer", Args: nil}); err != nil { t.Fatal(err) } if s.Len() != 1 { diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 3bda8e79dd..355fb3c42b 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -2,14 +2,14 @@ package main import ( "fmt" - "log" "github.com/codegangsta/cli" + "github.com/docker/libswarm/backends" "github.com/docker/libswarm/beam" beamutils "github.com/docker/libswarm/beam/utils" - "github.com/docker/libswarm/backends" _ "github.com/dotcloud/docker/api/server" "github.com/flynn/go-shlex" "io" + "log" "os" "strings" ) @@ -32,7 +32,7 @@ func cmdDaemon(c *cli.Context) { } hub := beamutils.NewHub() - hub.RegisterName("log", func(msg *beam.Message, in beam.Receiver, out, next beam.Sender) (bool, error) { + hub.RegisterName("log", func(msg *beam.Message, out beam.Sender) (bool, error) { log.Printf("%s\n", strings.Join(msg.Args, " ")) // Pass through to other logging hooks return true, nil @@ -45,42 +45,31 @@ func cmdDaemon(c *cli.Context) { Fatalf("%v", err) } fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) - backendr, _, err := back.Send(&beam.Message{Name: "cd", Args: []string{bName}}, beam.R) + backend, err := back.Send(&beam.Message{Name: "cd", Args: []string{bName}, Ret: beam.RetPipe}) if err != nil { Fatalf("%s: %v\n", bName, err) } - // backendr will return either 'error' or 'register'. + // backend will return either 'error' or 'register'. for { - m, mr, mw, err := backendr.Receive(beam.R|beam.W) + m, err := backend.Receive(beam.Ret) if err == io.EOF { break } if err != nil { Fatalf("error reading from backend: %v", err) } - if m.Name == "error" { - Fatalf("backend sent error: %v", strings.Join(m.Args, " ")) - } - if m.Name == "register" { - // FIXME: adapt the beam interface to allow the caller to - // (optionally) pass their own Sender/Receiver? - // Would make proxying/splicing easier. - hubr, hubw, err := hub.Send(m, beam.R|beam.W) - if err != nil { - Fatalf("error binding backend to hub: %v", err) - } - fmt.Printf("successfully registered\n") - go beamutils.Copy(hubw, mr) - go beamutils.Copy(mw, hubr) + if _, err := hub.Send(m); err != nil { + Fatalf("error binding backend to hub: %v", err) } } } - in, _, err := hub.Send(&beam.Message{Name: "start"}, beam.R) + fmt.Printf("backends loaded. Sending 'start' to the hub\n") + job, err := hub.Send(&beam.Message{Name: "start", Ret: beam.RetPipe}) if err != nil { Fatalf("%v", err) } for { - msg, _, _, err := in.Receive(0) + msg, err := job.Receive(0) if err == io.EOF { break } From 6925101cac3f3fca9b38c6c507cea65e3478f7d2 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 06:20:20 +0000 Subject: [PATCH 164/347] swarmd: UI polish * Fix usage message * Builtin error handler --- swarmd/swarmd.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 355fb3c42b..3a963b6675 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -28,7 +28,7 @@ func main() { func cmdDaemon(c *cli.Context) { if len(c.Args()) == 0 { - Fatalf("Usage: %s ://
[://
]...\n", c.App.Name) + Fatalf("Usage: %s backend [backend...]\n", c.App.Name) } hub := beamutils.NewHub() @@ -37,6 +37,10 @@ func cmdDaemon(c *cli.Context) { // Pass through to other logging hooks return true, nil }) + hub.RegisterName("error", func(msg *beam.Message, out beam.Sender) (bool, error) { + Fatalf("Fatal: %v", strings.Join(msg.Args, ":: ")) + return false, nil + }) back := backends.New() // Load backends for _, cmd := range c.Args() { From 99c1e317ac4171d2a1e42c0ee303a3f671e223be Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 06:20:58 +0000 Subject: [PATCH 165/347] beam: Queue wraps a Sender in a channel for serializing and synchronizing Solomon Hykes --- beam/utils/queue.go | 42 ++++++++++++++++++++++++++++++++++++++ beam/utils/queue_test.go | 44 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 beam/utils/queue.go create mode 100644 beam/utils/queue_test.go diff --git a/beam/utils/queue.go b/beam/utils/queue.go new file mode 100644 index 0000000000..335bde1fe9 --- /dev/null +++ b/beam/utils/queue.go @@ -0,0 +1,42 @@ +package utils + +import ( + "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/beam/inmem" +) + +type Queue struct { + *inmem.PipeSender + dst beam.Sender + ch chan *beam.Message +} + +func NewQueue(dst beam.Sender, size int) *Queue { + r, w := inmem.Pipe() + q := &Queue{ + PipeSender: w, + dst: dst, + ch: make(chan *beam.Message, size), + } + go func() { + defer close(q.ch) + for { + msg, err := r.Receive(beam.Ret) + if err != nil { + r.Close() + return + } + q.ch <- msg + } + }() + go func() { + for msg := range q.ch { + _, err := dst.Send(msg) + if err != nil { + r.Close() + return + } + } + }() + return q +} diff --git a/beam/utils/queue_test.go b/beam/utils/queue_test.go new file mode 100644 index 0000000000..f7ed252edd --- /dev/null +++ b/beam/utils/queue_test.go @@ -0,0 +1,44 @@ +package utils + +import ( + "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/beam/inmem" + "testing" +) + +func TestSendRet(t *testing.T) { + r, w := inmem.Pipe() + defer r.Close() + defer w.Close() + q := NewQueue(w, 1) + defer q.Close() + ret, err := q.Send(&beam.Message{Name: "ping", Ret: beam.RetPipe}) + if err != nil { + t.Fatal(err) + } + go func() { + ping, err := r.Receive(beam.Ret) + if err != nil { + t.Fatal(err) + } + if _, err := ping.Ret.Send(&beam.Message{Name: "pong"}); err != nil { + t.Fatal(err) + } + }() + pong, err := ret.Receive(0) + if err != nil { + t.Fatal(err) + } + if pong.Name != "pong" { + t.Fatal(err) + } +} + +func TestSendClose(t *testing.T) { + q := NewQueue(beam.NopSender{}, 1) + q.Send(&beam.Message{Name: "hello"}) + q.Close() + if _, err := q.Send(&beam.Message{Name: "again"}); err == nil { + t.Fatal("send on closed queue should return an error") + } +} From 16b16715b2509b32a7416227f6c19fd8d64eb64d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 06:22:08 +0000 Subject: [PATCH 166/347] [wip] swarm TODO --- swarmd/TODO | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 swarmd/TODO diff --git a/swarmd/TODO b/swarmd/TODO new file mode 100644 index 0000000000..e0d18ee69e --- /dev/null +++ b/swarmd/TODO @@ -0,0 +1,2 @@ + +- Hub us dropping messages since API refactor, probably because of Queue. From 58f7d34f0feff966f92b82ac6d806ae328b56a05 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 23:55:15 +0000 Subject: [PATCH 167/347] Move Pipe() into the beam package Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- beam/{inmem => }/inmem.go | 31 +++++++++++++++---------------- beam/{inmem => }/inmem_test.go | 21 ++++++++++----------- beam/utils/hub.go | 3 +-- beam/utils/queue.go | 5 ++--- beam/utils/queue_test.go | 3 +-- beam/utils/stack_test.go | 5 ++--- 6 files changed, 31 insertions(+), 37 deletions(-) rename beam/{inmem => }/inmem.go (78%) rename beam/{inmem => }/inmem_test.go (76%) diff --git a/beam/inmem/inmem.go b/beam/inmem.go similarity index 78% rename from beam/inmem/inmem.go rename to beam/inmem.go index 6d6a2a9d53..20593fb715 100644 --- a/beam/inmem/inmem.go +++ b/beam/inmem.go @@ -1,7 +1,6 @@ -package inmem +package beam import ( - "github.com/docker/libswarm/beam" "io" "sync" ) @@ -23,10 +22,10 @@ type pipe struct { wl sync.Mutex rerr error // if reader closed, error to give writes werr error // if writer closed, error to give reads - msg *beam.Message + msg *Message } -func (p *pipe) psend(msg *beam.Message) error { +func (p *pipe) psend(msg *Message) error { var err error // One writer at a time. p.wl.Lock() @@ -53,16 +52,16 @@ func (p *pipe) psend(msg *beam.Message) error { return err } -func (p *pipe) send(msg *beam.Message) (ret beam.Receiver, err error) { +func (p *pipe) send(msg *Message) (ret Receiver, err error) { // Prepare nested Receiver if requested - if beam.RetPipe.Equals(msg.Ret) { + if RetPipe.Equals(msg.Ret) { ret, msg.Ret = Pipe() } err = p.psend(msg) return } -func (p *pipe) preceive() (*beam.Message, error) { +func (p *pipe) preceive() (*Message, error) { p.rl.Lock() defer p.rl.Unlock() @@ -86,15 +85,15 @@ func (p *pipe) preceive() (*beam.Message, error) { return msg, nil } -func (p *pipe) receive(mode int) (*beam.Message, error) { +func (p *pipe) receive(mode int) (*Message, error) { msg, err := p.preceive() if err != nil { return nil, err } if msg.Ret == nil { - msg.Ret = beam.NopSender{} + msg.Ret = NopSender{} } - if mode&beam.Ret == 0 { + if mode&Ret == 0 { msg.Ret.Close() } return msg, nil @@ -128,16 +127,16 @@ type PipeReceiver struct { p *pipe } -func (r *PipeReceiver) Receive(mode int) (*beam.Message, error) { +func (r *PipeReceiver) Receive(mode int) (*Message, error) { return r.p.receive(mode) } -func (r *PipeReceiver) SendTo(dst beam.Sender) (int, error) { +func (r *PipeReceiver) SendTo(dst Sender) (int, error) { var n int // If the destination is a PipeSender, we can cheat pdst, ok := dst.(*PipeSender) if !ok { - return 0, beam.ErrIncompatibleSender + return 0, ErrIncompatibleSender } for { pmsg, err := r.p.preceive() @@ -170,16 +169,16 @@ type PipeSender struct { p *pipe } -func (w *PipeSender) Send(msg *beam.Message) (beam.Receiver, error) { +func (w *PipeSender) Send(msg *Message) (Receiver, error) { return w.p.send(msg) } -func (w *PipeSender) ReceiveFrom(src beam.Receiver) (int, error) { +func (w *PipeSender) ReceiveFrom(src Receiver) (int, error) { var n int // If the destination is a PipeReceiver, we can cheat psrc, ok := src.(*PipeReceiver) if !ok { - return 0, beam.ErrIncompatibleReceiver + return 0, ErrIncompatibleReceiver } for { pmsg, err := psrc.p.preceive() diff --git a/beam/inmem/inmem_test.go b/beam/inmem_test.go similarity index 76% rename from beam/inmem/inmem_test.go rename to beam/inmem_test.go index 9a67acab4b..d1574c37ea 100644 --- a/beam/inmem/inmem_test.go +++ b/beam/inmem_test.go @@ -1,21 +1,20 @@ -package inmem +package beam import ( "fmt" - "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/pkg/testutils" "io/ioutil" "os" "testing" ) -func TestRetPipe(t *testing.T) { +func TestInmemRetPipe(t *testing.T) { r, w := Pipe() defer r.Close() defer w.Close() wait := make(chan struct{}) go func() { - ret, err := w.Send(&beam.Message{Name: "hello", Ret: beam.RetPipe}) + ret, err := w.Send(&Message{Name: "hello", Ret: RetPipe}) if err != nil { t.Fatal(err) } @@ -28,11 +27,11 @@ func TestRetPipe(t *testing.T) { } close(wait) }() - msg, err := r.Receive(beam.Ret) + msg, err := r.Receive(Ret) if err != nil { t.Fatal(err) } - if _, err := msg.Ret.Send(&beam.Message{Name: "this better not crash"}); err != nil { + if _, err := msg.Ret.Send(&Message{Name: "this better not crash"}); err != nil { t.Fatal(err) } <-wait @@ -55,7 +54,7 @@ func TestSimpleSend(t *testing.T) { t.Fatalf("%#v", *msg) } }() - if _, err := w.Send(&beam.Message{Name: "print", Args: []string{"hello world"}}); err != nil { + if _, err := w.Send(&Message{Name: "print", Args: []string{"hello world"}}); err != nil { t.Fatal(err) } }) @@ -68,7 +67,7 @@ func TestSendReply(t *testing.T) { testutils.Timeout(t, func() { // Send go func() { - ret, err := w.Send(&beam.Message{Args: []string{"this is the request"}, Ret: beam.RetPipe}) + ret, err := w.Send(&Message{Args: []string{"this is the request"}, Ret: RetPipe}) if err != nil { t.Fatal(err) } @@ -85,7 +84,7 @@ func TestSendReply(t *testing.T) { } }() // Receive a message with mode=Ret - msg, err := r.Receive(beam.Ret) + msg, err := r.Receive(Ret) if err != nil { t.Fatal(err) } @@ -96,7 +95,7 @@ func TestSendReply(t *testing.T) { t.Fatalf("%#v", msg) } // Send a reply - _, err = msg.Ret.Send(&beam.Message{Args: []string{"this is the reply"}}) + _, err = msg.Ret.Send(&Message{Args: []string{"this is the reply"}}) if err != nil { t.Fatal(err) } @@ -117,7 +116,7 @@ func TestSendFile(t *testing.T) { tmp.Seek(0, 0) testutils.Timeout(t, func() { go func() { - _, err := w.Send(&beam.Message{Name: "file", Args: []string{"path=" + tmp.Name()}, Att: tmp}) + _, err := w.Send(&Message{Name: "file", Args: []string{"path=" + tmp.Name()}, Att: tmp}) if err != nil { t.Fatal(err) } diff --git a/beam/utils/hub.go b/beam/utils/hub.go index 42cc75cf8a..8c5f315089 100644 --- a/beam/utils/hub.go +++ b/beam/utils/hub.go @@ -3,7 +3,6 @@ package utils import ( "fmt" "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/inmem" "io" "strings" "sync" @@ -30,7 +29,7 @@ func (hub *Hub) Send(msg *beam.Message) (ret beam.Receiver, err error) { fmt.Printf("[hub] received %v\n", msg) hIn := msg.Ret if hIn == beam.RetPipe { - ret, hIn = inmem.Pipe() + ret, hIn = beam.Pipe() } // This queue guarantees that the first message received by the handler // is the "register" response. diff --git a/beam/utils/queue.go b/beam/utils/queue.go index 335bde1fe9..9da2fad953 100644 --- a/beam/utils/queue.go +++ b/beam/utils/queue.go @@ -2,17 +2,16 @@ package utils import ( "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/inmem" ) type Queue struct { - *inmem.PipeSender + *beam.PipeSender dst beam.Sender ch chan *beam.Message } func NewQueue(dst beam.Sender, size int) *Queue { - r, w := inmem.Pipe() + r, w := beam.Pipe() q := &Queue{ PipeSender: w, dst: dst, diff --git a/beam/utils/queue_test.go b/beam/utils/queue_test.go index f7ed252edd..dfc75a19e0 100644 --- a/beam/utils/queue_test.go +++ b/beam/utils/queue_test.go @@ -2,12 +2,11 @@ package utils import ( "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/inmem" "testing" ) func TestSendRet(t *testing.T) { - r, w := inmem.Pipe() + r, w := beam.Pipe() defer r.Close() defer w.Close() q := NewQueue(w, 1) diff --git a/beam/utils/stack_test.go b/beam/utils/stack_test.go index 7cc53eb466..03189a9f4b 100644 --- a/beam/utils/stack_test.go +++ b/beam/utils/stack_test.go @@ -2,7 +2,6 @@ package utils import ( "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/inmem" "github.com/docker/libswarm/beam/unix" "github.com/dotcloud/docker/pkg/testutils" "strings" @@ -10,7 +9,7 @@ import ( ) func TestStackWithPipe(t *testing.T) { - r, w := inmem.Pipe() + r, w := beam.Pipe() defer r.Close() defer w.Close() s := NewStackSender() @@ -107,7 +106,7 @@ func TestStackAddBad(t *testing.T) { s := NewStackSender() buf := Buffer{} s.Add(&buf) - r, w := inmem.Pipe() + r, w := beam.Pipe() s.Add(w) if s.Len() != 2 { t.Fatalf("%#v", s) From 1b22a97f199e41eec3b4aa8be3850a8534fbcc77 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 23:56:53 +0000 Subject: [PATCH 168/347] First version of an object model * beam.Verb enumerates all standard verbs * beam.Object implements standard verbs as convenience client methods * beam.Server implements stateless handlers to process incoming standard verbs * beam.Repeater always replies with the same message * beam.Handler exposes a function as a Receiver Standard verbs include: * Object navigation: ls, attach * Execution: spawn, start, stop * Notifications: log, error, ack * Data: set, get Signed-off-by: Solomon Hykes --- beam/beam.go | 7 ++ beam/verbs.go | 296 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 303 insertions(+) create mode 100644 beam/verbs.go diff --git a/beam/beam.go b/beam/beam.go index d1ae87a0ed..735d262c7e 100644 --- a/beam/beam.go +++ b/beam/beam.go @@ -55,3 +55,10 @@ func (r retPipe) Equals(val Sender) bool { } return false } + +func Repeater(payload *Message) Sender { + return Handler(func(msg *Message) error { + msg.Ret.Send(payload) + return nil + }) +} diff --git a/beam/verbs.go b/beam/verbs.go new file mode 100644 index 0000000000..1b9aab61a9 --- /dev/null +++ b/beam/verbs.go @@ -0,0 +1,296 @@ +package beam + +import ( + "encoding/json" + "fmt" + "io" + "net" + "strings" +) + +type Verb string + +var ( + Ack Verb = "ack" + Log Verb = "log" + Start Verb = "start" + Stop Verb = "stop" + Attach Verb = "attach" + Spawn Verb = "spawn" + Set Verb = "set" + Get Verb = "get" + File Verb = "file" + Error Verb = "error" + Ls Verb = "ls" +) + +var NotImplemented = Repeater(&Message{Name: "error", Args: []string{"not implemented"}}) + +type Handler func(msg *Message) error + +func (h Handler) Send(msg *Message) (Receiver, error) { + var ret Receiver + if RetPipe.Equals(msg.Ret) { + ret, msg.Ret = Pipe() + } + go func() { + // Ret must always be a valid Sender, so handlers + // can safely send to it + if msg.Ret == nil { + msg.Ret = NopSender{} + } + err := h(msg) + if err != nil { + Obj(msg.Ret).Error("%v", err) + } + msg.Ret.Close() + }() + return ret, nil +} + +func (h Handler) Close() error { + return fmt.Errorf("can't close") +} + +type Server struct { + handlers map[Verb]Sender + catchall Sender +} + +func NewServer() *Server { + return &Server{ + handlers: make(map[Verb]Sender), + } +} + +func (s *Server) Catchall(h Sender) *Server { + s.catchall = h + return s +} + +func (s *Server) OnVerb(v Verb, h Sender) *Server { + s.handlers[v] = h + return s +} + +func (s *Server) OnSpawn(h Sender) *Server { + return s.OnVerb(Spawn, h) +} + +func (s *Server) OnStart(h Sender) *Server { + return s.OnVerb(Start, h) +} + +func (s *Server) OnStop(h Sender) *Server { + return s.OnVerb(Stop, h) +} + +func (s *Server) OnAttach(h Sender) *Server { + return s.OnVerb(Attach, h) +} + +func (s *Server) OnLog(h Sender) *Server { + return s.OnVerb(Log, h) +} + +func (s *Server) OnError(h Sender) *Server { + return s.OnVerb(Error, h) +} + +func (s *Server) OnLs(h Sender) *Server { + return s.OnVerb(Ls, h) +} + +func (s *Server) Send(msg *Message) (Receiver, error) { + if h, exists := s.handlers[Verb(msg.Name)]; exists { + return h.Send(msg) + } + if s.catchall != nil { + return s.catchall.Send(msg) + } + return NotImplemented.Send(msg) +} + +func (s *Server) Close() error { + return fmt.Errorf("can't close") +} + +// FIXME: rename Object to Client + +type Object struct { + Sender +} + +func Obj(dst Sender) *Object { + return &Object{dst} +} + +func (o *Object) Log(msg string, args ...interface{}) error { + _, err := o.Send(&Message{Name: "log", Args: []string{fmt.Sprintf(msg, args...)}}) + return err +} + +func (o *Object) Ls() ([]string, error) { + ret, err := o.Send(&Message{Name: "ls", Ret: RetPipe}) + if err != nil { + return nil, err + } + msg, err := ret.Receive(0) + if err == io.EOF { + return nil, fmt.Errorf("unexpected EOF") + } + if msg.Name == "set" { + if err != nil { + return nil, err + } + return msg.Args, nil + } + if msg.Name == "error" { + return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Spawn(cmd ...string) (out *Object, err error) { + ret, err := o.Send(&Message{Name: "spawn", Args: cmd, Ret: RetPipe}) + if err != nil { + return nil, err + } + msg, err := ret.Receive(Ret) + if err == io.EOF { + return nil, fmt.Errorf("unexpected EOF") + } + if err != nil { + return nil, err + } + if msg.Name == "ack" { + return &Object{msg.Ret}, nil + } + msg.Ret.Close() + if msg.Name == "error" { + return nil, fmt.Errorf("%s", strings.Join(msg.Args[:1], "")) + } + return nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Attach(name string) (in Receiver, out *Object, err error) { + ret, err := o.Send(&Message{Name: "attach", Args: []string{name}, Ret: RetPipe}) + if err != nil { + return nil, nil, err + } + msg, err := ret.Receive(Ret) + if err == io.EOF { + return nil, nil, fmt.Errorf("unexpected EOF") + } + if err != nil { + return nil, nil, err + } + if msg.Name == "ack" { + return ret, &Object{msg.Ret}, nil + } + msg.Ret.Close() + if msg.Name == "error" { + return nil, nil, fmt.Errorf("%s", strings.Join(msg.Args[:1], "")) + } + return nil, nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Error(msg string, args ...interface{}) error { + _, err := o.Send(&Message{Name: "error", Args: []string{fmt.Sprintf(msg, args...)}}) + return err +} + +func (o *Object) Connect() (net.Conn, error) { + ret, err := o.Send(&Message{Name: "connect", Ret: RetPipe}) + if err != nil { + return nil, err + } + // FIXME: set Att + msg, err := ret.Receive(0) + if err == io.EOF { + return nil, fmt.Errorf("unexpected EOF") + } + if msg.Name == "connect" { + if msg.Att == nil { + return nil, fmt.Errorf("missing attachment") + } + conn, err := net.FileConn(msg.Att) + if err != nil { + msg.Att.Close() + return nil, err + } + msg.Att.Close() + return conn, nil + } + if msg.Name == "error" { + return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) SetJson(val interface{}) error { + txt, err := json.Marshal(val) + if err != nil { + return err + } + return o.Set(string(txt)) +} + +func (o *Object) Set(vals ...string) error { + _, err := o.Send(&Message{Name: "set", Args: vals}) + return err +} + +func (o *Object) Get(key string) (string, error) { + ret, err := o.Send(&Message{Name: "get", Args: []string{key}, Ret: RetPipe}) + if err != nil { + return "", err + } + msg, err := ret.Receive(0) + if err == io.EOF { + return "", fmt.Errorf("unexpected EOF") + } + if msg.Name == "set" { + if err != nil { + return "", err + } + if len(msg.Args) != 1 { + return "", fmt.Errorf("protocol error") + } + return msg.Args[0], nil + } + if msg.Name == "error" { + return "", fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return "", fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Watch() (Receiver, error) { + ret, err := o.Send(&Message{Name: "watch", Ret: RetPipe}) + if err != nil { + return nil, err + } + msg, err := ret.Receive(0) + if msg.Name == "ok" { + return ret, nil + } + if msg.Name == "error" { + return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Start() error { + ret, err := o.Send(&Message{Name: "start", Ret: RetPipe}) + msg, err := ret.Receive(0) + if err == io.EOF { + return fmt.Errorf("unexpected EOF") + } + if Verb(msg.Name) == Ack { + return nil + } + if msg.Name == "error" { + return fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return fmt.Errorf("unexpected verb %v", msg.Name) +} From ef69ac0858bab0631e94f6e3d867fe7b63af0a9b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 3 Jun 2014 00:02:23 +0000 Subject: [PATCH 169/347] beam.Task: plumbing for a long running task Signed-off-by: Solomon Hykes --- beam/task.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 beam/task.go diff --git a/beam/task.go b/beam/task.go new file mode 100644 index 0000000000..57a8d2c411 --- /dev/null +++ b/beam/task.go @@ -0,0 +1,39 @@ +package beam + +import ( + "fmt" + "sync" +) + +func Task(f func(in Receiver, out Sender)) Sender { + var running bool + var l sync.RWMutex + inR, inW := Pipe() + outR, outW := Pipe() + obj := NewServer() + obj.OnAttach(Handler(func(msg *Message) error { + msg.Ret.Send(&Message{Name: "ack", Ret: inW}) + go func() { + fmt.Printf("copying task output from %#v to %#v\n", outR, msg.Ret) + defer fmt.Printf("(DONE) copying task output from %#v to %#v\n", outR, msg.Ret) + Copy(msg.Ret, outR) + msg.Ret.Close() + }() + return nil + })) + obj.OnStart(Handler(func(msg *Message) error { + l.RLock() + r := running + l.RUnlock() + if r { + return fmt.Errorf("already running") + } + l.Lock() + go f(inR, outW) + running = true + l.Unlock() + msg.Ret.Send(&Message{Name: "ack"}) + return nil + })) + return obj +} From 88828b27b80b999e1761fd902ff798f3d0775566 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 3 Jun 2014 00:03:01 +0000 Subject: [PATCH 170/347] beam.Tree: plumbing for an in-memory object tree Signed-off-by: Solomon Hykes --- beam/tree.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 beam/tree.go diff --git a/beam/tree.go b/beam/tree.go new file mode 100644 index 0000000000..7531a1ef06 --- /dev/null +++ b/beam/tree.go @@ -0,0 +1,44 @@ +package beam + +import ( + "sort" +) + +type Tree struct { + *Server + children map[string]Sender +} + +func NewTree() *Tree { + t := &Tree{ + Server: NewServer(), + children: make(map[string]Sender), + } + t.OnAttach(Handler(func(msg *Message) error { + if len(msg.Args) == 0 || msg.Args[0] == "" { + msg.Ret.Send(&Message{Name: "ack", Ret: t}) + return nil + } + if child, exists := t.children[msg.Args[0]]; exists { + msg.Ret.Send(&Message{Name: "ack", Ret: child}) + return nil + } + Obj(msg.Ret).Error("not found") + return nil + })) + t.OnLs(Handler(func(msg *Message) error { + names := make([]string, 0, len(t.children)) + for name := range t.children { + names = append(names, name) + } + sort.Strings(names) + Obj(msg.Ret).Set(names...) + return nil + })) + return t +} + +func (t *Tree) Bind(name string, dst Sender) *Tree { + t.children[name] = dst + return t +} From af2c34b3b5c7e8e5359f7fe498eda76175e2cdf4 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 3 Jun 2014 00:05:02 +0000 Subject: [PATCH 171/347] Simplify swarmd with new beam plumbing Signed-off-by: Solomon Hykes --- backends/backends.go | 101 ++++++++++++++++++------------------------- backends/debug.go | 33 -------------- swarmd/swarmd.go | 78 +++++++++++++-------------------- 3 files changed, 71 insertions(+), 141 deletions(-) delete mode 100644 backends/debug.go diff --git a/backends/backends.go b/backends/backends.go index 50f3150859..f194bb873e 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -3,8 +3,6 @@ package backends import ( "fmt" "github.com/docker/libswarm/beam" - beamutils "github.com/docker/libswarm/beam/utils" - "io" "strings" "time" ) @@ -15,62 +13,45 @@ import ( // engine, named after the desired backend. // // Example: `New().Job("debug").Run()` -func New() beam.Sender { - backends := beamutils.NewHub() - backends.RegisterName("cd", func(msg *beam.Message, out beam.Sender) (bool, error) { - return false, fmt.Errorf("no such backend: %s\n", strings.Join(msg.Args, " ")) - }) - backends.RegisterName("cd", func(msg *beam.Message, out beam.Sender) (bool, error) { - if len(msg.Args) > 0 && msg.Args[0] == "debug" { - debug, err := out.Send(&beam.Message{Name: "register", Ret: beam.RetPipe}) - if err != nil { - return false, err - } - // Spawn the debug object - go func() { - for { - msg, err := debug.Receive(beam.Ret) - if err == io.EOF { - return - } - if err != nil { - return - } - fmt.Printf("[DEBUG] %s %s\n", msg.Name, strings.Join(msg.Args, " ")) - if _, err := out.Send(msg); err != nil { - return - } - } - }() - return false, nil - } - return true, nil - }) - backends.RegisterName("cd", func(msg *beam.Message, out beam.Sender) (bool, error) { - if len(msg.Args) > 0 && msg.Args[0] == "fakeclient" { - _, err := out.Send(&beam.Message{Name: "register", Ret: beam.NopSender{}}) - if err != nil { - return false, err - } - // Spawm the fakeclient task - // FIXME: only do this after started? - go func() { - out.Send(&beam.Message{Name: "log", Args: []string{"fake client starting"}}) - defer out.Send(&beam.Message{Name: "log", Args: []string{"fake client terminating"}}) - for { - time.Sleep(1 * time.Second) - _, err := out.Send(&beam.Message{Name: "log", Args: []string{"fake client reporting for duty"}}) - if err != nil { - return - } - if _, err := out.Send(&beam.Message{Name: "children", Ret: beam.NopSender{}}); err != nil { - return - } - } - }() - return false, nil - } - return true, nil - }) - return backends +func New() *beam.Object { + backends := beam.NewTree() + backends.Bind("debug", Debug()) + backends.Bind("fakeclient", FakeClient()) + return beam.Obj(backends) +} + +func Debug() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + instance := beam.NewServer() + instance.Catchall(beam.Handler(func(msg *beam.Message) error { + fmt.Printf("[DEBUG] %s %s\n", msg.Name, strings.Join(msg.Args, " ")) + ctx.Ret.Send(msg) + return nil + })) + _, err := ctx.Ret.Send(&beam.Message{Name: string(beam.Ack), Ret: instance}) + return err + })) + return backend +} + +func FakeClient() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + // Instantiate a new fakeclient instance + instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + fmt.Printf("fake client!\n") + defer fmt.Printf("end of fake client!\n") + o := beam.Obj(out) + o.Log("fake client starting") + defer o.Log("fake client terminating") + for { + time.Sleep(1 * time.Second) + o.Log("fake client heartbeat!") + } + }) + _, err := ctx.Ret.Send(&beam.Message{Name: string(beam.Ack), Ret: instance}) + return err + })) + return backend } diff --git a/backends/debug.go b/backends/debug.go deleted file mode 100644 index 2cbf83e51c..0000000000 --- a/backends/debug.go +++ /dev/null @@ -1,33 +0,0 @@ -package backends - -import ( - "fmt" - "github.com/dotcloud/docker/engine" - "strings" -) - -func Debug() engine.Installer { - return &debug{} -} - -type debug struct { -} - -func (d *debug) Install(eng *engine.Engine) error { - eng.Register("debug", func(job *engine.Job) engine.Status { - job.Eng.RegisterCatchall(func(job *engine.Job) engine.Status { - fmt.Printf("--> %s %s\n", job.Name, strings.Join(job.Args, " ")) - for k, v := range job.Env().Map() { - fmt.Printf(" %s=%s\n", k, v) - } - // This helps us detect the race condition if our time.Sleep - // missed it. (see comment in main) - if job.Name == "acceptconnections" { - panic("race condition in github.com/dotcloud/docker/api/server/ServeApi") - } - return engine.StatusOK - }) - return engine.StatusOK - }) - return nil -} diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 3a963b6675..4cd74f2b55 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -5,7 +5,6 @@ import ( "github.com/codegangsta/cli" "github.com/docker/libswarm/backends" "github.com/docker/libswarm/beam" - beamutils "github.com/docker/libswarm/beam/utils" _ "github.com/dotcloud/docker/api/server" "github.com/flynn/go-shlex" "io" @@ -27,61 +26,44 @@ func main() { } func cmdDaemon(c *cli.Context) { - if len(c.Args()) == 0 { - Fatalf("Usage: %s backend [backend...]\n", c.App.Name) - } - - hub := beamutils.NewHub() - hub.RegisterName("log", func(msg *beam.Message, out beam.Sender) (bool, error) { + app := beam.NewServer() + app.OnLog(beam.Handler(func(msg *beam.Message) error { log.Printf("%s\n", strings.Join(msg.Args, " ")) - // Pass through to other logging hooks - return true, nil - }) - hub.RegisterName("error", func(msg *beam.Message, out beam.Sender) (bool, error) { - Fatalf("Fatal: %v", strings.Join(msg.Args, ":: ")) - return false, nil - }) + return nil + })) + app.OnError(beam.Handler(func(msg *beam.Message) error { + Fatalf("Fatal: %v", strings.Join(msg.Args[:1], "")) + return nil + })) back := backends.New() - // Load backends - for _, cmd := range c.Args() { - bName, bArgs, err := parseCmd(cmd) + if len(c.Args()) == 0 { + names, err := back.Ls() if err != nil { - Fatalf("%v", err) - } - fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) - backend, err := back.Send(&beam.Message{Name: "cd", Args: []string{bName}, Ret: beam.RetPipe}) - if err != nil { - Fatalf("%s: %v\n", bName, err) - } - // backend will return either 'error' or 'register'. - for { - m, err := backend.Receive(beam.Ret) - if err == io.EOF { - break - } - if err != nil { - Fatalf("error reading from backend: %v", err) - } - if _, err := hub.Send(m); err != nil { - Fatalf("error binding backend to hub: %v", err) - } + Fatalf("ls: %v", err) } + fmt.Println(strings.Join(names, "\n")) + return } - fmt.Printf("backends loaded. Sending 'start' to the hub\n") - job, err := hub.Send(&beam.Message{Name: "start", Ret: beam.RetPipe}) + bName, bArgs, err := parseCmd(c.Args()[0]) if err != nil { - Fatalf("%v", err) + Fatalf("parse: %v", err) } - for { - msg, err := job.Receive(0) - if err == io.EOF { - break - } - if err != nil { - Fatalf("%v", err) - } - fmt.Printf("--> %s %s\n", msg.Name, strings.Join(msg.Args, " ")) + fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) + events, backend, err := back.Attach(bName) + if err != nil { + Fatalf("%s: %v\n", bName, err) } + instance, err := backend.Spawn(bArgs...) + if err != nil { + Fatalf("spawn %s: %v\n", bName, err) + } + if err != nil { + Fatalf("attach: %v", err) + } + if err := instance.Start(); err != nil { + Fatalf("start: %v", err) + } + beam.Copy(app, events) } func parseCmd(txt string) (string, []string, error) { From 75b1e228cce0282b3406ee0614ac169b2eaf149d Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Wed, 4 Jun 2014 13:25:03 -0700 Subject: [PATCH 172/347] Remove extra goroutine wrapper in task.go Signed-off-by: Aanand Prasad Signed-off-by: Ben Firshman Signed-off-by: Solomon Hykes --- beam/task.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/beam/task.go b/beam/task.go index 57a8d2c411..0ceaec7ce4 100644 --- a/beam/task.go +++ b/beam/task.go @@ -13,12 +13,9 @@ func Task(f func(in Receiver, out Sender)) Sender { obj := NewServer() obj.OnAttach(Handler(func(msg *Message) error { msg.Ret.Send(&Message{Name: "ack", Ret: inW}) - go func() { - fmt.Printf("copying task output from %#v to %#v\n", outR, msg.Ret) - defer fmt.Printf("(DONE) copying task output from %#v to %#v\n", outR, msg.Ret) - Copy(msg.Ret, outR) - msg.Ret.Close() - }() + fmt.Printf("copying task output from %#v to %#v\n", outR, msg.Ret) + defer fmt.Printf("(DONE) copying task output from %#v to %#v\n", outR, msg.Ret) + Copy(msg.Ret, outR) return nil })) obj.OnStart(Handler(func(msg *Message) error { From 3a54fb513a3ae8d43e07550cfda4067fb60ee621 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Wed, 4 Jun 2014 13:26:09 -0700 Subject: [PATCH 173/347] Attach to backend instance before starting it Signed-off-by: Aanand Prasad Signed-off-by: Ben Firshman Signed-off-by: Solomon Hykes --- swarmd/swarmd.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 4cd74f2b55..63a50d496e 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -49,21 +49,28 @@ func cmdDaemon(c *cli.Context) { Fatalf("parse: %v", err) } fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) - events, backend, err := back.Attach(bName) + _, backend, err := back.Attach(bName) if err != nil { Fatalf("%s: %v\n", bName, err) } + fmt.Printf("---> Spawning\n") instance, err := backend.Spawn(bArgs...) if err != nil { Fatalf("spawn %s: %v\n", bName, err) } + fmt.Printf("---> Attaching\n") + instanceIn, _, err := instance.Attach("") if err != nil { Fatalf("attach: %v", err) } + fmt.Printf("---> Starting\n") if err := instance.Start(); err != nil { Fatalf("start: %v", err) } - beam.Copy(app, events) + _, err = beam.Copy(app, instanceIn) + if err != nil { + Fatalf("copy: %v", err) + } } func parseCmd(txt string) (string, []string, error) { From c752f6e66e14eb0507ba5f6cb86cf92d74970370 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 3 Jun 2014 09:56:20 +0000 Subject: [PATCH 174/347] Update usage message Signed-off-by: Solomon Hykes --- swarmd/swarmd.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 63a50d496e..ef4040f752 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -16,10 +16,9 @@ import ( func main() { app := cli.NewApp() app.Name = "swarmd" - app.Usage = "Control a heterogenous distributed system with the Docker API" + app.Usage = "Compose distributed systems from lightweight services" app.Version = "0.0.1" app.Flags = []cli.Flag{ - cli.StringFlag{"backend", "debug", "load a backend"}, } app.Action = cmdDaemon app.Run(os.Args) From c10e5255eeefef8873d47991e4e08982860b2e61 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 3 Jun 2014 10:13:13 +0000 Subject: [PATCH 175/347] Port the 'simulator' backend to beam Signed-off-by: Solomon Hykes --- backends/backends.go | 1 + backends/simulator.go | 43 ++++++++++++++++++------------------------- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index f194bb873e..431e90cb76 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -15,6 +15,7 @@ import ( // Example: `New().Job("debug").Run()` func New() *beam.Object { backends := beam.NewTree() + backends.Bind("simulator", Simulator()) backends.Bind("debug", Debug()) backends.Bind("fakeclient", FakeClient()) return beam.Obj(backends) diff --git a/backends/simulator.go b/backends/simulator.go index 99a4b72620..d324c86dc0 100644 --- a/backends/simulator.go +++ b/backends/simulator.go @@ -1,32 +1,25 @@ package backends import ( - "github.com/dotcloud/docker/engine" + "github.com/docker/libswarm/beam" ) -func Simulator() engine.Installer { - return &simulator{} -} - -type simulator struct { - containers []string -} - -func (s *simulator) Install(eng *engine.Engine) error { - eng.Register("simulator", func(job *engine.Job) engine.Status { - s.containers = job.Args - job.Eng.Register("containers", func(job *engine.Job) engine.Status { - t := engine.NewTable("Id", len(s.containers)) - for _, c := range s.containers { - e := &engine.Env{} - e.Set("Id", c) - e.Set("Image", "foobar") - t.Add(e) - } - t.WriteListTo(job.Stdout) - return engine.StatusOK +func Simulator() beam.Sender { + s := beam.NewServer() + s.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + containers := ctx.Args + instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + beam.Obj(out).Log("[simulator] starting\n") + s := beam.NewServer() + s.OnLs(beam.Handler(func(msg *beam.Message) error { + beam.Obj(out).Log("[simulator] generating fake list of objects...\n") + beam.Obj(msg.Ret).Set(containers...) + return nil + })) + beam.Copy(s, in) }) - return engine.StatusOK - }) - return nil + ctx.Ret.Send(&beam.Message{Name: "ack", Ret: instance}) + return nil + })) + return s } From 91c9eec591d8afed42dd4d098126b6d7c7f154e1 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 5 Jun 2014 06:00:50 +0000 Subject: [PATCH 176/347] Break down beam plumbing into smaller, simpler files Signed-off-by: Solomon Hykes --- beam/beam.go | 2 + beam/handler.go | 31 ++++++ beam/object.go | 189 ++++++++++++++++++++++++++++++++ beam/server.go | 68 ++++++++++++ beam/verbs.go | 279 ------------------------------------------------ 5 files changed, 290 insertions(+), 279 deletions(-) create mode 100644 beam/handler.go create mode 100644 beam/object.go create mode 100644 beam/server.go diff --git a/beam/beam.go b/beam/beam.go index 735d262c7e..fbd7f34ffc 100644 --- a/beam/beam.go +++ b/beam/beam.go @@ -62,3 +62,5 @@ func Repeater(payload *Message) Sender { return nil }) } + +var NotImplemented = Repeater(&Message{Name: "error", Args: []string{"not implemented"}}) diff --git a/beam/handler.go b/beam/handler.go new file mode 100644 index 0000000000..086a391c02 --- /dev/null +++ b/beam/handler.go @@ -0,0 +1,31 @@ +package beam + +import ( + "fmt" +) + +type Handler func(msg *Message) error + +func (h Handler) Send(msg *Message) (Receiver, error) { + var ret Receiver + if RetPipe.Equals(msg.Ret) { + ret, msg.Ret = Pipe() + } + go func() { + // Ret must always be a valid Sender, so handlers + // can safely send to it + if msg.Ret == nil { + msg.Ret = NopSender{} + } + err := h(msg) + if err != nil { + Obj(msg.Ret).Error("%v", err) + } + msg.Ret.Close() + }() + return ret, nil +} + +func (h Handler) Close() error { + return fmt.Errorf("can't close") +} diff --git a/beam/object.go b/beam/object.go new file mode 100644 index 0000000000..fa0a3791c5 --- /dev/null +++ b/beam/object.go @@ -0,0 +1,189 @@ +package beam + +import ( + "encoding/json" + "fmt" + "io" + "net" + "strings" +) + +// FIXME: rename Object to Client + +type Object struct { + Sender +} + +func Obj(dst Sender) *Object { + return &Object{dst} +} + +func (o *Object) Log(msg string, args ...interface{}) error { + _, err := o.Send(&Message{Name: "log", Args: []string{fmt.Sprintf(msg, args...)}}) + return err +} + +func (o *Object) Ls() ([]string, error) { + ret, err := o.Send(&Message{Name: "ls", Ret: RetPipe}) + if err != nil { + return nil, err + } + msg, err := ret.Receive(0) + if err == io.EOF { + return nil, fmt.Errorf("unexpected EOF") + } + if msg.Name == "set" { + if err != nil { + return nil, err + } + return msg.Args, nil + } + if msg.Name == "error" { + return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Spawn(cmd ...string) (out *Object, err error) { + ret, err := o.Send(&Message{Name: "spawn", Args: cmd, Ret: RetPipe}) + if err != nil { + return nil, err + } + msg, err := ret.Receive(Ret) + if err == io.EOF { + return nil, fmt.Errorf("unexpected EOF") + } + if err != nil { + return nil, err + } + if msg.Name == "ack" { + return &Object{msg.Ret}, nil + } + msg.Ret.Close() + if msg.Name == "error" { + return nil, fmt.Errorf("%s", strings.Join(msg.Args[:1], "")) + } + return nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Attach(name string) (in Receiver, out *Object, err error) { + ret, err := o.Send(&Message{Name: "attach", Args: []string{name}, Ret: RetPipe}) + if err != nil { + return nil, nil, err + } + msg, err := ret.Receive(Ret) + if err == io.EOF { + return nil, nil, fmt.Errorf("unexpected EOF") + } + if err != nil { + return nil, nil, err + } + if msg.Name == "ack" { + return ret, &Object{msg.Ret}, nil + } + msg.Ret.Close() + if msg.Name == "error" { + return nil, nil, fmt.Errorf("%s", strings.Join(msg.Args[:1], "")) + } + return nil, nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Error(msg string, args ...interface{}) error { + _, err := o.Send(&Message{Name: "error", Args: []string{fmt.Sprintf(msg, args...)}}) + return err +} + +func (o *Object) Connect() (net.Conn, error) { + ret, err := o.Send(&Message{Name: "connect", Ret: RetPipe}) + if err != nil { + return nil, err + } + // FIXME: set Att + msg, err := ret.Receive(0) + if err == io.EOF { + return nil, fmt.Errorf("unexpected EOF") + } + if msg.Name == "connect" { + if msg.Att == nil { + return nil, fmt.Errorf("missing attachment") + } + conn, err := net.FileConn(msg.Att) + if err != nil { + msg.Att.Close() + return nil, err + } + msg.Att.Close() + return conn, nil + } + if msg.Name == "error" { + return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) SetJson(val interface{}) error { + txt, err := json.Marshal(val) + if err != nil { + return err + } + return o.Set(string(txt)) +} + +func (o *Object) Set(vals ...string) error { + _, err := o.Send(&Message{Name: "set", Args: vals}) + return err +} + +func (o *Object) Get(key string) (string, error) { + ret, err := o.Send(&Message{Name: "get", Args: []string{key}, Ret: RetPipe}) + if err != nil { + return "", err + } + msg, err := ret.Receive(0) + if err == io.EOF { + return "", fmt.Errorf("unexpected EOF") + } + if msg.Name == "set" { + if err != nil { + return "", err + } + if len(msg.Args) != 1 { + return "", fmt.Errorf("protocol error") + } + return msg.Args[0], nil + } + if msg.Name == "error" { + return "", fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return "", fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Watch() (Receiver, error) { + ret, err := o.Send(&Message{Name: "watch", Ret: RetPipe}) + if err != nil { + return nil, err + } + msg, err := ret.Receive(0) + if msg.Name == "ok" { + return ret, nil + } + if msg.Name == "error" { + return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return nil, fmt.Errorf("unexpected verb %v", msg.Name) +} + +func (o *Object) Start() error { + ret, err := o.Send(&Message{Name: "start", Ret: RetPipe}) + msg, err := ret.Receive(0) + if err == io.EOF { + return fmt.Errorf("unexpected EOF") + } + if Verb(msg.Name) == Ack { + return nil + } + if msg.Name == "error" { + return fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return fmt.Errorf("unexpected verb %v", msg.Name) +} diff --git a/beam/server.go b/beam/server.go new file mode 100644 index 0000000000..91ca96fd56 --- /dev/null +++ b/beam/server.go @@ -0,0 +1,68 @@ +package beam + +import ( + "fmt" +) + +type Server struct { + handlers map[Verb]Sender + catchall Sender +} + +func NewServer() *Server { + return &Server{ + handlers: make(map[Verb]Sender), + } +} + +func (s *Server) Catchall(h Sender) *Server { + s.catchall = h + return s +} + +func (s *Server) OnVerb(v Verb, h Sender) *Server { + s.handlers[v] = h + return s +} + +func (s *Server) OnSpawn(h Sender) *Server { + return s.OnVerb(Spawn, h) +} + +func (s *Server) OnStart(h Sender) *Server { + return s.OnVerb(Start, h) +} + +func (s *Server) OnStop(h Sender) *Server { + return s.OnVerb(Stop, h) +} + +func (s *Server) OnAttach(h Sender) *Server { + return s.OnVerb(Attach, h) +} + +func (s *Server) OnLog(h Sender) *Server { + return s.OnVerb(Log, h) +} + +func (s *Server) OnError(h Sender) *Server { + return s.OnVerb(Error, h) +} + +func (s *Server) OnLs(h Sender) *Server { + return s.OnVerb(Ls, h) +} + +func (s *Server) Send(msg *Message) (Receiver, error) { + if h, exists := s.handlers[Verb(msg.Name)]; exists { + return h.Send(msg) + } + if s.catchall != nil { + return s.catchall.Send(msg) + } + return NotImplemented.Send(msg) +} + +func (s *Server) Close() error { + return fmt.Errorf("can't close") +} diff --git a/beam/verbs.go b/beam/verbs.go index 1b9aab61a9..b55dc075e3 100644 --- a/beam/verbs.go +++ b/beam/verbs.go @@ -1,13 +1,5 @@ package beam -import ( - "encoding/json" - "fmt" - "io" - "net" - "strings" -) - type Verb string var ( @@ -23,274 +15,3 @@ var ( Error Verb = "error" Ls Verb = "ls" ) - -var NotImplemented = Repeater(&Message{Name: "error", Args: []string{"not implemented"}}) - -type Handler func(msg *Message) error - -func (h Handler) Send(msg *Message) (Receiver, error) { - var ret Receiver - if RetPipe.Equals(msg.Ret) { - ret, msg.Ret = Pipe() - } - go func() { - // Ret must always be a valid Sender, so handlers - // can safely send to it - if msg.Ret == nil { - msg.Ret = NopSender{} - } - err := h(msg) - if err != nil { - Obj(msg.Ret).Error("%v", err) - } - msg.Ret.Close() - }() - return ret, nil -} - -func (h Handler) Close() error { - return fmt.Errorf("can't close") -} - -type Server struct { - handlers map[Verb]Sender - catchall Sender -} - -func NewServer() *Server { - return &Server{ - handlers: make(map[Verb]Sender), - } -} - -func (s *Server) Catchall(h Sender) *Server { - s.catchall = h - return s -} - -func (s *Server) OnVerb(v Verb, h Sender) *Server { - s.handlers[v] = h - return s -} - -func (s *Server) OnSpawn(h Sender) *Server { - return s.OnVerb(Spawn, h) -} - -func (s *Server) OnStart(h Sender) *Server { - return s.OnVerb(Start, h) -} - -func (s *Server) OnStop(h Sender) *Server { - return s.OnVerb(Stop, h) -} - -func (s *Server) OnAttach(h Sender) *Server { - return s.OnVerb(Attach, h) -} - -func (s *Server) OnLog(h Sender) *Server { - return s.OnVerb(Log, h) -} - -func (s *Server) OnError(h Sender) *Server { - return s.OnVerb(Error, h) -} - -func (s *Server) OnLs(h Sender) *Server { - return s.OnVerb(Ls, h) -} - -func (s *Server) Send(msg *Message) (Receiver, error) { - if h, exists := s.handlers[Verb(msg.Name)]; exists { - return h.Send(msg) - } - if s.catchall != nil { - return s.catchall.Send(msg) - } - return NotImplemented.Send(msg) -} - -func (s *Server) Close() error { - return fmt.Errorf("can't close") -} - -// FIXME: rename Object to Client - -type Object struct { - Sender -} - -func Obj(dst Sender) *Object { - return &Object{dst} -} - -func (o *Object) Log(msg string, args ...interface{}) error { - _, err := o.Send(&Message{Name: "log", Args: []string{fmt.Sprintf(msg, args...)}}) - return err -} - -func (o *Object) Ls() ([]string, error) { - ret, err := o.Send(&Message{Name: "ls", Ret: RetPipe}) - if err != nil { - return nil, err - } - msg, err := ret.Receive(0) - if err == io.EOF { - return nil, fmt.Errorf("unexpected EOF") - } - if msg.Name == "set" { - if err != nil { - return nil, err - } - return msg.Args, nil - } - if msg.Name == "error" { - return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) - } - return nil, fmt.Errorf("unexpected verb %v", msg.Name) -} - -func (o *Object) Spawn(cmd ...string) (out *Object, err error) { - ret, err := o.Send(&Message{Name: "spawn", Args: cmd, Ret: RetPipe}) - if err != nil { - return nil, err - } - msg, err := ret.Receive(Ret) - if err == io.EOF { - return nil, fmt.Errorf("unexpected EOF") - } - if err != nil { - return nil, err - } - if msg.Name == "ack" { - return &Object{msg.Ret}, nil - } - msg.Ret.Close() - if msg.Name == "error" { - return nil, fmt.Errorf("%s", strings.Join(msg.Args[:1], "")) - } - return nil, fmt.Errorf("unexpected verb %v", msg.Name) -} - -func (o *Object) Attach(name string) (in Receiver, out *Object, err error) { - ret, err := o.Send(&Message{Name: "attach", Args: []string{name}, Ret: RetPipe}) - if err != nil { - return nil, nil, err - } - msg, err := ret.Receive(Ret) - if err == io.EOF { - return nil, nil, fmt.Errorf("unexpected EOF") - } - if err != nil { - return nil, nil, err - } - if msg.Name == "ack" { - return ret, &Object{msg.Ret}, nil - } - msg.Ret.Close() - if msg.Name == "error" { - return nil, nil, fmt.Errorf("%s", strings.Join(msg.Args[:1], "")) - } - return nil, nil, fmt.Errorf("unexpected verb %v", msg.Name) -} - -func (o *Object) Error(msg string, args ...interface{}) error { - _, err := o.Send(&Message{Name: "error", Args: []string{fmt.Sprintf(msg, args...)}}) - return err -} - -func (o *Object) Connect() (net.Conn, error) { - ret, err := o.Send(&Message{Name: "connect", Ret: RetPipe}) - if err != nil { - return nil, err - } - // FIXME: set Att - msg, err := ret.Receive(0) - if err == io.EOF { - return nil, fmt.Errorf("unexpected EOF") - } - if msg.Name == "connect" { - if msg.Att == nil { - return nil, fmt.Errorf("missing attachment") - } - conn, err := net.FileConn(msg.Att) - if err != nil { - msg.Att.Close() - return nil, err - } - msg.Att.Close() - return conn, nil - } - if msg.Name == "error" { - return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) - } - return nil, fmt.Errorf("unexpected verb %v", msg.Name) -} - -func (o *Object) SetJson(val interface{}) error { - txt, err := json.Marshal(val) - if err != nil { - return err - } - return o.Set(string(txt)) -} - -func (o *Object) Set(vals ...string) error { - _, err := o.Send(&Message{Name: "set", Args: vals}) - return err -} - -func (o *Object) Get(key string) (string, error) { - ret, err := o.Send(&Message{Name: "get", Args: []string{key}, Ret: RetPipe}) - if err != nil { - return "", err - } - msg, err := ret.Receive(0) - if err == io.EOF { - return "", fmt.Errorf("unexpected EOF") - } - if msg.Name == "set" { - if err != nil { - return "", err - } - if len(msg.Args) != 1 { - return "", fmt.Errorf("protocol error") - } - return msg.Args[0], nil - } - if msg.Name == "error" { - return "", fmt.Errorf(strings.Join(msg.Args[:1], "")) - } - return "", fmt.Errorf("unexpected verb %v", msg.Name) -} - -func (o *Object) Watch() (Receiver, error) { - ret, err := o.Send(&Message{Name: "watch", Ret: RetPipe}) - if err != nil { - return nil, err - } - msg, err := ret.Receive(0) - if msg.Name == "ok" { - return ret, nil - } - if msg.Name == "error" { - return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) - } - return nil, fmt.Errorf("unexpected verb %v", msg.Name) -} - -func (o *Object) Start() error { - ret, err := o.Send(&Message{Name: "start", Ret: RetPipe}) - msg, err := ret.Receive(0) - if err == io.EOF { - return fmt.Errorf("unexpected EOF") - } - if Verb(msg.Name) == Ack { - return nil - } - if msg.Name == "error" { - return fmt.Errorf(strings.Join(msg.Args[:1], "")) - } - return fmt.Errorf("unexpected verb %v", msg.Name) -} From 56ee97a572dc7584a67800ef5724cb2953004014 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 5 Jun 2014 07:00:30 +0000 Subject: [PATCH 177/347] Remove Hub Signed-off-by: Solomon Hykes --- beam/utils/hub.go | 116 ----------------------------------------- beam/utils/hub_test.go | 62 ---------------------- 2 files changed, 178 deletions(-) delete mode 100644 beam/utils/hub.go delete mode 100644 beam/utils/hub_test.go diff --git a/beam/utils/hub.go b/beam/utils/hub.go deleted file mode 100644 index 8c5f315089..0000000000 --- a/beam/utils/hub.go +++ /dev/null @@ -1,116 +0,0 @@ -package utils - -import ( - "fmt" - "github.com/docker/libswarm/beam" - "io" - "strings" - "sync" -) - -// Hub passes messages to dynamically registered handlers. -type Hub struct { - handlers *StackSender - tasks sync.WaitGroup - l sync.RWMutex -} - -func NewHub() *Hub { - return &Hub{ - handlers: NewStackSender(), - } -} - -func (hub *Hub) Send(msg *beam.Message) (ret beam.Receiver, err error) { - if msg.Name == "register" { - if msg.Ret == nil { - return nil, fmt.Errorf("register: no return channel") - } - fmt.Printf("[hub] received %v\n", msg) - hIn := msg.Ret - if hIn == beam.RetPipe { - ret, hIn = beam.Pipe() - } - // This queue guarantees that the first message received by the handler - // is the "register" response. - hIn = NewQueue(hIn, 1) - // Reply to the handler with a "register" call of our own, - // passing a reference to the previous handler stack. - // This allows the new handler to query previous handlers - // without creating loops. - hOut, err := hIn.Send(&beam.Message{Name: "register", Ret: beam.RetPipe}) - if err != nil { - return nil, err - } - // Register the new handler on top of the others, - // and get a reference to the previous stack of handlers. - prevHandlers := hub.handlers.Add(hIn) - go beam.Copy(prevHandlers, hOut) - return ret, nil - } - fmt.Printf("sending %#v to %d handlers\n", msg, hub.handlers.Len()) - return hub.handlers.Send(msg) -} - -func (hub *Hub) RegisterTask(h func(beam.Receiver, beam.Sender) error) error { - ret, err := hub.Send(&beam.Message{Name: "register", Ret: beam.RetPipe}) - if err != nil { - return err - } - ack, err := ret.Receive(beam.Ret) - if err != nil { - return err - } - if ack.Name == "error" { - return fmt.Errorf(strings.Join(ack.Args, ", ")) - } - if ack.Name != "register" { - return fmt.Errorf("invalid response: expected verb 'register', got '%v'", ack.Name) - } - go func() { - h(ret, ack.Ret) - ack.Ret.Close() - }() - return nil -} - -type Handler func(msg *beam.Message, out beam.Sender) (pass bool, err error) - -func (hub *Hub) RegisterName(name string, h Handler) error { - return hub.RegisterTask(func(in beam.Receiver, out beam.Sender) error { - for { - msg, err := in.Receive(beam.Ret) - if err == io.EOF { - break - } - if err != nil { - return err - } - var pass = true - if msg.Name == name || name == "" { - pass, err = h(msg, out) - if err != nil { - if _, err := msg.Ret.Send(&beam.Message{Name: "error", Args: []string{err.Error()}}); err != nil { - return err - } - } - } - if pass { - if _, err := out.Send(msg); err != nil { - return err - } - } else { - msg.Ret.Close() - } - } - return nil - }) -} - -func (hub *Hub) Wait() { - hub.tasks.Wait() -} - -func (hub *Hub) Close() error { - return hub.handlers.Close() -} diff --git a/beam/utils/hub_test.go b/beam/utils/hub_test.go deleted file mode 100644 index 925e2894bc..0000000000 --- a/beam/utils/hub_test.go +++ /dev/null @@ -1,62 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" - "github.com/dotcloud/docker/pkg/testutils" - "testing" -) - -func TestHubSendEmpty(t *testing.T) { - hub := NewHub() - // Send to empty hub should silently drop - ret, err := hub.Send(&beam.Message{Name: "hello", Args: nil, Ret: beam.RetPipe}) - // Send must not return an error - if err != nil { - t.Fatal(err) - } - // We set beam.R, so a valid return pipe must be returned - if ret == nil { - t.Fatalf("%#v", ret) - } -} - -type CountSender int - -func (s *CountSender) Send(msg *beam.Message) (beam.Receiver, error) { - (*s)++ - return nil, nil -} - -func TestHubSendOneHandler(t *testing.T) { - hub := NewHub() - defer hub.Close() - testutils.Timeout(t, func() { - handlerIn, err := hub.Send(&beam.Message{Name: "register", Args: nil, Ret: beam.RetPipe}) - if err != nil { - t.Fatal(err) - } - ack, err := handlerIn.Receive(beam.Ret) - if err != nil { - t.Fatal(err) - } - if ack.Name != "register" { - t.Fatalf("%#v", err) - } - handlerOut := ack.Ret - if handlerOut == nil { - t.Fatalf("nil handler out") - } - go func() { - if _, err := hub.Send(&beam.Message{Name: "hello", Args: nil}); err != nil { - t.Fatal(err) - } - }() - msg, err := handlerIn.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Name != "hello" { - t.Fatalf("%#v", msg) - } - }) -} From d95b9728e849385d1aff79f3efdc64a8258c2a05 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 5 Jun 2014 07:02:21 +0000 Subject: [PATCH 178/347] beam: encode Verb in an enum instead of a string Signed-off-bu: Solomon Hykes --- backends/backends.go | 6 +-- backends/simulator.go | 2 +- beam/beam.go | 4 +- beam/inmem_test.go | 19 ++++---- beam/object.go | 62 ++++++++++++------------- beam/server.go | 2 +- beam/task.go | 4 +- beam/tree.go | 4 +- beam/unix/conn.go | 9 +++- beam/unix/conn_test.go | 98 ++++------------------------------------ beam/utils/queue_test.go | 10 ++-- beam/utils/stack_test.go | 18 ++++---- beam/verbs.go | 28 ++++++------ 13 files changed, 98 insertions(+), 168 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index 431e90cb76..a38d54b778 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -26,11 +26,11 @@ func Debug() beam.Sender { backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { instance := beam.NewServer() instance.Catchall(beam.Handler(func(msg *beam.Message) error { - fmt.Printf("[DEBUG] %s %s\n", msg.Name, strings.Join(msg.Args, " ")) + fmt.Printf("[DEBUG] %s %s\n", msg.Verb, strings.Join(msg.Args, " ")) ctx.Ret.Send(msg) return nil })) - _, err := ctx.Ret.Send(&beam.Message{Name: string(beam.Ack), Ret: instance}) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) return err })) return backend @@ -51,7 +51,7 @@ func FakeClient() beam.Sender { o.Log("fake client heartbeat!") } }) - _, err := ctx.Ret.Send(&beam.Message{Name: string(beam.Ack), Ret: instance}) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) return err })) return backend diff --git a/backends/simulator.go b/backends/simulator.go index d324c86dc0..b77577aa38 100644 --- a/backends/simulator.go +++ b/backends/simulator.go @@ -18,7 +18,7 @@ func Simulator() beam.Sender { })) beam.Copy(s, in) }) - ctx.Ret.Send(&beam.Message{Name: "ack", Ret: instance}) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) return nil })) return s diff --git a/beam/beam.go b/beam/beam.go index fbd7f34ffc..b89ba8317e 100644 --- a/beam/beam.go +++ b/beam/beam.go @@ -15,7 +15,7 @@ type Receiver interface { } type Message struct { - Name string + Verb Verb Args []string Att *os.File Ret Sender @@ -63,4 +63,4 @@ func Repeater(payload *Message) Sender { }) } -var NotImplemented = Repeater(&Message{Name: "error", Args: []string{"not implemented"}}) +var NotImplemented = Repeater(&Message{Verb: Error, Args: []string{"not implemented"}}) diff --git a/beam/inmem_test.go b/beam/inmem_test.go index d1574c37ea..e3826e9148 100644 --- a/beam/inmem_test.go +++ b/beam/inmem_test.go @@ -14,7 +14,8 @@ func TestInmemRetPipe(t *testing.T) { defer w.Close() wait := make(chan struct{}) go func() { - ret, err := w.Send(&Message{Name: "hello", Ret: RetPipe}) + defer close(wait) + ret, err := w.Send(&Message{Verb: Log, Args: []string{"hello"}, Ret: RetPipe}) if err != nil { t.Fatal(err) } @@ -22,16 +23,18 @@ func TestInmemRetPipe(t *testing.T) { if err != nil { t.Fatal(err) } - if msg.Name != "this better not crash" { + if msg.Verb != Ack { + t.Fatalf("%#v", msg) + } + if msg.Args[0] != "this better not crash" { t.Fatalf("%#v", msg) } - close(wait) }() msg, err := r.Receive(Ret) if err != nil { t.Fatal(err) } - if _, err := msg.Ret.Send(&Message{Name: "this better not crash"}); err != nil { + if _, err := msg.Ret.Send(&Message{Verb: Ack, Args: []string{"this better not crash"}}); err != nil { t.Fatal(err) } <-wait @@ -47,14 +50,14 @@ func TestSimpleSend(t *testing.T) { if err != nil { t.Fatal(err) } - if msg.Name != "print" { + if msg.Verb != Log { t.Fatalf("%#v", *msg) } if msg.Args[0] != "hello world" { t.Fatalf("%#v", *msg) } }() - if _, err := w.Send(&Message{Name: "print", Args: []string{"hello world"}}); err != nil { + if _, err := w.Send(&Message{Verb: Log, Args: []string{"hello world"}}); err != nil { t.Fatal(err) } }) @@ -116,7 +119,7 @@ func TestSendFile(t *testing.T) { tmp.Seek(0, 0) testutils.Timeout(t, func() { go func() { - _, err := w.Send(&Message{Name: "file", Args: []string{"path=" + tmp.Name()}, Att: tmp}) + _, err := w.Send(&Message{Verb: File, Args: []string{"path=" + tmp.Name()}, Att: tmp}) if err != nil { t.Fatal(err) } @@ -125,7 +128,7 @@ func TestSendFile(t *testing.T) { if err != nil { t.Fatal(err) } - if msg.Name != "file" { + if msg.Verb != File { t.Fatalf("%#v", msg) } if msg.Args[0] != "path="+tmp.Name() { diff --git a/beam/object.go b/beam/object.go index fa0a3791c5..270eee17ad 100644 --- a/beam/object.go +++ b/beam/object.go @@ -19,12 +19,12 @@ func Obj(dst Sender) *Object { } func (o *Object) Log(msg string, args ...interface{}) error { - _, err := o.Send(&Message{Name: "log", Args: []string{fmt.Sprintf(msg, args...)}}) + _, err := o.Send(&Message{Verb: Log, Args: []string{fmt.Sprintf(msg, args...)}}) return err } func (o *Object) Ls() ([]string, error) { - ret, err := o.Send(&Message{Name: "ls", Ret: RetPipe}) + ret, err := o.Send(&Message{Verb: Ls, Ret: RetPipe}) if err != nil { return nil, err } @@ -32,20 +32,20 @@ func (o *Object) Ls() ([]string, error) { if err == io.EOF { return nil, fmt.Errorf("unexpected EOF") } - if msg.Name == "set" { + if msg.Verb == Set { if err != nil { return nil, err } return msg.Args, nil } - if msg.Name == "error" { + if msg.Verb == Error { return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) } - return nil, fmt.Errorf("unexpected verb %v", msg.Name) + return nil, fmt.Errorf("unexpected verb %v", msg.Verb) } func (o *Object) Spawn(cmd ...string) (out *Object, err error) { - ret, err := o.Send(&Message{Name: "spawn", Args: cmd, Ret: RetPipe}) + ret, err := o.Send(&Message{Verb: Spawn, Args: cmd, Ret: RetPipe}) if err != nil { return nil, err } @@ -56,18 +56,18 @@ func (o *Object) Spawn(cmd ...string) (out *Object, err error) { if err != nil { return nil, err } - if msg.Name == "ack" { + if msg.Verb == Ack { return &Object{msg.Ret}, nil } msg.Ret.Close() - if msg.Name == "error" { + if msg.Verb == Error { return nil, fmt.Errorf("%s", strings.Join(msg.Args[:1], "")) } - return nil, fmt.Errorf("unexpected verb %v", msg.Name) + return nil, fmt.Errorf("unexpected verb %v", msg.Verb) } func (o *Object) Attach(name string) (in Receiver, out *Object, err error) { - ret, err := o.Send(&Message{Name: "attach", Args: []string{name}, Ret: RetPipe}) + ret, err := o.Send(&Message{Verb: Attach, Args: []string{name}, Ret: RetPipe}) if err != nil { return nil, nil, err } @@ -78,23 +78,23 @@ func (o *Object) Attach(name string) (in Receiver, out *Object, err error) { if err != nil { return nil, nil, err } - if msg.Name == "ack" { + if msg.Verb == Ack { return ret, &Object{msg.Ret}, nil } msg.Ret.Close() - if msg.Name == "error" { + if msg.Verb == Error { return nil, nil, fmt.Errorf("%s", strings.Join(msg.Args[:1], "")) } - return nil, nil, fmt.Errorf("unexpected verb %v", msg.Name) + return nil, nil, fmt.Errorf("unexpected verb %v", msg.Verb) } func (o *Object) Error(msg string, args ...interface{}) error { - _, err := o.Send(&Message{Name: "error", Args: []string{fmt.Sprintf(msg, args...)}}) + _, err := o.Send(&Message{Verb: Error, Args: []string{fmt.Sprintf(msg, args...)}}) return err } func (o *Object) Connect() (net.Conn, error) { - ret, err := o.Send(&Message{Name: "connect", Ret: RetPipe}) + ret, err := o.Send(&Message{Verb: Connect, Ret: RetPipe}) if err != nil { return nil, err } @@ -103,7 +103,7 @@ func (o *Object) Connect() (net.Conn, error) { if err == io.EOF { return nil, fmt.Errorf("unexpected EOF") } - if msg.Name == "connect" { + if msg.Verb == Connect { if msg.Att == nil { return nil, fmt.Errorf("missing attachment") } @@ -115,10 +115,10 @@ func (o *Object) Connect() (net.Conn, error) { msg.Att.Close() return conn, nil } - if msg.Name == "error" { + if msg.Verb == Error { return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) } - return nil, fmt.Errorf("unexpected verb %v", msg.Name) + return nil, fmt.Errorf("unexpected verb %v", msg.Verb) } func (o *Object) SetJson(val interface{}) error { @@ -130,12 +130,12 @@ func (o *Object) SetJson(val interface{}) error { } func (o *Object) Set(vals ...string) error { - _, err := o.Send(&Message{Name: "set", Args: vals}) + _, err := o.Send(&Message{Verb: Set, Args: vals}) return err } func (o *Object) Get(key string) (string, error) { - ret, err := o.Send(&Message{Name: "get", Args: []string{key}, Ret: RetPipe}) + ret, err := o.Send(&Message{Verb: Get, Args: []string{key}, Ret: RetPipe}) if err != nil { return "", err } @@ -143,7 +143,7 @@ func (o *Object) Get(key string) (string, error) { if err == io.EOF { return "", fmt.Errorf("unexpected EOF") } - if msg.Name == "set" { + if msg.Verb == Set { if err != nil { return "", err } @@ -152,38 +152,38 @@ func (o *Object) Get(key string) (string, error) { } return msg.Args[0], nil } - if msg.Name == "error" { + if msg.Verb == Error { return "", fmt.Errorf(strings.Join(msg.Args[:1], "")) } - return "", fmt.Errorf("unexpected verb %v", msg.Name) + return "", fmt.Errorf("unexpected verb %v", msg.Verb) } func (o *Object) Watch() (Receiver, error) { - ret, err := o.Send(&Message{Name: "watch", Ret: RetPipe}) + ret, err := o.Send(&Message{Verb: Watch, Ret: RetPipe}) if err != nil { return nil, err } msg, err := ret.Receive(0) - if msg.Name == "ok" { + if msg.Verb == Ack { return ret, nil } - if msg.Name == "error" { + if msg.Verb == Error { return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) } - return nil, fmt.Errorf("unexpected verb %v", msg.Name) + return nil, fmt.Errorf("unexpected verb %v", msg.Verb) } func (o *Object) Start() error { - ret, err := o.Send(&Message{Name: "start", Ret: RetPipe}) + ret, err := o.Send(&Message{Verb: Start, Ret: RetPipe}) msg, err := ret.Receive(0) if err == io.EOF { return fmt.Errorf("unexpected EOF") } - if Verb(msg.Name) == Ack { + if msg.Verb == Ack { return nil } - if msg.Name == "error" { + if msg.Verb == Error { return fmt.Errorf(strings.Join(msg.Args[:1], "")) } - return fmt.Errorf("unexpected verb %v", msg.Name) + return fmt.Errorf("unexpected verb %v", msg.Verb) } diff --git a/beam/server.go b/beam/server.go index 91ca96fd56..4c7e4e0c7f 100644 --- a/beam/server.go +++ b/beam/server.go @@ -54,7 +54,7 @@ func (s *Server) OnLs(h Sender) *Server { } func (s *Server) Send(msg *Message) (Receiver, error) { - if h, exists := s.handlers[Verb(msg.Name)]; exists { + if h, exists := s.handlers[msg.Verb]; exists { return h.Send(msg) } if s.catchall != nil { diff --git a/beam/task.go b/beam/task.go index 0ceaec7ce4..94eb1c59fc 100644 --- a/beam/task.go +++ b/beam/task.go @@ -12,7 +12,7 @@ func Task(f func(in Receiver, out Sender)) Sender { outR, outW := Pipe() obj := NewServer() obj.OnAttach(Handler(func(msg *Message) error { - msg.Ret.Send(&Message{Name: "ack", Ret: inW}) + msg.Ret.Send(&Message{Verb: Ack, Ret: inW}) fmt.Printf("copying task output from %#v to %#v\n", outR, msg.Ret) defer fmt.Printf("(DONE) copying task output from %#v to %#v\n", outR, msg.Ret) Copy(msg.Ret, outR) @@ -29,7 +29,7 @@ func Task(f func(in Receiver, out Sender)) Sender { go f(inR, outW) running = true l.Unlock() - msg.Ret.Send(&Message{Name: "ack"}) + msg.Ret.Send(&Message{Verb: Ack}) return nil })) return obj diff --git a/beam/tree.go b/beam/tree.go index 7531a1ef06..daabed9384 100644 --- a/beam/tree.go +++ b/beam/tree.go @@ -16,11 +16,11 @@ func NewTree() *Tree { } t.OnAttach(Handler(func(msg *Message) error { if len(msg.Args) == 0 || msg.Args[0] == "" { - msg.Ret.Send(&Message{Name: "ack", Ret: t}) + msg.Ret.Send(&Message{Verb: Ack, Ret: t}) return nil } if child, exists := t.children[msg.Args[0]]; exists { - msg.Ret.Send(&Message{Name: "ack", Ret: child}) + msg.Ret.Send(&Message{Verb: Ack, Ret: child}) return nil } Obj(msg.Ret).Error("not found") diff --git a/beam/unix/conn.go b/beam/unix/conn.go index 24c63647ff..2d0acef440 100644 --- a/beam/unix/conn.go +++ b/beam/unix/conn.go @@ -3,6 +3,7 @@ package unix import ( "fmt" "os" + "strconv" "github.com/docker/libswarm/beam" "github.com/docker/libswarm/beam/data" @@ -54,7 +55,7 @@ func (c *Conn) Send(msg *beam.Message) (beam.Receiver, error) { if msg.Att != nil { return nil, fmt.Errorf("file attachment not yet implemented in unix transport") } - parts := []string{msg.Name} + parts := []string{fmt.Sprintf("%d", msg.Verb)} parts = append(parts, msg.Args...) b := []byte(data.EncodeList(parts)) // Setup nested streams @@ -120,7 +121,11 @@ func (c *Conn) Receive(mode int) (*beam.Message, error) { if len(parts) == 0 { return nil, fmt.Errorf("malformed message") } - msg := &beam.Message{Name: parts[0], Args: parts[1:]} + v, err := strconv.ParseUint(parts[0], 10, 32) + if err != nil { + return nil, err + } + msg := &beam.Message{Verb: beam.Verb(v), Args: parts[1:]} // Apply mode mask if fd != nil { diff --git a/beam/unix/conn_test.go b/beam/unix/conn_test.go index 074201cf79..09884cc6e7 100644 --- a/beam/unix/conn_test.go +++ b/beam/unix/conn_test.go @@ -15,21 +15,18 @@ func TestPair(t *testing.T) { defer w.Close() testutils.Timeout(t, func() { go func() { - msg, in, out, err := r.Receive(0) + msg, err := r.Receive(0) if err != nil { t.Fatal(err) } - if msg.Name != "print" { + if msg.Verb != beam.Log { t.Fatalf("%#v", *msg) } if msg.Args[0] != "hello world" { t.Fatalf("%#v", *msg) } - if in != nil && out != nil { - t.Fatal("Unexpected return value") - } }() - _, _, err := w.Send(&beam.Message{Name: "print", Args: []string{"hello world"}}, 0) + _, err := w.Send(&beam.Message{Verb: beam.Log, Args: []string{"hello world"}}) if err != nil { t.Fatal(err) } @@ -47,108 +44,31 @@ func TestSendReply(t *testing.T) { // Send go func() { // Send a message with mode=R - in, out, err := w.Send(&beam.Message{Args: []string{"this is the request"}}, beam.R) + ret, err := w.Send(&beam.Message{Args: []string{"this is the request"}, Ret: beam.RetPipe}) if err != nil { t.Fatal(err) } - assertMode(t, in, out, beam.R) // Read for a reply - resp, _, _, err := in.Receive(0) + msg, err := ret.Receive(0) if err != nil { t.Fatal(err) } - if resp.Args[0] != "this is the reply" { - t.Fatalf("%#v", resp) + if msg.Args[0] != "this is the reply" { + t.Fatalf("%#v", msg) } }() // Receive a message with mode=W - msg, in, out, err := r.Receive(beam.W) + msg, err := r.Receive(beam.Ret) if err != nil { t.Fatal(err) } if msg.Args[0] != "this is the request" { t.Fatalf("%#v", msg) } - assertMode(t, in, out, beam.W) // Send a reply - _, _, err = out.Send(&beam.Message{Args: []string{"this is the reply"}}, 0) + _, err = msg.Ret.Send(&beam.Message{Args: []string{"this is the reply"}}) if err != nil { t.Fatal(err) } }) } - -func TestSendNested(t *testing.T) { - r, w, err := Pair() - if err != nil { - t.Fatal(err) - } - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - // Send - go func() { - // Send a message with mode=W - in, out, err := w.Send(&beam.Message{Args: []string{"this is the request"}}, beam.W) - if err != nil { - t.Fatal(err) - } - assertMode(t, in, out, beam.W) - // Send a nested message - _, _, err = out.Send(&beam.Message{Args: []string{"this is the nested message"}}, 0) - if err != nil { - t.Fatal(err) - } - }() - // Receive a message with mode=R - msg, in, out, err := r.Receive(beam.R) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the request" { - t.Fatalf("%#v", msg) - } - assertMode(t, in, out, beam.R) - // Read for a nested message - nested, _, _, err := in.Receive(0) - if err != nil { - t.Fatal(err) - } - if nested.Args[0] != "this is the nested message" { - t.Fatalf("%#v", nested) - } - }) -} - -// FIXME: duplicate from inmem/inmem_test.go -// assertMode verifies that the values of r and w match -// mode. -// If mode has the R bit set, r must be non-nil. Otherwise it must be nil. -// If mode has the W bit set, w must be non-nil. Otherwise it must be nil. -// -// If any of these conditions are not met, t.Fatal is called and the active -// test fails. -func assertMode(t *testing.T, r beam.Receiver, w beam.Sender, mode int) { - // If mode has the R bit set, r must be non-nil - if mode&beam.R != 0 { - if r == nil { - t.Fatalf("should be non-nil: %#v", r) - } - // Otherwise it must be nil. - } else { - if r != nil { - t.Fatalf("should be nil: %#v", r) - } - } - // If mode has the W bit set, w must be non-nil - if mode&beam.W != 0 { - if w == nil { - t.Fatalf("should be non-nil: %#v", w) - } - // Otherwise it must be nil. - } else { - if w != nil { - t.Fatalf("should be nil: %#v", w) - } - } -} diff --git a/beam/utils/queue_test.go b/beam/utils/queue_test.go index dfc75a19e0..3319f4076a 100644 --- a/beam/utils/queue_test.go +++ b/beam/utils/queue_test.go @@ -11,7 +11,7 @@ func TestSendRet(t *testing.T) { defer w.Close() q := NewQueue(w, 1) defer q.Close() - ret, err := q.Send(&beam.Message{Name: "ping", Ret: beam.RetPipe}) + ret, err := q.Send(&beam.Message{Verb: beam.Log, Args: []string{"ping"}, Ret: beam.RetPipe}) if err != nil { t.Fatal(err) } @@ -20,7 +20,7 @@ func TestSendRet(t *testing.T) { if err != nil { t.Fatal(err) } - if _, err := ping.Ret.Send(&beam.Message{Name: "pong"}); err != nil { + if _, err := ping.Ret.Send(&beam.Message{Verb: beam.Log, Args: []string{"pong"}}); err != nil { t.Fatal(err) } }() @@ -28,16 +28,16 @@ func TestSendRet(t *testing.T) { if err != nil { t.Fatal(err) } - if pong.Name != "pong" { + if pong.Verb != beam.Log { t.Fatal(err) } } func TestSendClose(t *testing.T) { q := NewQueue(beam.NopSender{}, 1) - q.Send(&beam.Message{Name: "hello"}) + q.Send(&beam.Message{Verb: beam.Error, Args: []string{"hello"}}) q.Close() - if _, err := q.Send(&beam.Message{Name: "again"}); err == nil { + if _, err := q.Send(&beam.Message{Verb: beam.Ack, Args: []string{"again"}}); err == nil { t.Fatal("send on closed queue should return an error") } } diff --git a/beam/utils/stack_test.go b/beam/utils/stack_test.go index 03189a9f4b..fb18772ea8 100644 --- a/beam/utils/stack_test.go +++ b/beam/utils/stack_test.go @@ -20,14 +20,14 @@ func TestStackWithPipe(t *testing.T) { if err != nil { t.Fatal(err) } - if msg.Name != "hello" { + if msg.Verb != beam.Log { t.Fatalf("%#v", msg) } if strings.Join(msg.Args, " ") != "wonderful world" { t.Fatalf("%#v", msg) } }() - _, err := s.Send(&beam.Message{Name: "hello", Args: []string{"wonderful", "world"}}) + _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"wonderful", "world"}}) if err != nil { t.Fatal(err) } @@ -49,14 +49,14 @@ func TestStackWithPair(t *testing.T) { if err != nil { t.Fatal(err) } - if msg.Name != "hello" { + if msg.Verb != beam.Log { t.Fatalf("%#v", msg) } if strings.Join(msg.Args, " ") != "wonderful world" { t.Fatalf("%#v", msg) } }() - _, err := s.Send(&beam.Message{Name: "hello", Args: []string{"wonderful", "world"}}) + _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"wonderful", "world"}}) if err != nil { t.Fatal(err) } @@ -90,9 +90,9 @@ func TestStackAdd(t *testing.T) { if s.Len() != 2 { t.Fatalf("%#v", beforeA) } - s.Send(&beam.Message{Name: "for b", Args: nil}) - beforeB.Send(&beam.Message{Name: "for a", Args: nil}) - beforeA.Send(&beam.Message{Name: "for nobody", Args: nil}) + s.Send(&beam.Message{Verb: beam.Log, Args: []string{"for b"}}) + beforeB.Send(&beam.Message{Verb: beam.Log, Args: []string{"for a"}}) + beforeA.Send(&beam.Message{Verb: beam.Log, Args: []string{"for nobody"}}) if len(a) != 1 { t.Fatalf("%#v", a) } @@ -112,7 +112,7 @@ func TestStackAddBad(t *testing.T) { t.Fatalf("%#v", s) } r.Close() - if _, err := s.Send(&beam.Message{Name: "for the buffer", Args: nil}); err != nil { + if _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"for the buffer"}}); err != nil { t.Fatal(err) } if s.Len() != 1 { @@ -121,7 +121,7 @@ func TestStackAddBad(t *testing.T) { if len(buf) != 1 { t.Fatalf("%#v", buf) } - if buf[0].Name != "for the buffer" { + if buf[0].Args[0] != "for the buffer" { t.Fatalf("%#v", buf) } } diff --git a/beam/verbs.go b/beam/verbs.go index b55dc075e3..a74614f5e1 100644 --- a/beam/verbs.go +++ b/beam/verbs.go @@ -1,17 +1,19 @@ package beam -type Verb string +type Verb uint32 -var ( - Ack Verb = "ack" - Log Verb = "log" - Start Verb = "start" - Stop Verb = "stop" - Attach Verb = "attach" - Spawn Verb = "spawn" - Set Verb = "set" - Get Verb = "get" - File Verb = "file" - Error Verb = "error" - Ls Verb = "ls" +const ( + Ack Verb = iota + Attach + Connect + Error + File + Get + Log + Ls + Set + Spawn + Start + Stop + Watch ) From a0874d7b1cebd4f0e42de5658ddd599e4b50467d Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Thu, 5 Jun 2014 12:38:54 -0700 Subject: [PATCH 179/347] Add string representation of verb enum Docker-DCO-1.1-Signed-off-by: Ben Firshman (github: bfirsh) --- beam/verbs.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/beam/verbs.go b/beam/verbs.go index a74614f5e1..1cacb90627 100644 --- a/beam/verbs.go +++ b/beam/verbs.go @@ -17,3 +17,35 @@ const ( Stop Watch ) + +func (v Verb) String() string { + switch v { + case Ack: + return "Ack" + case Attach: + return "Attach" + case Connect: + return "Connect" + case Error: + return "Error" + case File: + return "File" + case Get: + return "Get" + case Log: + return "Log" + case Ls: + return "Ls" + case Set: + return "Set" + case Spawn: + return "Spawn" + case Start: + return "Start" + case Stop: + return "Stop" + case Watch: + return "Watch" + } + return "" +} From 3bb782faf1a882330ccf5a5a693ed3ca5967c183 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Thu, 5 Jun 2014 12:40:26 -0700 Subject: [PATCH 180/347] Add support for multiple backends piped together Docker-DCO-1.1-Signed-off-by: Ben Firshman (github: bfirsh) --- swarmd/swarmd.go | 53 +++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index ef4040f752..9d7ddb0a08 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -43,30 +43,37 @@ func cmdDaemon(c *cli.Context) { fmt.Println(strings.Join(names, "\n")) return } - bName, bArgs, err := parseCmd(c.Args()[0]) - if err != nil { - Fatalf("parse: %v", err) + var previousInstanceIn beam.Receiver + for _, backendArg := range c.Args() { + bName, bArgs, err := parseCmd(backendArg) + if err != nil { + Fatalf("parse: %v", err) + } + fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) + _, backend, err := back.Attach(bName) + if err != nil { + Fatalf("%s: %v\n", bName, err) + } + fmt.Printf("---> Spawning\n") + instance, err := backend.Spawn(bArgs...) + if err != nil { + Fatalf("spawn %s: %v\n", bName, err) + } + fmt.Printf("---> Attaching\n") + instanceIn, instanceOut, err := instance.Attach("") + if err != nil { + Fatalf("attach: %v", err) + } + fmt.Printf("---> Starting\n") + if err := instance.Start(); err != nil { + Fatalf("start: %v", err) + } + if previousInstanceIn != nil { + go beam.Copy(instanceOut, previousInstanceIn) + } + previousInstanceIn = instanceIn } - fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) - _, backend, err := back.Attach(bName) - if err != nil { - Fatalf("%s: %v\n", bName, err) - } - fmt.Printf("---> Spawning\n") - instance, err := backend.Spawn(bArgs...) - if err != nil { - Fatalf("spawn %s: %v\n", bName, err) - } - fmt.Printf("---> Attaching\n") - instanceIn, _, err := instance.Attach("") - if err != nil { - Fatalf("attach: %v", err) - } - fmt.Printf("---> Starting\n") - if err := instance.Start(); err != nil { - Fatalf("start: %v", err) - } - _, err = beam.Copy(app, instanceIn) + _, err := beam.Copy(app, previousInstanceIn) if err != nil { Fatalf("copy: %v", err) } From 0d7cf7415dda4148bf2633562a51a0baf0aaca29 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Thu, 5 Jun 2014 12:41:19 -0700 Subject: [PATCH 181/347] Make debug backend forward on all messages Docker-DCO-1.1-Signed-off-by: Ben Firshman (github: bfirsh) --- backends/backends.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index a38d54b778..324a7b25d7 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -24,12 +24,21 @@ func New() *beam.Object { func Debug() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { - instance := beam.NewServer() - instance.Catchall(beam.Handler(func(msg *beam.Message) error { - fmt.Printf("[DEBUG] %s %s\n", msg.Verb, strings.Join(msg.Args, " ")) - ctx.Ret.Send(msg) - return nil - })) + instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + fmt.Printf("debug backend!") + for { + msg, err := in.Receive(beam.Ret) + if err != nil { + fmt.Printf("debug receive: %v", err) + return + } + fmt.Printf("[DEBUG] %s %s\n", msg.Verb, strings.Join(msg.Args, " ")) + if _, err := out.Send(msg); err != nil { + fmt.Printf("debug send: %v", err) + return + } + } + }) _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) return err })) From adcff5d7003decdf97151b0c7ba55fff0b1a6821 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Thu, 5 Jun 2014 12:41:39 -0700 Subject: [PATCH 182/347] go fmt Docker-DCO-1.1-Signed-off-by: Ben Firshman (github: bfirsh) --- swarmd/swarmd.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 9d7ddb0a08..79099d374c 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -18,8 +18,7 @@ func main() { app.Name = "swarmd" app.Usage = "Compose distributed systems from lightweight services" app.Version = "0.0.1" - app.Flags = []cli.Flag{ - } + app.Flags = []cli.Flag{} app.Action = cmdDaemon app.Run(os.Args) } From 188d75e0abd045323df21d2d5ced8953303499d7 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Wed, 4 Jun 2014 16:11:29 -0700 Subject: [PATCH 183/347] Convert 'forward' backend to beam Signed-off-by: Aanand Prasad (github: aanand) --- backends/backends.go | 1 + backends/forward.go | 96 +++++++++++++++++++++--------------- dockerclient/dockerclient.go | 93 ++++++++++++++++++++++++++++++++++ 3 files changed, 151 insertions(+), 39 deletions(-) create mode 100644 dockerclient/dockerclient.go diff --git a/backends/backends.go b/backends/backends.go index 324a7b25d7..4a9ce1bc03 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -18,6 +18,7 @@ func New() *beam.Object { backends.Bind("simulator", Simulator()) backends.Bind("debug", Debug()) backends.Bind("fakeclient", FakeClient()) + backends.Bind("forward", Forward()) return beam.Obj(backends) } diff --git a/backends/forward.go b/backends/forward.go index cad86750f0..3e75d25d8b 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -2,57 +2,75 @@ package backends import ( "fmt" + "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/engine" "io/ioutil" "net/http" "net/url" "strings" + "time" ) -func Forward() engine.Installer { - return &forwarder{} +func Forward() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + if len(ctx.Args) != 1 { + return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + } + client, err := newClient(ctx.Args[0], "v0.10") + if err != nil { + return fmt.Errorf("%v", err) + } + f := &forwarder{client: client} + instance := beam.NewServer() + instance.OnAttach(beam.Handler(f.attach)) + instance.OnStart(beam.Handler(f.start)) + instance.OnLs(beam.Handler(f.ls)) + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + return err + })) + return backend } type forwarder struct { + client *client } -func (f *forwarder) Install(eng *engine.Engine) error { - eng.Register("forward", func(job *engine.Job) engine.Status { - if len(job.Args) != 1 { - return job.Errorf("usage: %s ://", job.Name) - } - client, err := newClient(job.Args[0], "v0.10") - if err != nil { - return job.Errorf("%v", err) - } - job.Eng.Register("containers", func(job *engine.Job) engine.Status { - path := fmt.Sprintf( - "/containers/json?all=%s&size=%s&since=%s&before=%s&limit=%s", - url.QueryEscape(job.Getenv("all")), - url.QueryEscape(job.Getenv("size")), - url.QueryEscape(job.Getenv("since")), - url.QueryEscape(job.Getenv("before")), - url.QueryEscape(job.Getenv("limit")), - ) - resp, err := client.call("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", client.URL.String(), err) - } - // FIXME: check for response error - c := engine.NewTable("Created", 0) - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return job.Errorf("%s: read body: %v", client.URL.String(), err) - } - fmt.Printf("---> '%s'\n", body) - if _, err := c.ReadListFrom(body); err != nil { - return job.Errorf("%s: readlist: %v", client.URL.String(), err) - } - c.WriteListTo(job.Stdout) - return engine.StatusOK - }) - return engine.StatusOK - }) +func (f *forwarder) attach(ctx *beam.Message) error { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) + for { + time.Sleep(1 * time.Second) + (&beam.Object{ctx.Ret}).Log("forward: heartbeat") + } + return nil +} + +func (f *forwarder) start(ctx *beam.Message) error { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) + return nil +} + +func (f *forwarder) ls(ctx *beam.Message) error { + resp, err := f.client.call("GET", "/containers/json", "") + if err != nil { + return fmt.Errorf("%s: get: %v", f.client.URL.String(), err) + } + // FIXME: check for response error + c := engine.NewTable("Created", 0) + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return fmt.Errorf("%s: read body: %v", f.client.URL.String(), err) + } + if _, err := c.ReadListFrom(body); err != nil { + return fmt.Errorf("%s: readlist: %v", f.client.URL.String(), err) + } + names := []string{} + for _, env := range c.Data { + names = append(names, env.GetList("Names")[0][1:]) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: names}); err != nil { + return fmt.Errorf("%s: send response: %v", f.client.URL.String(), err) + } return nil } diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go new file mode 100644 index 0000000000..b4af69a4a7 --- /dev/null +++ b/dockerclient/dockerclient.go @@ -0,0 +1,93 @@ +package main + +import ( + "fmt" + "github.com/codegangsta/cli" + "github.com/docker/libswarm/backends" + "github.com/docker/libswarm/beam" + "log" + "os" + "strings" +) + +func main() { + app := cli.NewApp() + app.Name = "swarmd" + app.Usage = "Control a heterogenous distributed system with the Docker API" + app.Version = "0.0.1" + app.Flags = []cli.Flag{ + cli.StringFlag{"backend", "debug", "load a backend"}, + } + app.Action = cmdDaemon + app.Run(os.Args) +} + +func cmdDaemon(c *cli.Context) { + app := beam.NewServer() + app.OnLog(beam.Handler(func(msg *beam.Message) error { + log.Printf("%s\n", strings.Join(msg.Args, " ")) + return nil + })) + app.OnError(beam.Handler(func(msg *beam.Message) error { + Fatalf("Fatal: %v", strings.Join(msg.Args[:1], "")) + return nil + })) + + backend := beam.Object{backends.Forward()} + + dockerHost := os.Getenv("DOCKER_HOST") + if dockerHost == "" { + dockerHost = "unix:///var/run/docker.sock" + } + + log.Printf("---> Spawning\n") + instance, err := backend.Spawn(dockerHost) + if err != nil { + Fatalf("spawn: %v\n", err) + } + + log.Printf("---> Attaching\n") + instanceIn, instanceOut, err := instance.Attach("") + if err != nil { + Fatalf("attach: %v", err) + } + defer instanceOut.Close() + go beam.Copy(app, instanceIn) + + log.Printf("---> Starting\n") + if err := instance.Start(); err != nil { + Fatalf("start: %v", err) + } + + err = doCmd(instance, c.Args()) + if err != nil { + Fatalf("%v", err) + } +} + +func doCmd(instance *beam.Object, args []string) error { + if len(args) == 0 { + return fmt.Errorf("no command supplied") + } + log.Printf("---> %s\n", args[0]) + if args[0] == "ps" { + if len(args) != 1 { + return fmt.Errorf("usage: ps") + } + names, err := instance.Ls() + if err != nil { + return err + } + fmt.Println(strings.Join(names, "\n")) + return nil + } + return fmt.Errorf("unrecognised command: %s", args[0]) +} + +func Fatalf(msg string, args ...interface{}) { + if !strings.HasSuffix(msg, "\n") { + msg = msg + "\n" + } + fmt.Fprintf(os.Stderr, msg, args...) + os.Exit(1) +} From fc41d09026e6215eff9ea24eb65b3f6e1d6c55f1 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 5 Jun 2014 14:14:58 -0700 Subject: [PATCH 184/347] Rough implementation of 'docker run' Signed-off-by: Aanand Prasad (github: aanand) --- backends/forward.go | 164 +++++++++++++++++++++++++++++++++++ dockerclient/dockerclient.go | 30 +++++++ 2 files changed, 194 insertions(+) diff --git a/backends/forward.go b/backends/forward.go index 3e75d25d8b..0992235651 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -1,11 +1,18 @@ package backends import ( + "encoding/json" "fmt" "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/engine" + "github.com/dotcloud/docker/runconfig" + "github.com/dotcloud/docker/utils" + "io" "io/ioutil" + "log" + "net" "net/http" + "net/http/httputil" "net/url" "strings" "time" @@ -26,6 +33,7 @@ func Forward() beam.Sender { instance.OnAttach(beam.Handler(f.attach)) instance.OnStart(beam.Handler(f.start)) instance.OnLs(beam.Handler(f.ls)) + instance.OnSpawn(beam.Handler(f.spawn)) _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) return err })) @@ -74,6 +82,104 @@ func (f *forwarder) ls(ctx *beam.Message) error { return nil } +func (f *forwarder) spawn(ctx *beam.Message) error { + if len(ctx.Args) < 1 { + return fmt.Errorf("forward: spawn takes at least 1 argument, got %d", len(ctx.Args)) + } + body, err := json.Marshal(&runconfig.Config{ + Image: ctx.Args[0], + Cmd: ctx.Args[1:], + AttachStdin: false, + AttachStdout: true, + AttachStderr: true, + }) + if err != nil { + return err + } + resp, err := f.client.call("POST", "/containers/create", string(body)) + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 201 { + return fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) + } + var respJson struct{ Id string } + if err = json.Unmarshal(respBody, &respJson); err != nil { + return err + } + c := f.newContainer(respJson.Id) + if _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}); err != nil { + return err + } + return nil +} + +func (f *forwarder) newContainer(id string) beam.Sender { + c := &container{forwarder: f, id: id} + instance := beam.NewServer() + instance.OnAttach(beam.Handler(c.attach)) + instance.OnStart(beam.Handler(c.start)) + return instance +} + +type container struct { + forwarder *forwarder + id string +} + +func (c *container) attach(ctx *beam.Message) error { + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + return err + } + + path := fmt.Sprintf("/containers/%s/attach?stdout=1&stderr=0&stream=1&logs=1", c.id) + + stdoutR, stdoutW := io.Pipe() + _, stderrW := io.Pipe() + go copyOutput(ctx.Ret, stdoutR) + c.forwarder.client.hijack("POST", path, nil, stdoutW, stderrW) + + return nil +} + +func copyOutput(sender beam.Sender, reader io.Reader) { + chunk := make([]byte, 4096) + for { + n, err := reader.Read(chunk) + if n > 0 { + sender.Send(&beam.Message{Verb: beam.Log, Args: []string{string(chunk[0:n])}}) + } + if err != nil { + message := fmt.Sprintf("Error reading from stream: %v", err) + sender.Send(&beam.Message{Verb: beam.Error, Args: []string{message}}) + break + } + } +} + +func (c *container) start(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/start", c.id) + resp, err := c.forwarder.client.call("POST", path, "{}") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 204 { + return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + return err + } + return nil +} + type client struct { URL *url.URL proto string @@ -111,3 +217,61 @@ func (c *client) call(method, path, body string) (*http.Response, error) { } return resp, nil } + +func (c *client) hijack(method, path string, in io.ReadCloser, stdout, stderr io.Writer) error { + dial, err := net.Dial("tcp", c.URL.Host) + if err != nil { + return err + } + req, err := http.NewRequest(method, path, nil) + if err != nil { + return err + } + + clientconn := httputil.NewClientConn(dial, nil) + defer clientconn.Close() + + clientconn.Do(req) + + rwc, br := clientconn.Hijack() + defer rwc.Close() + + receiveStdout := utils.Go(func() (err error) { + defer func() { + if in != nil { + in.Close() + } + }() + // _, err = utils.StdCopy(stdout, stderr, br) + _, err = io.Copy(stdout, br) + log.Println("[hijack] End of stdout") + return err + }) + sendStdin := utils.Go(func() error { + if in != nil { + io.Copy(rwc, in) + log.Println("[hijack] End of stdin") + } + if tcpc, ok := rwc.(*net.TCPConn); ok { + if err := tcpc.CloseWrite(); err != nil { + log.Printf("Couldn't send EOF: %s\n", err) + } + } else if unixc, ok := rwc.(*net.UnixConn); ok { + if err := unixc.CloseWrite(); err != nil { + log.Printf("Couldn't send EOF: %s\n", err) + } + } + // Discard errors due to pipe interruption + return nil + }) + if err := <-receiveStdout; err != nil { + log.Printf("Error receiveStdout: %s\n", err) + return err + } + + if err := <-sendStdin; err != nil { + log.Printf("Error sendStdin: %s\n", err) + return err + } + return nil +} diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go index b4af69a4a7..c0d250f37a 100644 --- a/dockerclient/dockerclient.go +++ b/dockerclient/dockerclient.go @@ -81,6 +81,36 @@ func doCmd(instance *beam.Object, args []string) error { fmt.Println(strings.Join(names, "\n")) return nil } + if args[0] == "run" { + if len(args) < 3 { + return fmt.Errorf("usage: run IMAGE COMMAND...") + } + container, err := instance.Spawn(args[1:]...) + if err != nil { + return fmt.Errorf("spawn: %v", err) + } + logs, _, err := container.Attach("") + if err != nil { + return fmt.Errorf("attach: %v", err) + } + if err = container.Start(); err != nil { + return fmt.Errorf("start: %v", err) + } + for { + msg, err := logs.Receive(beam.Ret) + if err != nil { + if err.Error() == "EOF" { + break + } + return fmt.Errorf("error reading from container: %v", err) + } + if msg.Verb != beam.Log { + return fmt.Errorf("unexpected message reading from container: %v", msg) + } + fmt.Print(msg.Args[0]) + } + return nil + } return fmt.Errorf("unrecognised command: %s", args[0]) } From 3243ae084b7a022fc12b652b262ecf46524d7561 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 07:14:06 +0000 Subject: [PATCH 185/347] Move each backend to a separate file Signed-off-by: Solomon Hykes --- backends/backends.go | 48 ------------------------------------------ backends/debug.go | 32 ++++++++++++++++++++++++++++ backends/fakeclient.go | 30 ++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 48 deletions(-) create mode 100644 backends/debug.go create mode 100644 backends/fakeclient.go diff --git a/backends/backends.go b/backends/backends.go index 4a9ce1bc03..3358215b94 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -1,10 +1,7 @@ package backends import ( - "fmt" "github.com/docker/libswarm/beam" - "strings" - "time" ) // New returns a new engine, with all backends @@ -21,48 +18,3 @@ func New() *beam.Object { backends.Bind("forward", Forward()) return beam.Obj(backends) } - -func Debug() beam.Sender { - backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { - instance := beam.Task(func(in beam.Receiver, out beam.Sender) { - fmt.Printf("debug backend!") - for { - msg, err := in.Receive(beam.Ret) - if err != nil { - fmt.Printf("debug receive: %v", err) - return - } - fmt.Printf("[DEBUG] %s %s\n", msg.Verb, strings.Join(msg.Args, " ")) - if _, err := out.Send(msg); err != nil { - fmt.Printf("debug send: %v", err) - return - } - } - }) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) - return err - })) - return backend -} - -func FakeClient() beam.Sender { - backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { - // Instantiate a new fakeclient instance - instance := beam.Task(func(in beam.Receiver, out beam.Sender) { - fmt.Printf("fake client!\n") - defer fmt.Printf("end of fake client!\n") - o := beam.Obj(out) - o.Log("fake client starting") - defer o.Log("fake client terminating") - for { - time.Sleep(1 * time.Second) - o.Log("fake client heartbeat!") - } - }) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) - return err - })) - return backend -} diff --git a/backends/debug.go b/backends/debug.go new file mode 100644 index 0000000000..42e4cad579 --- /dev/null +++ b/backends/debug.go @@ -0,0 +1,32 @@ +package backends + +import ( + "fmt" + "strings" + + "github.com/docker/libswarm/beam" +) + +func Debug() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + fmt.Printf("debug backend!") + for { + msg, err := in.Receive(beam.Ret) + if err != nil { + fmt.Printf("debug receive: %v", err) + return + } + fmt.Printf("[DEBUG] %s %s\n", msg.Verb, strings.Join(msg.Args, " ")) + if _, err := out.Send(msg); err != nil { + fmt.Printf("debug send: %v", err) + return + } + } + }) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + return err + })) + return backend +} diff --git a/backends/fakeclient.go b/backends/fakeclient.go new file mode 100644 index 0000000000..2f51940299 --- /dev/null +++ b/backends/fakeclient.go @@ -0,0 +1,30 @@ +package backends + +import ( + "fmt" + "time" + + "github.com/docker/libswarm/beam" +) + +func FakeClient() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + // Instantiate a new fakeclient instance + instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + fmt.Printf("fake client!\n") + defer fmt.Printf("end of fake client!\n") + o := beam.Obj(out) + o.Log("fake client starting") + defer o.Log("fake client terminating") + for { + time.Sleep(1 * time.Second) + o.Log("fake client heartbeat!") + } + }) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + return err + })) + return backend +} + From 20c489e7525fd172d92ff565f2b569a77f87a791 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Sat, 7 Jun 2014 19:03:03 -0700 Subject: [PATCH 186/347] Support unix:// URLs in forward Signed-off-by: Aanand Prasad --- backends/forward.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/backends/forward.go b/backends/forward.go index 6cbf23c431..1c1a8041d2 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -229,27 +229,36 @@ func newClient(peer, version string) (*client, error) { if err != nil { return nil, err } + protoAddrParts := strings.SplitN(peer, "://", 2) c := &client{ URL: u, + proto: protoAddrParts[0], + addr: protoAddrParts[1], version: version, } c.URL.Scheme = "http" return c, nil } +func (c *client) dial() (net.Conn, error) { + return net.Dial(c.proto, c.addr) +} + func (c *client) call(method, path, body string) (*http.Response, error) { path = fmt.Sprintf("/%s%s", c.version, path) u, err := url.Parse(path) if err != nil { return nil, err } - u.Host = c.URL.Host + u.Host = "dummy.host" u.Scheme = c.URL.Scheme req, err := http.NewRequest(method, u.String(), strings.NewReader(body)) if err != nil { return nil, err } - resp, err := http.DefaultClient.Do(req) + tr := &http.Transport{Dial: func(_, _ string) (net.Conn, error) { return c.dial() }} + client := &http.Client{Transport: tr} + resp, err := client.Do(req) if err != nil { return nil, err } @@ -258,7 +267,7 @@ func (c *client) call(method, path, body string) (*http.Response, error) { func (c *client) hijack(method, path string, in io.ReadCloser, stdout, stderr io.Writer) error { path = fmt.Sprintf("/%s%s", c.version, path) - dial, err := net.Dial("tcp", c.URL.Host) + dial, err := c.dial() if err != nil { return err } From cd3f2002a513fc8d949b4813c434e443dc89ce9c Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Sun, 8 Jun 2014 12:55:07 -0700 Subject: [PATCH 187/347] Make client transport and scheme configurable Signed-off-by: Aanand Prasad --- backends/cloud.go | 27 +++++++++---------- backends/forward.go | 65 +++++++++++++++++++++------------------------ 2 files changed, 44 insertions(+), 48 deletions(-) diff --git a/backends/cloud.go b/backends/cloud.go index 4802cfcc30..efd8a20e50 100644 --- a/backends/cloud.go +++ b/backends/cloud.go @@ -114,10 +114,9 @@ func (s *cloud) Install(eng *engine.Engine) error { } } host := fmt.Sprintf("tcp://localhost:%d", localPort) - client, err := newClient(host, apiVersion) - if err != nil { - return job.Errorf("Unexpected error: %#v", err) - } + client := newClient() + client.setURL(host) + client.version = apiVersion //job.Eng.Register("inspect", func(job *engine.Job) engine.Status { // resp, err := client.call("GET", "/containers/ job.Eng.Register("create", func(job *engine.Job) engine.Status { @@ -128,17 +127,17 @@ func (s *cloud) Install(eng *engine.Engine) error { data, err := json.Marshal(container) resp, err := client.call("POST", "/containers/create", string(data)) if err != nil { - return job.Errorf("%s: post: %v", client.URL.String(), err) + return job.Errorf("post: %v", err) } body, err := ioutil.ReadAll(resp.Body) if err != nil { - return job.Errorf("%s: read body: %#v", client.URL.String(), err) + return job.Errorf("read body: %#v", err) } var containerOut Container err = json.Unmarshal([]byte(body), &containerOut) _, err = job.Printf("%s\n", containerOut.Id) if err != nil { - return job.Errorf("%s: write body: %#v", client.URL.String(), err) + return job.Errorf("write body: %#v", err) } log.Printf("%s", string(body)) return engine.StatusOK @@ -148,11 +147,11 @@ func (s *cloud) Install(eng *engine.Engine) error { path := fmt.Sprintf("/containers/%s/start", job.Args[0]) resp, err := client.call("POST", path, "{\"Binds\":[],\"ContainerIDFile\":\"\",\"LxcConf\":[],\"Privileged\":false,\"PortBindings\":{},\"Links\":null,\"PublishAllPorts\":false,\"Dns\":null,\"DnsSearch\":[],\"VolumesFrom\":[]}") if err != nil { - return job.Errorf("%s: post: %v", client.URL.String(), err) + return job.Errorf("post: %v", err) } body, err := ioutil.ReadAll(resp.Body) if err != nil { - return job.Errorf("%s: read body: %#v", client.URL.String(), err) + return job.Errorf("read body: %#v", err) } log.Printf("%s", string(body)) return engine.StatusOK @@ -169,17 +168,17 @@ func (s *cloud) Install(eng *engine.Engine) error { ) resp, err := client.call("GET", path, "") if err != nil { - return job.Errorf("%s: get: %v", client.URL.String(), err) + return job.Errorf("get: %v", err) } // FIXME: check for response error c := engine.NewTable("Created", 0) body, err := ioutil.ReadAll(resp.Body) if err != nil { - return job.Errorf("%s: read body: %v", client.URL.String(), err) + return job.Errorf("read body: %v", err) } fmt.Printf("---> '%s'\n", body) if _, err := c.ReadListFrom(body); err != nil { - return job.Errorf("%s: readlist: %v", client.URL.String(), err) + return job.Errorf("readlist: %v", err) } c.WriteListTo(job.Stdout) return engine.StatusOK @@ -191,7 +190,7 @@ func (s *cloud) Install(eng *engine.Engine) error { resp, err := client.call("DELETE", path, "") if err != nil { - return job.Errorf("%s: delete: %v", client.URL.String(), err) + return job.Errorf("delete: %v", err) } log.Printf("%#v", resp) return engine.StatusOK @@ -203,7 +202,7 @@ func (s *cloud) Install(eng *engine.Engine) error { resp, err := client.call("POST", path, "") if err != nil { - return job.Errorf("%s: delete: %v", client.URL.String(), err) + return job.Errorf("delete: %v", err) } log.Printf("%#v", resp) return engine.StatusOK diff --git a/backends/forward.go b/backends/forward.go index 1c1a8041d2..3b46529a4f 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -17,15 +17,16 @@ import ( ) func Forward() beam.Sender { + return ForwardWithClient(newClient()) +} + +func ForwardWithClient(client *client) beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 1 { return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } - client, err := newClient(ctx.Args[0], "v1.11") - if err != nil { - return fmt.Errorf("%v", err) - } + client.setURL(ctx.Args[0]) f := &forwarder{ client: client, Server: beam.NewServer(), @@ -34,7 +35,7 @@ func Forward() beam.Sender { f.Server.OnStart(beam.Handler(f.start)) f.Server.OnLs(beam.Handler(f.ls)) f.Server.OnSpawn(beam.Handler(f.spawn)) - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) return err })) return backend @@ -67,23 +68,23 @@ func (f *forwarder) start(ctx *beam.Message) error { func (f *forwarder) ls(ctx *beam.Message) error { resp, err := f.client.call("GET", "/containers/json", "") if err != nil { - return fmt.Errorf("%s: get: %v", f.client.URL.String(), err) + return fmt.Errorf("get: %v", err) } // FIXME: check for response error c := engine.NewTable("Created", 0) body, err := ioutil.ReadAll(resp.Body) if err != nil { - return fmt.Errorf("%s: read body: %v", f.client.URL.String(), err) + return fmt.Errorf("read body: %v", err) } if _, err := c.ReadListFrom(body); err != nil { - return fmt.Errorf("%s: readlist: %v", f.client.URL.String(), err) + return fmt.Errorf("readlist: %v", err) } names := []string{} for _, env := range c.Data { names = append(names, env.GetList("Names")[0][1:]) } if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: names}); err != nil { - return fmt.Errorf("%s: send response: %v", f.client.URL.String(), err) + return fmt.Errorf("send response: %v", err) } return nil } @@ -218,30 +219,27 @@ func (c *container) get(ctx *beam.Message) error { } type client struct { - URL *url.URL - proto string - addr string - version string + transport *http.Transport + urlHost string + scheme string + version string } -func newClient(peer, version string) (*client, error) { - u, err := url.Parse(peer) - if err != nil { - return nil, err +func newClient() *client { + return &client{ + transport: &http.Transport{}, + urlHost: "dummy.host", + scheme: "http", + version: "v1.11", } - protoAddrParts := strings.SplitN(peer, "://", 2) - c := &client{ - URL: u, - proto: protoAddrParts[0], - addr: protoAddrParts[1], - version: version, - } - c.URL.Scheme = "http" - return c, nil } -func (c *client) dial() (net.Conn, error) { - return net.Dial(c.proto, c.addr) +func (c *client) setURL(url string) { + parts := strings.SplitN(url, "://", 2) + proto, host := parts[0], parts[1] + c.transport.Dial = func(_, _ string) (net.Conn, error) { + return net.Dial(proto, host) + } } func (c *client) call(method, path, body string) (*http.Response, error) { @@ -250,15 +248,14 @@ func (c *client) call(method, path, body string) (*http.Response, error) { if err != nil { return nil, err } - u.Host = "dummy.host" - u.Scheme = c.URL.Scheme + u.Host = c.urlHost + u.Scheme = c.scheme req, err := http.NewRequest(method, u.String(), strings.NewReader(body)) if err != nil { return nil, err } - tr := &http.Transport{Dial: func(_, _ string) (net.Conn, error) { return c.dial() }} - client := &http.Client{Transport: tr} - resp, err := client.Do(req) + httpClient := &http.Client{Transport: c.transport} + resp, err := httpClient.Do(req) if err != nil { return nil, err } @@ -267,7 +264,7 @@ func (c *client) call(method, path, body string) (*http.Response, error) { func (c *client) hijack(method, path string, in io.ReadCloser, stdout, stderr io.Writer) error { path = fmt.Sprintf("/%s%s", c.version, path) - dial, err := c.dial() + dial, err := c.transport.Dial("ignored", "ignored") if err != nil { return err } From a9d99d5c69b5b9a81875b471aee6b10fc4e4f2ef Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Sun, 8 Jun 2014 12:55:49 -0700 Subject: [PATCH 188/347] Orchard backend Signed-off-by: Aanand Prasad --- backends/backends.go | 1 + backends/orchard.go | 124 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 backends/orchard.go diff --git a/backends/backends.go b/backends/backends.go index 8c2bf45a60..aa42d94137 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -18,5 +18,6 @@ func New() *beam.Object { backends.Bind("forward", Forward()) backends.Bind("exec", Exec()) backends.Bind("dockerserver", DockerServer()) + backends.Bind("orchard", Orchard()) return beam.Obj(backends) } diff --git a/backends/orchard.go b/backends/orchard.go new file mode 100644 index 0000000000..4fbf5ebe09 --- /dev/null +++ b/backends/orchard.go @@ -0,0 +1,124 @@ +package backends + +import ( + "github.com/docker/libswarm/beam" + "github.com/orchardup/go-orchard/api" + + "crypto/tls" + "crypto/x509" + "fmt" + "io/ioutil" + "os" +) + +func Orchard() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + if len(ctx.Args) != 2 { + return fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host") + } + apiToken, hostName := ctx.Args[0], ctx.Args[1] + + apiClient := &api.HTTPClient{ + BaseURL: "https://api.orchardup.com/v2", + Token: apiToken, + } + + host, err := apiClient.GetHost(hostName) + if err != nil { + return err + } + + url := fmt.Sprintf("tcp://%s:4243", host.IPAddress) + tlsConfig, err := getTLSConfig([]byte(host.ClientCert), []byte(host.ClientKey)) + if err != nil { + return err + } + + client := newClient() + client.scheme = "https" + client.transport.TLSClientConfig = tlsConfig + client.urlHost = host.IPAddress + + forwardBackend := beam.Obj(ForwardWithClient(client)) + forwardInstance, err := forwardBackend.Spawn(url) + if err != nil { + return err + } + + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: forwardInstance}) + return err + })) + return backend +} + +func getTLSConfig(clientCertPEMData, clientKeyPEMData []byte) (*tls.Config, error) { + certPool := x509.NewCertPool() + + certChainPath := os.Getenv("ORCHARD_HOST_CA") + if certChainPath != "" { + certChainData, err := ioutil.ReadFile(certChainPath) + if err != nil { + return nil, err + } + certPool.AppendCertsFromPEM(certChainData) + } else { + certPool.AppendCertsFromPEM([]byte(orchardCerts)) + } + + clientCert, err := tls.X509KeyPair(clientCertPEMData, clientKeyPEMData) + if err != nil { + return nil, err + } + + config := new(tls.Config) + config.RootCAs = certPool + config.Certificates = []tls.Certificate{clientCert} + config.BuildNameToCertificate() + + return config, nil +} + +var orchardCerts string = `-----BEGIN CERTIFICATE----- +MIIDizCCAnOgAwIBAgIJANOkcdAljaXsMA0GCSqGSIb3DQEBBQUAMFwxCzAJBgNV +BAYTAkdCMQ8wDQYDVQQIDAZMb25kb24xIjAgBgNVBAoMGU9yY2hhcmQgTGFib3Jh +dG9yaWVzIEx0ZC4xGDAWBgNVBAMMD09yY2hhcmQgUm9vdCBDQTAeFw0xMzA5MTAx +OTU4MDZaFw0xODA5MDkxOTU4MDZaMFwxCzAJBgNVBAYTAkdCMQ8wDQYDVQQIDAZM +b25kb24xIjAgBgNVBAoMGU9yY2hhcmQgTGFib3JhdG9yaWVzIEx0ZC4xGDAWBgNV +BAMMD09yY2hhcmQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAKE2uHYhJyUxTa/DgXE2Ru85RJptv7YypqL6/hEthhSb30e8c/UZ2RGAupgr +2KhP2B/c78d7hMIX09rbc/Z7TpnV4T3ERuguDJ6jz6NjLKDsW8VVBMx4imcE0hHB +ZrhO+cEuBBufw+iW83uNIkzzIVVlgZ6o9jGXEY61D+SNNxtsMEIkjh+5/JxdeRvK +PSHhBJ2VJpCRWpvuhEuCc5Qlz6PkWEbCchEe8Mzy6Zy8FzT4q4t+ztryWTUavR9s +8lv3N7vHMo4R/r1M+VtjlXzutV8S83avrUQ48woTGBULyfXisbSN6snCXf4VJx8E +UU48FjQBZbKfgV+2ut4f2oUdkNsCAwEAAaNQME4wHQYDVR0OBBYEFBM7bwyZ7n42 +9q3EmgaOU7PGa4xtMB8GA1UdIwQYMBaAFBM7bwyZ7n429q3EmgaOU7PGa4xtMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADZ5YUYc3WfiKWg1VqmBj0EE +wVhy43rId0ruMwcNgyDesCvIDJy5Y9XsIRnRIIeM3tm0MF+fGlmOiN1AvX0KeiTM +7RtPYFawl62aGrDvo0CdZTxCYSRcLvUhgGiftEnqRijawecnk5BhcP+g5Zxe8b+L +DzqbCwG9AQ9M2NAxWdbaBJwAL8qceKklVGWOEpjEYiF4zdNQoLfW+lygVBvKZEwF +By4x8aTPlf8MMMn2ogk4Js8ZcjmvP9fBlA09ecD1DO9lNWMXpDyoB504qTPGoLoj +u6XKHvAXEXvMzLHp7qABqZXDgKIcr8wAqnmqlnFHpLjd+bV7bGMHjGM8EeIdt8I= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDjTCCAnWgAwIBAgIJANOkcdAljaXwMA0GCSqGSIb3DQEBBQUAMFwxCzAJBgNV +BAYTAkdCMQ8wDQYDVQQIDAZMb25kb24xIjAgBgNVBAoMGU9yY2hhcmQgTGFib3Jh +dG9yaWVzIEx0ZC4xGDAWBgNVBAMMD09yY2hhcmQgUm9vdCBDQTAeFw0xMzA5MTIx +ODE5MTRaFw0xODA5MTExODE5MTRaMF4xCzAJBgNVBAYTAkdCMQ8wDQYDVQQIDAZM +b25kb24xIjAgBgNVBAoMGU9yY2hhcmQgTGFib3JhdG9yaWVzIEx0ZC4xGjAYBgNV +BAMMEU9yY2hhcmQgRG9ja2VyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA1T5SrhAZI9N3k8lESi9mYJ9aAqaNESF1qGqWh4Vk2ek0J9X76tPXTK0/ +mn9kVMhHFusSHw6EV9imORIdJd9ivdqfMpEPeBuYNuZTNQYsVPP//ZwBPA5+dVOK +dBH+OjgLne8oHIgNM1lRZQlTWrE9FrD11VVnTNcI3VfuDjPD7z5FeYb+gRQx5/u4 +gp+xLfglquCzbaPRqQ9FhPB7MFkiQDfZuZieAWZ4QOLJb4za582OX2Gl6mUbIOc7 +TQcxeifIwUnSBunq8ER6donjfLy/vJUMBITw4LfzVFpuDnki5FI1DzY+GaVzRSOn +JiGT+WxPH2ydgDieKL1cqB7i+/6o4QIDAQABo1AwTjAdBgNVHQ4EFgQUp/8F8VUv +P+hIDEOf/fzXSujHjYAwHwYDVR0jBBgwFoAUEztvDJnufjb2rcSaBo5Ts8ZrjG0w +DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAcbK4gNKRipaDBUwUWU7Z +YXP+npiGEaKxEgBf2J0FFi0yfKRTdACj42vWTZI2m26A1be04xrXZhBKPm4+zN6U +SjEjl+jIKSR7E0QvFv9fFJ0hWl5CDcg8EJdFckgawH2MfSBb4qjN4MDygtOet35Z +VmA7V3AaHa7d2xP+dyER+qP5/ysWzHqliephEpDj4QQIK+bQWwBXj91LhRsyHdn7 +VBHS10FcJegbD86SLb85U7zFPZ+vWClDLWwh2hN7ApAGjJgQrfHFhanLi51MIkM2 +FHytSi4zdRd+9nEbSVc4t1CL/llaSFk7W77hMFZpq+J+ih6aC0echGQIoXfdHfSM +Qg== +-----END CERTIFICATE-----` From ca1f5546084252ade61feafee4466e55545cd16c Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Sat, 7 Jun 2014 19:17:19 -0700 Subject: [PATCH 189/347] Add /containers/create to apiserver Signed-off-by: Ben Firshman --- backends/dockerserver.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 1abad06394..e41c3823a4 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -7,6 +7,7 @@ import ( "github.com/dotcloud/docker/api" "github.com/dotcloud/docker/pkg/version" "github.com/gorilla/mux" + "io/ioutil" "net" "net/http" ) @@ -61,6 +62,33 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return writeJSON(w, http.StatusOK, names) } +func postContainersCreate(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if err := r.ParseForm(); err != nil { + return nil + } + + body, err := ioutil.ReadAll(r.Body) + if err != nil { + return err + } + + container, err := beam.Obj(out).Spawn(string(body)) + if err != nil { + return err + } + + responseJson, err := container.Get() + if err != nil { + return err + } + + var response struct{ Id string } + if err = json.Unmarshal([]byte(responseJson), &response); err != nil { + return err + } + return writeJSON(w, http.StatusCreated, response) +} + func postContainersStart(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if vars == nil { return fmt.Errorf("Missing parameter") @@ -109,6 +137,7 @@ func createRouter(out beam.Sender) (*mux.Router, error) { "/containers/json": getContainersJSON, }, "POST": { + "/containers/create": postContainersCreate, "/containers/{name:.*}/start": postContainersStart, "/containers/{name:.*}/stop": postContainersStop, }, From 521e57405698e36da4eb2b8ab569257090cd3c9d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 3 Jun 2014 09:56:20 +0000 Subject: [PATCH 190/347] Update usage message Signed-off-by: Solomon Hykes --- swarmd/swarmd.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index eda7f68828..b664401758 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -15,10 +15,9 @@ import ( func main() { app := cli.NewApp() app.Name = "swarmd" - app.Usage = "Control a heterogenous distributed system with the Docker API" + app.Usage = "Compose distributed systems from lightweight services" app.Version = "0.0.1" app.Flags = []cli.Flag{ - cli.StringFlag{"backend", "debug", "load a backend"}, } app.Action = cmdDaemon app.Run(os.Args) From 23e9e6f73f2f5954eba6e389c0aa280a4f7b07d9 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 3 Jun 2014 10:17:28 +0000 Subject: [PATCH 191/347] gofmt Signed-off-by: Solomon Hykes --- backends/gce.go | 2 +- swarmd/swarmd.go | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/backends/gce.go b/backends/gce.go index 7c36c5fb25..0ddb1020a0 100644 --- a/backends/gce.go +++ b/backends/gce.go @@ -244,7 +244,7 @@ func (cloud GCECloud) CreateInstance(name string, zone string) (string, error) { NetworkInterfaces: []*compute.NetworkInterface{ { AccessConfigs: []*compute.AccessConfig{ - &compute.AccessConfig{Type: "ONE_TO_ONE_NAT"}, + {Type: "ONE_TO_ONE_NAT"}, }, Network: prefix + "/global/networks/default", }, diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index b664401758..0f770a692d 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -17,8 +17,7 @@ func main() { app.Name = "swarmd" app.Usage = "Compose distributed systems from lightweight services" app.Version = "0.0.1" - app.Flags = []cli.Flag{ - } + app.Flags = []cli.Flag{} app.Action = cmdDaemon app.Run(os.Args) } From 6402f0c83f6470248c99e929d6407b8e192f3648 Mon Sep 17 00:00:00 2001 From: John Hopper Date: Tue, 3 Jun 2014 12:02:09 -0500 Subject: [PATCH 192/347] Add mailmap and authors. Signed-off-by: John Hopper --- .mailmap | 6 ++++++ AUTHORS | 7 +++++++ 2 files changed, 13 insertions(+) create mode 100644 .mailmap create mode 100644 AUTHORS diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000000..401f24cd60 --- /dev/null +++ b/.mailmap @@ -0,0 +1,6 @@ +# Generate AUTHORS: git log --format='%aN <%aE>' | sort -uf + + +Aanand Prasad +Ben Firshman +John Hopper diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000000..b5676d2bc0 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,7 @@ +Aanand Prasad +Ben Firshman +Brendan Burns +fermayo +John Hopper +Johan Euphrosine +Solomon Hykes From 6fd4967581dae25008580027a0e98cbc096fde12 Mon Sep 17 00:00:00 2001 From: fermayo Date: Tue, 3 Jun 2014 13:47:00 -0400 Subject: [PATCH 193/347] Initial version of Tutum backend Docker-DCO-1.1-Signed-off-by: Fernando Mayo (github: fermayo) --- backends/backends.go | 1 + backends/tutum.go | 242 ++++++++++++++++++++++++++++++++++++++ swarmd/Godeps/Godeps.json | 4 + 3 files changed, 247 insertions(+) create mode 100644 backends/tutum.go diff --git a/backends/backends.go b/backends/backends.go index ee0de0c718..1ddeeb2520 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -18,5 +18,6 @@ func New() *engine.Engine { Simulator().Install(back) Forward().Install(back) CloudBackend().Install(back) + Tutum().Install(back) return back } diff --git a/backends/tutum.go b/backends/tutum.go new file mode 100644 index 0000000000..0f2800b27c --- /dev/null +++ b/backends/tutum.go @@ -0,0 +1,242 @@ +package backends + +import ( + "encoding/json" + "fmt" + "github.com/dotcloud/docker/engine" + "github.com/dotcloud/docker/runconfig" + "github.com/tutumcloud/go-tutum" + "io" + "io/ioutil" + "log" + "net/http" + "net/url" + "strings" +) + +var ( + tutumConnector = "docker.tutum.co:49460" + tutumConnectorVersion = "v1.11" +) + +func Tutum() engine.Installer { + return &tutumBackend{} +} + +type tutumBackend struct { +} + +func (t *tutumBackend) Install(eng *engine.Engine) error { + eng.Register("tutum", func(job *engine.Job) engine.Status { + if len(job.Args) == 1 { + tutumConnector = job.Args[0] + } + if !tutum.IsAuthenticated() { + return job.Errorf("You need to provide your Tutum credentials in ~/.tutum or environment variables TUTUM_USER and TUTUM_APIKEY") + } + job.Eng.Register("containers", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf( + "/containers/json?all=%s&limit=%s", + url.QueryEscape(job.Getenv("all")), + url.QueryEscape(job.Getenv("limit")), + ) + resp, err := tutumConnectorCall("GET", path, "") + if err != nil { + return job.Errorf("%s: get: %v", path, err) + } + c := engine.NewTable("Created", 0) + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return job.Errorf("%s: read body: %v", path, err) + } + if _, err := c.ReadListFrom(body); err != nil { + return job.Errorf("%s: readlist: %v", path, err) + } + c.WriteListTo(job.Stdout) + return engine.StatusOK + }) + job.Eng.Register("create", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf( + "/containers/create", + ) + config := runconfig.ContainerConfigFromJob(job) + data, err := json.Marshal(config) + if err != nil { + return job.Errorf("%s: json marshal: %v", path, err) + } + resp, err := tutumConnectorCall("POST", path, string(data)) + if err != nil { + return job.Errorf("%s: post: %v", path, err) + } + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return job.Errorf("%s: read body: %#v", path, err) + } + var containerOut struct { + Id string + Warnings []string + } + err = json.Unmarshal([]byte(body), &containerOut) + _, err = job.Printf("%s\n", containerOut.Id) + if err != nil { + return job.Errorf("%s: write body: %#v", path, err) + } + log.Printf("%s", string(body)) + return engine.StatusOK + }) + job.Eng.Register("container_delete", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf( + "/containers/%s?force=%s", + job.Args[0], + url.QueryEscape(job.Getenv("forceRemove")), + ) + _, err := tutumConnectorCall("DELETE", path, "") + if err != nil { + return job.Errorf("%s: delete: %v", path, err) + } + return engine.StatusOK + }) + job.Eng.Register("start", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf("/containers/%s/start", job.Args[0]) + config := runconfig.ContainerConfigFromJob(job) + data, err := json.Marshal(config) + if err != nil { + return job.Errorf("%s: json marshal: %v", path, err) + } + _, err = tutumConnectorCall("POST", path, string(data)) + if err != nil { + return job.Errorf("%s: post: %v", path, err) + } + return engine.StatusOK + }) + job.Eng.Register("stop", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf( + "/containers/%s/stop?t=%s", + job.Args[0], + url.QueryEscape(job.Getenv("t")), + ) + _, err := tutumConnectorCall("POST", path, "") + if err != nil { + return job.Errorf("%s: post: %v", path, err) + } + return engine.StatusOK + }) + job.Eng.Register("kill", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf( + "/containers/%s/kill?signal=%s", + job.Args[0], + job.Args[1], + ) + _, err := tutumConnectorCall("POST", path, "") + if err != nil { + return job.Errorf("%s: post: %v", path, err) + } + return engine.StatusOK + }) + job.Eng.Register("restart", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf( + "/containers/%s/restart?t=%s", + job.Args[0], + url.QueryEscape(job.Getenv("t")), + ) + _, err := tutumConnectorCall("POST", path, "") + if err != nil { + return job.Errorf("%s: post: %v", path, err) + } + return engine.StatusOK + }) + job.Eng.Register("inspect", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf( + "/containers/%s/json", + job.Args[0], + ) + resp, err := tutumConnectorCall("GET", path, "") + if err != nil { + return job.Errorf("%s: get: %v", path, err) + } + _, err = io.Copy(job.Stdout, resp.Body) + if err != nil { + return job.Errorf("%s: copy stream: %v", path, err) + } + return engine.StatusOK + }) + job.Eng.Register("logs", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := fmt.Sprintf( + "/containers/%s/logs?stdout=%s&stderr=%s", + job.Args[0], + url.QueryEscape(job.Getenv("stdout")), + url.QueryEscape(job.Getenv("stderr")), + ) + resp, err := tutumConnectorCall("GET", path, "") + if err != nil { + return job.Errorf("%s: get: %v", path, err) + } + _, err = io.Copy(job.Stdout, resp.Body) + if err != nil { + return job.Errorf("%s: copy stream: %v", path, err) + } + return engine.StatusOK + }) + job.Eng.Register("version", func(job *engine.Job) engine.Status { + log.Printf("Received '%s' operation....", job.Name) + path := "/version" + resp, err := tutumConnectorCall("GET", path, "") + if err != nil { + return job.Errorf("%s: get: %v", path, err) + } + _, err = io.Copy(job.Stdout, resp.Body) + if err != nil { + return job.Errorf("%s: copy stream: %v", path, err) + } + return engine.StatusOK + }) + job.Eng.RegisterCatchall(func(job *engine.Job) engine.Status { + return job.Errorf("Operation not yet supported: %s", job.Name) + }) + return engine.StatusOK + }) + return nil +} + +func tutumConnectorCall(method, path, body string) (*http.Response, error) { + apiPath := fmt.Sprintf( + "/%s%s", + tutumConnectorVersion, + path, + ) + u, err := url.Parse(apiPath) + if err != nil { + return nil, err + } + u.Host = tutumConnector + u.Scheme = "https" + log.Printf("[tutum] >> Calling connector: %s %s", method, path) + req, err := http.NewRequest(method, u.String(), strings.NewReader(body)) + if err != nil { + return nil, err + } + authHeader := fmt.Sprintf("ApiKey %s:%s", tutum.User, tutum.ApiKey) + req.Header.Add("Authorization", authHeader) + resp, err := http.DefaultClient.Do(req) + if err != nil { + return nil, err + } + log.Printf("[tutum] << Response: %d", resp.StatusCode) + if resp.StatusCode >= 400 { + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("%s %s: read body: %#v", method, path, err) + } + return nil, fmt.Errorf("%s %s: %s", method, path, body) + } + return resp, nil +} diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 905d163b4a..5b2f544a93 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -143,6 +143,10 @@ { "ImportPath": "github.com/gorilla/mux", "Rev": "9b36453141c35697401168b07f2c09fcff7721ce" + }, + { + "ImportPath": "github.com/tutumcloud/go-tutum", + "Rev": "d826286d2e5882428c8163ab44261987bea85a44" } ] } From 2cb49f581d6ae4d13453b35411248c5fee3880a2 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 5 Jun 2014 19:58:53 +0000 Subject: [PATCH 194/347] Simpler explanation: libswarm is a minimalist toolkit to compose network services Update README and usage message. --- README.md | 42 ++++++++---------------------------------- swarmd/swarmd.go | 2 +- 2 files changed, 9 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index c76f200d5d..9865c9fc62 100644 --- a/README.md +++ b/README.md @@ -2,43 +2,17 @@ ## A library to orchestrate heterogeneous distributed systems -*libswarm* is a lightweight, standardized abstraction for federating and orchestrating -distributed systems. It can discover and communicate with all machines in your system, -using a variety of backend adaptors, and expose them via a single, straightforward API. -This is very useful if your system spans multiple locations on the Internet (your home -network, office lan, colocated rack, cloud provider, etc.) and uses heterogeneous tools -for deployment, clustering and service discovery (manually configured IPs on your laptop, -zeroconf at the office, ssh tunnels + custom DNS on the rack, Mesos, Consul or Etcd/Fleet -on your cloud provider, etc.). +*libswarm* is a minimalist toolkit to compose network services. -*libswarm* federates all these elements under a unified namespace and lets you orchestrate -them using a lightweight and flexible API. +It exposes a simple API for the following tasks: -Because the *libswarm* API is dead-simple to learn and built on standard components, there -is a growing ecosystem of tools already compatible with it, which you can use to manage -your swarm out of the box: - -* `swarmctl` is a simple command-line utility which lets you easily compose any combination -of backends, and orchestrate them straight from the terminal. - -* (coming soon) *Shipyard* offers a powerful web interface to manage any swarm-compatible -distributed system straight from the browser. - -* (coming soon) *Swarmlog* is a logging tool which consumes all log streams from your swarm -and forwards them to a variety of logging backends. - -* (coming soon) *Deis*, the popular Docker-based application platform, supports *libswarm* -natively, and can deploy applications to it out-of-the-box. - -* (coming soon) *Drone.io*, the Docker-based continuous integration platform, can spawn -build and test workers on any swarm. - -* (coming soon) *Fig*, the popular development tool, supports libswarm out of the box. - -* (coming soon) *Docker*, the open-source container engine, has announced that they will -adopt *libswarm* as a built-in, and recommend it as the preferred way to orchestrate -and manage a Docker-based cluster. + * *Clustering*: deploy services on pools of interchangeable machines + * *Composition*: combine multiple services into higher-level services of arbitrary complexity - it's services all the way down! + * *Interconnection*: services can reliably and securely communicate with each other using asynchronous message passing, request/response, or raw sockets. + * *Scale* services can run concurrently in the same process using goroutines and channels; in separate processes on the same machines using high-performance IPC; +on multiple machines in a local network; or across multiple datacenters. + * *Integration*: incorporate your existing systems into your swarm. libswarm includes adapters to many popular infrastructure tools and services: docker, dns, mesos, etcd, fleet, deis, google compute, rackspace cloud, tutum, orchard, digital ocean, ssh, etc. It’s very easy to create your own adapter: just clone the repository at ## Testing libswarm with swarmd diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 0f770a692d..3fc297f76d 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -15,7 +15,7 @@ import ( func main() { app := cli.NewApp() app.Name = "swarmd" - app.Usage = "Compose distributed systems from lightweight services" + app.Usage = "a minimalist toolkit to compose network services" app.Version = "0.0.1" app.Flags = []cli.Flag{} app.Action = cmdDaemon From 1b3c61f8262a767edbfb7e8ef5288d4900fca8d1 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 5 Jun 2014 20:09:35 +0000 Subject: [PATCH 195/347] Change README title for consistency Signed-off-by: Solomon Hykes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9865c9fc62..b2ceaaf385 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Libswarm -## A library to orchestrate heterogeneous distributed systems +## A minimalist toolkit to compose network services *libswarm* is a minimalist toolkit to compose network services. From c7a78ae81e6c0ddcf6937aab5195c284c711dc99 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 09:10:52 +0000 Subject: [PATCH 196/347] Simple fork-exec backend Signed-off-by: Solomon Hykes Signed-off-by: Ben Firshman Signed-off-by: Aanand Prasad --- backends/backends.go | 1 + backends/exec.go | 105 +++++++++++++++++++++++++++++++++++++++++++ swarmd/swarmd.go | 24 +++++----- 3 files changed, 118 insertions(+), 12 deletions(-) create mode 100644 backends/exec.go diff --git a/backends/backends.go b/backends/backends.go index 3358215b94..2f0f6dd7e0 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -16,5 +16,6 @@ func New() *beam.Object { backends.Bind("debug", Debug()) backends.Bind("fakeclient", FakeClient()) backends.Bind("forward", Forward()) + backends.Bind("exec", Exec()) return beam.Obj(backends) } diff --git a/backends/exec.go b/backends/exec.go new file mode 100644 index 0000000000..49251a39b3 --- /dev/null +++ b/backends/exec.go @@ -0,0 +1,105 @@ +package backends + +import ( + "fmt" + "io" + "os/exec" + "encoding/json" + "bufio" + "strings" + "sync" + + "github.com/docker/libswarm/beam" +) + +func Exec() beam.Sender { + e := beam.NewServer() + e.OnSpawn(beam.Handler(func(msg *beam.Message) error { + if len(msg.Args) < 1 { + return fmt.Errorf("usage: SPAWN exec|... ") + } + if msg.Args[0] != "exec" { + return fmt.Errorf("invalid command: %s", msg.Args[0]) + } + var config struct { + Path string + Args []string + } + if err := json.Unmarshal([]byte(msg.Args[1]), &config); err != nil { + config.Path = msg.Args[1] + config.Args = msg.Args[2:] + } + cmd := &command{ + Cmd: exec.Command(config.Path, config.Args...), + Server: beam.NewServer(), + } + cmd.OnAttach(beam.Handler(func(msg *beam.Message) error { + stdout, err := cmd.StdoutPipe() + if err != nil { + return err + } + stdin, err := cmd.StdinPipe() + if err != nil { + return err + } + inR, inW := beam.Pipe() + if _, err := msg.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: inW}); err != nil { + return err + } + out := beam.Obj(msg.Ret) + go func() { + defer stdin.Close() + for { + msg, err := inR.Receive(0) + if err != nil { + return + } + if msg.Verb == beam.Log && len(msg.Args) > 0 { + fmt.Fprintf(stdin, "%s\n", strings.TrimRight(msg.Args[0], "\r\n")) + } + } + }() + cmd.tasks.Add(1) + go func() { + defer cmd.tasks.Done() + scanner := bufio.NewScanner(stdout) + for scanner.Scan() { + if scanner.Err() != io.EOF && scanner.Err() != nil { + return + } + if err := out.Log(scanner.Text()); err != nil { + out.Error("%v", err) + return + } + } + }() + cmd.tasks.Wait() + return nil + })) + cmd.OnStart(beam.Handler(func(msg *beam.Message) error { + cmd.tasks.Add(1) + if err := cmd.Cmd.Start(); err != nil { + return err + } + go func() { + defer cmd.tasks.Done() + if err := cmd.Cmd.Wait(); err != nil { + beam.Obj(msg.Ret).Log("%s exited status=%v", cmd.Cmd.Path, err) + } + }() + msg.Ret.Send(&beam.Message{Verb: beam.Ack}) + return nil + })) + if _, err := msg.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: cmd}); err != nil { + return err + } + return nil + })) + return e +} + +type command struct { + *exec.Cmd + *beam.Server + tasks sync.WaitGroup +} diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 79099d374c..dccecdb080 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -42,37 +42,37 @@ func cmdDaemon(c *cli.Context) { fmt.Println(strings.Join(names, "\n")) return } - var previousInstanceIn beam.Receiver - for _, backendArg := range c.Args() { + var previousInstanceR beam.Receiver + // FIXME: refactor into a Pipeline + for idx, backendArg := range c.Args() { bName, bArgs, err := parseCmd(backendArg) if err != nil { Fatalf("parse: %v", err) } - fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " ")) _, backend, err := back.Attach(bName) if err != nil { Fatalf("%s: %v\n", bName, err) } - fmt.Printf("---> Spawning\n") instance, err := backend.Spawn(bArgs...) if err != nil { Fatalf("spawn %s: %v\n", bName, err) } - fmt.Printf("---> Attaching\n") - instanceIn, instanceOut, err := instance.Attach("") + instanceR, instanceW, err := instance.Attach("") if err != nil { Fatalf("attach: %v", err) } - fmt.Printf("---> Starting\n") + go func(r beam.Receiver, w beam.Sender, idx int) { + if r != nil { + beam.Copy(w, r) + } + w.Close() + }(previousInstanceR, instanceW, idx) if err := instance.Start(); err != nil { Fatalf("start: %v", err) } - if previousInstanceIn != nil { - go beam.Copy(instanceOut, previousInstanceIn) - } - previousInstanceIn = instanceIn + previousInstanceR = instanceR } - _, err := beam.Copy(app, previousInstanceIn) + _, err := beam.Copy(app, previousInstanceR) if err != nil { Fatalf("copy: %v", err) } From 98818d4d39b769096fa1cbadff4ad248452d3734 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 6 Jun 2014 01:38:28 +0000 Subject: [PATCH 197/347] beam.Copy doesn't return an error on EOF Signed-off-by: Solomon Hykes --- beam/copy.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/beam/copy.go b/beam/copy.go index dd979dc55f..d62c03b8b4 100644 --- a/beam/copy.go +++ b/beam/copy.go @@ -1,6 +1,7 @@ package beam import ( + "io" "sync" ) @@ -22,6 +23,9 @@ func Copy(dst Sender, src Receiver) (int, error) { ) for { msg, err := src.Receive(Ret) + if err == io.EOF { + return n, nil + } if err != nil { return n, err } From 3e6b975cc2c41b3275b1cbb264adc217c746e4ab Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 16:18:27 -0700 Subject: [PATCH 198/347] Make forward backend respond to msgs on ack return Signed-off-by: Ben Firshman --- backends/forward.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/backends/forward.go b/backends/forward.go index 0992235651..b0f3ad9ccf 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -28,13 +28,15 @@ func Forward() beam.Sender { if err != nil { return fmt.Errorf("%v", err) } - f := &forwarder{client: client} - instance := beam.NewServer() - instance.OnAttach(beam.Handler(f.attach)) - instance.OnStart(beam.Handler(f.start)) - instance.OnLs(beam.Handler(f.ls)) - instance.OnSpawn(beam.Handler(f.spawn)) - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + f := &forwarder{ + client: client, + Server: beam.NewServer(), + } + f.Server.OnAttach(beam.Handler(f.attach)) + f.Server.OnStart(beam.Handler(f.start)) + f.Server.OnLs(beam.Handler(f.ls)) + f.Server.OnSpawn(beam.Handler(f.spawn)) + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) return err })) return backend @@ -42,10 +44,11 @@ func Forward() beam.Sender { type forwarder struct { client *client + *beam.Server } func (f *forwarder) attach(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) for { time.Sleep(1 * time.Second) (&beam.Object{ctx.Ret}).Log("forward: heartbeat") From aef71e2d82b87393c64d55a08fb5ff9af5aac9d0 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 16:33:25 -0700 Subject: [PATCH 199/347] Add basic apiserver backend Signed-off-by: Ben Firshman --- backends/apiserver.go | 118 ++++++++++++++++++++++++++++++++++++++++++ backends/backends.go | 1 + 2 files changed, 119 insertions(+) create mode 100644 backends/apiserver.go diff --git a/backends/apiserver.go b/backends/apiserver.go new file mode 100644 index 0000000000..198109fef6 --- /dev/null +++ b/backends/apiserver.go @@ -0,0 +1,118 @@ +package backends + +import ( + "encoding/json" + "fmt" + "github.com/docker/libswarm/beam" + "github.com/dotcloud/docker/api" + "github.com/dotcloud/docker/pkg/version" + "github.com/gorilla/mux" + "net" + "net/http" +) + +func ApiServer() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + err := listenAndServe("tcp", "0.0.0.0:4243", out) + if err != nil { + fmt.Printf("listenAndServe: %v", err) + } + }) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + return err + })) + return backend +} + +type HttpApiFunc func(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error + +func listenAndServe(proto, addr string, out beam.Sender) error { + fmt.Println("Starting API server...") + r, err := createRouter(out) + if err != nil { + return err + } + l, err := net.Listen(proto, addr) + if err != nil { + return err + } + httpSrv := http.Server{Addr: addr, Handler: r} + return httpSrv.Serve(l) +} + +func ping(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + _, err := w.Write([]byte{'O', 'K'}) + return err +} + +func getContainersJSON(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if err := r.ParseForm(); err != nil { + return err + } + + o := beam.Obj(out) + names, err := o.Ls() + if err != nil { + return err + } + + return writeJSON(w, 200, names) +} + +func createRouter(out beam.Sender) (*mux.Router, error) { + r := mux.NewRouter() + m := map[string]map[string]HttpApiFunc{ + "GET": { + "/_ping": ping, + "/containers/json": getContainersJSON, + }, + "POST": {}, + "DELETE": {}, + "OPTIONS": {}, + } + + for method, routes := range m { + for route, fct := range routes { + localRoute := route + localFct := fct + localMethod := method + + f := makeHttpHandler(out, localMethod, localRoute, localFct, version.Version("0.11.0")) + + // add the new route + if localRoute == "" { + r.Methods(localMethod).HandlerFunc(f) + } else { + r.Path("/v{version:[0-9.]+}" + localRoute).Methods(localMethod).HandlerFunc(f) + r.Path(localRoute).Methods(localMethod).HandlerFunc(f) + } + } + } + + return r, nil +} + +func makeHttpHandler(out beam.Sender, localMethod string, localRoute string, handlerFunc HttpApiFunc, dockerVersion version.Version) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + // log the request + fmt.Printf("Calling %s %s\n", localMethod, localRoute) + + version := version.Version(mux.Vars(r)["version"]) + if version == "" { + version = api.APIVERSION + } + + if err := handlerFunc(out, version, w, r, mux.Vars(r)); err != nil { + fmt.Printf("Error: %s", err) + } + } +} + +func writeJSON(w http.ResponseWriter, code int, v interface{}) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(code) + enc := json.NewEncoder(w) + return enc.Encode(v) +} diff --git a/backends/backends.go b/backends/backends.go index 2f0f6dd7e0..97e791f4d3 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -17,5 +17,6 @@ func New() *beam.Object { backends.Bind("fakeclient", FakeClient()) backends.Bind("forward", Forward()) backends.Bind("exec", Exec()) + backends.Bind("apiserver", ApiServer()) return beam.Obj(backends) } From 77b04f6116bdb84c2dc934f903197ec3ae1974ab Mon Sep 17 00:00:00 2001 From: cpuguy83 Date: Fri, 6 Jun 2014 19:07:17 -0400 Subject: [PATCH 200/347] Add basic shipyard backend --- backends/backends.go | 1 + backends/shipyard.go | 93 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 backends/shipyard.go diff --git a/backends/backends.go b/backends/backends.go index 1ddeeb2520..5ecf28a3cf 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -19,5 +19,6 @@ func New() *engine.Engine { Forward().Install(back) CloudBackend().Install(back) Tutum().Install(back) + Shipyard().Install(back) return back } diff --git a/backends/shipyard.go b/backends/shipyard.go new file mode 100644 index 0000000000..14f3b41ec9 --- /dev/null +++ b/backends/shipyard.go @@ -0,0 +1,93 @@ +package backends + +import ( + "fmt" + "github.com/dotcloud/docker/engine" + "io/ioutil" + "log" + "net/http" + "net/url" + "strings" +) + +func Shipyard() engine.Installer { + return &shipyard{} +} + +type shipyard struct { + url, user, pass string +} + +func (s *shipyard) Install(eng *engine.Engine) error { + eng.Register("shipyard", func(job *engine.Job) engine.Status { + if len(job.Args) != 3 { + return job.Errorf("usage: ") + } + s.url = job.Args[0] + s.user = job.Args[1] + s.pass = job.Args[2] + job.Eng.Register("containers", s.containers) + job.Eng.Register("container_inspect", s.container_inspect) + return engine.StatusOK + }) + + return nil +} + +func (c *shipyard) containers(job *engine.Job) engine.Status { + var args string + if job.Getenv("limit") != "" { + args = fmt.Sprintf("%s&limit=%s", args, url.QueryEscape(job.Getenv("limit"))) + } + if job.Getenv("offset") != "" { + args = fmt.Sprintf("%s&offset=%s", args, url.QueryEscape(job.Getenv("offset"))) + } + + path := fmt.Sprintf("containers/?%s", args) + out, err := c.gateway("GET", path, "") + if err != nil { + return job.Errorf("%s: get: %v", path, err) + } + log.Printf("%s", out) + return engine.StatusOK +} + +func (c *shipyard) container_inspect(job *engine.Job) engine.Status { + path := fmt.Sprintf("containers/details/%s", job.Args[0]) + out, err := c.gateway("GET", path, "") + if err != nil { + return job.Errorf("%s: get: %v", path, err) + } + log.Printf("%s", out) + return engine.StatusOK +} + +func (c *shipyard) gateway(method, path, body string) ([]byte, error) { + apiPath := fmt.Sprintf("%s/api/v1/%s&format=json", c.url, path) + url, err := url.Parse(apiPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(method, url.String(), strings.NewReader(body)) + if err != nil { + return nil, err + } + + req.Header.Set("Authorization", "ApiKey "+c.api_key()) + resp, err := http.DefaultClient.Do(req) + defer resp.Body.Close() + if err != nil { + return nil, err + } + + out, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *shipyard) api_key() string { + return c.user + ":" + c.pass +} From 16036ec9948b412dcac0bdedf4d237537dcb6e0a Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 5 Jun 2014 15:23:19 -0700 Subject: [PATCH 201/347] Generate container JSON client-side and send it in spawn msg Signed-off-by: Aanand Prasad (github: aanand) --- backends/forward.go | 17 +++-------------- dockerclient/dockerclient.go | 14 +++++++++++++- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/backends/forward.go b/backends/forward.go index b0f3ad9ccf..aeeef29716 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -5,7 +5,6 @@ import ( "fmt" "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/engine" - "github.com/dotcloud/docker/runconfig" "github.com/dotcloud/docker/utils" "io" "io/ioutil" @@ -86,20 +85,10 @@ func (f *forwarder) ls(ctx *beam.Message) error { } func (f *forwarder) spawn(ctx *beam.Message) error { - if len(ctx.Args) < 1 { - return fmt.Errorf("forward: spawn takes at least 1 argument, got %d", len(ctx.Args)) + if len(ctx.Args) != 1 { + return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } - body, err := json.Marshal(&runconfig.Config{ - Image: ctx.Args[0], - Cmd: ctx.Args[1:], - AttachStdin: false, - AttachStdout: true, - AttachStderr: true, - }) - if err != nil { - return err - } - resp, err := f.client.call("POST", "/containers/create", string(body)) + resp, err := f.client.call("POST", "/containers/create", ctx.Args[0]) if err != nil { return err } diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go index c0d250f37a..b2f7d67edb 100644 --- a/dockerclient/dockerclient.go +++ b/dockerclient/dockerclient.go @@ -1,10 +1,12 @@ package main import ( + "encoding/json" "fmt" "github.com/codegangsta/cli" "github.com/docker/libswarm/backends" "github.com/docker/libswarm/beam" + "github.com/dotcloud/docker/runconfig" "log" "os" "strings" @@ -85,7 +87,17 @@ func doCmd(instance *beam.Object, args []string) error { if len(args) < 3 { return fmt.Errorf("usage: run IMAGE COMMAND...") } - container, err := instance.Spawn(args[1:]...) + containerJson, err := json.Marshal(&runconfig.Config{ + Image: args[1], + Cmd: args[2:], + AttachStdin: false, + AttachStdout: true, + AttachStderr: true, + }) + if err != nil { + return err + } + container, err := instance.Spawn(string(containerJson)) if err != nil { return fmt.Errorf("spawn: %v", err) } From 36c58f353480cc148be723a3d905dd9b89dd6f11 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 5 Jun 2014 15:55:15 -0700 Subject: [PATCH 202/347] Use API v1.11 Signed-off-by: Aanand Prasad (github: aanand) --- backends/forward.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backends/forward.go b/backends/forward.go index aeeef29716..c92e6e60ad 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -23,7 +23,7 @@ func Forward() beam.Sender { if len(ctx.Args) != 1 { return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } - client, err := newClient(ctx.Args[0], "v0.10") + client, err := newClient(ctx.Args[0], "v1.11") if err != nil { return fmt.Errorf("%v", err) } @@ -193,6 +193,7 @@ func newClient(peer, version string) (*client, error) { } func (c *client) call(method, path, body string) (*http.Response, error) { + path = fmt.Sprintf("/%s%s", c.version, path) u, err := url.Parse(path) if err != nil { return nil, err @@ -211,6 +212,7 @@ func (c *client) call(method, path, body string) (*http.Response, error) { } func (c *client) hijack(method, path string, in io.ReadCloser, stdout, stderr io.Writer) error { + path = fmt.Sprintf("/%s%s", c.version, path) dial, err := net.Dial("tcp", c.URL.Host) if err != nil { return err From 1f8bc3ddfb8d6554f1c75f36fdc730c8bc95f1d4 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 5 Jun 2014 15:56:05 -0700 Subject: [PATCH 203/347] Don't pass logs=1 to attach request Signed-off-by: Aanand Prasad (github: aanand) --- backends/forward.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/forward.go b/backends/forward.go index c92e6e60ad..0321db49a4 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -128,7 +128,7 @@ func (c *container) attach(ctx *beam.Message) error { return err } - path := fmt.Sprintf("/containers/%s/attach?stdout=1&stderr=0&stream=1&logs=1", c.id) + path := fmt.Sprintf("/containers/%s/attach?stdout=1&stderr=0&stream=1", c.id) stdoutR, stdoutW := io.Pipe() _, stderrW := io.Pipe() From 50fdeb063c5a3123fa3c3d05ffa7ea31464f7407 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 5 Jun 2014 16:36:57 -0700 Subject: [PATCH 204/347] Handle stdout/stderr muxing Signed-off-by: Aanand Prasad (github: aanand) --- backends/forward.go | 14 +++++++------- dockerclient/dockerclient.go | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/backends/forward.go b/backends/forward.go index 0321db49a4..b6c1ec68d6 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -128,22 +128,23 @@ func (c *container) attach(ctx *beam.Message) error { return err } - path := fmt.Sprintf("/containers/%s/attach?stdout=1&stderr=0&stream=1", c.id) + path := fmt.Sprintf("/containers/%s/attach?stdout=1&stderr=1&stream=1", c.id) stdoutR, stdoutW := io.Pipe() - _, stderrW := io.Pipe() - go copyOutput(ctx.Ret, stdoutR) + stderrR, stderrW := io.Pipe() + go copyOutput(ctx.Ret, stdoutR, "stdout") + go copyOutput(ctx.Ret, stderrR, "stderr") c.forwarder.client.hijack("POST", path, nil, stdoutW, stderrW) return nil } -func copyOutput(sender beam.Sender, reader io.Reader) { +func copyOutput(sender beam.Sender, reader io.Reader, tag string) { chunk := make([]byte, 4096) for { n, err := reader.Read(chunk) if n > 0 { - sender.Send(&beam.Message{Verb: beam.Log, Args: []string{string(chunk[0:n])}}) + sender.Send(&beam.Message{Verb: beam.Log, Args: []string{tag, string(chunk[0:n])}}) } if err != nil { message := fmt.Sprintf("Error reading from stream: %v", err) @@ -236,8 +237,7 @@ func (c *client) hijack(method, path string, in io.ReadCloser, stdout, stderr io in.Close() } }() - // _, err = utils.StdCopy(stdout, stderr, br) - _, err = io.Copy(stdout, br) + _, err = utils.StdCopy(stdout, stderr, br) log.Println("[hijack] End of stdout") return err }) diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go index b2f7d67edb..66f41b35a3 100644 --- a/dockerclient/dockerclient.go +++ b/dockerclient/dockerclient.go @@ -7,6 +7,7 @@ import ( "github.com/docker/libswarm/backends" "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/runconfig" + "io" "log" "os" "strings" @@ -119,7 +120,19 @@ func doCmd(instance *beam.Object, args []string) error { if msg.Verb != beam.Log { return fmt.Errorf("unexpected message reading from container: %v", msg) } - fmt.Print(msg.Args[0]) + if len(msg.Args) != 2 { + return fmt.Errorf("expected exactly 2 args to log message, got %d", len(msg.Args)) + } + tag, chunk := msg.Args[0], msg.Args[1] + var stream io.Writer + if tag == "stdout" { + stream = os.Stdout + } else if tag == "stderr" { + stream = os.Stderr + } else { + return fmt.Errorf("unrecognised tag: %s", tag) + } + fmt.Fprint(stream, chunk) } return nil } From 9e034af3243a7add163d306e2fa17e9ee431c1bb Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 6 Jun 2014 10:47:13 -0700 Subject: [PATCH 205/347] Use utils.Debugf instead of log.* Signed-off-by: Aanand Prasad --- backends/forward.go | 13 ++++++------- dockerclient/dockerclient.go | 12 ++++++------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/backends/forward.go b/backends/forward.go index b6c1ec68d6..4ec2c54ca0 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -8,7 +8,6 @@ import ( "github.com/dotcloud/docker/utils" "io" "io/ioutil" - "log" "net" "net/http" "net/http/httputil" @@ -238,33 +237,33 @@ func (c *client) hijack(method, path string, in io.ReadCloser, stdout, stderr io } }() _, err = utils.StdCopy(stdout, stderr, br) - log.Println("[hijack] End of stdout") + utils.Debugf("[hijack] End of stdout") return err }) sendStdin := utils.Go(func() error { if in != nil { io.Copy(rwc, in) - log.Println("[hijack] End of stdin") + utils.Debugf("[hijack] End of stdin") } if tcpc, ok := rwc.(*net.TCPConn); ok { if err := tcpc.CloseWrite(); err != nil { - log.Printf("Couldn't send EOF: %s\n", err) + utils.Debugf("Couldn't send EOF: %s", err) } } else if unixc, ok := rwc.(*net.UnixConn); ok { if err := unixc.CloseWrite(); err != nil { - log.Printf("Couldn't send EOF: %s\n", err) + utils.Debugf("Couldn't send EOF: %s", err) } } // Discard errors due to pipe interruption return nil }) if err := <-receiveStdout; err != nil { - log.Printf("Error receiveStdout: %s\n", err) + utils.Debugf("Error receiveStdout: %s", err) return err } if err := <-sendStdin; err != nil { - log.Printf("Error sendStdin: %s\n", err) + utils.Debugf("Error sendStdin: %s", err) return err } return nil diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go index 66f41b35a3..f3c06aa0c6 100644 --- a/dockerclient/dockerclient.go +++ b/dockerclient/dockerclient.go @@ -7,8 +7,8 @@ import ( "github.com/docker/libswarm/backends" "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/runconfig" + "github.com/dotcloud/docker/utils" "io" - "log" "os" "strings" ) @@ -28,7 +28,7 @@ func main() { func cmdDaemon(c *cli.Context) { app := beam.NewServer() app.OnLog(beam.Handler(func(msg *beam.Message) error { - log.Printf("%s\n", strings.Join(msg.Args, " ")) + utils.Debugf("%s", strings.Join(msg.Args, " ")) return nil })) app.OnError(beam.Handler(func(msg *beam.Message) error { @@ -43,13 +43,13 @@ func cmdDaemon(c *cli.Context) { dockerHost = "unix:///var/run/docker.sock" } - log.Printf("---> Spawning\n") + utils.Debugf("---> Spawning") instance, err := backend.Spawn(dockerHost) if err != nil { Fatalf("spawn: %v\n", err) } - log.Printf("---> Attaching\n") + utils.Debugf("---> Attaching") instanceIn, instanceOut, err := instance.Attach("") if err != nil { Fatalf("attach: %v", err) @@ -57,7 +57,7 @@ func cmdDaemon(c *cli.Context) { defer instanceOut.Close() go beam.Copy(app, instanceIn) - log.Printf("---> Starting\n") + utils.Debugf("---> Starting") if err := instance.Start(); err != nil { Fatalf("start: %v", err) } @@ -72,7 +72,7 @@ func doCmd(instance *beam.Object, args []string) error { if len(args) == 0 { return fmt.Errorf("no command supplied") } - log.Printf("---> %s\n", args[0]) + utils.Debugf("---> %s", args[0]) if args[0] == "ps" { if len(args) != 1 { return fmt.Errorf("usage: ps") From cccc4efa78ff915f6c259d49a7ed98cc106040a0 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 6 Jun 2014 10:48:31 -0700 Subject: [PATCH 206/347] Remove some debug Signed-off-by: Aanand Prasad --- dockerclient/dockerclient.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go index f3c06aa0c6..7f5d776ea1 100644 --- a/dockerclient/dockerclient.go +++ b/dockerclient/dockerclient.go @@ -43,13 +43,11 @@ func cmdDaemon(c *cli.Context) { dockerHost = "unix:///var/run/docker.sock" } - utils.Debugf("---> Spawning") instance, err := backend.Spawn(dockerHost) if err != nil { Fatalf("spawn: %v\n", err) } - utils.Debugf("---> Attaching") instanceIn, instanceOut, err := instance.Attach("") if err != nil { Fatalf("attach: %v", err) @@ -57,7 +55,6 @@ func cmdDaemon(c *cli.Context) { defer instanceOut.Close() go beam.Copy(app, instanceIn) - utils.Debugf("---> Starting") if err := instance.Start(); err != nil { Fatalf("start: %v", err) } @@ -72,7 +69,6 @@ func doCmd(instance *beam.Object, args []string) error { if len(args) == 0 { return fmt.Errorf("no command supplied") } - utils.Debugf("---> %s", args[0]) if args[0] == "ps" { if len(args) != 1 { return fmt.Errorf("usage: ps") From 814fef913b0c15fb6ec097586081e330601c465e Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 6 Jun 2014 10:49:34 -0700 Subject: [PATCH 207/347] Better variable names Signed-off-by: Aanand Prasad --- dockerclient/dockerclient.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go index 7f5d776ea1..62084e2062 100644 --- a/dockerclient/dockerclient.go +++ b/dockerclient/dockerclient.go @@ -48,12 +48,12 @@ func cmdDaemon(c *cli.Context) { Fatalf("spawn: %v\n", err) } - instanceIn, instanceOut, err := instance.Attach("") + instanceR, instanceW, err := instance.Attach("") if err != nil { Fatalf("attach: %v", err) } - defer instanceOut.Close() - go beam.Copy(app, instanceIn) + defer instanceW.Close() + go beam.Copy(app, instanceR) if err := instance.Start(); err != nil { Fatalf("start: %v", err) From 5e8717ce6b5c18dff87b705d8892d1ada1906e3e Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 7 Jun 2014 00:20:54 +0000 Subject: [PATCH 208/347] Fix swarmd flags Signed-off-by: Solomon Hykes --- swarmd/swarmd.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 3fc297f76d..5d95586dd7 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -17,14 +17,16 @@ func main() { app.Name = "swarmd" app.Usage = "a minimalist toolkit to compose network services" app.Version = "0.0.1" - app.Flags = []cli.Flag{} + app.Flags = []cli.Flag{ + cli.StringFlag{"backend", "debug", "load a backend"}, + } app.Action = cmdDaemon app.Run(os.Args) } func cmdDaemon(c *cli.Context) { if len(c.Args()) == 0 { - Fatalf("Usage: %s ://
[://
]...\n", c.App.Name) + Fatalf("Usage: %s [OPTIONS] ://
[://
]...\n", c.App.Name) } // Load backend From fe9b8771955605fba0b66b8cdf9df56dbcbcd798 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Fri, 6 Jun 2014 17:33:21 -0700 Subject: [PATCH 209/347] Add http2 implementation --- beam/http2/README.md | 2 + beam/http2/listener.go | 86 +++++++++++++++++++ beam/http2/listener_test.go | 83 ++++++++++++++++++ beam/http2/spdy.go | 109 +++++++++++++++++++++++ beam/http2/stream.go | 166 ++++++++++++++++++++++++++++++++++++ beam/http2/stream_test.go | 159 ++++++++++++++++++++++++++++++++++ swarmd/Godeps/Godeps.json | 4 + 7 files changed, 609 insertions(+) create mode 100644 beam/http2/listener.go create mode 100644 beam/http2/listener_test.go create mode 100644 beam/http2/spdy.go create mode 100644 beam/http2/stream.go create mode 100644 beam/http2/stream_test.go diff --git a/beam/http2/README.md b/beam/http2/README.md index d9af9bc043..92ea4c8cdf 100644 --- a/beam/http2/README.md +++ b/beam/http2/README.md @@ -1,5 +1,7 @@ This package defines a remote transport for Beam services using http2/spdy and tls. +Uses https://github.com/docker/spdystream + Pointers: * Low-level protocol framer: http://code.google.com/p/go.net/spdy diff --git a/beam/http2/listener.go b/beam/http2/listener.go new file mode 100644 index 0000000000..8b17bf2b08 --- /dev/null +++ b/beam/http2/listener.go @@ -0,0 +1,86 @@ +package http2 + +import ( + "github.com/docker/libswarm/beam" + "github.com/docker/spdystream" + "net" + "sync" +) + +type ListenSession struct { + listener net.Listener + streamChan chan *spdystream.Stream + streamLock sync.RWMutex + subStreamChans map[string]chan *spdystream.Stream + auth Authenticator +} + +func NewListenSession(listener net.Listener, auth Authenticator) (*ListenSession, error) { + return &ListenSession{ + listener: listener, + streamChan: make(chan *spdystream.Stream), + subStreamChans: make(map[string]chan *spdystream.Stream), + auth: auth, + }, nil +} + +func (l *ListenSession) streamHandler(stream *spdystream.Stream) { + streamChan := l.getStreamChan(stream.Parent()) + streamChan <- stream +} + +func (l *ListenSession) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { + l.streamLock.Lock() + l.subStreamChans[stream.String()] = streamChan + l.streamLock.Unlock() +} + +func (l *ListenSession) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { + if stream == nil { + return l.streamChan + } + l.streamLock.RLock() + defer l.streamLock.RUnlock() + streamChan, ok := l.subStreamChans[stream.String()] + if ok { + return streamChan + } + return l.streamChan +} + +func (l *ListenSession) Serve() { + for { + conn, err := l.listener.Accept() + if err != nil { + // TODO log + break + } + + go func() { + authHandler, authErr := l.auth(conn) + if authErr != nil { + // TODO log + conn.Close() + return + } + + spdyConn, spdyErr := spdystream.NewConnection(conn, true) + if spdyErr != nil { + // TODO log + conn.Close() + return + } + + go spdyConn.Serve(l.streamHandler, authHandler) + }() + } +} + +func (l *ListenSession) Shutdown() error { + return l.listener.Close() +} + +func (l *ListenSession) Receive(mode int) (*beam.Message, error) { + stream := <-l.streamChan + return createStreamMessage(stream, mode, l, nil) +} diff --git a/beam/http2/listener_test.go b/beam/http2/listener_test.go new file mode 100644 index 0000000000..2d4a8a9432 --- /dev/null +++ b/beam/http2/listener_test.go @@ -0,0 +1,83 @@ +package http2 + +import ( + "github.com/docker/libswarm/beam" + "io" + "net" + "testing" +) + +func TestListenSession(t *testing.T) { + listen := "localhost:7743" + listener, listenErr := net.Listen("tcp", listen) + if listenErr != nil { + t.Fatalf("Error creating listener: %s", listenErr) + } + + session, sessionErr := NewListenSession(listener, NoAuthenticator) + if sessionErr != nil { + t.Fatalf("Error creating session: %s", sessionErr) + } + + go session.Serve() + + end := make(chan bool) + go exerciseServer(t, listen, end) + + msg, msgErr := session.Receive(beam.Ret) + if msgErr != nil { + t.Fatalf("Error receiving message: %s", msgErr) + } + if msg.Att == nil { + t.Fatalf("Error message missing attachment") + } + if msg.Verb != beam.Attach { + t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Attach) + } + + receiver, sendErr := msg.Ret.Send(&beam.Message{Verb: beam.Ack}) + if sendErr != nil { + t.Fatalf("Error sending return message: %s", sendErr) + } + _, ackErr := receiver.Receive(0) + if ackErr == nil { + t.Fatalf("No error receiving from message with no return pipe") + } + if ackErr != io.EOF { + t.Fatalf("Unexpected error receiving from message: %s", ackErr) + } + + <-end + shutdownErr := session.Shutdown() + if shutdownErr != nil { + t.Fatalf("Error shutting down: %s", shutdownErr) + } +} + +func exerciseServer(t *testing.T, server string, endChan chan bool) { + defer close(endChan) + + conn, connErr := net.Dial("tcp", server) + if connErr != nil { + t.Fatalf("Error dialing server: %s", connErr) + } + + session, sessionErr := NewStreamSession(conn) + if sessionErr != nil { + t.Fatalf("Error creating session: %s", sessionErr) + } + + receiver, sendErr := session.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) + if sendErr != nil { + t.Fatalf("Error sending message: %s", sendErr) + } + + msg, receiveErr := receiver.Receive(beam.Ret) + if receiveErr != nil { + t.Fatalf("Error receiving message") + } + + if msg.Verb != beam.Ack { + t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Ack) + } +} diff --git a/beam/http2/spdy.go b/beam/http2/spdy.go new file mode 100644 index 0000000000..293cc229ab --- /dev/null +++ b/beam/http2/spdy.go @@ -0,0 +1,109 @@ +package http2 + +import ( + "encoding/base64" + "fmt" + "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/beam/data" + "github.com/docker/spdystream" + "io" + "net" + "net/http" + "os" + "syscall" +) + +type Authenticator func(conn net.Conn) (spdystream.AuthHandler, error) + +func NoAuthenticator(conn net.Conn) (spdystream.AuthHandler, error) { + return func(header http.Header, slot uint8, parent uint32) bool { + return true + }, nil +} + +type streamChanProvider interface { + addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) + getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream +} + +func encodeArgs(args []string) string { + encoded := data.Encode(map[string][]string{"args": args}) + return base64.URLEncoding.EncodeToString([]byte(encoded)) +} + +func decodeArgs(argString string) ([]string, error) { + decoded, decodeErr := base64.URLEncoding.DecodeString(argString) + if decodeErr != nil { + return []string{}, decodeErr + } + dataMap, dataErr := data.Decode(string(decoded)) + if dataErr != nil { + return []string{}, dataErr + } + return dataMap["args"], nil +} + +func createStreamMessage(stream *spdystream.Stream, mode int, streamChans streamChanProvider, ret beam.Sender) (*beam.Message, error) { + verbString := stream.Headers()["Verb"] + if len(verbString) != 1 { + if len(verbString) == 0 { + return nil, fmt.Errorf("Stream(%s) is missing verb header", stream) + } else { + return nil, fmt.Errorf("Stream(%s) has multiple verb headers", stream) + } + + } + verb, verbOk := verbs[verbString[0]] + if !verbOk { + return nil, fmt.Errorf("Unknown verb: %s", verbString[0]) + } + + var args []string + argString := stream.Headers()["Args"] + if len(argString) > 1 { + return nil, fmt.Errorf("Stream(%s) has multiple args headers", stream) + } + if len(argString) == 1 { + var err error + args, err = decodeArgs(argString[0]) + if err != nil { + return nil, err + } + } + + var attach *os.File + if !stream.IsFinished() { + socketFds, socketErr := syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM|syscall.FD_CLOEXEC, 0) + if socketErr != nil { + return nil, socketErr + } + attach = os.NewFile(uintptr(socketFds[0]), "") + conn, connErr := net.FileConn(os.NewFile(uintptr(socketFds[1]), "")) + if connErr != nil { + return nil, connErr + } + + go func() { + io.Copy(conn, stream) + }() + go func() { + io.Copy(stream, conn) + }() + } + + retSender := ret + if retSender == nil || beam.RetPipe.Equals(retSender) { + retSender = &StreamSender{stream: stream, streamChans: streamChans} + } + + if mode&beam.Ret == 0 { + retSender.Close() + } + + return &beam.Message{ + Verb: verb, + Args: args, + Att: attach, + Ret: retSender, + }, nil +} diff --git a/beam/http2/stream.go b/beam/http2/stream.go new file mode 100644 index 0000000000..ac5c67364d --- /dev/null +++ b/beam/http2/stream.go @@ -0,0 +1,166 @@ +package http2 + +import ( + "fmt" + "github.com/docker/libswarm/beam" + "github.com/docker/spdystream" + "net" + "net/http" + "sync" +) + +var verbs = map[string]beam.Verb{ + "Ack": beam.Ack, + "Attach": beam.Attach, + "Connect": beam.Connect, + "Error": beam.Error, + "File": beam.File, + "Get": beam.Get, + "Log": beam.Log, + "Ls": beam.Ls, + "Set": beam.Set, + "Spawn": beam.Spawn, + "Start": beam.Start, + "Stop": beam.Stop, + "Watch": beam.Watch, +} + +// Only allows sending, no parent stream +type StreamSession struct { + conn *spdystream.Connection + + streamLock sync.Mutex + streamChan chan *spdystream.Stream + subStreamChans map[string]chan *spdystream.Stream +} + +func (s *StreamSession) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { + s.subStreamChans[stream.String()] = streamChan +} + +func (s *StreamSession) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { + if stream == nil { + return s.streamChan + } + streamChan, ok := s.subStreamChans[stream.String()] + if ok { + return streamChan + } + return s.streamChan +} + +func (s *StreamSession) newStreamHandler(stream *spdystream.Stream) { + streamChan := s.getStreamChan(stream.Parent()) + streamChan <- stream +} + +func NewStreamSession(conn net.Conn) (*StreamSession, error) { + session := &StreamSession{ + streamChan: make(chan *spdystream.Stream), + subStreamChans: make(map[string]chan *spdystream.Stream), + } + + spdyConn, spdyErr := spdystream.NewConnection(conn, false) + if spdyErr != nil { + return nil, spdyErr + } + go spdyConn.Serve(session.newStreamHandler, spdystream.NoAuthHandler) + + session.conn = spdyConn + + return session, nil +} + +func (s *StreamSession) Send(msg *beam.Message) (ret beam.Receiver, err error) { + if msg.Att != nil { + return nil, fmt.Errorf("file attachment not yet implemented for spdy transport") + } + + var fin bool + if beam.RetPipe.Equals(msg.Ret) { + fin = false + } else { + fin = true + } + headers := http.Header{ + "Verb": []string{msg.Verb.String()}, + "Args": []string{encodeArgs(msg.Args)}, + } + stream, streamErr := s.conn.CreateStream(headers, nil, fin) + if streamErr != nil { + return nil, streamErr + } + + streamChan := make(chan *spdystream.Stream) + s.subStreamChans[stream.String()] = streamChan + + if beam.RetPipe.Equals(msg.Ret) { + ret = &StreamReceiver{stream: stream, streamChans: s} + } else { + ret = &beam.NopReceiver{} + } + return +} + +func (s *StreamSession) Close() error { + return s.conn.Close() +} + +type StreamReceiver struct { + stream *spdystream.Stream + streamChans streamChanProvider + ret beam.Sender +} + +func (s *StreamReceiver) Receive(mode int) (*beam.Message, error) { + waitErr := s.stream.Wait() + if waitErr != nil { + return nil, waitErr + } + streamChan := s.streamChans.getStreamChan(s.stream) + stream := <-streamChan + return createStreamMessage(stream, mode, s.streamChans, s.ret) +} + +type StreamSender struct { + stream *spdystream.Stream + streamChans streamChanProvider +} + +func (s *StreamSender) Send(msg *beam.Message) (ret beam.Receiver, err error) { + if msg.Att != nil { + return nil, fmt.Errorf("file attachment not yet implemented for spdy transport") + } + + var fin bool + if beam.RetPipe.Equals(msg.Ret) { + fin = false + } else { + fin = true + } + headers := http.Header{ + "Verb": []string{msg.Verb.String()}, + "Args": []string{encodeArgs(msg.Args)}, + } + + stream, streamErr := s.stream.CreateSubStream(headers, fin) + if streamErr != nil { + return nil, streamErr + } + + streamChan := make(chan *spdystream.Stream) + s.streamChans.addStreamChan(stream, streamChan) + + if beam.RetPipe.Equals(msg.Ret) { + ret = &StreamReceiver{stream: stream, streamChans: s.streamChans} + } else { + ret = beam.NopReceiver{} + } + + return +} + +func (s *StreamSender) Close() error { + // TODO Remove stream from stream chans + return s.stream.Close() +} diff --git a/beam/http2/stream_test.go b/beam/http2/stream_test.go new file mode 100644 index 0000000000..8ae9d27a2b --- /dev/null +++ b/beam/http2/stream_test.go @@ -0,0 +1,159 @@ +package http2 + +import ( + //"bytes" + "github.com/docker/libswarm/beam" + //"github.com/docker/spdystream" + "io" + "net" + "testing" +) + +func TestBeamSession(t *testing.T) { + end := make(chan bool) + listen := "localhost:7543" + server, serverErr := runServer(listen, t, end) + if serverErr != nil { + t.Fatalf("Error initializing server: %s", serverErr) + } + + conn, connErr := net.Dial("tcp", listen) + if connErr != nil { + t.Fatalf("Error dialing server: %s", connErr) + } + + sender, senderErr := NewStreamSession(conn) + if senderErr != nil { + t.Fatalf("Error creating sender: %s", senderErr) + } + + // Ls interaction + receiver, sendErr := sender.Send(&beam.Message{Verb: beam.Ls, Ret: beam.RetPipe}) + if sendErr != nil { + t.Fatalf("Error sending beam message: %s", sendErr) + } + message, receiveErr := receiver.Receive(0) + if receiveErr != nil { + t.Fatalf("Error receiving beam message: %s", receiveErr) + } + if message.Verb != beam.Set { + t.Errorf("Unexpected message name:\nActual: %s\nExpected: %s", message.Verb, beam.Ls.String()) + } + if len(message.Args) != 3 { + t.Fatalf("Unexpected args length\nActual: %d\nExpected: %d", len(message.Args), 3) + } + if message.Args[0] != "file1" { + t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[0], "file1") + } + if message.Args[1] != "file2" { + t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[1], "file2") + } + if message.Args[2] != string([]byte{0x00, 0x00, 0x00}) { + t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[2], []byte{0x00, 0x00, 0x00}) + } + + // Attach interactions + receiver, sendErr = sender.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) + if sendErr != nil { + t.Fatalf("Error sending beam message: %s", sendErr) + } + message, receiveErr = receiver.Receive(beam.Ret) + if receiveErr != nil { + t.Fatalf("Error receiving beam message: %s", receiveErr) + } + if message.Verb != beam.Ack { + t.Errorf("Unexpected message name:\nActual: %s\nExpected: %s", message.Verb, beam.Ack.String()) + } + + // TODO full connect interaction + //if message.Att == nil { + // t.Fatalf("Missing attachment on message") + //} + + //testBytes := []byte("Hello") + //n, writeErr := message.Att.Write(testBytes) + //if writeErr != nil { + // t.Fatalf("Error writing bytes: %s", writeErr) + //} + //if n != 5 { + // t.Fatalf("Unexpected number of bytes read:\nActual: %d\nExpected: 5", n) + //} + + //buf := make([]byte, 10) + //n, readErr := message.Att.Read(buf) + //if readErr != nil { + // t.Fatalf("Error writing bytes: %s", readErr) + //} + //if n != 5 { + // t.Fatalf("Unexpected number of bytes read:\nActual: %d\nExpected: 5", n) + //} + //if bytes.Compare(buf[:n], testBytes) != 0 { + // t.Fatalf("Did not receive expected message:\nActual: %s\nExpectd: %s", buf, testBytes) + //} + + closeErr := server.Close() + if closeErr != nil { + t.Fatalf("Error closing server: %s", closeErr) + } + + closeErr = sender.Close() + if closeErr != nil { + t.Fatalf("Error closing sender: %s", closeErr) + } + <-end +} + +func runServer(listen string, t *testing.T, endChan chan bool) (io.Closer, error) { + listener, lErr := net.Listen("tcp", listen) + if lErr != nil { + return nil, lErr + } + + session, sessionErr := NewListenSession(listener, NoAuthenticator) + if sessionErr != nil { + t.Fatalf("Error creating session: %s", sessionErr) + } + + go session.Serve() + + go func() { + defer close(endChan) + // Ls exchange + message, receiveErr := session.Receive(beam.Ret) + if receiveErr != nil { + t.Fatalf("Error receiving on server: %s", receiveErr) + } + if message.Verb != beam.Ls { + t.Fatalf("Unexpected verb: %s", message.Verb) + } + receiver, sendErr := message.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{"file1", "file2", string([]byte{0x00, 0x00, 0x00})}}) + if sendErr != nil { + t.Fatalf("Error sending set message: %s", sendErr) + } + _, receiveErr = receiver.Receive(0) + if receiveErr == nil { + t.Fatalf("No error received from empty receiver") + } + if receiveErr != io.EOF { + t.Fatalf("Expected error from empty receiver: %s", receiveErr) + } + + // Connect exchange + message, receiveErr = session.Receive(beam.Ret) + if receiveErr != nil { + t.Fatalf("Error receiving on server: %s", receiveErr) + } + if message.Verb != beam.Attach { + t.Fatalf("Unexpected verb: %s", message.Verb) + } + receiver, sendErr = message.Ret.Send(&beam.Message{Verb: beam.Ack}) + if sendErr != nil { + t.Fatalf("Error sending set message: %s", sendErr) + } + + // TODO full connect interaction + + }() + + return listener, nil +} diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 905d163b4a..bdccac656c 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -32,6 +32,10 @@ "Comment": "0-4-g2fb21b3", "Rev": "2fb21b34171f083d46d66195caa7ec121d941ec5" }, + { + "ImportPath": "github.com/docker/spdystream", + "Rev": "87969a9c4b79508e63004ac17a97eb9278c08b3c" + }, { "ImportPath": "github.com/dotcloud/docker/api", "Comment": "v0.11.1-466-g77ae37a", From f26896274a4ac8eee3ee5ca5c1fcde52d3ac14c2 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 18:27:22 -0700 Subject: [PATCH 210/347] Remove debugging statement from debug backend Signed-off-by: Ben Firshman --- backends/debug.go | 1 - 1 file changed, 1 deletion(-) diff --git a/backends/debug.go b/backends/debug.go index 42e4cad579..fa8020676f 100644 --- a/backends/debug.go +++ b/backends/debug.go @@ -11,7 +11,6 @@ func Debug() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { instance := beam.Task(func(in beam.Receiver, out beam.Sender) { - fmt.Printf("debug backend!") for { msg, err := in.Receive(beam.Ret) if err != nil { From 2d6548b96244c519f8f3f22c72617cb480984055 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 18:28:16 -0700 Subject: [PATCH 211/347] Use http.StatusOK instead of int Signed-off-by: Ben Firshman --- backends/apiserver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/apiserver.go b/backends/apiserver.go index 198109fef6..dbffd35ea5 100644 --- a/backends/apiserver.go +++ b/backends/apiserver.go @@ -58,7 +58,7 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return err } - return writeJSON(w, 200, names) + return writeJSON(w, http.StatusOK, names) } func createRouter(out beam.Sender) (*mux.Router, error) { From 41f3776cf8058ab4170679adcf4da80da5ff5369 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 18:28:34 -0700 Subject: [PATCH 212/347] Support attaching to containers in forward backend Signed-off-by: Ben Firshman --- backends/forward.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/backends/forward.go b/backends/forward.go index 4ec2c54ca0..e808228b27 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -46,10 +46,15 @@ type forwarder struct { } func (f *forwarder) attach(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) - for { - time.Sleep(1 * time.Second) - (&beam.Object{ctx.Ret}).Log("forward: heartbeat") + if ctx.Args[0] == "" { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) + for { + time.Sleep(1 * time.Second) + (&beam.Object{ctx.Ret}).Log("forward: heartbeat") + } + } else { + c := f.newContainer(ctx.Args[0]) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) } return nil } From 9b7ad0bb63f7ecaace3aa9da53042cc10f00151c Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 18:29:42 -0700 Subject: [PATCH 213/347] Add start to apiserver Signed-off-by: Ben Firshman --- backends/apiserver.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/backends/apiserver.go b/backends/apiserver.go index dbffd35ea5..a163657753 100644 --- a/backends/apiserver.go +++ b/backends/apiserver.go @@ -61,6 +61,27 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return writeJSON(w, http.StatusOK, names) } +func postContainersStart(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if vars == nil { + return fmt.Errorf("Missing parameter") + } + + // TODO: r.Body + + name := vars["name"] + _, containerOut, err := beam.Obj(out).Attach(name) + container := beam.Obj(containerOut) + if err != nil { + return err + } + if err := container.Start(); err != nil { + return err + } + + w.WriteHeader(http.StatusNoContent) + return nil +} + func createRouter(out beam.Sender) (*mux.Router, error) { r := mux.NewRouter() m := map[string]map[string]HttpApiFunc{ @@ -68,7 +89,9 @@ func createRouter(out beam.Sender) (*mux.Router, error) { "/_ping": ping, "/containers/json": getContainersJSON, }, - "POST": {}, + "POST": { + "/containers/{name:.*}/start": postContainersStart, + }, "DELETE": {}, "OPTIONS": {}, } From 512e15282f72c5ec2d722d986098b5b0c035be91 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 19:07:03 -0700 Subject: [PATCH 214/347] Implement stop for apiserver and forward Signed-off-by: Ben Firshman --- backends/apiserver.go | 20 ++++++++++++++++++++ backends/forward.go | 20 ++++++++++++++++++++ beam/object.go | 15 +++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/backends/apiserver.go b/backends/apiserver.go index a163657753..4eabc25d81 100644 --- a/backends/apiserver.go +++ b/backends/apiserver.go @@ -82,6 +82,25 @@ func postContainersStart(out beam.Sender, version version.Version, w http.Respon return nil } +func postContainersStop(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if vars == nil { + return fmt.Errorf("Missing parameter") + } + + name := vars["name"] + _, containerOut, err := beam.Obj(out).Attach(name) + container := beam.Obj(containerOut) + if err != nil { + return err + } + if err := container.Stop(); err != nil { + return err + } + + w.WriteHeader(http.StatusNoContent) + return nil +} + func createRouter(out beam.Sender) (*mux.Router, error) { r := mux.NewRouter() m := map[string]map[string]HttpApiFunc{ @@ -91,6 +110,7 @@ func createRouter(out beam.Sender) (*mux.Router, error) { }, "POST": { "/containers/{name:.*}/start": postContainersStart, + "/containers/{name:.*}/stop": postContainersStop, }, "DELETE": {}, "OPTIONS": {}, diff --git a/backends/forward.go b/backends/forward.go index e808228b27..25ad42a184 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -119,6 +119,7 @@ func (f *forwarder) newContainer(id string) beam.Sender { instance := beam.NewServer() instance.OnAttach(beam.Handler(c.attach)) instance.OnStart(beam.Handler(c.start)) + instance.OnStop(beam.Handler(c.stop)) return instance } @@ -177,6 +178,25 @@ func (c *container) start(ctx *beam.Message) error { return nil } +func (c *container) stop(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/stop", c.id) + resp, err := c.forwarder.client.call("POST", path, "{}") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 204 { + return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + return err + } + return nil +} + type client struct { URL *url.URL proto string diff --git a/beam/object.go b/beam/object.go index 270eee17ad..7a0e44925d 100644 --- a/beam/object.go +++ b/beam/object.go @@ -187,3 +187,18 @@ func (o *Object) Start() error { } return fmt.Errorf("unexpected verb %v", msg.Verb) } + +func (o *Object) Stop() error { + ret, err := o.Send(&Message{Verb: Stop, Ret: RetPipe}) + msg, err := ret.Receive(0) + if err == io.EOF { + return fmt.Errorf("unexpected EOF") + } + if msg.Verb == Ack { + return nil + } + if msg.Verb == Error { + return fmt.Errorf(strings.Join(msg.Args[:1], "")) + } + return fmt.Errorf("unexpected verb %v", msg.Verb) +} From f5da32ed00a4fa4a174d6599cd99eb4fc0a04e23 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 7 Jun 2014 03:33:36 +0000 Subject: [PATCH 215/347] Fix formatting of README Signed-off-by: Solomon Hykes --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b2ceaaf385..888f611033 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,12 @@ It exposes a simple API for the following tasks: - * *Clustering*: deploy services on pools of interchangeable machines - * *Composition*: combine multiple services into higher-level services of arbitrary complexity - it's services all the way down! - * *Interconnection*: services can reliably and securely communicate with each other using asynchronous message passing, request/response, or raw sockets. - * *Scale* services can run concurrently in the same process using goroutines and channels; in separate processes on the same machines using high-performance IPC; +* *Clustering*: deploy services on pools of interchangeable machines +* *Composition*: combine multiple services into higher-level services of arbitrary complexity - it's services all the way down! +* *Interconnection*: services can reliably and securely communicate with each other using asynchronous message passing, request/response, or raw sockets. +* *Scale* services can run concurrently in the same process using goroutines and channels; in separate processes on the same machines using high-performance IPC; on multiple machines in a local network; or across multiple datacenters. - * *Integration*: incorporate your existing systems into your swarm. libswarm includes adapters to many popular infrastructure tools and services: docker, dns, mesos, etcd, fleet, deis, google compute, rackspace cloud, tutum, orchard, digital ocean, ssh, etc. It’s very easy to create your own adapter: just clone the repository at +* *Integration*: incorporate your existing systems into your swarm. libswarm includes adapters to many popular infrastructure tools and services: docker, dns, mesos, etcd, fleet, deis, google compute, rackspace cloud, tutum, orchard, digital ocean, ssh, etc. It’s very easy to create your own adapter: just clone the repository at ## Testing libswarm with swarmd From bd76ede9939d70ad36b83e79f1c73c78096abd9e Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 7 Jun 2014 04:25:34 +0000 Subject: [PATCH 216/347] Update examples and adapter list in README Signed-off-by: Solomon Hykes --- README.md | 202 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 124 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index 888f611033..4ab249d852 100644 --- a/README.md +++ b/README.md @@ -15,107 +15,153 @@ on multiple machines in a local network; or across multiple datacenters. * *Integration*: incorporate your existing systems into your swarm. libswarm includes adapters to many popular infrastructure tools and services: docker, dns, mesos, etcd, fleet, deis, google compute, rackspace cloud, tutum, orchard, digital ocean, ssh, etc. It’s very easy to create your own adapter: just clone the repository at +## Adapters + +Libswarm supports the following adapters: + +### Debug adapter + +The debug backend simply catches all messages and prints them on the terminal for inspection. + + +### Docker server adapter + +*Maintainer: Ben Firshman* + +### Docker client adapter + +*Maintainer: Aanand Prasad* + +### Pipeline adapter + +*Maintainer: Ben Firshman* + +### Filter adapter + +*Maintainer: Solomon Hykes* + +### Handler adapter + +*Maintainer: Solomon Hykes* + +### Task adapter + +*Maintainer: Solomon Hykes* + +### Pipe adapter + +*Maintainer: Solomon Hykes* + +### CLI adapter + +*Maintainer: Solomon Hykes* + +### Unix socket adapter + +*Maintainer: Solomon Hykes* + +### TCP adapter (client and server) + +*Help wanted!* + +### TLS adapter (client and server) + +*Help wanted!* + +### HTTP2/SPDY adapter (client and server) + +*Maintainer: Derek McGowan* + +### Etcd adapter + +*Help wanted!* + +### Geard adapter + +*Clayton Coleman* + +### Fork-exec adapter + +*Solomon Hykes* + +### Mesos adapter + +*Help wanted!* + +### Shipyard adapter + +*Brian Goff* + +### Fleet adapter + +*Help wanted!* + +### Google Compute adapter + +*Brendan Burns* + +### Rackspace cloud adapter + +*John Hopper* + +### EC2 adapter + +*Help wanted!* + +### Consul adapter + +*Help wanted!* + +### Openstack Nova adapter + +*Help wanted!* + +### Digital Ocean adapter + +*Help wanted!* + +### Softlayer adapter + +*Help wanted!* + +### Zerorpc adapter + +*Help wanted!* + + ## Testing libswarm with swarmd Libswarm ships with a simple daemon which can control all machines in your distributed system using a variety of backend adaptors, and exposes it on a single, unified endpoint. -Currently swarmd uses the standard Docker API as its frontend, which means any tool which speaks -Docker can control swarmd transparently: dokku, flynn, deis, docker-ui, shipyard, fleet, -mesos... and of course the Docker client itself. - -*Note: in the future swarmd will expose the Docker remote API as "just another backend", and -expose its own native API as a frontend.* - Usage example: -``` -./swarmd tcp://localhost:4242 & -docker -H tcp://localhost:4242 info -``` -You can listen on several frontend addresses, using any address format supported by Docker. -For example: +Run swarmd without arguments to list available backends: ``` -./swarmd tcp://localhost:4242 tcp://0.0.0.0:1234 unix:///var/run/docker.sock +./swarmd ``` -## Backends - -Libswarm supports the following backends: - -### Debug backend - -The debug backend simply catches all commands and prints them on the terminal for inspection. -It returns `StatusOK` for all commands, and never sends additional data. Therefore, docker -clients which expect data will fail to parse some of the responses. - -Usage example: +Pass a backend name as argument to load it: ``` -./swarmd --backend debug tcp://localhost:4242 +./swarmd fakeclient ``` -### Simulator backend - -The simulator backend simulates a docker daemon with fake in-memory data. -The state of the simulator persists across commands, so it's useful to analyse -the side-effects of commands, or for mocking and testing. - -Currently the simulator only implements the `containers` command. It can be passed -arguments at load-time, and will use these arguments as a list of containers. - -For example: +You can pass arguments to the backend, like a shell command: ``` -./swarmd --backend 'simulator container1 container2 container3' tcp://localhost:4242 & -docker -H tcp://localhost:4242 ps +./swarmd 'dockerserver tcp://localhost:4243' ``` -In this example the docker client should report 3 containers: `container1`, `container2` and `container3`. +You can call multiple backends. They will be executed in parallel, with the output +of each backend connected to the input of the next, just like unix pipelines. -### Forward backend - -The forward backend connects to a remote Docker API endpoint. It then forwards -all commands it receives to that remote endpoint, and forwards all responses -back to the frontend. - -For example: +This allows for very powerful composition. ``` -./swarmd --backend 'simulator myapp' unix://a.sock & -./swarmd --backend 'forward unix://a.sock' unix://b.sock -docker -H unix://b.sock ps -``` - -This last command should report 1 container: `myapp`. - - -### Creating a new backend -Create a simple my-backend.go: -``` -func MyBackend() engine.Installer { - return &myBackend{} -} - -func (f *computeEngineForward) Install(eng *engine.Engine) error { - eng.Register("mybackend", func(job *engine.Job) engine.Status { - job.Eng.Register("containers", func(job *engine.Job) engine.Status { - log.Printf("%#v", *job) - return engine.StatusOK - }) - return engine.StatusOK - }) - return nil -} -``` - -Then edit backends.go, and add your backend: -``` -... - MyBackend().Install(back) -... +./swarmd 'dockerserver tcp://localhost:4243' 'debug' 'dockerclient unix:///var/run/docker.sock' ``` ## Creators From 548a2ca5fc34731c2e395dd517285468a7b8ad7e Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 6 Jun 2014 21:41:09 -0700 Subject: [PATCH 217/347] Small README fixes Rename "pipe adapter" to "go channel adapter" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ab249d852..13ec34b031 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ The debug backend simply catches all messages and prints them on the terminal fo *Maintainer: Solomon Hykes* -### Pipe adapter +### Go channel adapter *Maintainer: Solomon Hykes* From 15246051d3c181682ccd4d031f2f62601803a6e5 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 6 Jun 2014 17:05:05 -0700 Subject: [PATCH 218/347] Fix Get() (no longer takes a key), add OnGet() to Server Signed-off-by: Aanand Prasad --- beam/object.go | 4 ++-- beam/server.go | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/beam/object.go b/beam/object.go index 7a0e44925d..eca3389c1f 100644 --- a/beam/object.go +++ b/beam/object.go @@ -134,8 +134,8 @@ func (o *Object) Set(vals ...string) error { return err } -func (o *Object) Get(key string) (string, error) { - ret, err := o.Send(&Message{Verb: Get, Args: []string{key}, Ret: RetPipe}) +func (o *Object) Get() (string, error) { + ret, err := o.Send(&Message{Verb: Get, Ret: RetPipe}) if err != nil { return "", err } diff --git a/beam/server.go b/beam/server.go index 4c7e4e0c7f..362a43adea 100644 --- a/beam/server.go +++ b/beam/server.go @@ -53,6 +53,10 @@ func (s *Server) OnLs(h Sender) *Server { return s.OnVerb(Ls, h) } +func (s *Server) OnGet(h Sender) *Server { + return s.OnVerb(Get, h) +} + func (s *Server) Send(msg *Message) (Receiver, error) { if h, exists := s.handlers[msg.Verb]; exists { return h.Send(msg) From c792360599223ef444c45e4173743fc4331428aa Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 6 Jun 2014 17:05:48 -0700 Subject: [PATCH 219/347] Implement Get on containers Signed-off-by: Aanand Prasad --- backends/forward.go | 20 ++++++++++++++++++++ dockerclient/dockerclient.go | 15 +++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/backends/forward.go b/backends/forward.go index 25ad42a184..6cbf23c431 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -120,6 +120,7 @@ func (f *forwarder) newContainer(id string) beam.Sender { instance.OnAttach(beam.Handler(c.attach)) instance.OnStart(beam.Handler(c.start)) instance.OnStop(beam.Handler(c.stop)) + instance.OnGet(beam.Handler(c.get)) return instance } @@ -197,6 +198,25 @@ func (c *container) stop(ctx *beam.Message) error { return nil } +func (c *container) get(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/json", c.id) + resp, err := c.forwarder.client.call("GET", path, "") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 200 { + return fmt.Errorf("%s", respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{string(respBody)}}); err != nil { + return err + } + return nil +} + type client struct { URL *url.URL proto string diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go index 62084e2062..2153e87f1c 100644 --- a/dockerclient/dockerclient.go +++ b/dockerclient/dockerclient.go @@ -132,6 +132,21 @@ func doCmd(instance *beam.Object, args []string) error { } return nil } + if args[0] == "inspect" { + if len(args) != 2 { + return fmt.Errorf("usage: inspect CONTAINER") + } + _, container, err := instance.Attach(args[1]) + if err != nil { + return fmt.Errorf("attach: %v", err) + } + json, err := container.Get() + if err != nil { + return fmt.Errorf("get: %v", err) + } + fmt.Println(json) + return nil + } return fmt.Errorf("unrecognised command: %s", args[0]) } From a464ac89afd1b6a9801d3af0f9a0e40a17d6700a Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Sat, 7 Jun 2014 15:18:10 -0400 Subject: [PATCH 220/347] Add a websocket endpoint to Beam Implements a Beam server Receiver over HTTP2 over Websockets over HTTP, and a client for connecting to said server. signed-off-by: Clayton Coleman (github: smarterclayton) --- beam/http2/server.go | 66 +++++++++++++++++++++++++++++++++++++++ beam/ws/ws.go | 72 +++++++++++++++++++++++++++++++++++++++++++ beam/ws/ws_test.go | 73 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 211 insertions(+) create mode 100644 beam/http2/server.go create mode 100644 beam/ws/ws.go create mode 100644 beam/ws/ws_test.go diff --git a/beam/http2/server.go b/beam/http2/server.go new file mode 100644 index 0000000000..4ec20d3272 --- /dev/null +++ b/beam/http2/server.go @@ -0,0 +1,66 @@ +package http2 + +import ( + "github.com/docker/libswarm/beam" + "github.com/docker/spdystream" + "net" + "sync" +) + +// Serve a Beam endpoint over a single HTTP2 connection +type Server struct { + conn *spdystream.Connection + streamChan chan *spdystream.Stream + streamLock sync.RWMutex + subStreamChans map[string]chan *spdystream.Stream +} + +// Create a Beam receiver from a net.Conn +func NewServer(conn net.Conn) (*Server, error) { + spdyConn, err := spdystream.NewConnection(conn, true) + if err != nil { + return nil, err + } + + s := &Server{ + conn: spdyConn, + streamChan: make(chan *spdystream.Stream), + subStreamChans: make(map[string]chan *spdystream.Stream), + } + go s.conn.Serve(s.streamHandler, spdystream.NoAuthHandler) + + return s, nil +} + +func (s *Server) Close() error { + return s.conn.Close() +} + +func (s *Server) Receive(mode int) (*beam.Message, error) { + stream := <-s.streamChan + return createStreamMessage(stream, mode, s, nil) +} + +func (s *Server) streamHandler(stream *spdystream.Stream) { + streamChan := s.getStreamChan(stream.Parent()) + streamChan <- stream +} + +func (s *Server) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { + s.streamLock.Lock() + s.subStreamChans[stream.String()] = streamChan + s.streamLock.Unlock() +} + +func (s *Server) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { + if stream == nil { + return s.streamChan + } + s.streamLock.RLock() + defer s.streamLock.RUnlock() + streamChan, ok := s.subStreamChans[stream.String()] + if ok { + return streamChan + } + return s.streamChan +} diff --git a/beam/ws/ws.go b/beam/ws/ws.go new file mode 100644 index 0000000000..f6c03a9424 --- /dev/null +++ b/beam/ws/ws.go @@ -0,0 +1,72 @@ +package ws + +import ( + "errors" + "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/beam/http2" + "github.com/docker/spdystream/ws" + "github.com/gorilla/websocket" + "net/http" +) + +// Connect to a Beam server over a Websocket connection as a client +func NewSender(wsConn *websocket.Conn) (beam.Sender, error) { + session, err := http2.NewStreamSession(ws.NewConnection(wsConn)) + if err != nil { + return nil, err + } + return session, nil +} + +// Upgrade an HTTP connection to a Beam over HTTP2 over +// Websockets connection. +type Upgrader struct { + Upgrader websocket.Upgrader +} + +func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*http2.Server, error) { + wsConn, err := u.Upgrader.Upgrade(w, r, responseHeader) + if err != nil { + return nil, err + } + + netConn := ws.NewConnection(wsConn) + server, err := http2.NewServer(netConn) + if err != nil { + netConn.Close() + return nil, err + } + + return server, nil +} + +// Returns true if a handshake error occured in websockets, which means +// a response has already been written to the stream. +func IsHandshakeError(err error) bool { + _, ok := err.(websocket.HandshakeError) + return ok +} + +type BeamFunc func(beam.Receiver) + +// Handler function for serving Beam over HTTP. Will invoke f and +// then close the server's Beam endpoint after f returns. +func Serve(u *Upgrader, f BeamFunc) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + if r.Method != "GET" { + u.Upgrader.Error(w, r, http.StatusMethodNotAllowed, errors.New("Method not allowed")) + return + } + + server, err := u.Upgrade(w, r, nil) + if err != nil { + if !IsHandshakeError(err) { + u.Upgrader.Error(w, r, http.StatusInternalServerError, errors.New("Unable to open an HTTP2 connection over Websockets")) + } + return + } + defer server.Close() + + f(server) + } +} diff --git a/beam/ws/ws_test.go b/beam/ws/ws_test.go new file mode 100644 index 0000000000..6dd96a6645 --- /dev/null +++ b/beam/ws/ws_test.go @@ -0,0 +1,73 @@ +package ws + +import ( + "github.com/docker/libswarm/beam" + "github.com/gorilla/websocket" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" +) + +func TestServe(t *testing.T) { + gotAck := make(chan bool) + u := &Upgrader{} + server := httptest.NewServer(Serve(u, func(r beam.Receiver) { + msg, msgErr := r.Receive(beam.Ret) + if msgErr != nil { + t.Fatalf("Error receiving message: %s", msgErr) + } + if msg.Att == nil { + t.Fatalf("Error message missing attachment") + } + if msg.Verb != beam.Attach { + t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Attach) + } + + receiver, sendErr := msg.Ret.Send(&beam.Message{Verb: beam.Ack}) + if sendErr != nil { + t.Fatalf("Error sending return message: %s", sendErr) + } + + _, ackErr := receiver.Receive(0) + if ackErr == nil { + t.Fatalf("No error receiving from message with no return pipe") + } + if ackErr != io.EOF { + t.Fatalf("Unexpected error receiving from message: %s", ackErr) + } + + <-gotAck + })) + + wsConn, _, err := websocket.DefaultDialer.Dial(strings.Replace(server.URL, "http://", "ws://", 1), http.Header{"Origin": {server.URL}}) + if err != nil { + t.Fatal(err) + } + sender, senderErr := NewSender(wsConn) + if senderErr != nil { + t.Fatalf("Error creating sender: %s", senderErr) + } + + receiver, sendErr := sender.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) + if sendErr != nil { + t.Fatalf("Error sending message: %s", sendErr) + } + + msg, receiveErr := receiver.Receive(beam.Ret) + if receiveErr != nil { + t.Fatalf("Error receiving message") + } + + if msg.Verb != beam.Ack { + t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Ack) + } + + gotAck <- true + + shutdownErr := sender.Close() + if shutdownErr != nil && !strings.Contains(shutdownErr.Error(), "broken pipe") { + t.Fatalf("Error closing: %s", shutdownErr) + } +} From a04fa6d2526aa9f7f5c45a631c65d5da8e140fa0 Mon Sep 17 00:00:00 2001 From: Brandon Philips Date: Sat, 7 Jun 2014 23:05:38 -0700 Subject: [PATCH 221/347] backends: rename apiserver to dockerserver afaics this should be called dockersever as in the readme. --- backends/backends.go | 2 +- backends/{apiserver.go => dockerserver.go} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename backends/{apiserver.go => dockerserver.go} (98%) diff --git a/backends/backends.go b/backends/backends.go index 97e791f4d3..8c2bf45a60 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -17,6 +17,6 @@ func New() *beam.Object { backends.Bind("fakeclient", FakeClient()) backends.Bind("forward", Forward()) backends.Bind("exec", Exec()) - backends.Bind("apiserver", ApiServer()) + backends.Bind("dockerserver", DockerServer()) return beam.Obj(backends) } diff --git a/backends/apiserver.go b/backends/dockerserver.go similarity index 98% rename from backends/apiserver.go rename to backends/dockerserver.go index 4eabc25d81..1abad06394 100644 --- a/backends/apiserver.go +++ b/backends/dockerserver.go @@ -11,7 +11,7 @@ import ( "net/http" ) -func ApiServer() beam.Sender { +func DockerServer() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { instance := beam.Task(func(in beam.Receiver, out beam.Sender) { @@ -29,7 +29,7 @@ func ApiServer() beam.Sender { type HttpApiFunc func(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error func listenAndServe(proto, addr string, out beam.Sender) error { - fmt.Println("Starting API server...") + fmt.Println("Starting Docker server...") r, err := createRouter(out) if err != nil { return err From 0c211a107bd5433f81b48789c4aa4c2149f48e45 Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Sun, 8 Jun 2014 13:08:22 -0700 Subject: [PATCH 222/347] Allow configurable server binding --- backends/dockerserver.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 1abad06394..5518b40ce1 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -9,13 +9,18 @@ import ( "github.com/gorilla/mux" "net" "net/http" + "strings" ) func DockerServer() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { instance := beam.Task(func(in beam.Receiver, out beam.Sender) { - err := listenAndServe("tcp", "0.0.0.0:4243", out) + url := "tcp://localhost:4243" + if len(ctx.Args) > 0 { + url = ctx.Args[0] + } + err := listenAndServe(url, out) if err != nil { fmt.Printf("listenAndServe: %v", err) } @@ -28,12 +33,15 @@ func DockerServer() beam.Sender { type HttpApiFunc func(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error -func listenAndServe(proto, addr string, out beam.Sender) error { +func listenAndServe(url string, out beam.Sender) error { fmt.Println("Starting Docker server...") r, err := createRouter(out) if err != nil { return err } + arr := strings.Split(url, "://") + proto := arr[0] + addr := arr[1] l, err := net.Listen(proto, addr) if err != nil { return err From a8e5a8e564eead00384d4b18c40fede3af21e001 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Sun, 8 Jun 2014 13:26:55 -0700 Subject: [PATCH 223/347] Output /containers/json in correct format Not complete, but enough to keep `docker ps` happy. Signed-off-by: Ben Firshman --- backends/dockerserver.go | 54 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index a5a061afd3..38cac5265f 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -11,6 +11,7 @@ import ( "net" "net/http" "strings" + "time" ) func DockerServer() beam.Sender { @@ -67,7 +68,58 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return err } - return writeJSON(w, http.StatusOK, names) + var responses []interface{} + + for _, name := range names { + _, containerOut, err := o.Attach(name) + if err != nil { + return err + } + container := beam.Obj(containerOut) + responseJson, err := container.Get() + if err != nil { + return err + } + var response struct { + ID string + Created string + Name string + Config struct { + Cmd []string + Image string + } + State struct { + Running bool + StartedAt string + FinishedAt string + ExitCode int + } + } + if err = json.Unmarshal([]byte(responseJson), &response); err != nil { + return err + } + created, err := time.Parse(time.RFC3339, response.Created) + if err != nil { + return err + } + var state string + if response.State.Running { + state = "Up" + } else { + state = fmt.Sprintf("Exited (%d)", response.State.ExitCode) + } + responses = append(responses, map[string]interface{}{ + "Id": response.ID, + "Command": strings.Join(response.Config.Cmd, " "), + "Created": created.Unix(), + "Image": response.Config.Image, + "Names": []string{response.Name}, + "Ports": []string{}, + "Status": state, + }) + } + + return writeJSON(w, http.StatusOK, responses) } func postContainersCreate(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { From 032972586b274e698ae1f55d77bd9d61df736a5d Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Sat, 7 Jun 2014 19:35:01 -0700 Subject: [PATCH 224/347] Aggregator backend Signed-off-by: Aanand Prasad --- backends/aggregate.go | 119 ++++++++++++++++++++++++++++++++++++++++++ backends/backends.go | 1 + 2 files changed, 120 insertions(+) create mode 100644 backends/aggregate.go diff --git a/backends/aggregate.go b/backends/aggregate.go new file mode 100644 index 0000000000..4fa852696e --- /dev/null +++ b/backends/aggregate.go @@ -0,0 +1,119 @@ +package backends + +import ( + "github.com/docker/libswarm/beam" + "github.com/flynn/go-shlex" + + "fmt" + "log" + "sync" +) + +func Aggregate() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + allBackends := New() + instance := beam.NewServer() + + a, err := newAggregator(allBackends, instance, ctx.Args) + if err != nil { + return err + } + + instance.OnAttach(beam.Handler(a.attach)) + instance.OnStart(beam.Handler(a.start)) + instance.OnLs(beam.Handler(a.ls)) + + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + return err + })) + return backend +} + +type aggregator struct { + backends []*beam.Object + server *beam.Server +} + +func newAggregator(allBackends *beam.Object, server *beam.Server, args []string) (*aggregator, error) { + a := &aggregator{server: server} + + for _, argString := range args { + args, err := shlex.Split(argString) + if err != nil { + return nil, err + } + if len(args) == 0 { + return nil, fmt.Errorf("empty backend string") + } + log.Printf("aggregator: spawning %s(%#v)\n", args[0], args[1:]) + _, b, err := allBackends.Attach(args[0]) + if err != nil { + return nil, err + } + i, err := b.Spawn(args[1:]...) + if err != nil { + return nil, err + } + a.backends = append(a.backends, i) + } + + return a, nil +} + +func (a *aggregator) attach(ctx *beam.Message) error { + if ctx.Args[0] != "" { + // TODO: implement this? + return fmt.Errorf("attaching to a child is not implemented") + } + + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: a.server}); err != nil { + return err + } + + var copies sync.WaitGroup + + for _, b := range a.backends { + r, _, err := b.Attach("") + if err != nil { + return err + } + copies.Add(1) + go func() { + log.Printf("copying output from %#v\n", b) + beam.Copy(ctx.Ret, r) + log.Printf("finished output from %#v\n", b) + copies.Done() + }() + } + + copies.Wait() + return nil +} + +func (a *aggregator) start(ctx *beam.Message) error { + for _, b := range a.backends { + err := b.Start() + if err != nil { + return err + } + } + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) + return err +} + +func (a *aggregator) ls(ctx *beam.Message) error { + var children []string + + for _, b := range a.backends { + bChildren, err := b.Ls() + if err != nil { + return err + } + children = append(children, bChildren...) + } + + ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: children}) + + return nil +} diff --git a/backends/backends.go b/backends/backends.go index aa42d94137..21434abb32 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -19,5 +19,6 @@ func New() *beam.Object { backends.Bind("exec", Exec()) backends.Bind("dockerserver", DockerServer()) backends.Bind("orchard", Orchard()) + backends.Bind("aggregate", Aggregate()) return beam.Obj(backends) } From c2f2fc038589fb2fef9cd4e0cb5eed401a93ef88 Mon Sep 17 00:00:00 2001 From: cpuguy83 Date: Sat, 7 Jun 2014 21:26:51 -0700 Subject: [PATCH 225/347] Update shipyard backend to use beam --- backends/backends.go | 1 + backends/shipyard.go | 109 +++++++++++++++++++++++++++---------------- 2 files changed, 71 insertions(+), 39 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index 21434abb32..f3eaccf3c2 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -20,5 +20,6 @@ func New() *beam.Object { backends.Bind("dockerserver", DockerServer()) backends.Bind("orchard", Orchard()) backends.Bind("aggregate", Aggregate()) + backends.Bind("shipyard", Shipyard()) return beam.Obj(backends) } diff --git a/backends/shipyard.go b/backends/shipyard.go index 14f3b41ec9..11b0bb2855 100644 --- a/backends/shipyard.go +++ b/backends/shipyard.go @@ -1,69 +1,100 @@ package backends import ( + "encoding/json" "fmt" - "github.com/dotcloud/docker/engine" + "github.com/docker/libswarm/beam" "io/ioutil" - "log" "net/http" "net/url" "strings" + "time" ) -func Shipyard() engine.Installer { - return &shipyard{} +func Shipyard() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + if len(ctx.Args) != 3 { + return fmt.Errorf("Shipyard: Usage ") + } + + c := &shipyard{url: ctx.Args[0], user: ctx.Args[1], pass: ctx.Args[2]} + + c.Server = beam.NewServer() + c.Server.OnAttach(beam.Handler(c.attach)) + c.Server.OnStart(beam.Handler(c.start)) + c.Server.OnLs(beam.Handler(c.containers)) + c.OnGet(beam.Handler(c.containerInspect)) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return err + })) + return backend +} + +func (c *shipyard) attach(ctx *beam.Message) error { + if ctx.Args[0] == "" { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + for { + time.Sleep(1 * time.Second) + } + } + return nil +} + +func (c *shipyard) start(ctx *beam.Message) error { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) + return nil } type shipyard struct { url, user, pass string + *beam.Server } -func (s *shipyard) Install(eng *engine.Engine) error { - eng.Register("shipyard", func(job *engine.Job) engine.Status { - if len(job.Args) != 3 { - return job.Errorf("usage: ") - } - s.url = job.Args[0] - s.user = job.Args[1] - s.pass = job.Args[2] - job.Eng.Register("containers", s.containers) - job.Eng.Register("container_inspect", s.container_inspect) - return engine.StatusOK - }) - +func (c *shipyard) containers(ctx *beam.Message) error { + out, err := c.gateway("GET", "containers", "") + if err != nil { + return err + } + var data shipyardObjects + json.Unmarshal(out, &data) + var ids []string + for _, c := range data.Objects { + ids = append(ids, c.Id) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: ids}); err != nil { + return err + } return nil } -func (c *shipyard) containers(job *engine.Job) engine.Status { - var args string - if job.Getenv("limit") != "" { - args = fmt.Sprintf("%s&limit=%s", args, url.QueryEscape(job.Getenv("limit"))) - } - if job.Getenv("offset") != "" { - args = fmt.Sprintf("%s&offset=%s", args, url.QueryEscape(job.Getenv("offset"))) - } - - path := fmt.Sprintf("containers/?%s", args) - out, err := c.gateway("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - log.Printf("%s", out) - return engine.StatusOK +type shipyardObjects struct { + Objects []shipyardObject `json:"objects"` } -func (c *shipyard) container_inspect(job *engine.Job) engine.Status { - path := fmt.Sprintf("containers/details/%s", job.Args[0]) +type shipyardObject struct { + Id string `json:"container_id"` +} + +func (c *shipyard) containerInspect(ctx *beam.Message) error { + if len(ctx.Args) != 1 { + return fmt.Errorf("Expected 1 container id, got %s", len(ctx.Args)) + } + path := fmt.Sprintf("containers/details/%s", ctx.Args[0]) out, err := c.gateway("GET", path, "") if err != nil { - return job.Errorf("%s: get: %v", path, err) + return err } - log.Printf("%s", out) - return engine.StatusOK + var data shipyardObject + json.Unmarshal(out, &data) + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{"foo", "bar"}}); err != nil { + return err + } + return nil } func (c *shipyard) gateway(method, path, body string) ([]byte, error) { - apiPath := fmt.Sprintf("%s/api/v1/%s&format=json", c.url, path) + apiPath := fmt.Sprintf("%s/api/v1/%s/?format=json", c.url, path) url, err := url.Parse(apiPath) if err != nil { return nil, err From 84798081a404b7dd25c1e4fa139dfb7e5a93ce86 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 2 Jun 2014 11:27:53 +0000 Subject: [PATCH 226/347] Add contribution guidelines Signed-off-by: Solomon Hykes --- CONTRIBUTING.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..6c89d9d199 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,13 @@ +# Contributing to libswarm + +Want to hack on libswarm? Awesome! Here are instructions to get you +started. + +Libswarm is a part of the [Docker](https://docker.io) project, and follows +the same rules and principles. If you're already familiar with the way +Docker does things, you'll feel right at home. + +Otherwise, go read +[Docker's contributions guidelines](https://github.com/dotcloud/docker/blob/master/CONTRIBUTING.md). + +Happy hacking! From 392284136b5fec44c6feb49b4b590b254aee7c1b Mon Sep 17 00:00:00 2001 From: cpuguy83 Date: Sat, 7 Jun 2014 21:26:51 -0700 Subject: [PATCH 227/347] Update shipyard backend to use beam Signed-off-by: cpuguy83 (github: cpuguy83) --- backends/backends.go | 1 + backends/shipyard.go | 109 +++++++++++++++++++++++++++---------------- 2 files changed, 71 insertions(+), 39 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index 21434abb32..f3eaccf3c2 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -20,5 +20,6 @@ func New() *beam.Object { backends.Bind("dockerserver", DockerServer()) backends.Bind("orchard", Orchard()) backends.Bind("aggregate", Aggregate()) + backends.Bind("shipyard", Shipyard()) return beam.Obj(backends) } diff --git a/backends/shipyard.go b/backends/shipyard.go index 14f3b41ec9..11b0bb2855 100644 --- a/backends/shipyard.go +++ b/backends/shipyard.go @@ -1,69 +1,100 @@ package backends import ( + "encoding/json" "fmt" - "github.com/dotcloud/docker/engine" + "github.com/docker/libswarm/beam" "io/ioutil" - "log" "net/http" "net/url" "strings" + "time" ) -func Shipyard() engine.Installer { - return &shipyard{} +func Shipyard() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + if len(ctx.Args) != 3 { + return fmt.Errorf("Shipyard: Usage ") + } + + c := &shipyard{url: ctx.Args[0], user: ctx.Args[1], pass: ctx.Args[2]} + + c.Server = beam.NewServer() + c.Server.OnAttach(beam.Handler(c.attach)) + c.Server.OnStart(beam.Handler(c.start)) + c.Server.OnLs(beam.Handler(c.containers)) + c.OnGet(beam.Handler(c.containerInspect)) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return err + })) + return backend +} + +func (c *shipyard) attach(ctx *beam.Message) error { + if ctx.Args[0] == "" { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + for { + time.Sleep(1 * time.Second) + } + } + return nil +} + +func (c *shipyard) start(ctx *beam.Message) error { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) + return nil } type shipyard struct { url, user, pass string + *beam.Server } -func (s *shipyard) Install(eng *engine.Engine) error { - eng.Register("shipyard", func(job *engine.Job) engine.Status { - if len(job.Args) != 3 { - return job.Errorf("usage: ") - } - s.url = job.Args[0] - s.user = job.Args[1] - s.pass = job.Args[2] - job.Eng.Register("containers", s.containers) - job.Eng.Register("container_inspect", s.container_inspect) - return engine.StatusOK - }) - +func (c *shipyard) containers(ctx *beam.Message) error { + out, err := c.gateway("GET", "containers", "") + if err != nil { + return err + } + var data shipyardObjects + json.Unmarshal(out, &data) + var ids []string + for _, c := range data.Objects { + ids = append(ids, c.Id) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: ids}); err != nil { + return err + } return nil } -func (c *shipyard) containers(job *engine.Job) engine.Status { - var args string - if job.Getenv("limit") != "" { - args = fmt.Sprintf("%s&limit=%s", args, url.QueryEscape(job.Getenv("limit"))) - } - if job.Getenv("offset") != "" { - args = fmt.Sprintf("%s&offset=%s", args, url.QueryEscape(job.Getenv("offset"))) - } - - path := fmt.Sprintf("containers/?%s", args) - out, err := c.gateway("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - log.Printf("%s", out) - return engine.StatusOK +type shipyardObjects struct { + Objects []shipyardObject `json:"objects"` } -func (c *shipyard) container_inspect(job *engine.Job) engine.Status { - path := fmt.Sprintf("containers/details/%s", job.Args[0]) +type shipyardObject struct { + Id string `json:"container_id"` +} + +func (c *shipyard) containerInspect(ctx *beam.Message) error { + if len(ctx.Args) != 1 { + return fmt.Errorf("Expected 1 container id, got %s", len(ctx.Args)) + } + path := fmt.Sprintf("containers/details/%s", ctx.Args[0]) out, err := c.gateway("GET", path, "") if err != nil { - return job.Errorf("%s: get: %v", path, err) + return err } - log.Printf("%s", out) - return engine.StatusOK + var data shipyardObject + json.Unmarshal(out, &data) + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{"foo", "bar"}}); err != nil { + return err + } + return nil } func (c *shipyard) gateway(method, path, body string) ([]byte, error) { - apiPath := fmt.Sprintf("%s/api/v1/%s&format=json", c.url, path) + apiPath := fmt.Sprintf("%s/api/v1/%s/?format=json", c.url, path) url, err := url.Parse(apiPath) if err != nil { return nil, err From f0f78738c9e8986866a9a72cd49914e8014219cc Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Sun, 8 Jun 2014 17:38:12 -0700 Subject: [PATCH 228/347] Fix bug when spawning multiple Forward instances `client` instance was being shared between separate instances Signed-off-by: Aanand Prasad --- backends/forward.go | 32 +++++++++++++++++++++++++++++--- backends/orchard.go | 12 ++++++------ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/backends/forward.go b/backends/forward.go index 3b46529a4f..046804c85d 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -1,6 +1,7 @@ package backends import ( + "crypto/tls" "encoding/json" "fmt" "github.com/docker/libswarm/beam" @@ -16,16 +17,29 @@ import ( "time" ) -func Forward() beam.Sender { - return ForwardWithClient(newClient()) +type ForwardConfig struct { + Scheme string + URLHost string + TLSClientConfig *tls.Config } -func ForwardWithClient(client *client) beam.Sender { +func Forward() beam.Sender { + return ForwardWithConfig(&ForwardConfig{ + Scheme: "http", + URLHost: "dummy.host", + }) +} + +func ForwardWithConfig(config *ForwardConfig) beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 1 { return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } + client := newClient() + client.scheme = config.Scheme + client.urlHost = config.URLHost + client.transport.TLSClientConfig = config.TLSClientConfig client.setURL(ctx.Args[0]) f := &forwarder{ client: client, @@ -54,6 +68,18 @@ func (f *forwarder) attach(ctx *beam.Message) error { (&beam.Object{ctx.Ret}).Log("forward: heartbeat") } } else { + path := fmt.Sprintf("/containers/%s/json", ctx.Args[0]) + resp, err := f.client.call("GET", path, "") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 200 { + return fmt.Errorf("%s", respBody) + } c := f.newContainer(ctx.Args[0]) ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) } diff --git a/backends/orchard.go b/backends/orchard.go index 4fbf5ebe09..536a13241b 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -35,12 +35,12 @@ func Orchard() beam.Sender { return err } - client := newClient() - client.scheme = "https" - client.transport.TLSClientConfig = tlsConfig - client.urlHost = host.IPAddress - - forwardBackend := beam.Obj(ForwardWithClient(client)) + backend := ForwardWithConfig(&ForwardConfig{ + Scheme: "https", + URLHost: host.IPAddress, + TLSClientConfig: tlsConfig, + }) + forwardBackend := beam.Obj(backend) forwardInstance, err := forwardBackend.Spawn(url) if err != nil { return err From b44dba90513d1d3d16285b1af1976dce7bc54f4c Mon Sep 17 00:00:00 2001 From: John Hopper Date: Thu, 5 Jun 2014 00:12:45 -0500 Subject: [PATCH 229/347] Add a Rackspace Cloud backend based on Gophercloud https://github.com/rackspace/gophercloud. Signed-off-by: John Hopper john.hopper@jpserver.net [solomon@docker.com: manually resolved conflicts] Signed-off-by: Solomon Hykes --- backends/rax.go | 848 ++++++++++++++++++++++++++++++++++++++ swarmd/Godeps/Godeps.json | 4 + 2 files changed, 852 insertions(+) create mode 100644 backends/rax.go diff --git a/backends/rax.go b/backends/rax.go new file mode 100644 index 0000000000..97a45cea5e --- /dev/null +++ b/backends/rax.go @@ -0,0 +1,848 @@ +// +// Copyright (C) 2014 Rackspace Hosting Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package backends + +import ( + "crypto/rand" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "log" + "net/http" + "net/url" + "os" + "os/exec" + "strings" + "time" + + "github.com/codegangsta/cli" + "github.com/dotcloud/docker/engine" + "github.com/dotcloud/docker/runconfig" + "github.com/rackspace/gophercloud" +) + +const ( + DASS_TARGET_PREFIX = "rdas_target_" +) + +var ( + nilOptions = gophercloud.AuthOptions{} + + // ErrNoAuthUrl errors occur when the value of the OS_AUTH_URL environment variable cannot be determined. + ErrNoAuthUrl = fmt.Errorf("Environment variable OS_AUTH_URL needs to be set.") + + // ErrNoUsername errors occur when the value of the OS_USERNAME environment variable cannot be determined. + ErrNoUsername = fmt.Errorf("Environment variable OS_USERNAME needs to be set.") + + // ErrNoPassword errors occur when the value of the OS_PASSWORD environment variable cannot be determined. + ErrNoPassword = fmt.Errorf("Environment variable OS_PASSWORD or OS_API_KEY needs to be set.") +) + +// On status callback for when waiting on cloud actions +type onStatus func(details *gophercloud.Server) error + +// As the name implies, this function dumbly waits for the desired host status +func doNothing(details *gophercloud.Server) error { + return nil +} + +// Shamelessly taken from docker core +func RandomString() string { + id := make([]byte, 32) + _, err := io.ReadFull(rand.Reader, id) + if err != nil { + panic(err) // This shouldn't happen + } + return hex.EncodeToString(id) +} + +// Gets the user's auth options from the openstack env variables +func getAuthOptions() (string, gophercloud.AuthOptions, error) { + provider := os.Getenv("OS_AUTH_URL") + username := os.Getenv("OS_USERNAME") + apiKey := os.Getenv("OS_API_KEY") + password := os.Getenv("OS_PASSWORD") + tenantId := os.Getenv("OS_TENANT_ID") + tenantName := os.Getenv("OS_TENANT_NAME") + + if provider == "" { + return "", nilOptions, ErrNoAuthUrl + } + + if username == "" { + return "", nilOptions, ErrNoUsername + } + + if password == "" && apiKey == "" { + return "", nilOptions, ErrNoPassword + } + + ao := gophercloud.AuthOptions{ + Username: username, + Password: password, + ApiKey: apiKey, + TenantId: tenantId, + TenantName: tenantName, + } + + return provider, ao, nil +} + +// HTTP Client with some syntax sugar +type HttpClient interface { + Call(method, path, body string) (*http.Response, error) + Get(path, data string) (resp *http.Response, err error) + Delete(path, data string) (resp *http.Response, err error) + Post(path, data string) (resp *http.Response, err error) + Put(path, data string) (resp *http.Response, err error) +} + +type DockerHttpClient struct { + Url *url.URL + proto string + addr string + dockerVersion string +} + +// Returns a new docker http client +func newDockerHttpClient(peer, dockerVersion string) (client HttpClient, err error) { + targetUrl, err := url.Parse(peer) + if err != nil { + return nil, err + } + + targetUrl.Scheme = "http" + + return &DockerHttpClient{ + Url: targetUrl, + dockerVersion: dockerVersion, + }, nil +} + +func (client *DockerHttpClient) Call(method, path, body string) (*http.Response, error) { + targetUrl, err := url.Parse(path) + if err != nil { + return nil, err + } + + targetUrl.Host = client.Url.Host + targetUrl.Scheme = client.Url.Scheme + + req, err := http.NewRequest(method, targetUrl.String(), strings.NewReader(body)) + if err != nil { + return nil, err + } + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return nil, err + } + + return resp, nil +} + +func (client *DockerHttpClient) Get(path, data string) (resp *http.Response, err error) { + return client.Call("GET", path, data) +} + +func (client *DockerHttpClient) Post(path, data string) (resp *http.Response, err error) { + return client.Call("POST", path, data) +} + +func (client *DockerHttpClient) Put(path, data string) (resp *http.Response, err error) { + return client.Call("PUT", path, data) +} + +func (client *DockerHttpClient) Delete(path, data string) (resp *http.Response, err error) { + return client.Call("DELETE", path, data) +} + +// A hostbound action is an action that is supplied with an active client to a desired cloud host +type hostbound func(client HttpClient) engine.Status + +// A HostContext represents an active session with a cloud host +type HostContextCache struct { + contexts map[string]*HostContext +} + +func NewHostContextCache() (contextCache *HostContextCache) { + return &HostContextCache{ + contexts: make(map[string]*HostContext), + } +} + +func (hcc *HostContextCache) Get(id, name string, rax *RaxCloud) (context *HostContext, err error) { + return NewHostContext(id, name, rax) +} + +func (hcc *HostContextCache) GetCached(id, name string, rax *RaxCloud) (context *HostContext, err error) { + var found bool + if context, found = hcc.contexts[id]; !found { + if context, err = NewHostContext(id, name, rax); err == nil { + hcc.contexts[id] = context + } + } + + return +} + +func (hcc *HostContextCache) Close() { + for _, context := range hcc.contexts { + context.Close() + } +} + +type HostContext struct { + id string + name string + rax *RaxCloud + tunnel *os.Process +} + +func NewHostContext(id, name string, rax *RaxCloud) (hc *HostContext, err error) { + if tunnelProcess, err := rax.openTunnel(id, 8000, 8000); err != nil { + return nil, fmt.Errorf("Unable to tunnel to host %s(id:%s): %v", name, id, err) + } else { + return &HostContext{ + id: id, + name: name, + rax: rax, + tunnel: tunnelProcess, + }, nil + } +} + +func (hc *HostContext) Close() { + if hc.tunnel != nil { + hc.tunnel.Kill() + if state, err := hc.tunnel.Wait(); err != nil { + fmt.Printf("Wait result: state:%v, err:%s\n", state, err) + } + + hc.tunnel = nil + } +} + +func (hc *HostContext) exec(job *engine.Job, action hostbound) (status engine.Status) { + if hc.tunnel == nil { + return job.Errorf("Tunnel not open to host %s(id:%s)", hc.name, hc.id) + } + + if client, err := newDockerHttpClient("tcp://localhost:8000", "v1.10"); err == nil { + return action(client) + } else { + return job.Errorf("Unable to init http client: %v", err) + } +} + +// A Rackspace impl of the cloud provider interface +type RaxCloud struct { + remoteUser string + keyFile string + regionOverride string + image string + flavor string + instance string + scalingStrategy string + hostCtxCache *HostContextCache + + gopher gophercloud.CloudServersProvider +} + +// Returns a pointer to a new RaxCloud instance +func RaxCloudBackend() *RaxCloud { + return &RaxCloud{ + hostCtxCache: NewHostContextCache(), + } +} + +// Installs the RaxCloud backend into an engine +func (rax *RaxCloud) Install(eng *engine.Engine) (err error) { + eng.Register("rax", func(job *engine.Job) (status engine.Status) { + return rax.init(job) + }) + + return nil +} + +// Initializes the plugin by handling job arguments +func (rax *RaxCloud) init(job *engine.Job) (status engine.Status) { + app := cli.NewApp() + app.Name = "rax" + app.Usage = "Deploy Docker containers onto your Rackspace Cloud account. Accepts environment variables as listed in: https://github.com/openstack/python-novaclient/#command-line-api" + app.Version = "0.0.1" + app.Flags = []cli.Flag{ + cli.StringFlag{"instance", "", "Sets the server instance to target for specific commands such as version."}, + cli.StringFlag{"region", "DFW", "Sets the Rackspace region to target. This overrides any environment variables for region."}, + cli.StringFlag{"key", "/etc/swarmd/rax.id_rsa", "Sets SSH keys file to use when initializing secure connections."}, + cli.StringFlag{"user", "root", "Username to use when initializing secure connections."}, + cli.StringFlag{"image", "", "Image to use when provisioning new hosts."}, + cli.StringFlag{"flavor", "", "Flavor to use when provisioning new hosts."}, + cli.StringFlag{"auto-scaling", "none", "Flag that when set determines the mode used for auto-scaling."}, + } + + var err error + app.Action = func(ctx *cli.Context) { + err = rax.run(ctx, job.Eng) + } + + if len(job.Args) > 1 { + app.Run(append([]string{job.Name}, job.Args...)) + } + + // Failed to init? + if err != nil || rax.gopher == nil { + app.Run([]string{"rax", "help"}) + + if err == nil { + return engine.StatusErr + } else { + return job.Error(err) + } + } + + return engine.StatusOK +} + +func (rax *RaxCloud) configure(ctx *cli.Context) (err error) { + if keyFile := ctx.String("key"); keyFile != "" { + rax.keyFile = keyFile + + if regionOverride := ctx.String("region"); regionOverride != "" { + rax.regionOverride = regionOverride + } + + if remoteUser := ctx.String("user"); remoteUser != "" { + rax.remoteUser = remoteUser + } + + if instance := ctx.String("instance"); instance != "" { + rax.instance = instance + } + + if image := ctx.String("image"); image != "" { + rax.image = image + } else { + return fmt.Errorf("Please set an image ID with --image ") + } + + if flavor := ctx.String("flavor"); flavor != "" { + rax.flavor = flavor + } else { + return fmt.Errorf("Please set a flavor ID with --flavor ") + } + + if scalingStrategy := ctx.String("auto-scaling"); scalingStrategy != "" { + rax.scalingStrategy = scalingStrategy + } + + return rax.createGopherCtx() + } else { + return fmt.Errorf("Please set a SSH key with --key ") + } +} + +func (rax *RaxCloud) run(ctx *cli.Context, eng *engine.Engine) (err error) { + if err = rax.configure(ctx); err == nil { + if _, name, err := rax.findTargetHost(); err == nil { + if name == "" { + rax.createHost(DASS_TARGET_PREFIX + RandomString()[:12]) + } + } else { + return err + } + + eng.Register("create", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := "/containers/create" + config := runconfig.ContainerConfigFromJob(job) + + if data, err := json.Marshal(config); err != nil { + return job.Errorf("marshaling failure : %v", err) + } else if resp, err := client.Post(path, string(data)); err != nil { + return job.Error(err) + } else { + var container struct { + Id string + Warnings []string + } + + if body, err := ioutil.ReadAll(resp.Body); err != nil { + return job.Errorf("Failed to copy response body: %v", err) + } else if err := json.Unmarshal([]byte(body), &container); err != nil { + return job.Errorf("Failed to read container info from body: %v", err) + } else { + job.Printf("%s\n", container.Id) + } + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("container_delete", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/%s?force=%s", job.Args[0], url.QueryEscape(job.Getenv("forceRemove"))) + + if _, err := client.Delete(path, ""); err != nil { + return job.Error(err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("containers", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/json?all=%s&limit=%s", + url.QueryEscape(job.Getenv("all")), url.QueryEscape(job.Getenv("limit"))) + + if resp, err := client.Get(path, ""); err != nil { + return job.Error(err) + } else { + created := engine.NewTable("Created", 0) + + if body, err := ioutil.ReadAll(resp.Body); err != nil { + return job.Errorf("Failed to copy response body: %v", err) + } else if created.ReadListFrom(body); err != nil { + return job.Errorf("Failed to read list from body: %v", err) + } else { + created.WriteListTo(job.Stdout) + } + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("version", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := "/version" + + if resp, err := client.Get(path, ""); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } else if _, err := io.Copy(job.Stdout, resp.Body); err != nil { + return job.Errorf("Failed to copy response body: %v", err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("start", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/%s/start", job.Args[0]) + config := runconfig.ContainerConfigFromJob(job) + + if data, err := json.Marshal(config); err != nil { + return job.Errorf("marshaling failure : %v", err) + } else if _, err := client.Post(path, string(data)); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("stop", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/%s/stop?t=%s", job.Args[0], url.QueryEscape(job.Getenv("t"))) + + if _, err := client.Post(path, ""); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("kill", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/%s/kill?signal=%s", job.Args[0], job.Args[1]) + + if _, err := client.Post(path, ""); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("restart", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/%s/restart?t=%s", url.QueryEscape(job.Getenv("t"))) + + if _, err := client.Post(path, ""); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("inspect", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/%s/json", job.Args[0]) + + if resp, err := client.Post(path, ""); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } else if _, err := io.Copy(job.Stdout, resp.Body); err != nil { + return job.Errorf("Failed to copy response body: %v", err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("attach", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/%s/attach?stream=%s&stdout=%s&stderr=%s", job.Args[0], + url.QueryEscape(job.Getenv("stream")), + url.QueryEscape(job.Getenv("stdout")), + url.QueryEscape(job.Getenv("stderr"))) + + if resp, err := client.Post(path, ""); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } else if _, err := io.Copy(job.Stdout, resp.Body); err != nil { + return job.Errorf("Failed to copy response body: %v", err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("pull", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/images/create?fromImage=%s&tag=%s", job.Args[0], url.QueryEscape(job.Getenv("tag"))) + + if resp, err := client.Post(path, ""); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } else if _, err := io.Copy(job.Stdout, resp.Body); err != nil { + return job.Errorf("Failed to copy response body: %v", err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.Register("logs", func(job *engine.Job) (status engine.Status) { + if ctx, err := rax.getHostContext(); err == nil { + defer ctx.Close() + + return ctx.exec(job, func(client HttpClient) (status engine.Status) { + path := fmt.Sprintf("/containers/%s/logs?stdout=%s&stderr=%s", job.Args[0], url.QueryEscape(job.Getenv("stdout")), url.QueryEscape(job.Getenv("stderr"))) + + if resp, err := client.Get(path, ""); err != nil { + return job.Errorf("Failed call %s(path:%s): %v", job.Name, path, err) + } else if _, err := io.Copy(job.Stdout, resp.Body); err != nil { + return job.Errorf("Failed to copy response body: %v", err) + } + + return engine.StatusOK + }) + } else { + return job.Errorf("Failed to create host context: %v", err) + } + }) + + eng.RegisterCatchall(func(job *engine.Job) engine.Status { + log.Printf("[UNIMPLEMENTED] %s %#v %#v %#v", job.Name, *job, job.Env(), job.Args) + return engine.StatusOK + }) + } + + return err +} + +func (rax *RaxCloud) Close() { + rax.hostCtxCache.Close() +} + +func (rax *RaxCloud) getHostContext() (hc *HostContext, err error) { + if id, name, err := rax.findTargetHost(); err != nil { + return nil, err + } else { + return rax.hostCtxCache.Get(id, name, rax) + } +} + +func (rax *RaxCloud) addressFor(id string) (address string, err error) { + var server *gophercloud.Server + + if server, err = rax.gopher.ServerById(id); err == nil { + address = server.AccessIPv4 + } + + return +} + +func (rax *RaxCloud) createHost(name string) (err error) { + createServerInfo := gophercloud.NewServer{ + Name: name, + ImageRef: rax.image, + FlavorRef: rax.flavor, + } + + if newServer, err := rax.gopher.CreateServer(createServerInfo); err == nil { + log.Printf("Waiting for host build to complete: %s\n", name) + return rax.waitForStatusById(newServer.Id, "ACTIVE", doNothing) + } else { + return err + } +} + +func (rax *RaxCloud) openTunnel(id string, localPort, remotePort int) (*os.Process, error) { + ip, err := rax.addressFor(id) + + if err != nil { + return nil, err + } + + options := []string{ + "-o", "PasswordAuthentication=no", + "-o", "LogLevel=quiet", + "-o", "UserKnownHostsFile=/dev/null", + "-o", "CheckHostIP=no", + "-o", "StrictHostKeyChecking=no", + "-i", rax.keyFile, + "-A", + "-p", "22", + fmt.Sprintf("%s@%s", rax.remoteUser, ip), + "-N", + "-f", + "-L", fmt.Sprintf("%d:localhost:%d", localPort, remotePort), + } + + cmd := exec.Command("ssh", options...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + if err := cmd.Run(); err != nil { + return nil, err + } + + return cmd.Process, nil +} + +func (rax *RaxCloud) createGopherCtx() (err error) { + var ( + provider string + authOptions gophercloud.AuthOptions + apiCriteria gophercloud.ApiCriteria + access *gophercloud.Access + csp gophercloud.CloudServersProvider + ) + + // Create our auth options set by the user's environment + provider, authOptions, err = getAuthOptions() + if err != nil { + return err + } + + // Set our API criteria + apiCriteria, err = gophercloud.PopulateApi("rackspace-us") + if err != nil { + return err + } + + // Set the region + apiCriteria.Type = "compute" + apiCriteria.Region = os.Getenv("OS_REGION_NAME") + + if rax.regionOverride != "" { + log.Printf("Overriding region set in env with %s", rax.regionOverride) + apiCriteria.Region = rax.regionOverride + } + + if apiCriteria.Region == "" { + return fmt.Errorf("No region set. Please set the OS_REGION_NAME environment variable or use the --region flag.") + } + + // Attempt to authenticate + access, err = gophercloud.Authenticate(provider, authOptions) + if err != nil { + fmt.Printf("ERROR: %v\n\n\n", err) + return err + } + + // Get a CSP ref! + csp, err = gophercloud.ServersApi(access, apiCriteria) + if err != nil { + return err + } + + rax.gopher = csp + return nil +} + +func (rax *RaxCloud) findDockerHosts() (ids map[string]string, err error) { + var servers []gophercloud.Server + + if servers, err = rax.gopher.ListServersLinksOnly(); err == nil { + ids = make(map[string]string) + + for _, server := range servers { + if strings.HasPrefix(server.Name, DASS_TARGET_PREFIX) { + ids[server.Id] = server.Name + } + } + } + + return +} + +func (rax *RaxCloud) findDeploymentHosts() (ids map[string]string, err error) { + var servers map[string]string + + if servers, err = rax.findDockerHosts(); err == nil { + ids = make(map[string]string) + + for id, name := range servers { + var serverDetails *gophercloud.Server + + if serverDetails, err = rax.gopher.ServerById(id); err == nil { + if serverDetails.Status == "ACTIVE" { + ids[id] = name + } + } else { + break + } + } + } + + return +} + +func (rax *RaxCloud) findTargetHost() (id, name string, err error) { + var deploymentHosts map[string]string + + if deploymentHosts, err = rax.findDeploymentHosts(); err == nil { + for id, name = range deploymentHosts { + break + } + } + + return +} + +func (rax *RaxCloud) serverIdByName(name string) (string, error) { + if servers, err := rax.gopher.ListServersLinksOnly(); err == nil { + for _, server := range servers { + if server.Name == name { + return server.Id, nil + } + } + + return "", fmt.Errorf("Unable to locate server by name: %s", name) + } else { + return "", err + } +} + +func (rax *RaxCloud) waitForStatusByName(name, status string, action onStatus) error { + id, err := rax.serverIdByName(name) + + for err == nil { + return rax.waitForStatusById(id, status, action) + } + + return err +} + +func (rax *RaxCloud) waitForStatusById(id, status string, action onStatus) (err error) { + var details *gophercloud.Server + for err == nil { + if details, err = rax.gopher.ServerById(id); err == nil { + log.Printf("Status: %s\n", details.Status) + + if details.Status == status { + action(details) + break + } + + time.Sleep(10 * time.Second) + } + } + return +} diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 3f1ea1ef4a..22c8bc02f3 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -151,6 +151,10 @@ { "ImportPath": "github.com/tutumcloud/go-tutum", "Rev": "d826286d2e5882428c8163ab44261987bea85a44" + }, + { + "ImportPath": "github.com/rackspace/gophercloud", + "Rev": "2285a429874c1365ef6c6d3ceb08b1d428e26aca" } ] } From 7162933451de8ace8fd9d1d5305e58782869c4ef Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 17:59:57 -0700 Subject: [PATCH 230/347] Improve readme to emphasise standard interface Signed-off-by: Ben Firshman --- README.md | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 13ec34b031..19e328f065 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,27 @@ # Libswarm -## A minimalist toolkit to compose network services +*libswarm* is a toolkit for composing network services. +At its core, it defines a standard way for the components of a distributed system to communicate with each other. This lets you: -*libswarm* is a minimalist toolkit to compose network services. +1. Use them as building blocks to compose complex architectures +2. Avoid vendor lock-in by swapping any component out with another -It exposes a simple API for the following tasks: +An extensive library of adapters is included, and you can also write your own using a simple API. -* *Clustering*: deploy services on pools of interchangeable machines -* *Composition*: combine multiple services into higher-level services of arbitrary complexity - it's services all the way down! -* *Interconnection*: services can reliably and securely communicate with each other using asynchronous message passing, request/response, or raw sockets. -* *Scale* services can run concurrently in the same process using goroutines and channels; in separate processes on the same machines using high-performance IPC; -on multiple machines in a local network; or across multiple datacenters. -* *Integration*: incorporate your existing systems into your swarm. libswarm includes adapters to many popular infrastructure tools and services: docker, dns, mesos, etcd, fleet, deis, google compute, rackspace cloud, tutum, orchard, digital ocean, ssh, etc. It’s very easy to create your own adapter: just clone the repository at +Here are some examples of what you can do with libswarm: +* Aggregate all your Docker containers across multiple hosts and infrastructure providers, as if they were running on a single host. + +* Bridge your in-house DNS-based service discovery with that new shiny Consul deployment, without getting locked into either. + +* Swap in a new clustering and service discovery system, without changing any application code. + +* Collect logs across an in-house Mesos cluster, a Cloudfoundry deployment and individual servers staggered in 3 different datacenters, forward them to your legacy syslog deployment, then perform custom analytics on them. + +* Simulate your entire service topology in a single process, then scale it out simply by re-arranging adapters. + +* Organize your application as loosely coupled services from day 1, without over-engineering. ## Adapters From c01a89d85bb0dadbdf70b277c28db5845df5fb84 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 18:38:52 -0700 Subject: [PATCH 231/347] Rename "adapter" and "component" to "service" Signed-off-by: Ben Firshman --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 19e328f065..40e4c6986b 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,12 @@ *libswarm* is a toolkit for composing network services. -At its core, it defines a standard way for the components of a distributed system to communicate with each other. This lets you: +At its core, it defines a standard way for services in a distributed system to communicate with each other. This lets you: 1. Use them as building blocks to compose complex architectures -2. Avoid vendor lock-in by swapping any component out with another +2. Avoid vendor lock-in by swapping any service out with another -An extensive library of adapters is included, and you can also write your own using a simple API. +An extensive library of services is included, and you can also write your own using a simple API. Here are some examples of what you can do with libswarm: @@ -23,7 +23,7 @@ Here are some examples of what you can do with libswarm: * Organize your application as loosely coupled services from day 1, without over-engineering. -## Adapters +## Built-in services Libswarm supports the following adapters: From 4e04ec22acb6d425376e0fde04247a718572d995 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 18:57:17 -0700 Subject: [PATCH 232/347] Remove non-existent services Either don't exist at all or have moved to libchan Signed-off-by: Ben Firshman --- README.md | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/README.md b/README.md index 40e4c6986b..f7453f2591 100644 --- a/README.md +++ b/README.md @@ -36,49 +36,11 @@ The debug backend simply catches all messages and prints them on the terminal fo *Maintainer: Ben Firshman* -### Docker client adapter -*Maintainer: Aanand Prasad* -### Pipeline adapter -*Maintainer: Ben Firshman* -### Filter adapter -*Maintainer: Solomon Hykes* - -### Handler adapter - -*Maintainer: Solomon Hykes* - -### Task adapter - -*Maintainer: Solomon Hykes* - -### Go channel adapter - -*Maintainer: Solomon Hykes* - -### CLI adapter - -*Maintainer: Solomon Hykes* - -### Unix socket adapter - -*Maintainer: Solomon Hykes* - -### TCP adapter (client and server) - -*Help wanted!* - -### TLS adapter (client and server) - -*Help wanted!* - -### HTTP2/SPDY adapter (client and server) - -*Maintainer: Derek McGowan* ### Etcd adapter From 1c10e365ba692a5571e10f46877e54293ef89eb6 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 18:58:17 -0700 Subject: [PATCH 233/347] Fix service name formatting Signed-off-by: Ben Firshman --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f7453f2591..216a73dc0d 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ The debug backend simply catches all messages and prints them on the terminal fo *Brendan Burns* -### Rackspace cloud adapter +### Rackspace Cloud adapter *John Hopper* @@ -82,7 +82,7 @@ The debug backend simply catches all messages and prints them on the terminal fo *Help wanted!* -### Openstack Nova adapter +### OpenStack Nova adapter *Help wanted!* @@ -90,11 +90,11 @@ The debug backend simply catches all messages and prints them on the terminal fo *Help wanted!* -### Softlayer adapter +### SoftLayer adapter *Help wanted!* -### Zerorpc adapter +### ZeroRPC adapter *Help wanted!* From 4143ae58bfb00a3cf139b83a1203d58575e956d4 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 18:59:39 -0700 Subject: [PATCH 234/347] Document docker services Signed-off-by: Ben Firshman --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 216a73dc0d..a088074584 100644 --- a/README.md +++ b/README.md @@ -25,22 +25,18 @@ Here are some examples of what you can do with libswarm: ## Built-in services -Libswarm supports the following adapters: - -### Debug adapter - -The debug backend simply catches all messages and prints them on the terminal for inspection. - - ### Docker server adapter *Maintainer: Ben Firshman* +This service runs a Docker remote API server, allowing the Docker client and other Docker tools to control libswarm services. +### Docker client adapter +*Maintainer: Aanand Prasad* - +This service can be used to control a Docker Engine from libswarm services. It takes one argument, the Docker host to connect to. For example: `dockerclient tcp://10.1.2.3:4243` ### Etcd adapter @@ -98,6 +94,10 @@ The debug backend simply catches all messages and prints them on the terminal fo *Help wanted!* +### Debug adapter + +The debug service simply catches all messages and prints them on the terminal for inspection. + ## Testing libswarm with swarmd From 811750319ff91b2da27dec4b2ae0092c197a23d2 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 19:01:00 -0700 Subject: [PATCH 235/347] Switch to using "service" in swarmd docs Signed-off-by: Ben Firshman --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a088074584..b801e13fe4 100644 --- a/README.md +++ b/README.md @@ -101,31 +101,30 @@ The debug service simply catches all messages and prints them on the terminal fo ## Testing libswarm with swarmd -Libswarm ships with a simple daemon which can control all machines in your distributed -system using a variety of backend adaptors, and exposes it on a single, unified endpoint. +Libswarm ships with a simple daemon which can control services in your distributed system. Usage example: -Run swarmd without arguments to list available backends: +Run swarmd without arguments to list available services: ``` ./swarmd ``` -Pass a backend name as argument to load it: +Pass a service name as argument to load it: ``` ./swarmd fakeclient ``` -You can pass arguments to the backend, like a shell command: +You can pass arguments to the service, like a shell command: ``` ./swarmd 'dockerserver tcp://localhost:4243' ``` -You can call multiple backends. They will be executed in parallel, with the output +You can call multiple services. They will be executed in parallel, with the output of each backend connected to the input of the next, just like unix pipelines. This allows for very powerful composition. From 7df91689de678da6bd14692841014e86b9f213d7 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 19:02:44 -0700 Subject: [PATCH 236/347] Remove "adapter" from service headings Signed-off-by: Ben Firshman --- README.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index b801e13fe4..0f1c2bfe89 100644 --- a/README.md +++ b/README.md @@ -25,76 +25,76 @@ Here are some examples of what you can do with libswarm: ## Built-in services -### Docker server adapter +### Docker server *Maintainer: Ben Firshman* This service runs a Docker remote API server, allowing the Docker client and other Docker tools to control libswarm services. -### Docker client adapter +### Docker client *Maintainer: Aanand Prasad* This service can be used to control a Docker Engine from libswarm services. It takes one argument, the Docker host to connect to. For example: `dockerclient tcp://10.1.2.3:4243` -### Etcd adapter +### Etcd *Help wanted!* -### Geard adapter +### Geard *Clayton Coleman* -### Fork-exec adapter +### Fork-exec *Solomon Hykes* -### Mesos adapter +### Mesos *Help wanted!* -### Shipyard adapter +### Shipyard *Brian Goff* -### Fleet adapter +### Fleet *Help wanted!* -### Google Compute adapter +### Google Compute *Brendan Burns* -### Rackspace Cloud adapter +### Rackspace Cloud *John Hopper* -### EC2 adapter +### Amazon EC2 *Help wanted!* -### Consul adapter +### Consul *Help wanted!* -### OpenStack Nova adapter +### OpenStack Nova *Help wanted!* -### Digital Ocean adapter +### Digital Ocean *Help wanted!* -### SoftLayer adapter +### SoftLayer *Help wanted!* -### ZeroRPC adapter +### ZeroRPC *Help wanted!* -### Debug adapter +### Debug The debug service simply catches all messages and prints them on the terminal for inspection. From 4da9425b25c430e457dbba5368adf524ad8b94a6 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 20:26:47 -0700 Subject: [PATCH 237/347] Add warning that beam has been renamed to libchan Signed-off-by: Ben Firshman --- beam/README.md | 77 +------------------------------------------------- 1 file changed, 1 insertion(+), 76 deletions(-) diff --git a/beam/README.md b/beam/README.md index 1ba8e57532..5277c7f361 100644 --- a/beam/README.md +++ b/beam/README.md @@ -1,79 +1,4 @@ # Beam -## A library to break down an application into loosely coupled micro-services +**WARNING:** This has been renamed [libchan](https://github.com/docker/libchan). The code in this directory is an old version of libchan which will be removed once libswarm has been ported over to libchan. -Beam is a library to turn your application into a collection of loosely coupled micro-services. -It implements an ultra-lightweight hub for the different components of an application -to discover and consume each other, either in-memory or across the network. - -Beam can be embedded with very little overhead by using Go channels. It -also implements an efficient http2/tls transport which can be used to -securely expose and consume any micro-service across a distributed system. - -Because remote Beam sessions are regular HTTP2 over TLS sessions, they can -be used in combination with any standard proxy or authentication -middleware. This means Beam, when configured propely, can be safely exposed -on the public Internet. It can also be embedded in an existing rest API -using an http1 and websocket fallback. - -## How is it different from RPC or REST? - -Modern micro-services are not a great fit for classical RPC or REST -protocols because they often rely heavily on events, bi-directional -communication, stream multiplexing, and some form of data synchronization. -Sometimes these services have a component which requires raw socket access, -either for performance (file transfer, event firehose, database access) or -simply because they have their own protocol (dns, smtp, sql, ssh, -zeromq, etc). These components typically need a separate set of tools -because they are outside the scope of the REST and RPC tools. If there is -also a websocket or ServerEvents transport, those require yet another layer -of tools. - -Instead of a clunky patchwork of tools, Beam implements in a single -minimalistic library all the primitives needed by modern micro-services: - -* Request/response with arbitrary structured data - -* Asynchronous events flowing in real-time in both directions - -* Requests and responses can flow in any direction, and can be arbitrarily -nested, for example to implement a self-registering worker model - -* Any request or response can include any number of streams, multiplexed in -both directions on the same session. - -* Any message serialization format can be plugged in: json, msgpack, xml, -protobuf. - -* As an optional convenience a minimalist key-value format is implemented. -It is designed to be extremely fast to serialize and parse, dead-simple to -implement, and suitable for both one-time data copy, file storage, and -real-time synchronization. - -* Raw file descriptors can be "attached" to any message, and passed under -the hood using the best method available to each transport. The Go channel -transport just passes os.File pointers around. The unix socket transport -uses fd passing which makes it suitable for high-performance IPC. The -tcp transport uses dedicated http2 streams. And as a bonus extension, a -built-in tcp gateway can be used to proxy raw network sockets without -extra overhead. That means Beam services can be used as smart gateways to a -sql database, ssh or file transfer service, with unified auth, discovery -and tooling and without performance penalty. - -## Design philosophy - -An explicit goal of Beam is simplicity of implementation and clarity of -spec. Porting it to any language should be as effortless as humanly -possible. - -## Creators - -**Solomon Hykes** - -- -- - -## Copyright and license - -Code and documentation copyright 2013-2014 Docker, inc. Code released under the Apache 2.0 license. -Docs released under Creative commons. From 24ed35ed890cf2af28f58cdf4f102d2a5d77f3dd Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 10 Jun 2014 00:53:27 -0700 Subject: [PATCH 238/347] Small README fixes --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0f1c2bfe89..cb0da6ee98 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ *libswarm* is a toolkit for composing network services. -At its core, it defines a standard way for services in a distributed system to communicate with each other. This lets you: +It defines a standard interface for services in a distributed system to communicate with each other. This lets you: -1. Use them as building blocks to compose complex architectures +1. Compose complex architectures from reusable building blocks 2. Avoid vendor lock-in by swapping any service out with another An extensive library of services is included, and you can also write your own using a simple API. @@ -38,6 +38,10 @@ This service runs a Docker remote API server, allowing the Docker client and oth This service can be used to control a Docker Engine from libswarm services. It takes one argument, the Docker host to connect to. For example: `dockerclient tcp://10.1.2.3:4243` +### SSH tunnel + +*Help wanted!* + ### Etcd *Help wanted!* From 9df5e94e1fe015cc3a80e1a866cbe23018284efe Mon Sep 17 00:00:00 2001 From: Karl Matthias Date: Tue, 10 Jun 2014 21:28:05 -0700 Subject: [PATCH 239/347] Parse the URL with the net/url Parse() function. Docker-DCO-1.1-Signed-off-by: Karl Matthias (github: relistan) --- backends/dockerserver.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 38cac5265f..f2f86fd683 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -10,6 +10,7 @@ import ( "io/ioutil" "net" "net/http" + "net/url" "strings" "time" ) @@ -35,20 +36,23 @@ func DockerServer() beam.Sender { type HttpApiFunc func(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error -func listenAndServe(url string, out beam.Sender) error { +func listenAndServe(urlStr string, out beam.Sender) error { fmt.Println("Starting Docker server...") r, err := createRouter(out) if err != nil { return err } - arr := strings.Split(url, "://") - proto := arr[0] - addr := arr[1] - l, err := net.Listen(proto, addr) + + parsedUrl, err := url.Parse(urlStr) if err != nil { return err } - httpSrv := http.Server{Addr: addr, Handler: r} + + l, err := net.Listen(parsedUrl.Scheme, parsedUrl.Host) + if err != nil { + return err + } + httpSrv := http.Server{Addr: parsedUrl.Host, Handler: r} return httpSrv.Serve(l) } From 13869dea11babb7a3bb732f7d79d6465d41a113d Mon Sep 17 00:00:00 2001 From: Karl Matthias Date: Wed, 11 Jun 2014 11:14:43 -0700 Subject: [PATCH 240/347] We need to carry the path part of the URL for unix sockets. Docker-DCO-1.1-Signed-off-by: Karl Matthias (github: relistan) --- backends/dockerserver.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index f2f86fd683..fe71974811 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -48,11 +48,19 @@ func listenAndServe(urlStr string, out beam.Sender) error { return err } - l, err := net.Listen(parsedUrl.Scheme, parsedUrl.Host) + var hostAndPath string + // For Unix sockets we need to capture the path as well as the host + if parsedUrl.Scheme == "unix" { + hostAndPath = "/" + parsedUrl.Host + parsedUrl.Path + } else { + hostAndPath = parsedUrl.Host + } + + l, err := net.Listen(parsedUrl.Scheme, hostAndPath) if err != nil { return err } - httpSrv := http.Server{Addr: parsedUrl.Host, Handler: r} + httpSrv := http.Server{Addr: hostAndPath, Handler: r} return httpSrv.Serve(l) } From 48c1eeef947e14f617af573fc0ae4d4b3bbf2ee4 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Wed, 11 Jun 2014 14:50:16 -0700 Subject: [PATCH 241/347] volunteer for the ec2 impl Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cb0da6ee98..e4d42d4223 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ This service can be used to control a Docker Engine from libswarm services. It t ### Amazon EC2 -*Help wanted!* +*Aaron Feng* ### Consul From 5bc89f830fd684f96a5d73db49b580388872cb36 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Wed, 11 Jun 2014 13:42:20 -0700 Subject: [PATCH 242/347] Add Orchard service to readme Signed-off-by: Ben Firshman --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index cb0da6ee98..c8d492b7c2 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,12 @@ This service can be used to control a Docker Engine from libswarm services. It t *John Hopper* +### Orchard + +*Maintainer: Aanand Prasad* + +Control an [Orchard](https://www.orchardup.com/) host from libswarm. It takes two arguments, an Orchard API token and the name of the Orchard host to control. + ### Amazon EC2 *Help wanted!* From b8b27c250323060c86fe02dfc5a0964853f2b625 Mon Sep 17 00:00:00 2001 From: fermayo Date: Fri, 13 Jun 2014 00:44:48 +0200 Subject: [PATCH 243/347] Added port mapping output to dockerserver Docker-DCO-1.1-Signed-off-by: Fernando Mayo (github: fermayo) --- backends/dockerserver.go | 42 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index fe71974811..af14aa0ca1 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -13,6 +13,7 @@ import ( "net/url" "strings" "time" + "strconv" ) func DockerServer() beam.Sender { @@ -106,6 +107,9 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response FinishedAt string ExitCode int } + NetworkSettings struct { + Ports map[string][]map[string]string + } } if err = json.Unmarshal([]byte(responseJson), &response); err != nil { return err @@ -120,13 +124,49 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response } else { state = fmt.Sprintf("Exited (%d)", response.State.ExitCode) } + type port struct { + IP string + PrivatePort int + PublicPort int + Type string + } + var ports []port + for p, mappings := range response.NetworkSettings.Ports { + var portnum int + var proto string + _, err := fmt.Sscanf(p, "%d/%s", &portnum, &proto) + if err != nil { + return err + } + if len(mappings) > 0 { + for _, mapping := range mappings { + hostPort, err := strconv.Atoi(mapping["HostPort"]) + if err != nil { + return err + } + newport := port{ + IP: mapping["HostIp"], + PrivatePort: portnum, + PublicPort: hostPort, + Type: proto, + } + ports = append(ports, newport) + } + } else { + newport := port{ + PublicPort: portnum, + Type: proto, + } + ports = append(ports, newport) + } + } responses = append(responses, map[string]interface{}{ "Id": response.ID, "Command": strings.Join(response.Config.Cmd, " "), "Created": created.Unix(), "Image": response.Config.Image, "Names": []string{response.Name}, - "Ports": []string{}, + "Ports": ports, "Status": state, }) } From 394b284685d80d72013072ba14e650217fd6ae6e Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Fri, 13 Jun 2014 20:16:53 -0700 Subject: [PATCH 244/347] scaffolding of call backs Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/backends.go | 1 + backends/ec2.go | 78 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 backends/ec2.go diff --git a/backends/backends.go b/backends/backends.go index f3eaccf3c2..2d0d5eb236 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -21,5 +21,6 @@ func New() *beam.Object { backends.Bind("orchard", Orchard()) backends.Bind("aggregate", Aggregate()) backends.Bind("shipyard", Shipyard()) + backends.Bind("ec2", Ec2()) return beam.Obj(backends) } diff --git a/backends/ec2.go b/backends/ec2.go new file mode 100644 index 0000000000..f0f35b74e4 --- /dev/null +++ b/backends/ec2.go @@ -0,0 +1,78 @@ +package backends + +import ( + "fmt" + "github.com/docker/libswarm/beam" +) + +type ec2Client struct { + Server *beam.Server +} + +func (c *ec2Client) get(ctx *beam.Message) error { + fmt.Println("*** ec2 Get ***") + body := `{}` + ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{body}}) + return nil +} + +func (c *ec2Client) start(ctx *beam.Message) error { + fmt.Println("*** ec2 OnStart ***") + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return nil +} + +func (c *ec2Client) log(ctx *beam.Message) error { + fmt.Println("*** ec2 OnLog ***") + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return nil +} + +func (c *ec2Client) spawn(ctx *beam.Message) error { + fmt.Println("*** ec2 OnSpawn ***") + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return nil +} + +func (c *ec2Client) ls(ctx *beam.Message) error { + fmt.Println("*** ec2 OnLs ***") + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return nil +} + +func (c *ec2Client) error(ctx *beam.Message) error { + fmt.Println("*** ec2 OnError ***") + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return nil +} + +func (c *ec2Client) stop(ctx *beam.Message) error { + fmt.Println("*** ec2 OnStop ***") + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return nil +} + +func (c *ec2Client) attach(ctx *beam.Message) error { + fmt.Println("*** ec2 OnAttach ***") + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return nil +} + +func Ec2() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + fmt.Println("*** init ***") + client := &ec2Client{beam.NewServer()} + client.Server.OnSpawn(beam.Handler(client.spawn)) + client.Server.OnStart(beam.Handler(client.start)) + client.Server.OnStop(beam.Handler(client.stop)) + client.Server.OnAttach(beam.Handler(client.attach)) + client.Server.OnLog(beam.Handler(client.log)) + client.Server.OnError(beam.Handler(client.error)) + client.Server.OnLs(beam.Handler(client.ls)) + client.Server.OnGet(beam.Handler(client.get)) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) + return err + })) + return backend +} From a74d45d360cdc43a52cadc836607df26374487ee Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Sun, 8 Jun 2014 15:50:30 -0700 Subject: [PATCH 245/347] Remove dockerclient This is no longer needed now we have dockerserver. Signed-off-by: Ben Firshman --- dockerclient/dockerclient.go | 159 ----------------------------------- 1 file changed, 159 deletions(-) delete mode 100644 dockerclient/dockerclient.go diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go deleted file mode 100644 index 2153e87f1c..0000000000 --- a/dockerclient/dockerclient.go +++ /dev/null @@ -1,159 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "github.com/codegangsta/cli" - "github.com/docker/libswarm/backends" - "github.com/docker/libswarm/beam" - "github.com/dotcloud/docker/runconfig" - "github.com/dotcloud/docker/utils" - "io" - "os" - "strings" -) - -func main() { - app := cli.NewApp() - app.Name = "swarmd" - app.Usage = "Control a heterogenous distributed system with the Docker API" - app.Version = "0.0.1" - app.Flags = []cli.Flag{ - cli.StringFlag{"backend", "debug", "load a backend"}, - } - app.Action = cmdDaemon - app.Run(os.Args) -} - -func cmdDaemon(c *cli.Context) { - app := beam.NewServer() - app.OnLog(beam.Handler(func(msg *beam.Message) error { - utils.Debugf("%s", strings.Join(msg.Args, " ")) - return nil - })) - app.OnError(beam.Handler(func(msg *beam.Message) error { - Fatalf("Fatal: %v", strings.Join(msg.Args[:1], "")) - return nil - })) - - backend := beam.Object{backends.Forward()} - - dockerHost := os.Getenv("DOCKER_HOST") - if dockerHost == "" { - dockerHost = "unix:///var/run/docker.sock" - } - - instance, err := backend.Spawn(dockerHost) - if err != nil { - Fatalf("spawn: %v\n", err) - } - - instanceR, instanceW, err := instance.Attach("") - if err != nil { - Fatalf("attach: %v", err) - } - defer instanceW.Close() - go beam.Copy(app, instanceR) - - if err := instance.Start(); err != nil { - Fatalf("start: %v", err) - } - - err = doCmd(instance, c.Args()) - if err != nil { - Fatalf("%v", err) - } -} - -func doCmd(instance *beam.Object, args []string) error { - if len(args) == 0 { - return fmt.Errorf("no command supplied") - } - if args[0] == "ps" { - if len(args) != 1 { - return fmt.Errorf("usage: ps") - } - names, err := instance.Ls() - if err != nil { - return err - } - fmt.Println(strings.Join(names, "\n")) - return nil - } - if args[0] == "run" { - if len(args) < 3 { - return fmt.Errorf("usage: run IMAGE COMMAND...") - } - containerJson, err := json.Marshal(&runconfig.Config{ - Image: args[1], - Cmd: args[2:], - AttachStdin: false, - AttachStdout: true, - AttachStderr: true, - }) - if err != nil { - return err - } - container, err := instance.Spawn(string(containerJson)) - if err != nil { - return fmt.Errorf("spawn: %v", err) - } - logs, _, err := container.Attach("") - if err != nil { - return fmt.Errorf("attach: %v", err) - } - if err = container.Start(); err != nil { - return fmt.Errorf("start: %v", err) - } - for { - msg, err := logs.Receive(beam.Ret) - if err != nil { - if err.Error() == "EOF" { - break - } - return fmt.Errorf("error reading from container: %v", err) - } - if msg.Verb != beam.Log { - return fmt.Errorf("unexpected message reading from container: %v", msg) - } - if len(msg.Args) != 2 { - return fmt.Errorf("expected exactly 2 args to log message, got %d", len(msg.Args)) - } - tag, chunk := msg.Args[0], msg.Args[1] - var stream io.Writer - if tag == "stdout" { - stream = os.Stdout - } else if tag == "stderr" { - stream = os.Stderr - } else { - return fmt.Errorf("unrecognised tag: %s", tag) - } - fmt.Fprint(stream, chunk) - } - return nil - } - if args[0] == "inspect" { - if len(args) != 2 { - return fmt.Errorf("usage: inspect CONTAINER") - } - _, container, err := instance.Attach(args[1]) - if err != nil { - return fmt.Errorf("attach: %v", err) - } - json, err := container.Get() - if err != nil { - return fmt.Errorf("get: %v", err) - } - fmt.Println(json) - return nil - } - return fmt.Errorf("unrecognised command: %s", args[0]) -} - -func Fatalf(msg string, args ...interface{}) { - if !strings.HasSuffix(msg, "\n") { - msg = msg + "\n" - } - fmt.Fprintf(os.Stderr, msg, args...) - os.Exit(1) -} From 2a8eab0cd376f29e9a2c8babbc1267e4050424ca Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Sun, 8 Jun 2014 16:34:46 -0700 Subject: [PATCH 246/347] Rename forward backend to dockerclient Signed-off-by: Ben Firshman --- backends/backends.go | 2 +- backends/{forward.go => dockerclient.go} | 64 ++++++++++++------------ backends/orchard.go | 2 +- 3 files changed, 34 insertions(+), 34 deletions(-) rename backends/{forward.go => dockerclient.go} (80%) diff --git a/backends/backends.go b/backends/backends.go index f3eaccf3c2..6a5b1517cf 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -15,7 +15,7 @@ func New() *beam.Object { backends.Bind("simulator", Simulator()) backends.Bind("debug", Debug()) backends.Bind("fakeclient", FakeClient()) - backends.Bind("forward", Forward()) + backends.Bind("dockerclient", DockerClient()) backends.Bind("exec", Exec()) backends.Bind("dockerserver", DockerServer()) backends.Bind("orchard", Orchard()) diff --git a/backends/forward.go b/backends/dockerclient.go similarity index 80% rename from backends/forward.go rename to backends/dockerclient.go index 046804c85d..d4af1075dd 100644 --- a/backends/forward.go +++ b/backends/dockerclient.go @@ -17,59 +17,59 @@ import ( "time" ) -type ForwardConfig struct { +type DockerClientConfig struct { Scheme string URLHost string TLSClientConfig *tls.Config } -func Forward() beam.Sender { - return ForwardWithConfig(&ForwardConfig{ +func DockerClient() beam.Sender { + return DockerClientWithConfig(&DockerClientConfig{ Scheme: "http", URLHost: "dummy.host", }) } -func ForwardWithConfig(config *ForwardConfig) beam.Sender { +func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 1 { - return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } client := newClient() client.scheme = config.Scheme client.urlHost = config.URLHost client.transport.TLSClientConfig = config.TLSClientConfig client.setURL(ctx.Args[0]) - f := &forwarder{ + b := &dockerClientBackend{ client: client, Server: beam.NewServer(), } - f.Server.OnAttach(beam.Handler(f.attach)) - f.Server.OnStart(beam.Handler(f.start)) - f.Server.OnLs(beam.Handler(f.ls)) - f.Server.OnSpawn(beam.Handler(f.spawn)) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) + b.Server.OnAttach(beam.Handler(b.attach)) + b.Server.OnStart(beam.Handler(b.start)) + b.Server.OnLs(beam.Handler(b.ls)) + b.Server.OnSpawn(beam.Handler(b.spawn)) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) return err })) return backend } -type forwarder struct { +type dockerClientBackend struct { client *client *beam.Server } -func (f *forwarder) attach(ctx *beam.Message) error { +func (b *dockerClientBackend) attach(ctx *beam.Message) error { if ctx.Args[0] == "" { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) for { time.Sleep(1 * time.Second) - (&beam.Object{ctx.Ret}).Log("forward: heartbeat") + (&beam.Object{ctx.Ret}).Log("dockerclient: heartbeat") } } else { path := fmt.Sprintf("/containers/%s/json", ctx.Args[0]) - resp, err := f.client.call("GET", path, "") + resp, err := b.client.call("GET", path, "") if err != nil { return err } @@ -80,19 +80,19 @@ func (f *forwarder) attach(ctx *beam.Message) error { if resp.StatusCode != 200 { return fmt.Errorf("%s", respBody) } - c := f.newContainer(ctx.Args[0]) + c := b.newContainer(ctx.Args[0]) ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) } return nil } -func (f *forwarder) start(ctx *beam.Message) error { +func (b *dockerClientBackend) start(ctx *beam.Message) error { ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) return nil } -func (f *forwarder) ls(ctx *beam.Message) error { - resp, err := f.client.call("GET", "/containers/json", "") +func (b *dockerClientBackend) ls(ctx *beam.Message) error { + resp, err := b.client.call("GET", "/containers/json", "") if err != nil { return fmt.Errorf("get: %v", err) } @@ -115,11 +115,11 @@ func (f *forwarder) ls(ctx *beam.Message) error { return nil } -func (f *forwarder) spawn(ctx *beam.Message) error { +func (b *dockerClientBackend) spawn(ctx *beam.Message) error { if len(ctx.Args) != 1 { - return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } - resp, err := f.client.call("POST", "/containers/create", ctx.Args[0]) + resp, err := b.client.call("POST", "/containers/create", ctx.Args[0]) if err != nil { return err } @@ -134,15 +134,15 @@ func (f *forwarder) spawn(ctx *beam.Message) error { if err = json.Unmarshal(respBody, &respJson); err != nil { return err } - c := f.newContainer(respJson.Id) + c := b.newContainer(respJson.Id) if _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}); err != nil { return err } return nil } -func (f *forwarder) newContainer(id string) beam.Sender { - c := &container{forwarder: f, id: id} +func (b *dockerClientBackend) newContainer(id string) beam.Sender { + c := &container{backend: b, id: id} instance := beam.NewServer() instance.OnAttach(beam.Handler(c.attach)) instance.OnStart(beam.Handler(c.start)) @@ -152,8 +152,8 @@ func (f *forwarder) newContainer(id string) beam.Sender { } type container struct { - forwarder *forwarder - id string + backend *dockerClientBackend + id string } func (c *container) attach(ctx *beam.Message) error { @@ -167,7 +167,7 @@ func (c *container) attach(ctx *beam.Message) error { stderrR, stderrW := io.Pipe() go copyOutput(ctx.Ret, stdoutR, "stdout") go copyOutput(ctx.Ret, stderrR, "stderr") - c.forwarder.client.hijack("POST", path, nil, stdoutW, stderrW) + c.backend.client.hijack("POST", path, nil, stdoutW, stderrW) return nil } @@ -189,7 +189,7 @@ func copyOutput(sender beam.Sender, reader io.Reader, tag string) { func (c *container) start(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/start", c.id) - resp, err := c.forwarder.client.call("POST", path, "{}") + resp, err := c.backend.client.call("POST", path, "{}") if err != nil { return err } @@ -208,7 +208,7 @@ func (c *container) start(ctx *beam.Message) error { func (c *container) stop(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/stop", c.id) - resp, err := c.forwarder.client.call("POST", path, "{}") + resp, err := c.backend.client.call("POST", path, "{}") if err != nil { return err } @@ -227,7 +227,7 @@ func (c *container) stop(ctx *beam.Message) error { func (c *container) get(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/json", c.id) - resp, err := c.forwarder.client.call("GET", path, "") + resp, err := c.backend.client.call("GET", path, "") if err != nil { return err } diff --git a/backends/orchard.go b/backends/orchard.go index 536a13241b..1b30f873b7 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -35,7 +35,7 @@ func Orchard() beam.Sender { return err } - backend := ForwardWithConfig(&ForwardConfig{ + backend := DockerClientWithConfig(&DockerClientConfig{ Scheme: "https", URLHost: host.IPAddress, TLSClientConfig: tlsConfig, From facb03c3b49e1b8472423d91e9782db44bf21d45 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Sun, 8 Jun 2014 16:36:26 -0700 Subject: [PATCH 247/347] Remove dockerclient heartbeat Signed-off-by: Ben Firshman --- backends/dockerclient.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index d4af1075dd..be26bbf682 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -14,7 +14,6 @@ import ( "net/http/httputil" "net/url" "strings" - "time" ) type DockerClientConfig struct { @@ -63,10 +62,7 @@ type dockerClientBackend struct { func (b *dockerClientBackend) attach(ctx *beam.Message) error { if ctx.Args[0] == "" { ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) - for { - time.Sleep(1 * time.Second) - (&beam.Object{ctx.Ret}).Log("dockerclient: heartbeat") - } + <-make(chan struct{}) } else { path := fmt.Sprintf("/containers/%s/json", ctx.Args[0]) resp, err := b.client.call("GET", path, "") From cfb5108a463948970787d738448166758d71c25a Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Mon, 16 Jun 2014 16:30:58 +0100 Subject: [PATCH 248/347] Tests for dockerclient Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 2 +- backends/dockerclient_test.go | 186 ++++++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 backends/dockerclient_test.go diff --git a/backends/dockerclient.go b/backends/dockerclient.go index be26bbf682..38127c4474 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -204,7 +204,7 @@ func (c *container) start(ctx *beam.Message) error { func (c *container) stop(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/stop", c.id) - resp, err := c.backend.client.call("POST", path, "{}") + resp, err := c.backend.client.call("POST", path, "") if err != nil { return err } diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go new file mode 100644 index 0000000000..4c5948893a --- /dev/null +++ b/backends/dockerclient_test.go @@ -0,0 +1,186 @@ +package backends + +import ( + "github.com/docker/libswarm/beam" + + "fmt" + "io/ioutil" + "net/http" + "net/http/httptest" + "reflect" + "strings" + "testing" +) + +type requestStub struct { + reqMethod string + reqPath string + reqBody string + + resStatus int + resBody string +} + +func TestBackendSpawn(t *testing.T) { + instance(t, nil) +} + +func TestAttachAndStart(t *testing.T) { + i := instance(t, nil) + _, _, err := i.Attach("") + if err != nil { + t.Fatal(err) + } + err = i.Start() + if err != nil { + t.Fatal(err) + } +} + +func TestLs(t *testing.T) { + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: "/containers/json", + resBody: ` + [ + {"Names": ["/foo"]}, + {"Names": ["/bar"]} + ] + `, + }) + i := instance(t, server) + names, err := i.Ls() + if err != nil { + t.Fatal(err) + } + expected := []string{"foo", "bar"} + if !reflect.DeepEqual(names, expected) { + t.Fatalf("expected %#v, got %#v", expected, names) + } +} + +func TestSpawn(t *testing.T) { + server := makeServer(t, &requestStub{ + reqMethod: "POST", + reqPath: "/containers/create", + reqBody: "{}", + + resStatus: 201, + resBody: "{}", + }) + i := instance(t, server) + _, err := i.Spawn("{}") + if err != nil { + t.Fatal(err) + } +} + +func TestAttachToChild(t *testing.T) { + name := "foo" + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: fmt.Sprintf("/containers/%s/json", name), + + resBody: "{}", + }) + i := instance(t, server) + child(t, server, i, name) +} + +func TestStartChild(t *testing.T) { + name := "foo" + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: fmt.Sprintf("/containers/%s/json", name), + + resBody: "{}", + }, &requestStub{ + reqMethod: "POST", + reqPath: fmt.Sprintf("/containers/%s/start", name), + reqBody: "{}", + + resStatus: 204, + }) + i := instance(t, server) + c := child(t, server, i, name) + err := c.Start() + if err != nil { + t.Fatal(err) + } +} + +func TestStopChild(t *testing.T) { + name := "foo" + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: fmt.Sprintf("/containers/%s/json", name), + + resBody: "{}", + }, &requestStub{ + reqMethod: "POST", + reqPath: fmt.Sprintf("/containers/%s/stop", name), + + resStatus: 204, + }) + i := instance(t, server) + c := child(t, server, i, name) + err := c.Stop() + if err != nil { + t.Fatal(err) + } +} + +func makeServer(t *testing.T, stubs ...*requestStub) *httptest.Server { + for _, stub := range stubs { + stub.reqPath = fmt.Sprintf("/v1.11%s", stub.reqPath) + } + + stubSummaries := []string{} + for _, stub := range stubs { + stubSummaries = append(stubSummaries, fmt.Sprintf("%s %s", stub.reqMethod, stub.reqPath)) + } + + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + for _, stub := range stubs { + if r.Method == stub.reqMethod && r.URL.Path == stub.reqPath { + body, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Fatal(err) + } + if string(body) != stub.reqBody { + t.Fatalf("expected body: %#v, got body: %#v", stub.reqBody, string(body)) + } + + if stub.resStatus > 0 { + w.WriteHeader(stub.resStatus) + } + w.Write([]byte(stub.resBody)) + return + } + } + + t.Fatalf("Unexpected request: '%s %s'.\nStubs: %#v", r.Method, r.URL.Path, stubSummaries) + })) +} + +func instance(t *testing.T, server *httptest.Server) *beam.Object { + url := "tcp://localhost:4243" + if server != nil { + url = strings.Replace(server.URL, "http://", "tcp://", 1) + } + + backend := DockerClient() + instance, err := beam.Obj(backend).Spawn(url) + if err != nil { + t.Fatal(err) + } + return instance +} + +func child(t *testing.T, server *httptest.Server, i *beam.Object, name string) *beam.Object { + _, child, err := i.Attach(name) + if err != nil { + t.Fatal(err) + } + return child +} From eb22a7aa01f17f860c4ca5f56d0307565e27f1b4 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 11:49:56 -0700 Subject: [PATCH 249/347] Add attach to dockerserver - Move copyOutput helper from dockerclient to beam/stream.go - Implement /containers//attach and /containers//wait Signed-off-by: Ben Firshman --- backends/dockerclient.go | 19 +------- backends/dockerserver.go | 95 ++++++++++++++++++++++++++++++++++++++-- beam/stream.go | 38 ++++++++++++++++ 3 files changed, 132 insertions(+), 20 deletions(-) create mode 100644 beam/stream.go diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 38127c4474..e2b0f50113 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -161,28 +161,13 @@ func (c *container) attach(ctx *beam.Message) error { stdoutR, stdoutW := io.Pipe() stderrR, stderrW := io.Pipe() - go copyOutput(ctx.Ret, stdoutR, "stdout") - go copyOutput(ctx.Ret, stderrR, "stderr") + go beam.EncodeStream(ctx.Ret, stdoutR, "stdout") + go beam.EncodeStream(ctx.Ret, stderrR, "stderr") c.backend.client.hijack("POST", path, nil, stdoutW, stderrW) return nil } -func copyOutput(sender beam.Sender, reader io.Reader, tag string) { - chunk := make([]byte, 4096) - for { - n, err := reader.Read(chunk) - if n > 0 { - sender.Send(&beam.Message{Verb: beam.Log, Args: []string{tag, string(chunk[0:n])}}) - } - if err != nil { - message := fmt.Sprintf("Error reading from stream: %v", err) - sender.Send(&beam.Message{Verb: beam.Error, Args: []string{message}}) - break - } - } -} - func (c *container) start(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/start", c.id) resp, err := c.backend.client.call("POST", path, "{}") diff --git a/backends/dockerserver.go b/backends/dockerserver.go index af14aa0ca1..d6fe22d8fd 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -6,12 +6,15 @@ import ( "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/api" "github.com/dotcloud/docker/pkg/version" + "github.com/dotcloud/docker/utils" "github.com/gorilla/mux" + "io" "io/ioutil" "net" "net/http" "net/url" "strings" + "sync" "time" "strconv" ) @@ -241,6 +244,90 @@ func postContainersStop(out beam.Sender, version version.Version, w http.Respons return nil } +func hijackServer(w http.ResponseWriter) (io.ReadCloser, io.Writer, error) { + conn, _, err := w.(http.Hijacker).Hijack() + if err != nil { + return nil, nil, err + } + // Flush the options to make sure the client sets the raw mode + conn.Write([]byte{}) + return conn, conn, nil +} + +func postContainersAttach(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if err := r.ParseForm(); err != nil { + return err + } + if vars == nil { + return fmt.Errorf("Missing parameter") + } + + inStream, outStream, err := hijackServer(w) + if err != nil { + return err + } + defer func() { + if tcpc, ok := inStream.(*net.TCPConn); ok { + tcpc.CloseWrite() + } else { + inStream.Close() + } + }() + defer func() { + if tcpc, ok := outStream.(*net.TCPConn); ok { + tcpc.CloseWrite() + } else if closer, ok := outStream.(io.Closer); ok { + closer.Close() + } + }() + + fmt.Fprintf(outStream, "HTTP/1.1 200 OK\r\nContent-Type: application/vnd.docker.raw-stream\r\n\r\n") + + // TODO: if a TTY, then no multiplexing is done + errStream := utils.NewStdWriter(outStream, utils.Stderr) + outStream = utils.NewStdWriter(outStream, utils.Stdout) + + _, containerOut, err := beam.Obj(out).Attach(vars["name"]) + if err != nil { + return err + } + container := beam.Obj(containerOut) + + containerR, _, err := container.Attach("") + var tasks sync.WaitGroup + go func() { + defer tasks.Done() + err := beam.DecodeStream(outStream, containerR, "stdout") + if err != nil { + fmt.Printf("decodestream: %v\n", err) + } + }() + tasks.Add(1) + go func() { + defer tasks.Done() + err := beam.DecodeStream(errStream, containerR, "stderr") + if err != nil { + fmt.Printf("decodestream: %v\n", err) + } + }() + tasks.Add(1) + tasks.Wait() + + return nil +} + +func postContainersWait(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if vars == nil { + return fmt.Errorf("Missing parameter") + } + + // TODO: this should wait for container to end out output correct + // exit status + return writeJSON(w, http.StatusOK, map[string]interface{}{ + "StatusCode": "0", + }) +} + func createRouter(out beam.Sender) (*mux.Router, error) { r := mux.NewRouter() m := map[string]map[string]HttpApiFunc{ @@ -249,9 +336,11 @@ func createRouter(out beam.Sender) (*mux.Router, error) { "/containers/json": getContainersJSON, }, "POST": { - "/containers/create": postContainersCreate, - "/containers/{name:.*}/start": postContainersStart, - "/containers/{name:.*}/stop": postContainersStop, + "/containers/create": postContainersCreate, + "/containers/{name:.*}/attach": postContainersAttach, + "/containers/{name:.*}/start": postContainersStart, + "/containers/{name:.*}/stop": postContainersStop, + "/containers/{name:.*}/wait": postContainersWait, }, "DELETE": {}, "OPTIONS": {}, diff --git a/beam/stream.go b/beam/stream.go new file mode 100644 index 0000000000..beef7229c1 --- /dev/null +++ b/beam/stream.go @@ -0,0 +1,38 @@ +package beam + +import ( + "fmt" + "io" +) + +func EncodeStream(sender Sender, reader io.Reader, tag string) { + chunk := make([]byte, 4096) + for { + n, err := reader.Read(chunk) + if n > 0 { + sender.Send(&Message{Verb: Log, Args: []string{tag, string(chunk[0:n])}}) + } + if err != nil { + message := fmt.Sprintf("Error reading from stream: %v", err) + sender.Send(&Message{Verb: Error, Args: []string{message}}) + break + } + } +} + +func DecodeStream(dst io.Writer, src Receiver, tag string) error { + for { + msg, err := src.Receive(Ret) + if err == io.EOF { + return nil + } + if err != nil { + return err + } + if tag == msg.Args[0] { + if _, err := dst.Write([]byte(msg.Args[1])); err != nil { + return err + } + } + } +} From 4090242703dfe302ca0128da550e47ff10db08bf Mon Sep 17 00:00:00 2001 From: fermayo Date: Tue, 17 Jun 2014 19:51:55 +0200 Subject: [PATCH 250/347] Refactor Tutum backend to use beam Docker-DCO-1.1-Signed-off-by: Fernando Mayo (github: fermayo) --- backends/backends.go | 1 + backends/tutum.go | 382 +++++++++++++++++++------------------- swarmd/Godeps/Godeps.json | 2 +- 3 files changed, 190 insertions(+), 195 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index 6a5b1517cf..05b6675d1c 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -21,5 +21,6 @@ func New() *beam.Object { backends.Bind("orchard", Orchard()) backends.Bind("aggregate", Aggregate()) backends.Bind("shipyard", Shipyard()) + backends.Bind("tutum", Tutum()) return beam.Obj(backends) } diff --git a/backends/tutum.go b/backends/tutum.go index 0f2800b27c..dc83e56633 100644 --- a/backends/tutum.go +++ b/backends/tutum.go @@ -3,223 +3,218 @@ package backends import ( "encoding/json" "fmt" + "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/engine" - "github.com/dotcloud/docker/runconfig" "github.com/tutumcloud/go-tutum" - "io" "io/ioutil" - "log" "net/http" "net/url" "strings" + "time" ) var ( - tutumConnector = "docker.tutum.co:49460" + tutumConnectorHost = "https://docker.tutum.co:49460" tutumConnectorVersion = "v1.11" ) -func Tutum() engine.Installer { - return &tutumBackend{} +func Tutum() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + if len(ctx.Args) == 2 { + tutum.User = ctx.Args[0] + tutum.ApiKey = ctx.Args[1] + } + if !tutum.IsAuthenticated() { + return fmt.Errorf("You need to provide your Tutum credentials in ~/.tutum or environment variables TUTUM_USER and TUTUM_APIKEY") + } + tutumDockerConnector, err := newConnector(tutumConnectorHost, tutumConnectorVersion) + if err != nil { + return fmt.Errorf("%v", err) + } + t := &tutumBackend{ + tutumDockerConnector: tutumDockerConnector, + Server: beam.NewServer(), + } + t.Server.OnAttach(beam.Handler(t.attach)) + t.Server.OnStart(beam.Handler(t.ack)) + t.Server.OnLs(beam.Handler(t.ls)) + t.Server.OnSpawn(beam.Handler(t.spawn)) + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) + return err + })) + return backend } type tutumBackend struct { + tutumDockerConnector *tutumDockerConnector + *beam.Server } -func (t *tutumBackend) Install(eng *engine.Engine) error { - eng.Register("tutum", func(job *engine.Job) engine.Status { - if len(job.Args) == 1 { - tutumConnector = job.Args[0] +func (t *tutumBackend) attach(ctx *beam.Message) error { + if ctx.Args[0] == "" { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) + for { + time.Sleep(1 * time.Second) } - if !tutum.IsAuthenticated() { - return job.Errorf("You need to provide your Tutum credentials in ~/.tutum or environment variables TUTUM_USER and TUTUM_APIKEY") - } - job.Eng.Register("containers", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/json?all=%s&limit=%s", - url.QueryEscape(job.Getenv("all")), - url.QueryEscape(job.Getenv("limit")), - ) - resp, err := tutumConnectorCall("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - c := engine.NewTable("Created", 0) - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return job.Errorf("%s: read body: %v", path, err) - } - if _, err := c.ReadListFrom(body); err != nil { - return job.Errorf("%s: readlist: %v", path, err) - } - c.WriteListTo(job.Stdout) - return engine.StatusOK - }) - job.Eng.Register("create", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/create", - ) - config := runconfig.ContainerConfigFromJob(job) - data, err := json.Marshal(config) - if err != nil { - return job.Errorf("%s: json marshal: %v", path, err) - } - resp, err := tutumConnectorCall("POST", path, string(data)) - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return job.Errorf("%s: read body: %#v", path, err) - } - var containerOut struct { - Id string - Warnings []string - } - err = json.Unmarshal([]byte(body), &containerOut) - _, err = job.Printf("%s\n", containerOut.Id) - if err != nil { - return job.Errorf("%s: write body: %#v", path, err) - } - log.Printf("%s", string(body)) - return engine.StatusOK - }) - job.Eng.Register("container_delete", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s?force=%s", - job.Args[0], - url.QueryEscape(job.Getenv("forceRemove")), - ) - _, err := tutumConnectorCall("DELETE", path, "") - if err != nil { - return job.Errorf("%s: delete: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("start", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf("/containers/%s/start", job.Args[0]) - config := runconfig.ContainerConfigFromJob(job) - data, err := json.Marshal(config) - if err != nil { - return job.Errorf("%s: json marshal: %v", path, err) - } - _, err = tutumConnectorCall("POST", path, string(data)) - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("stop", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/stop?t=%s", - job.Args[0], - url.QueryEscape(job.Getenv("t")), - ) - _, err := tutumConnectorCall("POST", path, "") - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("kill", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/kill?signal=%s", - job.Args[0], - job.Args[1], - ) - _, err := tutumConnectorCall("POST", path, "") - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("restart", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/restart?t=%s", - job.Args[0], - url.QueryEscape(job.Getenv("t")), - ) - _, err := tutumConnectorCall("POST", path, "") - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("inspect", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/json", - job.Args[0], - ) - resp, err := tutumConnectorCall("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - _, err = io.Copy(job.Stdout, resp.Body) - if err != nil { - return job.Errorf("%s: copy stream: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("logs", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/logs?stdout=%s&stderr=%s", - job.Args[0], - url.QueryEscape(job.Getenv("stdout")), - url.QueryEscape(job.Getenv("stderr")), - ) - resp, err := tutumConnectorCall("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - _, err = io.Copy(job.Stdout, resp.Body) - if err != nil { - return job.Errorf("%s: copy stream: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("version", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := "/version" - resp, err := tutumConnectorCall("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - _, err = io.Copy(job.Stdout, resp.Body) - if err != nil { - return job.Errorf("%s: copy stream: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.RegisterCatchall(func(job *engine.Job) engine.Status { - return job.Errorf("Operation not yet supported: %s", job.Name) - }) - return engine.StatusOK - }) + } else { + c := t.newContainer(ctx.Args[0]) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) + } return nil } -func tutumConnectorCall(method, path, body string) (*http.Response, error) { - apiPath := fmt.Sprintf( - "/%s%s", - tutumConnectorVersion, - path, - ) - u, err := url.Parse(apiPath) +func (t *tutumBackend) ack(ctx *beam.Message) error { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) + return nil +} + +func (t *tutumBackend) ls(ctx *beam.Message) error { + resp, err := t.tutumDockerConnector.call("GET", "/containers/json", "") + if err != nil { + return fmt.Errorf("%s: get: %v", t.tutumDockerConnector.URL.String(), err) + } + c := engine.NewTable("Created", 0) + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return fmt.Errorf("%s: read body: %v", t.tutumDockerConnector.URL.String(), err) + } + if _, err := c.ReadListFrom(body); err != nil { + return fmt.Errorf("%s: readlist: %v", t.tutumDockerConnector.URL.String(), err) + } + ids := []string{} + for _, env := range c.Data { + ids = append(ids, env.GetList("Id")[0]) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: ids}); err != nil { + return fmt.Errorf("%s: send response: %v", t.tutumDockerConnector.URL.String(), err) + } + return nil +} + +func (t *tutumBackend) spawn(ctx *beam.Message) error { + if len(ctx.Args) != 1 { + return fmt.Errorf("tutum: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + } + resp, err := t.tutumDockerConnector.call("POST", "/containers/create", ctx.Args[0]) + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 201 { + return fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) + } + var respJson struct{ Id string } + if err = json.Unmarshal(respBody, &respJson); err != nil { + return err + } + c := t.newContainer(respJson.Id) + if _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}); err != nil { + return err + } + return nil +} + +func (t *tutumBackend) newContainer(id string) beam.Sender { + c := &tutumContainer{tutumBackend: t, id: id} + instance := beam.NewServer() + instance.OnGet(beam.Handler(c.get)) + instance.OnStart(beam.Handler(c.start)) + instance.OnStop(beam.Handler(c.stop)) + return instance +} + +type tutumContainer struct { + tutumBackend *tutumBackend + id string +} + +func (c *tutumContainer) get(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/json", c.id) + resp, err := c.tutumBackend.tutumDockerConnector.call("GET", path, "") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + fmt.Printf("%s", respBody) + if err != nil { + return err + } + if resp.StatusCode != 200 { + return fmt.Errorf("%s", respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{string(respBody)}}); err != nil { + return err + } + return nil +} + +func (c *tutumContainer) start(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/start", c.id) + resp, err := c.tutumBackend.tutumDockerConnector.call("POST", path, "") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 204 { + return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + return err + } + return nil +} + +func (c *tutumContainer) stop(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/stop", c.id) + resp, err := c.tutumBackend.tutumDockerConnector.call("POST", path, "") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 204 { + return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + return err + } + return nil +} + +type tutumDockerConnector struct { + URL *url.URL + version string +} + +func newConnector(peer, version string) (*tutumDockerConnector, error) { + u, err := url.Parse(peer) if err != nil { return nil, err } - u.Host = tutumConnector - u.Scheme = "https" - log.Printf("[tutum] >> Calling connector: %s %s", method, path) + c := &tutumDockerConnector{ + URL: u, + version: version, + } + return c, nil +} + +func (c *tutumDockerConnector) call(method, path, body string) (*http.Response, error) { + path = fmt.Sprintf("/%s%s", c.version, path) + u, err := url.Parse(path) + if err != nil { + return nil, err + } + u.Host = c.URL.Host + u.Scheme = c.URL.Scheme req, err := http.NewRequest(method, u.String(), strings.NewReader(body)) if err != nil { return nil, err @@ -230,7 +225,6 @@ func tutumConnectorCall(method, path, body string) (*http.Response, error) { if err != nil { return nil, err } - log.Printf("[tutum] << Response: %d", resp.StatusCode) if resp.StatusCode >= 400 { body, err := ioutil.ReadAll(resp.Body) if err != nil { diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 22c8bc02f3..513fdff52b 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -150,7 +150,7 @@ }, { "ImportPath": "github.com/tutumcloud/go-tutum", - "Rev": "d826286d2e5882428c8163ab44261987bea85a44" + "Rev": "c07f413c4e14bcc40f5bb9c6dbe40ec2289fa234" }, { "ImportPath": "github.com/rackspace/gophercloud", From e2e64e71cb796e062b9f2c8bf4f04c49cdf2f584 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 13 Jun 2014 17:20:03 +0100 Subject: [PATCH 251/347] Port to libchan, pt. 1 This is a minimal effort to get things running. Only the `beam` package has changed - backend code is untouched. - The `beam` package is still around, but functions as a libswarm-specific wrapper around libchan messages. It'll either be renamed or moved to the top-level namespace. - We have our own Message type which serializes/deserializes to libchan messages, and our own versions of Sender and Receiver which speak libswarm. WrapSender and WrapReceiver promote libchan objects to their libswarm equivalents. - We also have our own wrappers around libchan utilities: RetPipe, Handler, Pipe, Copy. Signed-off-by: Aanand Prasad --- beam/AUTHORS | 1 - beam/MAINTAINERS | 1 - beam/README.md | 4 - beam/beam.go | 66 --- beam/beam_test.go | 20 - beam/copy.go | 38 -- beam/data/data.go | 119 ----- beam/data/data_test.go | 129 ----- beam/data/message.go | 93 ---- beam/data/message_test.go | 53 -- beam/data/netstring.txt | 92 ---- beam/examples/beamsh/beamsh | Bin 6054492 -> 0 bytes beam/examples/beamsh/beamsh.go | 542 --------------------- beam/examples/beamsh/builtins.go | 441 ----------------- beam/examples/beamsh/scripts/bug0.ds | 3 - beam/examples/beamsh/scripts/bug1.ds | 5 - beam/examples/beamsh/scripts/bug2.ds | 7 - beam/examples/beamsh/scripts/bug3.ds | 10 - beam/examples/beamsh/scripts/bug4.ds | 9 - beam/examples/beamsh/scripts/bug5.ds | 6 - beam/examples/beamsh/scripts/bug6.ds | 7 - beam/examples/beamsh/scripts/bug7.ds | 6 - beam/examples/beamsh/scripts/demo1.ds | 9 - beam/examples/beamsh/scripts/helloworld.ds | 8 - beam/examples/beamsh/scripts/logdemo.ds | 9 - beam/examples/beamsh/scripts/miniserver.ds | 9 - beam/handler.go | 31 -- beam/http2/README.md | 8 - beam/http2/listener.go | 86 ---- beam/http2/listener_test.go | 83 ---- beam/http2/server.go | 66 --- beam/http2/spdy.go | 109 ----- beam/http2/stream.go | 166 ------- beam/http2/stream_test.go | 159 ------ beam/inmem.go | 206 -------- beam/inmem_test.go | 145 ------ beam/message.go | 169 +++++++ beam/nop.go | 21 - beam/server.go | 6 + beam/unix/beam.go | 166 ------- beam/unix/beam_test.go | 39 -- beam/unix/conn.go | 144 ------ beam/unix/conn_test.go | 74 --- beam/unix/unix.go | 317 ------------ beam/unix/unix_test.go | 237 --------- beam/utils/buf.go | 17 - beam/utils/queue.go | 41 -- beam/utils/queue_test.go | 43 -- beam/utils/stack.go | 112 ----- beam/utils/stack_test.go | 127 ----- beam/verbs.go | 36 ++ beam/ws/ws.go | 72 --- beam/ws/ws_test.go | 73 --- 53 files changed, 211 insertions(+), 4229 deletions(-) delete mode 100644 beam/AUTHORS delete mode 100644 beam/MAINTAINERS delete mode 100644 beam/README.md delete mode 100644 beam/beam.go delete mode 100644 beam/beam_test.go delete mode 100644 beam/copy.go delete mode 100644 beam/data/data.go delete mode 100644 beam/data/data_test.go delete mode 100644 beam/data/message.go delete mode 100644 beam/data/message_test.go delete mode 100644 beam/data/netstring.txt delete mode 100755 beam/examples/beamsh/beamsh delete mode 100644 beam/examples/beamsh/beamsh.go delete mode 100644 beam/examples/beamsh/builtins.go delete mode 100755 beam/examples/beamsh/scripts/bug0.ds delete mode 100755 beam/examples/beamsh/scripts/bug1.ds delete mode 100755 beam/examples/beamsh/scripts/bug2.ds delete mode 100755 beam/examples/beamsh/scripts/bug3.ds delete mode 100755 beam/examples/beamsh/scripts/bug4.ds delete mode 100755 beam/examples/beamsh/scripts/bug5.ds delete mode 100755 beam/examples/beamsh/scripts/bug6.ds delete mode 100755 beam/examples/beamsh/scripts/bug7.ds delete mode 100755 beam/examples/beamsh/scripts/demo1.ds delete mode 100755 beam/examples/beamsh/scripts/helloworld.ds delete mode 100755 beam/examples/beamsh/scripts/logdemo.ds delete mode 100755 beam/examples/beamsh/scripts/miniserver.ds delete mode 100644 beam/handler.go delete mode 100644 beam/http2/README.md delete mode 100644 beam/http2/listener.go delete mode 100644 beam/http2/listener_test.go delete mode 100644 beam/http2/server.go delete mode 100644 beam/http2/spdy.go delete mode 100644 beam/http2/stream.go delete mode 100644 beam/http2/stream_test.go delete mode 100644 beam/inmem.go delete mode 100644 beam/inmem_test.go create mode 100644 beam/message.go delete mode 100644 beam/nop.go delete mode 100644 beam/unix/beam.go delete mode 100644 beam/unix/beam_test.go delete mode 100644 beam/unix/conn.go delete mode 100644 beam/unix/conn_test.go delete mode 100644 beam/unix/unix.go delete mode 100644 beam/unix/unix_test.go delete mode 100644 beam/utils/buf.go delete mode 100644 beam/utils/queue.go delete mode 100644 beam/utils/queue_test.go delete mode 100644 beam/utils/stack.go delete mode 100644 beam/utils/stack_test.go delete mode 100644 beam/ws/ws.go delete mode 100644 beam/ws/ws_test.go diff --git a/beam/AUTHORS b/beam/AUTHORS deleted file mode 100644 index db33365bcd..0000000000 --- a/beam/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Solomon Hykes diff --git a/beam/MAINTAINERS b/beam/MAINTAINERS deleted file mode 100644 index aee10c8421..0000000000 --- a/beam/MAINTAINERS +++ /dev/null @@ -1 +0,0 @@ -Solomon Hykes (@shykes) diff --git a/beam/README.md b/beam/README.md deleted file mode 100644 index 5277c7f361..0000000000 --- a/beam/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Beam - -**WARNING:** This has been renamed [libchan](https://github.com/docker/libchan). The code in this directory is an old version of libchan which will be removed once libswarm has been ported over to libchan. - diff --git a/beam/beam.go b/beam/beam.go deleted file mode 100644 index b89ba8317e..0000000000 --- a/beam/beam.go +++ /dev/null @@ -1,66 +0,0 @@ -package beam - -import ( - "errors" - "os" -) - -type Sender interface { - Send(msg *Message) (Receiver, error) - Close() error -} - -type Receiver interface { - Receive(mode int) (*Message, error) -} - -type Message struct { - Verb Verb - Args []string - Att *os.File - Ret Sender -} - -const ( - Ret int = 1 << iota - // FIXME: use an `Att` flag to auto-close attachments by default -) - -type ReceiverFrom interface { - ReceiveFrom(Receiver) (int, error) -} - -type SenderTo interface { - SendTo(Sender) (int, error) -} - -var ( - ErrIncompatibleSender = errors.New("incompatible sender") - ErrIncompatibleReceiver = errors.New("incompatible receiver") -) - -// RetPipe is a special value for `Message.Ret`. -// When a Message is sent with `Ret=SendPipe`, the transport must -// substitute it with the writing end of a new pipe, and return the -// other end as a return value. -type retPipe struct { - NopSender -} - -var RetPipe = retPipe{} - -func (r retPipe) Equals(val Sender) bool { - if rval, ok := val.(retPipe); ok { - return rval == r - } - return false -} - -func Repeater(payload *Message) Sender { - return Handler(func(msg *Message) error { - msg.Ret.Send(payload) - return nil - }) -} - -var NotImplemented = Repeater(&Message{Verb: Error, Args: []string{"not implemented"}}) diff --git a/beam/beam_test.go b/beam/beam_test.go deleted file mode 100644 index 6d504f2ce7..0000000000 --- a/beam/beam_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package beam - -import ( - "testing" -) - -func TestModes(t *testing.T) { - if Ret == 0 { - t.Fatalf("0") - } -} - -func TestRetPipe(t *testing.T) { - var ( - shouldBeEqual = RetPipe - ) - if RetPipe != shouldBeEqual { - t.Fatalf("%#v should equal %#v", RetPipe, shouldBeEqual) - } -} diff --git a/beam/copy.go b/beam/copy.go deleted file mode 100644 index d62c03b8b4..0000000000 --- a/beam/copy.go +++ /dev/null @@ -1,38 +0,0 @@ -package beam - -import ( - "io" - "sync" -) - -func Copy(dst Sender, src Receiver) (int, error) { - var tasks sync.WaitGroup - defer tasks.Wait() - if senderTo, ok := src.(SenderTo); ok { - if n, err := senderTo.SendTo(dst); err != ErrIncompatibleSender { - return n, err - } - } - if receiverFrom, ok := dst.(ReceiverFrom); ok { - if n, err := receiverFrom.ReceiveFrom(src); err != ErrIncompatibleReceiver { - return n, err - } - } - var ( - n int - ) - for { - msg, err := src.Receive(Ret) - if err == io.EOF { - return n, nil - } - if err != nil { - return n, err - } - if _, err := dst.Send(msg); err != nil { - return n, err - } - n++ - } - return n, nil -} diff --git a/beam/data/data.go b/beam/data/data.go deleted file mode 100644 index 5ece063f51..0000000000 --- a/beam/data/data.go +++ /dev/null @@ -1,119 +0,0 @@ -package data - -import ( - "fmt" - "strconv" - "strings" -) - -func Encode(obj map[string][]string) string { - var msg string - msg += encodeHeader(0) - for k, values := range obj { - msg += encodeNamedList(k, values) - } - return msg -} - -func encodeHeader(msgtype int) string { - return fmt.Sprintf("%03.3d;", msgtype) -} - -func encodeString(s string) string { - return fmt.Sprintf("%d:%s,", len(s), s) -} - -var EncodeString = encodeString -var DecodeString = decodeString - -var EncodeList = encodeList - -func encodeList(l []string) string { - values := make([]string, 0, len(l)) - for _, s := range l { - values = append(values, encodeString(s)) - } - return encodeString(strings.Join(values, "")) -} - -func encodeNamedList(name string, l []string) string { - return encodeString(name) + encodeList(l) -} - -func Decode(msg string) (map[string][]string, error) { - msgtype, skip, err := decodeHeader(msg) - if err != nil { - return nil, err - } - if msgtype != 0 { - // FIXME: use special error type so the caller can easily ignore - return nil, fmt.Errorf("unknown message type: %d", msgtype) - } - msg = msg[skip:] - obj := make(map[string][]string) - for len(msg) > 0 { - k, skip, err := decodeString(msg) - if err != nil { - return nil, err - } - msg = msg[skip:] - values, skip, err := decodeList(msg) - if err != nil { - return nil, err - } - msg = msg[skip:] - obj[k] = values - } - return obj, nil -} - -var DecodeList = decodeList - -func decodeList(msg string) ([]string, int, error) { - blob, skip, err := decodeString(msg) - if err != nil { - return nil, 0, err - } - var l []string - for len(blob) > 0 { - v, skipv, err := decodeString(blob) - if err != nil { - return nil, 0, err - } - l = append(l, v) - blob = blob[skipv:] - } - return l, skip, nil -} - -func decodeString(msg string) (string, int, error) { - parts := strings.SplitN(msg, ":", 2) - if len(parts) != 2 { - return "", 0, fmt.Errorf("invalid format: no column") - } - var length int - if l, err := strconv.ParseUint(parts[0], 10, 64); err != nil { - return "", 0, err - } else { - length = int(l) - } - if len(parts[1]) < length+1 { - return "", 0, fmt.Errorf("message '%s' is %d bytes, expected at least %d", parts[1], len(parts[1]), length+1) - } - payload := parts[1][:length+1] - if payload[length] != ',' { - return "", 0, fmt.Errorf("message is not comma-terminated") - } - return payload[:length], len(parts[0]) + 1 + length + 1, nil -} - -func decodeHeader(msg string) (int, int, error) { - if len(msg) < 4 { - return 0, 0, fmt.Errorf("message too small") - } - msgtype, err := strconv.ParseInt(msg[:3], 10, 32) - if err != nil { - return 0, 0, err - } - return int(msgtype), 4, nil -} diff --git a/beam/data/data_test.go b/beam/data/data_test.go deleted file mode 100644 index 9059922b3b..0000000000 --- a/beam/data/data_test.go +++ /dev/null @@ -1,129 +0,0 @@ -package data - -import ( - "strings" - "testing" -) - -func TestEncodeHelloWorld(t *testing.T) { - input := "hello world!" - output := encodeString(input) - expectedOutput := "12:hello world!," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeEmptyString(t *testing.T) { - input := "" - output := encodeString(input) - expectedOutput := "0:," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeEmptyList(t *testing.T) { - input := []string{} - output := encodeList(input) - expectedOutput := "0:," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeEmptyMap(t *testing.T) { - input := make(map[string][]string) - output := Encode(input) - expectedOutput := "000;" - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncode1Key1Value(t *testing.T) { - input := make(map[string][]string) - input["hello"] = []string{"world"} - output := Encode(input) - expectedOutput := "000;5:hello,8:5:world,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncode1Key2Value(t *testing.T) { - input := make(map[string][]string) - input["hello"] = []string{"beautiful", "world"} - output := Encode(input) - expectedOutput := "000;5:hello,20:9:beautiful,5:world,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeEmptyValue(t *testing.T) { - input := make(map[string][]string) - input["foo"] = []string{} - output := Encode(input) - expectedOutput := "000;3:foo,0:," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeBinaryKey(t *testing.T) { - input := make(map[string][]string) - input["foo\x00bar\x7f"] = []string{} - output := Encode(input) - expectedOutput := "000;8:foo\x00bar\x7f,0:," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeBinaryValue(t *testing.T) { - input := make(map[string][]string) - input["foo\x00bar\x7f"] = []string{"\x01\x02\x03\x04"} - output := Encode(input) - expectedOutput := "000;8:foo\x00bar\x7f,7:4:\x01\x02\x03\x04,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestDecodeString(t *testing.T) { - validEncodedStrings := []struct { - input string - output string - skip int - }{ - {"3:foo,", "foo", 6}, - {"5:hello,", "hello", 8}, - {"5:hello,5:world,", "hello", 8}, - } - for _, sample := range validEncodedStrings { - output, skip, err := decodeString(sample.input) - if err != nil { - t.Fatalf("error decoding '%v': %v", sample.input, err) - } - if skip != sample.skip { - t.Fatalf("invalid skip: %v!=%v", skip, sample.skip) - } - if output != sample.output { - t.Fatalf("invalid output: %v!=%v", output, sample.output) - } - } -} - -func TestDecode1Key1Value(t *testing.T) { - input := "000;3:foo,6:3:bar,," - output, err := Decode(input) - if err != nil { - t.Fatal(err) - } - if v, exists := output["foo"]; !exists { - t.Fatalf("wrong output: %v\n", output) - } else if len(v) != 1 || strings.Join(v, "") != "bar" { - t.Fatalf("wrong output: %v\n", output) - } -} diff --git a/beam/data/message.go b/beam/data/message.go deleted file mode 100644 index 193fb7b241..0000000000 --- a/beam/data/message.go +++ /dev/null @@ -1,93 +0,0 @@ -package data - -import ( - "fmt" - "strings" -) - -type Message string - -func Empty() Message { - return Message(Encode(nil)) -} - -func Parse(args []string) Message { - data := make(map[string][]string) - for _, word := range args { - if strings.Contains(word, "=") { - kv := strings.SplitN(word, "=", 2) - key := kv[0] - var val string - if len(kv) == 2 { - val = kv[1] - } - data[key] = []string{val} - } - } - return Message(Encode(data)) -} - -func (m Message) Add(k, v string) Message { - data, err := Decode(string(m)) - if err != nil { - return m - } - if values, exists := data[k]; exists { - data[k] = append(values, v) - } else { - data[k] = []string{v} - } - return Message(Encode(data)) -} - -func (m Message) Set(k string, v ...string) Message { - data, err := Decode(string(m)) - if err != nil { - panic(err) - return m - } - data[k] = v - return Message(Encode(data)) -} - -func (m Message) Del(k string) Message { - data, err := Decode(string(m)) - if err != nil { - panic(err) - return m - } - delete(data, k) - return Message(Encode(data)) -} - -func (m Message) Get(k string) []string { - data, err := Decode(string(m)) - if err != nil { - return nil - } - v, exists := data[k] - if !exists { - return nil - } - return v -} - -func (m Message) Pretty() string { - data, err := Decode(string(m)) - if err != nil { - return "" - } - entries := make([]string, 0, len(data)) - for k, values := range data { - entries = append(entries, fmt.Sprintf("%s=%s", k, strings.Join(values, ","))) - } - return strings.Join(entries, " ") -} - -func (m Message) String() string { - return string(m) -} - -func (m Message) Bytes() []byte { - return []byte(m) -} diff --git a/beam/data/message_test.go b/beam/data/message_test.go deleted file mode 100644 index 7685769069..0000000000 --- a/beam/data/message_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package data - -import ( - "testing" -) - -func TestEmptyMessage(t *testing.T) { - m := Empty() - if m.String() != Encode(nil) { - t.Fatalf("%v != %v", m.String(), Encode(nil)) - } -} - -func TestSetMessage(t *testing.T) { - m := Empty().Set("foo", "bar") - output := m.String() - expectedOutput := "000;3:foo,6:3:bar,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } - decodedOutput, err := Decode(output) - if err != nil { - t.Fatal(err) - } - if len(decodedOutput) != 1 { - t.Fatalf("wrong output data: %#v\n", decodedOutput) - } -} - -func TestSetMessageTwice(t *testing.T) { - m := Empty().Set("foo", "bar").Set("ga", "bu") - output := m.String() - expectedOutput := "000;3:foo,6:3:bar,,2:ga,5:2:bu,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } - decodedOutput, err := Decode(output) - if err != nil { - t.Fatal(err) - } - if len(decodedOutput) != 2 { - t.Fatalf("wrong output data: %#v\n", decodedOutput) - } -} - -func TestSetDelMessage(t *testing.T) { - m := Empty().Set("foo", "bar").Del("foo") - output := m.String() - expectedOutput := Encode(nil) - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} diff --git a/beam/data/netstring.txt b/beam/data/netstring.txt deleted file mode 100644 index 17560929b6..0000000000 --- a/beam/data/netstring.txt +++ /dev/null @@ -1,92 +0,0 @@ -## -## Netstrings spec copied as-is from http://cr.yp.to/proto/netstrings.txt -## - -Netstrings -D. J. Bernstein, djb@pobox.com -19970201 - - -1. Introduction - - A netstring is a self-delimiting encoding of a string. Netstrings are - very easy to generate and to parse. Any string may be encoded as a - netstring; there are no restrictions on length or on allowed bytes. - Another virtue of a netstring is that it declares the string size up - front. Thus an application can check in advance whether it has enough - space to store the entire string. - - Netstrings may be used as a basic building block for reliable network - protocols. Most high-level protocols, in effect, transmit a sequence - of strings; those strings may be encoded as netstrings and then - concatenated into a sequence of characters, which in turn may be - transmitted over a reliable stream protocol such as TCP. - - Note that netstrings can be used recursively. The result of encoding - a sequence of strings is a single string. A series of those encoded - strings may in turn be encoded into a single string. And so on. - - In this document, a string of 8-bit bytes may be written in two - different forms: as a series of hexadecimal numbers between angle - brackets, or as a sequence of ASCII characters between double quotes. - For example, <68 65 6c 6c 6f 20 77 6f 72 6c 64 21> is a string of - length 12; it is the same as the string "hello world!". - - Although this document restricts attention to strings of 8-bit bytes, - netstrings could be used with any 6-bit-or-larger character set. - - -2. Definition - - Any string of 8-bit bytes may be encoded as [len]":"[string]",". - Here [string] is the string and [len] is a nonempty sequence of ASCII - digits giving the length of [string] in decimal. The ASCII digits are - <30> for 0, <31> for 1, and so on up through <39> for 9. Extra zeros - at the front of [len] are prohibited: [len] begins with <30> exactly - when [string] is empty. - - For example, the string "hello world!" is encoded as <31 32 3a 68 - 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c>, i.e., "12:hello world!,". The - empty string is encoded as "0:,". - - [len]":"[string]"," is called a netstring. [string] is called the - interpretation of the netstring. - - -3. Sample code - - The following C code starts with a buffer buf of length len and - prints it as a netstring. - - if (printf("%lu:",len) < 0) barf(); - if (fwrite(buf,1,len,stdout) < len) barf(); - if (putchar(',') < 0) barf(); - - The following C code reads a netstring and decodes it into a - dynamically allocated buffer buf of length len. - - if (scanf("%9lu",&len) < 1) barf(); /* >999999999 bytes is bad */ - if (getchar() != ':') barf(); - buf = malloc(len + 1); /* malloc(0) is not portable */ - if (!buf) barf(); - if (fread(buf,1,len,stdin) < len) barf(); - if (getchar() != ',') barf(); - - Both of these code fragments assume that the local character set is - ASCII, and that the relevant stdio streams are in binary mode. - - -4. Security considerations - - The famous Finger security hole may be blamed on Finger's use of the - CRLF encoding. In that encoding, each string is simply terminated by - CRLF. This encoding has several problems. Most importantly, it does - not declare the string size in advance. This means that a correct - CRLF parser must be prepared to ask for more and more memory as it is - reading the string. In the case of Finger, a lazy implementor found - this to be too much trouble; instead he simply declared a fixed-size - buffer and used C's gets() function. The rest is history. - - In contrast, as the above sample code shows, it is very easy to - handle netstrings without risking buffer overflow. Thus widespread - use of netstrings may improve network security. diff --git a/beam/examples/beamsh/beamsh b/beam/examples/beamsh/beamsh deleted file mode 100755 index 9bfe78ef4aead557147a211abaec817e8193dcdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6054492 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­%K&_J-R<1vsD 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�x};E%wt&o-$}$do!EWJm(h-Bj&A9YC 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

<`UIVfs`|(t-&`JNkJC+J!&_&LU5T!TV35 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 z zpL@vE=a3*fpONn%K2$w@>R{?>9sfV|wba$sYR08ZbHB_S@GxWk1Mbh@J2(6�+LB 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%0DQD(>1HgIN(JUG#v=|He*w`dxr@vu7~yq9 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 z%0A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

NSVAxxh^TEsw+ETd6rky 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Ύ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 z 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 z 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 z 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�<=>jc4S>%GE*E8PYD_ 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 z�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%0D|G|MS6D7%;9RhB64;3^ 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 z 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 JBqP3Op*z81Zv$U%93}`)l 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%0ATM5``rVH(xp_Yhc>ZdN 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 z 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 diff --git a/beam/examples/beamsh/beamsh.go b/beam/examples/beamsh/beamsh.go deleted file mode 100644 index 808f038c68..0000000000 --- a/beam/examples/beamsh/beamsh.go +++ /dev/null @@ -1,542 +0,0 @@ -package main - -import ( - "bufio" - "flag" - "fmt" - "github.com/dotcloud/docker/pkg/beam" - "github.com/dotcloud/docker/pkg/beam/data" - "github.com/dotcloud/docker/pkg/dockerscript" - "github.com/dotcloud/docker/pkg/term" - "io" - "net" - "net/url" - "os" - "path" - "strings" - "sync" -) - -var rootPlugins = []string{ - "stdio", -} - -var ( - flX bool - flPing bool - introspect beam.ReceiveSender = beam.Devnull() -) - -func main() { - fd3 := os.NewFile(3, "beam-introspect") - if introsp, err := beam.FileConn(fd3); err == nil { - introspect = introsp - Logf("introspection enabled\n") - } else { - Logf("introspection disabled\n") - } - fd3.Close() - flag.BoolVar(&flX, "x", false, "print commands as they are being executed") - flag.Parse() - if flag.NArg() == 0 { - if term.IsTerminal(0) { - // No arguments, stdin is terminal --> interactive mode - input := bufio.NewScanner(os.Stdin) - for { - fmt.Printf("[%d] beamsh> ", os.Getpid()) - if !input.Scan() { - break - } - line := input.Text() - if len(line) != 0 { - cmd, err := dockerscript.Parse(strings.NewReader(line)) - if err != nil { - fmt.Fprintf(os.Stderr, "error: %v\n", err) - continue - } - if err := executeRootScript(cmd); err != nil { - Fatal(err) - } - } - if err := input.Err(); err == io.EOF { - break - } else if err != nil { - Fatal(err) - } - } - } else { - // No arguments, stdin not terminal --> batch mode - script, err := dockerscript.Parse(os.Stdin) - if err != nil { - Fatal("parse error: %v\n", err) - } - if err := executeRootScript(script); err != nil { - Fatal(err) - } - } - } else { - // 1+ arguments: parse them as script files - for _, scriptpath := range flag.Args() { - f, err := os.Open(scriptpath) - if err != nil { - Fatal(err) - } - script, err := dockerscript.Parse(f) - if err != nil { - Fatal("parse error: %v\n", err) - } - if err := executeRootScript(script); err != nil { - Fatal(err) - } - } - } -} - -func executeRootScript(script []*dockerscript.Command) error { - if len(rootPlugins) > 0 { - // If there are root plugins, wrap the script inside them - var ( - rootCmd *dockerscript.Command - lastCmd *dockerscript.Command - ) - for _, plugin := range rootPlugins { - pluginCmd := &dockerscript.Command{ - Args: []string{plugin}, - } - if rootCmd == nil { - rootCmd = pluginCmd - } else { - lastCmd.Children = []*dockerscript.Command{pluginCmd} - } - lastCmd = pluginCmd - } - lastCmd.Children = script - script = []*dockerscript.Command{rootCmd} - } - handlers, err := Handlers(introspect) - if err != nil { - return err - } - defer handlers.Close() - var tasks sync.WaitGroup - defer func() { - Debugf("Waiting for introspection...\n") - tasks.Wait() - Debugf("DONE Waiting for introspection\n") - }() - if introspect != nil { - tasks.Add(1) - go func() { - Debugf("starting introspection\n") - defer Debugf("done with introspection\n") - defer tasks.Done() - introspect.Send(data.Empty().Set("cmd", "log", "stdout").Set("message", "introspection worked!").Bytes(), nil) - Debugf("XXX starting reading introspection messages\n") - r := beam.NewRouter(handlers) - r.NewRoute().All().Handler(func(p []byte, a *os.File) error { - Logf("[INTROSPECTION] %s\n", beam.MsgDesc(p, a)) - return handlers.Send(p, a) - }) - n, err := beam.Copy(r, introspect) - Debugf("XXX done reading %d introspection messages: %v\n", n, err) - }() - } - if err := executeScript(handlers, script); err != nil { - return err - } - return nil -} - -func executeScript(out beam.Sender, script []*dockerscript.Command) error { - Debugf("executeScript(%s)\n", scriptString(script)) - defer Debugf("executeScript(%s) DONE\n", scriptString(script)) - var background sync.WaitGroup - defer background.Wait() - for _, cmd := range script { - if cmd.Background { - background.Add(1) - go func(out beam.Sender, cmd *dockerscript.Command) { - executeCommand(out, cmd) - background.Done() - }(out, cmd) - } else { - if err := executeCommand(out, cmd); err != nil { - return err - } - } - } - return nil -} - -// 1) Find a handler for the command (if no handler, fail) -// 2) Attach new in & out pair to the handler -// 3) [in the background] Copy handler output to our own output -// 4) [in the background] Run the handler -// 5) Recursively executeScript() all children commands and wait for them to complete -// 6) Wait for handler to return and (shortly afterwards) output copy to complete -// 7) Profit -func executeCommand(out beam.Sender, cmd *dockerscript.Command) error { - if flX { - fmt.Printf("+ %v\n", strings.Replace(strings.TrimRight(cmd.String(), "\n"), "\n", "\n+ ", -1)) - } - Debugf("executeCommand(%s)\n", strings.Join(cmd.Args, " ")) - defer Debugf("executeCommand(%s) DONE\n", strings.Join(cmd.Args, " ")) - if len(cmd.Args) == 0 { - return fmt.Errorf("empty command") - } - Debugf("[executeCommand] sending job '%s'\n", strings.Join(cmd.Args, " ")) - job, err := beam.SendConn(out, data.Empty().Set("cmd", cmd.Args...).Set("type", "job").Bytes()) - if err != nil { - return fmt.Errorf("%v\n", err) - } - var tasks sync.WaitGroup - tasks.Add(1) - Debugf("[executeCommand] spawning background copy of the output of '%s'\n", strings.Join(cmd.Args, " ")) - go func() { - if out != nil { - Debugf("[executeCommand] background copy of the output of '%s'\n", strings.Join(cmd.Args, " ")) - n, err := beam.Copy(out, job) - if err != nil { - Fatalf("[executeCommand] [%s] error during background copy: %v\n", strings.Join(cmd.Args, " "), err) - } - Debugf("[executeCommand] background copy done of the output of '%s': copied %d messages\n", strings.Join(cmd.Args, " "), n) - } - tasks.Done() - }() - // depth-first execution of children commands - // executeScript() blocks until all commands are completed - Debugf("[executeCommand] recursively running children of '%s'\n", strings.Join(cmd.Args, " ")) - executeScript(job, cmd.Children) - Debugf("[executeCommand] DONE recursively running children of '%s'\n", strings.Join(cmd.Args, " ")) - job.CloseWrite() - Debugf("[executeCommand] closing the input of '%s' (all children are completed)\n", strings.Join(cmd.Args, " ")) - Debugf("[executeCommand] waiting for background copy of '%s' to complete...\n", strings.Join(cmd.Args, " ")) - tasks.Wait() - Debugf("[executeCommand] background copy of '%s' complete! This means the job completed.\n", strings.Join(cmd.Args, " ")) - return nil -} - -type Handler func([]string, io.Writer, io.Writer, beam.Receiver, beam.Sender) - -func Handlers(sink beam.Sender) (*beam.UnixConn, error) { - var tasks sync.WaitGroup - pub, priv, err := beam.USocketPair() - if err != nil { - return nil, err - } - go func() { - defer func() { - Debugf("[handlers] closewrite() on endpoint\n") - // FIXME: this is not yet necessary but will be once - // there is synchronization over standard beam messages - priv.CloseWrite() - Debugf("[handlers] done closewrite() on endpoint\n") - }() - r := beam.NewRouter(sink) - r.NewRoute().HasAttachment().KeyIncludes("type", "job").Handler(func(payload []byte, attachment *os.File) error { - conn, err := beam.FileConn(attachment) - if err != nil { - attachment.Close() - return err - } - // attachment.Close() - tasks.Add(1) - go func() { - defer tasks.Done() - defer func() { - Debugf("[handlers] '%s' closewrite\n", payload) - conn.CloseWrite() - Debugf("[handlers] '%s' done closewrite\n", payload) - }() - cmd := data.Message(payload).Get("cmd") - Debugf("[handlers] received %s\n", strings.Join(cmd, " ")) - if len(cmd) == 0 { - return - } - handler := GetHandler(cmd[0]) - if handler == nil { - return - } - stdout, err := beam.SendRPipe(conn, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", cmd...).Bytes()) - if err != nil { - return - } - defer stdout.Close() - stderr, err := beam.SendRPipe(conn, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", cmd...).Bytes()) - if err != nil { - return - } - defer stderr.Close() - Debugf("[handlers] calling %s\n", strings.Join(cmd, " ")) - handler(cmd, stdout, stderr, beam.Receiver(conn), beam.Sender(conn)) - Debugf("[handlers] returned: %s\n", strings.Join(cmd, " ")) - }() - return nil - }) - beam.Copy(r, priv) - Debugf("[handlers] waiting for all tasks\n") - tasks.Wait() - Debugf("[handlers] all tasks returned\n") - }() - return pub, nil -} - -func GetHandler(name string) Handler { - if name == "logger" { - return CmdLogger - } else if name == "render" { - return CmdRender - } else if name == "devnull" { - return CmdDevnull - } else if name == "prompt" { - return CmdPrompt - } else if name == "stdio" { - return CmdStdio - } else if name == "echo" { - return CmdEcho - } else if name == "pass" { - return CmdPass - } else if name == "in" { - return CmdIn - } else if name == "exec" { - return CmdExec - } else if name == "trace" { - return CmdTrace - } else if name == "emit" { - return CmdEmit - } else if name == "print" { - return CmdPrint - } else if name == "multiprint" { - return CmdMultiprint - } else if name == "listen" { - return CmdListen - } else if name == "beamsend" { - return CmdBeamsend - } else if name == "beamreceive" { - return CmdBeamreceive - } else if name == "connect" { - return CmdConnect - } else if name == "openfile" { - return CmdOpenfile - } else if name == "spawn" { - return CmdSpawn - } else if name == "chdir" { - return CmdChdir - } - return nil -} - -// VARIOUS HELPER FUNCTIONS: - -func connToFile(conn net.Conn) (f *os.File, err error) { - if connWithFile, ok := conn.(interface { - File() (*os.File, error) - }); !ok { - return nil, fmt.Errorf("no file descriptor available") - } else { - f, err = connWithFile.File() - if err != nil { - return nil, err - } - } - return f, err -} - -type Msg struct { - payload []byte - attachment *os.File -} - -func Logf(msg string, args ...interface{}) (int, error) { - if len(msg) == 0 || msg[len(msg)-1] != '\n' { - msg = msg + "\n" - } - msg = fmt.Sprintf("[%v] [%v] %s", os.Getpid(), path.Base(os.Args[0]), msg) - return fmt.Printf(msg, args...) -} - -func Debugf(msg string, args ...interface{}) { - if os.Getenv("BEAMDEBUG") != "" { - Logf(msg, args...) - } -} - -func Fatalf(msg string, args ...interface{}) { - Logf(msg, args...) - os.Exit(1) -} - -func Fatal(args ...interface{}) { - Fatalf("%v", args[0]) -} - -func scriptString(script []*dockerscript.Command) string { - lines := make([]string, 0, len(script)) - for _, cmd := range script { - line := strings.Join(cmd.Args, " ") - if len(cmd.Children) > 0 { - line += fmt.Sprintf(" { %s }", scriptString(cmd.Children)) - } else { - line += " {}" - } - lines = append(lines, line) - } - return fmt.Sprintf("'%s'", strings.Join(lines, "; ")) -} - -func dialer(addr string) (chan net.Conn, error) { - u, err := url.Parse(addr) - if err != nil { - return nil, err - } - connections := make(chan net.Conn) - go func() { - defer close(connections) - for { - conn, err := net.Dial(u.Scheme, u.Host) - if err != nil { - return - } - connections <- conn - } - }() - return connections, nil -} - -func listener(addr string) (chan net.Conn, error) { - u, err := url.Parse(addr) - if err != nil { - return nil, err - } - l, err := net.Listen(u.Scheme, u.Host) - if err != nil { - return nil, err - } - connections := make(chan net.Conn) - go func() { - defer close(connections) - for { - conn, err := l.Accept() - if err != nil { - return - } - Logf("new connection\n") - connections <- conn - } - }() - return connections, nil -} - -func SendToConn(connections chan net.Conn, src beam.Receiver) error { - var tasks sync.WaitGroup - defer tasks.Wait() - for { - payload, attachment, err := src.Receive() - if err == io.EOF { - return nil - } else if err != nil { - return err - } - conn, ok := <-connections - if !ok { - break - } - Logf("Sending %s\n", msgDesc(payload, attachment)) - tasks.Add(1) - go func(payload []byte, attachment *os.File, conn net.Conn) { - defer tasks.Done() - if _, err := conn.Write([]byte(data.EncodeString(string(payload)))); err != nil { - return - } - if attachment == nil { - conn.Close() - return - } - var iotasks sync.WaitGroup - iotasks.Add(2) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - Debugf("copying the connection to [%d]\n", attachment.Fd()) - io.Copy(attachment, conn) - attachment.Close() - Debugf("done copying the connection to [%d]\n", attachment.Fd()) - }(attachment, conn) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - Debugf("copying [%d] to the connection\n", attachment.Fd()) - io.Copy(conn, attachment) - conn.Close() - Debugf("done copying [%d] to the connection\n", attachment.Fd()) - }(attachment, conn) - iotasks.Wait() - }(payload, attachment, conn) - } - return nil -} - -func msgDesc(payload []byte, attachment *os.File) string { - return beam.MsgDesc(payload, attachment) -} - -func ReceiveFromConn(connections chan net.Conn, dst beam.Sender) error { - for conn := range connections { - err := func() error { - Logf("parsing message from network...\n") - defer Logf("done parsing message from network\n") - buf := make([]byte, 4098) - n, err := conn.Read(buf) - if n == 0 { - conn.Close() - if err == io.EOF { - return nil - } else { - return err - } - } - Logf("decoding message from '%s'\n", buf[:n]) - header, skip, err := data.DecodeString(string(buf[:n])) - if err != nil { - conn.Close() - return err - } - pub, priv, err := beam.SocketPair() - if err != nil { - return err - } - Logf("decoded message: %s\n", data.Message(header).Pretty()) - go func(skipped []byte, conn net.Conn, f *os.File) { - // this closes both conn and f - if len(skipped) > 0 { - if _, err := f.Write(skipped); err != nil { - Logf("ERROR: %v\n", err) - f.Close() - conn.Close() - return - } - } - bicopy(conn, f) - }(buf[skip:n], conn, pub) - if err := dst.Send([]byte(header), priv); err != nil { - return err - } - return nil - }() - if err != nil { - Logf("Error reading from connection: %v\n", err) - } - } - return nil -} - -func bicopy(a, b io.ReadWriteCloser) { - var iotasks sync.WaitGroup - oneCopy := func(dst io.WriteCloser, src io.Reader) { - defer iotasks.Done() - io.Copy(dst, src) - dst.Close() - } - iotasks.Add(2) - go oneCopy(a, b) - go oneCopy(b, a) - iotasks.Wait() -} diff --git a/beam/examples/beamsh/builtins.go b/beam/examples/beamsh/builtins.go deleted file mode 100644 index 3242237cc1..0000000000 --- a/beam/examples/beamsh/builtins.go +++ /dev/null @@ -1,441 +0,0 @@ -package main - -import ( - "bufio" - "fmt" - "github.com/dotcloud/docker/pkg/beam" - "github.com/dotcloud/docker/pkg/beam/data" - "github.com/dotcloud/docker/pkg/term" - "github.com/dotcloud/docker/utils" - "io" - "net" - "net/url" - "os" - "os/exec" - "path" - "strings" - "sync" - "text/template" -) - -func CmdLogger(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if err := os.MkdirAll("logs", 0700); err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - var tasks sync.WaitGroup - defer tasks.Wait() - var n int = 1 - r := beam.NewRouter(out) - r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func(payload []byte, attachment *os.File) error { - tasks.Add(1) - go func(n int) { - defer tasks.Done() - defer attachment.Close() - var streamname string - if cmd := data.Message(payload).Get("cmd"); len(cmd) == 1 || cmd[1] == "stdout" { - streamname = "stdout" - } else { - streamname = cmd[1] - } - if fromcmd := data.Message(payload).Get("fromcmd"); len(fromcmd) != 0 { - streamname = fmt.Sprintf("%s-%s", strings.Replace(strings.Join(fromcmd, "_"), "/", "_", -1), streamname) - } - logfile, err := os.OpenFile(path.Join("logs", fmt.Sprintf("%d-%s", n, streamname)), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0700) - if err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - defer logfile.Close() - io.Copy(logfile, attachment) - logfile.Sync() - }(n) - n++ - return nil - }).Tee(out) - if _, err := beam.Copy(r, in); err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } -} - -func CmdRender(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - fmt.Fprintf(stderr, "Usage: %s FORMAT\n", args[0]) - out.Send(data.Empty().Set("status", "1").Bytes(), nil) - return - } - txt := args[1] - if !strings.HasSuffix(txt, "\n") { - txt += "\n" - } - t := template.Must(template.New("render").Parse(txt)) - for { - payload, attachment, err := in.Receive() - if err != nil { - return - } - msg, err := data.Decode(string(payload)) - if err != nil { - fmt.Fprintf(stderr, "decode error: %v\n") - } - if err := t.Execute(stdout, msg); err != nil { - fmt.Fprintf(stderr, "rendering error: %v\n", err) - out.Send(data.Empty().Set("status", "1").Bytes(), nil) - return - } - if err := out.Send(payload, attachment); err != nil { - return - } - } -} - -func CmdDevnull(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - _, attachment, err := in.Receive() - if err != nil { - return - } - if attachment != nil { - attachment.Close() - } - } -} - -func CmdPrompt(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) < 2 { - fmt.Fprintf(stderr, "usage: %s PROMPT...\n", args[0]) - return - } - if !term.IsTerminal(0) { - fmt.Fprintf(stderr, "can't prompt: no tty available...\n") - return - } - fmt.Printf("%s: ", strings.Join(args[1:], " ")) - oldState, _ := term.SaveState(0) - term.DisableEcho(0, oldState) - line, _, err := bufio.NewReader(os.Stdin).ReadLine() - if err != nil { - fmt.Fprintln(stderr, err.Error()) - return - } - val := string(line) - fmt.Printf("\n") - term.RestoreTerminal(0, oldState) - out.Send(data.Empty().Set("fromcmd", args...).Set("value", val).Bytes(), nil) -} - -func CmdStdio(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - var tasks sync.WaitGroup - defer tasks.Wait() - - r := beam.NewRouter(out) - r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func(payload []byte, attachment *os.File) error { - tasks.Add(1) - go func() { - defer tasks.Done() - defer attachment.Close() - io.Copy(os.Stdout, attachment) - attachment.Close() - }() - return nil - }).Tee(out) - - if _, err := beam.Copy(r, in); err != nil { - Fatal(err) - fmt.Fprintf(stderr, "%v\n", err) - return - } -} - -func CmdEcho(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - fmt.Fprintln(stdout, strings.Join(args[1:], " ")) -} - -func CmdPass(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - payload, attachment, err := in.Receive() - if err != nil { - return - } - if err := out.Send(payload, attachment); err != nil { - if attachment != nil { - attachment.Close() - } - return - } - } -} - -func CmdSpawn(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - c := exec.Command(utils.SelfPath()) - r, w, err := os.Pipe() - if err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - c.Stdin = r - c.Stdout = stdout - c.Stderr = stderr - go func() { - fmt.Fprintf(w, strings.Join(args[1:], " ")) - w.Sync() - w.Close() - }() - if err := c.Run(); err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } -} - -func CmdIn(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - os.Chdir(args[1]) - GetHandler("pass")([]string{"pass"}, stdout, stderr, in, out) -} - -func CmdExec(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - cmd := exec.Command(args[1], args[2:]...) - cmd.Stdout = stdout - cmd.Stderr = stderr - //cmd.Stdin = os.Stdin - local, remote, err := beam.SocketPair() - if err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - child, err := beam.FileConn(local) - if err != nil { - local.Close() - remote.Close() - fmt.Fprintf(stderr, "%v\n", err) - return - } - local.Close() - cmd.ExtraFiles = append(cmd.ExtraFiles, remote) - - var tasks sync.WaitGroup - tasks.Add(1) - go func() { - defer Debugf("done copying to child\n") - defer tasks.Done() - defer child.CloseWrite() - beam.Copy(child, in) - }() - - tasks.Add(1) - go func() { - defer Debugf("done copying from child %d\n") - defer tasks.Done() - r := beam.NewRouter(out) - r.NewRoute().All().Handler(func(p []byte, a *os.File) error { - return out.Send(data.Message(p).Set("pid", fmt.Sprintf("%d", cmd.Process.Pid)).Bytes(), a) - }) - beam.Copy(r, child) - }() - execErr := cmd.Run() - // We can close both ends of the socket without worrying about data stuck in the buffer, - // because unix socket writes are fully synchronous. - child.Close() - tasks.Wait() - var status string - if execErr != nil { - status = execErr.Error() - } else { - status = "ok" - } - out.Send(data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) -} - -func CmdTrace(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - r := beam.NewRouter(out) - r.NewRoute().All().Handler(func(payload []byte, attachment *os.File) error { - var sfd string = "nil" - if attachment != nil { - sfd = fmt.Sprintf("%d", attachment.Fd()) - } - fmt.Printf("===> %s [%s]\n", data.Message(payload).Pretty(), sfd) - out.Send(payload, attachment) - return nil - }) - beam.Copy(r, in) -} - -func CmdEmit(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - out.Send(data.Parse(args[1:]).Bytes(), nil) -} - -func CmdPrint(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - payload, a, err := in.Receive() - if err != nil { - return - } - // Skip commands - if a != nil && data.Message(payload).Get("cmd") == nil { - dup, err := beam.SendRPipe(out, payload) - if err != nil { - a.Close() - return - } - io.Copy(io.MultiWriter(os.Stdout, dup), a) - dup.Close() - } else { - if err := out.Send(payload, a); err != nil { - return - } - } - } -} - -func CmdMultiprint(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - var tasks sync.WaitGroup - defer tasks.Wait() - r := beam.NewRouter(out) - multiprint := func(p []byte, a *os.File) error { - tasks.Add(1) - go func() { - defer tasks.Done() - defer a.Close() - msg := data.Message(string(p)) - input := bufio.NewScanner(a) - for input.Scan() { - fmt.Printf("[%s] %s\n", msg.Pretty(), input.Text()) - } - }() - return nil - } - r.NewRoute().KeyIncludes("type", "job").Passthrough(out) - r.NewRoute().HasAttachment().Handler(multiprint).Tee(out) - beam.Copy(r, in) -} - -func CmdListen(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) - return - } - u, err := url.Parse(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - l, err := net.Listen(u.Scheme, u.Host) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - for { - conn, err := l.Accept() - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - f, err := connToFile(conn) - if err != nil { - conn.Close() - continue - } - out.Send(data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) - } -} - -func CmdBeamsend(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) < 2 { - if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { - Fatal(err) - } - return - } - var connector func(string) (chan net.Conn, error) - connector = dialer - connections, err := connector(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - // Copy in to conn - SendToConn(connections, in) -} - -func CmdBeamreceive(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { - Fatal(err) - } - return - } - var connector func(string) (chan net.Conn, error) - connector = listener - connections, err := connector(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - // Copy in to conn - ReceiveFromConn(connections, out) -} - -func CmdConnect(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) - return - } - u, err := url.Parse(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - var tasks sync.WaitGroup - for { - _, attachment, err := in.Receive() - if err != nil { - break - } - if attachment == nil { - continue - } - Logf("connecting to %s/%s\n", u.Scheme, u.Host) - conn, err := net.Dial(u.Scheme, u.Host) - if err != nil { - out.Send(data.Empty().Set("cmd", "msg", "connect error: "+err.Error()).Bytes(), nil) - return - } - out.Send(data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) - tasks.Add(1) - go func(attachment *os.File, conn net.Conn) { - defer tasks.Done() - // even when successful, conn.File() returns a duplicate, - // so we must close the original - var iotasks sync.WaitGroup - iotasks.Add(2) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - io.Copy(attachment, conn) - }(attachment, conn) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - io.Copy(conn, attachment) - }(attachment, conn) - iotasks.Wait() - conn.Close() - attachment.Close() - }(attachment, conn) - } - tasks.Wait() -} - -func CmdOpenfile(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for _, name := range args { - f, err := os.Open(name) - if err != nil { - continue - } - if err := out.Send(data.Empty().Set("path", name).Set("type", "file").Bytes(), f); err != nil { - f.Close() - } - } -} - -func CmdChdir(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - os.Chdir(args[1]) -} diff --git a/beam/examples/beamsh/scripts/bug0.ds b/beam/examples/beamsh/scripts/bug0.ds deleted file mode 100755 index 89b75230be..0000000000 --- a/beam/examples/beamsh/scripts/bug0.ds +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env beamsh - -exec ls -l diff --git a/beam/examples/beamsh/scripts/bug1.ds b/beam/examples/beamsh/scripts/bug1.ds deleted file mode 100755 index 2d8a9e2ed9..0000000000 --- a/beam/examples/beamsh/scripts/bug1.ds +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env beamsh - -trace { - exec ls -l -} diff --git a/beam/examples/beamsh/scripts/bug2.ds b/beam/examples/beamsh/scripts/bug2.ds deleted file mode 100755 index 08f0431f68..0000000000 --- a/beam/examples/beamsh/scripts/bug2.ds +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env beamsh - -trace { - stdio { - exec ls -l - } -} diff --git a/beam/examples/beamsh/scripts/bug3.ds b/beam/examples/beamsh/scripts/bug3.ds deleted file mode 100755 index 7bb8694d49..0000000000 --- a/beam/examples/beamsh/scripts/bug3.ds +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env beamsh -x - -trace outer { - # stdio fails - stdio { - trace inner { - exec ls -l - } - } -} diff --git a/beam/examples/beamsh/scripts/bug4.ds b/beam/examples/beamsh/scripts/bug4.ds deleted file mode 100755 index b7beedbae2..0000000000 --- a/beam/examples/beamsh/scripts/bug4.ds +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env beamsh - -stdio { - trace { - stdio { - exec ls -l - } - } -} diff --git a/beam/examples/beamsh/scripts/bug5.ds b/beam/examples/beamsh/scripts/bug5.ds deleted file mode 100755 index 9f9a85515d..0000000000 --- a/beam/examples/beamsh/scripts/bug5.ds +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env beamsh - -stdio { - # exec fails - exec ls -l -} diff --git a/beam/examples/beamsh/scripts/bug6.ds b/beam/examples/beamsh/scripts/bug6.ds deleted file mode 100755 index 90281401cd..0000000000 --- a/beam/examples/beamsh/scripts/bug6.ds +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env beamsh - -stdio { - trace { - echo hello - } -} diff --git a/beam/examples/beamsh/scripts/bug7.ds b/beam/examples/beamsh/scripts/bug7.ds deleted file mode 100755 index b6e7bd9201..0000000000 --- a/beam/examples/beamsh/scripts/bug7.ds +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env beamsh - -stdio { - # exec fails - echo hello world -} diff --git a/beam/examples/beamsh/scripts/demo1.ds b/beam/examples/beamsh/scripts/demo1.ds deleted file mode 100755 index 20a3359f3a..0000000000 --- a/beam/examples/beamsh/scripts/demo1.ds +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env beamsh - -devnull { - multiprint { - exec tail -f /var/log/system.log & - exec ls -l - exec ls ksdhfkjdshf jksdfhkjsdhf - } -} diff --git a/beam/examples/beamsh/scripts/helloworld.ds b/beam/examples/beamsh/scripts/helloworld.ds deleted file mode 100755 index 32e59b062e..0000000000 --- a/beam/examples/beamsh/scripts/helloworld.ds +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env beamsh - -print { - trace { - emit msg=hello - emit msg=world - } -} diff --git a/beam/examples/beamsh/scripts/logdemo.ds b/beam/examples/beamsh/scripts/logdemo.ds deleted file mode 100755 index 8b729a966f..0000000000 --- a/beam/examples/beamsh/scripts/logdemo.ds +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env beamsh - -trace { - log { - exec ls -l - exec ls /tmp/jhsdfkjhsdjkfhsdjkfhsdjkkhsdjkf - echo hello world - } -} diff --git a/beam/examples/beamsh/scripts/miniserver.ds b/beam/examples/beamsh/scripts/miniserver.ds deleted file mode 100755 index 9707477ee0..0000000000 --- a/beam/examples/beamsh/scripts/miniserver.ds +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env beamsh - -multiprint { - trace { - listen tcp://localhost:7676 & - listen tcp://localhost:8787 & - } -} - diff --git a/beam/handler.go b/beam/handler.go deleted file mode 100644 index 086a391c02..0000000000 --- a/beam/handler.go +++ /dev/null @@ -1,31 +0,0 @@ -package beam - -import ( - "fmt" -) - -type Handler func(msg *Message) error - -func (h Handler) Send(msg *Message) (Receiver, error) { - var ret Receiver - if RetPipe.Equals(msg.Ret) { - ret, msg.Ret = Pipe() - } - go func() { - // Ret must always be a valid Sender, so handlers - // can safely send to it - if msg.Ret == nil { - msg.Ret = NopSender{} - } - err := h(msg) - if err != nil { - Obj(msg.Ret).Error("%v", err) - } - msg.Ret.Close() - }() - return ret, nil -} - -func (h Handler) Close() error { - return fmt.Errorf("can't close") -} diff --git a/beam/http2/README.md b/beam/http2/README.md deleted file mode 100644 index 92ea4c8cdf..0000000000 --- a/beam/http2/README.md +++ /dev/null @@ -1,8 +0,0 @@ -This package defines a remote transport for Beam services using http2/spdy and tls. - -Uses https://github.com/docker/spdystream - -Pointers: - - * Low-level protocol framer: http://code.google.com/p/go.net/spdy - * (incomplete) high-level server implementation: https://github.com/shykes/spdy-go diff --git a/beam/http2/listener.go b/beam/http2/listener.go deleted file mode 100644 index 8b17bf2b08..0000000000 --- a/beam/http2/listener.go +++ /dev/null @@ -1,86 +0,0 @@ -package http2 - -import ( - "github.com/docker/libswarm/beam" - "github.com/docker/spdystream" - "net" - "sync" -) - -type ListenSession struct { - listener net.Listener - streamChan chan *spdystream.Stream - streamLock sync.RWMutex - subStreamChans map[string]chan *spdystream.Stream - auth Authenticator -} - -func NewListenSession(listener net.Listener, auth Authenticator) (*ListenSession, error) { - return &ListenSession{ - listener: listener, - streamChan: make(chan *spdystream.Stream), - subStreamChans: make(map[string]chan *spdystream.Stream), - auth: auth, - }, nil -} - -func (l *ListenSession) streamHandler(stream *spdystream.Stream) { - streamChan := l.getStreamChan(stream.Parent()) - streamChan <- stream -} - -func (l *ListenSession) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { - l.streamLock.Lock() - l.subStreamChans[stream.String()] = streamChan - l.streamLock.Unlock() -} - -func (l *ListenSession) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { - if stream == nil { - return l.streamChan - } - l.streamLock.RLock() - defer l.streamLock.RUnlock() - streamChan, ok := l.subStreamChans[stream.String()] - if ok { - return streamChan - } - return l.streamChan -} - -func (l *ListenSession) Serve() { - for { - conn, err := l.listener.Accept() - if err != nil { - // TODO log - break - } - - go func() { - authHandler, authErr := l.auth(conn) - if authErr != nil { - // TODO log - conn.Close() - return - } - - spdyConn, spdyErr := spdystream.NewConnection(conn, true) - if spdyErr != nil { - // TODO log - conn.Close() - return - } - - go spdyConn.Serve(l.streamHandler, authHandler) - }() - } -} - -func (l *ListenSession) Shutdown() error { - return l.listener.Close() -} - -func (l *ListenSession) Receive(mode int) (*beam.Message, error) { - stream := <-l.streamChan - return createStreamMessage(stream, mode, l, nil) -} diff --git a/beam/http2/listener_test.go b/beam/http2/listener_test.go deleted file mode 100644 index 2d4a8a9432..0000000000 --- a/beam/http2/listener_test.go +++ /dev/null @@ -1,83 +0,0 @@ -package http2 - -import ( - "github.com/docker/libswarm/beam" - "io" - "net" - "testing" -) - -func TestListenSession(t *testing.T) { - listen := "localhost:7743" - listener, listenErr := net.Listen("tcp", listen) - if listenErr != nil { - t.Fatalf("Error creating listener: %s", listenErr) - } - - session, sessionErr := NewListenSession(listener, NoAuthenticator) - if sessionErr != nil { - t.Fatalf("Error creating session: %s", sessionErr) - } - - go session.Serve() - - end := make(chan bool) - go exerciseServer(t, listen, end) - - msg, msgErr := session.Receive(beam.Ret) - if msgErr != nil { - t.Fatalf("Error receiving message: %s", msgErr) - } - if msg.Att == nil { - t.Fatalf("Error message missing attachment") - } - if msg.Verb != beam.Attach { - t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Attach) - } - - receiver, sendErr := msg.Ret.Send(&beam.Message{Verb: beam.Ack}) - if sendErr != nil { - t.Fatalf("Error sending return message: %s", sendErr) - } - _, ackErr := receiver.Receive(0) - if ackErr == nil { - t.Fatalf("No error receiving from message with no return pipe") - } - if ackErr != io.EOF { - t.Fatalf("Unexpected error receiving from message: %s", ackErr) - } - - <-end - shutdownErr := session.Shutdown() - if shutdownErr != nil { - t.Fatalf("Error shutting down: %s", shutdownErr) - } -} - -func exerciseServer(t *testing.T, server string, endChan chan bool) { - defer close(endChan) - - conn, connErr := net.Dial("tcp", server) - if connErr != nil { - t.Fatalf("Error dialing server: %s", connErr) - } - - session, sessionErr := NewStreamSession(conn) - if sessionErr != nil { - t.Fatalf("Error creating session: %s", sessionErr) - } - - receiver, sendErr := session.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) - if sendErr != nil { - t.Fatalf("Error sending message: %s", sendErr) - } - - msg, receiveErr := receiver.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving message") - } - - if msg.Verb != beam.Ack { - t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Ack) - } -} diff --git a/beam/http2/server.go b/beam/http2/server.go deleted file mode 100644 index 4ec20d3272..0000000000 --- a/beam/http2/server.go +++ /dev/null @@ -1,66 +0,0 @@ -package http2 - -import ( - "github.com/docker/libswarm/beam" - "github.com/docker/spdystream" - "net" - "sync" -) - -// Serve a Beam endpoint over a single HTTP2 connection -type Server struct { - conn *spdystream.Connection - streamChan chan *spdystream.Stream - streamLock sync.RWMutex - subStreamChans map[string]chan *spdystream.Stream -} - -// Create a Beam receiver from a net.Conn -func NewServer(conn net.Conn) (*Server, error) { - spdyConn, err := spdystream.NewConnection(conn, true) - if err != nil { - return nil, err - } - - s := &Server{ - conn: spdyConn, - streamChan: make(chan *spdystream.Stream), - subStreamChans: make(map[string]chan *spdystream.Stream), - } - go s.conn.Serve(s.streamHandler, spdystream.NoAuthHandler) - - return s, nil -} - -func (s *Server) Close() error { - return s.conn.Close() -} - -func (s *Server) Receive(mode int) (*beam.Message, error) { - stream := <-s.streamChan - return createStreamMessage(stream, mode, s, nil) -} - -func (s *Server) streamHandler(stream *spdystream.Stream) { - streamChan := s.getStreamChan(stream.Parent()) - streamChan <- stream -} - -func (s *Server) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { - s.streamLock.Lock() - s.subStreamChans[stream.String()] = streamChan - s.streamLock.Unlock() -} - -func (s *Server) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { - if stream == nil { - return s.streamChan - } - s.streamLock.RLock() - defer s.streamLock.RUnlock() - streamChan, ok := s.subStreamChans[stream.String()] - if ok { - return streamChan - } - return s.streamChan -} diff --git a/beam/http2/spdy.go b/beam/http2/spdy.go deleted file mode 100644 index 293cc229ab..0000000000 --- a/beam/http2/spdy.go +++ /dev/null @@ -1,109 +0,0 @@ -package http2 - -import ( - "encoding/base64" - "fmt" - "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/data" - "github.com/docker/spdystream" - "io" - "net" - "net/http" - "os" - "syscall" -) - -type Authenticator func(conn net.Conn) (spdystream.AuthHandler, error) - -func NoAuthenticator(conn net.Conn) (spdystream.AuthHandler, error) { - return func(header http.Header, slot uint8, parent uint32) bool { - return true - }, nil -} - -type streamChanProvider interface { - addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) - getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream -} - -func encodeArgs(args []string) string { - encoded := data.Encode(map[string][]string{"args": args}) - return base64.URLEncoding.EncodeToString([]byte(encoded)) -} - -func decodeArgs(argString string) ([]string, error) { - decoded, decodeErr := base64.URLEncoding.DecodeString(argString) - if decodeErr != nil { - return []string{}, decodeErr - } - dataMap, dataErr := data.Decode(string(decoded)) - if dataErr != nil { - return []string{}, dataErr - } - return dataMap["args"], nil -} - -func createStreamMessage(stream *spdystream.Stream, mode int, streamChans streamChanProvider, ret beam.Sender) (*beam.Message, error) { - verbString := stream.Headers()["Verb"] - if len(verbString) != 1 { - if len(verbString) == 0 { - return nil, fmt.Errorf("Stream(%s) is missing verb header", stream) - } else { - return nil, fmt.Errorf("Stream(%s) has multiple verb headers", stream) - } - - } - verb, verbOk := verbs[verbString[0]] - if !verbOk { - return nil, fmt.Errorf("Unknown verb: %s", verbString[0]) - } - - var args []string - argString := stream.Headers()["Args"] - if len(argString) > 1 { - return nil, fmt.Errorf("Stream(%s) has multiple args headers", stream) - } - if len(argString) == 1 { - var err error - args, err = decodeArgs(argString[0]) - if err != nil { - return nil, err - } - } - - var attach *os.File - if !stream.IsFinished() { - socketFds, socketErr := syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM|syscall.FD_CLOEXEC, 0) - if socketErr != nil { - return nil, socketErr - } - attach = os.NewFile(uintptr(socketFds[0]), "") - conn, connErr := net.FileConn(os.NewFile(uintptr(socketFds[1]), "")) - if connErr != nil { - return nil, connErr - } - - go func() { - io.Copy(conn, stream) - }() - go func() { - io.Copy(stream, conn) - }() - } - - retSender := ret - if retSender == nil || beam.RetPipe.Equals(retSender) { - retSender = &StreamSender{stream: stream, streamChans: streamChans} - } - - if mode&beam.Ret == 0 { - retSender.Close() - } - - return &beam.Message{ - Verb: verb, - Args: args, - Att: attach, - Ret: retSender, - }, nil -} diff --git a/beam/http2/stream.go b/beam/http2/stream.go deleted file mode 100644 index ac5c67364d..0000000000 --- a/beam/http2/stream.go +++ /dev/null @@ -1,166 +0,0 @@ -package http2 - -import ( - "fmt" - "github.com/docker/libswarm/beam" - "github.com/docker/spdystream" - "net" - "net/http" - "sync" -) - -var verbs = map[string]beam.Verb{ - "Ack": beam.Ack, - "Attach": beam.Attach, - "Connect": beam.Connect, - "Error": beam.Error, - "File": beam.File, - "Get": beam.Get, - "Log": beam.Log, - "Ls": beam.Ls, - "Set": beam.Set, - "Spawn": beam.Spawn, - "Start": beam.Start, - "Stop": beam.Stop, - "Watch": beam.Watch, -} - -// Only allows sending, no parent stream -type StreamSession struct { - conn *spdystream.Connection - - streamLock sync.Mutex - streamChan chan *spdystream.Stream - subStreamChans map[string]chan *spdystream.Stream -} - -func (s *StreamSession) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { - s.subStreamChans[stream.String()] = streamChan -} - -func (s *StreamSession) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { - if stream == nil { - return s.streamChan - } - streamChan, ok := s.subStreamChans[stream.String()] - if ok { - return streamChan - } - return s.streamChan -} - -func (s *StreamSession) newStreamHandler(stream *spdystream.Stream) { - streamChan := s.getStreamChan(stream.Parent()) - streamChan <- stream -} - -func NewStreamSession(conn net.Conn) (*StreamSession, error) { - session := &StreamSession{ - streamChan: make(chan *spdystream.Stream), - subStreamChans: make(map[string]chan *spdystream.Stream), - } - - spdyConn, spdyErr := spdystream.NewConnection(conn, false) - if spdyErr != nil { - return nil, spdyErr - } - go spdyConn.Serve(session.newStreamHandler, spdystream.NoAuthHandler) - - session.conn = spdyConn - - return session, nil -} - -func (s *StreamSession) Send(msg *beam.Message) (ret beam.Receiver, err error) { - if msg.Att != nil { - return nil, fmt.Errorf("file attachment not yet implemented for spdy transport") - } - - var fin bool - if beam.RetPipe.Equals(msg.Ret) { - fin = false - } else { - fin = true - } - headers := http.Header{ - "Verb": []string{msg.Verb.String()}, - "Args": []string{encodeArgs(msg.Args)}, - } - stream, streamErr := s.conn.CreateStream(headers, nil, fin) - if streamErr != nil { - return nil, streamErr - } - - streamChan := make(chan *spdystream.Stream) - s.subStreamChans[stream.String()] = streamChan - - if beam.RetPipe.Equals(msg.Ret) { - ret = &StreamReceiver{stream: stream, streamChans: s} - } else { - ret = &beam.NopReceiver{} - } - return -} - -func (s *StreamSession) Close() error { - return s.conn.Close() -} - -type StreamReceiver struct { - stream *spdystream.Stream - streamChans streamChanProvider - ret beam.Sender -} - -func (s *StreamReceiver) Receive(mode int) (*beam.Message, error) { - waitErr := s.stream.Wait() - if waitErr != nil { - return nil, waitErr - } - streamChan := s.streamChans.getStreamChan(s.stream) - stream := <-streamChan - return createStreamMessage(stream, mode, s.streamChans, s.ret) -} - -type StreamSender struct { - stream *spdystream.Stream - streamChans streamChanProvider -} - -func (s *StreamSender) Send(msg *beam.Message) (ret beam.Receiver, err error) { - if msg.Att != nil { - return nil, fmt.Errorf("file attachment not yet implemented for spdy transport") - } - - var fin bool - if beam.RetPipe.Equals(msg.Ret) { - fin = false - } else { - fin = true - } - headers := http.Header{ - "Verb": []string{msg.Verb.String()}, - "Args": []string{encodeArgs(msg.Args)}, - } - - stream, streamErr := s.stream.CreateSubStream(headers, fin) - if streamErr != nil { - return nil, streamErr - } - - streamChan := make(chan *spdystream.Stream) - s.streamChans.addStreamChan(stream, streamChan) - - if beam.RetPipe.Equals(msg.Ret) { - ret = &StreamReceiver{stream: stream, streamChans: s.streamChans} - } else { - ret = beam.NopReceiver{} - } - - return -} - -func (s *StreamSender) Close() error { - // TODO Remove stream from stream chans - return s.stream.Close() -} diff --git a/beam/http2/stream_test.go b/beam/http2/stream_test.go deleted file mode 100644 index 8ae9d27a2b..0000000000 --- a/beam/http2/stream_test.go +++ /dev/null @@ -1,159 +0,0 @@ -package http2 - -import ( - //"bytes" - "github.com/docker/libswarm/beam" - //"github.com/docker/spdystream" - "io" - "net" - "testing" -) - -func TestBeamSession(t *testing.T) { - end := make(chan bool) - listen := "localhost:7543" - server, serverErr := runServer(listen, t, end) - if serverErr != nil { - t.Fatalf("Error initializing server: %s", serverErr) - } - - conn, connErr := net.Dial("tcp", listen) - if connErr != nil { - t.Fatalf("Error dialing server: %s", connErr) - } - - sender, senderErr := NewStreamSession(conn) - if senderErr != nil { - t.Fatalf("Error creating sender: %s", senderErr) - } - - // Ls interaction - receiver, sendErr := sender.Send(&beam.Message{Verb: beam.Ls, Ret: beam.RetPipe}) - if sendErr != nil { - t.Fatalf("Error sending beam message: %s", sendErr) - } - message, receiveErr := receiver.Receive(0) - if receiveErr != nil { - t.Fatalf("Error receiving beam message: %s", receiveErr) - } - if message.Verb != beam.Set { - t.Errorf("Unexpected message name:\nActual: %s\nExpected: %s", message.Verb, beam.Ls.String()) - } - if len(message.Args) != 3 { - t.Fatalf("Unexpected args length\nActual: %d\nExpected: %d", len(message.Args), 3) - } - if message.Args[0] != "file1" { - t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[0], "file1") - } - if message.Args[1] != "file2" { - t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[1], "file2") - } - if message.Args[2] != string([]byte{0x00, 0x00, 0x00}) { - t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[2], []byte{0x00, 0x00, 0x00}) - } - - // Attach interactions - receiver, sendErr = sender.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) - if sendErr != nil { - t.Fatalf("Error sending beam message: %s", sendErr) - } - message, receiveErr = receiver.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving beam message: %s", receiveErr) - } - if message.Verb != beam.Ack { - t.Errorf("Unexpected message name:\nActual: %s\nExpected: %s", message.Verb, beam.Ack.String()) - } - - // TODO full connect interaction - //if message.Att == nil { - // t.Fatalf("Missing attachment on message") - //} - - //testBytes := []byte("Hello") - //n, writeErr := message.Att.Write(testBytes) - //if writeErr != nil { - // t.Fatalf("Error writing bytes: %s", writeErr) - //} - //if n != 5 { - // t.Fatalf("Unexpected number of bytes read:\nActual: %d\nExpected: 5", n) - //} - - //buf := make([]byte, 10) - //n, readErr := message.Att.Read(buf) - //if readErr != nil { - // t.Fatalf("Error writing bytes: %s", readErr) - //} - //if n != 5 { - // t.Fatalf("Unexpected number of bytes read:\nActual: %d\nExpected: 5", n) - //} - //if bytes.Compare(buf[:n], testBytes) != 0 { - // t.Fatalf("Did not receive expected message:\nActual: %s\nExpectd: %s", buf, testBytes) - //} - - closeErr := server.Close() - if closeErr != nil { - t.Fatalf("Error closing server: %s", closeErr) - } - - closeErr = sender.Close() - if closeErr != nil { - t.Fatalf("Error closing sender: %s", closeErr) - } - <-end -} - -func runServer(listen string, t *testing.T, endChan chan bool) (io.Closer, error) { - listener, lErr := net.Listen("tcp", listen) - if lErr != nil { - return nil, lErr - } - - session, sessionErr := NewListenSession(listener, NoAuthenticator) - if sessionErr != nil { - t.Fatalf("Error creating session: %s", sessionErr) - } - - go session.Serve() - - go func() { - defer close(endChan) - // Ls exchange - message, receiveErr := session.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving on server: %s", receiveErr) - } - if message.Verb != beam.Ls { - t.Fatalf("Unexpected verb: %s", message.Verb) - } - receiver, sendErr := message.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{"file1", "file2", string([]byte{0x00, 0x00, 0x00})}}) - if sendErr != nil { - t.Fatalf("Error sending set message: %s", sendErr) - } - _, receiveErr = receiver.Receive(0) - if receiveErr == nil { - t.Fatalf("No error received from empty receiver") - } - if receiveErr != io.EOF { - t.Fatalf("Expected error from empty receiver: %s", receiveErr) - } - - // Connect exchange - message, receiveErr = session.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving on server: %s", receiveErr) - } - if message.Verb != beam.Attach { - t.Fatalf("Unexpected verb: %s", message.Verb) - } - receiver, sendErr = message.Ret.Send(&beam.Message{Verb: beam.Ack}) - if sendErr != nil { - t.Fatalf("Error sending set message: %s", sendErr) - } - - // TODO full connect interaction - - }() - - return listener, nil -} diff --git a/beam/inmem.go b/beam/inmem.go deleted file mode 100644 index 20593fb715..0000000000 --- a/beam/inmem.go +++ /dev/null @@ -1,206 +0,0 @@ -package beam - -import ( - "io" - "sync" -) - -func Pipe() (*PipeReceiver, *PipeSender) { - p := new(pipe) - p.rwait.L = &p.l - p.wwait.L = &p.l - r := &PipeReceiver{p} - w := &PipeSender{p} - return r, w -} - -type pipe struct { - rwait sync.Cond - wwait sync.Cond - l sync.Mutex - rl sync.Mutex - wl sync.Mutex - rerr error // if reader closed, error to give writes - werr error // if writer closed, error to give reads - msg *Message -} - -func (p *pipe) psend(msg *Message) error { - var err error - // One writer at a time. - p.wl.Lock() - defer p.wl.Unlock() - - p.l.Lock() - defer p.l.Unlock() - p.msg = msg - p.rwait.Signal() - for { - if p.msg == nil { - break - } - if p.rerr != nil { - err = p.rerr - break - } - if p.werr != nil { - err = io.ErrClosedPipe - } - p.wwait.Wait() - } - p.msg = nil // in case of rerr or werr - return err -} - -func (p *pipe) send(msg *Message) (ret Receiver, err error) { - // Prepare nested Receiver if requested - if RetPipe.Equals(msg.Ret) { - ret, msg.Ret = Pipe() - } - err = p.psend(msg) - return -} - -func (p *pipe) preceive() (*Message, error) { - p.rl.Lock() - defer p.rl.Unlock() - - p.l.Lock() - defer p.l.Unlock() - for { - if p.rerr != nil { - return nil, io.ErrClosedPipe - } - if p.msg != nil { - break - } - if p.werr != nil { - return nil, p.werr - } - p.rwait.Wait() - } - msg := p.msg - p.msg = nil - p.wwait.Signal() - return msg, nil -} - -func (p *pipe) receive(mode int) (*Message, error) { - msg, err := p.preceive() - if err != nil { - return nil, err - } - if msg.Ret == nil { - msg.Ret = NopSender{} - } - if mode&Ret == 0 { - msg.Ret.Close() - } - return msg, nil -} - -func (p *pipe) rclose(err error) { - if err == nil { - err = io.ErrClosedPipe - } - p.l.Lock() - defer p.l.Unlock() - p.rerr = err - p.rwait.Signal() - p.wwait.Signal() -} - -func (p *pipe) wclose(err error) { - if err == nil { - err = io.EOF - } - p.l.Lock() - defer p.l.Unlock() - p.werr = err - p.rwait.Signal() - p.wwait.Signal() -} - -// PipeReceiver - -type PipeReceiver struct { - p *pipe -} - -func (r *PipeReceiver) Receive(mode int) (*Message, error) { - return r.p.receive(mode) -} - -func (r *PipeReceiver) SendTo(dst Sender) (int, error) { - var n int - // If the destination is a PipeSender, we can cheat - pdst, ok := dst.(*PipeSender) - if !ok { - return 0, ErrIncompatibleSender - } - for { - pmsg, err := r.p.preceive() - if err == io.EOF { - break - } - if err != nil { - return n, err - } - if err := pdst.p.psend(pmsg); err != nil { - return n, err - } - } - n++ - return n, nil -} - -func (r *PipeReceiver) Close() error { - return r.CloseWithError(nil) -} - -func (r *PipeReceiver) CloseWithError(err error) error { - r.p.rclose(err) - return nil -} - -// PipeSender - -type PipeSender struct { - p *pipe -} - -func (w *PipeSender) Send(msg *Message) (Receiver, error) { - return w.p.send(msg) -} - -func (w *PipeSender) ReceiveFrom(src Receiver) (int, error) { - var n int - // If the destination is a PipeReceiver, we can cheat - psrc, ok := src.(*PipeReceiver) - if !ok { - return 0, ErrIncompatibleReceiver - } - for { - pmsg, err := psrc.p.preceive() - if err == io.EOF { - break - } - if err != nil { - return n, err - } - if err := w.p.psend(pmsg); err != nil { - return n, err - } - n++ - } - return n, nil -} - -func (w *PipeSender) Close() error { - return w.CloseWithError(nil) -} - -func (w *PipeSender) CloseWithError(err error) error { - w.p.wclose(err) - return nil -} diff --git a/beam/inmem_test.go b/beam/inmem_test.go deleted file mode 100644 index e3826e9148..0000000000 --- a/beam/inmem_test.go +++ /dev/null @@ -1,145 +0,0 @@ -package beam - -import ( - "fmt" - "github.com/dotcloud/docker/pkg/testutils" - "io/ioutil" - "os" - "testing" -) - -func TestInmemRetPipe(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - wait := make(chan struct{}) - go func() { - defer close(wait) - ret, err := w.Send(&Message{Verb: Log, Args: []string{"hello"}, Ret: RetPipe}) - if err != nil { - t.Fatal(err) - } - msg, err := ret.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != Ack { - t.Fatalf("%#v", msg) - } - if msg.Args[0] != "this better not crash" { - t.Fatalf("%#v", msg) - } - }() - msg, err := r.Receive(Ret) - if err != nil { - t.Fatal(err) - } - if _, err := msg.Ret.Send(&Message{Verb: Ack, Args: []string{"this better not crash"}}); err != nil { - t.Fatal(err) - } - <-wait -} - -func TestSimpleSend(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - go func() { - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != Log { - t.Fatalf("%#v", *msg) - } - if msg.Args[0] != "hello world" { - t.Fatalf("%#v", *msg) - } - }() - if _, err := w.Send(&Message{Verb: Log, Args: []string{"hello world"}}); err != nil { - t.Fatal(err) - } - }) -} - -func TestSendReply(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - // Send - go func() { - ret, err := w.Send(&Message{Args: []string{"this is the request"}, Ret: RetPipe}) - if err != nil { - t.Fatal(err) - } - if ret == nil { - t.Fatalf("ret = nil\n") - } - // Read for a reply - msg, err := ret.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the reply" { - t.Fatalf("%#v", msg) - } - }() - // Receive a message with mode=Ret - msg, err := r.Receive(Ret) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the request" { - t.Fatalf("%#v", msg) - } - if msg.Ret == nil { - t.Fatalf("%#v", msg) - } - // Send a reply - _, err = msg.Ret.Send(&Message{Args: []string{"this is the reply"}}) - if err != nil { - t.Fatal(err) - } - }) -} - -func TestSendFile(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - tmp, err := ioutil.TempFile("", "beam-test-") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tmp.Name()) - fmt.Fprintf(tmp, "hello world\n") - tmp.Sync() - tmp.Seek(0, 0) - testutils.Timeout(t, func() { - go func() { - _, err := w.Send(&Message{Verb: File, Args: []string{"path=" + tmp.Name()}, Att: tmp}) - if err != nil { - t.Fatal(err) - } - }() - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != File { - t.Fatalf("%#v", msg) - } - if msg.Args[0] != "path="+tmp.Name() { - t.Fatalf("%#v", msg) - } - txt, err := ioutil.ReadAll(msg.Att) - if err != nil { - t.Fatal(err) - } - if string(txt) != "hello world\n" { - t.Fatalf("%s\n", txt) - } - }) -} diff --git a/beam/message.go b/beam/message.go new file mode 100644 index 0000000000..eac5b23c76 --- /dev/null +++ b/beam/message.go @@ -0,0 +1,169 @@ +package beam + +import ( + "github.com/docker/libchan" + "github.com/docker/libchan/data" + + "fmt" + "os" +) + +type Message struct { + Verb + Args []string + Ret Sender + Att *os.File +} + +type Sender interface { + Send(msg *Message) (Receiver, error) + Close() error + Unwrap() libchan.Sender +} + +type Receiver interface { + Receive(mode int) (*Message, error) + Unwrap() libchan.Receiver +} + +type senderWrapper struct { + libchan.Sender +} + +func WrapSender(s libchan.Sender) Sender { + return &senderWrapper{s} +} + +func (s *senderWrapper) Send(msg *Message) (Receiver, error) { + recv, err := s.Sender.Send(msg.LibchanMessage()) + if err != nil { + return nil, err + } + return WrapReceiver(recv), err +} + +func (s *senderWrapper) Unwrap() libchan.Sender { + return s.Sender +} + +type receiverWrapper struct { + libchan.Receiver +} + +func WrapReceiver(r libchan.Receiver) Receiver { + return &receiverWrapper{r} +} + +func (r *receiverWrapper) Receive(mode int) (*Message, error) { + lcm, err := r.Receiver.Receive(mode) + if err != nil { + return nil, err + } + return DecodeLibchanMessage(lcm) +} + +func (r *receiverWrapper) Unwrap() libchan.Receiver { + return r.Receiver +} + +type senderUnwrapper struct { + Sender +} + +func (su *senderUnwrapper) Send(lcm *libchan.Message) (libchan.Receiver, error) { + msg, err := DecodeLibchanMessage(lcm) + if err != nil { + return nil, err + } + recv, err := su.Sender.Send(msg) + if err != nil { + return nil, err + } + return &receiverUnwrapper{recv}, nil +} + +type receiverUnwrapper struct { + Receiver +} + +func (ru *receiverUnwrapper) Receive(mode int) (*libchan.Message, error) { + msg, err := ru.Receiver.Receive(mode) + if err != nil { + return nil, err + } + return msg.LibchanMessage(), nil +} + +func Pipe() (Receiver, Sender) { + r, s := libchan.Pipe() + return WrapReceiver(r), WrapSender(s) +} + +func Copy(s Sender, r Receiver) (int, error) { + return libchan.Copy(s.Unwrap(), r.Unwrap()) +} + +func Handler(h func(msg *Message) error) Sender { + lch := libchan.Handler(func(lcm *libchan.Message) { + ret := WrapSender(lcm.Ret) + msg, err := DecodeLibchanMessage(lcm) + if err != nil { + ret.Send(&Message{Verb: Error, Args: []string{err.Error()}}) + } + if err = h(msg); err != nil { + ret.Send(&Message{Verb: Error, Args: []string{err.Error()}}) + } + }) + return WrapSender(lch) +} + +var RetPipe = WrapSender(libchan.RetPipe) +var Ret = libchan.Ret + +var notImplementedMsg = &Message{Verb: Error, Args: []string{"not implemented"}} +var NotImplemented = WrapSender(libchan.Repeater(notImplementedMsg.LibchanMessage())) + +func DecodeLibchanMessage(lcm *libchan.Message) (*Message, error) { + decoded, err := data.Decode(string(lcm.Data)) + if err != nil { + return nil, err + } + verbList, exists := decoded["verb"] + if !exists { + return nil, fmt.Errorf("No 'verb' key found in message data: %s", lcm.Data) + } + if len(verbList) != 1 { + return nil, fmt.Errorf("Expected exactly one verb, got %d: %#v", len(verbList), verbList) + } + verb, err := VerbFromString(verbList[0]) + if err != nil { + return nil, err + } + args, exists := decoded["args"] + if !exists { + return nil, fmt.Errorf("No 'args' key found in message data: %s", lcm.Data) + } + return &Message{ + Verb: verb, + Args: args, + Ret: WrapSender(lcm.Ret), + Att: lcm.Fd, + }, nil +} + +func (m *Message) LibchanMessage() *libchan.Message { + encoded := data.Empty(). + Set("verb", m.Verb.String()). + Set("args", m.Args...) + + var ret libchan.Sender + if m.Ret != nil { + ret = m.Ret.Unwrap() + } + + return &libchan.Message{ + Data: []byte(encoded), + Ret: ret, + Fd: m.Att, + } +} diff --git a/beam/nop.go b/beam/nop.go deleted file mode 100644 index 603d9b2ec5..0000000000 --- a/beam/nop.go +++ /dev/null @@ -1,21 +0,0 @@ -package beam - -import ( - "io" -) - -type NopSender struct{} - -func (s NopSender) Send(msg *Message) (Receiver, error) { - return NopReceiver{}, nil -} - -func (s NopSender) Close() error { - return nil -} - -type NopReceiver struct{} - -func (r NopReceiver) Receive(mode int) (*Message, error) { - return nil, io.EOF -} diff --git a/beam/server.go b/beam/server.go index 362a43adea..5db5f513aa 100644 --- a/beam/server.go +++ b/beam/server.go @@ -1,6 +1,8 @@ package beam import ( + "github.com/docker/libchan" + "fmt" ) @@ -70,3 +72,7 @@ func (s *Server) Send(msg *Message) (Receiver, error) { func (s *Server) Close() error { return fmt.Errorf("can't close") } + +func (s *Server) Unwrap() libchan.Sender { + return &senderUnwrapper{s} +} diff --git a/beam/unix/beam.go b/beam/unix/beam.go deleted file mode 100644 index 9e6dc90f1b..0000000000 --- a/beam/unix/beam.go +++ /dev/null @@ -1,166 +0,0 @@ -package unix - -import ( - "fmt" - "io" - "os" -) - -type Sender interface { - Send([]byte, *os.File) error -} - -type Receiver interface { - Receive() ([]byte, *os.File, error) -} - -type ReceiveCloser interface { - Receiver - Close() error -} - -type SendCloser interface { - Sender - Close() error -} - -type ReceiveSender interface { - Receiver - Sender -} - -const ( - R int = 1 << (32 - 1 - iota) - W -) - -func sendPipe(dst Sender, data []byte, mode int) (*os.File, error) { - r, w, err := os.Pipe() - if err != nil { - return nil, err - } - var ( - remote *os.File - local *os.File - ) - if mode == R { - remote = r - local = w - } else if mode == W { - remote = w - local = r - } - if err := dst.Send(data, remote); err != nil { - local.Close() - remote.Close() - return nil, err - } - return local, nil - -} - -// SendRPipe create a pipe and sends its *read* end attached in a beam message -// to `dst`, with `data` as the message payload. -// It returns the *write* end of the pipe, or an error. -func SendRPipe(dst Sender, data []byte) (*os.File, error) { - return sendPipe(dst, data, R) -} - -// SendWPipe create a pipe and sends its *read* end attached in a beam message -// to `dst`, with `data` as the message payload. -// It returns the *write* end of the pipe, or an error. -func SendWPipe(dst Sender, data []byte) (*os.File, error) { - return sendPipe(dst, data, W) -} - -func SendConn(dst Sender, data []byte) (conn *UnixConn, err error) { - local, remote, err := SocketPair() - if err != nil { - return nil, err - } - defer func() { - if err != nil { - local.Close() - remote.Close() - } - }() - conn, err = FileConn(local) - if err != nil { - return nil, err - } - local.Close() - if err := dst.Send(data, remote); err != nil { - return nil, err - } - return conn, nil -} - -func ReceiveConn(src Receiver) ([]byte, *UnixConn, error) { - for { - data, f, err := src.Receive() - if err != nil { - return nil, nil, err - } - if f == nil { - // Skip empty attachments - continue - } - conn, err := FileConn(f) - if err != nil { - // Skip beam attachments which are not connections - // (for example might be a regular file, directory etc) - continue - } - return data, conn, nil - } - panic("impossibru!") - return nil, nil, nil -} - -func Copy(dst Sender, src Receiver) (int, error) { - var n int - for { - payload, attachment, err := src.Receive() - if err == io.EOF { - return n, nil - } else if err != nil { - return n, err - } - if err := dst.Send(payload, attachment); err != nil { - if attachment != nil { - attachment.Close() - } - return n, err - } - n++ - } - panic("impossibru!") - return n, nil -} - -// MsgDesc returns a human readable description of a beam message, usually -// for debugging purposes. -func MsgDesc(payload []byte, attachment *os.File) string { - var filedesc string = "" - if attachment != nil { - filedesc = fmt.Sprintf("%d", attachment.Fd()) - } - return fmt.Sprintf("'%s'[%s]", payload, filedesc) -} - -type devnull struct{} - -func Devnull() ReceiveSender { - return devnull{} -} - -func (d devnull) Send(p []byte, a *os.File) error { - if a != nil { - a.Close() - } - return nil -} - -func (d devnull) Receive() ([]byte, *os.File, error) { - return nil, nil, io.EOF -} diff --git a/beam/unix/beam_test.go b/beam/unix/beam_test.go deleted file mode 100644 index 83bd91e0d3..0000000000 --- a/beam/unix/beam_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package unix - -import ( - "github.com/dotcloud/docker/pkg/beam/data" - "testing" -) - -func TestSendConn(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - go func() { - conn, err := SendConn(a, data.Empty().Set("type", "connection").Bytes()) - if err != nil { - t.Fatal(err) - } - if err := conn.Send(data.Empty().Set("foo", "bar").Bytes(), nil); err != nil { - t.Fatal(err) - } - conn.CloseWrite() - }() - payload, conn, err := ReceiveConn(b) - if err != nil { - t.Fatal(err) - } - if val := data.Message(string(payload)).Get("type"); val == nil || val[0] != "connection" { - t.Fatalf("%v != %v\n", val, "connection") - } - msg, _, err := conn.Receive() - if err != nil { - t.Fatal(err) - } - if val := data.Message(string(msg)).Get("foo"); val == nil || val[0] != "bar" { - t.Fatalf("%v != %v\n", val, "bar") - } -} diff --git a/beam/unix/conn.go b/beam/unix/conn.go deleted file mode 100644 index 2d0acef440..0000000000 --- a/beam/unix/conn.go +++ /dev/null @@ -1,144 +0,0 @@ -package unix - -import ( - "fmt" - "os" - "strconv" - - "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/data" -) - -func Pair() (*Conn, *Conn, error) { - c1, c2, err := USocketPair() - if err != nil { - return nil, nil, err - } - return &Conn{c1}, &Conn{c2}, nil -} - -type Conn struct { - *UnixConn -} - -func sendablePair() (conn *UnixConn, remoteFd *os.File, err error) { - // Get 2 *os.File - local, remote, err := SocketPair() - if err != nil { - return nil, nil, err - } - defer func() { - if err != nil { - local.Close() - remote.Close() - } - }() - // Convert 1 to *net.UnixConn - conn, err = FileConn(local) - if err != nil { - return nil, nil, err - } - local.Close() - // Return the "mismatched" pair - return conn, remote, nil -} - -// This implements beam.Sender.Close which *only closes the sender*. -// This is similar to the pattern of only closing go channels from -// the sender's side. -// If you want to close the entire connection, call Conn.UnixConn.Close. -func (c *Conn) Close() error { - return c.UnixConn.CloseWrite() -} - -func (c *Conn) Send(msg *beam.Message) (beam.Receiver, error) { - if msg.Att != nil { - return nil, fmt.Errorf("file attachment not yet implemented in unix transport") - } - parts := []string{fmt.Sprintf("%d", msg.Verb)} - parts = append(parts, msg.Args...) - b := []byte(data.EncodeList(parts)) - // Setup nested streams - var ( - fd *os.File - ret beam.Receiver - err error - ) - // Caller requested a return pipe - if beam.RetPipe.Equals(msg.Ret) { - local, remote, err := sendablePair() - if err != nil { - return nil, err - } - fd = remote - ret = &Conn{local} - // Caller specified its own return channel - } else if msg.Ret != nil { - // The specified return channel is a unix conn: engaging cheat mode! - if retConn, ok := msg.Ret.(*Conn); ok { - fd, err = retConn.UnixConn.File() - if err != nil { - return nil, fmt.Errorf("error passing return channel: %v", err) - } - // Close duplicate fd - retConn.UnixConn.Close() - // The specified return channel is an unknown type: proxy messages. - } else { - local, remote, err := sendablePair() - if err != nil { - return nil, fmt.Errorf("error passing return channel: %v", err) - } - fd = remote - // FIXME: do we need a reference no all these background tasks? - go func() { - // Copy messages from the remote return channel to the local return channel. - // When the remote return channel is closed, also close the local return channel. - localConn := &Conn{local} - beam.Copy(msg.Ret, localConn) - msg.Ret.Close() - localConn.Close() - }() - } - } - if err := c.UnixConn.Send(b, fd); err != nil { - return nil, err - } - return ret, nil -} - -func (c *Conn) Receive(mode int) (*beam.Message, error) { - b, fd, err := c.UnixConn.Receive() - if err != nil { - return nil, err - } - parts, n, err := data.DecodeList(string(b)) - if err != nil { - return nil, err - } - if n != len(b) { - return nil, fmt.Errorf("garbage data %#v", b[:n]) - } - if len(parts) == 0 { - return nil, fmt.Errorf("malformed message") - } - v, err := strconv.ParseUint(parts[0], 10, 32) - if err != nil { - return nil, err - } - msg := &beam.Message{Verb: beam.Verb(v), Args: parts[1:]} - - // Apply mode mask - if fd != nil { - subconn, err := FileConn(fd) - if err != nil { - return nil, err - } - fd.Close() - if mode&beam.Ret != 0 { - msg.Ret = &Conn{subconn} - } else { - subconn.CloseWrite() - } - } - return msg, nil -} diff --git a/beam/unix/conn_test.go b/beam/unix/conn_test.go deleted file mode 100644 index 09884cc6e7..0000000000 --- a/beam/unix/conn_test.go +++ /dev/null @@ -1,74 +0,0 @@ -package unix - -import ( - "github.com/docker/libswarm/beam" - "github.com/dotcloud/docker/pkg/testutils" - "testing" -) - -func TestPair(t *testing.T) { - r, w, err := Pair() - if err != nil { - t.Fatal("Unexpected error") - } - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - go func() { - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != beam.Log { - t.Fatalf("%#v", *msg) - } - if msg.Args[0] != "hello world" { - t.Fatalf("%#v", *msg) - } - }() - _, err := w.Send(&beam.Message{Verb: beam.Log, Args: []string{"hello world"}}) - if err != nil { - t.Fatal(err) - } - }) -} - -func TestSendReply(t *testing.T) { - r, w, err := Pair() - if err != nil { - t.Fatal(err) - } - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - // Send - go func() { - // Send a message with mode=R - ret, err := w.Send(&beam.Message{Args: []string{"this is the request"}, Ret: beam.RetPipe}) - if err != nil { - t.Fatal(err) - } - // Read for a reply - msg, err := ret.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the reply" { - t.Fatalf("%#v", msg) - } - }() - // Receive a message with mode=W - msg, err := r.Receive(beam.Ret) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the request" { - t.Fatalf("%#v", msg) - } - // Send a reply - _, err = msg.Ret.Send(&beam.Message{Args: []string{"this is the reply"}}) - if err != nil { - t.Fatal(err) - } - }) -} diff --git a/beam/unix/unix.go b/beam/unix/unix.go deleted file mode 100644 index 594eb21b10..0000000000 --- a/beam/unix/unix.go +++ /dev/null @@ -1,317 +0,0 @@ -package unix - -import ( - "bufio" - "fmt" - "net" - "os" - "syscall" -) - -func debugCheckpoint(msg string, args ...interface{}) { - if os.Getenv("DEBUG") == "" { - return - } - os.Stdout.Sync() - tty, _ := os.OpenFile("/dev/tty", os.O_RDWR, 0700) - fmt.Fprintf(tty, msg, args...) - bufio.NewScanner(tty).Scan() - tty.Close() -} - -type UnixConn struct { - *net.UnixConn - fds []*os.File -} - -// Framing: -// In order to handle framing in Send/Recieve, as these give frame -// boundaries we use a very simple 4 bytes header. It is a big endiand -// uint32 where the high bit is set if the message includes a file -// descriptor. The rest of the uint32 is the length of the next frame. -// We need the bit in order to be able to assign recieved fds to -// the right message, as multiple messages may be coalesced into -// a single recieve operation. -func makeHeader(data []byte, fds []int) ([]byte, error) { - header := make([]byte, 4) - - length := uint32(len(data)) - - if length > 0x7fffffff { - return nil, fmt.Errorf("Data to large") - } - - if len(fds) != 0 { - length = length | 0x80000000 - } - header[0] = byte((length >> 24) & 0xff) - header[1] = byte((length >> 16) & 0xff) - header[2] = byte((length >> 8) & 0xff) - header[3] = byte((length >> 0) & 0xff) - - return header, nil -} - -func parseHeader(header []byte) (uint32, bool) { - length := uint32(header[0])<<24 | uint32(header[1])<<16 | uint32(header[2])<<8 | uint32(header[3]) - hasFd := length&0x80000000 != 0 - length = length & ^uint32(0x80000000) - - return length, hasFd -} - -func FileConn(f *os.File) (*UnixConn, error) { - conn, err := net.FileConn(f) - if err != nil { - return nil, err - } - uconn, ok := conn.(*net.UnixConn) - if !ok { - conn.Close() - return nil, fmt.Errorf("%d: not a unix connection", f.Fd()) - } - return &UnixConn{UnixConn: uconn}, nil - -} - -// Send sends a new message on conn with data and f as payload and -// attachment, respectively. -// On success, f is closed -func (conn *UnixConn) Send(data []byte, f *os.File) error { - { - var fd int = -1 - if f != nil { - fd = int(f.Fd()) - } - debugCheckpoint("===DEBUG=== about to send '%s'[%d]. Hit enter to confirm: ", data, fd) - } - var fds []int - if f != nil { - fds = append(fds, int(f.Fd())) - } - if err := conn.sendUnix(data, fds...); err != nil { - return err - } - - if f != nil { - f.Close() - } - return nil -} - -// Receive waits for a new message on conn, and receives its payload -// and attachment, or an error if any. -// -// If more than 1 file descriptor is sent in the message, they are all -// closed except for the first, which is the attachment. -// It is legal for a message to have no attachment or an empty payload. -func (conn *UnixConn) Receive() (rdata []byte, rf *os.File, rerr error) { - defer func() { - var fd int = -1 - if rf != nil { - fd = int(rf.Fd()) - } - debugCheckpoint("===DEBUG=== Receive() -> '%s'[%d]. Hit enter to continue.\n", rdata, fd) - }() - - // Read header - header := make([]byte, 4) - nRead := uint32(0) - - for nRead < 4 { - n, err := conn.receiveUnix(header[nRead:]) - if err != nil { - return nil, nil, err - } - nRead = nRead + uint32(n) - } - - length, hasFd := parseHeader(header) - - if hasFd { - if len(conn.fds) == 0 { - return nil, nil, fmt.Errorf("No expected file descriptor in message") - } - - rf = conn.fds[0] - conn.fds = conn.fds[1:] - } - - rdata = make([]byte, length) - - nRead = 0 - for nRead < length { - n, err := conn.receiveUnix(rdata[nRead:]) - if err != nil { - return nil, nil, err - } - nRead = nRead + uint32(n) - } - - return -} - -func (conn *UnixConn) receiveUnix(buf []byte) (int, error) { - oob := make([]byte, syscall.CmsgSpace(4)) - bufn, oobn, _, _, err := conn.ReadMsgUnix(buf, oob) - if err != nil { - return 0, err - } - fd := extractFd(oob[:oobn]) - if fd != -1 { - f := os.NewFile(uintptr(fd), "") - conn.fds = append(conn.fds, f) - } - - return bufn, nil -} - -func (conn *UnixConn) sendUnix(data []byte, fds ...int) error { - header, err := makeHeader(data, fds) - if err != nil { - return err - } - - // There is a bug in conn.WriteMsgUnix where it doesn't correctly return - // the number of bytes writte (http://code.google.com/p/go/issues/detail?id=7645) - // So, we can't rely on the return value from it. However, we must use it to - // send the fds. In order to handle this we only write one byte using WriteMsgUnix - // (when we have to), as that can only ever block or fully suceed. We then write - // the rest with conn.Write() - // The reader side should not rely on this though, as hopefully this gets fixed - // in go later. - written := 0 - if len(fds) != 0 { - oob := syscall.UnixRights(fds...) - wrote, _, err := conn.WriteMsgUnix(header[0:1], oob, nil) - if err != nil { - return err - } - written = written + wrote - } - - for written < len(header) { - wrote, err := conn.Write(header[written:]) - if err != nil { - return err - } - written = written + wrote - } - - written = 0 - for written < len(data) { - wrote, err := conn.Write(data[written:]) - if err != nil { - return err - } - written = written + wrote - } - - return nil -} - -func extractFd(oob []byte) int { - // Grab forklock to make sure no forks accidentally inherit the new - // fds before they are made CLOEXEC - // There is a slight race condition between ReadMsgUnix returns and - // when we grap the lock, so this is not perfect. Unfortunately - // There is no way to pass MSG_CMSG_CLOEXEC to recvmsg() nor any - // way to implement non-blocking i/o in go, so this is hard to fix. - syscall.ForkLock.Lock() - defer syscall.ForkLock.Unlock() - scms, err := syscall.ParseSocketControlMessage(oob) - if err != nil { - return -1 - } - - foundFd := -1 - for _, scm := range scms { - fds, err := syscall.ParseUnixRights(&scm) - if err != nil { - continue - } - - for _, fd := range fds { - if foundFd == -1 { - syscall.CloseOnExec(fd) - foundFd = fd - } else { - syscall.Close(fd) - } - } - } - - return foundFd -} - -func socketpair() ([2]int, error) { - return syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM|syscall.FD_CLOEXEC, 0) -} - -// SocketPair is a convenience wrapper around the socketpair(2) syscall. -// It returns a unix socket of type SOCK_STREAM in the form of 2 file descriptors -// not bound to the underlying filesystem. -// Messages sent on one end are received on the other, and vice-versa. -// It is the caller's responsibility to close both ends. -func SocketPair() (a *os.File, b *os.File, err error) { - defer func() { - var ( - fdA int = -1 - fdB int = -1 - ) - if a != nil { - fdA = int(a.Fd()) - } - if b != nil { - fdB = int(b.Fd()) - } - debugCheckpoint("===DEBUG=== SocketPair() = [%d-%d]. Hit enter to confirm: ", fdA, fdB) - }() - pair, err := socketpair() - if err != nil { - return nil, nil, err - } - return os.NewFile(uintptr(pair[0]), ""), os.NewFile(uintptr(pair[1]), ""), nil -} - -func USocketPair() (*UnixConn, *UnixConn, error) { - debugCheckpoint("===DEBUG=== USocketPair(). Hit enter to confirm: ") - defer debugCheckpoint("===DEBUG=== USocketPair() returned. Hit enter to confirm ") - a, b, err := SocketPair() - if err != nil { - return nil, nil, err - } - defer a.Close() - defer b.Close() - uA, err := FileConn(a) - if err != nil { - return nil, nil, err - } - uB, err := FileConn(b) - if err != nil { - uA.Close() - return nil, nil, err - } - return uA, uB, nil -} - -// FdConn wraps a file descriptor in a standard *net.UnixConn object, or -// returns an error if the file descriptor does not point to a unix socket. -// This creates a duplicate file descriptor. It's the caller's responsibility -// to close both. -func FdConn(fd int) (n *net.UnixConn, err error) { - { - debugCheckpoint("===DEBUG=== FdConn([%d]) = (unknown fd). Hit enter to confirm: ", fd) - } - f := os.NewFile(uintptr(fd), fmt.Sprintf("%d", fd)) - conn, err := net.FileConn(f) - if err != nil { - return nil, err - } - uconn, ok := conn.(*net.UnixConn) - if !ok { - conn.Close() - return nil, fmt.Errorf("%d: not a unix connection", fd) - } - return uconn, nil -} diff --git a/beam/unix/unix_test.go b/beam/unix/unix_test.go deleted file mode 100644 index 7f947760b3..0000000000 --- a/beam/unix/unix_test.go +++ /dev/null @@ -1,237 +0,0 @@ -package unix - -import ( - "fmt" - "io/ioutil" - "testing" -) - -func TestSocketPair(t *testing.T) { - a, b, err := SocketPair() - if err != nil { - t.Fatal(err) - } - go func() { - a.Write([]byte("hello world!")) - fmt.Printf("done writing. closing\n") - a.Close() - fmt.Printf("done closing\n") - }() - data, err := ioutil.ReadAll(b) - if err != nil { - t.Fatal(err) - } - fmt.Printf("--> %s\n", data) - fmt.Printf("still open: %v\n", a.Fd()) -} - -func TestUSocketPair(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - - data := "hello world!" - go func() { - a.Write([]byte(data)) - a.Close() - }() - res := make([]byte, 1024) - size, err := b.Read(res) - if err != nil { - t.Fatal(err) - } - if size != len(data) { - t.Fatal("Unexpected size") - } - if string(res[0:size]) != data { - t.Fatal("Unexpected data") - } -} - -func TestSendUnixSocket(t *testing.T) { - a1, a2, err := USocketPair() - if err != nil { - t.Fatal(err) - } - // defer a1.Close() - // defer a2.Close() - b1, b2, err := USocketPair() - if err != nil { - t.Fatal(err) - } - // defer b1.Close() - // defer b2.Close() - glueA, glueB, err := SocketPair() - if err != nil { - t.Fatal(err) - } - // defer glueA.Close() - // defer glueB.Close() - go func() { - err := b2.Send([]byte("a"), glueB) - if err != nil { - t.Fatal(err) - } - }() - go func() { - err := a2.Send([]byte("b"), glueA) - if err != nil { - t.Fatal(err) - } - }() - connAhdr, connA, err := a1.Receive() - if err != nil { - t.Fatal(err) - } - if string(connAhdr) != "b" { - t.Fatalf("unexpected: %s", connAhdr) - } - connBhdr, connB, err := b1.Receive() - if err != nil { - t.Fatal(err) - } - if string(connBhdr) != "a" { - t.Fatalf("unexpected: %s", connBhdr) - } - fmt.Printf("received both ends: %v <-> %v\n", connA.Fd(), connB.Fd()) - go func() { - fmt.Printf("sending message on %v\n", connA.Fd()) - connA.Write([]byte("hello world")) - connA.Sync() - fmt.Printf("closing %v\n", connA.Fd()) - connA.Close() - }() - data, err := ioutil.ReadAll(connB) - if err != nil { - t.Fatal(err) - } - fmt.Printf("---> %s\n", data) - -} - -// Ensure we get proper segmenting of messages -func TestSendSegmenting(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - - extrafd1, extrafd2, err := SocketPair() - if err != nil { - t.Fatal(err) - } - extrafd2.Close() - - go func() { - a.Send([]byte("message 1"), nil) - a.Send([]byte("message 2"), extrafd1) - a.Send([]byte("message 3"), nil) - }() - - msg1, file1, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if string(msg1) != "message 1" { - t.Fatal("unexpected msg1:", string(msg1)) - } - if file1 != nil { - t.Fatal("unexpectedly got file1") - } - - msg2, file2, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if string(msg2) != "message 2" { - t.Fatal("unexpected msg2:", string(msg2)) - } - if file2 == nil { - t.Fatal("didn't get file2") - } - file2.Close() - - msg3, file3, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if string(msg3) != "message 3" { - t.Fatal("unexpected msg3:", string(msg3)) - } - if file3 != nil { - t.Fatal("unexpectedly got file3") - } - -} - -// Test sending a zero byte message -func TestSendEmpty(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - go func() { - a.Send([]byte{}, nil) - }() - - msg, file, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if len(msg) != 0 { - t.Fatalf("unexpected non-empty message: %v", msg) - } - if file != nil { - t.Fatal("unexpectedly got file") - } - -} - -func makeLarge(size int) []byte { - res := make([]byte, size) - for i := range res { - res[i] = byte(i % 255) - } - return res -} - -func verifyLarge(data []byte, size int) bool { - if len(data) != size { - return false - } - for i := range data { - if data[i] != byte(i%255) { - return false - } - } - return true -} - -// Test sending a large message -func TestSendLarge(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - go func() { - a.Send(makeLarge(100000), nil) - }() - - msg, file, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if !verifyLarge(msg, 100000) { - t.Fatalf("unexpected message (size %d)", len(msg)) - } - if file != nil { - t.Fatal("unexpectedly got file") - } -} diff --git a/beam/utils/buf.go b/beam/utils/buf.go deleted file mode 100644 index 226c1fea38..0000000000 --- a/beam/utils/buf.go +++ /dev/null @@ -1,17 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" -) - -type Buffer []*beam.Message - -func (buf *Buffer) Send(msg *beam.Message) (beam.Receiver, error) { - (*buf) = append(*buf, msg) - return beam.NopReceiver{}, nil -} - -func (buf *Buffer) Close() error { - (*buf) = nil - return nil -} diff --git a/beam/utils/queue.go b/beam/utils/queue.go deleted file mode 100644 index 9da2fad953..0000000000 --- a/beam/utils/queue.go +++ /dev/null @@ -1,41 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" -) - -type Queue struct { - *beam.PipeSender - dst beam.Sender - ch chan *beam.Message -} - -func NewQueue(dst beam.Sender, size int) *Queue { - r, w := beam.Pipe() - q := &Queue{ - PipeSender: w, - dst: dst, - ch: make(chan *beam.Message, size), - } - go func() { - defer close(q.ch) - for { - msg, err := r.Receive(beam.Ret) - if err != nil { - r.Close() - return - } - q.ch <- msg - } - }() - go func() { - for msg := range q.ch { - _, err := dst.Send(msg) - if err != nil { - r.Close() - return - } - } - }() - return q -} diff --git a/beam/utils/queue_test.go b/beam/utils/queue_test.go deleted file mode 100644 index 3319f4076a..0000000000 --- a/beam/utils/queue_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" - "testing" -) - -func TestSendRet(t *testing.T) { - r, w := beam.Pipe() - defer r.Close() - defer w.Close() - q := NewQueue(w, 1) - defer q.Close() - ret, err := q.Send(&beam.Message{Verb: beam.Log, Args: []string{"ping"}, Ret: beam.RetPipe}) - if err != nil { - t.Fatal(err) - } - go func() { - ping, err := r.Receive(beam.Ret) - if err != nil { - t.Fatal(err) - } - if _, err := ping.Ret.Send(&beam.Message{Verb: beam.Log, Args: []string{"pong"}}); err != nil { - t.Fatal(err) - } - }() - pong, err := ret.Receive(0) - if err != nil { - t.Fatal(err) - } - if pong.Verb != beam.Log { - t.Fatal(err) - } -} - -func TestSendClose(t *testing.T) { - q := NewQueue(beam.NopSender{}, 1) - q.Send(&beam.Message{Verb: beam.Error, Args: []string{"hello"}}) - q.Close() - if _, err := q.Send(&beam.Message{Verb: beam.Ack, Args: []string{"again"}}); err == nil { - t.Fatal("send on closed queue should return an error") - } -} diff --git a/beam/utils/stack.go b/beam/utils/stack.go deleted file mode 100644 index 1d2c0188ce..0000000000 --- a/beam/utils/stack.go +++ /dev/null @@ -1,112 +0,0 @@ -package utils - -import ( - "container/list" - "fmt" - "github.com/docker/libswarm/beam" - "strings" - "sync" -) - -// StackSender forwards beam messages to a dynamic list of backend receivers. -// New backends are stacked on top. When a message is sent, each backend is -// tried until one succeeds. Any failing backends encountered along the way -// are removed from the queue. -type StackSender struct { - stack *list.List - l sync.RWMutex -} - -func NewStackSender() *StackSender { - stack := list.New() - return &StackSender{ - stack: stack, - } -} - -func (s *StackSender) Send(msg *beam.Message) (ret beam.Receiver, err error) { - completed := s.walk(func(h beam.Sender) (ok bool) { - ret, err = h.Send(msg) - fmt.Printf("[stacksender] sending %v to %#v returned %v\n", msg, h, err) - if err == nil { - return true - } - return false - }) - // If walk was completed, it means we didn't find a valid handler - if !completed { - return ret, err - } - // Silently drop messages if no valid backend is available. - return beam.NopSender{}.Send(msg) -} - -func (s *StackSender) Add(dst beam.Sender) *StackSender { - s.l.Lock() - defer s.l.Unlock() - prev := &StackSender{ - stack: list.New(), - } - prev.stack.PushFrontList(s.stack) - fmt.Printf("[ADD] prev %#v\n", prev) - s.stack.PushFront(dst) - return prev -} - -func (s *StackSender) Close() error { - s.walk(func(h beam.Sender) bool { - h.Close() - // remove all handlers - return false - }) - return nil -} - -func (s *StackSender) _walk(f func(*list.Element) bool) bool { - var e *list.Element - s.l.RLock() - e = s.stack.Front() - s.l.RUnlock() - for e != nil { - fmt.Printf("[StackSender.Walk] %v\n", e.Value.(beam.Sender)) - s.l.RLock() - next := e.Next() - s.l.RUnlock() - cont := f(e) - if !cont { - return false - } - e = next - } - return true -} - -func (s *StackSender) walk(f func(beam.Sender) bool) bool { - return s._walk(func(e *list.Element) bool { - ok := f(e.Value.(beam.Sender)) - if ok { - // Found a valid handler. Stop walking. - return false - } - // Invalid handler: remove. - s.l.Lock() - s.stack.Remove(e) - s.l.Unlock() - return true - }) -} - -func (s *StackSender) Len() int { - s.l.RLock() - defer s.l.RUnlock() - return s.stack.Len() -} - -func (s *StackSender) String() string { - var parts []string - s._walk(func(e *list.Element) bool { - parts = append(parts, fmt.Sprintf("%v", e.Value.(beam.Sender))) - return true - }) - return fmt.Sprintf("%d:[%s]", len(parts), strings.Join(parts, "->")) -} diff --git a/beam/utils/stack_test.go b/beam/utils/stack_test.go deleted file mode 100644 index fb18772ea8..0000000000 --- a/beam/utils/stack_test.go +++ /dev/null @@ -1,127 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/unix" - "github.com/dotcloud/docker/pkg/testutils" - "strings" - "testing" -) - -func TestStackWithPipe(t *testing.T) { - r, w := beam.Pipe() - defer r.Close() - defer w.Close() - s := NewStackSender() - s.Add(w) - testutils.Timeout(t, func() { - go func() { - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != beam.Log { - t.Fatalf("%#v", msg) - } - if strings.Join(msg.Args, " ") != "wonderful world" { - t.Fatalf("%#v", msg) - } - }() - _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"wonderful", "world"}}) - if err != nil { - t.Fatal(err) - } - }) -} - -func TestStackWithPair(t *testing.T) { - r, w, err := unix.Pair() - if err != nil { - t.Fatal(err) - } - defer r.Close() - defer w.Close() - s := NewStackSender() - s.Add(w) - testutils.Timeout(t, func() { - go func() { - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != beam.Log { - t.Fatalf("%#v", msg) - } - if strings.Join(msg.Args, " ") != "wonderful world" { - t.Fatalf("%#v", msg) - } - }() - _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"wonderful", "world"}}) - if err != nil { - t.Fatal(err) - } - }) -} - -func TestStackLen(t *testing.T) { - s := NewStackSender() - if s.Len() != 0 { - t.Fatalf("empty StackSender has length %d", s.Len()) - } -} - -func TestStackAdd(t *testing.T) { - s := NewStackSender() - a := Buffer{} - beforeA := s.Add(&a) - // Add on an empty StackSender should return an empty StackSender - if beforeA.Len() != 0 { - t.Fatalf("%s has %d elements", beforeA, beforeA.Len()) - } - if s.Len() != 1 { - t.Fatalf("%#v", beforeA) - } - // Add a 2nd element - b := Buffer{} - beforeB := s.Add(&b) - if beforeB.Len() != 1 { - t.Fatalf("%#v", beforeA) - } - if s.Len() != 2 { - t.Fatalf("%#v", beforeA) - } - s.Send(&beam.Message{Verb: beam.Log, Args: []string{"for b"}}) - beforeB.Send(&beam.Message{Verb: beam.Log, Args: []string{"for a"}}) - beforeA.Send(&beam.Message{Verb: beam.Log, Args: []string{"for nobody"}}) - if len(a) != 1 { - t.Fatalf("%#v", a) - } - if len(b) != 1 { - t.Fatalf("%#v", b) - } -} - -// Misbehaving backends must be removed -func TestStackAddBad(t *testing.T) { - s := NewStackSender() - buf := Buffer{} - s.Add(&buf) - r, w := beam.Pipe() - s.Add(w) - if s.Len() != 2 { - t.Fatalf("%#v", s) - } - r.Close() - if _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"for the buffer"}}); err != nil { - t.Fatal(err) - } - if s.Len() != 1 { - t.Fatalf("%#v") - } - if len(buf) != 1 { - t.Fatalf("%#v", buf) - } - if buf[0].Args[0] != "for the buffer" { - t.Fatalf("%#v", buf) - } -} diff --git a/beam/verbs.go b/beam/verbs.go index 1cacb90627..ad10ca4a3b 100644 --- a/beam/verbs.go +++ b/beam/verbs.go @@ -1,5 +1,9 @@ package beam +import ( + "fmt" +) + type Verb uint32 const ( @@ -18,6 +22,38 @@ const ( Watch ) +func VerbFromString(s string) (Verb, error) { + switch s { + case "Ack": + return Ack, nil + case "Attach": + return Attach, nil + case "Connect": + return Connect, nil + case "Error": + return Error, nil + case "File": + return File, nil + case "Get": + return Get, nil + case "Log": + return Log, nil + case "Ls": + return Ls, nil + case "Set": + return Set, nil + case "Spawn": + return Spawn, nil + case "Start": + return Start, nil + case "Stop": + return Stop, nil + case "Watch": + return Watch, nil + } + return 0, fmt.Errorf("Unrecognised verb: %s", s) +} + func (v Verb) String() string { switch v { case Ack: diff --git a/beam/ws/ws.go b/beam/ws/ws.go deleted file mode 100644 index f6c03a9424..0000000000 --- a/beam/ws/ws.go +++ /dev/null @@ -1,72 +0,0 @@ -package ws - -import ( - "errors" - "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/http2" - "github.com/docker/spdystream/ws" - "github.com/gorilla/websocket" - "net/http" -) - -// Connect to a Beam server over a Websocket connection as a client -func NewSender(wsConn *websocket.Conn) (beam.Sender, error) { - session, err := http2.NewStreamSession(ws.NewConnection(wsConn)) - if err != nil { - return nil, err - } - return session, nil -} - -// Upgrade an HTTP connection to a Beam over HTTP2 over -// Websockets connection. -type Upgrader struct { - Upgrader websocket.Upgrader -} - -func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*http2.Server, error) { - wsConn, err := u.Upgrader.Upgrade(w, r, responseHeader) - if err != nil { - return nil, err - } - - netConn := ws.NewConnection(wsConn) - server, err := http2.NewServer(netConn) - if err != nil { - netConn.Close() - return nil, err - } - - return server, nil -} - -// Returns true if a handshake error occured in websockets, which means -// a response has already been written to the stream. -func IsHandshakeError(err error) bool { - _, ok := err.(websocket.HandshakeError) - return ok -} - -type BeamFunc func(beam.Receiver) - -// Handler function for serving Beam over HTTP. Will invoke f and -// then close the server's Beam endpoint after f returns. -func Serve(u *Upgrader, f BeamFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - if r.Method != "GET" { - u.Upgrader.Error(w, r, http.StatusMethodNotAllowed, errors.New("Method not allowed")) - return - } - - server, err := u.Upgrade(w, r, nil) - if err != nil { - if !IsHandshakeError(err) { - u.Upgrader.Error(w, r, http.StatusInternalServerError, errors.New("Unable to open an HTTP2 connection over Websockets")) - } - return - } - defer server.Close() - - f(server) - } -} diff --git a/beam/ws/ws_test.go b/beam/ws/ws_test.go deleted file mode 100644 index 6dd96a6645..0000000000 --- a/beam/ws/ws_test.go +++ /dev/null @@ -1,73 +0,0 @@ -package ws - -import ( - "github.com/docker/libswarm/beam" - "github.com/gorilla/websocket" - "io" - "net/http" - "net/http/httptest" - "strings" - "testing" -) - -func TestServe(t *testing.T) { - gotAck := make(chan bool) - u := &Upgrader{} - server := httptest.NewServer(Serve(u, func(r beam.Receiver) { - msg, msgErr := r.Receive(beam.Ret) - if msgErr != nil { - t.Fatalf("Error receiving message: %s", msgErr) - } - if msg.Att == nil { - t.Fatalf("Error message missing attachment") - } - if msg.Verb != beam.Attach { - t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Attach) - } - - receiver, sendErr := msg.Ret.Send(&beam.Message{Verb: beam.Ack}) - if sendErr != nil { - t.Fatalf("Error sending return message: %s", sendErr) - } - - _, ackErr := receiver.Receive(0) - if ackErr == nil { - t.Fatalf("No error receiving from message with no return pipe") - } - if ackErr != io.EOF { - t.Fatalf("Unexpected error receiving from message: %s", ackErr) - } - - <-gotAck - })) - - wsConn, _, err := websocket.DefaultDialer.Dial(strings.Replace(server.URL, "http://", "ws://", 1), http.Header{"Origin": {server.URL}}) - if err != nil { - t.Fatal(err) - } - sender, senderErr := NewSender(wsConn) - if senderErr != nil { - t.Fatalf("Error creating sender: %s", senderErr) - } - - receiver, sendErr := sender.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) - if sendErr != nil { - t.Fatalf("Error sending message: %s", sendErr) - } - - msg, receiveErr := receiver.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving message") - } - - if msg.Verb != beam.Ack { - t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Ack) - } - - gotAck <- true - - shutdownErr := sender.Close() - if shutdownErr != nil && !strings.Contains(shutdownErr.Error(), "broken pipe") { - t.Fatalf("Error closing: %s", shutdownErr) - } -} From 49fe0eb7ac877f99452a3bb9d3c901eb76a4c867 Mon Sep 17 00:00:00 2001 From: John Hopper Date: Wed, 18 Jun 2014 10:28:14 -0500 Subject: [PATCH 252/347] Cleanup and Enhance Debug Signed-off-by: John Hopper john.hopper@jpserver.net --- backends/backends.go | 3 +- backends/debug.go | 31 ------------- utils/debug.go | 108 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 32 deletions(-) delete mode 100644 backends/debug.go create mode 100644 utils/debug.go diff --git a/backends/backends.go b/backends/backends.go index 6a5b1517cf..eb4d30118e 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -2,6 +2,7 @@ package backends import ( "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/utils" ) // New returns a new engine, with all backends @@ -13,7 +14,7 @@ import ( func New() *beam.Object { backends := beam.NewTree() backends.Bind("simulator", Simulator()) - backends.Bind("debug", Debug()) + backends.Bind("debug", utils.Debug()) backends.Bind("fakeclient", FakeClient()) backends.Bind("dockerclient", DockerClient()) backends.Bind("exec", Exec()) diff --git a/backends/debug.go b/backends/debug.go deleted file mode 100644 index fa8020676f..0000000000 --- a/backends/debug.go +++ /dev/null @@ -1,31 +0,0 @@ -package backends - -import ( - "fmt" - "strings" - - "github.com/docker/libswarm/beam" -) - -func Debug() beam.Sender { - backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { - instance := beam.Task(func(in beam.Receiver, out beam.Sender) { - for { - msg, err := in.Receive(beam.Ret) - if err != nil { - fmt.Printf("debug receive: %v", err) - return - } - fmt.Printf("[DEBUG] %s %s\n", msg.Verb, strings.Join(msg.Args, " ")) - if _, err := out.Send(msg); err != nil { - fmt.Printf("debug send: %v", err) - return - } - } - }) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) - return err - })) - return backend -} diff --git a/utils/debug.go b/utils/debug.go new file mode 100644 index 0000000000..462c09ab6d --- /dev/null +++ b/utils/debug.go @@ -0,0 +1,108 @@ +package utils + +import ( + "fmt" + "log" + + "github.com/docker/libswarm/beam" +) + +// The Debug service is an example of intercepting messages between a receiver and a sender. +// The service also exposes messages passing through it for debug purposes. +func Debug() beam.Sender { + dbgInstance := &debug{ + service: beam.NewServer(), + } + + sender := beam.NewServer() + sender.OnSpawn(beam.Handler(dbgInstance.spawn)) + return sender +} + +// Function for forwarding a messgae including some minor error formatting +func forward(out beam.Sender, msg *beam.Message) (err error) { + if _, err := out.Send(msg); err != nil { + return fmt.Errorf("[debug] Failed to forward msg. Reason: %v\n", err) + } + return +} + +// Debug service type +type debug struct { + service *beam.Server + in beam.Receiver + out beam.Sender +} + +// Spawn will return a new instance as the Ret channel of the message sent back +func (dbg *debug) spawn(msg *beam.Message) (err error) { + // By sending back a task, beam will run the function with the in and out arguments + // set to the services present before and after this one in the pipeline. + instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + // Setup our channels + dbg.in = in + dbg.out = out + + // Set up the debug interceptor + dbg.service.Catchall(beam.Handler(dbg.catchall)) + + // Copy everything from the receiver to our service. By copying like this in the task + // we can use the catchall handler instead of handling the message here. + beam.Copy(dbg.service, in) + }) + + // Inform the system of our new instance + msg.Ret.Send(&beam.Message{ + Verb: beam.Ack, + Ret: instance, + }) + + return +} + +// Catches all messages sent to the service +func (dbg *debug) catchall(msg *beam.Message) (err error) { + log.Printf("[debug] ---> Upstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) + + // If there's no output after us then we'll just reply with an error + // informing the receiver that the verb is not implemented. + if dbg.out == nil { + return fmt.Errorf("[debug] Verb: %s is not implemented.", msg.Verb) + } + + // The forwarded message has the return channel set to a new replyHandler. The replyHandler is a small + // callback that allows for interception of downstream messages. + forwardedMessage := &beam.Message{ + Verb: msg.Verb, + Args: msg.Args, + Att: msg.Att, + Ret: &replyHandler{ + out: msg.Ret, + }, + } + + // Send the forwarded message + if err := forward(dbg.out, forwardedMessage); err == nil { + // Hijack the return channel so we can avoid any interference with things such as close + msg.Ret = beam.NopSender{} + } + + return +} + +// We use a replyHandler to provide context for relaying the return channel +// of the origin message. +type replyHandler struct { + out beam.Sender +} + +// Send a message using the out channel +func (rh *replyHandler) Send(msg *beam.Message) (receiver beam.Receiver, err error) { + log.Printf("[debug] <--- Downstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) + return nil, forward(rh.out, msg) +} + +func (rh *replyHandler) Close() (err error) { + // Since we don't allow the downstream handler to close the return channel, we do so here. + return rh.out.Close() +} From 4d5fa345198da83273bc1d2822879ef6ce283b9a Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Wed, 18 Jun 2014 17:50:36 +0100 Subject: [PATCH 253/347] Basic tests for Message/Sender/Receiver Signed-off-by: Aanand Prasad --- beam/message_test.go | 139 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 beam/message_test.go diff --git a/beam/message_test.go b/beam/message_test.go new file mode 100644 index 0000000000..8987cb199e --- /dev/null +++ b/beam/message_test.go @@ -0,0 +1,139 @@ +package beam + +import ( + "io/ioutil" + "reflect" + "testing" +) + +func TestVerbArgs(t *testing.T) { + receiver, sender := Pipe() + sentMsg := &Message{Verb: Set, Args: []string{"foo", "bar"}} + + go sender.Send(sentMsg) + + receivedMsg, err := receiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if receivedMsg == nil { + t.Fatalf("Didn't get a message") + } + if receivedMsg.Verb != sentMsg.Verb { + t.Fatalf("Expected %s, got %s", sentMsg.Verb.String(), receivedMsg.Verb.String()) + } + if !reflect.DeepEqual(receivedMsg.Args, sentMsg.Args) { + t.Fatalf("Expected %#v, got %#v", sentMsg.Args, receivedMsg.Args) + } +} + +func TestReturnChannel(t *testing.T) { + receiver, sender := Pipe() + replyReceiver, replySender := Pipe() + + go func() { + receivedMsg, err := receiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if receivedMsg == nil { + t.Fatalf("Didn't get a message") + } + receivedMsg.Ret.Send(&Message{Verb: Set}) + }() + + _, err := sender.Send(&Message{Verb: Get, Ret: replySender}) + if err != nil { + t.Fatal(err) + } + + reply, err := replyReceiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if reply == nil { + t.Fatalf("Didn't get a reply") + } + if reply.Verb != Set { + t.Fatalf("Expected Set, got %s", reply.Verb.String()) + } +} + +func TestRetPipe(t *testing.T) { + receiver, sender := Pipe() + + go func() { + receivedMsg, err := receiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if receivedMsg == nil { + t.Fatalf("Didn't get a message") + } + receivedMsg.Ret.Send(&Message{Verb: Set}) + }() + + replyReceiver, err := sender.Send(&Message{Verb: Get, Ret: RetPipe}) + if err != nil { + t.Fatal(err) + } + + reply, err := replyReceiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if reply == nil { + t.Fatalf("Didn't get a reply") + } + if reply.Verb != Set { + t.Fatalf("Expected Set, got %s", reply.Verb.String()) + } +} + +func TestAttachment(t *testing.T) { + expectedContents := "hello world\n" + + f, err := ioutil.TempFile("/tmp", "libswarm-beam-TestAttachment-") + if err != nil { + t.Fatal(err) + } + defer f.Close() + if err = ioutil.WriteFile(f.Name(), []byte(expectedContents), 0700); err != nil { + t.Fatal(err) + } + if err = f.Sync(); err != nil { + t.Fatal(err) + } + + receiver, sender := Pipe() + + go func() { + msg, err := receiver.Receive(0) + if err != nil { + t.Fatal(err) + } + + msg.Ret.Send(&Message{Verb: Connect, Att: f}) + }() + + ret, err := sender.Send(&Message{Verb: Connect, Ret: RetPipe}) + if err != nil { + t.Fatal(err) + } + + reply, err := ret.Receive(0) + if err != nil { + t.Fatal(err) + } + if reply.Att == nil { + t.Fatalf("Didn't get an attachment back") + } + + contents, err := ioutil.ReadAll(reply.Att) + if err != nil { + t.Fatal(err) + } + if string(contents) != expectedContents { + t.Fatalf("Expected %#v, got %#v", expectedContents, string(contents)) + } +} From 9c75e10e100ae263dffa7926dab6caf67705e71b Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 17 Jun 2014 10:40:46 -0700 Subject: [PATCH 254/347] Add maintainers for individual backends Signed-off-by: Solomon Hykes --- backends/MAINTAINERS | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 backends/MAINTAINERS diff --git a/backends/MAINTAINERS b/backends/MAINTAINERS new file mode 100644 index 0000000000..53606f729f --- /dev/null +++ b/backends/MAINTAINERS @@ -0,0 +1,6 @@ +dockerserver.go: Ben Firshman (github: bfirsh) +dockerclient.go: Aanand Prasad (github: aanand) +rax.go: John Hopper (github: zinic) +tutum.go: Fernando Mayo (github: fermayo) +orchard.go: Aanand Prasad (github: aanand) +cloud.go: Brendan Burns (github: brendandburns) From 5a138ca5f7d84a7a9e2d928d7d71ded6c266ac78 Mon Sep 17 00:00:00 2001 From: fermayo Date: Sat, 14 Jun 2014 16:49:56 +0200 Subject: [PATCH 255/347] Update exposed ports mapping Docker-DCO-1.1-Signed-off-by: Fernando Mayo (github: fermayo) --- backends/dockerserver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index d6fe22d8fd..8d9de4c2f1 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -157,7 +157,7 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response } } else { newport := port{ - PublicPort: portnum, + PrivatePort: portnum, Type: proto, } ports = append(ports, newport) From eedfdd348e6afc4f82d72a43bfdd221b0108ca2a Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 18 Jun 2014 20:28:07 -0700 Subject: [PATCH 256/347] Move debug.go to a `debug` sub-package Signed-off-by: Solomon Hykes --- backends/backends.go | 4 ++-- {utils => debug}/debug.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename {utils => debug}/debug.go (99%) diff --git a/backends/backends.go b/backends/backends.go index eb4d30118e..6cb2c22049 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -2,7 +2,7 @@ package backends import ( "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/utils" + "github.com/docker/libswarm/debug" ) // New returns a new engine, with all backends @@ -14,7 +14,7 @@ import ( func New() *beam.Object { backends := beam.NewTree() backends.Bind("simulator", Simulator()) - backends.Bind("debug", utils.Debug()) + backends.Bind("debug", debug.Debug()) backends.Bind("fakeclient", FakeClient()) backends.Bind("dockerclient", DockerClient()) backends.Bind("exec", Exec()) diff --git a/utils/debug.go b/debug/debug.go similarity index 99% rename from utils/debug.go rename to debug/debug.go index 462c09ab6d..c287fc4bd8 100644 --- a/utils/debug.go +++ b/debug/debug.go @@ -1,4 +1,4 @@ -package utils +package debug import ( "fmt" From 16b41ba49f7f30d7a650cce330b214445ad559da Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 18 Jun 2014 23:50:07 -0700 Subject: [PATCH 257/347] Implement NopSender (removed by switch to libchan) Signed-off-by: Solomon Hykes --- beam/nop.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 beam/nop.go diff --git a/beam/nop.go b/beam/nop.go new file mode 100644 index 0000000000..9d3cabb392 --- /dev/null +++ b/beam/nop.go @@ -0,0 +1,30 @@ +package beam + +import ( + "github.com/docker/libchan" + "io" +) + +type NopSender struct{} + +func (s NopSender) Send(msg *Message) (Receiver, error) { + return NopReceiver{}, nil +} + +func (s NopSender) Close() error { + return nil +} + +func (s NopSender) Unwrap() libchan.Sender { + return libchan.NopSender{} +} + +type NopReceiver struct{} + +func (r NopReceiver) Receive(mode int) (*Message, error) { + return nil, io.EOF +} + +func (r NopReceiver) Unwrap() libchan.Receiver { + return libchan.NopReceiver{} +} From 3f56e4eb5cc18edac8d1bb02980da5b87fdcecb3 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 18 Jun 2014 23:50:26 -0700 Subject: [PATCH 258/347] Fix debug after switch to libchan Signed-off-by: Solomon Hykes --- debug/debug.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debug/debug.go b/debug/debug.go index c287fc4bd8..4b57007f00 100644 --- a/debug/debug.go +++ b/debug/debug.go @@ -77,7 +77,7 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) { Args: msg.Args, Att: msg.Att, Ret: &replyHandler{ - out: msg.Ret, + Sender: msg.Ret, }, } @@ -93,16 +93,16 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) { // We use a replyHandler to provide context for relaying the return channel // of the origin message. type replyHandler struct { - out beam.Sender + beam.Sender } // Send a message using the out channel func (rh *replyHandler) Send(msg *beam.Message) (receiver beam.Receiver, err error) { log.Printf("[debug] <--- Downstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) - return nil, forward(rh.out, msg) + return nil, forward(rh.Sender, msg) } func (rh *replyHandler) Close() (err error) { // Since we don't allow the downstream handler to close the return channel, we do so here. - return rh.out.Close() + return rh.Sender.Close() } From 3cdf6480f05218d6d427e48316d7284b2598f279 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:27:52 +0100 Subject: [PATCH 259/347] Assert that stubbed requests are actually called in dockerclient test Signed-off-by: Aanand Prasad --- backends/dockerclient_test.go | 105 ++++++++++++++++++++++++---------- 1 file changed, 76 insertions(+), 29 deletions(-) diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go index 4c5948893a..cd8e5405c0 100644 --- a/backends/dockerclient_test.go +++ b/backends/dockerclient_test.go @@ -57,6 +57,7 @@ func TestLs(t *testing.T) { if !reflect.DeepEqual(names, expected) { t.Fatalf("expected %#v, got %#v", expected, names) } + server.Check() } func TestSpawn(t *testing.T) { @@ -73,6 +74,7 @@ func TestSpawn(t *testing.T) { if err != nil { t.Fatal(err) } + server.Check() } func TestAttachToChild(t *testing.T) { @@ -85,6 +87,7 @@ func TestAttachToChild(t *testing.T) { }) i := instance(t, server) child(t, server, i, name) + server.Check() } func TestStartChild(t *testing.T) { @@ -107,6 +110,7 @@ func TestStartChild(t *testing.T) { if err != nil { t.Fatal(err) } + server.Check() } func TestStopChild(t *testing.T) { @@ -128,42 +132,85 @@ func TestStopChild(t *testing.T) { if err != nil { t.Fatal(err) } + server.Check() } -func makeServer(t *testing.T, stubs ...*requestStub) *httptest.Server { +type stubRecord struct { + stub *requestStub + summary string + callCount int +} + +type stubServer struct { + *httptest.Server + + stubs []*stubRecord + t *testing.T +} + +func makeServer(t *testing.T, stubs ...*requestStub) *stubServer { + s := &stubServer{ + stubs: []*stubRecord{}, + t: t, + } + + s.Server = httptest.NewServer(http.HandlerFunc(s.ServeRequest)) + for _, stub := range stubs { stub.reqPath = fmt.Sprintf("/v1.11%s", stub.reqPath) + s.stubs = append(s.stubs, &stubRecord{ + stub: stub, + summary: fmt.Sprintf("%s %s", stub.reqMethod, stub.reqPath), + callCount: 0, + }) } - stubSummaries := []string{} - for _, stub := range stubs { - stubSummaries = append(stubSummaries, fmt.Sprintf("%s %s", stub.reqMethod, stub.reqPath)) - } - - return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - for _, stub := range stubs { - if r.Method == stub.reqMethod && r.URL.Path == stub.reqPath { - body, err := ioutil.ReadAll(r.Body) - if err != nil { - t.Fatal(err) - } - if string(body) != stub.reqBody { - t.Fatalf("expected body: %#v, got body: %#v", stub.reqBody, string(body)) - } - - if stub.resStatus > 0 { - w.WriteHeader(stub.resStatus) - } - w.Write([]byte(stub.resBody)) - return - } - } - - t.Fatalf("Unexpected request: '%s %s'.\nStubs: %#v", r.Method, r.URL.Path, stubSummaries) - })) + return s } -func instance(t *testing.T, server *httptest.Server) *beam.Object { +func (s *stubServer) Check() { + for _, record := range s.stubs { + if record.callCount != 1 { + s.t.Fatalf("Expected %#v to be called exactly once, but was called %d times", + record.summary, record.callCount) + } + } +} + +func (s *stubServer) ServeRequest(w http.ResponseWriter, r *http.Request) { + for _, record := range s.stubs { + stub := record.stub + if r.Method == stub.reqMethod && r.URL.Path == stub.reqPath { + body, err := ioutil.ReadAll(r.Body) + if err != nil { + s.t.Fatal(err) + } + if string(body) != stub.reqBody { + s.t.Fatalf("expected body: %#v, got body: %#v", stub.reqBody, string(body)) + } + + if stub.resStatus > 0 { + w.WriteHeader(stub.resStatus) + } + w.Write([]byte(stub.resBody)) + + record.callCount += 1 + return + } + } + + s.t.Fatalf("Unexpected request: '%s %s'.\nStubs: %#v", r.Method, r.URL.Path, s.AllSummaries()) +} + +func (s *stubServer) AllSummaries() []string { + summaries := []string{} + for _, record := range s.stubs { + summaries = append(summaries, record.summary) + } + return summaries +} + +func instance(t *testing.T, server *stubServer) *beam.Object { url := "tcp://localhost:4243" if server != nil { url = strings.Replace(server.URL, "http://", "tcp://", 1) @@ -177,7 +224,7 @@ func instance(t *testing.T, server *httptest.Server) *beam.Object { return instance } -func child(t *testing.T, server *httptest.Server, i *beam.Object, name string) *beam.Object { +func child(t *testing.T, server *stubServer, i *beam.Object, name string) *beam.Object { _, child, err := i.Attach(name) if err != nil { t.Fatal(err) From 75714361ef7d51af2489a28288594ac0e18cff4d Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 12:15:06 +0100 Subject: [PATCH 260/347] Remove verb-specific handler methods from Server Signed-off-by: Aanand Prasad --- backends/aggregate.go | 8 ++++---- backends/dockerclient.go | 18 +++++++++--------- backends/dockerserver.go | 2 +- backends/exec.go | 6 +++--- backends/fakeclient.go | 2 +- backends/orchard.go | 2 +- backends/shipyard.go | 10 +++++----- backends/simulator.go | 4 ++-- backends/tutum.go | 16 ++++++++-------- beam/server.go | 32 -------------------------------- beam/task.go | 4 ++-- beam/tree.go | 4 ++-- debug/debug.go | 2 +- 13 files changed, 39 insertions(+), 71 deletions(-) diff --git a/backends/aggregate.go b/backends/aggregate.go index 4fa852696e..a836e235d6 100644 --- a/backends/aggregate.go +++ b/backends/aggregate.go @@ -11,7 +11,7 @@ import ( func Aggregate() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { allBackends := New() instance := beam.NewServer() @@ -20,9 +20,9 @@ func Aggregate() beam.Sender { return err } - instance.OnAttach(beam.Handler(a.attach)) - instance.OnStart(beam.Handler(a.start)) - instance.OnLs(beam.Handler(a.ls)) + instance.OnVerb(beam.Attach, beam.Handler(a.attach)) + instance.OnVerb(beam.Start, beam.Handler(a.start)) + instance.OnVerb(beam.Ls, beam.Handler(a.ls)) _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) return err diff --git a/backends/dockerclient.go b/backends/dockerclient.go index e2b0f50113..b43085a2f2 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -31,7 +31,7 @@ func DockerClient() beam.Sender { func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 1 { return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } @@ -44,10 +44,10 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { client: client, Server: beam.NewServer(), } - b.Server.OnAttach(beam.Handler(b.attach)) - b.Server.OnStart(beam.Handler(b.start)) - b.Server.OnLs(beam.Handler(b.ls)) - b.Server.OnSpawn(beam.Handler(b.spawn)) + b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) + b.Server.OnVerb(beam.Start, beam.Handler(b.start)) + b.Server.OnVerb(beam.Ls, beam.Handler(b.ls)) + b.Server.OnVerb(beam.Spawn, beam.Handler(b.spawn)) _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) return err })) @@ -140,10 +140,10 @@ func (b *dockerClientBackend) spawn(ctx *beam.Message) error { func (b *dockerClientBackend) newContainer(id string) beam.Sender { c := &container{backend: b, id: id} instance := beam.NewServer() - instance.OnAttach(beam.Handler(c.attach)) - instance.OnStart(beam.Handler(c.start)) - instance.OnStop(beam.Handler(c.stop)) - instance.OnGet(beam.Handler(c.get)) + instance.OnVerb(beam.Attach, beam.Handler(c.attach)) + instance.OnVerb(beam.Start, beam.Handler(c.start)) + instance.OnVerb(beam.Stop, beam.Handler(c.stop)) + instance.OnVerb(beam.Get, beam.Handler(c.get)) return instance } diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 8d9de4c2f1..7e58fccce1 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -21,7 +21,7 @@ import ( func DockerServer() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { instance := beam.Task(func(in beam.Receiver, out beam.Sender) { url := "tcp://localhost:4243" if len(ctx.Args) > 0 { diff --git a/backends/exec.go b/backends/exec.go index 49251a39b3..edd949ff91 100644 --- a/backends/exec.go +++ b/backends/exec.go @@ -14,7 +14,7 @@ import ( func Exec() beam.Sender { e := beam.NewServer() - e.OnSpawn(beam.Handler(func(msg *beam.Message) error { + e.OnVerb(beam.Spawn, beam.Handler(func(msg *beam.Message) error { if len(msg.Args) < 1 { return fmt.Errorf("usage: SPAWN exec|... ") } @@ -33,7 +33,7 @@ func Exec() beam.Sender { Cmd: exec.Command(config.Path, config.Args...), Server: beam.NewServer(), } - cmd.OnAttach(beam.Handler(func(msg *beam.Message) error { + cmd.OnVerb(beam.Attach, beam.Handler(func(msg *beam.Message) error { stdout, err := cmd.StdoutPipe() if err != nil { return err @@ -76,7 +76,7 @@ func Exec() beam.Sender { cmd.tasks.Wait() return nil })) - cmd.OnStart(beam.Handler(func(msg *beam.Message) error { + cmd.OnVerb(beam.Start, beam.Handler(func(msg *beam.Message) error { cmd.tasks.Add(1) if err := cmd.Cmd.Start(); err != nil { return err diff --git a/backends/fakeclient.go b/backends/fakeclient.go index 2f51940299..157ab842b6 100644 --- a/backends/fakeclient.go +++ b/backends/fakeclient.go @@ -9,7 +9,7 @@ import ( func FakeClient() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { // Instantiate a new fakeclient instance instance := beam.Task(func(in beam.Receiver, out beam.Sender) { fmt.Printf("fake client!\n") diff --git a/backends/orchard.go b/backends/orchard.go index 1b30f873b7..3425c1e8bd 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -13,7 +13,7 @@ import ( func Orchard() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 2 { return fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host") } diff --git a/backends/shipyard.go b/backends/shipyard.go index 11b0bb2855..d05f4f2bb7 100644 --- a/backends/shipyard.go +++ b/backends/shipyard.go @@ -13,7 +13,7 @@ import ( func Shipyard() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 3 { return fmt.Errorf("Shipyard: Usage ") } @@ -21,10 +21,10 @@ func Shipyard() beam.Sender { c := &shipyard{url: ctx.Args[0], user: ctx.Args[1], pass: ctx.Args[2]} c.Server = beam.NewServer() - c.Server.OnAttach(beam.Handler(c.attach)) - c.Server.OnStart(beam.Handler(c.start)) - c.Server.OnLs(beam.Handler(c.containers)) - c.OnGet(beam.Handler(c.containerInspect)) + c.Server.OnVerb(beam.Attach, beam.Handler(c.attach)) + c.Server.OnVerb(beam.Start, beam.Handler(c.start)) + c.Server.OnVerb(beam.Ls, beam.Handler(c.containers)) + c.OnVerb(beam.Get, beam.Handler(c.containerInspect)) _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return err })) diff --git a/backends/simulator.go b/backends/simulator.go index b77577aa38..a2b81d957a 100644 --- a/backends/simulator.go +++ b/backends/simulator.go @@ -6,12 +6,12 @@ import ( func Simulator() beam.Sender { s := beam.NewServer() - s.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + s.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { containers := ctx.Args instance := beam.Task(func(in beam.Receiver, out beam.Sender) { beam.Obj(out).Log("[simulator] starting\n") s := beam.NewServer() - s.OnLs(beam.Handler(func(msg *beam.Message) error { + s.OnVerb(beam.Ls, beam.Handler(func(msg *beam.Message) error { beam.Obj(out).Log("[simulator] generating fake list of objects...\n") beam.Obj(msg.Ret).Set(containers...) return nil diff --git a/backends/tutum.go b/backends/tutum.go index dc83e56633..d9a1d41643 100644 --- a/backends/tutum.go +++ b/backends/tutum.go @@ -20,7 +20,7 @@ var ( func Tutum() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) == 2 { tutum.User = ctx.Args[0] tutum.ApiKey = ctx.Args[1] @@ -36,10 +36,10 @@ func Tutum() beam.Sender { tutumDockerConnector: tutumDockerConnector, Server: beam.NewServer(), } - t.Server.OnAttach(beam.Handler(t.attach)) - t.Server.OnStart(beam.Handler(t.ack)) - t.Server.OnLs(beam.Handler(t.ls)) - t.Server.OnSpawn(beam.Handler(t.spawn)) + t.Server.OnVerb(beam.Attach, beam.Handler(t.attach)) + t.Server.OnVerb(beam.Start, beam.Handler(t.ack)) + t.Server.OnVerb(beam.Ls, beam.Handler(t.ls)) + t.Server.OnVerb(beam.Spawn, beam.Handler(t.spawn)) _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) return err })) @@ -121,9 +121,9 @@ func (t *tutumBackend) spawn(ctx *beam.Message) error { func (t *tutumBackend) newContainer(id string) beam.Sender { c := &tutumContainer{tutumBackend: t, id: id} instance := beam.NewServer() - instance.OnGet(beam.Handler(c.get)) - instance.OnStart(beam.Handler(c.start)) - instance.OnStop(beam.Handler(c.stop)) + instance.OnVerb(beam.Get, beam.Handler(c.get)) + instance.OnVerb(beam.Start, beam.Handler(c.start)) + instance.OnVerb(beam.Stop, beam.Handler(c.stop)) return instance } diff --git a/beam/server.go b/beam/server.go index 5db5f513aa..d2012e415e 100644 --- a/beam/server.go +++ b/beam/server.go @@ -27,38 +27,6 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server { return s } -func (s *Server) OnSpawn(h Sender) *Server { - return s.OnVerb(Spawn, h) -} - -func (s *Server) OnStart(h Sender) *Server { - return s.OnVerb(Start, h) -} - -func (s *Server) OnStop(h Sender) *Server { - return s.OnVerb(Stop, h) -} - -func (s *Server) OnAttach(h Sender) *Server { - return s.OnVerb(Attach, h) -} - -func (s *Server) OnLog(h Sender) *Server { - return s.OnVerb(Log, h) -} - -func (s *Server) OnError(h Sender) *Server { - return s.OnVerb(Error, h) -} - -func (s *Server) OnLs(h Sender) *Server { - return s.OnVerb(Ls, h) -} - -func (s *Server) OnGet(h Sender) *Server { - return s.OnVerb(Get, h) -} - func (s *Server) Send(msg *Message) (Receiver, error) { if h, exists := s.handlers[msg.Verb]; exists { return h.Send(msg) diff --git a/beam/task.go b/beam/task.go index 94eb1c59fc..4ee3f95584 100644 --- a/beam/task.go +++ b/beam/task.go @@ -11,14 +11,14 @@ func Task(f func(in Receiver, out Sender)) Sender { inR, inW := Pipe() outR, outW := Pipe() obj := NewServer() - obj.OnAttach(Handler(func(msg *Message) error { + obj.OnVerb(Attach, Handler(func(msg *Message) error { msg.Ret.Send(&Message{Verb: Ack, Ret: inW}) fmt.Printf("copying task output from %#v to %#v\n", outR, msg.Ret) defer fmt.Printf("(DONE) copying task output from %#v to %#v\n", outR, msg.Ret) Copy(msg.Ret, outR) return nil })) - obj.OnStart(Handler(func(msg *Message) error { + obj.OnVerb(Start, Handler(func(msg *Message) error { l.RLock() r := running l.RUnlock() diff --git a/beam/tree.go b/beam/tree.go index daabed9384..83c92dc1a0 100644 --- a/beam/tree.go +++ b/beam/tree.go @@ -14,7 +14,7 @@ func NewTree() *Tree { Server: NewServer(), children: make(map[string]Sender), } - t.OnAttach(Handler(func(msg *Message) error { + t.OnVerb(Attach, Handler(func(msg *Message) error { if len(msg.Args) == 0 || msg.Args[0] == "" { msg.Ret.Send(&Message{Verb: Ack, Ret: t}) return nil @@ -26,7 +26,7 @@ func NewTree() *Tree { Obj(msg.Ret).Error("not found") return nil })) - t.OnLs(Handler(func(msg *Message) error { + t.OnVerb(Ls, Handler(func(msg *Message) error { names := make([]string, 0, len(t.children)) for name := range t.children { names = append(names, name) diff --git a/debug/debug.go b/debug/debug.go index 4b57007f00..686da4acd0 100644 --- a/debug/debug.go +++ b/debug/debug.go @@ -15,7 +15,7 @@ func Debug() beam.Sender { } sender := beam.NewServer() - sender.OnSpawn(beam.Handler(dbgInstance.spawn)) + sender.OnVerb(beam.Spawn, beam.Handler(dbgInstance.spawn)) return sender } From 181b20d8554432ba10d5816106ce6dd27377f7b3 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 12:27:13 +0100 Subject: [PATCH 261/347] Implement OnSpawn Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 37 ++++++++++++++++--------------------- beam/server.go | 11 +++++++++++ 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index b43085a2f2..6947f08af6 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -31,15 +31,15 @@ func DockerClient() beam.Sender { func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { - if len(ctx.Args) != 1 { - return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { + if len(cmd) != 1 { + return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } client := newClient() client.scheme = config.Scheme client.urlHost = config.URLHost client.transport.TLSClientConfig = config.TLSClientConfig - client.setURL(ctx.Args[0]) + client.setURL(cmd[0]) b := &dockerClientBackend{ client: client, Server: beam.NewServer(), @@ -47,10 +47,9 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) b.Server.OnVerb(beam.Start, beam.Handler(b.start)) b.Server.OnVerb(beam.Ls, beam.Handler(b.ls)) - b.Server.OnVerb(beam.Spawn, beam.Handler(b.spawn)) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) - return err - })) + b.Server.OnSpawn(b.spawn) + return b.Server, nil + }) return backend } @@ -111,30 +110,26 @@ func (b *dockerClientBackend) ls(ctx *beam.Message) error { return nil } -func (b *dockerClientBackend) spawn(ctx *beam.Message) error { - if len(ctx.Args) != 1 { - return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) +func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { + if len(cmd) != 1 { + return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } - resp, err := b.client.call("POST", "/containers/create", ctx.Args[0]) + resp, err := b.client.call("POST", "/containers/create", cmd[0]) if err != nil { - return err + return nil, err } respBody, err := ioutil.ReadAll(resp.Body) if err != nil { - return err + return nil, err } if resp.StatusCode != 201 { - return fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) + return nil, fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) } var respJson struct{ Id string } if err = json.Unmarshal(respBody, &respJson); err != nil { - return err + return nil, err } - c := b.newContainer(respJson.Id) - if _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}); err != nil { - return err - } - return nil + return b.newContainer(respJson.Id), nil } func (b *dockerClientBackend) newContainer(id string) beam.Sender { diff --git a/beam/server.go b/beam/server.go index d2012e415e..11b91d9fdf 100644 --- a/beam/server.go +++ b/beam/server.go @@ -27,6 +27,17 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server { return s } +func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { + return s.OnVerb(Spawn, Handler(func(msg *Message) error { + obj, err := h(msg.Args...) + if err != nil { + return err + } + _, err = msg.Ret.Send(&Message{Verb: Ack, Ret: obj}) + return err + })) +} + func (s *Server) Send(msg *Message) (Receiver, error) { if h, exists := s.handlers[msg.Verb]; exists { return h.Send(msg) From 1b8e015627992ea3bdf659291c596b87b898e4de Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:02:16 +0100 Subject: [PATCH 262/347] Implement OnLs Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 15 ++++++--------- beam/server.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 6947f08af6..a25350e7c4 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -46,7 +46,7 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { } b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) b.Server.OnVerb(beam.Start, beam.Handler(b.start)) - b.Server.OnVerb(beam.Ls, beam.Handler(b.ls)) + b.Server.OnLs(b.ls) b.Server.OnSpawn(b.spawn) return b.Server, nil }) @@ -86,28 +86,25 @@ func (b *dockerClientBackend) start(ctx *beam.Message) error { return nil } -func (b *dockerClientBackend) ls(ctx *beam.Message) error { +func (b *dockerClientBackend) ls() ([]string, error) { resp, err := b.client.call("GET", "/containers/json", "") if err != nil { - return fmt.Errorf("get: %v", err) + return nil, fmt.Errorf("get: %v", err) } // FIXME: check for response error c := engine.NewTable("Created", 0) body, err := ioutil.ReadAll(resp.Body) if err != nil { - return fmt.Errorf("read body: %v", err) + return nil, fmt.Errorf("read body: %v", err) } if _, err := c.ReadListFrom(body); err != nil { - return fmt.Errorf("readlist: %v", err) + return nil, fmt.Errorf("readlist: %v", err) } names := []string{} for _, env := range c.Data { names = append(names, env.GetList("Names")[0][1:]) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: names}); err != nil { - return fmt.Errorf("send response: %v", err) - } - return nil + return names, nil } func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { diff --git a/beam/server.go b/beam/server.go index 11b91d9fdf..ecd4ebdaa6 100644 --- a/beam/server.go +++ b/beam/server.go @@ -27,6 +27,17 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server { return s } +func (s *Server) OnLs(h func() ([]string, error)) *Server { + return s.OnVerb(Ls, Handler(func(msg *Message) error { + names, err := h() + if err != nil { + return err + } + _, err = msg.Ret.Send(&Message{Verb: Set, Args: names}) + return err + })) +} + func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { return s.OnVerb(Spawn, Handler(func(msg *Message) error { obj, err := h(msg.Args...) From 4805276763850e221981332272e0b8e058aa6879 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 15:36:02 +0100 Subject: [PATCH 263/347] Test for dockerclient Get Signed-off-by: Aanand Prasad --- backends/dockerclient_test.go | 36 ++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go index cd8e5405c0..6322081111 100644 --- a/backends/dockerclient_test.go +++ b/backends/dockerclient_test.go @@ -19,6 +19,8 @@ type requestStub struct { resStatus int resBody string + + callCount int } func TestBackendSpawn(t *testing.T) { @@ -90,6 +92,30 @@ func TestAttachToChild(t *testing.T) { server.Check() } +func TestGetChild(t *testing.T) { + name := "foo" + expectedContent := `{"Image": "busybox", "Command": ["/bin/true"]}` + + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: fmt.Sprintf("/containers/%s/json", name), + + resBody: expectedContent, + + callCount: 2, + }) + i := instance(t, server) + c := child(t, server, i, name) + content, err := c.Get() + if err != nil { + t.Fatal(err) + } + if content != expectedContent { + t.Fatalf("Expected %#v, got %#v", expectedContent, content) + } + server.Check() +} + func TestStartChild(t *testing.T) { name := "foo" server := makeServer(t, &requestStub{ @@ -158,6 +184,10 @@ func makeServer(t *testing.T, stubs ...*requestStub) *stubServer { for _, stub := range stubs { stub.reqPath = fmt.Sprintf("/v1.11%s", stub.reqPath) + if stub.callCount == 0 { + stub.callCount = 1 + } + s.stubs = append(s.stubs, &stubRecord{ stub: stub, summary: fmt.Sprintf("%s %s", stub.reqMethod, stub.reqPath), @@ -170,9 +200,9 @@ func makeServer(t *testing.T, stubs ...*requestStub) *stubServer { func (s *stubServer) Check() { for _, record := range s.stubs { - if record.callCount != 1 { - s.t.Fatalf("Expected %#v to be called exactly once, but was called %d times", - record.summary, record.callCount) + if record.callCount != record.stub.callCount { + s.t.Fatalf("Expected %#v to be called %d times, but was called %d times", + record.summary, record.stub.callCount, record.callCount) } } } From b7b6b00f526d1475f3f09ac5b4f848432cf6dd93 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:28:29 +0100 Subject: [PATCH 264/347] Implement OnStart and OnStop Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 19 ++++++------------- beam/server.go | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index a25350e7c4..f99dad27d0 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -45,7 +45,7 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { Server: beam.NewServer(), } b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) - b.Server.OnVerb(beam.Start, beam.Handler(b.start)) + b.Server.OnStart(b.start) b.Server.OnLs(b.ls) b.Server.OnSpawn(b.spawn) return b.Server, nil @@ -81,8 +81,7 @@ func (b *dockerClientBackend) attach(ctx *beam.Message) error { return nil } -func (b *dockerClientBackend) start(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) +func (b *dockerClientBackend) start() error { return nil } @@ -133,8 +132,8 @@ func (b *dockerClientBackend) newContainer(id string) beam.Sender { c := &container{backend: b, id: id} instance := beam.NewServer() instance.OnVerb(beam.Attach, beam.Handler(c.attach)) - instance.OnVerb(beam.Start, beam.Handler(c.start)) - instance.OnVerb(beam.Stop, beam.Handler(c.stop)) + instance.OnStart(c.start) + instance.OnStop(c.stop) instance.OnVerb(beam.Get, beam.Handler(c.get)) return instance } @@ -160,7 +159,7 @@ func (c *container) attach(ctx *beam.Message) error { return nil } -func (c *container) start(ctx *beam.Message) error { +func (c *container) start() error { path := fmt.Sprintf("/containers/%s/start", c.id) resp, err := c.backend.client.call("POST", path, "{}") if err != nil { @@ -173,13 +172,10 @@ func (c *container) start(ctx *beam.Message) error { if resp.StatusCode != 204 { return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { - return err - } return nil } -func (c *container) stop(ctx *beam.Message) error { +func (c *container) stop() error { path := fmt.Sprintf("/containers/%s/stop", c.id) resp, err := c.backend.client.call("POST", path, "") if err != nil { @@ -192,9 +188,6 @@ func (c *container) stop(ctx *beam.Message) error { if resp.StatusCode != 204 { return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { - return err - } return nil } diff --git a/beam/server.go b/beam/server.go index ecd4ebdaa6..b241edf6fe 100644 --- a/beam/server.go +++ b/beam/server.go @@ -49,6 +49,26 @@ func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { })) } +func (s *Server) OnStart(h func() error) *Server { + return s.OnVerb(Start, Handler(func(msg *Message) error { + if err := h(); err != nil { + return err + } + _, err := msg.Ret.Send(&Message{Verb: Ack}) + return err + })) +} + +func (s *Server) OnStop(h func() error) *Server { + return s.OnVerb(Stop, Handler(func(msg *Message) error { + if err := h(); err != nil { + return err + } + _, err := msg.Ret.Send(&Message{Verb: Ack}) + return err + })) +} + func (s *Server) Send(msg *Message) (Receiver, error) { if h, exists := s.handlers[msg.Verb]; exists { return h.Send(msg) From 70b1f7f0a0c320e8f74dba56d13b7863b6630e9f Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:53:22 +0100 Subject: [PATCH 265/347] Implement OnGet Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 15 ++++++--------- beam/server.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index f99dad27d0..072473202e 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -134,7 +134,7 @@ func (b *dockerClientBackend) newContainer(id string) beam.Sender { instance.OnVerb(beam.Attach, beam.Handler(c.attach)) instance.OnStart(c.start) instance.OnStop(c.stop) - instance.OnVerb(beam.Get, beam.Handler(c.get)) + instance.OnGet(c.get) return instance } @@ -191,23 +191,20 @@ func (c *container) stop() error { return nil } -func (c *container) get(ctx *beam.Message) error { +func (c *container) get() (string, error) { path := fmt.Sprintf("/containers/%s/json", c.id) resp, err := c.backend.client.call("GET", path, "") if err != nil { - return err + return "", err } respBody, err := ioutil.ReadAll(resp.Body) if err != nil { - return err + return "", err } if resp.StatusCode != 200 { - return fmt.Errorf("%s", respBody) + return "", fmt.Errorf("%s", respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{string(respBody)}}); err != nil { - return err - } - return nil + return string(respBody), nil } type client struct { diff --git a/beam/server.go b/beam/server.go index b241edf6fe..63b35a8f70 100644 --- a/beam/server.go +++ b/beam/server.go @@ -49,6 +49,17 @@ func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { })) } +func (s *Server) OnGet(h func() (string, error)) *Server { + return s.OnVerb(Get, Handler(func(msg *Message) error { + content, err := h() + if err != nil { + return err + } + _, err = msg.Ret.Send(&Message{Verb: Set, Args: []string{content}}) + return err + })) +} + func (s *Server) OnStart(h func() error) *Server { return s.OnVerb(Start, Handler(func(msg *Message) error { if err := h(); err != nil { From ae6200f48eda0153d58c995068f62689db4eb082 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:59:39 +0100 Subject: [PATCH 266/347] Implement OnAttach Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 24 ++++++++++++------------ beam/server.go | 6 ++++++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 072473202e..50960a760d 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -44,7 +44,7 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { client: client, Server: beam.NewServer(), } - b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) + b.Server.OnAttach(b.attach) b.Server.OnStart(b.start) b.Server.OnLs(b.ls) b.Server.OnSpawn(b.spawn) @@ -58,12 +58,12 @@ type dockerClientBackend struct { *beam.Server } -func (b *dockerClientBackend) attach(ctx *beam.Message) error { - if ctx.Args[0] == "" { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) +func (b *dockerClientBackend) attach(name string, ret beam.Sender) error { + if name == "" { + ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) <-make(chan struct{}) } else { - path := fmt.Sprintf("/containers/%s/json", ctx.Args[0]) + path := fmt.Sprintf("/containers/%s/json", name) resp, err := b.client.call("GET", path, "") if err != nil { return err @@ -75,8 +75,8 @@ func (b *dockerClientBackend) attach(ctx *beam.Message) error { if resp.StatusCode != 200 { return fmt.Errorf("%s", respBody) } - c := b.newContainer(ctx.Args[0]) - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) + c := b.newContainer(name) + ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) } return nil } @@ -131,7 +131,7 @@ func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { func (b *dockerClientBackend) newContainer(id string) beam.Sender { c := &container{backend: b, id: id} instance := beam.NewServer() - instance.OnVerb(beam.Attach, beam.Handler(c.attach)) + instance.OnAttach(c.attach) instance.OnStart(c.start) instance.OnStop(c.stop) instance.OnGet(c.get) @@ -143,8 +143,8 @@ type container struct { id string } -func (c *container) attach(ctx *beam.Message) error { - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { +func (c *container) attach(name string, ret beam.Sender) error { + if _, err := ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { return err } @@ -152,8 +152,8 @@ func (c *container) attach(ctx *beam.Message) error { stdoutR, stdoutW := io.Pipe() stderrR, stderrW := io.Pipe() - go beam.EncodeStream(ctx.Ret, stdoutR, "stdout") - go beam.EncodeStream(ctx.Ret, stderrR, "stderr") + go beam.EncodeStream(ret, stdoutR, "stdout") + go beam.EncodeStream(ret, stderrR, "stderr") c.backend.client.hijack("POST", path, nil, stdoutW, stderrW) return nil diff --git a/beam/server.go b/beam/server.go index 63b35a8f70..96104a0a68 100644 --- a/beam/server.go +++ b/beam/server.go @@ -49,6 +49,12 @@ func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { })) } +func (s *Server) OnAttach(h func(name string, ret Sender) error) *Server { + return s.OnVerb(Attach, Handler(func(msg *Message) error { + return h(msg.Args[0], msg.Ret) + })) +} + func (s *Server) OnGet(h func() (string, error)) *Server { return s.OnVerb(Get, Handler(func(msg *Message) error { content, err := h() From 9156cc0de05ed0f0f14ef2221e4ef4eeb9386770 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 15:14:57 +0100 Subject: [PATCH 267/347] Implement OnLog and OnError Signed-off-by: Aanand Prasad --- beam/server.go | 12 ++++++++++++ swarmd/swarmd.go | 12 ++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/beam/server.go b/beam/server.go index 96104a0a68..23a2e09baa 100644 --- a/beam/server.go +++ b/beam/server.go @@ -27,6 +27,12 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server { return s } +func (s *Server) OnLog(h func(...string) error) *Server { + return s.OnVerb(Log, Handler(func(msg *Message) error { + return h(msg.Args...) + })) +} + func (s *Server) OnLs(h func() ([]string, error)) *Server { return s.OnVerb(Ls, Handler(func(msg *Message) error { names, err := h() @@ -55,6 +61,12 @@ func (s *Server) OnAttach(h func(name string, ret Sender) error) *Server { })) } +func (s *Server) OnError(h func(...string) error) *Server { + return s.OnVerb(Error, Handler(func(msg *Message) error { + return h(msg.Args...) + })) +} + func (s *Server) OnGet(h func() (string, error)) *Server { return s.OnVerb(Get, Handler(func(msg *Message) error { content, err := h() diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index dccecdb080..864311d4b0 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -25,14 +25,14 @@ func main() { func cmdDaemon(c *cli.Context) { app := beam.NewServer() - app.OnLog(beam.Handler(func(msg *beam.Message) error { - log.Printf("%s\n", strings.Join(msg.Args, " ")) + app.OnLog(func(args ...string) error { + log.Printf("%s\n", strings.Join(args, " ")) return nil - })) - app.OnError(beam.Handler(func(msg *beam.Message) error { - Fatalf("Fatal: %v", strings.Join(msg.Args[:1], "")) + }) + app.OnError(func(args ...string) error { + Fatalf("Fatal: %v", strings.Join(args[:1], "")) return nil - })) + }) back := backends.New() if len(c.Args()) == 0 { names, err := back.Ls() From ae1c675f5a951135df32eeffa545c69b9faa69ad Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 15:15:34 +0100 Subject: [PATCH 268/347] Convert aggregate and orchard to new server DSL Signed-off-by: Aanand Prasad --- backends/aggregate.go | 38 +++++++++++++++++--------------------- backends/orchard.go | 19 +++++++++---------- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/backends/aggregate.go b/backends/aggregate.go index a836e235d6..158229869b 100644 --- a/backends/aggregate.go +++ b/backends/aggregate.go @@ -11,22 +11,21 @@ import ( func Aggregate() beam.Sender { backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { + backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { allBackends := New() instance := beam.NewServer() - a, err := newAggregator(allBackends, instance, ctx.Args) + a, err := newAggregator(allBackends, instance, cmd) if err != nil { - return err + return nil, err } - instance.OnVerb(beam.Attach, beam.Handler(a.attach)) - instance.OnVerb(beam.Start, beam.Handler(a.start)) - instance.OnVerb(beam.Ls, beam.Handler(a.ls)) + instance.OnAttach(a.attach) + instance.OnStart(a.start) + instance.OnLs(a.ls) - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) - return err - })) + return instance, nil + }) return backend } @@ -61,13 +60,13 @@ func newAggregator(allBackends *beam.Object, server *beam.Server, args []string) return a, nil } -func (a *aggregator) attach(ctx *beam.Message) error { - if ctx.Args[0] != "" { +func (a *aggregator) attach(name string, ret beam.Sender) error { + if name != "" { // TODO: implement this? return fmt.Errorf("attaching to a child is not implemented") } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: a.server}); err != nil { + if _, err := ret.Send(&beam.Message{Verb: beam.Ack, Ret: a.server}); err != nil { return err } @@ -81,7 +80,7 @@ func (a *aggregator) attach(ctx *beam.Message) error { copies.Add(1) go func() { log.Printf("copying output from %#v\n", b) - beam.Copy(ctx.Ret, r) + beam.Copy(ret, r) log.Printf("finished output from %#v\n", b) copies.Done() }() @@ -91,29 +90,26 @@ func (a *aggregator) attach(ctx *beam.Message) error { return nil } -func (a *aggregator) start(ctx *beam.Message) error { +func (a *aggregator) start() error { for _, b := range a.backends { err := b.Start() if err != nil { return err } } - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) - return err + return nil } -func (a *aggregator) ls(ctx *beam.Message) error { +func (a *aggregator) ls() ([]string, error) { var children []string for _, b := range a.backends { bChildren, err := b.Ls() if err != nil { - return err + return nil, err } children = append(children, bChildren...) } - ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: children}) - - return nil + return children, nil } diff --git a/backends/orchard.go b/backends/orchard.go index 3425c1e8bd..f16d5aebf3 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -13,11 +13,11 @@ import ( func Orchard() beam.Sender { backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { - if len(ctx.Args) != 2 { - return fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host") + backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { + if len(cmd) != 2 { + return nil, fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host") } - apiToken, hostName := ctx.Args[0], ctx.Args[1] + apiToken, hostName := cmd[0], cmd[1] apiClient := &api.HTTPClient{ BaseURL: "https://api.orchardup.com/v2", @@ -26,13 +26,13 @@ func Orchard() beam.Sender { host, err := apiClient.GetHost(hostName) if err != nil { - return err + return nil, err } url := fmt.Sprintf("tcp://%s:4243", host.IPAddress) tlsConfig, err := getTLSConfig([]byte(host.ClientCert), []byte(host.ClientKey)) if err != nil { - return err + return nil, err } backend := DockerClientWithConfig(&DockerClientConfig{ @@ -43,12 +43,11 @@ func Orchard() beam.Sender { forwardBackend := beam.Obj(backend) forwardInstance, err := forwardBackend.Spawn(url) if err != nil { - return err + return nil, err } - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: forwardInstance}) - return err - })) + return forwardInstance, nil + }) return backend } From 5c2047af31a703fc590d5e5bba18ee1496df596c Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Tue, 17 Jun 2014 20:55:06 -0400 Subject: [PATCH 269/347] Adds support for `docker inspect` to dockerserver Signed-off-by: Brian Goff (github: cpuguy83) --- backends/dockerserver.go | 112 ++++++++++++++++++++++++++------------- 1 file changed, 75 insertions(+), 37 deletions(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index d6fe22d8fd..663d2412f3 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -6,6 +6,7 @@ import ( "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/api" "github.com/dotcloud/docker/pkg/version" + dockerContainerConfig "github.com/dotcloud/docker/runconfig" "github.com/dotcloud/docker/utils" "github.com/gorilla/mux" "io" @@ -13,10 +14,10 @@ import ( "net" "net/http" "net/url" + "strconv" "strings" "sync" "time" - "strconv" ) func DockerServer() beam.Sender { @@ -73,6 +74,68 @@ func ping(out beam.Sender, version version.Version, w http.ResponseWriter, r *ht return err } +type containerJson struct { + Config *dockerContainerConfig.Config + HostConfig *dockerContainerConfig.HostConfig + ID string + Created string + Driver string + ExecDriver string + NetworkSettings struct { + Bridge string + Gateway string + IPAddress string + IPPrefixLen int + Ports map[string][]map[string]string + } + State struct { + Running bool + StartedAt string + FinishedAt string + ExitCode int + Paused bool + Pid int + } + Name string + Args []string + ProcessLbael string + ResolvConfPath string + HostnamePath string + HostsPath string + MountLabel string + Volumes map[string]string + VolumesRW map[string]bool +} + +func getContainerJson(out beam.Sender, containerID string) (containerJson, error) { + o := beam.Obj(out) + + _, containerOut, err := o.Attach(containerID) + if err != nil { + return containerJson{}, err + } + container := beam.Obj(containerOut) + responseJson, err := container.Get() + if err != nil { + return containerJson{}, err + } + var response containerJson + + if err = json.Unmarshal([]byte(responseJson), &response); err != nil { + return containerJson{}, err + } + + return response, nil +} + +func getContainerInfo(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + container, err := getContainerJson(out, vars["name"]) + if err != nil { + return err + } + return writeJSON(w, http.StatusOK, container) +} + func getContainersJSON(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if err := r.ParseForm(); err != nil { return err @@ -87,36 +150,10 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response var responses []interface{} for _, name := range names { - _, containerOut, err := o.Attach(name) + response, err := getContainerJson(out, name) if err != nil { return err } - container := beam.Obj(containerOut) - responseJson, err := container.Get() - if err != nil { - return err - } - var response struct { - ID string - Created string - Name string - Config struct { - Cmd []string - Image string - } - State struct { - Running bool - StartedAt string - FinishedAt string - ExitCode int - } - NetworkSettings struct { - Ports map[string][]map[string]string - } - } - if err = json.Unmarshal([]byte(responseJson), &response); err != nil { - return err - } created, err := time.Parse(time.RFC3339, response.Created) if err != nil { return err @@ -128,10 +165,10 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response state = fmt.Sprintf("Exited (%d)", response.State.ExitCode) } type port struct { - IP string + IP string PrivatePort int - PublicPort int - Type string + PublicPort int + Type string } var ports []port for p, mappings := range response.NetworkSettings.Ports { @@ -148,17 +185,17 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return err } newport := port{ - IP: mapping["HostIp"], + IP: mapping["HostIp"], PrivatePort: portnum, - PublicPort: hostPort, - Type: proto, + PublicPort: hostPort, + Type: proto, } ports = append(ports, newport) } } else { newport := port{ PublicPort: portnum, - Type: proto, + Type: proto, } ports = append(ports, newport) } @@ -332,8 +369,9 @@ func createRouter(out beam.Sender) (*mux.Router, error) { r := mux.NewRouter() m := map[string]map[string]HttpApiFunc{ "GET": { - "/_ping": ping, - "/containers/json": getContainersJSON, + "/_ping": ping, + "/containers/json": getContainersJSON, + "/containers/{name}/json": getContainerInfo, }, "POST": { "/containers/create": postContainersCreate, From bab1a4bd63671e8e4d647a9429d48f08a6f32238 Mon Sep 17 00:00:00 2001 From: John Hopper Date: Thu, 19 Jun 2014 11:34:27 -0500 Subject: [PATCH 270/347] Fix Debug for Libchan This includes some minor cleanup among other things needed to make debug work with libchan (correctly). Signed-off-by: John Hopper john.hopper@jpserver.net --- debug/debug.go | 65 ++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/debug/debug.go b/debug/debug.go index 4b57007f00..929dc82dfc 100644 --- a/debug/debug.go +++ b/debug/debug.go @@ -2,6 +2,7 @@ package debug import ( "fmt" + "io" "log" "github.com/docker/libswarm/beam" @@ -19,18 +20,9 @@ func Debug() beam.Sender { return sender } -// Function for forwarding a messgae including some minor error formatting -func forward(out beam.Sender, msg *beam.Message) (err error) { - if _, err := out.Send(msg); err != nil { - return fmt.Errorf("[debug] Failed to forward msg. Reason: %v\n", err) - } - return -} - // Debug service type type debug struct { service *beam.Server - in beam.Receiver out beam.Sender } @@ -40,7 +32,6 @@ func (dbg *debug) spawn(msg *beam.Message) (err error) { // set to the services present before and after this one in the pipeline. instance := beam.Task(func(in beam.Receiver, out beam.Sender) { // Setup our channels - dbg.in = in dbg.out = out // Set up the debug interceptor @@ -62,7 +53,7 @@ func (dbg *debug) spawn(msg *beam.Message) (err error) { // Catches all messages sent to the service func (dbg *debug) catchall(msg *beam.Message) (err error) { - log.Printf("[debug] ---> Upstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) + log.Printf("[debug] ---> Outbound Message ---> { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) // If there's no output after us then we'll just reply with an error // informing the receiver that the verb is not implemented. @@ -70,39 +61,39 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) { return fmt.Errorf("[debug] Verb: %s is not implemented.", msg.Verb) } - // The forwarded message has the return channel set to a new replyHandler. The replyHandler is a small - // callback that allows for interception of downstream messages. - forwardedMessage := &beam.Message{ + // We forward the message with a special Ret value of "beam.RetPipe" - this + // asks libchan to open a new pipe so that we can read replies from upstream + forwardedMsg := &beam.Message{ Verb: msg.Verb, Args: msg.Args, Att: msg.Att, - Ret: &replyHandler{ - Sender: msg.Ret, - }, + Ret: beam.RetPipe, } // Send the forwarded message - if err := forward(dbg.out, forwardedMessage); err == nil { - // Hijack the return channel so we can avoid any interference with things such as close - msg.Ret = beam.NopSender{} + if inbound, err := dbg.out.Send(forwardedMsg); err != nil { + return fmt.Errorf("[debug] Failed to forward msg. Reason: %v\n", err) + } else if inbound == nil { + return fmt.Errorf("[debug] Inbound channel nil.\n") + } else { + for { + // Relay all messages returned until the inbound channel is empty (EOF) + var reply *beam.Message + if reply, err = inbound.Receive(0); err != nil { + if err == io.EOF { + // EOF is expected + err = nil + } + break + } + + // Forward the message back downstream + if _, err = msg.Ret.Send(reply); err != nil { + return fmt.Errorf("[debug] Failed to forward msg. Reason: %v\n", err) + } + log.Printf("[debug] <--- Inbound Message <--- { Verb: %s, Args: %v }\n", reply.Verb, reply.Args) + } } return } - -// We use a replyHandler to provide context for relaying the return channel -// of the origin message. -type replyHandler struct { - beam.Sender -} - -// Send a message using the out channel -func (rh *replyHandler) Send(msg *beam.Message) (receiver beam.Receiver, err error) { - log.Printf("[debug] <--- Downstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) - return nil, forward(rh.Sender, msg) -} - -func (rh *replyHandler) Close() (err error) { - // Since we don't allow the downstream handler to close the return channel, we do so here. - return rh.Sender.Close() -} From bc59fe3affdc5e3aa2ceefd1aa02a8b63a8b22d5 Mon Sep 17 00:00:00 2001 From: Nathan LeClaire Date: Thu, 19 Jun 2014 16:25:15 -0700 Subject: [PATCH 271/347] Take a whack at installation instructions. This instructions allowed me to compile swarmd on my box. --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/README.md b/README.md index c8d492b7c2..2d2e7a51f0 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,41 @@ Here are some examples of what you can do with libswarm: * Simulate your entire service topology in a single process, then scale it out simply by re-arranging adapters. * Organize your application as loosely coupled services from day 1, without over-engineering. + +## Installation + +First get the go dependencies: + +```sh +go get github.com/docker/libswarm/... +``` + +Then you can compile `swarmd` with: + +```sh +go install github.com/docker/libswarm/swarmd +``` + +If `$GOPATH/bin` is in your `PATH`, you can invoke `swarmd` from the CLI. + +```sh +$ swarmd -h +NAME: + swarmd - Compose distributed systems from lightweight services + +USAGE: + swarmd [global options] command [command options] [arguments...] + +VERSION: + 0.0.1 + +COMMANDS: + help, h Shows a list of commands or help for one command + +GLOBAL OPTIONS: + --version, -v print the version + --help, -h show help +``` ## Built-in services From 4e71702a34a8ae204b4baa41fe41f0420836faf2 Mon Sep 17 00:00:00 2001 From: Sven Dowideit Date: Sun, 22 Jun 2014 22:01:24 +1000 Subject: [PATCH 272/347] mention the param to dockerserver Docker-DCO-1.1-Signed-off-by: Sven Dowideit (github: SvenDowideit) --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d2e7a51f0..ccd50caaca 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,10 @@ GLOBAL OPTIONS: *Maintainer: Ben Firshman* -This service runs a Docker remote API server, allowing the Docker client and other Docker tools to control libswarm services. +This service runs a Docker remote API server, allowing the Docker client and +other Docker tools to control libswarm services. With no arguments, it listens +on port `4243`, but you can specify any port you like using `tcp://0.0.0.0:9999`, +`unix:///tmp/docker` etc. ### Docker client From 0ddb6fd751f8647c0f13da97dd25bea5b475015d Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Wed, 25 Jun 2014 15:42:15 +0100 Subject: [PATCH 273/347] Add automatically generated Godep readme Signed-off-by: Ben Firshman --- swarmd/Godeps/Readme | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 swarmd/Godeps/Readme diff --git a/swarmd/Godeps/Readme b/swarmd/Godeps/Readme new file mode 100644 index 0000000000..4cdaa53d56 --- /dev/null +++ b/swarmd/Godeps/Readme @@ -0,0 +1,5 @@ +This directory tree is generated automatically by godep. + +Please do not edit. + +See https://github.com/tools/godep for more information. From b0f868ad6a26d15329c596e9fc8d7bed2a5df267 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Wed, 25 Jun 2014 15:42:42 +0100 Subject: [PATCH 274/347] Add Godep workspace to gitignore Signed-off-by: Ben Firshman --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 12534f3b7a..9a72c710a5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ swarmd/swarmd +swarmd/Godeps/_workspace From 427ad9ea3b0811bb476da8de8835c9b5f98c5f0f Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Wed, 25 Jun 2014 22:58:57 -0400 Subject: [PATCH 275/347] create the image if it doesn't exist on host Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/dockerclient.go | 63 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 50960a760d..320ec9c12f 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -106,21 +106,25 @@ func (b *dockerClientBackend) ls() ([]string, error) { return names, nil } -func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { - if len(cmd) != 1 { +func (b *dockerClientBackend) createContainer(cmd ...string) (beam.Sender, error) { + if len(cmd) != 1 { return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } + resp, err := b.client.call("POST", "/containers/create", cmd[0]) if err != nil { return nil, err } + respBody, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, err } - if resp.StatusCode != 201 { + + if resp.StatusCode == 404 { return nil, fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) - } + } + var respJson struct{ Id string } if err = json.Unmarshal(respBody, &respJson); err != nil { return nil, err @@ -128,6 +132,57 @@ func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { return b.newContainer(respJson.Id), nil } +func (b *dockerClientBackend) createImage(cmd ...string) error { + if len(cmd) != 1 { + return fmt.Errorf("dockerclient: image name is the only expected argument, got %d", len(cmd)) + } + + var respJson struct{ Image string } + if err := json.Unmarshal([]byte(cmd[0]), &respJson); err != nil { + return err + } + + imageTag := strings.Split(respJson.Image, ":") + + var tag = "latest" + image := imageTag[0] + + if len(imageTag) > 1 { + tag = imageTag[1] + } + + url := fmt.Sprintf("/images/create?fromImage=%s&tag=%s", image, tag) + + resp, err := b.client.call("POST", url, "") + if err != nil { + return err + } + + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + + return nil +} + +func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { + sender, err := b.createContainer(cmd...) + + if err != nil { + err = b.createImage(cmd...) + if err != nil { + return sender, err + } + sender, err = b.createContainer(cmd...) + if err != nil { + return sender, err + } + } + + return sender, nil +} + func (b *dockerClientBackend) newContainer(id string) beam.Sender { c := &container{backend: b, id: id} instance := beam.NewServer() From 1946328111e41478f2d074dcf26f4f8c514e3213 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Sat, 14 Jun 2014 05:07:48 -0700 Subject: [PATCH 276/347] correct protocol for ls Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/ec2.go b/backends/ec2.go index f0f35b74e4..5a320fa3d7 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -36,7 +36,7 @@ func (c *ec2Client) spawn(ctx *beam.Message) error { func (c *ec2Client) ls(ctx *beam.Message) error { fmt.Println("*** ec2 OnLs ***") - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{}}) return nil } From cfb7f6188b9cb59bad71baececf78436a1006fed Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Sat, 14 Jun 2014 05:08:59 -0700 Subject: [PATCH 277/347] add heartbeat to attach Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backends/ec2.go b/backends/ec2.go index 5a320fa3d7..d2e5433d50 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -1,6 +1,7 @@ package backends import ( + "time" "fmt" "github.com/docker/libswarm/beam" ) @@ -55,9 +56,15 @@ func (c *ec2Client) stop(ctx *beam.Message) error { func (c *ec2Client) attach(ctx *beam.Message) error { fmt.Println("*** ec2 OnAttach ***") ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + + for { + time.Sleep(1 * time.Second) + (&beam.Object{ctx.Ret}).Log("ec2: heartbeat") + } return nil } + func Ec2() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { From 3b2f87aa77a9d7a40cb7c58e533efe80b7e8596a Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Sat, 14 Jun 2014 11:07:04 -0700 Subject: [PATCH 278/347] basic ec2 config Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 58 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index d2e5433d50..06e874951c 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -3,10 +3,24 @@ package backends import ( "time" "fmt" + "strings" "github.com/docker/libswarm/beam" ) +type ec2Config struct { + access_key string + secret_key string + security_group string + instance_type string + keypair string + region string + zone string + ami string + tag string +} + type ec2Client struct { + config *ec2Config Server *beam.Server } @@ -64,12 +78,52 @@ func (c *ec2Client) attach(ctx *beam.Message) error { return nil } +func newConfig(args []string) (config *ec2Config, err error) { + // TODO (aaron): fail fast on incorrect number of args + + var optValPair []string + var opt, val string + + config = new(ec2Config) + for _, value := range args { + optValPair = strings.Split(value, "=") + opt = optValPair[0] + val = optValPair[1] + + switch opt { + case "--region": + config.region = val + case "--zone": + config.zone = val + case "--tag": + config.tag = val + case "--ami": + config.ami = val + case "--keypair": + config.keypair = val + case "--security_group": + config.security_group = val + case "--instance_type": + config.instance_type = val + default: + fmt.Printf("Unrecognizable option: %s value: %s", opt, val) + } + } + return config, nil +} func Ec2() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { fmt.Println("*** init ***") - client := &ec2Client{beam.NewServer()} + + var config, err = newConfig(ctx.Args) + + if (err != nil) { + return err + } + + client := &ec2Client{config, beam.NewServer()} client.Server.OnSpawn(beam.Handler(client.spawn)) client.Server.OnStart(beam.Handler(client.start)) client.Server.OnStop(beam.Handler(client.stop)) @@ -78,7 +132,7 @@ func Ec2() beam.Sender { client.Server.OnError(beam.Handler(client.error)) client.Server.OnLs(beam.Handler(client.ls)) client.Server.OnGet(beam.Handler(client.get)) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) return err })) return backend From aa7b3d99631b489709a32463fae730d5fa361ae4 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Mon, 16 Jun 2014 00:32:37 -0400 Subject: [PATCH 279/347] starting up ec2 instance Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/ec2.go | 112 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 98 insertions(+), 14 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index 06e874951c..ea2c2a1479 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -5,23 +5,25 @@ import ( "fmt" "strings" "github.com/docker/libswarm/beam" + + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" ) type ec2Config struct { - access_key string - secret_key string - security_group string - instance_type string + securityGroup string + instanceType string keypair string - region string zone string ami string tag string + region aws.Region } type ec2Client struct { - config *ec2Config - Server *beam.Server + config *ec2Config + ec2Conn *ec2.EC2 + Server *beam.Server } func (c *ec2Client) get(ctx *beam.Message) error { @@ -33,6 +35,12 @@ func (c *ec2Client) get(ctx *beam.Message) error { func (c *ec2Client) start(ctx *beam.Message) error { fmt.Println("*** ec2 OnStart ***") + err := c.startInstance() + + if (err != nil) { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return nil } @@ -78,21 +86,28 @@ func (c *ec2Client) attach(ctx *beam.Message) error { return nil } +func defaultConfigValues() (config *ec2Config) { + config = new(ec2Config) + config.region = aws.USEast + config.instanceType = "t1.micro" + return config +} + func newConfig(args []string) (config *ec2Config, err error) { // TODO (aaron): fail fast on incorrect number of args var optValPair []string var opt, val string - config = new(ec2Config) + config = defaultConfigValues() + for _, value := range args { optValPair = strings.Split(value, "=") - opt = optValPair[0] - val = optValPair[1] + opt, val = optValPair[0], optValPair[1] switch opt { case "--region": - config.region = val + config.region = convertToRegion(val) case "--zone": config.zone = val case "--tag": @@ -102,9 +117,9 @@ func newConfig(args []string) (config *ec2Config, err error) { case "--keypair": config.keypair = val case "--security_group": - config.security_group = val + config.securityGroup = val case "--instance_type": - config.instance_type = val + config.instanceType = val default: fmt.Printf("Unrecognizable option: %s value: %s", opt, val) } @@ -112,6 +127,68 @@ func newConfig(args []string) (config *ec2Config, err error) { return config, nil } +func convertToRegion(input string) aws.Region { + // TODO (aaron): fill in more regions + switch input { + case "us-east-1": + return aws.USEast + case "us-west-1": + return aws.USWest + case "us-west-2": + return aws.USWest2 + case "eu-west-1": + return aws.EUWest + default: + fmt.Println("Unrecognizable region, default to: us-east-1") + return aws.USEast + } +} + +func awsInit(config *ec2Config) (ec2Conn *ec2.EC2, err error) { + auth, err := aws.EnvAuth() + + if err != nil { + return nil, err + } + + return ec2.New(auth, config.region), nil +} + +func (c *ec2Client) tagtInstance() error { + return nil +} + +func (c *ec2Client) startInstance() error { + options := ec2.RunInstances{ + ImageId: c.config.ami, + InstanceType: c.config.instanceType, + KeyName: c.config.keypair, + } + + resp, err := c.ec2Conn.RunInstances(&options) + if err != nil { + return err + } + + i := resp.Instances[0] + for i.State.Name != "running" { + time.Sleep(3 * time.Second) + fmt.Printf("Waiting for instance to come up. Current State: %s\n", + i.State.Name) + + resp, err := c.ec2Conn.Instances([]string{i.InstanceId}, ec2.NewFilter()) + + if err != nil { + return err + } + + i = resp.Reservations[0].Instances[0] + } + + fmt.Printf("Instance up and running - id: %s\n", i.InstanceId) + return nil +} + func Ec2() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { @@ -123,7 +200,12 @@ func Ec2() beam.Sender { return err } - client := &ec2Client{config, beam.NewServer()} + ec2Conn, err := awsInit(config) + if (err != nil) { + return err + } + + client := &ec2Client{config, ec2Conn, beam.NewServer()} client.Server.OnSpawn(beam.Handler(client.spawn)) client.Server.OnStart(beam.Handler(client.start)) client.Server.OnStop(beam.Handler(client.stop)) @@ -132,7 +214,9 @@ func Ec2() beam.Sender { client.Server.OnError(beam.Handler(client.error)) client.Server.OnLs(beam.Handler(client.ls)) client.Server.OnGet(beam.Handler(client.get)) + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) + return err })) return backend From d42f8ec8e14ad2610dc7b3611299df2f2d903ef3 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Mon, 16 Jun 2014 20:27:53 -0400 Subject: [PATCH 280/347] add the ability to tag Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/ec2.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index ea2c2a1479..426b4b3f9f 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -24,6 +24,7 @@ type ec2Client struct { config *ec2Config ec2Conn *ec2.EC2 Server *beam.Server + instance *ec2.Instance } func (c *ec2Client) get(ctx *beam.Message) error { @@ -35,9 +36,11 @@ func (c *ec2Client) get(ctx *beam.Message) error { func (c *ec2Client) start(ctx *beam.Message) error { fmt.Println("*** ec2 OnStart ***") - err := c.startInstance() + if err := c.startInstance(); err != nil { + return err + } - if (err != nil) { + if err := c.tagtInstance(); err != nil { return err } @@ -155,6 +158,10 @@ func awsInit(config *ec2Config) (ec2Conn *ec2.EC2, err error) { } func (c *ec2Client) tagtInstance() error { + ec2Tags := []ec2.Tag{ec2.Tag{"Name", c.config.tag}} + if _, err := c.ec2Conn.CreateTags([]string{c.instance.InstanceId}, ec2Tags); err != nil { + return err + } return nil } @@ -170,7 +177,9 @@ func (c *ec2Client) startInstance() error { return err } + // TODO (aaron): this really could be multiple instances, not just 1 i := resp.Instances[0] + for i.State.Name != "running" { time.Sleep(3 * time.Second) fmt.Printf("Waiting for instance to come up. Current State: %s\n", @@ -185,6 +194,8 @@ func (c *ec2Client) startInstance() error { i = resp.Reservations[0].Instances[0] } + c.instance = &i + fmt.Printf("Instance up and running - id: %s\n", i.InstanceId) return nil } @@ -205,7 +216,7 @@ func Ec2() beam.Sender { return err } - client := &ec2Client{config, ec2Conn, beam.NewServer()} + client := &ec2Client{config, ec2Conn, beam.NewServer(), nil} client.Server.OnSpawn(beam.Handler(client.spawn)) client.Server.OnStart(beam.Handler(client.start)) client.Server.OnStop(beam.Handler(client.stop)) From b1fb5ace1ba41cdb064151e55e4925e06d35dbc9 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Mon, 16 Jun 2014 21:38:15 -0400 Subject: [PATCH 281/347] don't create new instance if found via tag Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/ec2.go | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index 426b4b3f9f..e0acf57b97 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -21,9 +21,9 @@ type ec2Config struct { } type ec2Client struct { - config *ec2Config - ec2Conn *ec2.EC2 - Server *beam.Server + config *ec2Config + ec2Conn *ec2.EC2 + Server *beam.Server instance *ec2.Instance } @@ -36,12 +36,20 @@ func (c *ec2Client) get(ctx *beam.Message) error { func (c *ec2Client) start(ctx *beam.Message) error { fmt.Println("*** ec2 OnStart ***") - if err := c.startInstance(); err != nil { - return err - } - if err := c.tagtInstance(); err != nil { + if instance, err := c.findInstance(); err != nil { return err + } else if instance != nil { + fmt.Println("*** found existing instance ****") + c.instance = instance + } else { + if err := c.startInstance(); err != nil { + return err + } + + if err := c.tagtInstance(); err != nil { + return err + } } ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) @@ -157,6 +165,17 @@ func awsInit(config *ec2Config) (ec2Conn *ec2.EC2, err error) { return ec2.New(auth, config.region), nil } + +func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { + filter := ec2.NewFilter() + filter.Add("tag:Name", c.config.tag) + if resp, err := c.ec2Conn.Instances([]string{}, filter); err != nil { + return nil, err + } else { + return &resp.Reservations[0].Instances[0], nil + } +} + func (c *ec2Client) tagtInstance() error { ec2Tags := []ec2.Tag{ec2.Tag{"Name", c.config.tag}} if _, err := c.ec2Conn.CreateTags([]string{c.instance.InstanceId}, ec2Tags); err != nil { From e91e665cc888f0618997dc4178321f2142aa004b Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Tue, 17 Jun 2014 12:50:09 -0400 Subject: [PATCH 282/347] check reservation before accessing instance Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/ec2.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backends/ec2.go b/backends/ec2.go index e0acf57b97..3c4adde3df 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -172,6 +172,9 @@ func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { if resp, err := c.ec2Conn.Instances([]string{}, filter); err != nil { return nil, err } else { + if resp.Reservations == nil { + return nil, nil + } return &resp.Reservations[0].Instances[0], nil } } From 361f9e60850fd98917a2c10eb2b7339f74b37d14 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Tue, 17 Jun 2014 13:02:51 -0400 Subject: [PATCH 283/347] make sure the instance is actually running - for example, in terminated state Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/ec2.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backends/ec2.go b/backends/ec2.go index 3c4adde3df..b276e5f6d8 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -175,7 +175,14 @@ func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { if resp.Reservations == nil { return nil, nil } - return &resp.Reservations[0].Instances[0], nil + + instance := resp.Reservations[0].Instances[0] + + if (instance.State.Name != "running" || instance.State.Name != "pending") { + return nil, nil + } + + return &instance, nil } } From 227bf170fdebd5973d97ef16e906fccdab9d532b Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Tue, 17 Jun 2014 18:44:21 -0400 Subject: [PATCH 284/347] cloudinit to provision docker Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backends/ec2.go b/backends/ec2.go index b276e5f6d8..b97d0a59f9 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -195,10 +195,13 @@ func (c *ec2Client) tagtInstance() error { } func (c *ec2Client) startInstance() error { + // TODO (aaron): make sure to wait for cloud-init to finish before + // executing docker commands options := ec2.RunInstances{ ImageId: c.config.ami, InstanceType: c.config.instanceType, KeyName: c.config.keypair, + UserData: []byte("#include https://get.docker.io"), } resp, err := c.ec2Conn.RunInstances(&options) From e33396f06595a714e20c8011a0f6dd9c5371bdf7 Mon Sep 17 00:00:00 2001 From: Karl Matthias Date: Tue, 10 Jun 2014 21:28:05 -0700 Subject: [PATCH 285/347] Parse the URL with the net/url Parse() function. Docker-DCO-1.1-Signed-off-by: Karl Matthias (github: relistan) --- backends/dockerserver.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 38cac5265f..f2f86fd683 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -10,6 +10,7 @@ import ( "io/ioutil" "net" "net/http" + "net/url" "strings" "time" ) @@ -35,20 +36,23 @@ func DockerServer() beam.Sender { type HttpApiFunc func(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error -func listenAndServe(url string, out beam.Sender) error { +func listenAndServe(urlStr string, out beam.Sender) error { fmt.Println("Starting Docker server...") r, err := createRouter(out) if err != nil { return err } - arr := strings.Split(url, "://") - proto := arr[0] - addr := arr[1] - l, err := net.Listen(proto, addr) + + parsedUrl, err := url.Parse(urlStr) if err != nil { return err } - httpSrv := http.Server{Addr: addr, Handler: r} + + l, err := net.Listen(parsedUrl.Scheme, parsedUrl.Host) + if err != nil { + return err + } + httpSrv := http.Server{Addr: parsedUrl.Host, Handler: r} return httpSrv.Serve(l) } From fb283b8c477ad74bf0506e304b1c1760e8653598 Mon Sep 17 00:00:00 2001 From: Karl Matthias Date: Wed, 11 Jun 2014 11:14:43 -0700 Subject: [PATCH 286/347] We need to carry the path part of the URL for unix sockets. Docker-DCO-1.1-Signed-off-by: Karl Matthias (github: relistan) --- backends/dockerserver.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index f2f86fd683..fe71974811 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -48,11 +48,19 @@ func listenAndServe(urlStr string, out beam.Sender) error { return err } - l, err := net.Listen(parsedUrl.Scheme, parsedUrl.Host) + var hostAndPath string + // For Unix sockets we need to capture the path as well as the host + if parsedUrl.Scheme == "unix" { + hostAndPath = "/" + parsedUrl.Host + parsedUrl.Path + } else { + hostAndPath = parsedUrl.Host + } + + l, err := net.Listen(parsedUrl.Scheme, hostAndPath) if err != nil { return err } - httpSrv := http.Server{Addr: parsedUrl.Host, Handler: r} + httpSrv := http.Server{Addr: hostAndPath, Handler: r} return httpSrv.Serve(l) } From dd9cdc12ae9ebfe25916473a0a892f07ab74755e Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Wed, 11 Jun 2014 13:42:20 -0700 Subject: [PATCH 287/347] Add Orchard service to readme Signed-off-by: Ben Firshman --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index e4d42d4223..8699a1d34d 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,12 @@ This service can be used to control a Docker Engine from libswarm services. It t *John Hopper* +### Orchard + +*Maintainer: Aanand Prasad* + +Control an [Orchard](https://www.orchardup.com/) host from libswarm. It takes two arguments, an Orchard API token and the name of the Orchard host to control. + ### Amazon EC2 *Aaron Feng* From 0f29da6107d67729203d1b359982ebb5fb615a7e Mon Sep 17 00:00:00 2001 From: fermayo Date: Fri, 13 Jun 2014 00:44:48 +0200 Subject: [PATCH 288/347] Added port mapping output to dockerserver Docker-DCO-1.1-Signed-off-by: Fernando Mayo (github: fermayo) --- backends/dockerserver.go | 42 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index fe71974811..af14aa0ca1 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -13,6 +13,7 @@ import ( "net/url" "strings" "time" + "strconv" ) func DockerServer() beam.Sender { @@ -106,6 +107,9 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response FinishedAt string ExitCode int } + NetworkSettings struct { + Ports map[string][]map[string]string + } } if err = json.Unmarshal([]byte(responseJson), &response); err != nil { return err @@ -120,13 +124,49 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response } else { state = fmt.Sprintf("Exited (%d)", response.State.ExitCode) } + type port struct { + IP string + PrivatePort int + PublicPort int + Type string + } + var ports []port + for p, mappings := range response.NetworkSettings.Ports { + var portnum int + var proto string + _, err := fmt.Sscanf(p, "%d/%s", &portnum, &proto) + if err != nil { + return err + } + if len(mappings) > 0 { + for _, mapping := range mappings { + hostPort, err := strconv.Atoi(mapping["HostPort"]) + if err != nil { + return err + } + newport := port{ + IP: mapping["HostIp"], + PrivatePort: portnum, + PublicPort: hostPort, + Type: proto, + } + ports = append(ports, newport) + } + } else { + newport := port{ + PublicPort: portnum, + Type: proto, + } + ports = append(ports, newport) + } + } responses = append(responses, map[string]interface{}{ "Id": response.ID, "Command": strings.Join(response.Config.Cmd, " "), "Created": created.Unix(), "Image": response.Config.Image, "Names": []string{response.Name}, - "Ports": []string{}, + "Ports": ports, "Status": state, }) } From f9e476ff81976b250dbf7e91470d7317a66bb65f Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 20:26:47 -0700 Subject: [PATCH 289/347] Add warning that beam has been renamed to libchan Signed-off-by: Ben Firshman --- beam/README.md | 77 +------------------------------------------------- 1 file changed, 1 insertion(+), 76 deletions(-) diff --git a/beam/README.md b/beam/README.md index 1ba8e57532..5277c7f361 100644 --- a/beam/README.md +++ b/beam/README.md @@ -1,79 +1,4 @@ # Beam -## A library to break down an application into loosely coupled micro-services +**WARNING:** This has been renamed [libchan](https://github.com/docker/libchan). The code in this directory is an old version of libchan which will be removed once libswarm has been ported over to libchan. -Beam is a library to turn your application into a collection of loosely coupled micro-services. -It implements an ultra-lightweight hub for the different components of an application -to discover and consume each other, either in-memory or across the network. - -Beam can be embedded with very little overhead by using Go channels. It -also implements an efficient http2/tls transport which can be used to -securely expose and consume any micro-service across a distributed system. - -Because remote Beam sessions are regular HTTP2 over TLS sessions, they can -be used in combination with any standard proxy or authentication -middleware. This means Beam, when configured propely, can be safely exposed -on the public Internet. It can also be embedded in an existing rest API -using an http1 and websocket fallback. - -## How is it different from RPC or REST? - -Modern micro-services are not a great fit for classical RPC or REST -protocols because they often rely heavily on events, bi-directional -communication, stream multiplexing, and some form of data synchronization. -Sometimes these services have a component which requires raw socket access, -either for performance (file transfer, event firehose, database access) or -simply because they have their own protocol (dns, smtp, sql, ssh, -zeromq, etc). These components typically need a separate set of tools -because they are outside the scope of the REST and RPC tools. If there is -also a websocket or ServerEvents transport, those require yet another layer -of tools. - -Instead of a clunky patchwork of tools, Beam implements in a single -minimalistic library all the primitives needed by modern micro-services: - -* Request/response with arbitrary structured data - -* Asynchronous events flowing in real-time in both directions - -* Requests and responses can flow in any direction, and can be arbitrarily -nested, for example to implement a self-registering worker model - -* Any request or response can include any number of streams, multiplexed in -both directions on the same session. - -* Any message serialization format can be plugged in: json, msgpack, xml, -protobuf. - -* As an optional convenience a minimalist key-value format is implemented. -It is designed to be extremely fast to serialize and parse, dead-simple to -implement, and suitable for both one-time data copy, file storage, and -real-time synchronization. - -* Raw file descriptors can be "attached" to any message, and passed under -the hood using the best method available to each transport. The Go channel -transport just passes os.File pointers around. The unix socket transport -uses fd passing which makes it suitable for high-performance IPC. The -tcp transport uses dedicated http2 streams. And as a bonus extension, a -built-in tcp gateway can be used to proxy raw network sockets without -extra overhead. That means Beam services can be used as smart gateways to a -sql database, ssh or file transfer service, with unified auth, discovery -and tooling and without performance penalty. - -## Design philosophy - -An explicit goal of Beam is simplicity of implementation and clarity of -spec. Porting it to any language should be as effortless as humanly -possible. - -## Creators - -**Solomon Hykes** - -- -- - -## Copyright and license - -Code and documentation copyright 2013-2014 Docker, inc. Code released under the Apache 2.0 license. -Docs released under Creative commons. From 40eca5b8a65fd7c8c0621a14c9e91a7e0b5fc57d Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Sun, 8 Jun 2014 15:50:30 -0700 Subject: [PATCH 290/347] Remove dockerclient This is no longer needed now we have dockerserver. Signed-off-by: Ben Firshman --- dockerclient/dockerclient.go | 159 ----------------------------------- 1 file changed, 159 deletions(-) delete mode 100644 dockerclient/dockerclient.go diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go deleted file mode 100644 index 2153e87f1c..0000000000 --- a/dockerclient/dockerclient.go +++ /dev/null @@ -1,159 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "github.com/codegangsta/cli" - "github.com/docker/libswarm/backends" - "github.com/docker/libswarm/beam" - "github.com/dotcloud/docker/runconfig" - "github.com/dotcloud/docker/utils" - "io" - "os" - "strings" -) - -func main() { - app := cli.NewApp() - app.Name = "swarmd" - app.Usage = "Control a heterogenous distributed system with the Docker API" - app.Version = "0.0.1" - app.Flags = []cli.Flag{ - cli.StringFlag{"backend", "debug", "load a backend"}, - } - app.Action = cmdDaemon - app.Run(os.Args) -} - -func cmdDaemon(c *cli.Context) { - app := beam.NewServer() - app.OnLog(beam.Handler(func(msg *beam.Message) error { - utils.Debugf("%s", strings.Join(msg.Args, " ")) - return nil - })) - app.OnError(beam.Handler(func(msg *beam.Message) error { - Fatalf("Fatal: %v", strings.Join(msg.Args[:1], "")) - return nil - })) - - backend := beam.Object{backends.Forward()} - - dockerHost := os.Getenv("DOCKER_HOST") - if dockerHost == "" { - dockerHost = "unix:///var/run/docker.sock" - } - - instance, err := backend.Spawn(dockerHost) - if err != nil { - Fatalf("spawn: %v\n", err) - } - - instanceR, instanceW, err := instance.Attach("") - if err != nil { - Fatalf("attach: %v", err) - } - defer instanceW.Close() - go beam.Copy(app, instanceR) - - if err := instance.Start(); err != nil { - Fatalf("start: %v", err) - } - - err = doCmd(instance, c.Args()) - if err != nil { - Fatalf("%v", err) - } -} - -func doCmd(instance *beam.Object, args []string) error { - if len(args) == 0 { - return fmt.Errorf("no command supplied") - } - if args[0] == "ps" { - if len(args) != 1 { - return fmt.Errorf("usage: ps") - } - names, err := instance.Ls() - if err != nil { - return err - } - fmt.Println(strings.Join(names, "\n")) - return nil - } - if args[0] == "run" { - if len(args) < 3 { - return fmt.Errorf("usage: run IMAGE COMMAND...") - } - containerJson, err := json.Marshal(&runconfig.Config{ - Image: args[1], - Cmd: args[2:], - AttachStdin: false, - AttachStdout: true, - AttachStderr: true, - }) - if err != nil { - return err - } - container, err := instance.Spawn(string(containerJson)) - if err != nil { - return fmt.Errorf("spawn: %v", err) - } - logs, _, err := container.Attach("") - if err != nil { - return fmt.Errorf("attach: %v", err) - } - if err = container.Start(); err != nil { - return fmt.Errorf("start: %v", err) - } - for { - msg, err := logs.Receive(beam.Ret) - if err != nil { - if err.Error() == "EOF" { - break - } - return fmt.Errorf("error reading from container: %v", err) - } - if msg.Verb != beam.Log { - return fmt.Errorf("unexpected message reading from container: %v", msg) - } - if len(msg.Args) != 2 { - return fmt.Errorf("expected exactly 2 args to log message, got %d", len(msg.Args)) - } - tag, chunk := msg.Args[0], msg.Args[1] - var stream io.Writer - if tag == "stdout" { - stream = os.Stdout - } else if tag == "stderr" { - stream = os.Stderr - } else { - return fmt.Errorf("unrecognised tag: %s", tag) - } - fmt.Fprint(stream, chunk) - } - return nil - } - if args[0] == "inspect" { - if len(args) != 2 { - return fmt.Errorf("usage: inspect CONTAINER") - } - _, container, err := instance.Attach(args[1]) - if err != nil { - return fmt.Errorf("attach: %v", err) - } - json, err := container.Get() - if err != nil { - return fmt.Errorf("get: %v", err) - } - fmt.Println(json) - return nil - } - return fmt.Errorf("unrecognised command: %s", args[0]) -} - -func Fatalf(msg string, args ...interface{}) { - if !strings.HasSuffix(msg, "\n") { - msg = msg + "\n" - } - fmt.Fprintf(os.Stderr, msg, args...) - os.Exit(1) -} From 175b00f1b0745009e4d633389283065e6f447cde Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Sun, 8 Jun 2014 16:34:46 -0700 Subject: [PATCH 291/347] Rename forward backend to dockerclient Signed-off-by: Ben Firshman --- backends/backends.go | 2 +- backends/{forward.go => dockerclient.go} | 64 ++++++++++++------------ backends/orchard.go | 2 +- 3 files changed, 34 insertions(+), 34 deletions(-) rename backends/{forward.go => dockerclient.go} (80%) diff --git a/backends/backends.go b/backends/backends.go index 2d0d5eb236..4b799484e8 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -15,7 +15,7 @@ func New() *beam.Object { backends.Bind("simulator", Simulator()) backends.Bind("debug", Debug()) backends.Bind("fakeclient", FakeClient()) - backends.Bind("forward", Forward()) + backends.Bind("dockerclient", DockerClient()) backends.Bind("exec", Exec()) backends.Bind("dockerserver", DockerServer()) backends.Bind("orchard", Orchard()) diff --git a/backends/forward.go b/backends/dockerclient.go similarity index 80% rename from backends/forward.go rename to backends/dockerclient.go index 046804c85d..d4af1075dd 100644 --- a/backends/forward.go +++ b/backends/dockerclient.go @@ -17,59 +17,59 @@ import ( "time" ) -type ForwardConfig struct { +type DockerClientConfig struct { Scheme string URLHost string TLSClientConfig *tls.Config } -func Forward() beam.Sender { - return ForwardWithConfig(&ForwardConfig{ +func DockerClient() beam.Sender { + return DockerClientWithConfig(&DockerClientConfig{ Scheme: "http", URLHost: "dummy.host", }) } -func ForwardWithConfig(config *ForwardConfig) beam.Sender { +func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 1 { - return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } client := newClient() client.scheme = config.Scheme client.urlHost = config.URLHost client.transport.TLSClientConfig = config.TLSClientConfig client.setURL(ctx.Args[0]) - f := &forwarder{ + b := &dockerClientBackend{ client: client, Server: beam.NewServer(), } - f.Server.OnAttach(beam.Handler(f.attach)) - f.Server.OnStart(beam.Handler(f.start)) - f.Server.OnLs(beam.Handler(f.ls)) - f.Server.OnSpawn(beam.Handler(f.spawn)) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) + b.Server.OnAttach(beam.Handler(b.attach)) + b.Server.OnStart(beam.Handler(b.start)) + b.Server.OnLs(beam.Handler(b.ls)) + b.Server.OnSpawn(beam.Handler(b.spawn)) + _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) return err })) return backend } -type forwarder struct { +type dockerClientBackend struct { client *client *beam.Server } -func (f *forwarder) attach(ctx *beam.Message) error { +func (b *dockerClientBackend) attach(ctx *beam.Message) error { if ctx.Args[0] == "" { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) for { time.Sleep(1 * time.Second) - (&beam.Object{ctx.Ret}).Log("forward: heartbeat") + (&beam.Object{ctx.Ret}).Log("dockerclient: heartbeat") } } else { path := fmt.Sprintf("/containers/%s/json", ctx.Args[0]) - resp, err := f.client.call("GET", path, "") + resp, err := b.client.call("GET", path, "") if err != nil { return err } @@ -80,19 +80,19 @@ func (f *forwarder) attach(ctx *beam.Message) error { if resp.StatusCode != 200 { return fmt.Errorf("%s", respBody) } - c := f.newContainer(ctx.Args[0]) + c := b.newContainer(ctx.Args[0]) ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) } return nil } -func (f *forwarder) start(ctx *beam.Message) error { +func (b *dockerClientBackend) start(ctx *beam.Message) error { ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) return nil } -func (f *forwarder) ls(ctx *beam.Message) error { - resp, err := f.client.call("GET", "/containers/json", "") +func (b *dockerClientBackend) ls(ctx *beam.Message) error { + resp, err := b.client.call("GET", "/containers/json", "") if err != nil { return fmt.Errorf("get: %v", err) } @@ -115,11 +115,11 @@ func (f *forwarder) ls(ctx *beam.Message) error { return nil } -func (f *forwarder) spawn(ctx *beam.Message) error { +func (b *dockerClientBackend) spawn(ctx *beam.Message) error { if len(ctx.Args) != 1 { - return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } - resp, err := f.client.call("POST", "/containers/create", ctx.Args[0]) + resp, err := b.client.call("POST", "/containers/create", ctx.Args[0]) if err != nil { return err } @@ -134,15 +134,15 @@ func (f *forwarder) spawn(ctx *beam.Message) error { if err = json.Unmarshal(respBody, &respJson); err != nil { return err } - c := f.newContainer(respJson.Id) + c := b.newContainer(respJson.Id) if _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}); err != nil { return err } return nil } -func (f *forwarder) newContainer(id string) beam.Sender { - c := &container{forwarder: f, id: id} +func (b *dockerClientBackend) newContainer(id string) beam.Sender { + c := &container{backend: b, id: id} instance := beam.NewServer() instance.OnAttach(beam.Handler(c.attach)) instance.OnStart(beam.Handler(c.start)) @@ -152,8 +152,8 @@ func (f *forwarder) newContainer(id string) beam.Sender { } type container struct { - forwarder *forwarder - id string + backend *dockerClientBackend + id string } func (c *container) attach(ctx *beam.Message) error { @@ -167,7 +167,7 @@ func (c *container) attach(ctx *beam.Message) error { stderrR, stderrW := io.Pipe() go copyOutput(ctx.Ret, stdoutR, "stdout") go copyOutput(ctx.Ret, stderrR, "stderr") - c.forwarder.client.hijack("POST", path, nil, stdoutW, stderrW) + c.backend.client.hijack("POST", path, nil, stdoutW, stderrW) return nil } @@ -189,7 +189,7 @@ func copyOutput(sender beam.Sender, reader io.Reader, tag string) { func (c *container) start(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/start", c.id) - resp, err := c.forwarder.client.call("POST", path, "{}") + resp, err := c.backend.client.call("POST", path, "{}") if err != nil { return err } @@ -208,7 +208,7 @@ func (c *container) start(ctx *beam.Message) error { func (c *container) stop(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/stop", c.id) - resp, err := c.forwarder.client.call("POST", path, "{}") + resp, err := c.backend.client.call("POST", path, "{}") if err != nil { return err } @@ -227,7 +227,7 @@ func (c *container) stop(ctx *beam.Message) error { func (c *container) get(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/json", c.id) - resp, err := c.forwarder.client.call("GET", path, "") + resp, err := c.backend.client.call("GET", path, "") if err != nil { return err } diff --git a/backends/orchard.go b/backends/orchard.go index 536a13241b..1b30f873b7 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -35,7 +35,7 @@ func Orchard() beam.Sender { return err } - backend := ForwardWithConfig(&ForwardConfig{ + backend := DockerClientWithConfig(&DockerClientConfig{ Scheme: "https", URLHost: host.IPAddress, TLSClientConfig: tlsConfig, From 2324381fa68fe8ea0d69d4c72225fbdafe0c05e7 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Sun, 8 Jun 2014 16:36:26 -0700 Subject: [PATCH 292/347] Remove dockerclient heartbeat Signed-off-by: Ben Firshman --- backends/dockerclient.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index d4af1075dd..be26bbf682 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -14,7 +14,6 @@ import ( "net/http/httputil" "net/url" "strings" - "time" ) type DockerClientConfig struct { @@ -63,10 +62,7 @@ type dockerClientBackend struct { func (b *dockerClientBackend) attach(ctx *beam.Message) error { if ctx.Args[0] == "" { ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) - for { - time.Sleep(1 * time.Second) - (&beam.Object{ctx.Ret}).Log("dockerclient: heartbeat") - } + <-make(chan struct{}) } else { path := fmt.Sprintf("/containers/%s/json", ctx.Args[0]) resp, err := b.client.call("GET", path, "") From f1783fc527773ca25b8836b6d729e53fa4020c04 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Mon, 16 Jun 2014 16:30:58 +0100 Subject: [PATCH 293/347] Tests for dockerclient Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 2 +- backends/dockerclient_test.go | 186 ++++++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 backends/dockerclient_test.go diff --git a/backends/dockerclient.go b/backends/dockerclient.go index be26bbf682..38127c4474 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -204,7 +204,7 @@ func (c *container) start(ctx *beam.Message) error { func (c *container) stop(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/stop", c.id) - resp, err := c.backend.client.call("POST", path, "{}") + resp, err := c.backend.client.call("POST", path, "") if err != nil { return err } diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go new file mode 100644 index 0000000000..4c5948893a --- /dev/null +++ b/backends/dockerclient_test.go @@ -0,0 +1,186 @@ +package backends + +import ( + "github.com/docker/libswarm/beam" + + "fmt" + "io/ioutil" + "net/http" + "net/http/httptest" + "reflect" + "strings" + "testing" +) + +type requestStub struct { + reqMethod string + reqPath string + reqBody string + + resStatus int + resBody string +} + +func TestBackendSpawn(t *testing.T) { + instance(t, nil) +} + +func TestAttachAndStart(t *testing.T) { + i := instance(t, nil) + _, _, err := i.Attach("") + if err != nil { + t.Fatal(err) + } + err = i.Start() + if err != nil { + t.Fatal(err) + } +} + +func TestLs(t *testing.T) { + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: "/containers/json", + resBody: ` + [ + {"Names": ["/foo"]}, + {"Names": ["/bar"]} + ] + `, + }) + i := instance(t, server) + names, err := i.Ls() + if err != nil { + t.Fatal(err) + } + expected := []string{"foo", "bar"} + if !reflect.DeepEqual(names, expected) { + t.Fatalf("expected %#v, got %#v", expected, names) + } +} + +func TestSpawn(t *testing.T) { + server := makeServer(t, &requestStub{ + reqMethod: "POST", + reqPath: "/containers/create", + reqBody: "{}", + + resStatus: 201, + resBody: "{}", + }) + i := instance(t, server) + _, err := i.Spawn("{}") + if err != nil { + t.Fatal(err) + } +} + +func TestAttachToChild(t *testing.T) { + name := "foo" + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: fmt.Sprintf("/containers/%s/json", name), + + resBody: "{}", + }) + i := instance(t, server) + child(t, server, i, name) +} + +func TestStartChild(t *testing.T) { + name := "foo" + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: fmt.Sprintf("/containers/%s/json", name), + + resBody: "{}", + }, &requestStub{ + reqMethod: "POST", + reqPath: fmt.Sprintf("/containers/%s/start", name), + reqBody: "{}", + + resStatus: 204, + }) + i := instance(t, server) + c := child(t, server, i, name) + err := c.Start() + if err != nil { + t.Fatal(err) + } +} + +func TestStopChild(t *testing.T) { + name := "foo" + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: fmt.Sprintf("/containers/%s/json", name), + + resBody: "{}", + }, &requestStub{ + reqMethod: "POST", + reqPath: fmt.Sprintf("/containers/%s/stop", name), + + resStatus: 204, + }) + i := instance(t, server) + c := child(t, server, i, name) + err := c.Stop() + if err != nil { + t.Fatal(err) + } +} + +func makeServer(t *testing.T, stubs ...*requestStub) *httptest.Server { + for _, stub := range stubs { + stub.reqPath = fmt.Sprintf("/v1.11%s", stub.reqPath) + } + + stubSummaries := []string{} + for _, stub := range stubs { + stubSummaries = append(stubSummaries, fmt.Sprintf("%s %s", stub.reqMethod, stub.reqPath)) + } + + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + for _, stub := range stubs { + if r.Method == stub.reqMethod && r.URL.Path == stub.reqPath { + body, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Fatal(err) + } + if string(body) != stub.reqBody { + t.Fatalf("expected body: %#v, got body: %#v", stub.reqBody, string(body)) + } + + if stub.resStatus > 0 { + w.WriteHeader(stub.resStatus) + } + w.Write([]byte(stub.resBody)) + return + } + } + + t.Fatalf("Unexpected request: '%s %s'.\nStubs: %#v", r.Method, r.URL.Path, stubSummaries) + })) +} + +func instance(t *testing.T, server *httptest.Server) *beam.Object { + url := "tcp://localhost:4243" + if server != nil { + url = strings.Replace(server.URL, "http://", "tcp://", 1) + } + + backend := DockerClient() + instance, err := beam.Obj(backend).Spawn(url) + if err != nil { + t.Fatal(err) + } + return instance +} + +func child(t *testing.T, server *httptest.Server, i *beam.Object, name string) *beam.Object { + _, child, err := i.Attach(name) + if err != nil { + t.Fatal(err) + } + return child +} From 25d1250c2c3d66b5cc595911b32e9ed57d460fc3 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Mon, 9 Jun 2014 11:49:56 -0700 Subject: [PATCH 294/347] Add attach to dockerserver - Move copyOutput helper from dockerclient to beam/stream.go - Implement /containers//attach and /containers//wait Signed-off-by: Ben Firshman --- backends/dockerclient.go | 19 +------- backends/dockerserver.go | 95 ++++++++++++++++++++++++++++++++++++++-- beam/stream.go | 38 ++++++++++++++++ 3 files changed, 132 insertions(+), 20 deletions(-) create mode 100644 beam/stream.go diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 38127c4474..e2b0f50113 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -161,28 +161,13 @@ func (c *container) attach(ctx *beam.Message) error { stdoutR, stdoutW := io.Pipe() stderrR, stderrW := io.Pipe() - go copyOutput(ctx.Ret, stdoutR, "stdout") - go copyOutput(ctx.Ret, stderrR, "stderr") + go beam.EncodeStream(ctx.Ret, stdoutR, "stdout") + go beam.EncodeStream(ctx.Ret, stderrR, "stderr") c.backend.client.hijack("POST", path, nil, stdoutW, stderrW) return nil } -func copyOutput(sender beam.Sender, reader io.Reader, tag string) { - chunk := make([]byte, 4096) - for { - n, err := reader.Read(chunk) - if n > 0 { - sender.Send(&beam.Message{Verb: beam.Log, Args: []string{tag, string(chunk[0:n])}}) - } - if err != nil { - message := fmt.Sprintf("Error reading from stream: %v", err) - sender.Send(&beam.Message{Verb: beam.Error, Args: []string{message}}) - break - } - } -} - func (c *container) start(ctx *beam.Message) error { path := fmt.Sprintf("/containers/%s/start", c.id) resp, err := c.backend.client.call("POST", path, "{}") diff --git a/backends/dockerserver.go b/backends/dockerserver.go index af14aa0ca1..d6fe22d8fd 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -6,12 +6,15 @@ import ( "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/api" "github.com/dotcloud/docker/pkg/version" + "github.com/dotcloud/docker/utils" "github.com/gorilla/mux" + "io" "io/ioutil" "net" "net/http" "net/url" "strings" + "sync" "time" "strconv" ) @@ -241,6 +244,90 @@ func postContainersStop(out beam.Sender, version version.Version, w http.Respons return nil } +func hijackServer(w http.ResponseWriter) (io.ReadCloser, io.Writer, error) { + conn, _, err := w.(http.Hijacker).Hijack() + if err != nil { + return nil, nil, err + } + // Flush the options to make sure the client sets the raw mode + conn.Write([]byte{}) + return conn, conn, nil +} + +func postContainersAttach(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if err := r.ParseForm(); err != nil { + return err + } + if vars == nil { + return fmt.Errorf("Missing parameter") + } + + inStream, outStream, err := hijackServer(w) + if err != nil { + return err + } + defer func() { + if tcpc, ok := inStream.(*net.TCPConn); ok { + tcpc.CloseWrite() + } else { + inStream.Close() + } + }() + defer func() { + if tcpc, ok := outStream.(*net.TCPConn); ok { + tcpc.CloseWrite() + } else if closer, ok := outStream.(io.Closer); ok { + closer.Close() + } + }() + + fmt.Fprintf(outStream, "HTTP/1.1 200 OK\r\nContent-Type: application/vnd.docker.raw-stream\r\n\r\n") + + // TODO: if a TTY, then no multiplexing is done + errStream := utils.NewStdWriter(outStream, utils.Stderr) + outStream = utils.NewStdWriter(outStream, utils.Stdout) + + _, containerOut, err := beam.Obj(out).Attach(vars["name"]) + if err != nil { + return err + } + container := beam.Obj(containerOut) + + containerR, _, err := container.Attach("") + var tasks sync.WaitGroup + go func() { + defer tasks.Done() + err := beam.DecodeStream(outStream, containerR, "stdout") + if err != nil { + fmt.Printf("decodestream: %v\n", err) + } + }() + tasks.Add(1) + go func() { + defer tasks.Done() + err := beam.DecodeStream(errStream, containerR, "stderr") + if err != nil { + fmt.Printf("decodestream: %v\n", err) + } + }() + tasks.Add(1) + tasks.Wait() + + return nil +} + +func postContainersWait(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if vars == nil { + return fmt.Errorf("Missing parameter") + } + + // TODO: this should wait for container to end out output correct + // exit status + return writeJSON(w, http.StatusOK, map[string]interface{}{ + "StatusCode": "0", + }) +} + func createRouter(out beam.Sender) (*mux.Router, error) { r := mux.NewRouter() m := map[string]map[string]HttpApiFunc{ @@ -249,9 +336,11 @@ func createRouter(out beam.Sender) (*mux.Router, error) { "/containers/json": getContainersJSON, }, "POST": { - "/containers/create": postContainersCreate, - "/containers/{name:.*}/start": postContainersStart, - "/containers/{name:.*}/stop": postContainersStop, + "/containers/create": postContainersCreate, + "/containers/{name:.*}/attach": postContainersAttach, + "/containers/{name:.*}/start": postContainersStart, + "/containers/{name:.*}/stop": postContainersStop, + "/containers/{name:.*}/wait": postContainersWait, }, "DELETE": {}, "OPTIONS": {}, diff --git a/beam/stream.go b/beam/stream.go new file mode 100644 index 0000000000..beef7229c1 --- /dev/null +++ b/beam/stream.go @@ -0,0 +1,38 @@ +package beam + +import ( + "fmt" + "io" +) + +func EncodeStream(sender Sender, reader io.Reader, tag string) { + chunk := make([]byte, 4096) + for { + n, err := reader.Read(chunk) + if n > 0 { + sender.Send(&Message{Verb: Log, Args: []string{tag, string(chunk[0:n])}}) + } + if err != nil { + message := fmt.Sprintf("Error reading from stream: %v", err) + sender.Send(&Message{Verb: Error, Args: []string{message}}) + break + } + } +} + +func DecodeStream(dst io.Writer, src Receiver, tag string) error { + for { + msg, err := src.Receive(Ret) + if err == io.EOF { + return nil + } + if err != nil { + return err + } + if tag == msg.Args[0] { + if _, err := dst.Write([]byte(msg.Args[1])); err != nil { + return err + } + } + } +} From 7d816e029e7b9be6d900b3f2673937e0b38ed76b Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Wed, 18 Jun 2014 01:57:33 -0400 Subject: [PATCH 295/347] don't start ec2 instance if already exists 4 real Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index b97d0a59f9..ca96f27db0 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -169,7 +169,9 @@ func awsInit(config *ec2Config) (ec2Conn *ec2.EC2, err error) { func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { filter := ec2.NewFilter() filter.Add("tag:Name", c.config.tag) - if resp, err := c.ec2Conn.Instances([]string{}, filter); err != nil { + resp, err := c.ec2Conn.Instances([]string{}, filter) + + if err != nil { return nil, err } else { if resp.Reservations == nil { @@ -177,12 +179,13 @@ func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { } instance := resp.Reservations[0].Instances[0] + fmt.Println(instance.State.Name) - if (instance.State.Name != "running" || instance.State.Name != "pending") { - return nil, nil + if (instance.State.Name == "running" || instance.State.Name == "pending") { + return &instance, nil } - return &instance, nil + return nil, nil } } From 11ec16e08daa734b7cb0a7d014ace99a582a947c Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Thu, 19 Jun 2014 00:46:38 -0400 Subject: [PATCH 296/347] implemented `docker ps` Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 54 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index ca96f27db0..4204dbae69 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -25,12 +25,16 @@ type ec2Client struct { ec2Conn *ec2.EC2 Server *beam.Server instance *ec2.Instance + dockerInstance *beam.Object } func (c *ec2Client) get(ctx *beam.Message) error { fmt.Println("*** ec2 Get ***") - body := `{}` - ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{body}}) + output, err := c.dockerInstance.Get() + if (err != nil) { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{output}}) return nil } @@ -52,6 +56,7 @@ func (c *ec2Client) start(ctx *beam.Message) error { } } + c.initDockerClientInstance(c.instance) ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return nil } @@ -64,13 +69,18 @@ func (c *ec2Client) log(ctx *beam.Message) error { func (c *ec2Client) spawn(ctx *beam.Message) error { fmt.Println("*** ec2 OnSpawn ***") + c.dockerInstance.Spawn(ctx.Args...) ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return nil } func (c *ec2Client) ls(ctx *beam.Message) error { fmt.Println("*** ec2 OnLs ***") - ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{}}) + output, err := c.dockerInstance.Ls() + if (err != nil) { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: output}) return nil } @@ -88,12 +98,20 @@ func (c *ec2Client) stop(ctx *beam.Message) error { func (c *ec2Client) attach(ctx *beam.Message) error { fmt.Println("*** ec2 OnAttach ***") - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) - - for { - time.Sleep(1 * time.Second) - (&beam.Object{ctx.Ret}).Log("ec2: heartbeat") + if ctx.Args[0] == "" { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + for { + time.Sleep(1 * time.Second) + (&beam.Object{ctx.Ret}).Log("ec2: heartbeat") + } + } else { + _, out, err := c.dockerInstance.Attach(ctx.Args[0]) + if err != nil { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: out}) } + return nil } @@ -179,7 +197,6 @@ func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { } instance := resp.Reservations[0].Instances[0] - fmt.Println(instance.State.Name) if (instance.State.Name == "running" || instance.State.Name == "pending") { return &instance, nil @@ -235,6 +252,23 @@ func (c *ec2Client) startInstance() error { return nil } +func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { + dockerClient := DockerClientWithConfig(&DockerClientConfig{ + Scheme: "http", + URLHost: instance.IPAddress, + }) + + dockerBackend := beam.Obj(dockerClient) + url := fmt.Sprintf("tcp://%s:4243", instance.IPAddress) + dockerInstance, err := dockerBackend.Spawn(url) + c.dockerInstance = dockerInstance + + if err != nil { + return err + } + return nil +} + func Ec2() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { @@ -251,7 +285,7 @@ func Ec2() beam.Sender { return err } - client := &ec2Client{config, ec2Conn, beam.NewServer(), nil} + client := &ec2Client{config, ec2Conn, beam.NewServer(), nil, nil} client.Server.OnSpawn(beam.Handler(client.spawn)) client.Server.OnStart(beam.Handler(client.start)) client.Server.OnStop(beam.Handler(client.stop)) From f9f5d4c4a09300bfd874cb71411a0cfcbdd198ea Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Thu, 19 Jun 2014 01:53:37 -0400 Subject: [PATCH 297/347] remove the heartbeat - logging clean up Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index 4204dbae69..5078b4ea9f 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -29,7 +29,6 @@ type ec2Client struct { } func (c *ec2Client) get(ctx *beam.Message) error { - fmt.Println("*** ec2 Get ***") output, err := c.dockerInstance.Get() if (err != nil) { return err @@ -39,12 +38,10 @@ func (c *ec2Client) get(ctx *beam.Message) error { } func (c *ec2Client) start(ctx *beam.Message) error { - fmt.Println("*** ec2 OnStart ***") - if instance, err := c.findInstance(); err != nil { return err } else if instance != nil { - fmt.Println("*** found existing instance ****") + fmt.Printf("Found existing instance: %s\n", instance.InstanceId) c.instance = instance } else { if err := c.startInstance(); err != nil { @@ -62,20 +59,20 @@ func (c *ec2Client) start(ctx *beam.Message) error { } func (c *ec2Client) log(ctx *beam.Message) error { - fmt.Println("*** ec2 OnLog ***") ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return nil } func (c *ec2Client) spawn(ctx *beam.Message) error { - fmt.Println("*** ec2 OnSpawn ***") - c.dockerInstance.Spawn(ctx.Args...) - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + out, err := c.dockerInstance.Spawn(ctx.Args...) + if err != nil { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: out}) return nil } func (c *ec2Client) ls(ctx *beam.Message) error { - fmt.Println("*** ec2 OnLs ***") output, err := c.dockerInstance.Ls() if (err != nil) { return err @@ -85,25 +82,19 @@ func (c *ec2Client) ls(ctx *beam.Message) error { } func (c *ec2Client) error(ctx *beam.Message) error { - fmt.Println("*** ec2 OnError ***") ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return nil } func (c *ec2Client) stop(ctx *beam.Message) error { - fmt.Println("*** ec2 OnStop ***") ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return nil } func (c *ec2Client) attach(ctx *beam.Message) error { - fmt.Println("*** ec2 OnAttach ***") if ctx.Args[0] == "" { ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) - for { - time.Sleep(1 * time.Second) - (&beam.Object{ctx.Ret}).Log("ec2: heartbeat") - } + <-make(chan struct{}) } else { _, out, err := c.dockerInstance.Attach(ctx.Args[0]) if err != nil { @@ -272,8 +263,6 @@ func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { func Ec2() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { - fmt.Println("*** init ***") - var config, err = newConfig(ctx.Args) if (err != nil) { From d79ce93346987a54e88762c431e0ba8379d44864 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Fri, 20 Jun 2014 20:00:03 -0400 Subject: [PATCH 298/347] allow more aws options to be configurable Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index 5078b4ea9f..b51b0fddc1 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -110,6 +110,7 @@ func defaultConfigValues() (config *ec2Config) { config = new(ec2Config) config.region = aws.USEast config.instanceType = "t1.micro" + config.zone = "us-east-1a" return config } @@ -209,10 +210,13 @@ func (c *ec2Client) startInstance() error { // TODO (aaron): make sure to wait for cloud-init to finish before // executing docker commands options := ec2.RunInstances{ - ImageId: c.config.ami, - InstanceType: c.config.instanceType, - KeyName: c.config.keypair, - UserData: []byte("#include https://get.docker.io"), + ImageId: c.config.ami, + InstanceType: c.config.instanceType, + KeyName: c.config.keypair, + AvailZone: c.config.zone, + // TODO: allow more than one sg in the future + SecurityGroups: []ec2.SecurityGroup{ec2.SecurityGroup{Name: c.config.securityGroup}}, + UserData: []byte(userdata), } resp, err := c.ec2Conn.RunInstances(&options) @@ -290,3 +294,13 @@ func Ec2() beam.Sender { })) return backend } + +// TODO (aaron): load this externally +const userdata = ` +#!/bin/bash +yum install -y docker +cat << EOF > /etc/sysconfig/docker +other_args="-H tcp://127.0.0.1:4243" +EOF +service docker start +` From acf1b88de573882d8b7cc68f0d41f002333f296a Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Fri, 20 Jun 2014 21:34:11 -0400 Subject: [PATCH 299/347] ssh tunnel to docker daemon Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 105 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 95 insertions(+), 10 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index b51b0fddc1..6a1ff52ead 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -1,9 +1,16 @@ package backends import ( + "os" + "os/signal" + "syscall" + "path" + "os/user" "time" "fmt" "strings" + "errors" + "os/exec" "github.com/docker/libswarm/beam" "launchpad.net/goamz/aws" @@ -11,20 +18,25 @@ import ( ) type ec2Config struct { - securityGroup string - instanceType string - keypair string + securityGroup string + instanceType string zone string ami string tag string + sshUser string + sshKey string + sshLocalPort string + sshRemotePort string + keypair string region aws.Region } type ec2Client struct { - config *ec2Config - ec2Conn *ec2.EC2 - Server *beam.Server - instance *ec2.Instance + config *ec2Config + ec2Conn *ec2.EC2 + Server *beam.Server + instance *ec2.Instance + sshTunnel *os.Process dockerInstance *beam.Object } @@ -54,7 +66,9 @@ func (c *ec2Client) start(ctx *beam.Message) error { } c.initDockerClientInstance(c.instance) + c.startSshTunnel() ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + return nil } @@ -106,11 +120,22 @@ func (c *ec2Client) attach(ctx *beam.Message) error { return nil } +func defaultSshKeyPath() (string) { + usr, _ := user.Current() + dir := usr.HomeDir + return path.Join(dir, ".ssh", "id_rsa") +} + func defaultConfigValues() (config *ec2Config) { config = new(ec2Config) config.region = aws.USEast + config.ami = "ami-7c807d14" config.instanceType = "t1.micro" config.zone = "us-east-1a" + config.sshUser = "ec2-user" + config.sshLocalPort = "4910" + config.sshRemotePort = "4243" + config.sshKey = defaultSshKeyPath() return config } @@ -141,6 +166,10 @@ func newConfig(args []string) (config *ec2Config, err error) { config.securityGroup = val case "--instance_type": config.instanceType = val + case "--ssh_user": + config.sshUser = val + case "--ssh_key": + config.sshKey = val default: fmt.Printf("Unrecognizable option: %s value: %s", opt, val) } @@ -250,11 +279,11 @@ func (c *ec2Client) startInstance() error { func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { dockerClient := DockerClientWithConfig(&DockerClientConfig{ Scheme: "http", - URLHost: instance.IPAddress, + URLHost: "localhost", }) dockerBackend := beam.Obj(dockerClient) - url := fmt.Sprintf("tcp://%s:4243", instance.IPAddress) + url := fmt.Sprintf("tcp://localhost:%s", c.config.sshLocalPort) dockerInstance, err := dockerBackend.Spawn(url) c.dockerInstance = dockerInstance @@ -264,6 +293,17 @@ func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { return nil } +func signalHandler(client *ec2Client) { + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + signal.Notify(c, syscall.SIGTERM) + go func() { + <-c + client.Close() + os.Exit(0) + }() +} + func Ec2() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { @@ -278,7 +318,7 @@ func Ec2() beam.Sender { return err } - client := &ec2Client{config, ec2Conn, beam.NewServer(), nil, nil} + client := &ec2Client{config, ec2Conn, beam.NewServer(), nil, nil, nil} client.Server.OnSpawn(beam.Handler(client.spawn)) client.Server.OnStart(beam.Handler(client.start)) client.Server.OnStop(beam.Handler(client.stop)) @@ -288,6 +328,7 @@ func Ec2() beam.Sender { client.Server.OnLs(beam.Handler(client.ls)) client.Server.OnGet(beam.Handler(client.get)) + signalHandler(client) _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) return err @@ -295,6 +336,50 @@ func Ec2() beam.Sender { return backend } +func (c *ec2Client) Close() { + if c.sshTunnel != nil { + c.sshTunnel.Kill() + if state, err := c.sshTunnel.Wait(); err != nil { + fmt.Printf("Wait result: state:%v, err:%s\n", state, err) + } + c.sshTunnel = nil + } +} + +// thx to the rax.go :) +func (c *ec2Client) startSshTunnel() error { + if c.instance == nil { + return errors.New("no valid ec2 instance found.") + } + + options := []string { + "-o", "PasswordAuthentication=no", + "-o", "LogLevel=quiet", + "-o", "UserKnownHostsFile=/dev/null", + "-o", "CheckHostIP=no", + "-o", "StrictHostKeyChecking=no", + "-i", c.config.sshKey, + "-A", + "-p", "22", + fmt.Sprintf("%s@%s", c.config.sshUser, c.instance.IPAddress), + "-N", + "-f", + "-L", fmt.Sprintf("%s:localhost:%s", c.config.sshLocalPort, c.config.sshRemotePort), + } + + cmd := exec.Command("ssh", options...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + if err := cmd.Run(); err != nil { + return err + } + + c.sshTunnel = cmd.Process + + return nil +} + // TODO (aaron): load this externally const userdata = ` #!/bin/bash From 0285605f6acd30e2ea0ce67d5d609d8cbb43e261 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Fri, 20 Jun 2014 22:06:28 -0400 Subject: [PATCH 300/347] fill in all regions Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backends/ec2.go b/backends/ec2.go index 6a1ff52ead..45327fa023 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -178,7 +178,6 @@ func newConfig(args []string) (config *ec2Config, err error) { } func convertToRegion(input string) aws.Region { - // TODO (aaron): fill in more regions switch input { case "us-east-1": return aws.USEast @@ -188,6 +187,14 @@ func convertToRegion(input string) aws.Region { return aws.USWest2 case "eu-west-1": return aws.EUWest + case "sa-east-1": + return aws.SAEast + case "ap-northeast-1": + return aws.APNortheast + case "ap-southeast-1": + return aws.APSoutheast + case "ap-southeast-2": + return aws.APSoutheast2 default: fmt.Println("Unrecognizable region, default to: us-east-1") return aws.USEast From d4a1ab2f7fcddd3c799104cadcdd3be4eaf08ffd Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Fri, 20 Jun 2014 23:57:29 -0400 Subject: [PATCH 301/347] wait for ssh server and docker daemon to be up Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 66 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 13 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index 45327fa023..6a9d4e45af 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -2,6 +2,8 @@ package backends import ( "os" + "net" + "net/http" "os/signal" "syscall" "path" @@ -66,7 +68,11 @@ func (c *ec2Client) start(ctx *beam.Message) error { } c.initDockerClientInstance(c.instance) + c.waitForSsh() c.startSshTunnel() + c.waitForDockerDaemon() + fmt.Printf("ec2 service up and running: region: %s zone: %s\n", + c.config.region.Name, c.config.zone) ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return nil @@ -140,8 +146,6 @@ func defaultConfigValues() (config *ec2Config) { } func newConfig(args []string) (config *ec2Config, err error) { - // TODO (aaron): fail fast on incorrect number of args - var optValPair []string var opt, val string @@ -211,7 +215,6 @@ func awsInit(config *ec2Config) (ec2Conn *ec2.EC2, err error) { return ec2.New(auth, config.region), nil } - func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { filter := ec2.NewFilter() filter.Add("tag:Name", c.config.tag) @@ -243,8 +246,6 @@ func (c *ec2Client) tagtInstance() error { } func (c *ec2Client) startInstance() error { - // TODO (aaron): make sure to wait for cloud-init to finish before - // executing docker commands options := ec2.RunInstances{ ImageId: c.config.ami, InstanceType: c.config.instanceType, @@ -300,6 +301,44 @@ func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { return nil } +func (c *ec2Client) waitForDockerDaemon() { + fmt.Println("waiting for docker daemon on remote machine to be available.") + for { + resp, _:= http.Get("http://localhost:" + c.config.sshLocalPort) + // wait for a response. any response to know docker daemon is up + if resp != nil { + break + } + fmt.Print(".") + time.Sleep(2 * time.Second) + } + fmt.Println() +} + +func (c *ec2Client) waitForSsh() { + fmt.Println("waiting for ssh to be available. make sure ssh is open on port 22.") + conn := waitFor(c.instance.IPAddress, "22") + conn.Close() +} + +func waitFor(ip, port string) (conn net.Conn) { + ipPort := fmt.Sprintf("%s:%s", ip, port) + var err error + + for { + conn, err = net.DialTimeout("tcp", ipPort, time.Duration(3) * time.Second) + if err != nil { + fmt.Print(".") + time.Sleep(2 * time.Second) + } else { + fmt.Println() + break + } + } + + return conn +} + func signalHandler(client *ec2Client) { c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) @@ -340,6 +379,7 @@ func Ec2() beam.Sender { return err })) + return backend } @@ -360,14 +400,14 @@ func (c *ec2Client) startSshTunnel() error { } options := []string { - "-o", "PasswordAuthentication=no", - "-o", "LogLevel=quiet", - "-o", "UserKnownHostsFile=/dev/null", - "-o", "CheckHostIP=no", - "-o", "StrictHostKeyChecking=no", - "-i", c.config.sshKey, - "-A", - "-p", "22", + "-o", "PasswordAuthentication=no", + "-o", "LogLevel=quiet", + "-o", "UserKnownHostsFile=/dev/null", + "-o", "CheckHostIP=no", + "-o", "StrictHostKeyChecking=no", + "-i", c.config.sshKey, + "-A", + "-p", "22", fmt.Sprintf("%s@%s", c.config.sshUser, c.instance.IPAddress), "-N", "-f", From add111b53672b5a6b3b17d3a91ffddc94c8a0a5e Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Sat, 21 Jun 2014 12:32:43 -0400 Subject: [PATCH 302/347] add docker stop Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/ec2.go b/backends/ec2.go index 6a9d4e45af..1ca2d77c3c 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -107,7 +107,7 @@ func (c *ec2Client) error(ctx *beam.Message) error { } func (c *ec2Client) stop(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + c.dockerInstance.Stop() return nil } From f795afc4c979192b5043145c7a460d209eac8ccd Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Sat, 21 Jun 2014 12:44:16 -0400 Subject: [PATCH 303/347] remove unnecessary fn for now Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index 1ca2d77c3c..ed5f964d7b 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -78,11 +78,6 @@ func (c *ec2Client) start(ctx *beam.Message) error { return nil } -func (c *ec2Client) log(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) - return nil -} - func (c *ec2Client) spawn(ctx *beam.Message) error { out, err := c.dockerInstance.Spawn(ctx.Args...) if err != nil { @@ -101,11 +96,6 @@ func (c *ec2Client) ls(ctx *beam.Message) error { return nil } -func (c *ec2Client) error(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) - return nil -} - func (c *ec2Client) stop(ctx *beam.Message) error { c.dockerInstance.Stop() return nil @@ -369,8 +359,6 @@ func Ec2() beam.Sender { client.Server.OnStart(beam.Handler(client.start)) client.Server.OnStop(beam.Handler(client.stop)) client.Server.OnAttach(beam.Handler(client.attach)) - client.Server.OnLog(beam.Handler(client.log)) - client.Server.OnError(beam.Handler(client.error)) client.Server.OnLs(beam.Handler(client.ls)) client.Server.OnGet(beam.Handler(client.get)) From bef2da93eef65a48d6d181b9c64fa482b1fab286 Mon Sep 17 00:00:00 2001 From: fermayo Date: Sat, 14 Jun 2014 16:49:56 +0200 Subject: [PATCH 304/347] Update exposed ports mapping Docker-DCO-1.1-Signed-off-by: Fernando Mayo (github: fermayo) --- backends/dockerserver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index d6fe22d8fd..8d9de4c2f1 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -157,7 +157,7 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response } } else { newport := port{ - PublicPort: portnum, + PrivatePort: portnum, Type: proto, } ports = append(ports, newport) From 49129ba27b8bdd7095ae25397ef2ac4e05803909 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Mon, 30 Jun 2014 23:00:13 -0700 Subject: [PATCH 305/347] Refactor Tutum backend to use beam Docker-DCO-1.1-Signed-off-by: Fernando Mayo (github: fermayo) Conflicts: backends/backends.go --- backends/backends.go | 1 + backends/tutum.go | 382 +++++++++++++++++++------------------- swarmd/Godeps/Godeps.json | 2 +- 3 files changed, 190 insertions(+), 195 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index 4b799484e8..bc0ab2aa65 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -22,5 +22,6 @@ func New() *beam.Object { backends.Bind("aggregate", Aggregate()) backends.Bind("shipyard", Shipyard()) backends.Bind("ec2", Ec2()) + backends.Bind("tutum", Tutum()) return beam.Obj(backends) } diff --git a/backends/tutum.go b/backends/tutum.go index 0f2800b27c..dc83e56633 100644 --- a/backends/tutum.go +++ b/backends/tutum.go @@ -3,223 +3,218 @@ package backends import ( "encoding/json" "fmt" + "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/engine" - "github.com/dotcloud/docker/runconfig" "github.com/tutumcloud/go-tutum" - "io" "io/ioutil" - "log" "net/http" "net/url" "strings" + "time" ) var ( - tutumConnector = "docker.tutum.co:49460" + tutumConnectorHost = "https://docker.tutum.co:49460" tutumConnectorVersion = "v1.11" ) -func Tutum() engine.Installer { - return &tutumBackend{} +func Tutum() beam.Sender { + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + if len(ctx.Args) == 2 { + tutum.User = ctx.Args[0] + tutum.ApiKey = ctx.Args[1] + } + if !tutum.IsAuthenticated() { + return fmt.Errorf("You need to provide your Tutum credentials in ~/.tutum or environment variables TUTUM_USER and TUTUM_APIKEY") + } + tutumDockerConnector, err := newConnector(tutumConnectorHost, tutumConnectorVersion) + if err != nil { + return fmt.Errorf("%v", err) + } + t := &tutumBackend{ + tutumDockerConnector: tutumDockerConnector, + Server: beam.NewServer(), + } + t.Server.OnAttach(beam.Handler(t.attach)) + t.Server.OnStart(beam.Handler(t.ack)) + t.Server.OnLs(beam.Handler(t.ls)) + t.Server.OnSpawn(beam.Handler(t.spawn)) + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) + return err + })) + return backend } type tutumBackend struct { + tutumDockerConnector *tutumDockerConnector + *beam.Server } -func (t *tutumBackend) Install(eng *engine.Engine) error { - eng.Register("tutum", func(job *engine.Job) engine.Status { - if len(job.Args) == 1 { - tutumConnector = job.Args[0] +func (t *tutumBackend) attach(ctx *beam.Message) error { + if ctx.Args[0] == "" { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) + for { + time.Sleep(1 * time.Second) } - if !tutum.IsAuthenticated() { - return job.Errorf("You need to provide your Tutum credentials in ~/.tutum or environment variables TUTUM_USER and TUTUM_APIKEY") - } - job.Eng.Register("containers", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/json?all=%s&limit=%s", - url.QueryEscape(job.Getenv("all")), - url.QueryEscape(job.Getenv("limit")), - ) - resp, err := tutumConnectorCall("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - c := engine.NewTable("Created", 0) - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return job.Errorf("%s: read body: %v", path, err) - } - if _, err := c.ReadListFrom(body); err != nil { - return job.Errorf("%s: readlist: %v", path, err) - } - c.WriteListTo(job.Stdout) - return engine.StatusOK - }) - job.Eng.Register("create", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/create", - ) - config := runconfig.ContainerConfigFromJob(job) - data, err := json.Marshal(config) - if err != nil { - return job.Errorf("%s: json marshal: %v", path, err) - } - resp, err := tutumConnectorCall("POST", path, string(data)) - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return job.Errorf("%s: read body: %#v", path, err) - } - var containerOut struct { - Id string - Warnings []string - } - err = json.Unmarshal([]byte(body), &containerOut) - _, err = job.Printf("%s\n", containerOut.Id) - if err != nil { - return job.Errorf("%s: write body: %#v", path, err) - } - log.Printf("%s", string(body)) - return engine.StatusOK - }) - job.Eng.Register("container_delete", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s?force=%s", - job.Args[0], - url.QueryEscape(job.Getenv("forceRemove")), - ) - _, err := tutumConnectorCall("DELETE", path, "") - if err != nil { - return job.Errorf("%s: delete: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("start", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf("/containers/%s/start", job.Args[0]) - config := runconfig.ContainerConfigFromJob(job) - data, err := json.Marshal(config) - if err != nil { - return job.Errorf("%s: json marshal: %v", path, err) - } - _, err = tutumConnectorCall("POST", path, string(data)) - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("stop", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/stop?t=%s", - job.Args[0], - url.QueryEscape(job.Getenv("t")), - ) - _, err := tutumConnectorCall("POST", path, "") - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("kill", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/kill?signal=%s", - job.Args[0], - job.Args[1], - ) - _, err := tutumConnectorCall("POST", path, "") - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("restart", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/restart?t=%s", - job.Args[0], - url.QueryEscape(job.Getenv("t")), - ) - _, err := tutumConnectorCall("POST", path, "") - if err != nil { - return job.Errorf("%s: post: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("inspect", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/json", - job.Args[0], - ) - resp, err := tutumConnectorCall("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - _, err = io.Copy(job.Stdout, resp.Body) - if err != nil { - return job.Errorf("%s: copy stream: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("logs", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := fmt.Sprintf( - "/containers/%s/logs?stdout=%s&stderr=%s", - job.Args[0], - url.QueryEscape(job.Getenv("stdout")), - url.QueryEscape(job.Getenv("stderr")), - ) - resp, err := tutumConnectorCall("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - _, err = io.Copy(job.Stdout, resp.Body) - if err != nil { - return job.Errorf("%s: copy stream: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.Register("version", func(job *engine.Job) engine.Status { - log.Printf("Received '%s' operation....", job.Name) - path := "/version" - resp, err := tutumConnectorCall("GET", path, "") - if err != nil { - return job.Errorf("%s: get: %v", path, err) - } - _, err = io.Copy(job.Stdout, resp.Body) - if err != nil { - return job.Errorf("%s: copy stream: %v", path, err) - } - return engine.StatusOK - }) - job.Eng.RegisterCatchall(func(job *engine.Job) engine.Status { - return job.Errorf("Operation not yet supported: %s", job.Name) - }) - return engine.StatusOK - }) + } else { + c := t.newContainer(ctx.Args[0]) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) + } return nil } -func tutumConnectorCall(method, path, body string) (*http.Response, error) { - apiPath := fmt.Sprintf( - "/%s%s", - tutumConnectorVersion, - path, - ) - u, err := url.Parse(apiPath) +func (t *tutumBackend) ack(ctx *beam.Message) error { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) + return nil +} + +func (t *tutumBackend) ls(ctx *beam.Message) error { + resp, err := t.tutumDockerConnector.call("GET", "/containers/json", "") + if err != nil { + return fmt.Errorf("%s: get: %v", t.tutumDockerConnector.URL.String(), err) + } + c := engine.NewTable("Created", 0) + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return fmt.Errorf("%s: read body: %v", t.tutumDockerConnector.URL.String(), err) + } + if _, err := c.ReadListFrom(body); err != nil { + return fmt.Errorf("%s: readlist: %v", t.tutumDockerConnector.URL.String(), err) + } + ids := []string{} + for _, env := range c.Data { + ids = append(ids, env.GetList("Id")[0]) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: ids}); err != nil { + return fmt.Errorf("%s: send response: %v", t.tutumDockerConnector.URL.String(), err) + } + return nil +} + +func (t *tutumBackend) spawn(ctx *beam.Message) error { + if len(ctx.Args) != 1 { + return fmt.Errorf("tutum: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + } + resp, err := t.tutumDockerConnector.call("POST", "/containers/create", ctx.Args[0]) + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 201 { + return fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) + } + var respJson struct{ Id string } + if err = json.Unmarshal(respBody, &respJson); err != nil { + return err + } + c := t.newContainer(respJson.Id) + if _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}); err != nil { + return err + } + return nil +} + +func (t *tutumBackend) newContainer(id string) beam.Sender { + c := &tutumContainer{tutumBackend: t, id: id} + instance := beam.NewServer() + instance.OnGet(beam.Handler(c.get)) + instance.OnStart(beam.Handler(c.start)) + instance.OnStop(beam.Handler(c.stop)) + return instance +} + +type tutumContainer struct { + tutumBackend *tutumBackend + id string +} + +func (c *tutumContainer) get(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/json", c.id) + resp, err := c.tutumBackend.tutumDockerConnector.call("GET", path, "") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + fmt.Printf("%s", respBody) + if err != nil { + return err + } + if resp.StatusCode != 200 { + return fmt.Errorf("%s", respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{string(respBody)}}); err != nil { + return err + } + return nil +} + +func (c *tutumContainer) start(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/start", c.id) + resp, err := c.tutumBackend.tutumDockerConnector.call("POST", path, "") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 204 { + return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + return err + } + return nil +} + +func (c *tutumContainer) stop(ctx *beam.Message) error { + path := fmt.Sprintf("/containers/%s/stop", c.id) + resp, err := c.tutumBackend.tutumDockerConnector.call("POST", path, "") + if err != nil { + return err + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode != 204 { + return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) + } + if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + return err + } + return nil +} + +type tutumDockerConnector struct { + URL *url.URL + version string +} + +func newConnector(peer, version string) (*tutumDockerConnector, error) { + u, err := url.Parse(peer) if err != nil { return nil, err } - u.Host = tutumConnector - u.Scheme = "https" - log.Printf("[tutum] >> Calling connector: %s %s", method, path) + c := &tutumDockerConnector{ + URL: u, + version: version, + } + return c, nil +} + +func (c *tutumDockerConnector) call(method, path, body string) (*http.Response, error) { + path = fmt.Sprintf("/%s%s", c.version, path) + u, err := url.Parse(path) + if err != nil { + return nil, err + } + u.Host = c.URL.Host + u.Scheme = c.URL.Scheme req, err := http.NewRequest(method, u.String(), strings.NewReader(body)) if err != nil { return nil, err @@ -230,7 +225,6 @@ func tutumConnectorCall(method, path, body string) (*http.Response, error) { if err != nil { return nil, err } - log.Printf("[tutum] << Response: %d", resp.StatusCode) if resp.StatusCode >= 400 { body, err := ioutil.ReadAll(resp.Body) if err != nil { diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 22c8bc02f3..513fdff52b 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -150,7 +150,7 @@ }, { "ImportPath": "github.com/tutumcloud/go-tutum", - "Rev": "d826286d2e5882428c8163ab44261987bea85a44" + "Rev": "c07f413c4e14bcc40f5bb9c6dbe40ec2289fa234" }, { "ImportPath": "github.com/rackspace/gophercloud", From 136371419530335d5362ed9fdabe72034f729b87 Mon Sep 17 00:00:00 2001 From: John Hopper Date: Wed, 18 Jun 2014 10:28:14 -0500 Subject: [PATCH 306/347] Cleanup and Enhance Debug Signed-off-by: John Hopper john.hopper@jpserver.net --- backends/backends.go | 3 +- backends/debug.go | 31 ------------- utils/debug.go | 108 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 32 deletions(-) delete mode 100644 backends/debug.go create mode 100644 utils/debug.go diff --git a/backends/backends.go b/backends/backends.go index bc0ab2aa65..f6b88b0fbe 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -2,6 +2,7 @@ package backends import ( "github.com/docker/libswarm/beam" + "github.com/docker/libswarm/utils" ) // New returns a new engine, with all backends @@ -13,7 +14,7 @@ import ( func New() *beam.Object { backends := beam.NewTree() backends.Bind("simulator", Simulator()) - backends.Bind("debug", Debug()) + backends.Bind("debug", utils.Debug()) backends.Bind("fakeclient", FakeClient()) backends.Bind("dockerclient", DockerClient()) backends.Bind("exec", Exec()) diff --git a/backends/debug.go b/backends/debug.go deleted file mode 100644 index fa8020676f..0000000000 --- a/backends/debug.go +++ /dev/null @@ -1,31 +0,0 @@ -package backends - -import ( - "fmt" - "strings" - - "github.com/docker/libswarm/beam" -) - -func Debug() beam.Sender { - backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { - instance := beam.Task(func(in beam.Receiver, out beam.Sender) { - for { - msg, err := in.Receive(beam.Ret) - if err != nil { - fmt.Printf("debug receive: %v", err) - return - } - fmt.Printf("[DEBUG] %s %s\n", msg.Verb, strings.Join(msg.Args, " ")) - if _, err := out.Send(msg); err != nil { - fmt.Printf("debug send: %v", err) - return - } - } - }) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) - return err - })) - return backend -} diff --git a/utils/debug.go b/utils/debug.go new file mode 100644 index 0000000000..462c09ab6d --- /dev/null +++ b/utils/debug.go @@ -0,0 +1,108 @@ +package utils + +import ( + "fmt" + "log" + + "github.com/docker/libswarm/beam" +) + +// The Debug service is an example of intercepting messages between a receiver and a sender. +// The service also exposes messages passing through it for debug purposes. +func Debug() beam.Sender { + dbgInstance := &debug{ + service: beam.NewServer(), + } + + sender := beam.NewServer() + sender.OnSpawn(beam.Handler(dbgInstance.spawn)) + return sender +} + +// Function for forwarding a messgae including some minor error formatting +func forward(out beam.Sender, msg *beam.Message) (err error) { + if _, err := out.Send(msg); err != nil { + return fmt.Errorf("[debug] Failed to forward msg. Reason: %v\n", err) + } + return +} + +// Debug service type +type debug struct { + service *beam.Server + in beam.Receiver + out beam.Sender +} + +// Spawn will return a new instance as the Ret channel of the message sent back +func (dbg *debug) spawn(msg *beam.Message) (err error) { + // By sending back a task, beam will run the function with the in and out arguments + // set to the services present before and after this one in the pipeline. + instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + // Setup our channels + dbg.in = in + dbg.out = out + + // Set up the debug interceptor + dbg.service.Catchall(beam.Handler(dbg.catchall)) + + // Copy everything from the receiver to our service. By copying like this in the task + // we can use the catchall handler instead of handling the message here. + beam.Copy(dbg.service, in) + }) + + // Inform the system of our new instance + msg.Ret.Send(&beam.Message{ + Verb: beam.Ack, + Ret: instance, + }) + + return +} + +// Catches all messages sent to the service +func (dbg *debug) catchall(msg *beam.Message) (err error) { + log.Printf("[debug] ---> Upstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) + + // If there's no output after us then we'll just reply with an error + // informing the receiver that the verb is not implemented. + if dbg.out == nil { + return fmt.Errorf("[debug] Verb: %s is not implemented.", msg.Verb) + } + + // The forwarded message has the return channel set to a new replyHandler. The replyHandler is a small + // callback that allows for interception of downstream messages. + forwardedMessage := &beam.Message{ + Verb: msg.Verb, + Args: msg.Args, + Att: msg.Att, + Ret: &replyHandler{ + out: msg.Ret, + }, + } + + // Send the forwarded message + if err := forward(dbg.out, forwardedMessage); err == nil { + // Hijack the return channel so we can avoid any interference with things such as close + msg.Ret = beam.NopSender{} + } + + return +} + +// We use a replyHandler to provide context for relaying the return channel +// of the origin message. +type replyHandler struct { + out beam.Sender +} + +// Send a message using the out channel +func (rh *replyHandler) Send(msg *beam.Message) (receiver beam.Receiver, err error) { + log.Printf("[debug] <--- Downstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) + return nil, forward(rh.out, msg) +} + +func (rh *replyHandler) Close() (err error) { + // Since we don't allow the downstream handler to close the return channel, we do so here. + return rh.out.Close() +} From fea75e7e4c539bf24230a8a832998744148d1836 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 18 Jun 2014 20:28:07 -0700 Subject: [PATCH 307/347] Move debug.go to a `debug` sub-package Signed-off-by: Solomon Hykes --- backends/backends.go | 4 ++-- {utils => debug}/debug.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename {utils => debug}/debug.go (99%) diff --git a/backends/backends.go b/backends/backends.go index f6b88b0fbe..4257010a2e 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -2,7 +2,7 @@ package backends import ( "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/utils" + "github.com/docker/libswarm/debug" ) // New returns a new engine, with all backends @@ -14,7 +14,7 @@ import ( func New() *beam.Object { backends := beam.NewTree() backends.Bind("simulator", Simulator()) - backends.Bind("debug", utils.Debug()) + backends.Bind("debug", debug.Debug()) backends.Bind("fakeclient", FakeClient()) backends.Bind("dockerclient", DockerClient()) backends.Bind("exec", Exec()) diff --git a/utils/debug.go b/debug/debug.go similarity index 99% rename from utils/debug.go rename to debug/debug.go index 462c09ab6d..c287fc4bd8 100644 --- a/utils/debug.go +++ b/debug/debug.go @@ -1,4 +1,4 @@ -package utils +package debug import ( "fmt" From 1e15a54d0e5591dcba7af15ec52749f7c575e585 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 13 Jun 2014 17:20:03 +0100 Subject: [PATCH 308/347] Port to libchan, pt. 1 This is a minimal effort to get things running. Only the `beam` package has changed - backend code is untouched. - The `beam` package is still around, but functions as a libswarm-specific wrapper around libchan messages. It'll either be renamed or moved to the top-level namespace. - We have our own Message type which serializes/deserializes to libchan messages, and our own versions of Sender and Receiver which speak libswarm. WrapSender and WrapReceiver promote libchan objects to their libswarm equivalents. - We also have our own wrappers around libchan utilities: RetPipe, Handler, Pipe, Copy. Signed-off-by: Aanand Prasad --- beam/AUTHORS | 1 - beam/MAINTAINERS | 1 - beam/README.md | 4 - beam/beam.go | 66 --- beam/beam_test.go | 20 - beam/copy.go | 38 -- beam/data/data.go | 119 ----- beam/data/data_test.go | 129 ----- beam/data/message.go | 93 ---- beam/data/message_test.go | 53 -- beam/data/netstring.txt | 92 ---- beam/examples/beamsh/beamsh | Bin 6054492 -> 0 bytes beam/examples/beamsh/beamsh.go | 542 --------------------- beam/examples/beamsh/builtins.go | 441 ----------------- beam/examples/beamsh/scripts/bug0.ds | 3 - beam/examples/beamsh/scripts/bug1.ds | 5 - beam/examples/beamsh/scripts/bug2.ds | 7 - beam/examples/beamsh/scripts/bug3.ds | 10 - beam/examples/beamsh/scripts/bug4.ds | 9 - beam/examples/beamsh/scripts/bug5.ds | 6 - beam/examples/beamsh/scripts/bug6.ds | 7 - beam/examples/beamsh/scripts/bug7.ds | 6 - beam/examples/beamsh/scripts/demo1.ds | 9 - beam/examples/beamsh/scripts/helloworld.ds | 8 - beam/examples/beamsh/scripts/logdemo.ds | 9 - beam/examples/beamsh/scripts/miniserver.ds | 9 - beam/handler.go | 31 -- beam/http2/README.md | 8 - beam/http2/listener.go | 86 ---- beam/http2/listener_test.go | 83 ---- beam/http2/server.go | 66 --- beam/http2/spdy.go | 109 ----- beam/http2/stream.go | 166 ------- beam/http2/stream_test.go | 159 ------ beam/inmem.go | 206 -------- beam/inmem_test.go | 145 ------ beam/message.go | 169 +++++++ beam/nop.go | 21 - beam/server.go | 6 + beam/unix/beam.go | 166 ------- beam/unix/beam_test.go | 39 -- beam/unix/conn.go | 144 ------ beam/unix/conn_test.go | 74 --- beam/unix/unix.go | 317 ------------ beam/unix/unix_test.go | 237 --------- beam/utils/buf.go | 17 - beam/utils/queue.go | 41 -- beam/utils/queue_test.go | 43 -- beam/utils/stack.go | 112 ----- beam/utils/stack_test.go | 127 ----- beam/verbs.go | 36 ++ beam/ws/ws.go | 72 --- beam/ws/ws_test.go | 73 --- 53 files changed, 211 insertions(+), 4229 deletions(-) delete mode 100644 beam/AUTHORS delete mode 100644 beam/MAINTAINERS delete mode 100644 beam/README.md delete mode 100644 beam/beam.go delete mode 100644 beam/beam_test.go delete mode 100644 beam/copy.go delete mode 100644 beam/data/data.go delete mode 100644 beam/data/data_test.go delete mode 100644 beam/data/message.go delete mode 100644 beam/data/message_test.go delete mode 100644 beam/data/netstring.txt delete mode 100755 beam/examples/beamsh/beamsh delete mode 100644 beam/examples/beamsh/beamsh.go delete mode 100644 beam/examples/beamsh/builtins.go delete mode 100755 beam/examples/beamsh/scripts/bug0.ds delete mode 100755 beam/examples/beamsh/scripts/bug1.ds delete mode 100755 beam/examples/beamsh/scripts/bug2.ds delete mode 100755 beam/examples/beamsh/scripts/bug3.ds delete mode 100755 beam/examples/beamsh/scripts/bug4.ds delete mode 100755 beam/examples/beamsh/scripts/bug5.ds delete mode 100755 beam/examples/beamsh/scripts/bug6.ds delete mode 100755 beam/examples/beamsh/scripts/bug7.ds delete mode 100755 beam/examples/beamsh/scripts/demo1.ds delete mode 100755 beam/examples/beamsh/scripts/helloworld.ds delete mode 100755 beam/examples/beamsh/scripts/logdemo.ds delete mode 100755 beam/examples/beamsh/scripts/miniserver.ds delete mode 100644 beam/handler.go delete mode 100644 beam/http2/README.md delete mode 100644 beam/http2/listener.go delete mode 100644 beam/http2/listener_test.go delete mode 100644 beam/http2/server.go delete mode 100644 beam/http2/spdy.go delete mode 100644 beam/http2/stream.go delete mode 100644 beam/http2/stream_test.go delete mode 100644 beam/inmem.go delete mode 100644 beam/inmem_test.go create mode 100644 beam/message.go delete mode 100644 beam/nop.go delete mode 100644 beam/unix/beam.go delete mode 100644 beam/unix/beam_test.go delete mode 100644 beam/unix/conn.go delete mode 100644 beam/unix/conn_test.go delete mode 100644 beam/unix/unix.go delete mode 100644 beam/unix/unix_test.go delete mode 100644 beam/utils/buf.go delete mode 100644 beam/utils/queue.go delete mode 100644 beam/utils/queue_test.go delete mode 100644 beam/utils/stack.go delete mode 100644 beam/utils/stack_test.go delete mode 100644 beam/ws/ws.go delete mode 100644 beam/ws/ws_test.go diff --git a/beam/AUTHORS b/beam/AUTHORS deleted file mode 100644 index db33365bcd..0000000000 --- a/beam/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Solomon Hykes diff --git a/beam/MAINTAINERS b/beam/MAINTAINERS deleted file mode 100644 index aee10c8421..0000000000 --- a/beam/MAINTAINERS +++ /dev/null @@ -1 +0,0 @@ -Solomon Hykes (@shykes) diff --git a/beam/README.md b/beam/README.md deleted file mode 100644 index 5277c7f361..0000000000 --- a/beam/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Beam - -**WARNING:** This has been renamed [libchan](https://github.com/docker/libchan). The code in this directory is an old version of libchan which will be removed once libswarm has been ported over to libchan. - diff --git a/beam/beam.go b/beam/beam.go deleted file mode 100644 index b89ba8317e..0000000000 --- a/beam/beam.go +++ /dev/null @@ -1,66 +0,0 @@ -package beam - -import ( - "errors" - "os" -) - -type Sender interface { - Send(msg *Message) (Receiver, error) - Close() error -} - -type Receiver interface { - Receive(mode int) (*Message, error) -} - -type Message struct { - Verb Verb - Args []string - Att *os.File - Ret Sender -} - -const ( - Ret int = 1 << iota - // FIXME: use an `Att` flag to auto-close attachments by default -) - -type ReceiverFrom interface { - ReceiveFrom(Receiver) (int, error) -} - -type SenderTo interface { - SendTo(Sender) (int, error) -} - -var ( - ErrIncompatibleSender = errors.New("incompatible sender") - ErrIncompatibleReceiver = errors.New("incompatible receiver") -) - -// RetPipe is a special value for `Message.Ret`. -// When a Message is sent with `Ret=SendPipe`, the transport must -// substitute it with the writing end of a new pipe, and return the -// other end as a return value. -type retPipe struct { - NopSender -} - -var RetPipe = retPipe{} - -func (r retPipe) Equals(val Sender) bool { - if rval, ok := val.(retPipe); ok { - return rval == r - } - return false -} - -func Repeater(payload *Message) Sender { - return Handler(func(msg *Message) error { - msg.Ret.Send(payload) - return nil - }) -} - -var NotImplemented = Repeater(&Message{Verb: Error, Args: []string{"not implemented"}}) diff --git a/beam/beam_test.go b/beam/beam_test.go deleted file mode 100644 index 6d504f2ce7..0000000000 --- a/beam/beam_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package beam - -import ( - "testing" -) - -func TestModes(t *testing.T) { - if Ret == 0 { - t.Fatalf("0") - } -} - -func TestRetPipe(t *testing.T) { - var ( - shouldBeEqual = RetPipe - ) - if RetPipe != shouldBeEqual { - t.Fatalf("%#v should equal %#v", RetPipe, shouldBeEqual) - } -} diff --git a/beam/copy.go b/beam/copy.go deleted file mode 100644 index d62c03b8b4..0000000000 --- a/beam/copy.go +++ /dev/null @@ -1,38 +0,0 @@ -package beam - -import ( - "io" - "sync" -) - -func Copy(dst Sender, src Receiver) (int, error) { - var tasks sync.WaitGroup - defer tasks.Wait() - if senderTo, ok := src.(SenderTo); ok { - if n, err := senderTo.SendTo(dst); err != ErrIncompatibleSender { - return n, err - } - } - if receiverFrom, ok := dst.(ReceiverFrom); ok { - if n, err := receiverFrom.ReceiveFrom(src); err != ErrIncompatibleReceiver { - return n, err - } - } - var ( - n int - ) - for { - msg, err := src.Receive(Ret) - if err == io.EOF { - return n, nil - } - if err != nil { - return n, err - } - if _, err := dst.Send(msg); err != nil { - return n, err - } - n++ - } - return n, nil -} diff --git a/beam/data/data.go b/beam/data/data.go deleted file mode 100644 index 5ece063f51..0000000000 --- a/beam/data/data.go +++ /dev/null @@ -1,119 +0,0 @@ -package data - -import ( - "fmt" - "strconv" - "strings" -) - -func Encode(obj map[string][]string) string { - var msg string - msg += encodeHeader(0) - for k, values := range obj { - msg += encodeNamedList(k, values) - } - return msg -} - -func encodeHeader(msgtype int) string { - return fmt.Sprintf("%03.3d;", msgtype) -} - -func encodeString(s string) string { - return fmt.Sprintf("%d:%s,", len(s), s) -} - -var EncodeString = encodeString -var DecodeString = decodeString - -var EncodeList = encodeList - -func encodeList(l []string) string { - values := make([]string, 0, len(l)) - for _, s := range l { - values = append(values, encodeString(s)) - } - return encodeString(strings.Join(values, "")) -} - -func encodeNamedList(name string, l []string) string { - return encodeString(name) + encodeList(l) -} - -func Decode(msg string) (map[string][]string, error) { - msgtype, skip, err := decodeHeader(msg) - if err != nil { - return nil, err - } - if msgtype != 0 { - // FIXME: use special error type so the caller can easily ignore - return nil, fmt.Errorf("unknown message type: %d", msgtype) - } - msg = msg[skip:] - obj := make(map[string][]string) - for len(msg) > 0 { - k, skip, err := decodeString(msg) - if err != nil { - return nil, err - } - msg = msg[skip:] - values, skip, err := decodeList(msg) - if err != nil { - return nil, err - } - msg = msg[skip:] - obj[k] = values - } - return obj, nil -} - -var DecodeList = decodeList - -func decodeList(msg string) ([]string, int, error) { - blob, skip, err := decodeString(msg) - if err != nil { - return nil, 0, err - } - var l []string - for len(blob) > 0 { - v, skipv, err := decodeString(blob) - if err != nil { - return nil, 0, err - } - l = append(l, v) - blob = blob[skipv:] - } - return l, skip, nil -} - -func decodeString(msg string) (string, int, error) { - parts := strings.SplitN(msg, ":", 2) - if len(parts) != 2 { - return "", 0, fmt.Errorf("invalid format: no column") - } - var length int - if l, err := strconv.ParseUint(parts[0], 10, 64); err != nil { - return "", 0, err - } else { - length = int(l) - } - if len(parts[1]) < length+1 { - return "", 0, fmt.Errorf("message '%s' is %d bytes, expected at least %d", parts[1], len(parts[1]), length+1) - } - payload := parts[1][:length+1] - if payload[length] != ',' { - return "", 0, fmt.Errorf("message is not comma-terminated") - } - return payload[:length], len(parts[0]) + 1 + length + 1, nil -} - -func decodeHeader(msg string) (int, int, error) { - if len(msg) < 4 { - return 0, 0, fmt.Errorf("message too small") - } - msgtype, err := strconv.ParseInt(msg[:3], 10, 32) - if err != nil { - return 0, 0, err - } - return int(msgtype), 4, nil -} diff --git a/beam/data/data_test.go b/beam/data/data_test.go deleted file mode 100644 index 9059922b3b..0000000000 --- a/beam/data/data_test.go +++ /dev/null @@ -1,129 +0,0 @@ -package data - -import ( - "strings" - "testing" -) - -func TestEncodeHelloWorld(t *testing.T) { - input := "hello world!" - output := encodeString(input) - expectedOutput := "12:hello world!," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeEmptyString(t *testing.T) { - input := "" - output := encodeString(input) - expectedOutput := "0:," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeEmptyList(t *testing.T) { - input := []string{} - output := encodeList(input) - expectedOutput := "0:," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeEmptyMap(t *testing.T) { - input := make(map[string][]string) - output := Encode(input) - expectedOutput := "000;" - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncode1Key1Value(t *testing.T) { - input := make(map[string][]string) - input["hello"] = []string{"world"} - output := Encode(input) - expectedOutput := "000;5:hello,8:5:world,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncode1Key2Value(t *testing.T) { - input := make(map[string][]string) - input["hello"] = []string{"beautiful", "world"} - output := Encode(input) - expectedOutput := "000;5:hello,20:9:beautiful,5:world,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeEmptyValue(t *testing.T) { - input := make(map[string][]string) - input["foo"] = []string{} - output := Encode(input) - expectedOutput := "000;3:foo,0:," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeBinaryKey(t *testing.T) { - input := make(map[string][]string) - input["foo\x00bar\x7f"] = []string{} - output := Encode(input) - expectedOutput := "000;8:foo\x00bar\x7f,0:," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestEncodeBinaryValue(t *testing.T) { - input := make(map[string][]string) - input["foo\x00bar\x7f"] = []string{"\x01\x02\x03\x04"} - output := Encode(input) - expectedOutput := "000;8:foo\x00bar\x7f,7:4:\x01\x02\x03\x04,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} - -func TestDecodeString(t *testing.T) { - validEncodedStrings := []struct { - input string - output string - skip int - }{ - {"3:foo,", "foo", 6}, - {"5:hello,", "hello", 8}, - {"5:hello,5:world,", "hello", 8}, - } - for _, sample := range validEncodedStrings { - output, skip, err := decodeString(sample.input) - if err != nil { - t.Fatalf("error decoding '%v': %v", sample.input, err) - } - if skip != sample.skip { - t.Fatalf("invalid skip: %v!=%v", skip, sample.skip) - } - if output != sample.output { - t.Fatalf("invalid output: %v!=%v", output, sample.output) - } - } -} - -func TestDecode1Key1Value(t *testing.T) { - input := "000;3:foo,6:3:bar,," - output, err := Decode(input) - if err != nil { - t.Fatal(err) - } - if v, exists := output["foo"]; !exists { - t.Fatalf("wrong output: %v\n", output) - } else if len(v) != 1 || strings.Join(v, "") != "bar" { - t.Fatalf("wrong output: %v\n", output) - } -} diff --git a/beam/data/message.go b/beam/data/message.go deleted file mode 100644 index 193fb7b241..0000000000 --- a/beam/data/message.go +++ /dev/null @@ -1,93 +0,0 @@ -package data - -import ( - "fmt" - "strings" -) - -type Message string - -func Empty() Message { - return Message(Encode(nil)) -} - -func Parse(args []string) Message { - data := make(map[string][]string) - for _, word := range args { - if strings.Contains(word, "=") { - kv := strings.SplitN(word, "=", 2) - key := kv[0] - var val string - if len(kv) == 2 { - val = kv[1] - } - data[key] = []string{val} - } - } - return Message(Encode(data)) -} - -func (m Message) Add(k, v string) Message { - data, err := Decode(string(m)) - if err != nil { - return m - } - if values, exists := data[k]; exists { - data[k] = append(values, v) - } else { - data[k] = []string{v} - } - return Message(Encode(data)) -} - -func (m Message) Set(k string, v ...string) Message { - data, err := Decode(string(m)) - if err != nil { - panic(err) - return m - } - data[k] = v - return Message(Encode(data)) -} - -func (m Message) Del(k string) Message { - data, err := Decode(string(m)) - if err != nil { - panic(err) - return m - } - delete(data, k) - return Message(Encode(data)) -} - -func (m Message) Get(k string) []string { - data, err := Decode(string(m)) - if err != nil { - return nil - } - v, exists := data[k] - if !exists { - return nil - } - return v -} - -func (m Message) Pretty() string { - data, err := Decode(string(m)) - if err != nil { - return "" - } - entries := make([]string, 0, len(data)) - for k, values := range data { - entries = append(entries, fmt.Sprintf("%s=%s", k, strings.Join(values, ","))) - } - return strings.Join(entries, " ") -} - -func (m Message) String() string { - return string(m) -} - -func (m Message) Bytes() []byte { - return []byte(m) -} diff --git a/beam/data/message_test.go b/beam/data/message_test.go deleted file mode 100644 index 7685769069..0000000000 --- a/beam/data/message_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package data - -import ( - "testing" -) - -func TestEmptyMessage(t *testing.T) { - m := Empty() - if m.String() != Encode(nil) { - t.Fatalf("%v != %v", m.String(), Encode(nil)) - } -} - -func TestSetMessage(t *testing.T) { - m := Empty().Set("foo", "bar") - output := m.String() - expectedOutput := "000;3:foo,6:3:bar,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } - decodedOutput, err := Decode(output) - if err != nil { - t.Fatal(err) - } - if len(decodedOutput) != 1 { - t.Fatalf("wrong output data: %#v\n", decodedOutput) - } -} - -func TestSetMessageTwice(t *testing.T) { - m := Empty().Set("foo", "bar").Set("ga", "bu") - output := m.String() - expectedOutput := "000;3:foo,6:3:bar,,2:ga,5:2:bu,," - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } - decodedOutput, err := Decode(output) - if err != nil { - t.Fatal(err) - } - if len(decodedOutput) != 2 { - t.Fatalf("wrong output data: %#v\n", decodedOutput) - } -} - -func TestSetDelMessage(t *testing.T) { - m := Empty().Set("foo", "bar").Del("foo") - output := m.String() - expectedOutput := Encode(nil) - if output != expectedOutput { - t.Fatalf("'%v' != '%v'", output, expectedOutput) - } -} diff --git a/beam/data/netstring.txt b/beam/data/netstring.txt deleted file mode 100644 index 17560929b6..0000000000 --- a/beam/data/netstring.txt +++ /dev/null @@ -1,92 +0,0 @@ -## -## Netstrings spec copied as-is from http://cr.yp.to/proto/netstrings.txt -## - -Netstrings -D. J. Bernstein, djb@pobox.com -19970201 - - -1. Introduction - - A netstring is a self-delimiting encoding of a string. Netstrings are - very easy to generate and to parse. Any string may be encoded as a - netstring; there are no restrictions on length or on allowed bytes. - Another virtue of a netstring is that it declares the string size up - front. Thus an application can check in advance whether it has enough - space to store the entire string. - - Netstrings may be used as a basic building block for reliable network - protocols. Most high-level protocols, in effect, transmit a sequence - of strings; those strings may be encoded as netstrings and then - concatenated into a sequence of characters, which in turn may be - transmitted over a reliable stream protocol such as TCP. - - Note that netstrings can be used recursively. The result of encoding - a sequence of strings is a single string. A series of those encoded - strings may in turn be encoded into a single string. And so on. - - In this document, a string of 8-bit bytes may be written in two - different forms: as a series of hexadecimal numbers between angle - brackets, or as a sequence of ASCII characters between double quotes. - For example, <68 65 6c 6c 6f 20 77 6f 72 6c 64 21> is a string of - length 12; it is the same as the string "hello world!". - - Although this document restricts attention to strings of 8-bit bytes, - netstrings could be used with any 6-bit-or-larger character set. - - -2. Definition - - Any string of 8-bit bytes may be encoded as [len]":"[string]",". - Here [string] is the string and [len] is a nonempty sequence of ASCII - digits giving the length of [string] in decimal. The ASCII digits are - <30> for 0, <31> for 1, and so on up through <39> for 9. Extra zeros - at the front of [len] are prohibited: [len] begins with <30> exactly - when [string] is empty. - - For example, the string "hello world!" is encoded as <31 32 3a 68 - 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c>, i.e., "12:hello world!,". The - empty string is encoded as "0:,". - - [len]":"[string]"," is called a netstring. [string] is called the - interpretation of the netstring. - - -3. Sample code - - The following C code starts with a buffer buf of length len and - prints it as a netstring. - - if (printf("%lu:",len) < 0) barf(); - if (fwrite(buf,1,len,stdout) < len) barf(); - if (putchar(',') < 0) barf(); - - The following C code reads a netstring and decodes it into a - dynamically allocated buffer buf of length len. - - if (scanf("%9lu",&len) < 1) barf(); /* >999999999 bytes is bad */ - if (getchar() != ':') barf(); - buf = malloc(len + 1); /* malloc(0) is not portable */ - if (!buf) barf(); - if (fread(buf,1,len,stdin) < len) barf(); - if (getchar() != ',') barf(); - - Both of these code fragments assume that the local character set is - ASCII, and that the relevant stdio streams are in binary mode. - - -4. Security considerations - - The famous Finger security hole may be blamed on Finger's use of the - CRLF encoding. In that encoding, each string is simply terminated by - CRLF. This encoding has several problems. Most importantly, it does - not declare the string size in advance. This means that a correct - CRLF parser must be prepared to ask for more and more memory as it is - reading the string. In the case of Finger, a lazy implementor found - this to be too much trouble; instead he simply declared a fixed-size - buffer and used C's gets() function. The rest is history. - - In contrast, as the above sample code shows, it is very easy to - handle netstrings without risking buffer overflow. Thus widespread - use of netstrings may improve network security. diff --git a/beam/examples/beamsh/beamsh b/beam/examples/beamsh/beamsh deleted file mode 100755 index 9bfe78ef4aead557147a211abaec817e8193dcdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6054492 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­%K&_J-R<1vsD z@t>1=79OytPFv_V7-P+hb$nf{upvv#zlvUjcilX_kG$VPB!4rz?7RS zTs_p%a)wI2JW8H&$#)q!eZLH;vV~TI=owY?gjoLqBWkfKe5rW0(!*)mNt8ShN@6dK zdcievJk9TH=H)lb6g->7M&0T5J+@GZqv`0c-{!n(fFbunW#V~(o+O7h1|Znw3(s_` zQdTeZ*1j%}WV+)Ryu~uv8@$4N#xmz=#A07=CHu<#vGH<0x5YUXt!cg9r9#r}pP_w( zIrl4X)%rLSr{D#dvLl5ORlgYSUi*@8r53Y)7Pj-PLH?a>pceL|!s-=fyma$mvsQXd zHyF#(9e*dcbp<%DQ~v!JaO|Jj;Ng=tmIlYvFp$U=im%-0+Pk=p7+?(2tmDNQCtW2G zHAXO2Ls}MAtbys%(Po>|*Igqt^WjE?ufK|Tan@vU#7%=>wq!z}AdT}CLdWr}^>?j^ zfLq~gfMCtiQN`*gKOy)?-NBV9|4z~u-xfsr|H)U0y=((4ZL&?F+~%k)vZ1(_G3U|N z=`l~fV}p)B#6+GJ+s+17u{q#}f2tvuNK$$y@sqdrJ&3r->z}@M+6a*^=HywOdG2eX z#$*>CcO<~HZER46rE>YyC-bXUz>4=TPO<<3!W# zk3`=U-{d|YnGhEcMA<_L^sfiSB&7BvZ|#6C1WLCbZzCyrF`_05#@1x4-Inskb77#y z*1DDYah#ecQvTPn2{XYfEM4g_VdaE6XxL%1!+_ReGuM1+ z%phfGMA(&HW1hxwsO?}i{&C1oqGTET>5c;lq&6;qz<)_RZuuWk{8!SFL60QQhhq9H z*VS*BB}!_x_TeQ%P(I)rYOO@f5EPdhL`ZH+O=*$@w5wFfBdW&ic zFmGdNv+69;KnY(C-4g<5^B3)PHu_P6l?IW9lec+45vNP2FKI?N@(6);G)aYadNkef zED{zs!egw#3<*fhaj7H}M4AU_o!<0y?L5qwx-*slCrom(s0AY zRg~LwXwxLn`h*gaw94qi4I4 zvHx%Xtc%FKQI)pgC)X)b-7HT$Ip!uAIs%1}ePrPBCzwJDgT4kc*nW#j_Slil=3b2BL zgIc7*-1ctYS!Z-t69U3?IiD?0FHW4X9-+JGo;udT(QaZ(kSYzKP1oAnXJdj&g`&{gWd+J1^qr`txy zcin5G%q7=e5_vO9lBYEGUjSfuN@r0@NS^3mVR5BHrP=$Sz0Ay zm8Z!=7gK3Az+@>Uk!u@H?x+`YKqMmGF^Bj7o_25PDEjINdroPFVXswOJsFjFDeFc& zdeEI$LOCw}MpnSNHH46Z<0Ulue|Z#JCVa2yk!3MXVeu*d`zNXR5LI4`At`_BQOu9u z7U4uE+%JUMYGj_k=ccDt9915he|lo4;!79F3R{bIA9#s_I0025R#=0T^}|c4B6Jt%0MO)vehSV*YWjyN@%5c6t*A(x4*6&vsdCW}F1J z%FNB#HmDa$g-zG`910psp^HrjwoV2`XO&3;>N&voTVdUgTI8w(J;3PC>wcag1--FX zx!#1p-jS^Z1lW~KnnUV-4y4oq^OR4q2szk=<%j&P^-l^8pI%V<6ud>Jug6Hy)?5f`OQpn9?CQ48J;2F;#)=NmWZyguK-` zFEzgI-%)sjH()D_+&hG1yosF>DOf#;L3~^Si78neIP1uST8uS=^(vsonw*CVV*~B? z7|JxYVoZ_{ttxW;SU|}qC(!(^ARj7+S-5bEDKi;u88vOCc7#$oeSVF;43}E}v0uMg zc2}$TAb1-3R#zQ&{@^=X4@T)<;I|% zuA*57YEc8ypN>Pngd(*MGDtK?l%+pmbR;}j@WqD`S42~)pP;(`ySgxKlEjY9t^?8_ z`I9}oY+9Aff-6Zw{s5~$7|lc}$MDZ;>RJ|0%bwq0`6kR|N@t?4O;3LpHZ|U>xU1RO zuh*b!$RB8sDdOlDq7VvxW&GRmUgKZJO9+*}fXS?gb8EX-{($Acd3wMGb|ggMRzAx( zM%=4tx4JrG%c2P@#$ojqM(*di94|oCcd)7aO|aBOPl0by z^a#fa*Y1c{lR3ed5;sZzb#X5jZu}BnDX*~hDeKUK{(gy2~8!G;zTJJ zpvVBJrcxwT)I>q2w8$=`8srsFBnp%OMM|4M)U>2bsvV~Rj&ihW)%rRI6+EbjK|xbO zn+gXgB2ZAUf{z{2LIJfcSaN^=Z>_y&&m<|;bMGB!_G>-9_xjeiUOuI{5)!~Vo!~+Z zGU^9hFh*`8eX)o``c_Ak-FD8X8^+XO%Sevgv1!1WAgwJk>*G3 zk}5J8Dx_|Q7@Rw}HvO5mqbfmuMs4`xhouDVBKrb?ZZXJc_)EDXse{CpLHAX1-<2;(rRn>~(JuVpATe(5^D@fCKi}gs*qc07J6+Q*y4*HtT z$(N4b7V6^LLEiHv=h9b2@0$utn2;5UKS0&BL-bC(Nsr_mi#%CDa|SQ1Ph=a|twK;z zh1uryoV0#+OGQ(Dc57605W#ef7FHDD{?*+M?lppEuv>`g$DC`?0>|jn^@P)${|qqH zX?9}!b|!L&#GMTPYom^IPcKr*MosCScDrG_^DUT*ps=`A`j!m_*YO^lcU3KBe4+B$ zrpEsC@_OFctJj{~Tlw1j(25{C^iySn|G3Mu%~g~4wOy69$`Ex&!KCH4sXX{?yOqhy z9Ni;IJtq)sGUR&ZUY*URjO$Nm*(-h9N{e%@IQeV=hp;Sa^;&AP`_w3vd*Sz zLatV*xS=VZio>*JG|cs9Bl2~eFHmpqP{vb)3D{MP-7`svQYWAZNT3kH!$ zF>#WW_J9D7f6!t_^Vz2hu#2cAFp4&O1 zK+cJ+qK1==?`?!6IoovM#7M+hlO(C9hoPnyPSF$%-$lN$6IheHcKDm4;M@8hgAZ{` z1WZ65A(vQw9Y;Y@$D<#z>IX-2D`}^Yc-wa8O`3$*^EJK*kxPWgA$_e8;qN(BWmvPe z0W@$PViRFwd4)^Cb%7N4!yYGRG=vytLlWgXPqBv4mnuxYYxsx7k{%AGujAY^3NRJ1 zJ{UnHCiJ$#QA(*A?$*Q5RniHw?b)&X=O^B6^dO^;-bC?}C~h)2x~UEye1@WOWdRh& zY`NPuIg^3lzPgL(IH0Z##zYoyq?i4%Tg0L}daCOLYO**{$~kOAL!Tw8B2m|cs!L@c z*R`pRpNcG!S8Kk&T0NcT(V^k5GT-4A3Xgte@_4AjPv-(PdwYXEF$-Yx-YlG~=_^EB zo6;<6u4vJ zU4kH;E>N;gC}mXP_P=;3$QX$h)E=v`hcQTW!jMR`76KicYOk^t4CWNco4+t6AGLQ`TSc_>+?bf%Kq&q^?fe^%EB>0DF+g*oKd>08`o74!g@){Yxy{zHq^3iDd&JTA6{Ys`LicA=Vvem`rr@pDI*1$y#+ z%M{oc+5RBwJrCbtjoMz!PS=L#Q5lQwpk*MC^Yo4)nV=U$qn=jtj#aNW-Zfzk`IvGD7ChvA2{Ja$_3BZA_URL5+p+_B>T z2jk0}a;~+6=JQlqqK*UmS|bP-u+LhYd0FMOdcs+jcjoVAZhg;!+F;31e&QDLz^Vo< zGuVV@$i^7%E__Web6{khl6F1pzDI}?# zgY>5+uXT6U;LU3hR0a>)a{i-p3zIi$32Jcu19S5;Hi$b@B~z_Td*waCKEvOK@R&U) z_?9ww+&A41KLt5jqjCw~EVp%OE>go3h_!${8L-XiLV=Vrn$?Q234g5(|IGEp_shuI zEdQR=h**=VG_i{Rpe#t|6bF=|zbCT{g29@TF&-x~!gO+mD;?;Qamh|@=E|6;J4b?R zR>g1){I%Jxg%2UWXx?p9XM3LNZS*U%?}xt4GMDpW<=@eC4E(0iP5_8eASubTq;gQw@<-vr8-_{v&Z3ROmt0N+2X~8~kx-vTMa1DfX@emhKWnPQ-dFwTH=jTuN_SClM!+R>Oni&557$~@GOC7B?DF`(~ zr$YC4Km&bST15|EpNb=YZd$x^ShU0r`YsprW{I7FtvLA^q z<|(YSRLW%qu3%&~{H#%n8U8z?5I2m(bYEDVrW??@53U*Po?D>#(R#bX5g z#BmQhfblEhZ~etxZ>3z?*EmlRX)P2@>^9*rF4pwWkJPqV+!_^nSe6@7weJVSS-sBy zZgVkt&re1J=F2bg19#c;<3hp3`EEj+8CgOvnRi2UxBS4Kwj zor09Cl!w)ti8I11w;}^G#ex zAX}U27M0<^*?$Lk47%CZ@+Og@llk`}f4Hf(9iz!f7ts2IRQsnyV6ra;%RFw>7GbHwJ z2eT#?uJFNZYvN1yDn0OXA0ueL!P$9c6R5;_H1HLVCVW2>@NQV0nU%h`e_0L`82*5X zFhhvrNM9;?wMws;2s8#ij@Rz((SGhM+Ml9$(*AuHMp@4#s~`ZwS&m+;l(xHyj?1`n z6w*5*PRAUUd<%++44e0D`?H5>`%S{*bd|!{@%Gl58{HOD{YbnK|NGWP)j#<@U;XfZ z_kAvU`RnNA(5D?vj&$yCnY=8SZul94a1Ff_Tx9TgTPyT35Lk45D?Ww*%^20CL-;WI zBRM$0ImJ$pDjl$Nn{qEL>X;NA2s}&=^`)yi@KVHz^?;|aA^>vXPMz ztVaxZ=Bjkh-*}Vw^k+S){{;w3r`TQLbJACh9QQb5;J?1@_LlcbaoX2sbcB;puCci7;||c8-epT(?#0D$1X{&=vH#6?&Whywz&tb;Ot- z6*r_%(e2fH2*ojRwr1-9eMM*unG>8pr^U|iWyBmM8yRAxM&_ej9(GLwp4^s<BwTPlk1MgsJjU*f)u|O6p1Fwp{ ztTpv$AC5VOh5>5}-_?TN@rxOlc`Bv6WP10(Qjr zBPCQ|bsuR=_{xW{M~F!^TjUF6d~GB*w6|lG}(_DR#Qc?9I(bdiqJ4G#MkeHUs_Zuj<&_J+*34 zkwSDFW(uTAEi92GBuHPd1$|S$;v1rC8`YkuC{RK%Hx#SOSM^nYxdK9{Bj61eCbRDt z%L{eF!x_93D~fV{81vMvJ|l(wk@K$_C_Dl-GaA@p(9OZf@~*)OfgcCscpu~ALtR#W z5n%JDZa%{3Q!jkz%rFLMmcF)B-jHetQiS`W?|S_tLv5koYzyJ~5{rE#VhL{b1I~@5 zaA)Mw*ZxItdJ~@R*`%kz6L1`%&fp1I9wA~R@bBmxS+e^LR5+FgP8V?LmxaYBvd_SIqL z_2HDN;Xgaa;gss(bxKe!568dJ@lWuQLH*%l?ZERZkB(o7I{CG36azCdIb1;|wd(hn zj2J0x1XNSMi&QZCv{j9)Z3&?bs8zmvcEPW3NV7FZ?)_qE09ApD#E+kD8gzq#wx-%y z0ejpu1u9s4{G2|+7C@%`UA4w>6>{}scasaq=LtV>b9IcEaR5^RFvB?mE`w}}@C>I~ zhN$E>+QEE+6VO#5mC^rPd3e?&`I4b2p*T9x zr->E`LH31|eO6gHG)X}U6#-P@SuQH0ra8+@lXjTn7<05q(?ascJvG8nz!q=oK`7YLe zQ;@3$D}1&IjT&kNN~fVsPBC8_PM1xSMhAHXNKdFTh$qZ7dI^}h8QTNFC{{+Vtp}IU z+f>A=e@fMlB6wN;n_YfuEF7gSb$p5j3d+(iap^Nyp*l8EujQCdR10@-iJMKH8OXhy zS@JiI6n)&b)I3aEYEEQ4hDA+NNt}O-t#ZvWKlIe$8>JQ-?3IE2(B}O5F>=o6tx?YK z@NG&T@2-#;ppKUhV{76H>Y@%A`TtZ>NrDF1^F#YQPgs1a8IjpQ&hWrggPd}{czebt z4R1W=m67~_=6-xzp56Oq{wDs$z}Xc3Rndw}4pS5%JG2f1F@?a4;?jN9Rth5awr{YW z;5=UaTz;p{s?o2Ee#g^1p&#rX0i70~l7DRN5RDSVxr1Q;XyP1MLL8TPrcVq9Ojt)m z@e!zSJ4s8%-TUJQW{4_wrup<=+LkQbdL16hrh4KuM4KCd0Gi zP2nI*7mJ8KhAxG3E>6CB6R(6)MLMTrQVREikueRefqYX7Y`s(DjdUBHRAC!zO;7mW z*k1sfN}YG3KXrwB^A1UNYWluO%Mi1l%=DDebL$(7o>fw_NFF;5Szl?ASy6;}`PWRf ztLP56LyI`~m1CI?i{y^|k>SHWUP!S8m0vRLiPXS&sXs6eWmzDT!!T5|lZPF*i`Sr? zJ|v_%S9dGpuDMYIZe{Qv@8HLu)+{_MgWD0VVcZ?z>S-D{sY8R+#XWdjJe#HxiW1<( z+Wwu{#Bvp~GDWmn5*8?%SzkFJ#jx821eo)i*klx2Ux3g82oMV7lOc;;He^TdH!?9i+LebTu)%;s zlo{gB5mJ`9*=J^F7m~09u9&33CxPTvzBYd;;RMSA$gZaB{emw^7V-)}UXdH1!@v2a z*f8^(JG$P8k=K%1VT_0Sqy}d>N9!b1iC-E04xM8BrAg*=k6`9M*tFP9B4(!>ra&~O zd%rz5qSx8`(j7Kd2$riEHCUWL*~0GV=Y zK60V}P1-MggQ_pBojc+|pwqDSDe9X{h?Ks7NEyxd(MdxF-pY?*$L5mH>3J}&o@WP0 zRpGc5c+!`Mem21^Fscf_WuxE=j4Xb7Z}XCN2?R72PRuzD@`^S*W@u>=qK*bKL9^8+ zj$VFr+(;(Q9?Y7(m?)6P*5kxQxZR+tw4%XH6>jcY>6FTeOBu|vpC%$1nK7g8oXK?# zEGa|L(VgJ@kh0~SKK}xzr42!2xOk#t7AClHc=2r09-Ts;UBPT8ltK3^bRzxw_d_C)EtA*Y*O|Pc&)%Ok zm}F+q2#a#bC*=+`f>Gh2s?HgLfNDqe&yRQILBa^e_DOV~v(UxEm=Wal9rjiSgb8x9 zY;HiOKCT<8%c$*3+e>VK#>aZ7=Ded!xO^m2~?EMq=$D#}N0!87LTijg@X1nav!tW67R79-pIA+t~yLZD=M&tZ)|+N=E{dZ zp5IZ^98Zrdw$Z2l3M44k>>%7whs@Z@9R^MxJb+Nf17gXl!_S!8AcmFUcc`nsMcG?j zk@y770@mAvw#AJad8TXxf~_TS4X6yIE=>M{(e_haBD&rphZQ1+Q|z`ygQ8kz1XMG< z-%0~4eDij)u(r+_;kLzl>v*~5E|$%#tnF6SK+~yFbUk=3X=>-`ZptB6a5C$T1kZvP zm>(E0Tj{<_zX4GVwIEt6arzPk*{>Y`*NQ`|9|Qr+rt(lrGqw*)cURoQ4;q<1Lyrr4 z0WFSobt@2pQJQYH(2dYlhm+Y2MMc0-CT|%4$g^1Gi;%sLBCq`;Q|))_lYQ(?6{WNk zg>qT%-Zsb3R8{H#R+;a{#}}WdmL|6j^2*Xttj!gX<(~eaZX@VE@kvLXI#(oRI1oAC zVoMaQWIDL?@7Fg#_^pSN@M!So?h-Rkfcoq!AtB63zw(C;ARWjaX%HvQRF9bN?co^%6SZYyi$O z_%741e=^?D*Kclx?8!H&z1$p?=RexzuabsTOS8g#30smY>UfmZw_luI?FMLs_tM)` zY}e;0OTTrJ!Dr=TMJWFV4bXqw@^5zOX?x@>Uag>6Fc1#P>x#TV3z#u1%e0bK8~4Ld zQER0;)mGBbmwCp!R-fpl+lA3U+Nru*d7?oNpUB%aZ(!f56*8()#oMn8pI!Sne2P`< zt14pZ5&mOgZB+dO*ZN+cFN{lBc{jWAFu}5b%m*ebyN@(+Nw1WV`MLU2@0nt6u0Dva zlRjye-`*)FYXUR-V?I9e;7b-~o)OLZge|pFc8Fm_7j?1*6zKX|w4?(Iqs| zqI_Jf|H&1RVYiOvNfRhtp3P6r6+wJqzR>mE(h+$nag$ocpZzFS`c>rVAqDY!0TW2i zO%ZqM+UGq}jRsu@6w^Gql5j*n#o~Kt-%U>z&7W=zJ02Zz#PbLh|KnXniN=r!s#9Erw5%#fUF+A5S$Y zqsNlh7(Id_eEWWmXv~`=K!{RE(H_VAhlKU)>%D*(EbPTZxSLu}5DJ{Oeoq zEmw8;-wa3%ul6ERQ52E)i59VTT>&S;o0$C{Cy=OR1xHnQ18Nx_b{0WnmQTSjuK-#W zIY}>*1Niqjl~@Q zwSw3l0o)NUI!O+D;p%0(=q4c@`M#GRoN`NJ#sL)dHRfo1|` zJ4=_D7rk_5etT|kWSJ6m=l(GAAnhk}iPe3($9lHsbL8JJH8X{FF7u@~bjfVfBKlNJ z>OG(1j9hy64k7jL^7!P!T*SV-4M8;5*jfo8w85-&L`7 zWZj&`b-r?)AULP7-)%dqxzFlP>YsLwwTaONX|pYE@Snk>_-RR>U@1(!KT09UNXRBH zdA;OY<^A~v|21Eie{P5tdj#L`rihlhYKnCJMWB9jko(g%NrcH$&9C~O#qRa4u5C+6 z01pfD7io|@{Vf~pdV`--kp32HLN?83*Ze8de$Pcb-N9C~!Seogrl{}y<-#{iVE;h0 z?r!3@srL79*Uw!=`^=#CxM^!(VE7hv^FoIBtbIJvWR-iq1jp;CeQ%7SLE1Zcnt-~H zX5F==y_M5iPdGs@D*dX@s(*%stB9|HMTzK!e-FZxIHReiH1O(N2mppkd?E-*$h_S+u1{*V`BKOk7ycd{#Xyi{7m!6qb=d7 zyrp4y`-MTH`_i%3eG?ctZE!To&t?j*i4zOA^MVbPuuAhv7M|rhKspT2|vnt9p{0R-HfP*umMFbp|QR z>b>=PUoXaFrCO81S6?eg#~IvPJ|6`XIntB4z~dl(fbqGyD6f+7-d>u`Vgf}78%!Tv*YubIk9rmR~Z6AgYD#J%2}# zn^8NlL?IKPcz8{4l|KIz#P;ji3murbf;R(=uQ1yne-Ryxlj`~pkOO%&N}Etm%z4(C zbEamgKTHe%2YSbDCs(D749W$yb)^uf{gT=uo38CQ=Ku^W+yYtpx(}2|w-ywLl|BaZ z3>)+z$;o?>B!10#5~-0ZDRF+rl><4@C5`A5Iyw`OFXj6uh}A!bwz5Olb0{v;%Fg5I zEXeWC@VWzRkws*OaB_n@>3h}Q=9gwlDohkRKXcvtGv~SislMhW!4`p!d>Os@Lk8cB zh+8~4lU_<5H8#hYag56^O#lqu3N^M?T_uC~o{TP0Dzm>5dk|uE(9?UfrN;ys)_=Yj z`~VKU`28rMNrU9y;LGmt@BOpMM+-0QIguwllOQ{5Q#QuwP5x9LCDjbg@a0AqFQ4WJ zvLQktHAD|L@q017bg%hA`rSvYt(c#_e9E*n4Cit)b=oZ&*Ujy$UNrT^^yO9a(+$7B zOMlh|xgq>iRz2};@t=a_zivMw_@2yT$6J+eHQg$GTboQB^ISf)6;JyOsk zdkv7fsfz7sNZ*hm!@(0$!}o!&;RCz|8GxnsQf`QDkm*jKCErn4j8R#BVU_~3Jue_G z$=xJeKYNk%1@)rDIdsn@S>%!>U)Xcvg?lc(@Xzs!=s9{3Kl>NOXZIrUY%h|}dQtMs zi_<hVY7h>9Pc`Eqk$F*^9|#FZL~aF{$juK4mYe%3kbU_Tn{VFD90~s4ROiq3p$8 zWiKkqUTCBTHR+N*5v3eDE+T}#I#Z8+*J;XU54JyzFW2~2H%y{`;IeXHU{}v(75x;-v=M>Im@6HQb=QPf1>v+7WaM{8pTJkxKCobstU*G;TP2V_| z?J?6gZOk-PY;Kw!&b#;@se8Wio~DXzG`_^m^M7T0y06{gadE%C1sDIu?UIP}l0+DV zmttVp_9N&!=9G&syXKdhUmtA$qt4ZO@bO^nGq^!&4le$U<(~c^k+ib@R~bE+TMs1{ z?>i>%RbOd(^G} zad7<|(ggrqr2+bCeXh|Ro=iKzl}A-;{e?}wv)I>1_2M1M$LI9K`w%7lO8Gg5OjET$ zIx`0oRNJ?%oV|(keRIdcs8}9d{CA9%!qpr71^?=qzmaQkd-jBMYCF>hDzzPV)y$EZ z|Csrk6KDQrZhmv$xmFMaDdUcV-*Cb{kjrR2cd(!0E9Nm`HrU_hI95rxi_zqPru^L> zI`zz;_mj<`y6GQ1`yA-$w~@|Yk!5B9&o~26JY4t>Wal^GbSC=6O7g31860Ld44L_x zdHTQK)$)nbS|aQ`eItDrd22*oXw0bV99n?dS*P_K2C(Ugvp%d!`k1`ILtI}UbK;WE zlCM4%p+xWWO!1Q`xw`L7#rF{emj3YKd+41BmOUr@WKAYu79v%#EXF^s!A|^S4nT$+|8hsquC)Hp_o=q|I34IXiR-Ev!bH!acI*Z^92G?tfpWo)a z?;}>JFB4ty(HonOyySVbJI8*J1pivkdNbmwfmH&Uv>6(qRA@82@gl_|?fe7zsp;Do zY3!zDVj*Y?P1i$RHcO)gLNw51y;Qx#HXv`7)2VV(pLkO$oO2r$xiSPH2TjzgfgW7T zfKf`mw*Z)YXv!HB1h_hU{t9JLzlU&7O;ax_JQ(Dkr1{Z*Ht3q?kZ^8*vyI+ZHjp#K zRqMPlS{lFa6gM!;t5K7UnV)xZ+ui7`4hxDZ{&XCrLsX+6R=oJ|Z8bJ$`9=Xr@e5s&z)m@H(g6WA7F3IBsgT(SN(#tz%q zj3ZkoS~L~3NLOci2lZ6Ec<=DVO16#I7s#M!Cl(>D@Sb9Y3svDlM;$7p3x!Yy`QvKm z7FseRgm?YSFeo{P;r)n|Z8EbsLY$6uLO^Wm`ptA*@}e~-#@apP4u5P?riAdkRXnH5 zJ_9m5=b0WZ-1Q0|28Gpb>&J>y>Ma<0K>Wr+L<<AM&(5FTuZ32FVjeLbro zC|oZ8j6HYzkv{rK4X<|V`MgF z*c(t?=uxHWsna_B12AY6Xn{k@I0)s{il|Q((NJCl@^mp=9#%^S?HZp+_cuoOOqs~vV5f%J{MC0M_Mq1WdV@*y z$g(QVa)T8WVconoU@dy7jg(8P|+gq$dHhT7-%ejss}(19S5m=8kL#3O8Bd zP0Vu<)#kBR*Q}F!7feiH(J!OUOM}>Sj!h!SxJKnB$r2XmqN0>}1_rm$&Cx6xs~mCb zOwg?3-zSu(yX5-bC8$3ZOMI9<6cpU~TrtA=`-8>@uw`#Hn7oyhje~2lacKu@g31^h zYw%=l)p5~5feG7}Ft#m9*&@!shtbBimH`f_7&zbL2v7lxf^+0P6<7%Ht+4tWam&!l z)T5yJAq-sif_-!7;qclxuBwGiv zTUQW0rkMueQASdAgtOTo0~E{fyDxOLRux5)hO|IK);Qd8I-mq1)0%<0EI`E4oob z{b(?q!N(Vh4K*c1{){_YO#aj#zpyvSRj)j_8a%iTmPKR4I+zFrhi7hgv~IP5%CQLE zIJV4yMw@}o%|g3DemZ3)x_Lr`TCkpD$Voc)puVFG>D%DUTF^-$bZyIaDPPxlqcH!f zk_+?C>t;;Mvk8SZM^l)e6k!fkG^L@=Jh2 zXI_@@hX3O(o$m5Yy8vnOCk9l(<7SiFcNn)7O#~qNtG-%Ck3-5 z7EEKX%C9%fu$iEn?DQ4o5r1`){8jJNJpCuQzif+|O`QUEi>`>}CJ(&sHz)4<6Zabu z_Zy@8!kI|z2LR*!GQR0+o}x>lz0$6EOg9DQUOo^^$Dg-7YPDA&yEuz?twCPK*mx(; zDt+7P+CB)00q=+aPqtCBw42MXiCbk9CJMfl{S( zPmgkxs_dc#g5n~B;=#GoIh+1|@4-v{@Q~p8*e$Np;s~sj9;{m(Sb!()NY6Iw8i6z2 zfm132SyS;3yeJjF!*RF3pibd~a7dG4#G(c>EU@SpGc1P%w5QWqR1mYsJKnKR61SS8 z7`5)RNk+*}!3uX>t{z}k(IasQv)1?st@0;#82OlbgYwgUYBp`fed3G}<|8sCjs)U} zMKjB{*&!y z0&cPk?C`&$z7_iqo$NkGBS5FS+;GzRwjytHiihwvs~o*)u^R*ePENHQvL}Vd5LwZ9 zm-EHdVM2=nX%UUWN0?U3T}F4bH`X4Q>GK`jg?iVfqX?ECZ2Y#4lRQjzd=)Fe-r&)bbBS&Dw62;kCqMQ*lS`7o?|NK2F*bwXh&Mum|_Ct2ZB8!5I zE)c4YL6*;o3NcwGb$r56)1SD+g2kmX#1G@7qh^rXx)&5(Jhzx_zYb0dvfV^nZo^w0 ztxZAWV_;w7&=>=IhvtUAndq*y3jig5MfvURsa>eBO0mhfqN z(dG2Rv;wN)C(9<)+swY@@3f|=9fPCZaDULaZ3*Nje8*8z{I4s z4>O|rxaR#eZtMDOQ1Q|jajfa*NlQ&9BLiw`x!QM>Ofy&4t`R9n7FCYTGxJV=!mf>B zy7zyThURI7rM=bX@jWg@$4*!9Vyu>J5C#nz@M0+lC_!ZtUOl2gr~8_aEWm6uwVFs)4ZEpsHX(>0TCYR?68dfDk(_7?xUDBBB&{P zMt3N`h#kXvIotOXgGZ}tC8>H|Wz<;hcEaS@K%_=%AeY@OfgcDz|Ga5U!7keSYWeq+ z9W857TPtW@neaU$N2@=H5$nI&HEv?R2-0l?*%VA?%EZeROXirR-Z9mPwb{O* zcus7n&~{{yI;O%qTb=CJC5x;V!VLjTM735FoEmu+)=_w~ncM9&Y$iszf@ zJdU$(rSq3o>E5AzDFPg2vY4eQ@XFe5pc?AeQbZ^uizS~z)@o=1jp?ZQ_e&lprEjWR z$!f-`ExKurZd&XH3Cji&L^Y6s*`hlwBtjoVJcDuceI=83 zq;o8&RVv#R8ga1J8r)mKoq8$2kO+G$Fkp+7bb|233J5Hj?+P1TN%$}%NKh0lqO%~f z63=8O6(g=GY-ufT9HW-5uMpsDumCBu!>XSqmd&L7_eVMpRsCBWCfGh>T8)yJ_mplC zVFYyKLa}XHX_U2aDn(xmkxFB)I{%a+92LaQ=vQo?Z9M0`M~(k*uwBe6>4Pm=j5D+d z4`Zyp7quE`O^>lQB7BYBA)8KST50Tj=rJQR1l1YRQj(USf*GICaG~s7rwmay@WHX> zf$*zaq|p($a3{HbR2_*3d?H~y5Wmby}I z=d@IK_gAG-^8cuzN-~I!RQe$&b;$w0I$X+JWTlFRoU)7yj~;UZ=><|8BCjSmNv$m7 z$9@h!2xfZZC|U1R0L`oxjA6K^<4c>}_)_1)K)Gzo8qt_W*4pkIvFO7B^`UO^y*t-` z=~JR*cPp(z*v`|=$VIz_SNiE*sq`zRWFw|HY`WBv=~nUHV1~$|Gr0rZr1Xn4{cc`r?zZ<%9`Ux@W6$ z(Thx9>lP?j{`9q)O%GUgfX4x^56o@cK{N6ugP1NRH4_#vBcjmRx0G02-7i}%he*~7 z9n8T!bkhL<4BR)07ZxKQ75{PKU$_()Fi&OcbA2di({D^EJDV6^ zSw+zrF}R+qQ0UebfFyMKl}pkZd#kiIq@ghV+{Rz0uf0GG3__Y-evUOYgglt6kzW37 zmEl7A4QjE?V^j;#gcVVxO_Hr9C}og18B-_K4TE@qOvZX`8a;?b9mb$yWv$?mm#N$u zFETuAFkmm#4kF_*sLr{0MP}yaUzp4AYW`mDV(QD#OmkEm@J*y^oK#Vk-{Q12<*Pr*x8w*Z|iKxGKn zJ&QDvckc{=30m&%POLyVDm(tN8&q1onoB#zK?McZ^qBxU5JBYM~GbCS?3V z6s3lv(RiF2&d_kY25cA)(GY?LG^Fg19PtN9yAcrKQVzpSG0c+{|2GO-a_ZdkS;fw}!rotkSg%^- z-UVueW7UOK&6dJq{xlzmK(W_jU8^Dyg!3q=KH^Wik!qyJ!eB|Mo&y1D!c(r^8$;p! zbU={nDd8QPl;!-LcfZMNn@nc62u4W@l{eslr&6Q1R_~x+dil@nYq?^c_w>Jrg0SjT zlZ=6ZTH&*2N^VXEgakY&B1;Y{fXM~Nc0OgbVDuC-@|`_A913z>Z7Y*Wbqg6FDnV?B zL*bppnXZ}x<(A3x=ErQUkE5FX&E4HL2BSXd>bDkmlqGFe!6pew^HYjtm0{UL{ZJbP zR)5dz4gE?t)-97GX!O&)pwSOWZyRv8{%@JSF8N>MCs0UV;bW&|qlj*wK`%{hZSsXC zATG7u@n7g2_0lad;f|;Bgk2}PE&$5EKr*d?*0_T-N3gd#mx?=dTm~yo-@b6}7#$>R z?n2oD80FhRdE7zalNov^lubj?c$eaTe{^DWHf2FzBKnMi+~wzAG^ox7@5Z&OI@7hW z9Di@JDBX7oJ9Sqd%Z%oREYK_7M?ItAjx&TQAga;6$;c+FjqMq?n-rc5jbbnVfU(JL zsH!bQkP+{*!S`aD{DSrG047?<{=Z53J=9dFMp*s5*GsE`=mrOkm4qSfL=WGKKo4=M z7Lfq=E0c%g?=g8m$fmfipAn!iyOj-1+k(c89Vf^{iYXW~YxGO{eDL5~vb(3}-==Qe^{w0bm*m;>< z)X{r+hGn3D>!Wz#CvF$Td>DYLeHg&ktpbbX_4d@VRf9iINUZ@)Dcv+R{P; z)2vaKYb`WZSQy|#@shDrdE+0~VsUxnXX~cWf)tMOxHnLzoCv$-Wv+429cgo&t#E9A z^14Y2h30B4?P40*O&$O#7dX^OLT|BxytwxH2Ws>qOIVJqWF@djus>kv83{_W>ptX` zw5HlyBs3{Q?u1r$;cSbgm=M6cBJ0PO?a6`k-xm_gIQxPt$e+K2LKk3Y@|U!&@2PE} zB6Z0`RV*_Kgh*9|jT1!@-*t$Ht)i+mq+dNcqxy0;xgLg%s70YO2EpiFwMRKB;;KYh zHiu^-B>-SBvn{%gD%g)=FMS)l6RWdgbsK=1a^0K)pzb;t2>wR;lhq`-kml9m} z5DAhwmjBF23ptq1sWH0ms8$BKyKP)M3XM;lw!%N(sP6{k8ET_o5{$^Unhr*!hanI& z(#7blQ<|hse)|1lh)RgLQ6qA#Q62d<3XP)UZKHWo2mqSC)`Nf4+@wlt-{Yu)*#LaD zu*ZhkvHCAV$6CZ$j??)$41w&oK>055i+s zV>c*$a<)*43L1sgvDSyW$wA_=suR2NVD$z*hJBkP3UC+JJM+$@=0#V+`bAf``H8aI z$=S@3fwJk$t7}8i0eaZgiLGXMAOi`py~B=ajKsD~F#ih%gl{ou)Ff04g>+TIgX{%` z>sM^QEM9uqUE+%7V;$?_v^WU}#$?~P%lSvLmV8QFY4x*g(2}Xs+WbS-3D@!74%In3 zgm7`L+`FCqiAU7vKi7o&auliTjV8s>yeckk)*p(<*r=h;V`=16(&B68ly62g|M4LQ zNyb+Wy{AsA^AF9Xkl;bcBJKu~WwRV4^<|I*5hU2p5=bhVn+2El!)b}U<}!L7%7!k^ zzfcf0a*|A5!3$)(m3}o(>Cf4*VJoGQbBP>d{a^1N$v4VhS`y#tol|S^(@A}5)xsBl z1*F9ws<{UkGYOx5>LqM*w|2iVala{XzuDh&l6${y+s~8(LDNJ24gQ<%UoF4Vj9GUa zyIt)EX{AdR<8$+(0`(Cj?UTah3-(5VqS-w+xE3E)7H5hBN>_|QEX7oX=HK2JOp;Zw)(zo-{?aicbdtz7T$`1tu^bUObvd}QG?2)b?f zC*gZsjsGu;55#c4GJU=84%1ilK`WDFVAsnzBkmEd&ys7%-UOsjMic+E4) z!Rr~7$vLx?&WR;c>aw?%XZql%Os>tTbj=N!`X3vW>EKbBT=P(AEraLWUYJVj8>;E4 z(ne6SAw%!Ix7gEl@=^Nze!?G-(8Pyku4!P+R8OMM?uc$-lb4Nu)XTrZI3}vyy1T14hP*VTI z@N2GW`u0)8iJKs*npOx3fB8NNmvahTBTK%*VuVd{4M-mu6Y`anf3zzfLRsjD(vDI@ zoN_2kvq>QlWFziH8Cq&rmVZB&-yHsC0}J?CBKXKjiQl6{m_dOSV52{+qBF1o=uTG@ zIx%0SYxuPk#P�x};E%wt&o-$}$do!EWJm(h-Bj&A9YC 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

<`UIVfs`|(t-&`JNkJC+J!&_&LU5T!TV35 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 z zpL@vE=a3*fpONn%K2$w@>R{?>9sfV|wba$sYR08ZbHB_S@GxWk1Mbh@J2(6�+LB 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%0DQD(>1HgIN(JUG#v=|He*w`dxr@vu7~yq9 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 z%0A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

NSVAxxh^TEsw+ETd6rky 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Ύ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 z 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¥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 z_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD z93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF) z443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMm zIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r z#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66 z@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4 zOdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFb zWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy z#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar z@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5X zFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy z_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD z93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF) z443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMm zIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r z#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66 z@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4 zOdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFb 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 z 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 z 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�<=>jc4S>%GE*E8PYD_ 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 z�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%0D|G|MS6D7%;9RhB64;3^ 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 z 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 JBqP3Op*z81Zv$U%93}`)l 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%0ATM5``rVH(xp_Yhc>ZdN zBYbjh^VV9VzcX>neEQ@{+i}C^AEUxv?GtnyOTTg*BfV-Ydyno#Cpf# z%EKD(4jeeDpM{Hcy;`dO1D9&c zwT{$!irZKZ&K{GGws}p}ceidJ_syL@4|BZ@#|a)sz03J{hi#7^$ZgK|nVipyXrG;{ z>*;Os68Try?WpTxC-!^F^^W5BaDQoni$gSD&$@F*K`9ap7D?iHmWBEkv;j?m^oBMh1FLiv!(>}}8 z-<`S5{q{nhQH&uhE1 zlq+N9nm9a7cChnly+Zyv)Yg9_pMuLj$rsuB@8sdw-zrbA`M2`DxcI01U~aP?i`b9( zEA7>|C7mG z=GPUcd)BYokD)l&L%suNjpe!6bL3UFzK*=b*6%Ct)=Kk9sBet}@{4fsK-G`4`QMuV z!#Fxr`Fl2RD(}GI;qnp3YP?cAxf_m;k}t>Jk#dZq6Xch0rH%YGcF6Z`&HmyOaDYSW zx@tcrx4FNjJ#>EGmD?Pzh~qVv`bu-vzlw{;%j<9%Z^Id`ew^vgoL|pzejS|K9RHB@ zo|@Yn|5}`1!*iSYRG7~M>ZAG^Z#wpv&&xJ%p#1aPX8xm@{|;Nv@jv)@jbCW1`YyPL zM_`BJGu7t!MI1L%`;T&)`8sE6|9;MG*5k0Az1qkP@sYXB{i|&&zv_JMhFv@uH^Gx= zpN-S?@px{tf6+er{$?RgxSuSx?wMb-g~F>i9W1ZTZT6?g{(MaCouYgbcAu$H)&6hn zB=UYIXnYrYxQu(?;91oV$3DK@)}O4Ocb9Onqx=$%@LKG&RK5u(uKc&nm(;A9uhUlZ zOYo7n7%T6DOH<@tHosdQhQmAMd$50(ybx#j9qitrJi}$Y9T#s`zIQv#&%0MX5Eq!w zF*vmQK+u=V71PSkp0 zdN#L*^sJ&y6u*x9PQ`pN7kJ{T9iSAGJH@tN40srg=l zgCA9YJ$8PQr{jeBr?8J#+IsvkF8-kQKjDD9RtL>D#7%MOXVrJaDdYFXQAPQcIHvtQ zHpdHb39rUQ`~!CJE*&+W0HmMYw1@Hx zJM^~`yLjJDns0!Q#UAd3Lwp7H@jW#X?{4^+NC zF5y<#ag}$+8TlnR;(j*T=IvEK1(!~e7vwf?nC*mKAYPdzh)f2 z|B(mW&p)w#QuROLpAjH>^vgZIi2}FuKhX$r_+_UwZ2*oaB_=02$%6#9NnsXDlX!A zI2^6~bz6@=$L<*A+p&lD?#l7MR(W&m;m$Z1tNcP7;*r?7Uil>K;sCJ``6bsC|1}xIqqZf`{NTo`9pG>Sy30ej1lc`Pn;l5fXFJj?nB$h>zQRmxw z>-*Jy3$FB%f3ximQhlvJ^Di>~{@CODleV~oFTx2Pi{n?+-xM5ll^@0~`Lj5CS@|2- zc~$<%w#Pr_HrG#E?mxA9$v!?Hx7q)g`qntbXJF?Wt^Yh6aDEQ3?K^6JhvH(S`fGEW z@w+nKByw-5@~ODgQGP79IsYbqsq=3hd71rKj>8MJ-qkh_UL=3r zw(qC*Ysn{*e{I{7ZzGS%tDVRC`>VZ^+pK>kc@y#yc}wyVxo_JKQ2VpU=aLVw?a4=w zC*%`s`%vxgBwtGYkZn&spS(=I+_t}1?cc`UV0j%*N64G8bDjKKZnNH1^jH0S?ME<9 zd3_x6{q+&J$n|hMt_;xmcpCODmCwWeDxH6Wa+~Wb+^X|0%5BcaaO-d9Za?wZ8_(-Q}BbVHf#9TyCQFPvel| z|B}t`QT{fr+@khhE7g;dqPuJT7gO-@y_2=G-RQ!F+b>qxn|8 zSG|i1Kgn&ePktuOwrhUx$an9j^~KGVH@0pex6WHa}ANAaa-d zM%)a~q&{7v`8{siAEoxsVgE(tuUn6iKhAB&j|OSI-{BbljY|`i*Xhsx43rPS3H8V0 zaE$V0d7eCpyv+9zy=?pC8vi03 zaDN(tlS#_QVCTU)Rr@g&7y8w$^7A0PFEo?>GJKxK9zKIUa?JyEr;Oa2YSeg~7_-#^G>zt8IU=TyvntPcM@X$Ay9NDcBhx z_s8)_xroc7o^xaq$!R zQ(XB}{u9URt)KFV!hoYayZ#TohQxN@5E%;q)Z9XP`EF4ug@wUr->vxDTG*zG0{%5C1SJl_9` znz)>LIW83ec`96z_@%o3{`$z2$9>MOqWI6OzL;3DVa9wRkgbcpgJaQSTc6kMn)UyQTP@;GbSKZG6fSFqnj^&4@~ zk$1U5;}`JZ*kk-&xYS4My9Q^xUq66jj_*>O^iusN*c&Zx!^L|veuGHkmu{0!#^qb( z2s?w-{ytnBBrmf$&Tu?jd5ux(KOQC@jZ^x&2$zQ{pNL)RpT!RSeU5|6=>JNNAN?JP zefm2OC)AI#9-{V-VDEDIP3sZzZ@9?&%|TabJfHU6afSM;aEzb83H`6a*?H=J6Hb@w zdfVk{)4%z=HTO$BAMcODZ{*{0o9EfWXdR!Pk^UUxn*+0WRUyI9jOv%6|`8 zUhgIHZ`RMqwXRj3Qr{Ry)E|p0OI3fCttTIdWBMD7o#$0Q6TAI%JQm>KJo(k!=Kj@{ z``3r$@ds-E6E3`>`aQ2xeL(%uxy}0A&s5(TCx6Pltr>49PN%EC$+^w>lyE*hMqX^F zd^!12@^!e3f1}>7uJd(|(V9=pdJoENj&FLVj^DAl&3LP5-xH^J1nmpoX#NvvU!nay z*f~r6Jx+Uv^J58i@jKYVU*$IYRXkkl`zN=VpGSWU#wah%Q{Eh>|7kv5v70FGiz~C` zF*xCQ>`ol)q5XLTdwa@@aEjl+*)8EN&a5Y> z{x4iwF7G#9^Yx!recRk-z7g~7OP;a*YjKJC>C}&=ei3=X^ZhCuZdU&ru(wYBGq*XO zl`pm4+7mRNawE;}5L{?1pJ;Q|cRnu7R)52=cauCG$G6MVu`@&c&BujnbiTZeBcA`Z z%c}Efm!fiq@5>rtcf9ge*5uu=hcCuH9)l~4cP|depTZ$tflJqGy!ALD z--e5vFS}3Fd^6_X1iNF^z8$vz{$Vd%q`%9p&sP0J9FyOVox#eV#U=8$ut&ZT2l!7M z;kq|!zAP5qA{??C;%IK)roHs@o=`LzO< ziyVJkBHxDH`<3s0v)a2i$xX0-gWS&MedJzvGROOJ9NXiMEBJoA13!zK;kR%Pyb;gD zf8tfR?j+`mo8uIB!t3yb_z*k_m+)=)DEufs6u*cA{63zGzrzXMG)1;mP*;zg6?~$eZB9aXXvaG;aW-4^ovb?5i+$<`V2}Q8#Sx#M7vh-yQXJCX zA2_A{fIBo^%ID?wINs$~WTZe2q5?2VwoH`}&SmnSI2nht$eAi?<;?SizmuEam@Vpi`mbUlplxF_Hr*ATr6LOBYY<= z_f!6CZu2}4pQZQHHRSOn%Cp?&`d`ZDkw3|kZp!z)SM9SW)c)Aq=6+J5-KT24r4QsLI9MegkKNbg?l}BL z?vG>o8-=5-%5TN#SMmcm`C49J&3Makutxd2Hs2|KmfM^kFLHkTM4oZH|HjUTs;@mw z>kB@Yo8WM>d>k(QEO*6)m2yAZK9z^znEe=sUH1ES99GOjpn1)-`8Ihj_79R5;o_O{ z(%k0$Ir}4>-z&+(4(22`uQlXz$v?qQ;|(~$oAF{?!AtSZ+-5)R?>paZy0JNx+*W?o zcy)4{p)1Gf{Bm*HMs8*E6Xeb~=qR6)+bk{S`DQSAslD=RaG{wz346`u={Rd4&%tRv zN%MLMM|I@2IP~PNu-{4k1-mE8)n;gYPCK~)t{f#Ffs4n;C))aB7sltE_1z?anwV3ii0!cjkqvO-i}MS&V5>+KU{fJ95UZ_*k%8F;*z8K z%W$-(JQ{oW?%d}1&gA&cAusHu`sFyG{yiM*r~E4%HkNExKRbVDr}Me=-g^pQchDY*PIrIK&HZgqPzYUX$D0kIMbj|3|pM`TRAmT%!DU z?2M3WKdAN&>vOS3-p-o*3>=X6$E8sHjlwC{*R9xLz4zjn`jTzW`8*F70`>P??tDL4 zZ<*Ywr~Dlp;Pup(sNYB)o~rt-IOTrzD|UM;|Ig;!k897;{#1@vUJoZH%Ln10k9@eT z?;(3QX8%sYr9G7Qz-eds+}vip&Ftp|?BT(HWRdL)zbzD|o zKV-ZXIBu!DgY^mWxw*~K=W;(9L7vdxjpPaW1LQ946Y{0xZ;@wh)&F-mI!Z1)qWSsE z{{S2hSAGIcaDY=h99Qsd*cqYrk6{m&aey-%;eTJC*uJ3!R1i>566`O@=dn>GI@G#b3T?ipXQMl$(Q43km}#X z&R{vS_4vo!=6)fvlc(d#1o;tM7%k7sZN@8ezQ0VKjaUArt;cJz zTU7peZnIx6vtK{tHdD>6*Y}r&CydSWhC5Q{ z%x&hMGXKRkzfSpTTpB2E!0veYS6mz|*LYI%EnO(@pF2Na=-(rc=>Jrlj#GUW&sW&bH_3zkYM9-+3ylR-`IDKasEfWS9YknUJlA_ z_P;bv=T9>n;A3-}^;I_Md^;I;<@`GZ2l&j~d4C71zYDN`h&&LxksQ%J+^+tw#l7jT zNPV!@bZTC=;$pM(8ti=y3p+Q+wn)-KG39?A$GH!{vMAnol#Id*#MB z!^h*|6y-f_K2;uu<7x6F>`j*+!YO_pM>CYK#o2xGPq;W!-hF}Q=aV0T-TRfd!x`>{ ziw`Itih~E`o3JxWz8@#}8C(C5@^^3rZ^Fef%Kx(UT(9*OYQFK6%A4T?``D%a5?mp_ z5oa8)nKtKoe+Eaf`hNp^9FGk+_}tv|&Fe25&QpDZXEeXce7P+S$j`Ppz5*AXR{a$0 z(Ee%c;x}n2e~c6A|G{PQ176Vh zDLxSgxIfPD&A5V}!Ug(Yi(|YUJGkCbjhE2A4R*=T!6Er5?2+G%i_hx*xe%8Z$sgjF z_P=1C_WQi3@dMl%C$v8whve7d2v5aD`d^G)ycRoleA^z^dr9LL>8};e9@p_a$L0&< z;n;abz7t2}vu(am`K#EaKEodQ4(#K)%QT;u{#xRIyeAIvNF3pNae?uk!A0^nu#3OO zG2V$wj9+iL=2IeXj#KheaE33%1?sQI3BC`PabivTH8>^z7H9ZhT%o?v%bH(^Tj2nA z#|gd+SLkm7cF7;WaiZh*oXr=>AK)VS_cni4d5u>zACLMYuut9*2e>yb(ciT=B%gsJ z{5&q=b=YCN?Kmdi^Ht`9Ti_DzgcHWU(3(8L8TswFg6Cm}`jxnhzr-p2!41Uv7ts%@t4Q z)-O;#-R6(V3#=cL-@(b_@uRku4UyFS_11IYt z;}3Chi}G)6{de+z*eBn2jnwg$VcL0Q@JyC$S=Yv`DpANruu2vJzQRB^CRT9u-{DH zfTQN}FV;uO)ljUZ zy@D(C^z)y0aA{Yy|I+49$~&xk=;ukbKH&Vp`{NY1z|qO7Z;#6-$vtq;Oa1r9#mnSt za+~{i%Fm1MA&)Lq{uuc>@};)@5an-^XXG2m(@T_Ba3Pd;`%vR;q5go}W~wD}kGw+O z74N`(sZWQhzhUHs3-x|8p1j;&`JFhrST0dti~1MH-GRzilRM(^yx@9V_)7Kn;PTh<0$d`0 z3&(tZ`xuA2Xnk97WthAZ7uKr3gFexG3-_2wn^#L*d{23291d6ep1Do*DnHM@#J1=A zuZg+M&v%ovw7#k2G54P*aMoA-y?{#>$?xFsLir0^=q>+<{h69y^>vzm+E4j@xIq6c zu+R4~r&y2Ede6hf3G!g;8|3S;J5j#d=0*82oRB|@h;+lq^k@?Abve+TjR-5O$#_APOMPs0)Jhhuy-PVgN##gE|% zei1vDYd$IV@V7X?|KbSm`%!2w=^BfJL3_#2$y zzi^7{eXjXdaC7Vo)A&C2@C7))BXNW$;TX@t34RWz_-$Ol8?iH7BEiSavdUyNE zjGuph!2P%hF5?b3!+mgJl&;s&*u~Saj~C$(zlV$X2VBCtf35kH@!>ebr{Kbs8b8D? z9*=$e01ojBxQIW*CAF8}+o-C3@7$(o=?AsnFSohB4e8LSDsMs_k5_*!uscCM4j0Hzw!T4mS6r&D z{)gij-)Hl>$`@l7ufxgh>hD{dKdbtGvA0Ox=UetCkz3%(9cq6Pj`mXCJ-1o!mXkYG zt+yX}TwC>5VD}-_-;BLSG}U5?kgw*6-1pWFI5TJMiInk)Zf+dn1m zxmD{)$PdOIZe{ZYsy_`EYU}#C0J{z4!MK9QV6Tz#J8($;2=?)!+~)nW#OH(mPQ zX+fu|^Ys(*(Y&92gNt}uZZp+lH|u~<}`199oxP)h6{|@B~aq&)h1}H<_$gc(sqtRIDPE1e#>&66^;~b;a+~KV zm){ps`$w%O{7v&c7?)k`cU$Z=kN$U$5X#S0H5uadvl;+a|yT{A@aMWJD0w;JP_B`cN zutPo@$3@L=DK1Tx|A)&JwO^mx9G?$)-rb7BA)Twv_nJQ|4=qy-l-qO_AE@=7 zfs^j)zi)0cbjbGyqip>ls-J{C_G7wjUrqTO>~p_djEnexINe3{pW(t?8vlFS9{+_a zla=pb_936YhYzrxWhQN2&2pRlS;zjIh(E_YsCT&E^~3&jwI7DPCh~Y(!uR6J9-9AS zI6Xr3i*V3G&W~F@-|$ZPeH>5IdN$hjQ{`W+@0F`>Q+tQclMQp5`)6Tur>gZHMP3Zm zeyxp4Xzs4_G zPfWfaE^xgcfnD~i9Zr{MyfbY3zgZvlR>?zfX|;Skb{ETc<~H*!|D^r9k32Ka{rT%L zT+9!ec`d;qeiNtWb6oyfhm+3ge@kw2{$-qRJIPBgDX;UZ)?cnCAAz&|bbQ+50_SH> z?4G6Z`ddFEUuElgf0=}f2de*R*jXpf#?j64bJ+b?ehr89<+V1SByYz40Qq-Z;{CUp zd7sF)D#i72fuFw|p4;rtH|$S4@^VM@*9%9q&);|Q{-XZMBV77No@m=M|CzXQqw=S5 zcE9|Jt#79Ndk-h4DE|`scPszddYb$n4yVd>&2w$l{O*;T;*9z>xRe)}*D1Np`d704 z^U2dG8h?=WUaG$qR}Pma;}}1Pv%{1xzyWy~r(FMQbDQVeL->6pS?>IL_^4CW{3`f$ zTy4A7SK|4iJ`Q<5I0XB+Rc_PYOzsCAZGC;6-@R~ghUPmEC)4H8*t<`jgv%qeKM&+K z{fC`9SIzec@{s3`Ww?Ytz+OYO{~l-LyPMB3`JpM}7C6DD;b=d#?}yz+@-;Z7{!Z*2 zr1j3iSqIfWmD~L15Z+&xl2=-4y>H?082NJ?kClJGwRf8+`G|Gjr|{0`Rm2jLjE#2)XToo&6V`g3uF z2jMavjZ^x&&DI~F^YuPkkDtQ+LF)e{T%`SKT%rHWn*3MWp1j6iT3?JC;S%*nS|6zK z+FLi){JL8+pT4=x{h+j=Q`LSBC9mwG<1rdXZ_AT$fzKz?agpOW2gls6mf-}yhg1AD zuHZkg%jb_h{?>Xud@%NLYaHOyafth12am)F>$?GaTeQA=t-H!4Yu5V=4!A#+bDQ&V z3-3p3$ctyF{b#w&`M-tlL$;Fpb(HVK99-OH7)z(u?kdmYr@H@Glc^}pMk=Y!h+YCY)@s&}!AkH<0Y zZcY0>IK)G7dcXP`hocANyK(TK{3y<-UyKWnYrb#T_B@}j#U9U>8*%9X)o;TYe?R*_ z95+{9??0UnKX5)An%hjJOnw5+TByD|_V(0#`{DRV<)d)%X!%Clo_q#&`ze1sw>jS` zoNtS4J?Fz~I6Oi1AK^0o*7`){e`Dt+&99F69y4E0v9DZYjhqy9PzAATqzx|<8)%|uNd4cDfsW|SW{hE!7C&@3`di*YS zIx63YOMhs*-)zqLT(g?i=hs!<2&eccoYB6cwRvvOUl-sC@3+IS!~JkP_Q~(SWv-tG zZTrR=f1WkZe=p+fW94sQ{{wjgjy{q9!0C(f?z?Jz!NGdJJHVRzcS~HHs`^gYzehe7 zJAcbVae1da0cQuwQ*gxd?Bm#F{10QYP~MrAN%+S9N;#&&H3DHaObM|o}Sz6pTqZYm*mc;I!iyF zok;s=$KF--4`Y9s*83Fp%yGzH&)Ir&-sP_qxy|(zb-U%6 z#pwpk=L_t8$$D^clU%5y^~9gc`{3|s^>-*PUn94{KKs|z){|do>;F}M!*H}lzA3kP z|8@EEW%uPa_vcEW>-%YPpS(=&^iuv&ZnOVUSIy@uTxci%jI+-2-_{)8I*!_ht&|^% zEBnZ8ad4>I!`6?LFU)QJ^YuZUtFGtaxy}4N<~I=scm|H}TpZ(Rm&3vxO$4{xRpWF0TpueMV7O4LYIQdY=BfzDC@=LLMygVki8NWE* zuUhY9^021zhsjIBmA_!yzpMV=%x!L!75;qfm)IGh=bzuPhxas}{nsF_HTi$U#a|coQ;-0v+bA3zhJ+=ynB7qpV@DR z`+bAlW{wDc;>`sywWA9e^9qivMZ^6MW za&_~)U_RgEHu+#2Op)8$9QVQQBg!Y>GM>koPg)o8;@MERm1SZSHRg|Nh&lxQzQy?{of-!{yISC+2l)?%mAik0rVv-a{U5 zRsT=o%6IZh*vG4J^u6*8Hvd8XEw`Cp#Lpl1++XweepKEVCqK!pa7uo<_0P%&*!I+4 zm)rC|n*OJd`_w;0UL=2wyi`$t>v6J8u24Uj`r77uxT^goZ<5=L7n8Rq_vtUd5gv@4 zKTRX^x&a6HK3v+V&nr*k1h2#q{t6fIuI78ee10izgfpD~xx1?QEaLS1Pe&Ma);A-LXjriaz4Er^rUkfg;6}|~vI#l?6L!T9Y9|wn?5&o~C<9G(% zE#;fpMdJ5@XWu8h6kHAq4}vSl3Xd2(E<6DarG+m5M>>VCFzj(YUk5H8DEjT-nRg05 z44xen-T`j;os{QK;L4Eb|1|6m7JmJFltyR4EsGq zzZMO!ad*?=o`RA=sEB#u16PxHKczXcn0?OgM&!#_uvS4 zm-kBk6~uohI0*kk;3D)B!83@z)v!l>TmjA^{hJtA9xD(zhtKNR7U%l zWv2E}>XZCm21mMt_k5q|#r47mFjM>ro=*l1MtUn?U*1Aa(tlyF7Eq`i2hN6NzUp-F z^fAJp1&4=(?>6ic!hbOIvv^WT({_75{5w;)&0xeo7F=2<@pIs*mBN>Rr@>zb2aXf{ zN8r#B;b+06<-+qmAo+&|gpUMQju(!A%WH+tH1wl|KWD@r75=GV4}M*%q#qa)eG#|_ zPJ^ex*BbUov40di18!L;=><;_{b+Crd=9u}qv*GSi{QT)dP?+zgOXkud?L6wF8bx* zS?~|Qk+kTqZIk#Fa1S_}5j_WP$qH`=7s0;jmc z!uJ^ZmxZ4Im!B7YT`%%~L3km!bgyt2+;XSzW^nkM!k+<8|5Nx*gYOoufT#W;{F+6Q zU%4dwUT|?%cqO>>tZ)HbxlQ5nKY_44wi1 z!LY~mVBUu$y;<-v;4rQSXM@Y&+rU9w5B>x$fe$ze^@Z!fYH$U7F1Up2!5!ch^#8Nq zB6xmC($jD~7y?g$F9HW~J-7#40?&d2xE>tZC+W?AW8fgJ2bY1%;77m_Tn}D0;)B~4 zOL`Gp4^9EkfIkZk;`;DYa0vbX?)?&f3fvFY(EsPbS@8AX3ixqD$MxW?OHf~1r9B-D zZbADRW2W}I1MTku=*4}-z67r9Eqo_Jf_H%TSt|Zy50UtX zGE@FfA^wL99sR{Ra1r?zz_aN8r@-Meq(8WhnbMm@diOI^Rw1lMcntQzd6NJ0(8JL8 zT_*ljP7=Kp9Dcj-QfA6(7SDUvgIfmr)cA8890Z>W4uh`(XTdjur@;3!Q~y)kPxAXE zGnMCglxG&Y_8QT5TQ2tHlZE$Zru(Uf5{s2T9ngc9N&T!~rk~Tu@5A63@D}ha_+yAa z+b8K?%S`@gCrE#JFYH?erTjaFvWz>Ftj6J^($7{`V;8EzpOc z7ds@r4t*Zu6H!1waW~%xy?tg!2=nMB&$3t5!_JLc3-v=(X3J-x>pq~m3g13XUezE@nc;+_Y ze}bnM3m>>f@+(7M46cC3!J)gw{z`E8SmArY0q9SGBjA13O8PAy68po!Q+>h_@XW2k zA2awU;hVu_=sUm_@N2`UuMV+)KREkM;SJzQQ21G#6JXF z`Ihh+a0z+=JO#cIJPZ5#3_eogKLyUBJbMpFew8CcKO7u^9sw7@7a8_lVt*@m3i9_!da(9xN$)g+4;KCs zIP?wSAA&0f2|ou8Lf?O#f=l-w!U` zEa@E!4y+NL1ZVFMz6Pv8|2{YZ{TYK-iT!)lOMXS@17Hp3{}%ABrbdhxB~q*;PR;GuRmGx z%U&hcF!fV0PW5S!kMfiIaICPol_ky#%!hZ(0;QW94h~yXP5q&Xu z7VUQoZ^EcoBx zS=i5yOMaEL5`P7_1U(BbL%#w%4ZhuA*#90pdy}NMn=a{x{x18!z7Jdm4}hoMBKD_& z!+#U|5;y|B4_ulR{g2=v(tATf@(V(52WS5(_Cw&})56=pElB@raOfG)?_#F*8ASVh z9QxEe@pq3=(E}IDczuDv=L)Z6rtxj~7O~$14uLNRN5J=hwQr04AHcI1Z|*iG>9s&# z2oB?VvK|}+p9;=`zXaBh-uJEeAz>gXB z;Mbla=}&>*3!Vmt!DWoMPBV1ywcr`>PYgzR|7pYr@4Hd*tALLLhc-!lp9Ie0d_Ef- z0bdI)g1--*ib(w5gG2CtkCfyW1_!~j2a5dwxP1XsXe@E&Q&uZZ)%4V(q915bg^G<1v~t^-HF zKLQuQFM?-K-v?(TzcRQVTmf$c2T=aY!5a7ua0vV)cpBx|Gb`zrzze};@OrR@_H#P8 z1^gw$9_4))JOh5(;2Y)myeiwLZPvMi8DZLf2KMi{L z^`d_cdKmh5pod zKY|{3hvW0kB1(7oy6Y^{e0+GKri8XaWnKO=s$*@MSVUE z{YvO>n~?llj*#@*z|)wYSZi>%=ox16uY&!HF9mB8a=p0)902bChrlm_BjAHJqrBig za0wg-m%$$eSHNEdYnvtiAAkekS#Sva)-94>1l$cSf{zE6z^8%B;Ln3A;QPSZ7Rmn) z-~f2{Ny#q+ejhjjUIQ+IH-SswPlC(fTfr6ZqhM`P@_)(DF~1eqD*4ZX`@xzn_6cz4 zbHW!e)A_&P0NGFa3b6JaSwDRPc=lf52f&fC@b3&A{2y@n9?{>nP0|m=gx?RI84>OS zYr639;FeM03Bx`qe3_wtS9rU@f0Fer_ZobQ=sy7$za{)6IC7ov3x@qyh2MOt_#3`S z_+W7H2H_5H_Upn+z-7c=4=!yNeIvMKK=^FK{!Zbmz}n5i*Mq00h0EaZw}ofG+3SUW zZ`j`^{4a3J?ZSJWCgmyKC430Dg!~Q%&)g{bYH;Nn!a7*P@tg#QpkHL@C~pZogZjV8 zu)kZJKgdk|V+sB1W6;ZJpU;A`8^!+hXP|whgy(^$P7yu~ zT>gM?7g#${_$Y92neZUEv{X20*n`gjw}7t#hd(6tH-d{eKks6u=S`E?AK@YBl@76g z)L@kVDT9v@{b^>ZkL{?Bm!Qwi%K5qbnNt4gcZ&T1;HlkZKY~NRWt6Ye(3gw-GH@9F z90x9fN5P>Z#C{97+%0^b!9BvC1WzOWwcz5z;_ofsmNjDkJ%f)F-T^N43jY~AwMzJ3 z;9{rn?nNno7WzDJV72J)1DDnd_kqjEZ@`ET|3|>H9~Ap7M*LynkAjQPuLQTCeAj^^ zsNY+`vnNaZhrwa^y8~Q?zfXcI;1|FxsE;?DCFKpk-vhuJ+TRDjA;dotJdOG~8eCo> z{u~c3b_t)tOzpLZ_L_%YL4R>NIEeHv0f$#g{Lg_)WjWqAf{PCb-^NVi-w2*JKM2l( ze+K&s&gb8Q!)=oO)68@}Oyhjm`-yvDA2~?ue+({uLHKvz^0@GGVC{6_-Oi!(Xgo4|hVVRQDsSk2rG5@!ru@pI zi&gz}F;o3z@w|FDcnW+XGo{yZkCbl|oV{B(2mA7clKvUcXAhJ7&j)Lt7W+?wizkSF zEx3aHu5JLAgQDLGE)c;$Usr=I@ z?|kqKco8#~|L>B2KX?ZH?I1Iy7sm76QE(P~DtHQfF?bq$4R{88D>!nZj4vMn&qDt# zxFsX{GvENmv%7sn{As~>^#E`P`a*C7+z&2-*MkFyzmb{hCvbrr-!s7_@MYlQMWTNN z9QnBL9ftl9;U6(meHA||{{N1d&eza#IbZ+AybCo=?C10nGqvBRaR2;<^N7ix%6XFB zzRYAF#Pu`)eHO>Bm6_s~aDE>Ndu>m-UM`3I`RM-!VIRQy?h~Oui~V|%%n%z{u z!C-CI*D3A+7d5U#O*`7qw^1d~f8*fkQ-v=D&paggZ3kx`7XA*nwEsRT{`26Lv!y(H zo-h6se<$|u2G4w3*6;U#wR6S(IB?6$Dmg6!E{#ZieFPkNjrji=@XTw4Zv<=Si2V+5 zC?)m(7x45}(cgH1_%}QHR+Zs94cjk%9J?Amt^63&k4-VZY_w!eR!$r}{;9!m# zCH?nH@YD}+{J@n_@o$fhi9e<1<|+GkfdhBR@$3QzPm}aN3~qUc`1^UVwpsL>jrjLV zeLn~;<;9;z!LvoF|L4KwGlloLQ2YsBBK~~{-11}bKM4-KDCNHlJo8=QpMr~Dm+zlF z2iC3^e)~m|e&9OcBf!}sr2Hot+$DS(cB1Yp;nRdSf+HW7<8u?ZqRILGd$0!H?_$Ys<`${1PVnqO zV!y`VcM6Yz!%xWZJ|CR@wzS93gUeS7-vTb4EBrlh<)gyCG3+l8eioeljPRSM#J}<# z!tLO|7lc=WBVQCA0SCV%yv4Bpvhc;=(&vS@8}Yv)d@nfrIpJS{XSNGJ4c5LYyxS$> zU-)|A0J!`$;cjrtjl!!8`>zX+fQ!?@Tfy4R!c#{4TZF#?E`LM#Zt(2o!aoKFR!jT- zhrw~-JuVf0i%WzTfVCmvkfCRVBjA}$!l#3$)(c+?4jeChAGoqs_z&Rh8sXPpCi#bk zg%1YLwc?A^r6OhW(3DACG})1*JNF{sFGMB>I~^DgFdE ziT*BdI3wH(E{zMX0%z00I(T+e_zZ9;DSRx&LYO8krLC;fQ@+%hHo<#`65Dedd4;L0}PAA!q1lK$^s;Hk4jKj=!7 z|2xv3pJ?!HQorYcwF&X>CUE2#;qQWH@P6&@z%5DfZX*?f{4H6xKeC`YH<_1`gx-|0;tYkowTU(_ayu1kZj+_(E{y z%fi=y0~inA4lZN7G6Rla{P-kz2II$Bjesk-o=$=T z7!Q8}9LD{?*TIqhN_idz&qk&FJprEHRoeRt-~h(Mdwo{?37;+YM}Vg`N_#pMtYJKy z1BWmkKHp%Bhpz!g3eun525!N4_zCb7p7-wYImy3-^Q!|~+$8bWfGfD4iGhO{51$R5 z#dzwo;Ow2!pWh5Fo+{=0H8_IvKk#{!e?s&waPhlxey#$~VtgJ2hcF&K3*3V7a0y&O z|M3VoG9$>)@OtpdhzkNd#oYenAxp2qk%2M%I9{BiIM#>?Bm z8pgxl1xGL*{xx{&I!XUoa2ey{y}m5|g)ts}FSvMv*dGP1V0^qD+=B6N796@s>@P6l ze^dC2;4sF+cYsTu6nzFfy-M2qGvG)}_)T9C|7QDzTfs8}!pjXEnLlzAF9&FdjY>T-h%AQgHc8!clMw#>1z9gBTBg3LL=gpUAEVLW^ixHKmI zodynKJp37OBrfCMyTBoghkpwW80#&+j`CnU+yxF`{pB#YjP-dJfM>8?>=tkZ?+5%6 zoV{PJ2hV~-7!U6;E%_BO9zFbwH$o zd1t`~fS(6w{Z1l|B%0*-*!g2%uofV1F@;7RZq;3D_}@cH0Rf`hm|Z)c|K$LQ-~ndxw*~%=K(9d0fu91O z%}o7w`L)u2Uk-g1`j^1ZgQvk-Kk5U#JNN-`3;0p+Jn-Ma0q`z&Ncj&1?+Xrs-vjOi zcY#CTW#ARyb>J{K0p0-K0*-(`0v-cj2F`-N2%ZGr11^Gp2tFVDEASNff5BIR|HDl6 zJ@p!?@7?Ycj-dYE&P><48C>rUgRVh89QqFEtC{I~SVHv;f zbn91|2&wqbGSl%19Vg{^SbIV27crB45%yuj{yEV{!GTkS&wzay_LoDC zoGbd*z}hz9@4#MLFZn+Ty|P{Orwxt^?|u*bhy6R5seGXuMejEF3&N{mUxa-edg(~f zPlX;@C;49rF2nvh*q4XIz6=hm6aEG4wG9&gZ-#w`=&vioU+C{(W`9?T-T^Ky7d{&H zMc7B7-)8I&0*>H&IType4ErxbFT?&W=-Tn(-_M|jzAX9uFIX!I?|Lu%h5dfa zKMk&+JU78U1p9}eYca9^E%YMve?l+f{M_??@wW_pJ~OxHsKh@4x^}YoGXTA`S@a~h zg7k{855fLZhW+JYeH1SlEG8#tUI_LjoG-gQ2>&AD z-$BgW9?(B@K@UM+1$_tnkAY`lzYX?9*k1x&>lFXDLoY+W2YM0b*UzDAQSs-m&?7w( z|FsW^zai)cFk8yk&dlut98TKD`*cV`5LHRC(y%rPyz6f1ATxTNIDq!@8`zg&{~Ywlda-}g58&UZ`1fvRs?WfQq8|=D z1pQd(#kHc3fkP^ykrje+69|6My~zy|_~H+vA7gZwPvT znfxuHetN(mlz$EEi?G+3E%kdE>?5$h4EAN%e-(P@B+36?a0%^q2kf<^`1^NeOZu<> z5&T2?2QpK82*JLS*`Sm8fqfD7TMZrO=M?lZ^sg{m(z_e>Q>dT+fxUK$`1=>= zq2r}|ubF{=(D!HN`t29J4O~KcD_~!Q{V;S5-w)pmy$t>1%ohKyg?$n2?GD&$8^yn$ zKrf>{{scV)UHh^4SH|&qJ2Ta95qc~1$SLCgQs`yqCmHckpLyt7O7j00^Z@#gFF+4L zzm3^ao*%)!g!=p=?2E8}3Ht7+pSS%){4GO&AG0OB#mrRy)2Q#`VXuvge_4n9M`2$< zeSHr0A=uwy=s17B54{NechJko?*-^(=x_O{_)|fB9m>r8TUz`%irM1-aj@5pkoq5o zeF*mFI_y6K`x)eaGwh47|DMCX0{b$qKmUS#8TN1fnfR;qN&fF)W`8r{?~%|e$ZrsO z2>L0|1MvSW=tbyPLT|zG{5te9^ar5NgZ>zFEi3sy3q1h+jsGM5g`mHS*;1d2n5jL4 z;7=I#Mc9uz?9YIG1ooH1z6|@XIqbg!`&rb-qp;UDiN8-f?05gU_@i}6{l1f#`#0Ek z8~O>NuZCWP9%r_c?^M_q;qRreFT?&i=!c@d%Fwl(`1cEDOL~8UeF^Ek?icV6_U~Y( z`fP#!9ng!=kA@zA9)(_pJ_$Vt{bJ}^Ui|qo^bqvBpogIUjM?Jv|H8fue|Oy>{uW`s zAG5_i$V~o+k^XYnmtlW0^iWvpe*(Hz5dSV>wxo9r>?_FscG!nt|6}M8lB>f0jVkCd8i;p=XhP4tfas1<(VCUxHqQek=4M;{OnO8Tucf zhtQw@2fDUd@_*~2;@=eFAI8k>8G0YHrM@=6Uc>!%2KGhRp9j5iqLlZu(96)j2|a@I z;}PiE7V+l^=)I`Ve?t#JZ~2w@TY|suWhQ@%&_4vd+%NgBgI9%< zY$@+eun(ZT55YbJ``f9```hW<A?RJu zLn!|$a1rD880?F%-v&L5^e%y3hQ1wo1n1K|(6!UVpPxgoz~8@u1DKC{?Qh{9>i^K>T?Eq2>O%I zOG%0UU+6{X`#cVRalGEo%;z8Ue(2hIiGKog?M%sk6Z8_wdp`6K^v^>tZ;|-l0&8o8 ze*pU;?0;|Aqkdil2NGhx_Y?3B_6wM)z9VOe9s-wfKCXwoRuq5JhQ3nlKLRe|{JR?V zA=rNdy4EfB4})94kHfwQ`{$vTaDCnDcj8}Qf#iP(xRjOjKFG}Vjrc>*H{kr*2wgi% z;-3vY0{trJA?VZ41Mu%b=tbzifj)-#&p|Ikf79>9-{RHc-@Cy_W$XS9zZHHt^KF zZy+aW-VGf1j_?q8wk(_ihhTq^VSm5q*Mg^Df4dR?0nvX6E`3+{Z{Wy-!n^%Z{L9`Y zybv6|U3e{cwq;l4@5zR~T6m+Oe}D=}{}q_2{(F~5{hz_iN&Q*)6X3J|NBA>{Kiwhe zU2E`w@b%!}cHvtQKlE3Lf0tqZjOgEIru;+5|1s#_K4?GX-=Dx&VZX2Ezzd+i=1HlK zJ-}}PuLQq`naVS-BKfxx@3jjZ$A8Q7(+`3x;FaJ2zR$eQ-~(Ty{5g@BqMQGv9DJ^W zKjq-BIrwe||H#3QI{0Y^zvU^rKl?lQ{SH3L!ACpzSO=fr;HZN~9X#RS(;a-FgRgY( z4GzA=!H+ojj}HE~gZKE8y?zdKaGQgdIe5K;haH@Iho)_!zYP7Q>2H+&PNTmq^tYM* zCh6}C`b*K@M*170zfcW#>mAkK2}^iFw}dCm z-<|50q|+H}Q^;x3?4ApWSl;5qL9l==lNWvNvs|GFV(MLvlJGjVtY*BoXHov2*XHiG2r@OTyu17l-=?SX% z&bD?`T4zspynRIPr3k^1-e?bbZ3e}RAc`>3*1M>?muj#}{nw$hYwD*F)YU~nQFoBt zit48$p~I@Xt9_)mJ;7-udfK`=d$jr8-93qpkyxCqx}(8Gx;DRu{EK$RscGol-5ovM zR3@sLSa(|w=NNBa)YBf-<}d1OZ(r2WwMYeZE^6lW3bI_tiJyh?V zY(>8pQCiVNdskdcXFn&cFLq(n=frGNKLaxPw;;f z)ESRQ^%3$m-qq1dO^t%OdlT`Fcsm7+w0CuMa8Pf1cf5NMm0YKU^x%j#KhfUPtH*Rc zz+F^YD!}}NE*VgcdUw0tNjWB{y>V-I22q2cW8Z67DQ6Oi)*iAKzYvmWO&CF~`9dz4 z9@YN;zfupwi}ieAS+bxFFVhRLvGCH>1DQ-AuMMy25Ay%0&8+Hg=l^x^|2p}9UG%?9 zY~$L&p|PAEjcdcJ`}K4o7flT>%jvoWm*+BD2v_LQ>~LQym5Hs2=0@4T5<&^-oP-ME z_?&b#1WAN*nZ)q&erU4xnR}j5(`6zcoKxP|b+)isp=njv#%K zBFBd}>RX4~+IuNIYrrDvLY*Na_K@~2?i#JJD1>cth2U^>JkG7A`g=GY&233i1B=Es zO(b)AmVU+KiDWt_r-ncwN(pc+N?r4>v1p#!0RI}-$K?mbFn`clMH&?|wy~O0Avvy7 z^-@Jq2I}8TESyQDmgxBykXkK%al59UxlxvKqnqjf`MjPhENvgk>70?Gm7tMmJf9p@ zO?_l!g3c;FuSfFyKSjz({waQsOi(YGTb0ZgH2Rs$v>tlc0G;0Jb4fa37PR(ljwVyl zk(BPKE=x^N*}dY0b$z3!z=`_`eCpK{^S=YBy1u# zD+;4lM;*Sk>R52K8xC}}86(hD4_3k6Rt&|}6b!*tYlh%%0;b|V{4Dt#`l{ral~?6+ z6j#M_pjV}HxU0ekW6^Y)6|SmkjhMmKBWDKk5A(=WL$fLB;*A4l1`p|z9--0r=4je- z=9uPryGs80$! zl*ufM8Ycqj^l>@d$-@-LR7aa!=Cbt>=8`($^t2V+G8%{(5U5CsfSr3gR*m81PLis0hbc9-t zi-%&gW`|@s_zuN#>N^xmO*<6p$?ue`XTL>r9aop;ot>&ycSWdR@0w6jjl^ti)Z> zXZG_J!P3`QLUVM0s6n}1+hXtD`5fmuHV%x*_uXn-0rYA+<_wUe8aqn6*-64t=JYL!}pZKbjbwn7=gpc>*j-0-Mr!``E&4ar^y zOE*o>jj9wK9l5%LmXHT9TB$K$%+l0!cm< z%@~pfr==STr_9^8``83!?rhuaD#Yj&LlRrYVL|{-wt@(qtn| zNvNOHP0_FMY+kzf;aFPVqQx@f*_@uwFHEH99HY*tKaoaRBq3C^rPmC5Vw%PI3j`R5oHq z&9_mz2C|M*NfxVn<~n&N)ZJ?xqcL)BaO-$I|JZCinrTt+Q*$PKDQe7)W@Q>N z9Na?vw!_fX`FQs|ww}k^qdS}c;{*_YUI*@ zk-M$9lk#dPe1Vj4hO<6$`er?s_v~8?iLS%WSb1vYi?`C8{U&b(73&h|5=_0rcy>70 z-s3tne1V4AK@XtJ>KNUY%wk582YHSwoKr0>WR`3_RC*R+YwI2+7{c1!qf2%_ zk00_AmaBw{Op0fs9%r1gx3?rS2=_zwTrG!nIF{jIzd2aRqzlnxn#VhI+VJ!;|C^bh znc`S3lh4O!))~{^vE0^dfv0?F5IJU@gmDPuu;vJo-dN&uY|C^2ELEr_rebTf0ezH4 z2zrhMBl&o8ltyc8MO~w$K1Ontq>ed~CK)d8a`uI5iQCAnLZGy~P8x@t^=Ee2ffy~F$R z)E>R1t20tl^Httdb)!_0WcjYRkb0bS7hj+tZ*U?l80*b#*9QM_z?yGg~ID z+2%(wlhm11>wp7nt)dXO>4msMr5>XiyAbcNp>B_>+vDo?xVkOwL|(U)Fs51^orbZI z7}}L*BlNNBXBXAcGtQZXR!g+Rx+z-hYNlAAj(Ee`0dCFooG@xOGUUlkc5%O145P+u zs+pCCIyB%2v>tn;;y(Nk(kgQ!fq1?1UJU5}{eI`Y%ffNqyL1%I?t&!;V_-2jF|twL zY9262hi*5sDSgS(!8-o9>^!}4S$X*8-zTw0X7^()ju~j_lVCh#_umoAp*o_g6V28K zaiVdLj*i21k3LIT~RGGTV=9Ac{;urXAT!s;=$JM^${F1eZNfKsF} zMx3T2{N*JX%G|6iuLM@+*QWa?a+_-!g`>IXxLLbi$zon;@ zQBmH-s;WMvsv7tgs%qm?rm8`mA~_A+C8{1L_hGVVUZt_fK4r03c$LH=*D8n0%%c=W zK|Km#N}gpfRlg#b2A(A_)tUuxSh@YTpJ~z}c?>+1p__U8xnn&A#n9bHNjN=HF{7qZ z$t>M%(TS-nkJYfwwzqex>i4U7i-B*oTWo4oy2Z@5$}Ki^E8J!4Q{5K3+LdiJ zY^16!_H`<{bu=UQ#jWO*Q8x~#3pj*3cHY zwB?x5v|Q%R@~w{M@?-P}%6V3Vsm*!>cDX$ccl3H#cD1_?!n*XhPj0lvu)UWjzWKac znywBTjN@nP{j7m~wA#YyI~!BDWzcCBmnF}liQrK@C3qE430}oy!7(_pdQ1~I?*4f^ zn&0Ru2RD7sKNXb^j%ehIvtnO(6iU78rABuELQdVtEzFG&Wa7CrfMEBJ|7k*X|CMk zfYA`1R)%^@`4jYf-R=%PON)rznR#^vS+9=3GDF$c=}z4y zyHE6O%Q888dB^B^HjU)?A6gdUoVK*713IrI!C|o})|pPbz;oKt%xvLm!GfnkGyGwG z;%tdT69zWszR(q5?;OYDT~sKU4E89NUAC3WE?EoaP^u-f3$~)MWN{y8xrlJch&*hT z5_5pHfCjtE$5!{zn0i4VJy4B9&?x|0@}T+h?82s+2jqm+wv^4$U^$!zs)m%Qc$#lkw#WUiBtDq{nyY@Zuv)tquN%SwT^ zqJkYIrO?Stj?=cyROVc>611X*AFoVQCu-a_$MK>~%Tx|qVBRf!O#fip=C-auS{_0d zO3RpvjWF$I7@1{YDVIYMmboVtCzo4IiA6_sV;!f_5G0nmNlemHA4j}FdS>pGk=#^z zDI>|zwbh$L&YME4R|*c|CrIm)g)v?uWI4TA!VI0YR0#6Q4fA$ZYdx2f8KmY9|fzI{>kKbL45cbVpyY`2w1NP`o!XvI96?G|)LYDtBL zVw|#f#(a_WR_M(w8ltbXjDhT#@T+02m}ztEgQJuzWateK^{ivi`lP{3l}uKUH`Ek1 zdM3Pz-jGbuU1H8F*R}nFVQSCRF;_c4Ysx$X@rpN~k7o+>u7Y=}gS1qPBBuDYEa!0} zcS+`S>zJtXp_YwY^H$IVP}=J_QAV~?%37>gDoGcjn$?Dj+)$EVvGXbgE_F2w)H{|Q z<kM zVLcBlru7|=^SS{CEQa+Qu$cNeAYB5@n`C^mc9?i)>M*LA9oGT(u() zs;g&{k+Zo>jBcjplriGg$(J4vC25r!_1e6S&f~ITH;~KAV0Ex3C%WB8x?x`*eLTCW+^)YJNwnz8AX4<3EiFGY@L*J@;x=htUFvP$uq6!nU3Uo56q zR}@MyEUIfPRn@RA)>=X;7iJ@50OHqNJncN2ji;qg^Wj$vXb!31+f~{PeDbrV;gb>F zw$7=S@r_sKM0dq&tZ(s)Rwp;<0?d(^8s9HyRj(+~-3N`!C&uYXes$H7v>ESM@eIF( zY^G&DAN-=IEcB)#@yk}Uekeai$Hj3U<(-RBgEXj8kNTvWZp1$x*@^WEzAQHyWf?l_ zM(laG+^oIryz|V2y+shOSSLR~vkr(uoK zI!%2YP;;?3XFP`Jd6}$*flr3kH2gBkr#gbG`}!BO(*GQX+mx)cK5~}Q|J!_`RV8OM zOl-6sYPp)p0pSUS1vHssKCj_is*4fK**r(EIcMky_p>(_Lpbcs8AeCAITPgwHy1!S z!p-?ed$>=wKDqj2>XWBWmgba{-4k<_g+16@V8OwwGST>kuHYhSso`kSHm~9ntZr}Z z&pkLHOYnWSCarBt6!-10HQXzT+O5OVcx2M6gO(gyQ?G_vrU%&}5&FEWDbUk+fVK~F zWk`XZ#_riS87doH@T%xYb^We#h?f_HX_nEJhYGYjlC4@=9?5cGoc5Tb<)0Ycxu*Wi zdyzhC^3_mB8FacD^KuEAdbHVZ;wJ>^ePr7OQQsuT&k?vTnJ%<-+XHjC!CE&yG}_YD zs^>MvxQliRvAJLvNHWfOOEbRjrK@V8?*1`j;GM-pHp_29#?|sRdpS%u44ZIcXux2b;$vP?yXp9tI9d!_+2_o; zRc_?Feyn46wRjTMFljZt46jqOi18j^mO>bJ1-v51*7cZz>u!P84h*j7vvv6ha=1$? zk|dwx2xu!eEyk1?hZ1pe84W9<_bK9w=4cL`IyYK} zua1r;ZPPVuA_ed_p$h|E;SILghFWw(SXFG}C#%x!7pH?Z@wN1CmN>Kvte?_h8+2IW z^w3U{-l_HWcK9fZs>{H*E3u@usQL)srPzif)i`awwL^+uoc2XNwbRx`oAY{>hZLXk zkm6H2r1Xa}3>VaeV8b-M0>^56SIEj`FdU zlvH(}<~;GtaOa7)IZA7Ke20~jbYH*^sA;w%oXMor>VF2~AiDKzmgXSXL|yi2uU=nM zS|fQ1Jqb34Q?9fUwA+q)(vj5Tw3?Qt<-Kh2l$@R{^K0$>1FLvZ5k2#%uFSL~Y&V{R zC66XNN>ojkW_b!ac~Q$qwoJl#;N_h>->H>^SU8^+d!?oJCF>tk@7UMKGMQH^#%kqB z``{Mz@p``DwLJB})$wrDaF3Tu!p%NGh4ZO})@H3~``x%$`c!k%rj|>;N|-8QT{>^v6LF!bddBRh zh3%+$p31 zk0N-RI4jG))p;aY&)A)~M-%l(*KgBsYk%OhF*X~L8%|ZNrirmpxMzHbmI1ysvV9A2 zj|7%yY%3I1T=fh=^xUbD52LdN6#BSQ=9;%~`4LJ91TDbek3%GfqK!d3bS= z%yoDbB9m0>&%_{XS(>Mkb*R;8EDzN(pXH%iMn{Hf*7A};^KQ|lE$y$R(nEY(<&nSU zA)$D@B-lE0V5IJ0W0|6JSt%dtre(EiG&PSpGkvqBXBkDiyj#7boqelS6|0wY)idF0 zYQTmH)_@fis{t!2l&6*DT{Bf!HA~@lSx}6(x_ysVSFdlmdOCb#^>p}pNS~|m zbH1m`w*mBYnR6n}a`kli9+aLg-|Fq@@@*SEUA{HnCAb(d}Ow)hQ8I9r~X{J=IAbcP!s?xyQdn_4uDD{MjX+hTYTS-!^*uYlF9~vy9!W z$E(M`ZTR;aJ^tr%Pmh0X^!T4CJ^pQ@$GVtj;m7OkF8X5#czRM!jq_=;9&xGgN_UC`bLB?X&q zJ1;$STgUC8+j?&g-FBLK=(cm!L${r<9=h$Ub?b}hb6vdOG5w#`LaFyD%wNlB=SL$n zIi96YUn!#HobzeuK`=5wTVI?1s2NK-a4L+>nF;#*P@GSm33`+~98bnG1=<=hKcBzE zL@(yfrwjIQJd>bpw)o$CjvmI++Z@BX`qYpvPU)jD!O<83_zC$ieg1+{r?XP+`MNNg zPxA|AwAF(=52rcNLM>J8Lf)66NlBO0S~UT>GEO(I)M@aRcQP~R%!@Lj*IOrO<6hew zl*?=@ZKXL`(=yL0_ey%ta%?a459X2R$`Z zA9%DYDfMkr&q!D*&3k9kcR8u|a2zT_S3QfLhJM6H&cwHRE6b94$~l%nek=RBJP)BE zr>PRW6RlNBXBY0Bf?12TJQ#}dXDn)EHnb(PBst38`mi4i6k**^Kfe&~Cob#t%st~6 z6MHl!HI3_gJVo_7nozutr4qf4S5*k}6-lQhh0X#i6WO9JMX%q+J&LVN{EoSZ=>py8 z*lW@dTungz+@EKQU8i!`rU zL#$O4nx(7}vsRuo=jb1kCJAeZweqCN5&xL9*v(gLtJMskf(l^k z>t;$XdwZ4B?{ikp`dFiHQ5o@yc&9d4i2G{m23GlMJclV?Ep(=6D!fX>DcVQiI1FB6 za7eP8p9;VerFr@kBW=%bNt8ZBklRYrpmg6&o88i;)C*ddyX)P-fma%+(+~l4`^&wyEb5+j#i1*r+I1xy>r{uR*s7uLP?eVku75%D<95Y#K_+ zqtvdXI@%jb%A;~zNp;f;ceM)Wb3m)2B}xlL`Ip)+hJS2Q$ocXNHF>#={u$J1ok3r2)GI9S z3S7*~8l15?@VIEs6~2U?IjS8yoDmGcE0S^kJL4eSE6PfKa__XK6WS|``VJ4v?oRJ? z3tqviGMSANSywV^yee_cGOA*iX_(ihdxyr|!8~b+Sq=9Ap~L5jL1Akr3betmTahj0 zoHZZ~)vK(0<#44UmlL00zf`=!J;RcDkE3}UhtekvT$v`K$yCA>${&Dq7E;YO@$SD) zVL~kjN9c%Z%QU;RpmimEH!71_W;uWs(Ngc$P+R@R(f-w3l-lXh$lIydqS5u0uYm4Y z4#5_Qj+0juTd*^NI|nj10&T{5MTS&ua`tdrlnGnb)hPCGR}^<19Ki^+nDenQ+Yep* zXjdGZlhniVK{Jn#)nf7x@UItJ{pWaNS&sx*ha*ak3msi^?Cgx3&97z-To=K%) zgtQB)tF03F7p}63`O~t?$W8imsroiI&0LR6BmjK4lkvV ztuu)G-)gFCwcKsB+-=1tnNA-sazq}PbcV#}F^wzCou2N_l_oTt5fg5!goo9LhuMhR zZq#iy>bBbCbYfG?8DcvIT!(pgJ>=~*qh7vO*HCL>(mbojgHAPlljioQ`b(rdR4>LC*y@ND|1Q~rab~I zG!o^vJZVT{rb(W}==pz|-s<)WRHv$G9M7me!D5LJED`m6siM-k++mT*6Q&_ronI&#!qopt4h*@3VXwf%K&_>F!KEe3&YN{kS;i_rq zTy4DZBW=m8EUW>Bk94D+i&hg&L{oX)f_#dYIT)kBHkF!5Mp8zA43A85${i{;okrFE zltw##$&E*|Rbf0yn*pXrs{v{H z*mRU$q*ZAWsMdhmA{?YvLeoFEPN$QpzVv9yQau!6Nh_J6F}c-`bcWAci$$hTb&Sq( z1xEGIh{SP#DTKdJQjJghNhK|9NZtC;l$vrrn_Xt~TzRvH&(nSr=*}z?Pi^$Lkn7MA z)J~7x96??5E}ARIWz|EISPrWmT-q(k_qfyQq3vB<5xd+$-R__scaVo)i(FRjV)xJ! zYo`;P(tNGn(`1~>%I!T(y}7K!dm2bu8V%q1(VdWLzQYNA^_XstGPxM7v>&6pJ!*Y+ z+)PYIk?z`*q*m+m$)!${Vg4mkVWTu_hQ<2ET74r$Dhy3wl1iz^X#ENQ%oj4*asI)d z4kQ=ogrp%T-Jq$DAuy`F@RX3CZD;96f&%%U>_m>?g8m)C2n;4>BBuDQ$j4m9Z&&$)@-T=*A&?txJI+}_=uL058qUPdAmp7L_VzkM;hNxd`A}1Pa&;*QX#Z5*V6)2S@i>xNzTIr$jEL;{oLr?Xljj&WrqjydIpk@6w5Qp!&Z(i& zbfo$Hp5`-DcR!2OL}1e;rJVWb>`d;e!OuN=6@AY6&+TkevF6&SRAgHE-t2)wyg4=G zv|eb1U`LsklYRHy*LhimBGNxm=M9;?>vgKkm zoG=@Qlk_f7BS(3V2Wqt46zy=`i21r^?QubCZTxy>Tq7h(!@a#dTI1)I8L#2Xm>HwF zYnU0W`63w?p~eo8QRPM~&baxQ&2%xAqBV8#G2=CR5wS+(Vm8r*JEJz$eOn`|CN{^6 zRouDdJcpL8qRi=ds+bL4FU-0@B-OfX8$A|=GaXGO-_dOHolPa* z)s%I2Q`S9AS@$+&y{H*$dSRrA)u%QiaLv&?`7X?aoro88p z;}ZI|$XwzrrU?U&z$1Pa-oK!;l7Lye@CNn*NjL_HbNs>Q!UVl)Kv2`A~oCgjCf5oJTp?0txlGwHQan; zwf71d%r`dMFRemi@up&pA6|*mY)i7nYVZOiE~-`Bdb0(SSj`no;_!xJwAQbg8j*<2 z)`&G$Q#I1)wNvV^@e8Otbjru*r9WO@NUIrm*&{7_X{hD;#ino7&nW?ZbgVuJx{{Z1 z*EtUynOEat|M@vaSKFw}F>aWbn9Mb9rtZy!Ux~TsbIo?=j+0slq`s{-$5J;DZDC$o z2No(d5tACW**cntW@eb?7c-iOxU>0jL1~Zjy3>n(?V$-*%`&Py>FjUdq3kQ2Ew=t> z!s}O}f|pW>>reQ;(q*MBJn8$V^&fn{()li<^$P0!oB!ilu5L;Ae|-Y2j?!L;`F!;M zI$tdG`#-Mdf#{Z<>&ct&*VbpuA=idRxwaDkz4u&3CC2nu-PsjehK&rjToLd}M-w&K zs#c>l)k0MadcCZv!Gd|j4n2%^u%&O-WausXmCcWnJkx2u1z3{7ktJ`M9PxRku~Q{7 zU1@d%=;cbYBSFtJni~;%CBbECrg?d$(e$l=S1NNFDS9QO*5mGMnVKEZc{!4w!zj%+ zo#sbgen~Yyn(|Aj`4N(DN^=x~P~94_LfH|U~wCW$yL(Tx?m zj8M!Z)GH>99e!GSOuJJg^Slee(%4wtrBlkD-oU_D=xFUMy*p6HM-^vfeu%Q7-AL*l z4P`!{)AH?{-c+2y=w`ifhZ-JiDu3j?xs~*uWiB_7tvkb@;xy8NOvCyuW}=X!54&3H zK3;#;RU!@QsYEzhdx5i9*7Lb)Ro~&w^z1H^TS(jPFXU$-^v%NzyD8$qN}rqltK_}CZ+dmQCPyBxQorQRmT{ zx*9m){#PsEdMmZ&(j3@fPPfh@__-#Xj1|VS!@*#%<|?{5rM@-KcO$R#0o=xKOyh;v zRAwYMk=`V4tpa!hpwSEsr1SJvZmbYEHIUz$jey)5>XB1J%cK9D)4yK7TB2A?-#~(4A3Cb#z-Y z>k`!m*t|m*M(H~}&aC8vZLwsQz6Rza(wm}wNezVHPa2PR z`9#Xm@(w>K*6FACx|kn}w)sRNiN5OVBNphk)4PWGvwSrq`4*fbs#;b{BvRC6Aw zxg^w7M&nWD(xp05r_EZ&oJWJh7RGY1j&`Tw?x&KOg-LpCKbdlxrZTPrKORk{oo4jG z^|6Jtaj<8&*U39h7xabW6RARy9u2x062BkfC?N$c94i!DJtBwm7Npr+rr_#+S)9nZ z3YBr4#hLs<-mKJ_DFx^0!-Y{-3aZCN4o?9^11zQ{bwl`lbDyJT6r>aiMy~>x%DD zfC<@}OH64q*H+#jklG}_-=*%jbFD=3OL^(Ap(~krk(5g)$K=JNbnSK9B4xK;BQJH? zmRG*m7gzcY-Q}y&B~~>)eJ9iO(4zn}k&($6%fyV5IP7?Bstg{;6ppE>2}|J(3k)w( zwD%l+IdcuoI}TFIp~_PYNKN1-csmfcPio}h^xk48g9;vQ&|kldE%0erj5K6eR!!M9 z42g}zmgvf!kEBgf@#r?(>Xpra;x0|kHEzL~9X%PKJxg3A;}H@4HBmB-L1RhUq-n|0 z!6xGA##pI;BDa|~8{|*^8C7D}Tu!QSl>Co7fBMieZHr+x8>uuNP|>3wdV}dQQEDD7hhTr%tlMN=Ru*3yp#DcJwBHbq-eRjPK&KotKqfp44%30 zVhQ>{a$!ytmDlNX~BR|VKri-{P0gj?%3-X@wQua^J1eK>CoLxHp}~_(qnt| zWY_4NIEbzqYA;W938pBc}Y?u=PA? zBo0qCsSdgkW9;Jbf0d8rlyAhlri$V$gXKQTc~PV7@60oXMq{gz<22Zc`yW-Z;r%-5 z8u*V)DFt=cR5J->;h%=OSyNYio;;)7L^Bh#Ra|Q|SOTg=t17wlXnkw@tsM<&Xb(sC z7}{|MxGC#jBpxB~4pN>YWEPjK8Kjn)pic~WjiF)TtE~)k;_8Yb`&1dHI!CmKd8)0b z+Q`ao;4_Mm*lQ>a{^d@2ZPwSLq5fJfSygYJ$U-?q)$Y7CVP6cHf3scnNJBL)tUgy+ zwpzEOmWx)^+eNadQEz<0);K8U`RrW+mK!KSJe^;mZX8uHiRfxc^ThVrpkTUuuR#0o zH#(LFm$X8;PFe#4!+nOyzvSQ_$Wozr0*oyA$OGDK|KCfO} zJFnHt>*)2}T|H1Ii4C>&HG{SF@KBu$2G`a(EQ15b)y`sQ!;qf=&-2jyn_q_@Ghb>n z8^hMY&M_UG31T(KL)X<4lbn@=$R?SVOQxv|(N!SNPcW*+G^j|&hv-(8cPBM3Ze|SH z%vi>hwOt*dPeL1=zH@$}nwG`LJ2Nt%?Xd@C3J%v0-{fLrwCTG4RnN>;+10vAJ1re) z`Z}Ob(%VYpY_&4;>0}~7As!V;(|)v~le)k{GCkoK5%}gH56J6Gj(i>Xjw+dQqJfZbWqq3uUi1W4uL1VVY(4EA*gzV$4tG zxp}@7YeinNrm~v0JOc2E4Us-%=4oKe@8@_Ed%8bVUy5i|pMNkrQM%`g@gzO1lJ`tQ z?g{glZ8lC4YyEmy(A_82msdL(!;C*#nvScF{Q0*_!+3<|tOsCA_ni_&PR>iX(XEYfWK8ek``7 zhd<;;)gv`w2$nYBP*zfR+S#OicN6wJp08o<^%$y8y*JDcJzBkF7OLg(vfz*7>_l{W z5k8sTnfS7$#ZIKKBvaUl*lNY@PQ)J|m2(?mNF zeSjzTcOt%YxI2-+5FQ!tR1%Xra{%endP#nl=l_-VZp)1wIl8bP#TR|i)fcjO(4k_k zRH}p3T`FlrmEF7l=wMLfl0=K-qPa+^G&}Zl&HX&t{{eXdGO-rR9!I#u1t5`UBoc{4 z{x3>Ek?{W)$t%3C^1n&Gntg9-I%J2Pt*I=%B0CQ*-)^tSXcnbmM$StaJRnTY?v#-Z zf^kqm9>E<{bVRzJDjs^S`~4vwiiV@5h+$|dt}DX^USRvV(~;l=PvmT~-LpT0CiJG6 zfY0|IY>A{zvltv+o}Gsh6FWG&eZ;dJE{KI!HANDT^!`8+_A)z9N21=nzoXS%3T%w< z^amYy%xgGuz)ZC-$$XxZR&wS}oY5m2F(XMp@Ztwzu0WBJ~4& zlqZWT_{m~!?lp77WRKhBqT5CjN$Fa`m+LRy?cqC$1QCHfjo&CnHe7k94v39ZM3d_L zodw$4jKs^i@pV}`DQmWTV0Yr*i_7E(`!~5F^WL}3;mK9F@ta*=aSM2%{G`IZ2*YJn z=UIoHkuzChMxk-|rmvU%YO8UudFGc8Q3SHV#$97v+;VDAd^fFYfbS-!_xdbi*B%Fd z!y8aFJ>!m7+aKx%&sWXdFCH{22J+7aS^&N_^~;#%l>6B%=F_T&-#i9>7`ug_fdzDq zThRPj-{a|Eg5$@Ue!-oIeU|vjPWZ=P|yQWTIi}Ll{;Q)t+dC zH`nYWyCqJ4O%#tLiMsgk;lnMzZZGKZ#t^|J-Pbju>Q)j$7J$jas$R@TqYrqlOr%e! zg7qU^|IX=SJ9?jB`Yu~@35TkJU(-}N?_E()2RV<$bv=kD$4GRJIdAUM0O3$39)hvr z$pzgUwp@D1jA}g2nJnA`_6{jnZK`FBmvjh@8y5EnOFw?xk^37-Hu-zJz(c6xInC?p zcMMGaMOlU4WFi9CJ-AlQ_$Rtzv;7O=Bl8=EKQ(yFX8vum*-Wr5pfOv(zKy}_H!NWf z3yRkX!|Y%Gro09G`<9GIE&^}-YZ^9~wkN!1Ies!3Et3iAL|eg3femH>@5VEiVU$+k z_$Fr?0`9IBYDCc{O$12}MhFiF*)GDZA-pBd2ffNle>U#suX|?20lwhDP))b~eF#Uwkl1Ws@)d)W&U>nv zXM9QaJ!jr0F8t}*n?9*4=`RtSZ9i9-R^js_z0U^}6FV7CpVek_b$?F+&VBs)2u+uH zxS@&VC(U<|(A_DJ2CshzQK#Oy_T~q)Ol+uBN*Hy%G`>uvACduwNE_41h6ZVXd1DrBeC)Q66&S8Cjd#bjabZxOk#sa;Sk9~3-Z7bNyynJ`&{lMfX10>W(;q-(2ok*exE%%La=k{h|{Q_Y2($TM=IYLKG9P9QGXGd^vjucY6P@fd!+9#A!Wg zgX5_JAc@W&aS$9S_)DSTyacJ52;8?Md0+86W0AyvOA?Ou6N*J23JI6KnD_%e6cTra z5)vO0d9jM9iknrVKKmLw(4Ry7d89v&_2-HHJk_6X)hA+k$ztFM8TF}4g*ROkR+p-$OV!h*>giJT zbg6o}RDE5lzAjZ?mkKMOELC5Zs;^7c*QM&~QuTGI`npuuZODx91h@M1rDFNc2qED8 z_jXg$M%&L(+J5kr3C4!6INk{Aa)9iAPmdNd-3DXrda--Jrpy6c=zXt#GKtU+=+W^U z)*t#t5On<$gYLxFU(gLg14`I&NjE(5%^~Q9M`galW8aFB&M3>!D9aG9r{{G$Ld1j; z=6hM>aTLa~goV){VWF25%;0xa*5l~Nk3E_8xNPSmqrOKcM%uS!9><4e8yxq_wm&|$ zU}f49qfJlIzfe7%_%f~g6^uyB$(lA`1l&B;u*$k$G)C!H^F(750U6Hj{14jPH88_D zFk+dzA0Ic^lewSp1adz<&ms&m-oxq#ss}iJnS60SA`yNpX(#8vc)LAt^fMBP)Qt4s z6x4+|E>eEb$9y&`Qu7wH8)lky{n9%mrHsD#lJ#HzcCp&x$t7Pw1;g_<1sy9{Sz0<= zB$=SW@8+v|NjA9>VG(0%>RMG6fnU2X($kIDg6sLxb%0F%e*Rq00ftMV1^9z+ZJGQd z>&OM^r}OtEtiHoNRPqGLOZ%z5``}(J$}wp8V-ohd**?QqnZqt|9{V_1{C#xg28}GF zRT;o=Vo~7`w`8>|I|TY3AMzK(Un)0lWqwvyUu}w{m{xZ%Q@%pWL%5y1LjSoVJxo^| zu$yXGfKjrtw@gB#;YJkwInM}NA`6DG)&edE8(6q^o($f0w<1Mc;&i=%A%nRw6v*CR z7RebPi;Q>Wq;6sRbp>hHI-dT?doo?bI}QwDje8hgR1sGb2otz|$znU0?!^GhMiYbY zbVmeOCLbI)7X=KRE-E}7B3j5nwSaIi_)x+${A<0z!1ZFz zq2+8BWpX_yIXU@Gz$NnGUled^zAZ=HH`$JKumht|Y$D7on8M{JWcM$>h<*meFTW@X ziG>Hke2OHA0FzBktSL-1)w@Yk@y^PN0bKCLS|T!@Rqr;t`ERR1|Fb(jiA4&S<6(iB zKmRJrf(azY96skbx)craSbgJ5wW+XC6XFFa(}p~3d$kgC;R#_7ws?$dl9)sg2E74Q ztr2NQvMVF>_7S$t$9f_7K=jOf_ll|jin|+L3*&;~)B!v;*&5fvXfC#aC$%{H9b@eYl39*GJ;BB=}~zD zYB5PfT1GNNP7V*qq@#ysDicAqTqKB`%=FzN5eb!xLxO2p$PhUVJwQpp04sackbj<7 z3qJ-*$>#t<>@gtILl`D!2?5%r9buKI13=AOeBZtZEwOoA{PHzTndWh$KGTuH+Y{Or zddVfWu5Wn@Zop4zOKZXVE%1SW@9w0yg`|-puD$v%bXo{OjF?qyQAPID|2WFPu)^zu zAHJ>Gog-+43dtCF3~;GSjF~1bBZ?kSHW1|5Gu$h7d4gkK{Sw}izyg1P2GL%@YXr47 zYKP-qFKJcYw5VsT!RJH%GCIAiv&{;v@de*_HQh=pkXb_HBT7xDD5;0=<*&jg*u7t< zxHk8)nVd`4P2Bo0MOyvhr*{ZQEQ21%6i<>RianlUu~tp^B1-_%`FMG^!z~x6CF3QW zcbD~wGaWBE80PY^TC5*n$BRC~m$+Ov;hRYegX%DSiZC3@uKim}E(wg)&2EVxJ4nRw zi4>UM$59Z!`crOLPq4Y}_Xj;}rX7)M4nj&rfWI58g3ONJ5agoG6^xCPj`ViqU57kb zkq&Bz%a91Du2|P8DK526Ie^YLoXA5^Fi+?loqSQ~RF!g21QZe>oR+sBDHo37+=fRUU3fliZ%GTc%LYdZxZt$f=KXDy zb6u}@6#dOr+BKviqrB)K_X|#|scL0~0|g(M^FAbRl0Y$U-q8i*$>tT0D|0xF&F48O zhwTYI(o-5CRXgDtekaaJDucd;Zw+I{5BXYhnzeEL2@R*E%8h)UOmIfv+ ztkDKA3}|o);$u~E5VYGcjY;R&k+s3^#KS#%1$|GKx#(x_G_se>8et_fdw7*}*4Q$r zjDgiW&DWoQ9bLy&K{Rwz-v{@Yygo^_JfxG3tWgB^t&{eWYr+obWT!Rl;IKO_PE$J4 zo?^MKu@&9IQwcxGUj+^q>-h@HHyv&;0)7|u6d&Yc^OpgVte{T8T<|c(reyj9e4(Lz zVyojk+@XT9dqx2!52<`R@?iF?iEn~C(x2gS_A=S-MpbR;csgkqRY=={GxG2t2|$p$edp$reI06!eVZ|DU_aN2zdt7@;b~S8E%E*?q&PP$_#xSc^jJU0{Ht^7*4eB&J zX}F<=B-le%9^_0B0r;gNjTky991xmF%252nHwhG}9&cgN;Y<``C8kf{I72jEUl7uw zDZf7S<{%eQ289w;KERh|8-Y2ugiuU;u&;dHMX+j!2vsvLLW`*vG1=UUa5eb=EoYww ziixEWa;AhqGHY9PMU*s4r| zn3GAUcxr0q$ZTp#G&fjlV#cu5YHwi8}TuX*~G41esNKwOs1n!XM;?l%OP4|+fvIR8WSBRTRS zuo!v~V`ff3IrtPcAt<{dXG%pKWaIJ?7n{A^;W0HPK`clFil`#|OB!G1~DSm zk;kzT!;|8&+hh?`Y8Q|64Z?lIO<({iK^A~tS1@Jei3@&+Z<^;40-EM<3Q_vzz+Xaf zq6v99sOIZ~ncBpNa%ynq(57Yrk12BCNT+5Bk110?+>q{LR3X^)i!_(-OnL&Bw4ZER zfJ<5md}@zbEffhW9d!}$3j1xk7Ad-E2uPqM}B*cyc%lYl$ zB_%<`Vl3#e2o?MJ^GH;R4n#PQ<_yJ{NlPWsRESjsrayr zsSNJ2q%uK^8CBz;14a9*!$<=vL!xbn>&BqmbP8a!o8q^qIliLBlz$IB7otyguZwH< zoto_8`Z+&GsTa=`kwzozXpKj(R7QqwD$Y(Ute$fwg_w8a^FEzS zjpsLST_s(`YM({2~jo})O&za<0j3y8IRF^Q^EpZam)6jRun%PNskkukd26~vx z#|<9AipNHtG%vSUI4~GLe&h-ucKC}QrIXbw6~=@4cgTqX#ir3kUriDK(|adCrVn@< zzJA)Rsh5~bg!q0H->eF1qBs<$xO?85#reda@AT)n_=G+{rXcv|(J*KIzuErWk!5W9p>u+iHP zz#K+tLK=eC~n4*+QU7lblC{p^dPG?3-+)IUa|CgkB<&Ro3C$c`kaJ`GG9Lr`4%N->_0*m19>cw{1K7O z`cU@VP zcu^}+m_9?npao$maSZgT;xM$xC~J%Z#~$^c^mrVe+Yo$4>>3i+DBK4KW;9u7RE7>L zT@2u})hwQmQaQYPHiyajyW6y4?y00*D z)5v7_7jd%7fY<{Z+d^i6OG(TWJ>WNTaDWlj*`R{dFRmW+rK_tTVVn?9)n5V<5i69j zrRzz&O;4M&F>N7}iB>|{m6Tdj0-?-$)kH$6$Q9Oh zzsoKKQf=YQg7VeXI*Um|@{87hm!K7oRs66~c_`A$jR} zm#oPcr0M3UTSfC9w|5@=y3ly(dt3VzMFK*%C0I}n6{I8!dSfC3#2^bQrJw`o0lt{7 z4`ShH2Ss3;2T21zG&LuOuoFpWOiZqAw>3n8%b&JtXa1rtO@}7z-Tqa3Qyd)QLL{pG zp;G}Q2!RMVU8L&uPIIc>;H01$;tGmR*gr&If&%39h?Hah@U2sy6v!>_3Y6!FgagOk zDX$HL<`BURa+njOFaV6uH@=y+o7bzAa}cKj?$B2PyJMSwCchofOK|rg1nl$hV)e_h zk2*yxU!vVen2o-Lt;T<$GcbPrM#p`Do8Nl4fVhAC+c_5BIqa?_#s}8<2u+*(pCHeE zzP-JsnuoN(6c1r)f#Gstfj_zS$(f97Fi%*E4I^-U5Od!`W1r~8VxA8)NsFGMyH+!V z73a$lyhMeRVU=P@DQtcL@5A@9W0Px6nL)(vMX5|$7(yC@qJ3k}prSu3<7@;4Bpt$XbbHnC0o&d+fud+YmIipg4(B?!N~OnUjwAUYTQ0|| zE>B4Ql?$ANe&l>x(&F0IR1FkPhvP)2vp_9mKvAlK;`Z~%B5F;I&4!bSE{KI_?oa}3 zB*L~JbRq(xxd;Bxixcbv7JhijoFxq%kX@kBy`o3K$y-Qost4MyZGr%6BMZ+7w&15u zqr9vT-+zW_-d#R2inTBzR7dS0nY*!})-CLjK2V&i?iZ~G7ydxg!i9Co-}8d#Hx-RV zfL>D+XJDao9hlTrnVo~uP6kDTY**u$knu&u7M22U@fK)w-V9eD#ZVM)FpA@*P+*0{ zBI*ufP3-+*htM!>oL@*-rSp5mA-wG9uV>{f68a7!cy&&XMi%*0GZssjvxQ{!uSW)a zA->Qi@J}x*m%zB^IKNkmf=I*sAVk8pD^`uuBRc0~@v&$c#y!q|^IKz`#=)H%o5rl* zsD8efV`=-8=`*fCG=_}%=#UL5ZK~n86b$xyzRV44otxv9Hb@)=!Ni-UTGBsNMdOLY zYg%#h#XQRZudW0ePRJv?-T8)|!PWxat<>l0rA}jD*kt((!WGHQBgk@d-*eQgKuKws1xlhe`#?!)8VX9XLPWHX6sCicuEU045d-GN_ny(y zVRk6l+V+PQx(-8xks`N9ybyrj;VPs7Hn#|Sf*ZH4f-tqEsqW7dc$W;jLV>sqdt`~( zLi+g$&Y@DGpoF20BneiXLRNbeO_Q^Glr-Br0No-ofbqgqxI{QKCm1lm z!fD2N;6-BZpb^7i$Z~s}77XC^1#!yB!jtOHz|ykA;BB0?iaxz?g7(zgP9)<&&yA8T z$-p7pRxG7&2D0l|W?|R6bjedBVW|W^Ltz>4bjlj+VVKWF+H6XCN`~e}V2{K8PFjFH zRGEK0tkw4W1;K@A52c1AhSf*X(NYluL}^4T}s;)?DJ-y1i0%H!C<#-ZS@VNqZ`sfs1i_@fgsR0OiI=} zu}e)E616a)w$&Ao~YWyk}{PO;vqeBg`N~ z{d;36Q>Fn+I=KCFrW(`W$QQ+itQh=yDjsu|r;o|0;t(zrsR0E1NJ?@E$7>r=CP_G+ zx3u6VN9+LN8zg#^9G<+j^F2MZ`J6fr+k($&OL>)Y+nI~tnp**n5ZEf$}nW4ruE$6`?z z^*TDX%R{fASp1KjYjIJpW4uIT(&G^y8*bO@7|;5c^a$)~!_EHf9k=x3@jz%;q8*M0 zcKaOL;|=`n@pFt&WOg}Q>WdeFO!{FOLu{7+ zw54B8TgvYo%F1ztS9VPPh)!q2?S45qwA=XvaqKKUCx>=@Pi(o`JCWM97*{9GO~0tu z37*_C^Tq30Hr%f7i7h94CoS{kq-Fe{4D5b98MfrxGTu&XdD}Z_k+&y!fyu0I%lJGw zZfUoZmVR`;i)H(tw$QhX!xQI`Sn{#go!%(|a$5B|Z5damcy)8j*X`?AlI!yYoL4Sy{X;Jz25_8W@Ui}#c1RTEI@NyHR9SmG zlgR;Y5{c#|o?8g>T%3Lgy1+(o>Gvg(mlu~GoGqEp5t(fpJ{ZB<@WCM7h7ZPZiAVML zo=s;VT?Zn7YAyYNC7VD&f6oyXKFZB@BIg;KcGTZRnY<(0$Wg}cBBByHQPsw2ZyktW ze_pAFi_Vp;cH{jXT8Y@{47F<|*nCghJ0j8cqXq8ubn>KXc2iLl=VY>!?Kul0Mx6gA zd_31nZ4}P-5>dj%lOYpX&JK~XoEidI&I>gwQs{u6QpUHCC&J?)A>!dg%Al;1d&t4f z`+N{agKXlN*<2IC8`{kImK69y?AWs&CUMB1-DY8lC=X`Cav>TV^6SlK3YJXIRFV`G zKwflnAOcRg0M(Mxs~=x)E^=~A2fByn)sO&$gxL7gF=+gl7e!ssUDFWsOFGMbaA z!~p>@V_1A4BNWsXGtMz0^dMPJ56UX(p|XY^B&%1Ya|+`AfJaSmQYacc4t+vrgPuVR zz1a~8ye8dFf01V>#TIzgVBJ(OH`36GCxyh>*)6kn;>&4~(=I$I67qL1h#+SBmhOGJ z`<3Bq=kHtM`(;M=Qz*9k%aZ?HBepwUbHO(*UD6Tjm>+Tf3#>-?#Ul`Z>F$I3;}DPV zSaiQ|WpZ-|pU?4%e$6PbRo!3`)5$-)<{oiys{wdYO9LndlT5m?)MN_Ihd>`R`e$&)tQzigaO59MKF*z2mhGku^UGiKsOk_ba-k)Nv2uKj*=& z@R|V~FJ?TS%FH)r<_&Hlm&xgUXxuH)*}Tx*X9=QlhPM9j4UR~@zkS&~<{GDsMgrNi zIspQwP}R*uIIp*Oy*6K)3EnHUaocK1PDB=#majHk)mo*dy@V8$$|wcEttAAmqlDN^ zi4u-pu^cQG<%qjyIVNVI0K`E>FzOXGH4+eGKDC7c`?gE4B+3$uPj0#H0_K|IZ1cd) z66LIS#i6D`T`+jyz3YDaI6VFfu09e;bCkmEz`cj4(Lwb0BdX=Em-sK5y=nRrK0(OK zK$8i9AV@tlCl6vGQW791N`pI+IglsBnh#G3Dh7V7F>)Jv4Zwf8`2xfXPaF=Ru-PFb zIq-O=DYVrE9n#0IAZR`}UhZE$c~Qzg;Fw3rzqq&>^pk@t_`g(0f?dz?_!s`Vce?1; z2+K^sV&rVLeyTFg=QP^FoW$Z3zvkRC_(2b-fC0q_^HLa(wpJv_30$p_6+g2^U-!r# z@6Ffbq($SCU{G{kX3heKFIIB=U++jkU#T_NjUl!MBCT-SL0u39hCriii91?J)dh2q z<`s<+LT@21=%tX`+E0j|s&Ca4>caUFj~brWOS~jq&8~J^dZMOo6xN2`?5JTBA-87< zq{j3ek&&ZuTM%e$3*(mw#Rl&>)4)?Ow@ZemxtXuG^mc8A$5<`WG@;iOCkJ%`Cr9wm zD1kPy8$LNTpawZF{u_#l>B=vPp9#vqk0i%;puz%RBy+2pfrwMz!o_vNLb9l|5n=7H zv1#=%@M48Cuo&xAM=fclbd{O#ZN+xDj*>fq&ccI4tbeZjn0-s!Mvk3~ehdzw2^RYI zfO?ws5|=o3JY=0<5y`XOOXNu@$r)iuHu42jS6#4@>wV6x=&qCwjZwALhT1agD3wt5 zQjTaVr`B^+MNEb)DM`m@7E zd=0m#DdMi<$L8tqhcz}oXtc%Tzh2>b{N`Y?MzE||0mcx31tKSI_%@US(?jj<*E#tk zyPufY?+~+UvPExs5Jg9INRD6XesY^JchT4Uja5E`#W_6gGxblTYve@{uD0w!A2 zB;m=#NBJa3tYiYE+9p_8?Sx|m39;fHGuHI@S_X1PMqPr~e2L>FU+vXoBUq+MXUm`z zbtr@VQZMijE^h`jF|;?>g)(aL{>?z}^2HtKNd}EQn#!4VZ9=eTuDi0XivWerUuDnW zX;8qq3qyIjz!O_{_%TP62Nc}@BGrzAlTFz*A3x#x&Hr-TS^QdiBNazxtz@S6iy4%Ua8`_QtPHc{3L++-8zN7X? zygjWu+9|;2P_9d2g1SQzBf*LXQv<#>fNa7mX={p5_RXMok#0-G zhefq4p&UT71ssA{7MXLRcdtC9x{x2q)L9ZB@S{=t3l_iyHQKRc(b2dO#qR=??3yog zqmwTh3=Jq-1wD<%5(=m65(uB=mO22#w>S#!F0_Kdio>e3wJ-uywsadXZ7i=a5$|zH z8Jej*Z~_6p6kir8pw0dWNcQ|LYI%(X5zAxA^M)4if}HN?T2NygU>eyooDdYT+T_#P z1W46Vdtl6p18$B5z}trdkgZJuTppxuzB8n)gP(EMtlk&=90hJuaJaX! z7_@j9P&zg$!7v{gqqjkLN{e3Y?^D4ho6Y2vS{>`!0!=2ek*HWF)ue*r-5fDEO}2jh zZ9%#wdbI~*i$eOWHT@!&Yc1*3Mz0d z^Dj|k(=Q?N*_UDR$(Nx^jjtfcMwW@sW?rH(C!RpdeiLA8+9kA}bpo!JiG)vY93j`9w>oj_Hz5vy{k~W%qdR z;mtv|q&r}-qD!#3pi2T{J!dtP_GI?7&e8VV&Zx2po?*|6S)LQLO!bT`o9`JmpY#?w zpZOL|IsI*_Y_PWzWr83hG^IgKBSk`vv*bcXqlH6`)Dj}YYB7-^i^*x?3xSbQbvL9T zI`Z_H{3y};%2`N~jD;2_8M2fq89^pka%?VLGJGLoGJGy)GPEIVmXozT^%KIL^bwy; z_Xsa1dP22K@ko$O?g-DPwMOIu4Nhul6)Qtlra${wrwT~ntUn>R52HGTrnAQ0%JCoB>8BwDf0O!sO$+T3Dk^~ z2y;pbf^1GoOg1S6Dw~x8Q%->bS&$YP2LoH0iO$gPz{8(8R~do)qjK^f9;C(smSlWBbTipL!C0sC-9lVJTw z=jBB19&}!>(-GVIs#-hm$iRut+43ZplP7=4IZ)w(LCoh`>Fd$SNck91YhT^RBzzoC zw<(iHg99m71P@Y92o9#)j1p+X*R?|#16(^8Md(HF4$Vr1d)IIiD1gbY$a7FmMIM$p zh6E_Tqn&Y7GT0Gn*(+eVNL45`{0fW`p&qN8haBuec@70w-U@9^7U9Za$a7KNLIH-q z!d1vY)d{ZyNvY}}m$`>f1Ve16vuF=xAE2z^-IUMfw4*QNX#{6-!oh>f&bis`0ju3% zbV@W_R=SW%d4{+|xxGHcs>L3}Jo_pZN06Fyp%u1_9ZJ;HfMV!Gd`WLc*_{<4}bOUb`t0-@Pl_|?+ z1+4>?#2JMB#7YJNoF#CyTJoX90&FJG{%A1)gR=y;y0P$?5#&8V-$ippppm$&FHt+F zK`ucvXn{OUwJJE{LAZD|M96HnTqZ4&dXu> zPKh!bEdHdbtN{=ccS}E1nILSw5IL;raT3*5pd#3l@aFTN6~zz}%%m7zR&YGS(|Qrj z`kPX4mkff^Q_bOxol$bl&!r!%Bad)7=&^4kb@kIZZVo?0Mu1+5rGqw?X4kSMwrsCx zA2LwsKFZ` zbxm-(ts=^Ogn+mfHR4WM;3J#*cxX}|o3%VbY+H*rLfcy4Q?p@@5x~=+K1TQ`3*0x$ zeT-$c6j7lq>V7geh%TlWr6#qVB_b_b z)Cf>&fltkbJw;eoiyBdc4e(n83pT+fleY-{Yf;-n^X-v28{Q%gZemhzD!mLe(P~vn zjx8h*VyHIQDbf3!fy)ld`>9&ec6@PQER8b>bVd&GG4beXsc{QR5(Wj3`mz90YZpM8P6d#LSq`)^ zxAL~KwsN*Iw(_NcmY0RbyM&1j2+iHv4{NA6pEmVwo$*-L&HS5%NYk~~<3&K`tdM!t z6*6xFh0Gg6A@f#I$h>(JGH)k|M4T|)hzgmHKZVSPf#3itK73 zM4|7fXIBd$?tFVnUWD5Ugb2_bDZ5IGSmNy|kGcwk==L2cy9$JOFVa{>NbA<%mzU=I(SBuo~#f}q`BlMR#_=L zP?f>Me1JfdTCjl4Vl!DdCZ8!xknMJb_^m7qV-?jV59Ba92EU%3ggY{L3FUAMx-6x z!I#*$-;Z_481yN1qocW;(D+E@qDG=79P2s=Fb#E!zWK0RBYfBn@fmp4*x`C=qTah%FJ5<*k9{QB8qwHe~p=#V4W$)1#Y` z#n%-g`{1svCqh_GNQ$g10Fo3)g_~3j!g*jH5>mPE0rV#gp*^~W&@-7i3_BkQg2{*i z--<#l9{7|X5iJ(5*969k1wt~Uk9wMay09LCBn?m(4~A_vi3i8FQH7$QhB1A!oIcca z93eq-DNHb{FnZXs7|InOqKP~xiI|Y=)*!n2hsce%!`PmaUG#HafEYxQ*S4M~##_8> zhGP;$bB&daAla1>C>oMs4Pwfr;WbIHA~jQ{ro)jLbma_^IxU@|2@*P1Q;9Y!j2j#-3PzQXbR0eM9*bTYmkd%hrloAWt;a0r zR~%_Gu?t92mP#l;j)5T5Q#?MLhLS%o4CN+g52}qw?jdYamShO9i#TYBaH$uc>2jTS z7ot}ta(rlUhm%L6i*X!z(f^Q=@i)%nLP_v_o8kEgD&olrD15AU^VztXe#;><1;Js; zlNga3xdw2AB+R^2Z-#hPG-NcZ7J4a})f`SK<~!Te>ms~ED?AX>w-PJkG}+;h=E6Mq48AofaVZ$?~de+M^Z;V0*0ZxlgwONaT1(*=Dprc^EB3Y>{f##v!)Od(QkYVAHpJdKW z-!%fYimKFi&i%$u&4(IUN;G|r@g7f_nIMq^2=T;{LQfxRVGV%$B*`A?<>Xt|ps2zQ z4O%^7b(9TXH_**R*|nzjfajmoqzHgjJ!PlESSgIRymPP#)ruI6QKeVWC_t>V(6H(J z*0W`RkPiM^NC$?fvCj}K9aNt5;R7?qd;yX@N+cAfG2tOeRDH2OuQqy;GDw$%h&aNW zP=+xaV&~#EW?b&`xX!I0#7_;l5{~w&Ix&1yewM4=wv>plZ_SfASaES4liUE zFad(DuA6~(;?gp*M8%~r->qcJtR^c2S;o5oA(Pc~y-Oe104A+>g^l?tNlgFDkRaw~ zhx8`S6R9$KSdDnbd1A5*q&`-d0nbN+fB6uB@5`{0dWU zfNV?93l=hAGp-jiT_4poILwygscv59)gp;oy_w`MC`1(E)emI`!7DE*ISkRuqyy=` zW!Q__yHzM3w}>)zc3k%{OPvDjY3nsww1BrGLd#8uKP__cjTg{Iy|r8gqVghm7?TdGLf*s_;JOqZsyjL&RTd#Jbrlba)3?-8t`b-&z6aJkS*|qbn3)){V6}lR$dj z5hR;;0Ogu2YHiw0sWtNbGGN$&%ToeCmT8*di<&RCIKJf`3ZL6W8Xoj1H_85ce7}&} zi~xm!M42P-T-^&h38&oV50fb!T`I@|c2l{#L4kaj{4o3hf!2*^;b}0qokfVJF9>mL z!Xdh47JwC5uq2U0B=ONfNhTl*-B$AlJrL#(blxlSre!4w7)X={#J-otII?`=tn7Sz zIZ|_iryvQFZN7D9j9Nn&;)Z;turkKMbP8%-Eg`u%*nFGHPgJ@CNlVDui9p*&te6`i z?{SQ$cC8Jzfp|Y(w2-I5UDnbgrC?W*UgWec8GPE1rIaKmkVW`0*9~Nr~@Y*Qz z583**NtEJv0!Q|XVBls)I-11FSb+?2o3A9*rK5}cf08my^jD1yL=cwOz}WL5Vk(A z$N4>$R@hnYVIISSnfwb%4q0CKAJEfbO#Ho~cLxbe2o`Vn_^*o2Y^HQRL;E@nIsKu5 z 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 diff --git a/beam/examples/beamsh/beamsh.go b/beam/examples/beamsh/beamsh.go deleted file mode 100644 index 808f038c68..0000000000 --- a/beam/examples/beamsh/beamsh.go +++ /dev/null @@ -1,542 +0,0 @@ -package main - -import ( - "bufio" - "flag" - "fmt" - "github.com/dotcloud/docker/pkg/beam" - "github.com/dotcloud/docker/pkg/beam/data" - "github.com/dotcloud/docker/pkg/dockerscript" - "github.com/dotcloud/docker/pkg/term" - "io" - "net" - "net/url" - "os" - "path" - "strings" - "sync" -) - -var rootPlugins = []string{ - "stdio", -} - -var ( - flX bool - flPing bool - introspect beam.ReceiveSender = beam.Devnull() -) - -func main() { - fd3 := os.NewFile(3, "beam-introspect") - if introsp, err := beam.FileConn(fd3); err == nil { - introspect = introsp - Logf("introspection enabled\n") - } else { - Logf("introspection disabled\n") - } - fd3.Close() - flag.BoolVar(&flX, "x", false, "print commands as they are being executed") - flag.Parse() - if flag.NArg() == 0 { - if term.IsTerminal(0) { - // No arguments, stdin is terminal --> interactive mode - input := bufio.NewScanner(os.Stdin) - for { - fmt.Printf("[%d] beamsh> ", os.Getpid()) - if !input.Scan() { - break - } - line := input.Text() - if len(line) != 0 { - cmd, err := dockerscript.Parse(strings.NewReader(line)) - if err != nil { - fmt.Fprintf(os.Stderr, "error: %v\n", err) - continue - } - if err := executeRootScript(cmd); err != nil { - Fatal(err) - } - } - if err := input.Err(); err == io.EOF { - break - } else if err != nil { - Fatal(err) - } - } - } else { - // No arguments, stdin not terminal --> batch mode - script, err := dockerscript.Parse(os.Stdin) - if err != nil { - Fatal("parse error: %v\n", err) - } - if err := executeRootScript(script); err != nil { - Fatal(err) - } - } - } else { - // 1+ arguments: parse them as script files - for _, scriptpath := range flag.Args() { - f, err := os.Open(scriptpath) - if err != nil { - Fatal(err) - } - script, err := dockerscript.Parse(f) - if err != nil { - Fatal("parse error: %v\n", err) - } - if err := executeRootScript(script); err != nil { - Fatal(err) - } - } - } -} - -func executeRootScript(script []*dockerscript.Command) error { - if len(rootPlugins) > 0 { - // If there are root plugins, wrap the script inside them - var ( - rootCmd *dockerscript.Command - lastCmd *dockerscript.Command - ) - for _, plugin := range rootPlugins { - pluginCmd := &dockerscript.Command{ - Args: []string{plugin}, - } - if rootCmd == nil { - rootCmd = pluginCmd - } else { - lastCmd.Children = []*dockerscript.Command{pluginCmd} - } - lastCmd = pluginCmd - } - lastCmd.Children = script - script = []*dockerscript.Command{rootCmd} - } - handlers, err := Handlers(introspect) - if err != nil { - return err - } - defer handlers.Close() - var tasks sync.WaitGroup - defer func() { - Debugf("Waiting for introspection...\n") - tasks.Wait() - Debugf("DONE Waiting for introspection\n") - }() - if introspect != nil { - tasks.Add(1) - go func() { - Debugf("starting introspection\n") - defer Debugf("done with introspection\n") - defer tasks.Done() - introspect.Send(data.Empty().Set("cmd", "log", "stdout").Set("message", "introspection worked!").Bytes(), nil) - Debugf("XXX starting reading introspection messages\n") - r := beam.NewRouter(handlers) - r.NewRoute().All().Handler(func(p []byte, a *os.File) error { - Logf("[INTROSPECTION] %s\n", beam.MsgDesc(p, a)) - return handlers.Send(p, a) - }) - n, err := beam.Copy(r, introspect) - Debugf("XXX done reading %d introspection messages: %v\n", n, err) - }() - } - if err := executeScript(handlers, script); err != nil { - return err - } - return nil -} - -func executeScript(out beam.Sender, script []*dockerscript.Command) error { - Debugf("executeScript(%s)\n", scriptString(script)) - defer Debugf("executeScript(%s) DONE\n", scriptString(script)) - var background sync.WaitGroup - defer background.Wait() - for _, cmd := range script { - if cmd.Background { - background.Add(1) - go func(out beam.Sender, cmd *dockerscript.Command) { - executeCommand(out, cmd) - background.Done() - }(out, cmd) - } else { - if err := executeCommand(out, cmd); err != nil { - return err - } - } - } - return nil -} - -// 1) Find a handler for the command (if no handler, fail) -// 2) Attach new in & out pair to the handler -// 3) [in the background] Copy handler output to our own output -// 4) [in the background] Run the handler -// 5) Recursively executeScript() all children commands and wait for them to complete -// 6) Wait for handler to return and (shortly afterwards) output copy to complete -// 7) Profit -func executeCommand(out beam.Sender, cmd *dockerscript.Command) error { - if flX { - fmt.Printf("+ %v\n", strings.Replace(strings.TrimRight(cmd.String(), "\n"), "\n", "\n+ ", -1)) - } - Debugf("executeCommand(%s)\n", strings.Join(cmd.Args, " ")) - defer Debugf("executeCommand(%s) DONE\n", strings.Join(cmd.Args, " ")) - if len(cmd.Args) == 0 { - return fmt.Errorf("empty command") - } - Debugf("[executeCommand] sending job '%s'\n", strings.Join(cmd.Args, " ")) - job, err := beam.SendConn(out, data.Empty().Set("cmd", cmd.Args...).Set("type", "job").Bytes()) - if err != nil { - return fmt.Errorf("%v\n", err) - } - var tasks sync.WaitGroup - tasks.Add(1) - Debugf("[executeCommand] spawning background copy of the output of '%s'\n", strings.Join(cmd.Args, " ")) - go func() { - if out != nil { - Debugf("[executeCommand] background copy of the output of '%s'\n", strings.Join(cmd.Args, " ")) - n, err := beam.Copy(out, job) - if err != nil { - Fatalf("[executeCommand] [%s] error during background copy: %v\n", strings.Join(cmd.Args, " "), err) - } - Debugf("[executeCommand] background copy done of the output of '%s': copied %d messages\n", strings.Join(cmd.Args, " "), n) - } - tasks.Done() - }() - // depth-first execution of children commands - // executeScript() blocks until all commands are completed - Debugf("[executeCommand] recursively running children of '%s'\n", strings.Join(cmd.Args, " ")) - executeScript(job, cmd.Children) - Debugf("[executeCommand] DONE recursively running children of '%s'\n", strings.Join(cmd.Args, " ")) - job.CloseWrite() - Debugf("[executeCommand] closing the input of '%s' (all children are completed)\n", strings.Join(cmd.Args, " ")) - Debugf("[executeCommand] waiting for background copy of '%s' to complete...\n", strings.Join(cmd.Args, " ")) - tasks.Wait() - Debugf("[executeCommand] background copy of '%s' complete! This means the job completed.\n", strings.Join(cmd.Args, " ")) - return nil -} - -type Handler func([]string, io.Writer, io.Writer, beam.Receiver, beam.Sender) - -func Handlers(sink beam.Sender) (*beam.UnixConn, error) { - var tasks sync.WaitGroup - pub, priv, err := beam.USocketPair() - if err != nil { - return nil, err - } - go func() { - defer func() { - Debugf("[handlers] closewrite() on endpoint\n") - // FIXME: this is not yet necessary but will be once - // there is synchronization over standard beam messages - priv.CloseWrite() - Debugf("[handlers] done closewrite() on endpoint\n") - }() - r := beam.NewRouter(sink) - r.NewRoute().HasAttachment().KeyIncludes("type", "job").Handler(func(payload []byte, attachment *os.File) error { - conn, err := beam.FileConn(attachment) - if err != nil { - attachment.Close() - return err - } - // attachment.Close() - tasks.Add(1) - go func() { - defer tasks.Done() - defer func() { - Debugf("[handlers] '%s' closewrite\n", payload) - conn.CloseWrite() - Debugf("[handlers] '%s' done closewrite\n", payload) - }() - cmd := data.Message(payload).Get("cmd") - Debugf("[handlers] received %s\n", strings.Join(cmd, " ")) - if len(cmd) == 0 { - return - } - handler := GetHandler(cmd[0]) - if handler == nil { - return - } - stdout, err := beam.SendRPipe(conn, data.Empty().Set("cmd", "log", "stdout").Set("fromcmd", cmd...).Bytes()) - if err != nil { - return - } - defer stdout.Close() - stderr, err := beam.SendRPipe(conn, data.Empty().Set("cmd", "log", "stderr").Set("fromcmd", cmd...).Bytes()) - if err != nil { - return - } - defer stderr.Close() - Debugf("[handlers] calling %s\n", strings.Join(cmd, " ")) - handler(cmd, stdout, stderr, beam.Receiver(conn), beam.Sender(conn)) - Debugf("[handlers] returned: %s\n", strings.Join(cmd, " ")) - }() - return nil - }) - beam.Copy(r, priv) - Debugf("[handlers] waiting for all tasks\n") - tasks.Wait() - Debugf("[handlers] all tasks returned\n") - }() - return pub, nil -} - -func GetHandler(name string) Handler { - if name == "logger" { - return CmdLogger - } else if name == "render" { - return CmdRender - } else if name == "devnull" { - return CmdDevnull - } else if name == "prompt" { - return CmdPrompt - } else if name == "stdio" { - return CmdStdio - } else if name == "echo" { - return CmdEcho - } else if name == "pass" { - return CmdPass - } else if name == "in" { - return CmdIn - } else if name == "exec" { - return CmdExec - } else if name == "trace" { - return CmdTrace - } else if name == "emit" { - return CmdEmit - } else if name == "print" { - return CmdPrint - } else if name == "multiprint" { - return CmdMultiprint - } else if name == "listen" { - return CmdListen - } else if name == "beamsend" { - return CmdBeamsend - } else if name == "beamreceive" { - return CmdBeamreceive - } else if name == "connect" { - return CmdConnect - } else if name == "openfile" { - return CmdOpenfile - } else if name == "spawn" { - return CmdSpawn - } else if name == "chdir" { - return CmdChdir - } - return nil -} - -// VARIOUS HELPER FUNCTIONS: - -func connToFile(conn net.Conn) (f *os.File, err error) { - if connWithFile, ok := conn.(interface { - File() (*os.File, error) - }); !ok { - return nil, fmt.Errorf("no file descriptor available") - } else { - f, err = connWithFile.File() - if err != nil { - return nil, err - } - } - return f, err -} - -type Msg struct { - payload []byte - attachment *os.File -} - -func Logf(msg string, args ...interface{}) (int, error) { - if len(msg) == 0 || msg[len(msg)-1] != '\n' { - msg = msg + "\n" - } - msg = fmt.Sprintf("[%v] [%v] %s", os.Getpid(), path.Base(os.Args[0]), msg) - return fmt.Printf(msg, args...) -} - -func Debugf(msg string, args ...interface{}) { - if os.Getenv("BEAMDEBUG") != "" { - Logf(msg, args...) - } -} - -func Fatalf(msg string, args ...interface{}) { - Logf(msg, args...) - os.Exit(1) -} - -func Fatal(args ...interface{}) { - Fatalf("%v", args[0]) -} - -func scriptString(script []*dockerscript.Command) string { - lines := make([]string, 0, len(script)) - for _, cmd := range script { - line := strings.Join(cmd.Args, " ") - if len(cmd.Children) > 0 { - line += fmt.Sprintf(" { %s }", scriptString(cmd.Children)) - } else { - line += " {}" - } - lines = append(lines, line) - } - return fmt.Sprintf("'%s'", strings.Join(lines, "; ")) -} - -func dialer(addr string) (chan net.Conn, error) { - u, err := url.Parse(addr) - if err != nil { - return nil, err - } - connections := make(chan net.Conn) - go func() { - defer close(connections) - for { - conn, err := net.Dial(u.Scheme, u.Host) - if err != nil { - return - } - connections <- conn - } - }() - return connections, nil -} - -func listener(addr string) (chan net.Conn, error) { - u, err := url.Parse(addr) - if err != nil { - return nil, err - } - l, err := net.Listen(u.Scheme, u.Host) - if err != nil { - return nil, err - } - connections := make(chan net.Conn) - go func() { - defer close(connections) - for { - conn, err := l.Accept() - if err != nil { - return - } - Logf("new connection\n") - connections <- conn - } - }() - return connections, nil -} - -func SendToConn(connections chan net.Conn, src beam.Receiver) error { - var tasks sync.WaitGroup - defer tasks.Wait() - for { - payload, attachment, err := src.Receive() - if err == io.EOF { - return nil - } else if err != nil { - return err - } - conn, ok := <-connections - if !ok { - break - } - Logf("Sending %s\n", msgDesc(payload, attachment)) - tasks.Add(1) - go func(payload []byte, attachment *os.File, conn net.Conn) { - defer tasks.Done() - if _, err := conn.Write([]byte(data.EncodeString(string(payload)))); err != nil { - return - } - if attachment == nil { - conn.Close() - return - } - var iotasks sync.WaitGroup - iotasks.Add(2) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - Debugf("copying the connection to [%d]\n", attachment.Fd()) - io.Copy(attachment, conn) - attachment.Close() - Debugf("done copying the connection to [%d]\n", attachment.Fd()) - }(attachment, conn) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - Debugf("copying [%d] to the connection\n", attachment.Fd()) - io.Copy(conn, attachment) - conn.Close() - Debugf("done copying [%d] to the connection\n", attachment.Fd()) - }(attachment, conn) - iotasks.Wait() - }(payload, attachment, conn) - } - return nil -} - -func msgDesc(payload []byte, attachment *os.File) string { - return beam.MsgDesc(payload, attachment) -} - -func ReceiveFromConn(connections chan net.Conn, dst beam.Sender) error { - for conn := range connections { - err := func() error { - Logf("parsing message from network...\n") - defer Logf("done parsing message from network\n") - buf := make([]byte, 4098) - n, err := conn.Read(buf) - if n == 0 { - conn.Close() - if err == io.EOF { - return nil - } else { - return err - } - } - Logf("decoding message from '%s'\n", buf[:n]) - header, skip, err := data.DecodeString(string(buf[:n])) - if err != nil { - conn.Close() - return err - } - pub, priv, err := beam.SocketPair() - if err != nil { - return err - } - Logf("decoded message: %s\n", data.Message(header).Pretty()) - go func(skipped []byte, conn net.Conn, f *os.File) { - // this closes both conn and f - if len(skipped) > 0 { - if _, err := f.Write(skipped); err != nil { - Logf("ERROR: %v\n", err) - f.Close() - conn.Close() - return - } - } - bicopy(conn, f) - }(buf[skip:n], conn, pub) - if err := dst.Send([]byte(header), priv); err != nil { - return err - } - return nil - }() - if err != nil { - Logf("Error reading from connection: %v\n", err) - } - } - return nil -} - -func bicopy(a, b io.ReadWriteCloser) { - var iotasks sync.WaitGroup - oneCopy := func(dst io.WriteCloser, src io.Reader) { - defer iotasks.Done() - io.Copy(dst, src) - dst.Close() - } - iotasks.Add(2) - go oneCopy(a, b) - go oneCopy(b, a) - iotasks.Wait() -} diff --git a/beam/examples/beamsh/builtins.go b/beam/examples/beamsh/builtins.go deleted file mode 100644 index 3242237cc1..0000000000 --- a/beam/examples/beamsh/builtins.go +++ /dev/null @@ -1,441 +0,0 @@ -package main - -import ( - "bufio" - "fmt" - "github.com/dotcloud/docker/pkg/beam" - "github.com/dotcloud/docker/pkg/beam/data" - "github.com/dotcloud/docker/pkg/term" - "github.com/dotcloud/docker/utils" - "io" - "net" - "net/url" - "os" - "os/exec" - "path" - "strings" - "sync" - "text/template" -) - -func CmdLogger(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if err := os.MkdirAll("logs", 0700); err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - var tasks sync.WaitGroup - defer tasks.Wait() - var n int = 1 - r := beam.NewRouter(out) - r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func(payload []byte, attachment *os.File) error { - tasks.Add(1) - go func(n int) { - defer tasks.Done() - defer attachment.Close() - var streamname string - if cmd := data.Message(payload).Get("cmd"); len(cmd) == 1 || cmd[1] == "stdout" { - streamname = "stdout" - } else { - streamname = cmd[1] - } - if fromcmd := data.Message(payload).Get("fromcmd"); len(fromcmd) != 0 { - streamname = fmt.Sprintf("%s-%s", strings.Replace(strings.Join(fromcmd, "_"), "/", "_", -1), streamname) - } - logfile, err := os.OpenFile(path.Join("logs", fmt.Sprintf("%d-%s", n, streamname)), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0700) - if err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - defer logfile.Close() - io.Copy(logfile, attachment) - logfile.Sync() - }(n) - n++ - return nil - }).Tee(out) - if _, err := beam.Copy(r, in); err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } -} - -func CmdRender(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - fmt.Fprintf(stderr, "Usage: %s FORMAT\n", args[0]) - out.Send(data.Empty().Set("status", "1").Bytes(), nil) - return - } - txt := args[1] - if !strings.HasSuffix(txt, "\n") { - txt += "\n" - } - t := template.Must(template.New("render").Parse(txt)) - for { - payload, attachment, err := in.Receive() - if err != nil { - return - } - msg, err := data.Decode(string(payload)) - if err != nil { - fmt.Fprintf(stderr, "decode error: %v\n") - } - if err := t.Execute(stdout, msg); err != nil { - fmt.Fprintf(stderr, "rendering error: %v\n", err) - out.Send(data.Empty().Set("status", "1").Bytes(), nil) - return - } - if err := out.Send(payload, attachment); err != nil { - return - } - } -} - -func CmdDevnull(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - _, attachment, err := in.Receive() - if err != nil { - return - } - if attachment != nil { - attachment.Close() - } - } -} - -func CmdPrompt(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) < 2 { - fmt.Fprintf(stderr, "usage: %s PROMPT...\n", args[0]) - return - } - if !term.IsTerminal(0) { - fmt.Fprintf(stderr, "can't prompt: no tty available...\n") - return - } - fmt.Printf("%s: ", strings.Join(args[1:], " ")) - oldState, _ := term.SaveState(0) - term.DisableEcho(0, oldState) - line, _, err := bufio.NewReader(os.Stdin).ReadLine() - if err != nil { - fmt.Fprintln(stderr, err.Error()) - return - } - val := string(line) - fmt.Printf("\n") - term.RestoreTerminal(0, oldState) - out.Send(data.Empty().Set("fromcmd", args...).Set("value", val).Bytes(), nil) -} - -func CmdStdio(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - var tasks sync.WaitGroup - defer tasks.Wait() - - r := beam.NewRouter(out) - r.NewRoute().HasAttachment().KeyStartsWith("cmd", "log").Handler(func(payload []byte, attachment *os.File) error { - tasks.Add(1) - go func() { - defer tasks.Done() - defer attachment.Close() - io.Copy(os.Stdout, attachment) - attachment.Close() - }() - return nil - }).Tee(out) - - if _, err := beam.Copy(r, in); err != nil { - Fatal(err) - fmt.Fprintf(stderr, "%v\n", err) - return - } -} - -func CmdEcho(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - fmt.Fprintln(stdout, strings.Join(args[1:], " ")) -} - -func CmdPass(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - payload, attachment, err := in.Receive() - if err != nil { - return - } - if err := out.Send(payload, attachment); err != nil { - if attachment != nil { - attachment.Close() - } - return - } - } -} - -func CmdSpawn(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - c := exec.Command(utils.SelfPath()) - r, w, err := os.Pipe() - if err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - c.Stdin = r - c.Stdout = stdout - c.Stderr = stderr - go func() { - fmt.Fprintf(w, strings.Join(args[1:], " ")) - w.Sync() - w.Close() - }() - if err := c.Run(); err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } -} - -func CmdIn(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - os.Chdir(args[1]) - GetHandler("pass")([]string{"pass"}, stdout, stderr, in, out) -} - -func CmdExec(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - cmd := exec.Command(args[1], args[2:]...) - cmd.Stdout = stdout - cmd.Stderr = stderr - //cmd.Stdin = os.Stdin - local, remote, err := beam.SocketPair() - if err != nil { - fmt.Fprintf(stderr, "%v\n", err) - return - } - child, err := beam.FileConn(local) - if err != nil { - local.Close() - remote.Close() - fmt.Fprintf(stderr, "%v\n", err) - return - } - local.Close() - cmd.ExtraFiles = append(cmd.ExtraFiles, remote) - - var tasks sync.WaitGroup - tasks.Add(1) - go func() { - defer Debugf("done copying to child\n") - defer tasks.Done() - defer child.CloseWrite() - beam.Copy(child, in) - }() - - tasks.Add(1) - go func() { - defer Debugf("done copying from child %d\n") - defer tasks.Done() - r := beam.NewRouter(out) - r.NewRoute().All().Handler(func(p []byte, a *os.File) error { - return out.Send(data.Message(p).Set("pid", fmt.Sprintf("%d", cmd.Process.Pid)).Bytes(), a) - }) - beam.Copy(r, child) - }() - execErr := cmd.Run() - // We can close both ends of the socket without worrying about data stuck in the buffer, - // because unix socket writes are fully synchronous. - child.Close() - tasks.Wait() - var status string - if execErr != nil { - status = execErr.Error() - } else { - status = "ok" - } - out.Send(data.Empty().Set("status", status).Set("cmd", args...).Bytes(), nil) -} - -func CmdTrace(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - r := beam.NewRouter(out) - r.NewRoute().All().Handler(func(payload []byte, attachment *os.File) error { - var sfd string = "nil" - if attachment != nil { - sfd = fmt.Sprintf("%d", attachment.Fd()) - } - fmt.Printf("===> %s [%s]\n", data.Message(payload).Pretty(), sfd) - out.Send(payload, attachment) - return nil - }) - beam.Copy(r, in) -} - -func CmdEmit(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - out.Send(data.Parse(args[1:]).Bytes(), nil) -} - -func CmdPrint(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for { - payload, a, err := in.Receive() - if err != nil { - return - } - // Skip commands - if a != nil && data.Message(payload).Get("cmd") == nil { - dup, err := beam.SendRPipe(out, payload) - if err != nil { - a.Close() - return - } - io.Copy(io.MultiWriter(os.Stdout, dup), a) - dup.Close() - } else { - if err := out.Send(payload, a); err != nil { - return - } - } - } -} - -func CmdMultiprint(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - var tasks sync.WaitGroup - defer tasks.Wait() - r := beam.NewRouter(out) - multiprint := func(p []byte, a *os.File) error { - tasks.Add(1) - go func() { - defer tasks.Done() - defer a.Close() - msg := data.Message(string(p)) - input := bufio.NewScanner(a) - for input.Scan() { - fmt.Printf("[%s] %s\n", msg.Pretty(), input.Text()) - } - }() - return nil - } - r.NewRoute().KeyIncludes("type", "job").Passthrough(out) - r.NewRoute().HasAttachment().Handler(multiprint).Tee(out) - beam.Copy(r, in) -} - -func CmdListen(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) - return - } - u, err := url.Parse(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - l, err := net.Listen(u.Scheme, u.Host) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - for { - conn, err := l.Accept() - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - f, err := connToFile(conn) - if err != nil { - conn.Close() - continue - } - out.Send(data.Empty().Set("type", "socket").Set("remoteaddr", conn.RemoteAddr().String()).Bytes(), f) - } -} - -func CmdBeamsend(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) < 2 { - if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { - Fatal(err) - } - return - } - var connector func(string) (chan net.Conn, error) - connector = dialer - connections, err := connector(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - // Copy in to conn - SendToConn(connections, in) -} - -func CmdBeamreceive(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - if err := out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil); err != nil { - Fatal(err) - } - return - } - var connector func(string) (chan net.Conn, error) - connector = listener - connections, err := connector(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - // Copy in to conn - ReceiveFromConn(connections, out) -} - -func CmdConnect(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - if len(args) != 2 { - out.Send(data.Empty().Set("status", "1").Set("message", "wrong number of arguments").Bytes(), nil) - return - } - u, err := url.Parse(args[1]) - if err != nil { - out.Send(data.Empty().Set("status", "1").Set("message", err.Error()).Bytes(), nil) - return - } - var tasks sync.WaitGroup - for { - _, attachment, err := in.Receive() - if err != nil { - break - } - if attachment == nil { - continue - } - Logf("connecting to %s/%s\n", u.Scheme, u.Host) - conn, err := net.Dial(u.Scheme, u.Host) - if err != nil { - out.Send(data.Empty().Set("cmd", "msg", "connect error: "+err.Error()).Bytes(), nil) - return - } - out.Send(data.Empty().Set("cmd", "msg", "connection established").Bytes(), nil) - tasks.Add(1) - go func(attachment *os.File, conn net.Conn) { - defer tasks.Done() - // even when successful, conn.File() returns a duplicate, - // so we must close the original - var iotasks sync.WaitGroup - iotasks.Add(2) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - io.Copy(attachment, conn) - }(attachment, conn) - go func(attachment *os.File, conn net.Conn) { - defer iotasks.Done() - io.Copy(conn, attachment) - }(attachment, conn) - iotasks.Wait() - conn.Close() - attachment.Close() - }(attachment, conn) - } - tasks.Wait() -} - -func CmdOpenfile(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - for _, name := range args { - f, err := os.Open(name) - if err != nil { - continue - } - if err := out.Send(data.Empty().Set("path", name).Set("type", "file").Bytes(), f); err != nil { - f.Close() - } - } -} - -func CmdChdir(args []string, stdout, stderr io.Writer, in beam.Receiver, out beam.Sender) { - os.Chdir(args[1]) -} diff --git a/beam/examples/beamsh/scripts/bug0.ds b/beam/examples/beamsh/scripts/bug0.ds deleted file mode 100755 index 89b75230be..0000000000 --- a/beam/examples/beamsh/scripts/bug0.ds +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env beamsh - -exec ls -l diff --git a/beam/examples/beamsh/scripts/bug1.ds b/beam/examples/beamsh/scripts/bug1.ds deleted file mode 100755 index 2d8a9e2ed9..0000000000 --- a/beam/examples/beamsh/scripts/bug1.ds +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env beamsh - -trace { - exec ls -l -} diff --git a/beam/examples/beamsh/scripts/bug2.ds b/beam/examples/beamsh/scripts/bug2.ds deleted file mode 100755 index 08f0431f68..0000000000 --- a/beam/examples/beamsh/scripts/bug2.ds +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env beamsh - -trace { - stdio { - exec ls -l - } -} diff --git a/beam/examples/beamsh/scripts/bug3.ds b/beam/examples/beamsh/scripts/bug3.ds deleted file mode 100755 index 7bb8694d49..0000000000 --- a/beam/examples/beamsh/scripts/bug3.ds +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env beamsh -x - -trace outer { - # stdio fails - stdio { - trace inner { - exec ls -l - } - } -} diff --git a/beam/examples/beamsh/scripts/bug4.ds b/beam/examples/beamsh/scripts/bug4.ds deleted file mode 100755 index b7beedbae2..0000000000 --- a/beam/examples/beamsh/scripts/bug4.ds +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env beamsh - -stdio { - trace { - stdio { - exec ls -l - } - } -} diff --git a/beam/examples/beamsh/scripts/bug5.ds b/beam/examples/beamsh/scripts/bug5.ds deleted file mode 100755 index 9f9a85515d..0000000000 --- a/beam/examples/beamsh/scripts/bug5.ds +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env beamsh - -stdio { - # exec fails - exec ls -l -} diff --git a/beam/examples/beamsh/scripts/bug6.ds b/beam/examples/beamsh/scripts/bug6.ds deleted file mode 100755 index 90281401cd..0000000000 --- a/beam/examples/beamsh/scripts/bug6.ds +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env beamsh - -stdio { - trace { - echo hello - } -} diff --git a/beam/examples/beamsh/scripts/bug7.ds b/beam/examples/beamsh/scripts/bug7.ds deleted file mode 100755 index b6e7bd9201..0000000000 --- a/beam/examples/beamsh/scripts/bug7.ds +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env beamsh - -stdio { - # exec fails - echo hello world -} diff --git a/beam/examples/beamsh/scripts/demo1.ds b/beam/examples/beamsh/scripts/demo1.ds deleted file mode 100755 index 20a3359f3a..0000000000 --- a/beam/examples/beamsh/scripts/demo1.ds +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env beamsh - -devnull { - multiprint { - exec tail -f /var/log/system.log & - exec ls -l - exec ls ksdhfkjdshf jksdfhkjsdhf - } -} diff --git a/beam/examples/beamsh/scripts/helloworld.ds b/beam/examples/beamsh/scripts/helloworld.ds deleted file mode 100755 index 32e59b062e..0000000000 --- a/beam/examples/beamsh/scripts/helloworld.ds +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env beamsh - -print { - trace { - emit msg=hello - emit msg=world - } -} diff --git a/beam/examples/beamsh/scripts/logdemo.ds b/beam/examples/beamsh/scripts/logdemo.ds deleted file mode 100755 index 8b729a966f..0000000000 --- a/beam/examples/beamsh/scripts/logdemo.ds +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env beamsh - -trace { - log { - exec ls -l - exec ls /tmp/jhsdfkjhsdjkfhsdjkfhsdjkkhsdjkf - echo hello world - } -} diff --git a/beam/examples/beamsh/scripts/miniserver.ds b/beam/examples/beamsh/scripts/miniserver.ds deleted file mode 100755 index 9707477ee0..0000000000 --- a/beam/examples/beamsh/scripts/miniserver.ds +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env beamsh - -multiprint { - trace { - listen tcp://localhost:7676 & - listen tcp://localhost:8787 & - } -} - diff --git a/beam/handler.go b/beam/handler.go deleted file mode 100644 index 086a391c02..0000000000 --- a/beam/handler.go +++ /dev/null @@ -1,31 +0,0 @@ -package beam - -import ( - "fmt" -) - -type Handler func(msg *Message) error - -func (h Handler) Send(msg *Message) (Receiver, error) { - var ret Receiver - if RetPipe.Equals(msg.Ret) { - ret, msg.Ret = Pipe() - } - go func() { - // Ret must always be a valid Sender, so handlers - // can safely send to it - if msg.Ret == nil { - msg.Ret = NopSender{} - } - err := h(msg) - if err != nil { - Obj(msg.Ret).Error("%v", err) - } - msg.Ret.Close() - }() - return ret, nil -} - -func (h Handler) Close() error { - return fmt.Errorf("can't close") -} diff --git a/beam/http2/README.md b/beam/http2/README.md deleted file mode 100644 index 92ea4c8cdf..0000000000 --- a/beam/http2/README.md +++ /dev/null @@ -1,8 +0,0 @@ -This package defines a remote transport for Beam services using http2/spdy and tls. - -Uses https://github.com/docker/spdystream - -Pointers: - - * Low-level protocol framer: http://code.google.com/p/go.net/spdy - * (incomplete) high-level server implementation: https://github.com/shykes/spdy-go diff --git a/beam/http2/listener.go b/beam/http2/listener.go deleted file mode 100644 index 8b17bf2b08..0000000000 --- a/beam/http2/listener.go +++ /dev/null @@ -1,86 +0,0 @@ -package http2 - -import ( - "github.com/docker/libswarm/beam" - "github.com/docker/spdystream" - "net" - "sync" -) - -type ListenSession struct { - listener net.Listener - streamChan chan *spdystream.Stream - streamLock sync.RWMutex - subStreamChans map[string]chan *spdystream.Stream - auth Authenticator -} - -func NewListenSession(listener net.Listener, auth Authenticator) (*ListenSession, error) { - return &ListenSession{ - listener: listener, - streamChan: make(chan *spdystream.Stream), - subStreamChans: make(map[string]chan *spdystream.Stream), - auth: auth, - }, nil -} - -func (l *ListenSession) streamHandler(stream *spdystream.Stream) { - streamChan := l.getStreamChan(stream.Parent()) - streamChan <- stream -} - -func (l *ListenSession) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { - l.streamLock.Lock() - l.subStreamChans[stream.String()] = streamChan - l.streamLock.Unlock() -} - -func (l *ListenSession) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { - if stream == nil { - return l.streamChan - } - l.streamLock.RLock() - defer l.streamLock.RUnlock() - streamChan, ok := l.subStreamChans[stream.String()] - if ok { - return streamChan - } - return l.streamChan -} - -func (l *ListenSession) Serve() { - for { - conn, err := l.listener.Accept() - if err != nil { - // TODO log - break - } - - go func() { - authHandler, authErr := l.auth(conn) - if authErr != nil { - // TODO log - conn.Close() - return - } - - spdyConn, spdyErr := spdystream.NewConnection(conn, true) - if spdyErr != nil { - // TODO log - conn.Close() - return - } - - go spdyConn.Serve(l.streamHandler, authHandler) - }() - } -} - -func (l *ListenSession) Shutdown() error { - return l.listener.Close() -} - -func (l *ListenSession) Receive(mode int) (*beam.Message, error) { - stream := <-l.streamChan - return createStreamMessage(stream, mode, l, nil) -} diff --git a/beam/http2/listener_test.go b/beam/http2/listener_test.go deleted file mode 100644 index 2d4a8a9432..0000000000 --- a/beam/http2/listener_test.go +++ /dev/null @@ -1,83 +0,0 @@ -package http2 - -import ( - "github.com/docker/libswarm/beam" - "io" - "net" - "testing" -) - -func TestListenSession(t *testing.T) { - listen := "localhost:7743" - listener, listenErr := net.Listen("tcp", listen) - if listenErr != nil { - t.Fatalf("Error creating listener: %s", listenErr) - } - - session, sessionErr := NewListenSession(listener, NoAuthenticator) - if sessionErr != nil { - t.Fatalf("Error creating session: %s", sessionErr) - } - - go session.Serve() - - end := make(chan bool) - go exerciseServer(t, listen, end) - - msg, msgErr := session.Receive(beam.Ret) - if msgErr != nil { - t.Fatalf("Error receiving message: %s", msgErr) - } - if msg.Att == nil { - t.Fatalf("Error message missing attachment") - } - if msg.Verb != beam.Attach { - t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Attach) - } - - receiver, sendErr := msg.Ret.Send(&beam.Message{Verb: beam.Ack}) - if sendErr != nil { - t.Fatalf("Error sending return message: %s", sendErr) - } - _, ackErr := receiver.Receive(0) - if ackErr == nil { - t.Fatalf("No error receiving from message with no return pipe") - } - if ackErr != io.EOF { - t.Fatalf("Unexpected error receiving from message: %s", ackErr) - } - - <-end - shutdownErr := session.Shutdown() - if shutdownErr != nil { - t.Fatalf("Error shutting down: %s", shutdownErr) - } -} - -func exerciseServer(t *testing.T, server string, endChan chan bool) { - defer close(endChan) - - conn, connErr := net.Dial("tcp", server) - if connErr != nil { - t.Fatalf("Error dialing server: %s", connErr) - } - - session, sessionErr := NewStreamSession(conn) - if sessionErr != nil { - t.Fatalf("Error creating session: %s", sessionErr) - } - - receiver, sendErr := session.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) - if sendErr != nil { - t.Fatalf("Error sending message: %s", sendErr) - } - - msg, receiveErr := receiver.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving message") - } - - if msg.Verb != beam.Ack { - t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Ack) - } -} diff --git a/beam/http2/server.go b/beam/http2/server.go deleted file mode 100644 index 4ec20d3272..0000000000 --- a/beam/http2/server.go +++ /dev/null @@ -1,66 +0,0 @@ -package http2 - -import ( - "github.com/docker/libswarm/beam" - "github.com/docker/spdystream" - "net" - "sync" -) - -// Serve a Beam endpoint over a single HTTP2 connection -type Server struct { - conn *spdystream.Connection - streamChan chan *spdystream.Stream - streamLock sync.RWMutex - subStreamChans map[string]chan *spdystream.Stream -} - -// Create a Beam receiver from a net.Conn -func NewServer(conn net.Conn) (*Server, error) { - spdyConn, err := spdystream.NewConnection(conn, true) - if err != nil { - return nil, err - } - - s := &Server{ - conn: spdyConn, - streamChan: make(chan *spdystream.Stream), - subStreamChans: make(map[string]chan *spdystream.Stream), - } - go s.conn.Serve(s.streamHandler, spdystream.NoAuthHandler) - - return s, nil -} - -func (s *Server) Close() error { - return s.conn.Close() -} - -func (s *Server) Receive(mode int) (*beam.Message, error) { - stream := <-s.streamChan - return createStreamMessage(stream, mode, s, nil) -} - -func (s *Server) streamHandler(stream *spdystream.Stream) { - streamChan := s.getStreamChan(stream.Parent()) - streamChan <- stream -} - -func (s *Server) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { - s.streamLock.Lock() - s.subStreamChans[stream.String()] = streamChan - s.streamLock.Unlock() -} - -func (s *Server) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { - if stream == nil { - return s.streamChan - } - s.streamLock.RLock() - defer s.streamLock.RUnlock() - streamChan, ok := s.subStreamChans[stream.String()] - if ok { - return streamChan - } - return s.streamChan -} diff --git a/beam/http2/spdy.go b/beam/http2/spdy.go deleted file mode 100644 index 293cc229ab..0000000000 --- a/beam/http2/spdy.go +++ /dev/null @@ -1,109 +0,0 @@ -package http2 - -import ( - "encoding/base64" - "fmt" - "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/data" - "github.com/docker/spdystream" - "io" - "net" - "net/http" - "os" - "syscall" -) - -type Authenticator func(conn net.Conn) (spdystream.AuthHandler, error) - -func NoAuthenticator(conn net.Conn) (spdystream.AuthHandler, error) { - return func(header http.Header, slot uint8, parent uint32) bool { - return true - }, nil -} - -type streamChanProvider interface { - addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) - getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream -} - -func encodeArgs(args []string) string { - encoded := data.Encode(map[string][]string{"args": args}) - return base64.URLEncoding.EncodeToString([]byte(encoded)) -} - -func decodeArgs(argString string) ([]string, error) { - decoded, decodeErr := base64.URLEncoding.DecodeString(argString) - if decodeErr != nil { - return []string{}, decodeErr - } - dataMap, dataErr := data.Decode(string(decoded)) - if dataErr != nil { - return []string{}, dataErr - } - return dataMap["args"], nil -} - -func createStreamMessage(stream *spdystream.Stream, mode int, streamChans streamChanProvider, ret beam.Sender) (*beam.Message, error) { - verbString := stream.Headers()["Verb"] - if len(verbString) != 1 { - if len(verbString) == 0 { - return nil, fmt.Errorf("Stream(%s) is missing verb header", stream) - } else { - return nil, fmt.Errorf("Stream(%s) has multiple verb headers", stream) - } - - } - verb, verbOk := verbs[verbString[0]] - if !verbOk { - return nil, fmt.Errorf("Unknown verb: %s", verbString[0]) - } - - var args []string - argString := stream.Headers()["Args"] - if len(argString) > 1 { - return nil, fmt.Errorf("Stream(%s) has multiple args headers", stream) - } - if len(argString) == 1 { - var err error - args, err = decodeArgs(argString[0]) - if err != nil { - return nil, err - } - } - - var attach *os.File - if !stream.IsFinished() { - socketFds, socketErr := syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM|syscall.FD_CLOEXEC, 0) - if socketErr != nil { - return nil, socketErr - } - attach = os.NewFile(uintptr(socketFds[0]), "") - conn, connErr := net.FileConn(os.NewFile(uintptr(socketFds[1]), "")) - if connErr != nil { - return nil, connErr - } - - go func() { - io.Copy(conn, stream) - }() - go func() { - io.Copy(stream, conn) - }() - } - - retSender := ret - if retSender == nil || beam.RetPipe.Equals(retSender) { - retSender = &StreamSender{stream: stream, streamChans: streamChans} - } - - if mode&beam.Ret == 0 { - retSender.Close() - } - - return &beam.Message{ - Verb: verb, - Args: args, - Att: attach, - Ret: retSender, - }, nil -} diff --git a/beam/http2/stream.go b/beam/http2/stream.go deleted file mode 100644 index ac5c67364d..0000000000 --- a/beam/http2/stream.go +++ /dev/null @@ -1,166 +0,0 @@ -package http2 - -import ( - "fmt" - "github.com/docker/libswarm/beam" - "github.com/docker/spdystream" - "net" - "net/http" - "sync" -) - -var verbs = map[string]beam.Verb{ - "Ack": beam.Ack, - "Attach": beam.Attach, - "Connect": beam.Connect, - "Error": beam.Error, - "File": beam.File, - "Get": beam.Get, - "Log": beam.Log, - "Ls": beam.Ls, - "Set": beam.Set, - "Spawn": beam.Spawn, - "Start": beam.Start, - "Stop": beam.Stop, - "Watch": beam.Watch, -} - -// Only allows sending, no parent stream -type StreamSession struct { - conn *spdystream.Connection - - streamLock sync.Mutex - streamChan chan *spdystream.Stream - subStreamChans map[string]chan *spdystream.Stream -} - -func (s *StreamSession) addStreamChan(stream *spdystream.Stream, streamChan chan *spdystream.Stream) { - s.subStreamChans[stream.String()] = streamChan -} - -func (s *StreamSession) getStreamChan(stream *spdystream.Stream) chan *spdystream.Stream { - if stream == nil { - return s.streamChan - } - streamChan, ok := s.subStreamChans[stream.String()] - if ok { - return streamChan - } - return s.streamChan -} - -func (s *StreamSession) newStreamHandler(stream *spdystream.Stream) { - streamChan := s.getStreamChan(stream.Parent()) - streamChan <- stream -} - -func NewStreamSession(conn net.Conn) (*StreamSession, error) { - session := &StreamSession{ - streamChan: make(chan *spdystream.Stream), - subStreamChans: make(map[string]chan *spdystream.Stream), - } - - spdyConn, spdyErr := spdystream.NewConnection(conn, false) - if spdyErr != nil { - return nil, spdyErr - } - go spdyConn.Serve(session.newStreamHandler, spdystream.NoAuthHandler) - - session.conn = spdyConn - - return session, nil -} - -func (s *StreamSession) Send(msg *beam.Message) (ret beam.Receiver, err error) { - if msg.Att != nil { - return nil, fmt.Errorf("file attachment not yet implemented for spdy transport") - } - - var fin bool - if beam.RetPipe.Equals(msg.Ret) { - fin = false - } else { - fin = true - } - headers := http.Header{ - "Verb": []string{msg.Verb.String()}, - "Args": []string{encodeArgs(msg.Args)}, - } - stream, streamErr := s.conn.CreateStream(headers, nil, fin) - if streamErr != nil { - return nil, streamErr - } - - streamChan := make(chan *spdystream.Stream) - s.subStreamChans[stream.String()] = streamChan - - if beam.RetPipe.Equals(msg.Ret) { - ret = &StreamReceiver{stream: stream, streamChans: s} - } else { - ret = &beam.NopReceiver{} - } - return -} - -func (s *StreamSession) Close() error { - return s.conn.Close() -} - -type StreamReceiver struct { - stream *spdystream.Stream - streamChans streamChanProvider - ret beam.Sender -} - -func (s *StreamReceiver) Receive(mode int) (*beam.Message, error) { - waitErr := s.stream.Wait() - if waitErr != nil { - return nil, waitErr - } - streamChan := s.streamChans.getStreamChan(s.stream) - stream := <-streamChan - return createStreamMessage(stream, mode, s.streamChans, s.ret) -} - -type StreamSender struct { - stream *spdystream.Stream - streamChans streamChanProvider -} - -func (s *StreamSender) Send(msg *beam.Message) (ret beam.Receiver, err error) { - if msg.Att != nil { - return nil, fmt.Errorf("file attachment not yet implemented for spdy transport") - } - - var fin bool - if beam.RetPipe.Equals(msg.Ret) { - fin = false - } else { - fin = true - } - headers := http.Header{ - "Verb": []string{msg.Verb.String()}, - "Args": []string{encodeArgs(msg.Args)}, - } - - stream, streamErr := s.stream.CreateSubStream(headers, fin) - if streamErr != nil { - return nil, streamErr - } - - streamChan := make(chan *spdystream.Stream) - s.streamChans.addStreamChan(stream, streamChan) - - if beam.RetPipe.Equals(msg.Ret) { - ret = &StreamReceiver{stream: stream, streamChans: s.streamChans} - } else { - ret = beam.NopReceiver{} - } - - return -} - -func (s *StreamSender) Close() error { - // TODO Remove stream from stream chans - return s.stream.Close() -} diff --git a/beam/http2/stream_test.go b/beam/http2/stream_test.go deleted file mode 100644 index 8ae9d27a2b..0000000000 --- a/beam/http2/stream_test.go +++ /dev/null @@ -1,159 +0,0 @@ -package http2 - -import ( - //"bytes" - "github.com/docker/libswarm/beam" - //"github.com/docker/spdystream" - "io" - "net" - "testing" -) - -func TestBeamSession(t *testing.T) { - end := make(chan bool) - listen := "localhost:7543" - server, serverErr := runServer(listen, t, end) - if serverErr != nil { - t.Fatalf("Error initializing server: %s", serverErr) - } - - conn, connErr := net.Dial("tcp", listen) - if connErr != nil { - t.Fatalf("Error dialing server: %s", connErr) - } - - sender, senderErr := NewStreamSession(conn) - if senderErr != nil { - t.Fatalf("Error creating sender: %s", senderErr) - } - - // Ls interaction - receiver, sendErr := sender.Send(&beam.Message{Verb: beam.Ls, Ret: beam.RetPipe}) - if sendErr != nil { - t.Fatalf("Error sending beam message: %s", sendErr) - } - message, receiveErr := receiver.Receive(0) - if receiveErr != nil { - t.Fatalf("Error receiving beam message: %s", receiveErr) - } - if message.Verb != beam.Set { - t.Errorf("Unexpected message name:\nActual: %s\nExpected: %s", message.Verb, beam.Ls.String()) - } - if len(message.Args) != 3 { - t.Fatalf("Unexpected args length\nActual: %d\nExpected: %d", len(message.Args), 3) - } - if message.Args[0] != "file1" { - t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[0], "file1") - } - if message.Args[1] != "file2" { - t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[1], "file2") - } - if message.Args[2] != string([]byte{0x00, 0x00, 0x00}) { - t.Errorf("Unexpected arg[0]\nActual: %s\nExpected: %s", message.Args[2], []byte{0x00, 0x00, 0x00}) - } - - // Attach interactions - receiver, sendErr = sender.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) - if sendErr != nil { - t.Fatalf("Error sending beam message: %s", sendErr) - } - message, receiveErr = receiver.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving beam message: %s", receiveErr) - } - if message.Verb != beam.Ack { - t.Errorf("Unexpected message name:\nActual: %s\nExpected: %s", message.Verb, beam.Ack.String()) - } - - // TODO full connect interaction - //if message.Att == nil { - // t.Fatalf("Missing attachment on message") - //} - - //testBytes := []byte("Hello") - //n, writeErr := message.Att.Write(testBytes) - //if writeErr != nil { - // t.Fatalf("Error writing bytes: %s", writeErr) - //} - //if n != 5 { - // t.Fatalf("Unexpected number of bytes read:\nActual: %d\nExpected: 5", n) - //} - - //buf := make([]byte, 10) - //n, readErr := message.Att.Read(buf) - //if readErr != nil { - // t.Fatalf("Error writing bytes: %s", readErr) - //} - //if n != 5 { - // t.Fatalf("Unexpected number of bytes read:\nActual: %d\nExpected: 5", n) - //} - //if bytes.Compare(buf[:n], testBytes) != 0 { - // t.Fatalf("Did not receive expected message:\nActual: %s\nExpectd: %s", buf, testBytes) - //} - - closeErr := server.Close() - if closeErr != nil { - t.Fatalf("Error closing server: %s", closeErr) - } - - closeErr = sender.Close() - if closeErr != nil { - t.Fatalf("Error closing sender: %s", closeErr) - } - <-end -} - -func runServer(listen string, t *testing.T, endChan chan bool) (io.Closer, error) { - listener, lErr := net.Listen("tcp", listen) - if lErr != nil { - return nil, lErr - } - - session, sessionErr := NewListenSession(listener, NoAuthenticator) - if sessionErr != nil { - t.Fatalf("Error creating session: %s", sessionErr) - } - - go session.Serve() - - go func() { - defer close(endChan) - // Ls exchange - message, receiveErr := session.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving on server: %s", receiveErr) - } - if message.Verb != beam.Ls { - t.Fatalf("Unexpected verb: %s", message.Verb) - } - receiver, sendErr := message.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{"file1", "file2", string([]byte{0x00, 0x00, 0x00})}}) - if sendErr != nil { - t.Fatalf("Error sending set message: %s", sendErr) - } - _, receiveErr = receiver.Receive(0) - if receiveErr == nil { - t.Fatalf("No error received from empty receiver") - } - if receiveErr != io.EOF { - t.Fatalf("Expected error from empty receiver: %s", receiveErr) - } - - // Connect exchange - message, receiveErr = session.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving on server: %s", receiveErr) - } - if message.Verb != beam.Attach { - t.Fatalf("Unexpected verb: %s", message.Verb) - } - receiver, sendErr = message.Ret.Send(&beam.Message{Verb: beam.Ack}) - if sendErr != nil { - t.Fatalf("Error sending set message: %s", sendErr) - } - - // TODO full connect interaction - - }() - - return listener, nil -} diff --git a/beam/inmem.go b/beam/inmem.go deleted file mode 100644 index 20593fb715..0000000000 --- a/beam/inmem.go +++ /dev/null @@ -1,206 +0,0 @@ -package beam - -import ( - "io" - "sync" -) - -func Pipe() (*PipeReceiver, *PipeSender) { - p := new(pipe) - p.rwait.L = &p.l - p.wwait.L = &p.l - r := &PipeReceiver{p} - w := &PipeSender{p} - return r, w -} - -type pipe struct { - rwait sync.Cond - wwait sync.Cond - l sync.Mutex - rl sync.Mutex - wl sync.Mutex - rerr error // if reader closed, error to give writes - werr error // if writer closed, error to give reads - msg *Message -} - -func (p *pipe) psend(msg *Message) error { - var err error - // One writer at a time. - p.wl.Lock() - defer p.wl.Unlock() - - p.l.Lock() - defer p.l.Unlock() - p.msg = msg - p.rwait.Signal() - for { - if p.msg == nil { - break - } - if p.rerr != nil { - err = p.rerr - break - } - if p.werr != nil { - err = io.ErrClosedPipe - } - p.wwait.Wait() - } - p.msg = nil // in case of rerr or werr - return err -} - -func (p *pipe) send(msg *Message) (ret Receiver, err error) { - // Prepare nested Receiver if requested - if RetPipe.Equals(msg.Ret) { - ret, msg.Ret = Pipe() - } - err = p.psend(msg) - return -} - -func (p *pipe) preceive() (*Message, error) { - p.rl.Lock() - defer p.rl.Unlock() - - p.l.Lock() - defer p.l.Unlock() - for { - if p.rerr != nil { - return nil, io.ErrClosedPipe - } - if p.msg != nil { - break - } - if p.werr != nil { - return nil, p.werr - } - p.rwait.Wait() - } - msg := p.msg - p.msg = nil - p.wwait.Signal() - return msg, nil -} - -func (p *pipe) receive(mode int) (*Message, error) { - msg, err := p.preceive() - if err != nil { - return nil, err - } - if msg.Ret == nil { - msg.Ret = NopSender{} - } - if mode&Ret == 0 { - msg.Ret.Close() - } - return msg, nil -} - -func (p *pipe) rclose(err error) { - if err == nil { - err = io.ErrClosedPipe - } - p.l.Lock() - defer p.l.Unlock() - p.rerr = err - p.rwait.Signal() - p.wwait.Signal() -} - -func (p *pipe) wclose(err error) { - if err == nil { - err = io.EOF - } - p.l.Lock() - defer p.l.Unlock() - p.werr = err - p.rwait.Signal() - p.wwait.Signal() -} - -// PipeReceiver - -type PipeReceiver struct { - p *pipe -} - -func (r *PipeReceiver) Receive(mode int) (*Message, error) { - return r.p.receive(mode) -} - -func (r *PipeReceiver) SendTo(dst Sender) (int, error) { - var n int - // If the destination is a PipeSender, we can cheat - pdst, ok := dst.(*PipeSender) - if !ok { - return 0, ErrIncompatibleSender - } - for { - pmsg, err := r.p.preceive() - if err == io.EOF { - break - } - if err != nil { - return n, err - } - if err := pdst.p.psend(pmsg); err != nil { - return n, err - } - } - n++ - return n, nil -} - -func (r *PipeReceiver) Close() error { - return r.CloseWithError(nil) -} - -func (r *PipeReceiver) CloseWithError(err error) error { - r.p.rclose(err) - return nil -} - -// PipeSender - -type PipeSender struct { - p *pipe -} - -func (w *PipeSender) Send(msg *Message) (Receiver, error) { - return w.p.send(msg) -} - -func (w *PipeSender) ReceiveFrom(src Receiver) (int, error) { - var n int - // If the destination is a PipeReceiver, we can cheat - psrc, ok := src.(*PipeReceiver) - if !ok { - return 0, ErrIncompatibleReceiver - } - for { - pmsg, err := psrc.p.preceive() - if err == io.EOF { - break - } - if err != nil { - return n, err - } - if err := w.p.psend(pmsg); err != nil { - return n, err - } - n++ - } - return n, nil -} - -func (w *PipeSender) Close() error { - return w.CloseWithError(nil) -} - -func (w *PipeSender) CloseWithError(err error) error { - w.p.wclose(err) - return nil -} diff --git a/beam/inmem_test.go b/beam/inmem_test.go deleted file mode 100644 index e3826e9148..0000000000 --- a/beam/inmem_test.go +++ /dev/null @@ -1,145 +0,0 @@ -package beam - -import ( - "fmt" - "github.com/dotcloud/docker/pkg/testutils" - "io/ioutil" - "os" - "testing" -) - -func TestInmemRetPipe(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - wait := make(chan struct{}) - go func() { - defer close(wait) - ret, err := w.Send(&Message{Verb: Log, Args: []string{"hello"}, Ret: RetPipe}) - if err != nil { - t.Fatal(err) - } - msg, err := ret.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != Ack { - t.Fatalf("%#v", msg) - } - if msg.Args[0] != "this better not crash" { - t.Fatalf("%#v", msg) - } - }() - msg, err := r.Receive(Ret) - if err != nil { - t.Fatal(err) - } - if _, err := msg.Ret.Send(&Message{Verb: Ack, Args: []string{"this better not crash"}}); err != nil { - t.Fatal(err) - } - <-wait -} - -func TestSimpleSend(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - go func() { - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != Log { - t.Fatalf("%#v", *msg) - } - if msg.Args[0] != "hello world" { - t.Fatalf("%#v", *msg) - } - }() - if _, err := w.Send(&Message{Verb: Log, Args: []string{"hello world"}}); err != nil { - t.Fatal(err) - } - }) -} - -func TestSendReply(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - // Send - go func() { - ret, err := w.Send(&Message{Args: []string{"this is the request"}, Ret: RetPipe}) - if err != nil { - t.Fatal(err) - } - if ret == nil { - t.Fatalf("ret = nil\n") - } - // Read for a reply - msg, err := ret.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the reply" { - t.Fatalf("%#v", msg) - } - }() - // Receive a message with mode=Ret - msg, err := r.Receive(Ret) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the request" { - t.Fatalf("%#v", msg) - } - if msg.Ret == nil { - t.Fatalf("%#v", msg) - } - // Send a reply - _, err = msg.Ret.Send(&Message{Args: []string{"this is the reply"}}) - if err != nil { - t.Fatal(err) - } - }) -} - -func TestSendFile(t *testing.T) { - r, w := Pipe() - defer r.Close() - defer w.Close() - tmp, err := ioutil.TempFile("", "beam-test-") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tmp.Name()) - fmt.Fprintf(tmp, "hello world\n") - tmp.Sync() - tmp.Seek(0, 0) - testutils.Timeout(t, func() { - go func() { - _, err := w.Send(&Message{Verb: File, Args: []string{"path=" + tmp.Name()}, Att: tmp}) - if err != nil { - t.Fatal(err) - } - }() - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != File { - t.Fatalf("%#v", msg) - } - if msg.Args[0] != "path="+tmp.Name() { - t.Fatalf("%#v", msg) - } - txt, err := ioutil.ReadAll(msg.Att) - if err != nil { - t.Fatal(err) - } - if string(txt) != "hello world\n" { - t.Fatalf("%s\n", txt) - } - }) -} diff --git a/beam/message.go b/beam/message.go new file mode 100644 index 0000000000..eac5b23c76 --- /dev/null +++ b/beam/message.go @@ -0,0 +1,169 @@ +package beam + +import ( + "github.com/docker/libchan" + "github.com/docker/libchan/data" + + "fmt" + "os" +) + +type Message struct { + Verb + Args []string + Ret Sender + Att *os.File +} + +type Sender interface { + Send(msg *Message) (Receiver, error) + Close() error + Unwrap() libchan.Sender +} + +type Receiver interface { + Receive(mode int) (*Message, error) + Unwrap() libchan.Receiver +} + +type senderWrapper struct { + libchan.Sender +} + +func WrapSender(s libchan.Sender) Sender { + return &senderWrapper{s} +} + +func (s *senderWrapper) Send(msg *Message) (Receiver, error) { + recv, err := s.Sender.Send(msg.LibchanMessage()) + if err != nil { + return nil, err + } + return WrapReceiver(recv), err +} + +func (s *senderWrapper) Unwrap() libchan.Sender { + return s.Sender +} + +type receiverWrapper struct { + libchan.Receiver +} + +func WrapReceiver(r libchan.Receiver) Receiver { + return &receiverWrapper{r} +} + +func (r *receiverWrapper) Receive(mode int) (*Message, error) { + lcm, err := r.Receiver.Receive(mode) + if err != nil { + return nil, err + } + return DecodeLibchanMessage(lcm) +} + +func (r *receiverWrapper) Unwrap() libchan.Receiver { + return r.Receiver +} + +type senderUnwrapper struct { + Sender +} + +func (su *senderUnwrapper) Send(lcm *libchan.Message) (libchan.Receiver, error) { + msg, err := DecodeLibchanMessage(lcm) + if err != nil { + return nil, err + } + recv, err := su.Sender.Send(msg) + if err != nil { + return nil, err + } + return &receiverUnwrapper{recv}, nil +} + +type receiverUnwrapper struct { + Receiver +} + +func (ru *receiverUnwrapper) Receive(mode int) (*libchan.Message, error) { + msg, err := ru.Receiver.Receive(mode) + if err != nil { + return nil, err + } + return msg.LibchanMessage(), nil +} + +func Pipe() (Receiver, Sender) { + r, s := libchan.Pipe() + return WrapReceiver(r), WrapSender(s) +} + +func Copy(s Sender, r Receiver) (int, error) { + return libchan.Copy(s.Unwrap(), r.Unwrap()) +} + +func Handler(h func(msg *Message) error) Sender { + lch := libchan.Handler(func(lcm *libchan.Message) { + ret := WrapSender(lcm.Ret) + msg, err := DecodeLibchanMessage(lcm) + if err != nil { + ret.Send(&Message{Verb: Error, Args: []string{err.Error()}}) + } + if err = h(msg); err != nil { + ret.Send(&Message{Verb: Error, Args: []string{err.Error()}}) + } + }) + return WrapSender(lch) +} + +var RetPipe = WrapSender(libchan.RetPipe) +var Ret = libchan.Ret + +var notImplementedMsg = &Message{Verb: Error, Args: []string{"not implemented"}} +var NotImplemented = WrapSender(libchan.Repeater(notImplementedMsg.LibchanMessage())) + +func DecodeLibchanMessage(lcm *libchan.Message) (*Message, error) { + decoded, err := data.Decode(string(lcm.Data)) + if err != nil { + return nil, err + } + verbList, exists := decoded["verb"] + if !exists { + return nil, fmt.Errorf("No 'verb' key found in message data: %s", lcm.Data) + } + if len(verbList) != 1 { + return nil, fmt.Errorf("Expected exactly one verb, got %d: %#v", len(verbList), verbList) + } + verb, err := VerbFromString(verbList[0]) + if err != nil { + return nil, err + } + args, exists := decoded["args"] + if !exists { + return nil, fmt.Errorf("No 'args' key found in message data: %s", lcm.Data) + } + return &Message{ + Verb: verb, + Args: args, + Ret: WrapSender(lcm.Ret), + Att: lcm.Fd, + }, nil +} + +func (m *Message) LibchanMessage() *libchan.Message { + encoded := data.Empty(). + Set("verb", m.Verb.String()). + Set("args", m.Args...) + + var ret libchan.Sender + if m.Ret != nil { + ret = m.Ret.Unwrap() + } + + return &libchan.Message{ + Data: []byte(encoded), + Ret: ret, + Fd: m.Att, + } +} diff --git a/beam/nop.go b/beam/nop.go deleted file mode 100644 index 603d9b2ec5..0000000000 --- a/beam/nop.go +++ /dev/null @@ -1,21 +0,0 @@ -package beam - -import ( - "io" -) - -type NopSender struct{} - -func (s NopSender) Send(msg *Message) (Receiver, error) { - return NopReceiver{}, nil -} - -func (s NopSender) Close() error { - return nil -} - -type NopReceiver struct{} - -func (r NopReceiver) Receive(mode int) (*Message, error) { - return nil, io.EOF -} diff --git a/beam/server.go b/beam/server.go index 362a43adea..5db5f513aa 100644 --- a/beam/server.go +++ b/beam/server.go @@ -1,6 +1,8 @@ package beam import ( + "github.com/docker/libchan" + "fmt" ) @@ -70,3 +72,7 @@ func (s *Server) Send(msg *Message) (Receiver, error) { func (s *Server) Close() error { return fmt.Errorf("can't close") } + +func (s *Server) Unwrap() libchan.Sender { + return &senderUnwrapper{s} +} diff --git a/beam/unix/beam.go b/beam/unix/beam.go deleted file mode 100644 index 9e6dc90f1b..0000000000 --- a/beam/unix/beam.go +++ /dev/null @@ -1,166 +0,0 @@ -package unix - -import ( - "fmt" - "io" - "os" -) - -type Sender interface { - Send([]byte, *os.File) error -} - -type Receiver interface { - Receive() ([]byte, *os.File, error) -} - -type ReceiveCloser interface { - Receiver - Close() error -} - -type SendCloser interface { - Sender - Close() error -} - -type ReceiveSender interface { - Receiver - Sender -} - -const ( - R int = 1 << (32 - 1 - iota) - W -) - -func sendPipe(dst Sender, data []byte, mode int) (*os.File, error) { - r, w, err := os.Pipe() - if err != nil { - return nil, err - } - var ( - remote *os.File - local *os.File - ) - if mode == R { - remote = r - local = w - } else if mode == W { - remote = w - local = r - } - if err := dst.Send(data, remote); err != nil { - local.Close() - remote.Close() - return nil, err - } - return local, nil - -} - -// SendRPipe create a pipe and sends its *read* end attached in a beam message -// to `dst`, with `data` as the message payload. -// It returns the *write* end of the pipe, or an error. -func SendRPipe(dst Sender, data []byte) (*os.File, error) { - return sendPipe(dst, data, R) -} - -// SendWPipe create a pipe and sends its *read* end attached in a beam message -// to `dst`, with `data` as the message payload. -// It returns the *write* end of the pipe, or an error. -func SendWPipe(dst Sender, data []byte) (*os.File, error) { - return sendPipe(dst, data, W) -} - -func SendConn(dst Sender, data []byte) (conn *UnixConn, err error) { - local, remote, err := SocketPair() - if err != nil { - return nil, err - } - defer func() { - if err != nil { - local.Close() - remote.Close() - } - }() - conn, err = FileConn(local) - if err != nil { - return nil, err - } - local.Close() - if err := dst.Send(data, remote); err != nil { - return nil, err - } - return conn, nil -} - -func ReceiveConn(src Receiver) ([]byte, *UnixConn, error) { - for { - data, f, err := src.Receive() - if err != nil { - return nil, nil, err - } - if f == nil { - // Skip empty attachments - continue - } - conn, err := FileConn(f) - if err != nil { - // Skip beam attachments which are not connections - // (for example might be a regular file, directory etc) - continue - } - return data, conn, nil - } - panic("impossibru!") - return nil, nil, nil -} - -func Copy(dst Sender, src Receiver) (int, error) { - var n int - for { - payload, attachment, err := src.Receive() - if err == io.EOF { - return n, nil - } else if err != nil { - return n, err - } - if err := dst.Send(payload, attachment); err != nil { - if attachment != nil { - attachment.Close() - } - return n, err - } - n++ - } - panic("impossibru!") - return n, nil -} - -// MsgDesc returns a human readable description of a beam message, usually -// for debugging purposes. -func MsgDesc(payload []byte, attachment *os.File) string { - var filedesc string = "" - if attachment != nil { - filedesc = fmt.Sprintf("%d", attachment.Fd()) - } - return fmt.Sprintf("'%s'[%s]", payload, filedesc) -} - -type devnull struct{} - -func Devnull() ReceiveSender { - return devnull{} -} - -func (d devnull) Send(p []byte, a *os.File) error { - if a != nil { - a.Close() - } - return nil -} - -func (d devnull) Receive() ([]byte, *os.File, error) { - return nil, nil, io.EOF -} diff --git a/beam/unix/beam_test.go b/beam/unix/beam_test.go deleted file mode 100644 index 83bd91e0d3..0000000000 --- a/beam/unix/beam_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package unix - -import ( - "github.com/dotcloud/docker/pkg/beam/data" - "testing" -) - -func TestSendConn(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - go func() { - conn, err := SendConn(a, data.Empty().Set("type", "connection").Bytes()) - if err != nil { - t.Fatal(err) - } - if err := conn.Send(data.Empty().Set("foo", "bar").Bytes(), nil); err != nil { - t.Fatal(err) - } - conn.CloseWrite() - }() - payload, conn, err := ReceiveConn(b) - if err != nil { - t.Fatal(err) - } - if val := data.Message(string(payload)).Get("type"); val == nil || val[0] != "connection" { - t.Fatalf("%v != %v\n", val, "connection") - } - msg, _, err := conn.Receive() - if err != nil { - t.Fatal(err) - } - if val := data.Message(string(msg)).Get("foo"); val == nil || val[0] != "bar" { - t.Fatalf("%v != %v\n", val, "bar") - } -} diff --git a/beam/unix/conn.go b/beam/unix/conn.go deleted file mode 100644 index 2d0acef440..0000000000 --- a/beam/unix/conn.go +++ /dev/null @@ -1,144 +0,0 @@ -package unix - -import ( - "fmt" - "os" - "strconv" - - "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/data" -) - -func Pair() (*Conn, *Conn, error) { - c1, c2, err := USocketPair() - if err != nil { - return nil, nil, err - } - return &Conn{c1}, &Conn{c2}, nil -} - -type Conn struct { - *UnixConn -} - -func sendablePair() (conn *UnixConn, remoteFd *os.File, err error) { - // Get 2 *os.File - local, remote, err := SocketPair() - if err != nil { - return nil, nil, err - } - defer func() { - if err != nil { - local.Close() - remote.Close() - } - }() - // Convert 1 to *net.UnixConn - conn, err = FileConn(local) - if err != nil { - return nil, nil, err - } - local.Close() - // Return the "mismatched" pair - return conn, remote, nil -} - -// This implements beam.Sender.Close which *only closes the sender*. -// This is similar to the pattern of only closing go channels from -// the sender's side. -// If you want to close the entire connection, call Conn.UnixConn.Close. -func (c *Conn) Close() error { - return c.UnixConn.CloseWrite() -} - -func (c *Conn) Send(msg *beam.Message) (beam.Receiver, error) { - if msg.Att != nil { - return nil, fmt.Errorf("file attachment not yet implemented in unix transport") - } - parts := []string{fmt.Sprintf("%d", msg.Verb)} - parts = append(parts, msg.Args...) - b := []byte(data.EncodeList(parts)) - // Setup nested streams - var ( - fd *os.File - ret beam.Receiver - err error - ) - // Caller requested a return pipe - if beam.RetPipe.Equals(msg.Ret) { - local, remote, err := sendablePair() - if err != nil { - return nil, err - } - fd = remote - ret = &Conn{local} - // Caller specified its own return channel - } else if msg.Ret != nil { - // The specified return channel is a unix conn: engaging cheat mode! - if retConn, ok := msg.Ret.(*Conn); ok { - fd, err = retConn.UnixConn.File() - if err != nil { - return nil, fmt.Errorf("error passing return channel: %v", err) - } - // Close duplicate fd - retConn.UnixConn.Close() - // The specified return channel is an unknown type: proxy messages. - } else { - local, remote, err := sendablePair() - if err != nil { - return nil, fmt.Errorf("error passing return channel: %v", err) - } - fd = remote - // FIXME: do we need a reference no all these background tasks? - go func() { - // Copy messages from the remote return channel to the local return channel. - // When the remote return channel is closed, also close the local return channel. - localConn := &Conn{local} - beam.Copy(msg.Ret, localConn) - msg.Ret.Close() - localConn.Close() - }() - } - } - if err := c.UnixConn.Send(b, fd); err != nil { - return nil, err - } - return ret, nil -} - -func (c *Conn) Receive(mode int) (*beam.Message, error) { - b, fd, err := c.UnixConn.Receive() - if err != nil { - return nil, err - } - parts, n, err := data.DecodeList(string(b)) - if err != nil { - return nil, err - } - if n != len(b) { - return nil, fmt.Errorf("garbage data %#v", b[:n]) - } - if len(parts) == 0 { - return nil, fmt.Errorf("malformed message") - } - v, err := strconv.ParseUint(parts[0], 10, 32) - if err != nil { - return nil, err - } - msg := &beam.Message{Verb: beam.Verb(v), Args: parts[1:]} - - // Apply mode mask - if fd != nil { - subconn, err := FileConn(fd) - if err != nil { - return nil, err - } - fd.Close() - if mode&beam.Ret != 0 { - msg.Ret = &Conn{subconn} - } else { - subconn.CloseWrite() - } - } - return msg, nil -} diff --git a/beam/unix/conn_test.go b/beam/unix/conn_test.go deleted file mode 100644 index 09884cc6e7..0000000000 --- a/beam/unix/conn_test.go +++ /dev/null @@ -1,74 +0,0 @@ -package unix - -import ( - "github.com/docker/libswarm/beam" - "github.com/dotcloud/docker/pkg/testutils" - "testing" -) - -func TestPair(t *testing.T) { - r, w, err := Pair() - if err != nil { - t.Fatal("Unexpected error") - } - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - go func() { - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != beam.Log { - t.Fatalf("%#v", *msg) - } - if msg.Args[0] != "hello world" { - t.Fatalf("%#v", *msg) - } - }() - _, err := w.Send(&beam.Message{Verb: beam.Log, Args: []string{"hello world"}}) - if err != nil { - t.Fatal(err) - } - }) -} - -func TestSendReply(t *testing.T) { - r, w, err := Pair() - if err != nil { - t.Fatal(err) - } - defer r.Close() - defer w.Close() - testutils.Timeout(t, func() { - // Send - go func() { - // Send a message with mode=R - ret, err := w.Send(&beam.Message{Args: []string{"this is the request"}, Ret: beam.RetPipe}) - if err != nil { - t.Fatal(err) - } - // Read for a reply - msg, err := ret.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the reply" { - t.Fatalf("%#v", msg) - } - }() - // Receive a message with mode=W - msg, err := r.Receive(beam.Ret) - if err != nil { - t.Fatal(err) - } - if msg.Args[0] != "this is the request" { - t.Fatalf("%#v", msg) - } - // Send a reply - _, err = msg.Ret.Send(&beam.Message{Args: []string{"this is the reply"}}) - if err != nil { - t.Fatal(err) - } - }) -} diff --git a/beam/unix/unix.go b/beam/unix/unix.go deleted file mode 100644 index 594eb21b10..0000000000 --- a/beam/unix/unix.go +++ /dev/null @@ -1,317 +0,0 @@ -package unix - -import ( - "bufio" - "fmt" - "net" - "os" - "syscall" -) - -func debugCheckpoint(msg string, args ...interface{}) { - if os.Getenv("DEBUG") == "" { - return - } - os.Stdout.Sync() - tty, _ := os.OpenFile("/dev/tty", os.O_RDWR, 0700) - fmt.Fprintf(tty, msg, args...) - bufio.NewScanner(tty).Scan() - tty.Close() -} - -type UnixConn struct { - *net.UnixConn - fds []*os.File -} - -// Framing: -// In order to handle framing in Send/Recieve, as these give frame -// boundaries we use a very simple 4 bytes header. It is a big endiand -// uint32 where the high bit is set if the message includes a file -// descriptor. The rest of the uint32 is the length of the next frame. -// We need the bit in order to be able to assign recieved fds to -// the right message, as multiple messages may be coalesced into -// a single recieve operation. -func makeHeader(data []byte, fds []int) ([]byte, error) { - header := make([]byte, 4) - - length := uint32(len(data)) - - if length > 0x7fffffff { - return nil, fmt.Errorf("Data to large") - } - - if len(fds) != 0 { - length = length | 0x80000000 - } - header[0] = byte((length >> 24) & 0xff) - header[1] = byte((length >> 16) & 0xff) - header[2] = byte((length >> 8) & 0xff) - header[3] = byte((length >> 0) & 0xff) - - return header, nil -} - -func parseHeader(header []byte) (uint32, bool) { - length := uint32(header[0])<<24 | uint32(header[1])<<16 | uint32(header[2])<<8 | uint32(header[3]) - hasFd := length&0x80000000 != 0 - length = length & ^uint32(0x80000000) - - return length, hasFd -} - -func FileConn(f *os.File) (*UnixConn, error) { - conn, err := net.FileConn(f) - if err != nil { - return nil, err - } - uconn, ok := conn.(*net.UnixConn) - if !ok { - conn.Close() - return nil, fmt.Errorf("%d: not a unix connection", f.Fd()) - } - return &UnixConn{UnixConn: uconn}, nil - -} - -// Send sends a new message on conn with data and f as payload and -// attachment, respectively. -// On success, f is closed -func (conn *UnixConn) Send(data []byte, f *os.File) error { - { - var fd int = -1 - if f != nil { - fd = int(f.Fd()) - } - debugCheckpoint("===DEBUG=== about to send '%s'[%d]. Hit enter to confirm: ", data, fd) - } - var fds []int - if f != nil { - fds = append(fds, int(f.Fd())) - } - if err := conn.sendUnix(data, fds...); err != nil { - return err - } - - if f != nil { - f.Close() - } - return nil -} - -// Receive waits for a new message on conn, and receives its payload -// and attachment, or an error if any. -// -// If more than 1 file descriptor is sent in the message, they are all -// closed except for the first, which is the attachment. -// It is legal for a message to have no attachment or an empty payload. -func (conn *UnixConn) Receive() (rdata []byte, rf *os.File, rerr error) { - defer func() { - var fd int = -1 - if rf != nil { - fd = int(rf.Fd()) - } - debugCheckpoint("===DEBUG=== Receive() -> '%s'[%d]. Hit enter to continue.\n", rdata, fd) - }() - - // Read header - header := make([]byte, 4) - nRead := uint32(0) - - for nRead < 4 { - n, err := conn.receiveUnix(header[nRead:]) - if err != nil { - return nil, nil, err - } - nRead = nRead + uint32(n) - } - - length, hasFd := parseHeader(header) - - if hasFd { - if len(conn.fds) == 0 { - return nil, nil, fmt.Errorf("No expected file descriptor in message") - } - - rf = conn.fds[0] - conn.fds = conn.fds[1:] - } - - rdata = make([]byte, length) - - nRead = 0 - for nRead < length { - n, err := conn.receiveUnix(rdata[nRead:]) - if err != nil { - return nil, nil, err - } - nRead = nRead + uint32(n) - } - - return -} - -func (conn *UnixConn) receiveUnix(buf []byte) (int, error) { - oob := make([]byte, syscall.CmsgSpace(4)) - bufn, oobn, _, _, err := conn.ReadMsgUnix(buf, oob) - if err != nil { - return 0, err - } - fd := extractFd(oob[:oobn]) - if fd != -1 { - f := os.NewFile(uintptr(fd), "") - conn.fds = append(conn.fds, f) - } - - return bufn, nil -} - -func (conn *UnixConn) sendUnix(data []byte, fds ...int) error { - header, err := makeHeader(data, fds) - if err != nil { - return err - } - - // There is a bug in conn.WriteMsgUnix where it doesn't correctly return - // the number of bytes writte (http://code.google.com/p/go/issues/detail?id=7645) - // So, we can't rely on the return value from it. However, we must use it to - // send the fds. In order to handle this we only write one byte using WriteMsgUnix - // (when we have to), as that can only ever block or fully suceed. We then write - // the rest with conn.Write() - // The reader side should not rely on this though, as hopefully this gets fixed - // in go later. - written := 0 - if len(fds) != 0 { - oob := syscall.UnixRights(fds...) - wrote, _, err := conn.WriteMsgUnix(header[0:1], oob, nil) - if err != nil { - return err - } - written = written + wrote - } - - for written < len(header) { - wrote, err := conn.Write(header[written:]) - if err != nil { - return err - } - written = written + wrote - } - - written = 0 - for written < len(data) { - wrote, err := conn.Write(data[written:]) - if err != nil { - return err - } - written = written + wrote - } - - return nil -} - -func extractFd(oob []byte) int { - // Grab forklock to make sure no forks accidentally inherit the new - // fds before they are made CLOEXEC - // There is a slight race condition between ReadMsgUnix returns and - // when we grap the lock, so this is not perfect. Unfortunately - // There is no way to pass MSG_CMSG_CLOEXEC to recvmsg() nor any - // way to implement non-blocking i/o in go, so this is hard to fix. - syscall.ForkLock.Lock() - defer syscall.ForkLock.Unlock() - scms, err := syscall.ParseSocketControlMessage(oob) - if err != nil { - return -1 - } - - foundFd := -1 - for _, scm := range scms { - fds, err := syscall.ParseUnixRights(&scm) - if err != nil { - continue - } - - for _, fd := range fds { - if foundFd == -1 { - syscall.CloseOnExec(fd) - foundFd = fd - } else { - syscall.Close(fd) - } - } - } - - return foundFd -} - -func socketpair() ([2]int, error) { - return syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM|syscall.FD_CLOEXEC, 0) -} - -// SocketPair is a convenience wrapper around the socketpair(2) syscall. -// It returns a unix socket of type SOCK_STREAM in the form of 2 file descriptors -// not bound to the underlying filesystem. -// Messages sent on one end are received on the other, and vice-versa. -// It is the caller's responsibility to close both ends. -func SocketPair() (a *os.File, b *os.File, err error) { - defer func() { - var ( - fdA int = -1 - fdB int = -1 - ) - if a != nil { - fdA = int(a.Fd()) - } - if b != nil { - fdB = int(b.Fd()) - } - debugCheckpoint("===DEBUG=== SocketPair() = [%d-%d]. Hit enter to confirm: ", fdA, fdB) - }() - pair, err := socketpair() - if err != nil { - return nil, nil, err - } - return os.NewFile(uintptr(pair[0]), ""), os.NewFile(uintptr(pair[1]), ""), nil -} - -func USocketPair() (*UnixConn, *UnixConn, error) { - debugCheckpoint("===DEBUG=== USocketPair(). Hit enter to confirm: ") - defer debugCheckpoint("===DEBUG=== USocketPair() returned. Hit enter to confirm ") - a, b, err := SocketPair() - if err != nil { - return nil, nil, err - } - defer a.Close() - defer b.Close() - uA, err := FileConn(a) - if err != nil { - return nil, nil, err - } - uB, err := FileConn(b) - if err != nil { - uA.Close() - return nil, nil, err - } - return uA, uB, nil -} - -// FdConn wraps a file descriptor in a standard *net.UnixConn object, or -// returns an error if the file descriptor does not point to a unix socket. -// This creates a duplicate file descriptor. It's the caller's responsibility -// to close both. -func FdConn(fd int) (n *net.UnixConn, err error) { - { - debugCheckpoint("===DEBUG=== FdConn([%d]) = (unknown fd). Hit enter to confirm: ", fd) - } - f := os.NewFile(uintptr(fd), fmt.Sprintf("%d", fd)) - conn, err := net.FileConn(f) - if err != nil { - return nil, err - } - uconn, ok := conn.(*net.UnixConn) - if !ok { - conn.Close() - return nil, fmt.Errorf("%d: not a unix connection", fd) - } - return uconn, nil -} diff --git a/beam/unix/unix_test.go b/beam/unix/unix_test.go deleted file mode 100644 index 7f947760b3..0000000000 --- a/beam/unix/unix_test.go +++ /dev/null @@ -1,237 +0,0 @@ -package unix - -import ( - "fmt" - "io/ioutil" - "testing" -) - -func TestSocketPair(t *testing.T) { - a, b, err := SocketPair() - if err != nil { - t.Fatal(err) - } - go func() { - a.Write([]byte("hello world!")) - fmt.Printf("done writing. closing\n") - a.Close() - fmt.Printf("done closing\n") - }() - data, err := ioutil.ReadAll(b) - if err != nil { - t.Fatal(err) - } - fmt.Printf("--> %s\n", data) - fmt.Printf("still open: %v\n", a.Fd()) -} - -func TestUSocketPair(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - - data := "hello world!" - go func() { - a.Write([]byte(data)) - a.Close() - }() - res := make([]byte, 1024) - size, err := b.Read(res) - if err != nil { - t.Fatal(err) - } - if size != len(data) { - t.Fatal("Unexpected size") - } - if string(res[0:size]) != data { - t.Fatal("Unexpected data") - } -} - -func TestSendUnixSocket(t *testing.T) { - a1, a2, err := USocketPair() - if err != nil { - t.Fatal(err) - } - // defer a1.Close() - // defer a2.Close() - b1, b2, err := USocketPair() - if err != nil { - t.Fatal(err) - } - // defer b1.Close() - // defer b2.Close() - glueA, glueB, err := SocketPair() - if err != nil { - t.Fatal(err) - } - // defer glueA.Close() - // defer glueB.Close() - go func() { - err := b2.Send([]byte("a"), glueB) - if err != nil { - t.Fatal(err) - } - }() - go func() { - err := a2.Send([]byte("b"), glueA) - if err != nil { - t.Fatal(err) - } - }() - connAhdr, connA, err := a1.Receive() - if err != nil { - t.Fatal(err) - } - if string(connAhdr) != "b" { - t.Fatalf("unexpected: %s", connAhdr) - } - connBhdr, connB, err := b1.Receive() - if err != nil { - t.Fatal(err) - } - if string(connBhdr) != "a" { - t.Fatalf("unexpected: %s", connBhdr) - } - fmt.Printf("received both ends: %v <-> %v\n", connA.Fd(), connB.Fd()) - go func() { - fmt.Printf("sending message on %v\n", connA.Fd()) - connA.Write([]byte("hello world")) - connA.Sync() - fmt.Printf("closing %v\n", connA.Fd()) - connA.Close() - }() - data, err := ioutil.ReadAll(connB) - if err != nil { - t.Fatal(err) - } - fmt.Printf("---> %s\n", data) - -} - -// Ensure we get proper segmenting of messages -func TestSendSegmenting(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - - extrafd1, extrafd2, err := SocketPair() - if err != nil { - t.Fatal(err) - } - extrafd2.Close() - - go func() { - a.Send([]byte("message 1"), nil) - a.Send([]byte("message 2"), extrafd1) - a.Send([]byte("message 3"), nil) - }() - - msg1, file1, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if string(msg1) != "message 1" { - t.Fatal("unexpected msg1:", string(msg1)) - } - if file1 != nil { - t.Fatal("unexpectedly got file1") - } - - msg2, file2, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if string(msg2) != "message 2" { - t.Fatal("unexpected msg2:", string(msg2)) - } - if file2 == nil { - t.Fatal("didn't get file2") - } - file2.Close() - - msg3, file3, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if string(msg3) != "message 3" { - t.Fatal("unexpected msg3:", string(msg3)) - } - if file3 != nil { - t.Fatal("unexpectedly got file3") - } - -} - -// Test sending a zero byte message -func TestSendEmpty(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - go func() { - a.Send([]byte{}, nil) - }() - - msg, file, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if len(msg) != 0 { - t.Fatalf("unexpected non-empty message: %v", msg) - } - if file != nil { - t.Fatal("unexpectedly got file") - } - -} - -func makeLarge(size int) []byte { - res := make([]byte, size) - for i := range res { - res[i] = byte(i % 255) - } - return res -} - -func verifyLarge(data []byte, size int) bool { - if len(data) != size { - return false - } - for i := range data { - if data[i] != byte(i%255) { - return false - } - } - return true -} - -// Test sending a large message -func TestSendLarge(t *testing.T) { - a, b, err := USocketPair() - if err != nil { - t.Fatal(err) - } - defer a.Close() - defer b.Close() - go func() { - a.Send(makeLarge(100000), nil) - }() - - msg, file, err := b.Receive() - if err != nil { - t.Fatal(err) - } - if !verifyLarge(msg, 100000) { - t.Fatalf("unexpected message (size %d)", len(msg)) - } - if file != nil { - t.Fatal("unexpectedly got file") - } -} diff --git a/beam/utils/buf.go b/beam/utils/buf.go deleted file mode 100644 index 226c1fea38..0000000000 --- a/beam/utils/buf.go +++ /dev/null @@ -1,17 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" -) - -type Buffer []*beam.Message - -func (buf *Buffer) Send(msg *beam.Message) (beam.Receiver, error) { - (*buf) = append(*buf, msg) - return beam.NopReceiver{}, nil -} - -func (buf *Buffer) Close() error { - (*buf) = nil - return nil -} diff --git a/beam/utils/queue.go b/beam/utils/queue.go deleted file mode 100644 index 9da2fad953..0000000000 --- a/beam/utils/queue.go +++ /dev/null @@ -1,41 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" -) - -type Queue struct { - *beam.PipeSender - dst beam.Sender - ch chan *beam.Message -} - -func NewQueue(dst beam.Sender, size int) *Queue { - r, w := beam.Pipe() - q := &Queue{ - PipeSender: w, - dst: dst, - ch: make(chan *beam.Message, size), - } - go func() { - defer close(q.ch) - for { - msg, err := r.Receive(beam.Ret) - if err != nil { - r.Close() - return - } - q.ch <- msg - } - }() - go func() { - for msg := range q.ch { - _, err := dst.Send(msg) - if err != nil { - r.Close() - return - } - } - }() - return q -} diff --git a/beam/utils/queue_test.go b/beam/utils/queue_test.go deleted file mode 100644 index 3319f4076a..0000000000 --- a/beam/utils/queue_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" - "testing" -) - -func TestSendRet(t *testing.T) { - r, w := beam.Pipe() - defer r.Close() - defer w.Close() - q := NewQueue(w, 1) - defer q.Close() - ret, err := q.Send(&beam.Message{Verb: beam.Log, Args: []string{"ping"}, Ret: beam.RetPipe}) - if err != nil { - t.Fatal(err) - } - go func() { - ping, err := r.Receive(beam.Ret) - if err != nil { - t.Fatal(err) - } - if _, err := ping.Ret.Send(&beam.Message{Verb: beam.Log, Args: []string{"pong"}}); err != nil { - t.Fatal(err) - } - }() - pong, err := ret.Receive(0) - if err != nil { - t.Fatal(err) - } - if pong.Verb != beam.Log { - t.Fatal(err) - } -} - -func TestSendClose(t *testing.T) { - q := NewQueue(beam.NopSender{}, 1) - q.Send(&beam.Message{Verb: beam.Error, Args: []string{"hello"}}) - q.Close() - if _, err := q.Send(&beam.Message{Verb: beam.Ack, Args: []string{"again"}}); err == nil { - t.Fatal("send on closed queue should return an error") - } -} diff --git a/beam/utils/stack.go b/beam/utils/stack.go deleted file mode 100644 index 1d2c0188ce..0000000000 --- a/beam/utils/stack.go +++ /dev/null @@ -1,112 +0,0 @@ -package utils - -import ( - "container/list" - "fmt" - "github.com/docker/libswarm/beam" - "strings" - "sync" -) - -// StackSender forwards beam messages to a dynamic list of backend receivers. -// New backends are stacked on top. When a message is sent, each backend is -// tried until one succeeds. Any failing backends encountered along the way -// are removed from the queue. -type StackSender struct { - stack *list.List - l sync.RWMutex -} - -func NewStackSender() *StackSender { - stack := list.New() - return &StackSender{ - stack: stack, - } -} - -func (s *StackSender) Send(msg *beam.Message) (ret beam.Receiver, err error) { - completed := s.walk(func(h beam.Sender) (ok bool) { - ret, err = h.Send(msg) - fmt.Printf("[stacksender] sending %v to %#v returned %v\n", msg, h, err) - if err == nil { - return true - } - return false - }) - // If walk was completed, it means we didn't find a valid handler - if !completed { - return ret, err - } - // Silently drop messages if no valid backend is available. - return beam.NopSender{}.Send(msg) -} - -func (s *StackSender) Add(dst beam.Sender) *StackSender { - s.l.Lock() - defer s.l.Unlock() - prev := &StackSender{ - stack: list.New(), - } - prev.stack.PushFrontList(s.stack) - fmt.Printf("[ADD] prev %#v\n", prev) - s.stack.PushFront(dst) - return prev -} - -func (s *StackSender) Close() error { - s.walk(func(h beam.Sender) bool { - h.Close() - // remove all handlers - return false - }) - return nil -} - -func (s *StackSender) _walk(f func(*list.Element) bool) bool { - var e *list.Element - s.l.RLock() - e = s.stack.Front() - s.l.RUnlock() - for e != nil { - fmt.Printf("[StackSender.Walk] %v\n", e.Value.(beam.Sender)) - s.l.RLock() - next := e.Next() - s.l.RUnlock() - cont := f(e) - if !cont { - return false - } - e = next - } - return true -} - -func (s *StackSender) walk(f func(beam.Sender) bool) bool { - return s._walk(func(e *list.Element) bool { - ok := f(e.Value.(beam.Sender)) - if ok { - // Found a valid handler. Stop walking. - return false - } - // Invalid handler: remove. - s.l.Lock() - s.stack.Remove(e) - s.l.Unlock() - return true - }) -} - -func (s *StackSender) Len() int { - s.l.RLock() - defer s.l.RUnlock() - return s.stack.Len() -} - -func (s *StackSender) String() string { - var parts []string - s._walk(func(e *list.Element) bool { - parts = append(parts, fmt.Sprintf("%v", e.Value.(beam.Sender))) - return true - }) - return fmt.Sprintf("%d:[%s]", len(parts), strings.Join(parts, "->")) -} diff --git a/beam/utils/stack_test.go b/beam/utils/stack_test.go deleted file mode 100644 index fb18772ea8..0000000000 --- a/beam/utils/stack_test.go +++ /dev/null @@ -1,127 +0,0 @@ -package utils - -import ( - "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/unix" - "github.com/dotcloud/docker/pkg/testutils" - "strings" - "testing" -) - -func TestStackWithPipe(t *testing.T) { - r, w := beam.Pipe() - defer r.Close() - defer w.Close() - s := NewStackSender() - s.Add(w) - testutils.Timeout(t, func() { - go func() { - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != beam.Log { - t.Fatalf("%#v", msg) - } - if strings.Join(msg.Args, " ") != "wonderful world" { - t.Fatalf("%#v", msg) - } - }() - _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"wonderful", "world"}}) - if err != nil { - t.Fatal(err) - } - }) -} - -func TestStackWithPair(t *testing.T) { - r, w, err := unix.Pair() - if err != nil { - t.Fatal(err) - } - defer r.Close() - defer w.Close() - s := NewStackSender() - s.Add(w) - testutils.Timeout(t, func() { - go func() { - msg, err := r.Receive(0) - if err != nil { - t.Fatal(err) - } - if msg.Verb != beam.Log { - t.Fatalf("%#v", msg) - } - if strings.Join(msg.Args, " ") != "wonderful world" { - t.Fatalf("%#v", msg) - } - }() - _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"wonderful", "world"}}) - if err != nil { - t.Fatal(err) - } - }) -} - -func TestStackLen(t *testing.T) { - s := NewStackSender() - if s.Len() != 0 { - t.Fatalf("empty StackSender has length %d", s.Len()) - } -} - -func TestStackAdd(t *testing.T) { - s := NewStackSender() - a := Buffer{} - beforeA := s.Add(&a) - // Add on an empty StackSender should return an empty StackSender - if beforeA.Len() != 0 { - t.Fatalf("%s has %d elements", beforeA, beforeA.Len()) - } - if s.Len() != 1 { - t.Fatalf("%#v", beforeA) - } - // Add a 2nd element - b := Buffer{} - beforeB := s.Add(&b) - if beforeB.Len() != 1 { - t.Fatalf("%#v", beforeA) - } - if s.Len() != 2 { - t.Fatalf("%#v", beforeA) - } - s.Send(&beam.Message{Verb: beam.Log, Args: []string{"for b"}}) - beforeB.Send(&beam.Message{Verb: beam.Log, Args: []string{"for a"}}) - beforeA.Send(&beam.Message{Verb: beam.Log, Args: []string{"for nobody"}}) - if len(a) != 1 { - t.Fatalf("%#v", a) - } - if len(b) != 1 { - t.Fatalf("%#v", b) - } -} - -// Misbehaving backends must be removed -func TestStackAddBad(t *testing.T) { - s := NewStackSender() - buf := Buffer{} - s.Add(&buf) - r, w := beam.Pipe() - s.Add(w) - if s.Len() != 2 { - t.Fatalf("%#v", s) - } - r.Close() - if _, err := s.Send(&beam.Message{Verb: beam.Log, Args: []string{"for the buffer"}}); err != nil { - t.Fatal(err) - } - if s.Len() != 1 { - t.Fatalf("%#v") - } - if len(buf) != 1 { - t.Fatalf("%#v", buf) - } - if buf[0].Args[0] != "for the buffer" { - t.Fatalf("%#v", buf) - } -} diff --git a/beam/verbs.go b/beam/verbs.go index 1cacb90627..ad10ca4a3b 100644 --- a/beam/verbs.go +++ b/beam/verbs.go @@ -1,5 +1,9 @@ package beam +import ( + "fmt" +) + type Verb uint32 const ( @@ -18,6 +22,38 @@ const ( Watch ) +func VerbFromString(s string) (Verb, error) { + switch s { + case "Ack": + return Ack, nil + case "Attach": + return Attach, nil + case "Connect": + return Connect, nil + case "Error": + return Error, nil + case "File": + return File, nil + case "Get": + return Get, nil + case "Log": + return Log, nil + case "Ls": + return Ls, nil + case "Set": + return Set, nil + case "Spawn": + return Spawn, nil + case "Start": + return Start, nil + case "Stop": + return Stop, nil + case "Watch": + return Watch, nil + } + return 0, fmt.Errorf("Unrecognised verb: %s", s) +} + func (v Verb) String() string { switch v { case Ack: diff --git a/beam/ws/ws.go b/beam/ws/ws.go deleted file mode 100644 index f6c03a9424..0000000000 --- a/beam/ws/ws.go +++ /dev/null @@ -1,72 +0,0 @@ -package ws - -import ( - "errors" - "github.com/docker/libswarm/beam" - "github.com/docker/libswarm/beam/http2" - "github.com/docker/spdystream/ws" - "github.com/gorilla/websocket" - "net/http" -) - -// Connect to a Beam server over a Websocket connection as a client -func NewSender(wsConn *websocket.Conn) (beam.Sender, error) { - session, err := http2.NewStreamSession(ws.NewConnection(wsConn)) - if err != nil { - return nil, err - } - return session, nil -} - -// Upgrade an HTTP connection to a Beam over HTTP2 over -// Websockets connection. -type Upgrader struct { - Upgrader websocket.Upgrader -} - -func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*http2.Server, error) { - wsConn, err := u.Upgrader.Upgrade(w, r, responseHeader) - if err != nil { - return nil, err - } - - netConn := ws.NewConnection(wsConn) - server, err := http2.NewServer(netConn) - if err != nil { - netConn.Close() - return nil, err - } - - return server, nil -} - -// Returns true if a handshake error occured in websockets, which means -// a response has already been written to the stream. -func IsHandshakeError(err error) bool { - _, ok := err.(websocket.HandshakeError) - return ok -} - -type BeamFunc func(beam.Receiver) - -// Handler function for serving Beam over HTTP. Will invoke f and -// then close the server's Beam endpoint after f returns. -func Serve(u *Upgrader, f BeamFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - if r.Method != "GET" { - u.Upgrader.Error(w, r, http.StatusMethodNotAllowed, errors.New("Method not allowed")) - return - } - - server, err := u.Upgrade(w, r, nil) - if err != nil { - if !IsHandshakeError(err) { - u.Upgrader.Error(w, r, http.StatusInternalServerError, errors.New("Unable to open an HTTP2 connection over Websockets")) - } - return - } - defer server.Close() - - f(server) - } -} diff --git a/beam/ws/ws_test.go b/beam/ws/ws_test.go deleted file mode 100644 index 6dd96a6645..0000000000 --- a/beam/ws/ws_test.go +++ /dev/null @@ -1,73 +0,0 @@ -package ws - -import ( - "github.com/docker/libswarm/beam" - "github.com/gorilla/websocket" - "io" - "net/http" - "net/http/httptest" - "strings" - "testing" -) - -func TestServe(t *testing.T) { - gotAck := make(chan bool) - u := &Upgrader{} - server := httptest.NewServer(Serve(u, func(r beam.Receiver) { - msg, msgErr := r.Receive(beam.Ret) - if msgErr != nil { - t.Fatalf("Error receiving message: %s", msgErr) - } - if msg.Att == nil { - t.Fatalf("Error message missing attachment") - } - if msg.Verb != beam.Attach { - t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Attach) - } - - receiver, sendErr := msg.Ret.Send(&beam.Message{Verb: beam.Ack}) - if sendErr != nil { - t.Fatalf("Error sending return message: %s", sendErr) - } - - _, ackErr := receiver.Receive(0) - if ackErr == nil { - t.Fatalf("No error receiving from message with no return pipe") - } - if ackErr != io.EOF { - t.Fatalf("Unexpected error receiving from message: %s", ackErr) - } - - <-gotAck - })) - - wsConn, _, err := websocket.DefaultDialer.Dial(strings.Replace(server.URL, "http://", "ws://", 1), http.Header{"Origin": {server.URL}}) - if err != nil { - t.Fatal(err) - } - sender, senderErr := NewSender(wsConn) - if senderErr != nil { - t.Fatalf("Error creating sender: %s", senderErr) - } - - receiver, sendErr := sender.Send(&beam.Message{Verb: beam.Attach, Ret: beam.RetPipe}) - if sendErr != nil { - t.Fatalf("Error sending message: %s", sendErr) - } - - msg, receiveErr := receiver.Receive(beam.Ret) - if receiveErr != nil { - t.Fatalf("Error receiving message") - } - - if msg.Verb != beam.Ack { - t.Fatalf("Wrong verb\nActual: %s\nExpecting: %s", msg.Verb, beam.Ack) - } - - gotAck <- true - - shutdownErr := sender.Close() - if shutdownErr != nil && !strings.Contains(shutdownErr.Error(), "broken pipe") { - t.Fatalf("Error closing: %s", shutdownErr) - } -} From 189af64cafef3d2ef9b7a94e22277d9042ad63a3 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Wed, 18 Jun 2014 17:50:36 +0100 Subject: [PATCH 309/347] Basic tests for Message/Sender/Receiver Signed-off-by: Aanand Prasad --- beam/message_test.go | 139 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 beam/message_test.go diff --git a/beam/message_test.go b/beam/message_test.go new file mode 100644 index 0000000000..8987cb199e --- /dev/null +++ b/beam/message_test.go @@ -0,0 +1,139 @@ +package beam + +import ( + "io/ioutil" + "reflect" + "testing" +) + +func TestVerbArgs(t *testing.T) { + receiver, sender := Pipe() + sentMsg := &Message{Verb: Set, Args: []string{"foo", "bar"}} + + go sender.Send(sentMsg) + + receivedMsg, err := receiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if receivedMsg == nil { + t.Fatalf("Didn't get a message") + } + if receivedMsg.Verb != sentMsg.Verb { + t.Fatalf("Expected %s, got %s", sentMsg.Verb.String(), receivedMsg.Verb.String()) + } + if !reflect.DeepEqual(receivedMsg.Args, sentMsg.Args) { + t.Fatalf("Expected %#v, got %#v", sentMsg.Args, receivedMsg.Args) + } +} + +func TestReturnChannel(t *testing.T) { + receiver, sender := Pipe() + replyReceiver, replySender := Pipe() + + go func() { + receivedMsg, err := receiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if receivedMsg == nil { + t.Fatalf("Didn't get a message") + } + receivedMsg.Ret.Send(&Message{Verb: Set}) + }() + + _, err := sender.Send(&Message{Verb: Get, Ret: replySender}) + if err != nil { + t.Fatal(err) + } + + reply, err := replyReceiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if reply == nil { + t.Fatalf("Didn't get a reply") + } + if reply.Verb != Set { + t.Fatalf("Expected Set, got %s", reply.Verb.String()) + } +} + +func TestRetPipe(t *testing.T) { + receiver, sender := Pipe() + + go func() { + receivedMsg, err := receiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if receivedMsg == nil { + t.Fatalf("Didn't get a message") + } + receivedMsg.Ret.Send(&Message{Verb: Set}) + }() + + replyReceiver, err := sender.Send(&Message{Verb: Get, Ret: RetPipe}) + if err != nil { + t.Fatal(err) + } + + reply, err := replyReceiver.Receive(0) + if err != nil { + t.Fatal(err) + } + if reply == nil { + t.Fatalf("Didn't get a reply") + } + if reply.Verb != Set { + t.Fatalf("Expected Set, got %s", reply.Verb.String()) + } +} + +func TestAttachment(t *testing.T) { + expectedContents := "hello world\n" + + f, err := ioutil.TempFile("/tmp", "libswarm-beam-TestAttachment-") + if err != nil { + t.Fatal(err) + } + defer f.Close() + if err = ioutil.WriteFile(f.Name(), []byte(expectedContents), 0700); err != nil { + t.Fatal(err) + } + if err = f.Sync(); err != nil { + t.Fatal(err) + } + + receiver, sender := Pipe() + + go func() { + msg, err := receiver.Receive(0) + if err != nil { + t.Fatal(err) + } + + msg.Ret.Send(&Message{Verb: Connect, Att: f}) + }() + + ret, err := sender.Send(&Message{Verb: Connect, Ret: RetPipe}) + if err != nil { + t.Fatal(err) + } + + reply, err := ret.Receive(0) + if err != nil { + t.Fatal(err) + } + if reply.Att == nil { + t.Fatalf("Didn't get an attachment back") + } + + contents, err := ioutil.ReadAll(reply.Att) + if err != nil { + t.Fatal(err) + } + if string(contents) != expectedContents { + t.Fatalf("Expected %#v, got %#v", expectedContents, string(contents)) + } +} From 7601d49283aac0c11fd173a187f47c1ab4732b59 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 18 Jun 2014 23:50:07 -0700 Subject: [PATCH 310/347] Implement NopSender (removed by switch to libchan) Signed-off-by: Solomon Hykes --- beam/nop.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 beam/nop.go diff --git a/beam/nop.go b/beam/nop.go new file mode 100644 index 0000000000..9d3cabb392 --- /dev/null +++ b/beam/nop.go @@ -0,0 +1,30 @@ +package beam + +import ( + "github.com/docker/libchan" + "io" +) + +type NopSender struct{} + +func (s NopSender) Send(msg *Message) (Receiver, error) { + return NopReceiver{}, nil +} + +func (s NopSender) Close() error { + return nil +} + +func (s NopSender) Unwrap() libchan.Sender { + return libchan.NopSender{} +} + +type NopReceiver struct{} + +func (r NopReceiver) Receive(mode int) (*Message, error) { + return nil, io.EOF +} + +func (r NopReceiver) Unwrap() libchan.Receiver { + return libchan.NopReceiver{} +} From 0949d4cf733a5d166f4a007d238c37a2b46237a1 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 18 Jun 2014 23:50:26 -0700 Subject: [PATCH 311/347] Fix debug after switch to libchan Signed-off-by: Solomon Hykes --- debug/debug.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debug/debug.go b/debug/debug.go index c287fc4bd8..4b57007f00 100644 --- a/debug/debug.go +++ b/debug/debug.go @@ -77,7 +77,7 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) { Args: msg.Args, Att: msg.Att, Ret: &replyHandler{ - out: msg.Ret, + Sender: msg.Ret, }, } @@ -93,16 +93,16 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) { // We use a replyHandler to provide context for relaying the return channel // of the origin message. type replyHandler struct { - out beam.Sender + beam.Sender } // Send a message using the out channel func (rh *replyHandler) Send(msg *beam.Message) (receiver beam.Receiver, err error) { log.Printf("[debug] <--- Downstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) - return nil, forward(rh.out, msg) + return nil, forward(rh.Sender, msg) } func (rh *replyHandler) Close() (err error) { // Since we don't allow the downstream handler to close the return channel, we do so here. - return rh.out.Close() + return rh.Sender.Close() } From 75531daa582bb55ef77eb9c1611bcef484ca6f09 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 17 Jun 2014 10:40:46 -0700 Subject: [PATCH 312/347] Add maintainers for individual backends Signed-off-by: Solomon Hykes --- backends/MAINTAINERS | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 backends/MAINTAINERS diff --git a/backends/MAINTAINERS b/backends/MAINTAINERS new file mode 100644 index 0000000000..53606f729f --- /dev/null +++ b/backends/MAINTAINERS @@ -0,0 +1,6 @@ +dockerserver.go: Ben Firshman (github: bfirsh) +dockerclient.go: Aanand Prasad (github: aanand) +rax.go: John Hopper (github: zinic) +tutum.go: Fernando Mayo (github: fermayo) +orchard.go: Aanand Prasad (github: aanand) +cloud.go: Brendan Burns (github: brendandburns) From 200867288c17bf53c8f54b1a854950f8e640c048 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Mon, 30 Jun 2014 23:03:27 -0700 Subject: [PATCH 313/347] Adds support for `docker inspect` to dockerserver Signed-off-by: Brian Goff (github: cpuguy83) Conflicts: backends/dockerserver.go --- backends/dockerserver.go | 114 ++++++++++++++++++++++++++------------- 1 file changed, 76 insertions(+), 38 deletions(-) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 8d9de4c2f1..663d2412f3 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -6,6 +6,7 @@ import ( "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/api" "github.com/dotcloud/docker/pkg/version" + dockerContainerConfig "github.com/dotcloud/docker/runconfig" "github.com/dotcloud/docker/utils" "github.com/gorilla/mux" "io" @@ -13,10 +14,10 @@ import ( "net" "net/http" "net/url" + "strconv" "strings" "sync" "time" - "strconv" ) func DockerServer() beam.Sender { @@ -73,6 +74,68 @@ func ping(out beam.Sender, version version.Version, w http.ResponseWriter, r *ht return err } +type containerJson struct { + Config *dockerContainerConfig.Config + HostConfig *dockerContainerConfig.HostConfig + ID string + Created string + Driver string + ExecDriver string + NetworkSettings struct { + Bridge string + Gateway string + IPAddress string + IPPrefixLen int + Ports map[string][]map[string]string + } + State struct { + Running bool + StartedAt string + FinishedAt string + ExitCode int + Paused bool + Pid int + } + Name string + Args []string + ProcessLbael string + ResolvConfPath string + HostnamePath string + HostsPath string + MountLabel string + Volumes map[string]string + VolumesRW map[string]bool +} + +func getContainerJson(out beam.Sender, containerID string) (containerJson, error) { + o := beam.Obj(out) + + _, containerOut, err := o.Attach(containerID) + if err != nil { + return containerJson{}, err + } + container := beam.Obj(containerOut) + responseJson, err := container.Get() + if err != nil { + return containerJson{}, err + } + var response containerJson + + if err = json.Unmarshal([]byte(responseJson), &response); err != nil { + return containerJson{}, err + } + + return response, nil +} + +func getContainerInfo(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + container, err := getContainerJson(out, vars["name"]) + if err != nil { + return err + } + return writeJSON(w, http.StatusOK, container) +} + func getContainersJSON(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if err := r.ParseForm(); err != nil { return err @@ -87,36 +150,10 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response var responses []interface{} for _, name := range names { - _, containerOut, err := o.Attach(name) + response, err := getContainerJson(out, name) if err != nil { return err } - container := beam.Obj(containerOut) - responseJson, err := container.Get() - if err != nil { - return err - } - var response struct { - ID string - Created string - Name string - Config struct { - Cmd []string - Image string - } - State struct { - Running bool - StartedAt string - FinishedAt string - ExitCode int - } - NetworkSettings struct { - Ports map[string][]map[string]string - } - } - if err = json.Unmarshal([]byte(responseJson), &response); err != nil { - return err - } created, err := time.Parse(time.RFC3339, response.Created) if err != nil { return err @@ -128,10 +165,10 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response state = fmt.Sprintf("Exited (%d)", response.State.ExitCode) } type port struct { - IP string + IP string PrivatePort int - PublicPort int - Type string + PublicPort int + Type string } var ports []port for p, mappings := range response.NetworkSettings.Ports { @@ -148,17 +185,17 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return err } newport := port{ - IP: mapping["HostIp"], + IP: mapping["HostIp"], PrivatePort: portnum, - PublicPort: hostPort, - Type: proto, + PublicPort: hostPort, + Type: proto, } ports = append(ports, newport) } } else { newport := port{ - PrivatePort: portnum, - Type: proto, + PublicPort: portnum, + Type: proto, } ports = append(ports, newport) } @@ -332,8 +369,9 @@ func createRouter(out beam.Sender) (*mux.Router, error) { r := mux.NewRouter() m := map[string]map[string]HttpApiFunc{ "GET": { - "/_ping": ping, - "/containers/json": getContainersJSON, + "/_ping": ping, + "/containers/json": getContainersJSON, + "/containers/{name}/json": getContainerInfo, }, "POST": { "/containers/create": postContainersCreate, From 8483ebf2166d4c3a2501987491c7c826be0db09e Mon Sep 17 00:00:00 2001 From: Nathan LeClaire Date: Thu, 19 Jun 2014 16:25:15 -0700 Subject: [PATCH 314/347] Take a whack at installation instructions. This instructions allowed me to compile swarmd on my box. --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/README.md b/README.md index 8699a1d34d..3bbc07271a 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,41 @@ Here are some examples of what you can do with libswarm: * Simulate your entire service topology in a single process, then scale it out simply by re-arranging adapters. * Organize your application as loosely coupled services from day 1, without over-engineering. + +## Installation + +First get the go dependencies: + +```sh +go get github.com/docker/libswarm/... +``` + +Then you can compile `swarmd` with: + +```sh +go install github.com/docker/libswarm/swarmd +``` + +If `$GOPATH/bin` is in your `PATH`, you can invoke `swarmd` from the CLI. + +```sh +$ swarmd -h +NAME: + swarmd - Compose distributed systems from lightweight services + +USAGE: + swarmd [global options] command [command options] [arguments...] + +VERSION: + 0.0.1 + +COMMANDS: + help, h Shows a list of commands or help for one command + +GLOBAL OPTIONS: + --version, -v print the version + --help, -h show help +``` ## Built-in services From 9e35dd19804711f276b5c6e03d887c6617218087 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Mon, 30 Jun 2014 23:06:43 -0700 Subject: [PATCH 315/347] go fmt Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) Conflicts: backends/ec2.go --- backends/ec2.go | 573 ++++++++++++++++++++++++------------------------ 1 file changed, 287 insertions(+), 286 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index ed5f964d7b..1fed368677 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -1,406 +1,407 @@ package backends import ( - "os" - "net" - "net/http" - "os/signal" - "syscall" - "path" - "os/user" - "time" - "fmt" - "strings" - "errors" - "os/exec" - "github.com/docker/libswarm/beam" + "errors" + "fmt" + "github.com/docker/libswarm/beam" + "net" + "net/http" + "os" + "os/exec" + "os/signal" + "os/user" + "path" + "strings" + "syscall" + "time" - "launchpad.net/goamz/aws" - "launchpad.net/goamz/ec2" + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" ) type ec2Config struct { - securityGroup string - instanceType string - zone string - ami string - tag string - sshUser string - sshKey string - sshLocalPort string - sshRemotePort string - keypair string - region aws.Region + securityGroup string + instanceType string + zone string + ami string + tag string + sshUser string + sshKey string + sshLocalPort string + sshRemotePort string + keypair string + region aws.Region } type ec2Client struct { - config *ec2Config - ec2Conn *ec2.EC2 - Server *beam.Server - instance *ec2.Instance - sshTunnel *os.Process - dockerInstance *beam.Object + config *ec2Config + ec2Conn *ec2.EC2 + Server *beam.Server + instance *ec2.Instance + sshTunnel *os.Process + dockerInstance *beam.Object } func (c *ec2Client) get(ctx *beam.Message) error { - output, err := c.dockerInstance.Get() - if (err != nil) { - return err - } - ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{output}}) - return nil + output, err := c.dockerInstance.Get() + if err != nil { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{output}}) + return nil } func (c *ec2Client) start(ctx *beam.Message) error { - if instance, err := c.findInstance(); err != nil { - return err - } else if instance != nil { - fmt.Printf("Found existing instance: %s\n", instance.InstanceId) - c.instance = instance - } else { - if err := c.startInstance(); err != nil { - return err - } + if instance, err := c.findInstance(); err != nil { + return err + } else if instance != nil { + fmt.Printf("Found existing instance: %s\n", instance.InstanceId) + c.instance = instance + } else { + if err := c.startInstance(); err != nil { + return err + } - if err := c.tagtInstance(); err != nil { - return err - } - } + if err := c.tagtInstance(); err != nil { + return err + } + } - c.initDockerClientInstance(c.instance) - c.waitForSsh() - c.startSshTunnel() - c.waitForDockerDaemon() - fmt.Printf("ec2 service up and running: region: %s zone: %s\n", - c.config.region.Name, c.config.zone) - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + c.initDockerClientInstance(c.instance) + c.waitForSsh() + c.startSshTunnel() + c.waitForDockerDaemon() + fmt.Printf("ec2 service up and running: region: %s zone: %s\n", + c.config.region.Name, c.config.zone) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) - return nil + return nil } func (c *ec2Client) spawn(ctx *beam.Message) error { - out, err := c.dockerInstance.Spawn(ctx.Args...) - if err != nil { - return err - } - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: out}) - return nil + out, err := c.dockerInstance.Spawn(ctx.Args...) + if err != nil { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: out}) + return nil } func (c *ec2Client) ls(ctx *beam.Message) error { - output, err := c.dockerInstance.Ls() - if (err != nil) { - return err - } - ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: output}) - return nil + output, err := c.dockerInstance.Ls() + if err != nil { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: output}) + return nil } func (c *ec2Client) stop(ctx *beam.Message) error { - c.dockerInstance.Stop() - return nil + c.dockerInstance.Stop() + return nil } func (c *ec2Client) attach(ctx *beam.Message) error { if ctx.Args[0] == "" { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) <-make(chan struct{}) } else { - _, out, err := c.dockerInstance.Attach(ctx.Args[0]) - if err != nil { - return err - } - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: out}) - } + _, out, err := c.dockerInstance.Attach(ctx.Args[0]) + if err != nil { + return err + } + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: out}) + } - return nil + return nil } -func defaultSshKeyPath() (string) { - usr, _ := user.Current() - dir := usr.HomeDir - return path.Join(dir, ".ssh", "id_rsa") +func defaultSshKeyPath() string { + usr, _ := user.Current() + dir := usr.HomeDir + return path.Join(dir, ".ssh", "id_rsa") } func defaultConfigValues() (config *ec2Config) { - config = new(ec2Config) - config.region = aws.USEast - config.ami = "ami-7c807d14" - config.instanceType = "t1.micro" - config.zone = "us-east-1a" - config.sshUser = "ec2-user" - config.sshLocalPort = "4910" - config.sshRemotePort = "4243" - config.sshKey = defaultSshKeyPath() - return config + config = new(ec2Config) + config.region = aws.USEast + config.ami = "ami-7c807d14" + config.instanceType = "t1.micro" + config.zone = "us-east-1a" + config.sshUser = "ec2-user" + config.tag = "docker-ec2-swarm" + config.sshLocalPort = "4910" + config.sshRemotePort = "4243" + config.sshKey = defaultSshKeyPath() + return config } func newConfig(args []string) (config *ec2Config, err error) { - var optValPair []string - var opt, val string + var optValPair []string + var opt, val string - config = defaultConfigValues() + config = defaultConfigValues() - for _, value := range args { - optValPair = strings.Split(value, "=") - opt, val = optValPair[0], optValPair[1] + for _, value := range args { + optValPair = strings.Split(value, "=") + opt, val = optValPair[0], optValPair[1] - switch opt { - case "--region": - config.region = convertToRegion(val) - case "--zone": - config.zone = val - case "--tag": - config.tag = val - case "--ami": - config.ami = val - case "--keypair": - config.keypair = val - case "--security_group": - config.securityGroup = val - case "--instance_type": - config.instanceType = val - case "--ssh_user": - config.sshUser = val - case "--ssh_key": - config.sshKey = val - default: - fmt.Printf("Unrecognizable option: %s value: %s", opt, val) - } - } - return config, nil + switch opt { + case "--region": + config.region = convertToRegion(val) + case "--zone": + config.zone = val + case "--tag": + config.tag = val + case "--ami": + config.ami = val + case "--keypair": + config.keypair = val + case "--security_group": + config.securityGroup = val + case "--instance_type": + config.instanceType = val + case "--ssh_user": + config.sshUser = val + case "--ssh_key": + config.sshKey = val + default: + fmt.Printf("Unrecognizable option: %s value: %s", opt, val) + } + } + return config, nil } func convertToRegion(input string) aws.Region { - switch input { - case "us-east-1": - return aws.USEast - case "us-west-1": - return aws.USWest - case "us-west-2": - return aws.USWest2 - case "eu-west-1": - return aws.EUWest - case "sa-east-1": - return aws.SAEast - case "ap-northeast-1": - return aws.APNortheast - case "ap-southeast-1": - return aws.APSoutheast - case "ap-southeast-2": - return aws.APSoutheast2 - default: - fmt.Println("Unrecognizable region, default to: us-east-1") - return aws.USEast - } + switch input { + case "us-east-1": + return aws.USEast + case "us-west-1": + return aws.USWest + case "us-west-2": + return aws.USWest2 + case "eu-west-1": + return aws.EUWest + case "sa-east-1": + return aws.SAEast + case "ap-northeast-1": + return aws.APNortheast + case "ap-southeast-1": + return aws.APSoutheast + case "ap-southeast-2": + return aws.APSoutheast2 + default: + fmt.Println("Unrecognizable region, default to: us-east-1") + return aws.USEast + } } -func awsInit(config *ec2Config) (ec2Conn *ec2.EC2, err error) { - auth, err := aws.EnvAuth() +func awsInit(config *ec2Config) (ec2Conn *ec2.EC2, err error) { + auth, err := aws.EnvAuth() - if err != nil { - return nil, err - } + if err != nil { + return nil, err + } - return ec2.New(auth, config.region), nil + return ec2.New(auth, config.region), nil } func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { - filter := ec2.NewFilter() - filter.Add("tag:Name", c.config.tag) - resp, err := c.ec2Conn.Instances([]string{}, filter) + filter := ec2.NewFilter() + filter.Add("tag:Name", c.config.tag) + resp, err := c.ec2Conn.Instances([]string{}, filter) - if err != nil { - return nil, err - } else { - if resp.Reservations == nil { - return nil, nil - } + if err != nil { + return nil, err + } else { + if resp.Reservations == nil { + return nil, nil + } - instance := resp.Reservations[0].Instances[0] + instance := resp.Reservations[0].Instances[0] - if (instance.State.Name == "running" || instance.State.Name == "pending") { - return &instance, nil - } + if instance.State.Name == "running" || instance.State.Name == "pending" { + return &instance, nil + } - return nil, nil - } + return nil, nil + } } func (c *ec2Client) tagtInstance() error { - ec2Tags := []ec2.Tag{ec2.Tag{"Name", c.config.tag}} - if _, err := c.ec2Conn.CreateTags([]string{c.instance.InstanceId}, ec2Tags); err != nil { - return err - } - return nil + ec2Tags := []ec2.Tag{ec2.Tag{"Name", c.config.tag}} + if _, err := c.ec2Conn.CreateTags([]string{c.instance.InstanceId}, ec2Tags); err != nil { + return err + } + return nil } func (c *ec2Client) startInstance() error { - options := ec2.RunInstances{ - ImageId: c.config.ami, - InstanceType: c.config.instanceType, - KeyName: c.config.keypair, - AvailZone: c.config.zone, - // TODO: allow more than one sg in the future - SecurityGroups: []ec2.SecurityGroup{ec2.SecurityGroup{Name: c.config.securityGroup}}, - UserData: []byte(userdata), - } + options := ec2.RunInstances{ + ImageId: c.config.ami, + InstanceType: c.config.instanceType, + KeyName: c.config.keypair, + AvailZone: c.config.zone, + // TODO: allow more than one sg in the future + SecurityGroups: []ec2.SecurityGroup{ec2.SecurityGroup{Name: c.config.securityGroup}}, + UserData: []byte(userdata), + } - resp, err := c.ec2Conn.RunInstances(&options) - if err != nil { - return err - } + resp, err := c.ec2Conn.RunInstances(&options) + if err != nil { + return err + } - // TODO (aaron): this really could be multiple instances, not just 1 - i := resp.Instances[0] + // TODO (aaron): this really could be multiple instances, not just 1 + i := resp.Instances[0] - for i.State.Name != "running" { - time.Sleep(3 * time.Second) - fmt.Printf("Waiting for instance to come up. Current State: %s\n", - i.State.Name) + for i.State.Name != "running" { + time.Sleep(3 * time.Second) + fmt.Printf("Waiting for instance to come up. Current State: %s\n", + i.State.Name) - resp, err := c.ec2Conn.Instances([]string{i.InstanceId}, ec2.NewFilter()) + resp, err := c.ec2Conn.Instances([]string{i.InstanceId}, ec2.NewFilter()) - if err != nil { - return err - } + if err != nil { + return err + } - i = resp.Reservations[0].Instances[0] - } + i = resp.Reservations[0].Instances[0] + } - c.instance = &i + c.instance = &i - fmt.Printf("Instance up and running - id: %s\n", i.InstanceId) - return nil + fmt.Printf("Instance up and running - id: %s\n", i.InstanceId) + return nil } func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { - dockerClient := DockerClientWithConfig(&DockerClientConfig{ - Scheme: "http", - URLHost: "localhost", + dockerClient := DockerClientWithConfig(&DockerClientConfig{ + Scheme: "http", + URLHost: "localhost", }) - dockerBackend := beam.Obj(dockerClient) - url := fmt.Sprintf("tcp://localhost:%s", c.config.sshLocalPort) - dockerInstance, err := dockerBackend.Spawn(url) - c.dockerInstance = dockerInstance + dockerBackend := beam.Obj(dockerClient) + url := fmt.Sprintf("tcp://localhost:%s", c.config.sshLocalPort) + dockerInstance, err := dockerBackend.Spawn(url) + c.dockerInstance = dockerInstance if err != nil { return err } - return nil + return nil } func (c *ec2Client) waitForDockerDaemon() { - fmt.Println("waiting for docker daemon on remote machine to be available.") - for { - resp, _:= http.Get("http://localhost:" + c.config.sshLocalPort) - // wait for a response. any response to know docker daemon is up - if resp != nil { - break - } - fmt.Print(".") - time.Sleep(2 * time.Second) - } - fmt.Println() + fmt.Println("waiting for docker daemon on remote machine to be available.") + for { + resp, _ := http.Get("http://localhost:" + c.config.sshLocalPort) + // wait for a response. any response to know docker daemon is up + if resp != nil { + break + } + fmt.Print(".") + time.Sleep(2 * time.Second) + } + fmt.Println() } func (c *ec2Client) waitForSsh() { - fmt.Println("waiting for ssh to be available. make sure ssh is open on port 22.") - conn := waitFor(c.instance.IPAddress, "22") - conn.Close() + fmt.Println("waiting for ssh to be available. make sure ssh is open on port 22.") + conn := waitFor(c.instance.IPAddress, "22") + conn.Close() } func waitFor(ip, port string) (conn net.Conn) { - ipPort := fmt.Sprintf("%s:%s", ip, port) - var err error + ipPort := fmt.Sprintf("%s:%s", ip, port) + var err error - for { - conn, err = net.DialTimeout("tcp", ipPort, time.Duration(3) * time.Second) - if err != nil { - fmt.Print(".") - time.Sleep(2 * time.Second) - } else { - fmt.Println() - break - } - } + for { + conn, err = net.DialTimeout("tcp", ipPort, time.Duration(3)*time.Second) + if err != nil { + fmt.Print(".") + time.Sleep(2 * time.Second) + } else { + fmt.Println() + break + } + } - return conn + return conn } func signalHandler(client *ec2Client) { - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt) - signal.Notify(c, syscall.SIGTERM) - go func() { - <-c - client.Close() - os.Exit(0) - }() + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + signal.Notify(c, syscall.SIGTERM) + go func() { + <-c + client.Close() + os.Exit(0) + }() } func Ec2() beam.Sender { - backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { - var config, err = newConfig(ctx.Args) + backend := beam.NewServer() + backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + var config, err = newConfig(ctx.Args) - if (err != nil) { - return err - } + if err != nil { + return err + } - ec2Conn, err := awsInit(config) - if (err != nil) { - return err - } + ec2Conn, err := awsInit(config) + if err != nil { + return err + } - client := &ec2Client{config, ec2Conn, beam.NewServer(), nil, nil, nil} - client.Server.OnSpawn(beam.Handler(client.spawn)) - client.Server.OnStart(beam.Handler(client.start)) - client.Server.OnStop(beam.Handler(client.stop)) - client.Server.OnAttach(beam.Handler(client.attach)) - client.Server.OnLs(beam.Handler(client.ls)) - client.Server.OnGet(beam.Handler(client.get)) + client := &ec2Client{config, ec2Conn, beam.NewServer(), nil, nil, nil} + client.Server.OnSpawn(beam.Handler(client.spawn)) + client.Server.OnStart(beam.Handler(client.start)) + client.Server.OnStop(beam.Handler(client.stop)) + client.Server.OnAttach(beam.Handler(client.attach)) + client.Server.OnLs(beam.Handler(client.ls)) + client.Server.OnGet(beam.Handler(client.get)) - signalHandler(client) - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) + signalHandler(client) + _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) - return err - })) + return err + })) - return backend + return backend } func (c *ec2Client) Close() { - if c.sshTunnel != nil { - c.sshTunnel.Kill() - if state, err := c.sshTunnel.Wait(); err != nil { + if c.sshTunnel != nil { + c.sshTunnel.Kill() + if state, err := c.sshTunnel.Wait(); err != nil { fmt.Printf("Wait result: state:%v, err:%s\n", state, err) } c.sshTunnel = nil - } + } } // thx to the rax.go :) func (c *ec2Client) startSshTunnel() error { - if c.instance == nil { - return errors.New("no valid ec2 instance found.") - } + if c.instance == nil { + return errors.New("no valid ec2 instance found.") + } - options := []string { - "-o", "PasswordAuthentication=no", - "-o", "LogLevel=quiet", - "-o", "UserKnownHostsFile=/dev/null", - "-o", "CheckHostIP=no", - "-o", "StrictHostKeyChecking=no", - "-i", c.config.sshKey, - "-A", - "-p", "22", - fmt.Sprintf("%s@%s", c.config.sshUser, c.instance.IPAddress), + options := []string{ + "-o", "PasswordAuthentication=no", + "-o", "LogLevel=quiet", + "-o", "UserKnownHostsFile=/dev/null", + "-o", "CheckHostIP=no", + "-o", "StrictHostKeyChecking=no", + "-i", c.config.sshKey, + "-A", + "-p", "22", + fmt.Sprintf("%s@%s", c.config.sshUser, c.instance.IPAddress), "-N", - "-f", - "-L", fmt.Sprintf("%s:localhost:%s", c.config.sshLocalPort, c.config.sshRemotePort), - } + "-f", + "-L", fmt.Sprintf("%s:localhost:%s", c.config.sshLocalPort, c.config.sshRemotePort), + } cmd := exec.Command("ssh", options...) cmd.Stdout = os.Stdout @@ -410,7 +411,7 @@ func (c *ec2Client) startSshTunnel() error { return err } - c.sshTunnel = cmd.Process + c.sshTunnel = cmd.Process return nil } From 7c386b09d7fe9971acf4061815e45d11f0de947c Mon Sep 17 00:00:00 2001 From: Sven Dowideit Date: Sun, 22 Jun 2014 22:01:24 +1000 Subject: [PATCH 316/347] mention the param to dockerserver Docker-DCO-1.1-Signed-off-by: Sven Dowideit (github: SvenDowideit) --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3bbc07271a..197831494c 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,10 @@ GLOBAL OPTIONS: *Maintainer: Ben Firshman* -This service runs a Docker remote API server, allowing the Docker client and other Docker tools to control libswarm services. +This service runs a Docker remote API server, allowing the Docker client and +other Docker tools to control libswarm services. With no arguments, it listens +on port `4243`, but you can specify any port you like using `tcp://0.0.0.0:9999`, +`unix:///tmp/docker` etc. ### Docker client From bb106470d9267941ea04abac6bb8c54685eedad4 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:27:52 +0100 Subject: [PATCH 317/347] Assert that stubbed requests are actually called in dockerclient test Signed-off-by: Aanand Prasad --- backends/dockerclient_test.go | 105 ++++++++++++++++++++++++---------- 1 file changed, 76 insertions(+), 29 deletions(-) diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go index 4c5948893a..cd8e5405c0 100644 --- a/backends/dockerclient_test.go +++ b/backends/dockerclient_test.go @@ -57,6 +57,7 @@ func TestLs(t *testing.T) { if !reflect.DeepEqual(names, expected) { t.Fatalf("expected %#v, got %#v", expected, names) } + server.Check() } func TestSpawn(t *testing.T) { @@ -73,6 +74,7 @@ func TestSpawn(t *testing.T) { if err != nil { t.Fatal(err) } + server.Check() } func TestAttachToChild(t *testing.T) { @@ -85,6 +87,7 @@ func TestAttachToChild(t *testing.T) { }) i := instance(t, server) child(t, server, i, name) + server.Check() } func TestStartChild(t *testing.T) { @@ -107,6 +110,7 @@ func TestStartChild(t *testing.T) { if err != nil { t.Fatal(err) } + server.Check() } func TestStopChild(t *testing.T) { @@ -128,42 +132,85 @@ func TestStopChild(t *testing.T) { if err != nil { t.Fatal(err) } + server.Check() } -func makeServer(t *testing.T, stubs ...*requestStub) *httptest.Server { +type stubRecord struct { + stub *requestStub + summary string + callCount int +} + +type stubServer struct { + *httptest.Server + + stubs []*stubRecord + t *testing.T +} + +func makeServer(t *testing.T, stubs ...*requestStub) *stubServer { + s := &stubServer{ + stubs: []*stubRecord{}, + t: t, + } + + s.Server = httptest.NewServer(http.HandlerFunc(s.ServeRequest)) + for _, stub := range stubs { stub.reqPath = fmt.Sprintf("/v1.11%s", stub.reqPath) + s.stubs = append(s.stubs, &stubRecord{ + stub: stub, + summary: fmt.Sprintf("%s %s", stub.reqMethod, stub.reqPath), + callCount: 0, + }) } - stubSummaries := []string{} - for _, stub := range stubs { - stubSummaries = append(stubSummaries, fmt.Sprintf("%s %s", stub.reqMethod, stub.reqPath)) - } - - return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - for _, stub := range stubs { - if r.Method == stub.reqMethod && r.URL.Path == stub.reqPath { - body, err := ioutil.ReadAll(r.Body) - if err != nil { - t.Fatal(err) - } - if string(body) != stub.reqBody { - t.Fatalf("expected body: %#v, got body: %#v", stub.reqBody, string(body)) - } - - if stub.resStatus > 0 { - w.WriteHeader(stub.resStatus) - } - w.Write([]byte(stub.resBody)) - return - } - } - - t.Fatalf("Unexpected request: '%s %s'.\nStubs: %#v", r.Method, r.URL.Path, stubSummaries) - })) + return s } -func instance(t *testing.T, server *httptest.Server) *beam.Object { +func (s *stubServer) Check() { + for _, record := range s.stubs { + if record.callCount != 1 { + s.t.Fatalf("Expected %#v to be called exactly once, but was called %d times", + record.summary, record.callCount) + } + } +} + +func (s *stubServer) ServeRequest(w http.ResponseWriter, r *http.Request) { + for _, record := range s.stubs { + stub := record.stub + if r.Method == stub.reqMethod && r.URL.Path == stub.reqPath { + body, err := ioutil.ReadAll(r.Body) + if err != nil { + s.t.Fatal(err) + } + if string(body) != stub.reqBody { + s.t.Fatalf("expected body: %#v, got body: %#v", stub.reqBody, string(body)) + } + + if stub.resStatus > 0 { + w.WriteHeader(stub.resStatus) + } + w.Write([]byte(stub.resBody)) + + record.callCount += 1 + return + } + } + + s.t.Fatalf("Unexpected request: '%s %s'.\nStubs: %#v", r.Method, r.URL.Path, s.AllSummaries()) +} + +func (s *stubServer) AllSummaries() []string { + summaries := []string{} + for _, record := range s.stubs { + summaries = append(summaries, record.summary) + } + return summaries +} + +func instance(t *testing.T, server *stubServer) *beam.Object { url := "tcp://localhost:4243" if server != nil { url = strings.Replace(server.URL, "http://", "tcp://", 1) @@ -177,7 +224,7 @@ func instance(t *testing.T, server *httptest.Server) *beam.Object { return instance } -func child(t *testing.T, server *httptest.Server, i *beam.Object, name string) *beam.Object { +func child(t *testing.T, server *stubServer, i *beam.Object, name string) *beam.Object { _, child, err := i.Attach(name) if err != nil { t.Fatal(err) From d7aef25298db1306e908348349f3af430fcc520a Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 15:36:02 +0100 Subject: [PATCH 318/347] Test for dockerclient Get Signed-off-by: Aanand Prasad --- backends/dockerclient_test.go | 36 ++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go index cd8e5405c0..6322081111 100644 --- a/backends/dockerclient_test.go +++ b/backends/dockerclient_test.go @@ -19,6 +19,8 @@ type requestStub struct { resStatus int resBody string + + callCount int } func TestBackendSpawn(t *testing.T) { @@ -90,6 +92,30 @@ func TestAttachToChild(t *testing.T) { server.Check() } +func TestGetChild(t *testing.T) { + name := "foo" + expectedContent := `{"Image": "busybox", "Command": ["/bin/true"]}` + + server := makeServer(t, &requestStub{ + reqMethod: "GET", + reqPath: fmt.Sprintf("/containers/%s/json", name), + + resBody: expectedContent, + + callCount: 2, + }) + i := instance(t, server) + c := child(t, server, i, name) + content, err := c.Get() + if err != nil { + t.Fatal(err) + } + if content != expectedContent { + t.Fatalf("Expected %#v, got %#v", expectedContent, content) + } + server.Check() +} + func TestStartChild(t *testing.T) { name := "foo" server := makeServer(t, &requestStub{ @@ -158,6 +184,10 @@ func makeServer(t *testing.T, stubs ...*requestStub) *stubServer { for _, stub := range stubs { stub.reqPath = fmt.Sprintf("/v1.11%s", stub.reqPath) + if stub.callCount == 0 { + stub.callCount = 1 + } + s.stubs = append(s.stubs, &stubRecord{ stub: stub, summary: fmt.Sprintf("%s %s", stub.reqMethod, stub.reqPath), @@ -170,9 +200,9 @@ func makeServer(t *testing.T, stubs ...*requestStub) *stubServer { func (s *stubServer) Check() { for _, record := range s.stubs { - if record.callCount != 1 { - s.t.Fatalf("Expected %#v to be called exactly once, but was called %d times", - record.summary, record.callCount) + if record.callCount != record.stub.callCount { + s.t.Fatalf("Expected %#v to be called %d times, but was called %d times", + record.summary, record.stub.callCount, record.callCount) } } } From ab20d526b10e2f6aa5aabc979af90c887076fc5d Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 12:15:06 +0100 Subject: [PATCH 319/347] Remove verb-specific handler methods from Server Signed-off-by: Aanand Prasad --- backends/aggregate.go | 8 ++++---- backends/dockerclient.go | 18 +++++++++--------- backends/dockerserver.go | 2 +- backends/exec.go | 6 +++--- backends/fakeclient.go | 2 +- backends/orchard.go | 2 +- backends/shipyard.go | 10 +++++----- backends/simulator.go | 4 ++-- backends/tutum.go | 16 ++++++++-------- beam/server.go | 32 -------------------------------- beam/task.go | 4 ++-- beam/tree.go | 4 ++-- debug/debug.go | 2 +- 13 files changed, 39 insertions(+), 71 deletions(-) diff --git a/backends/aggregate.go b/backends/aggregate.go index 4fa852696e..a836e235d6 100644 --- a/backends/aggregate.go +++ b/backends/aggregate.go @@ -11,7 +11,7 @@ import ( func Aggregate() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { allBackends := New() instance := beam.NewServer() @@ -20,9 +20,9 @@ func Aggregate() beam.Sender { return err } - instance.OnAttach(beam.Handler(a.attach)) - instance.OnStart(beam.Handler(a.start)) - instance.OnLs(beam.Handler(a.ls)) + instance.OnVerb(beam.Attach, beam.Handler(a.attach)) + instance.OnVerb(beam.Start, beam.Handler(a.start)) + instance.OnVerb(beam.Ls, beam.Handler(a.ls)) _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) return err diff --git a/backends/dockerclient.go b/backends/dockerclient.go index e2b0f50113..b43085a2f2 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -31,7 +31,7 @@ func DockerClient() beam.Sender { func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 1 { return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } @@ -44,10 +44,10 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { client: client, Server: beam.NewServer(), } - b.Server.OnAttach(beam.Handler(b.attach)) - b.Server.OnStart(beam.Handler(b.start)) - b.Server.OnLs(beam.Handler(b.ls)) - b.Server.OnSpawn(beam.Handler(b.spawn)) + b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) + b.Server.OnVerb(beam.Start, beam.Handler(b.start)) + b.Server.OnVerb(beam.Ls, beam.Handler(b.ls)) + b.Server.OnVerb(beam.Spawn, beam.Handler(b.spawn)) _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) return err })) @@ -140,10 +140,10 @@ func (b *dockerClientBackend) spawn(ctx *beam.Message) error { func (b *dockerClientBackend) newContainer(id string) beam.Sender { c := &container{backend: b, id: id} instance := beam.NewServer() - instance.OnAttach(beam.Handler(c.attach)) - instance.OnStart(beam.Handler(c.start)) - instance.OnStop(beam.Handler(c.stop)) - instance.OnGet(beam.Handler(c.get)) + instance.OnVerb(beam.Attach, beam.Handler(c.attach)) + instance.OnVerb(beam.Start, beam.Handler(c.start)) + instance.OnVerb(beam.Stop, beam.Handler(c.stop)) + instance.OnVerb(beam.Get, beam.Handler(c.get)) return instance } diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 663d2412f3..7a3c237ff2 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -22,7 +22,7 @@ import ( func DockerServer() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { instance := beam.Task(func(in beam.Receiver, out beam.Sender) { url := "tcp://localhost:4243" if len(ctx.Args) > 0 { diff --git a/backends/exec.go b/backends/exec.go index 49251a39b3..edd949ff91 100644 --- a/backends/exec.go +++ b/backends/exec.go @@ -14,7 +14,7 @@ import ( func Exec() beam.Sender { e := beam.NewServer() - e.OnSpawn(beam.Handler(func(msg *beam.Message) error { + e.OnVerb(beam.Spawn, beam.Handler(func(msg *beam.Message) error { if len(msg.Args) < 1 { return fmt.Errorf("usage: SPAWN exec|... ") } @@ -33,7 +33,7 @@ func Exec() beam.Sender { Cmd: exec.Command(config.Path, config.Args...), Server: beam.NewServer(), } - cmd.OnAttach(beam.Handler(func(msg *beam.Message) error { + cmd.OnVerb(beam.Attach, beam.Handler(func(msg *beam.Message) error { stdout, err := cmd.StdoutPipe() if err != nil { return err @@ -76,7 +76,7 @@ func Exec() beam.Sender { cmd.tasks.Wait() return nil })) - cmd.OnStart(beam.Handler(func(msg *beam.Message) error { + cmd.OnVerb(beam.Start, beam.Handler(func(msg *beam.Message) error { cmd.tasks.Add(1) if err := cmd.Cmd.Start(); err != nil { return err diff --git a/backends/fakeclient.go b/backends/fakeclient.go index 2f51940299..157ab842b6 100644 --- a/backends/fakeclient.go +++ b/backends/fakeclient.go @@ -9,7 +9,7 @@ import ( func FakeClient() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { // Instantiate a new fakeclient instance instance := beam.Task(func(in beam.Receiver, out beam.Sender) { fmt.Printf("fake client!\n") diff --git a/backends/orchard.go b/backends/orchard.go index 1b30f873b7..3425c1e8bd 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -13,7 +13,7 @@ import ( func Orchard() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 2 { return fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host") } diff --git a/backends/shipyard.go b/backends/shipyard.go index 11b0bb2855..d05f4f2bb7 100644 --- a/backends/shipyard.go +++ b/backends/shipyard.go @@ -13,7 +13,7 @@ import ( func Shipyard() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) != 3 { return fmt.Errorf("Shipyard: Usage ") } @@ -21,10 +21,10 @@ func Shipyard() beam.Sender { c := &shipyard{url: ctx.Args[0], user: ctx.Args[1], pass: ctx.Args[2]} c.Server = beam.NewServer() - c.Server.OnAttach(beam.Handler(c.attach)) - c.Server.OnStart(beam.Handler(c.start)) - c.Server.OnLs(beam.Handler(c.containers)) - c.OnGet(beam.Handler(c.containerInspect)) + c.Server.OnVerb(beam.Attach, beam.Handler(c.attach)) + c.Server.OnVerb(beam.Start, beam.Handler(c.start)) + c.Server.OnVerb(beam.Ls, beam.Handler(c.containers)) + c.OnVerb(beam.Get, beam.Handler(c.containerInspect)) _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) return err })) diff --git a/backends/simulator.go b/backends/simulator.go index b77577aa38..a2b81d957a 100644 --- a/backends/simulator.go +++ b/backends/simulator.go @@ -6,12 +6,12 @@ import ( func Simulator() beam.Sender { s := beam.NewServer() - s.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + s.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { containers := ctx.Args instance := beam.Task(func(in beam.Receiver, out beam.Sender) { beam.Obj(out).Log("[simulator] starting\n") s := beam.NewServer() - s.OnLs(beam.Handler(func(msg *beam.Message) error { + s.OnVerb(beam.Ls, beam.Handler(func(msg *beam.Message) error { beam.Obj(out).Log("[simulator] generating fake list of objects...\n") beam.Obj(msg.Ret).Set(containers...) return nil diff --git a/backends/tutum.go b/backends/tutum.go index dc83e56633..d9a1d41643 100644 --- a/backends/tutum.go +++ b/backends/tutum.go @@ -20,7 +20,7 @@ var ( func Tutum() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { if len(ctx.Args) == 2 { tutum.User = ctx.Args[0] tutum.ApiKey = ctx.Args[1] @@ -36,10 +36,10 @@ func Tutum() beam.Sender { tutumDockerConnector: tutumDockerConnector, Server: beam.NewServer(), } - t.Server.OnAttach(beam.Handler(t.attach)) - t.Server.OnStart(beam.Handler(t.ack)) - t.Server.OnLs(beam.Handler(t.ls)) - t.Server.OnSpawn(beam.Handler(t.spawn)) + t.Server.OnVerb(beam.Attach, beam.Handler(t.attach)) + t.Server.OnVerb(beam.Start, beam.Handler(t.ack)) + t.Server.OnVerb(beam.Ls, beam.Handler(t.ls)) + t.Server.OnVerb(beam.Spawn, beam.Handler(t.spawn)) _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) return err })) @@ -121,9 +121,9 @@ func (t *tutumBackend) spawn(ctx *beam.Message) error { func (t *tutumBackend) newContainer(id string) beam.Sender { c := &tutumContainer{tutumBackend: t, id: id} instance := beam.NewServer() - instance.OnGet(beam.Handler(c.get)) - instance.OnStart(beam.Handler(c.start)) - instance.OnStop(beam.Handler(c.stop)) + instance.OnVerb(beam.Get, beam.Handler(c.get)) + instance.OnVerb(beam.Start, beam.Handler(c.start)) + instance.OnVerb(beam.Stop, beam.Handler(c.stop)) return instance } diff --git a/beam/server.go b/beam/server.go index 5db5f513aa..d2012e415e 100644 --- a/beam/server.go +++ b/beam/server.go @@ -27,38 +27,6 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server { return s } -func (s *Server) OnSpawn(h Sender) *Server { - return s.OnVerb(Spawn, h) -} - -func (s *Server) OnStart(h Sender) *Server { - return s.OnVerb(Start, h) -} - -func (s *Server) OnStop(h Sender) *Server { - return s.OnVerb(Stop, h) -} - -func (s *Server) OnAttach(h Sender) *Server { - return s.OnVerb(Attach, h) -} - -func (s *Server) OnLog(h Sender) *Server { - return s.OnVerb(Log, h) -} - -func (s *Server) OnError(h Sender) *Server { - return s.OnVerb(Error, h) -} - -func (s *Server) OnLs(h Sender) *Server { - return s.OnVerb(Ls, h) -} - -func (s *Server) OnGet(h Sender) *Server { - return s.OnVerb(Get, h) -} - func (s *Server) Send(msg *Message) (Receiver, error) { if h, exists := s.handlers[msg.Verb]; exists { return h.Send(msg) diff --git a/beam/task.go b/beam/task.go index 94eb1c59fc..4ee3f95584 100644 --- a/beam/task.go +++ b/beam/task.go @@ -11,14 +11,14 @@ func Task(f func(in Receiver, out Sender)) Sender { inR, inW := Pipe() outR, outW := Pipe() obj := NewServer() - obj.OnAttach(Handler(func(msg *Message) error { + obj.OnVerb(Attach, Handler(func(msg *Message) error { msg.Ret.Send(&Message{Verb: Ack, Ret: inW}) fmt.Printf("copying task output from %#v to %#v\n", outR, msg.Ret) defer fmt.Printf("(DONE) copying task output from %#v to %#v\n", outR, msg.Ret) Copy(msg.Ret, outR) return nil })) - obj.OnStart(Handler(func(msg *Message) error { + obj.OnVerb(Start, Handler(func(msg *Message) error { l.RLock() r := running l.RUnlock() diff --git a/beam/tree.go b/beam/tree.go index daabed9384..83c92dc1a0 100644 --- a/beam/tree.go +++ b/beam/tree.go @@ -14,7 +14,7 @@ func NewTree() *Tree { Server: NewServer(), children: make(map[string]Sender), } - t.OnAttach(Handler(func(msg *Message) error { + t.OnVerb(Attach, Handler(func(msg *Message) error { if len(msg.Args) == 0 || msg.Args[0] == "" { msg.Ret.Send(&Message{Verb: Ack, Ret: t}) return nil @@ -26,7 +26,7 @@ func NewTree() *Tree { Obj(msg.Ret).Error("not found") return nil })) - t.OnLs(Handler(func(msg *Message) error { + t.OnVerb(Ls, Handler(func(msg *Message) error { names := make([]string, 0, len(t.children)) for name := range t.children { names = append(names, name) diff --git a/debug/debug.go b/debug/debug.go index 4b57007f00..686da4acd0 100644 --- a/debug/debug.go +++ b/debug/debug.go @@ -15,7 +15,7 @@ func Debug() beam.Sender { } sender := beam.NewServer() - sender.OnSpawn(beam.Handler(dbgInstance.spawn)) + sender.OnVerb(beam.Spawn, beam.Handler(dbgInstance.spawn)) return sender } From 8fa6e11f73edebf57994f6ed6ab238e6ebe4b2fb Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 12:27:13 +0100 Subject: [PATCH 320/347] Implement OnSpawn Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 37 ++++++++++++++++--------------------- beam/server.go | 11 +++++++++++ 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index b43085a2f2..6947f08af6 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -31,15 +31,15 @@ func DockerClient() beam.Sender { func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { - if len(ctx.Args) != 1 { - return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) + backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { + if len(cmd) != 1 { + return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } client := newClient() client.scheme = config.Scheme client.urlHost = config.URLHost client.transport.TLSClientConfig = config.TLSClientConfig - client.setURL(ctx.Args[0]) + client.setURL(cmd[0]) b := &dockerClientBackend{ client: client, Server: beam.NewServer(), @@ -47,10 +47,9 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) b.Server.OnVerb(beam.Start, beam.Handler(b.start)) b.Server.OnVerb(beam.Ls, beam.Handler(b.ls)) - b.Server.OnVerb(beam.Spawn, beam.Handler(b.spawn)) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) - return err - })) + b.Server.OnSpawn(b.spawn) + return b.Server, nil + }) return backend } @@ -111,30 +110,26 @@ func (b *dockerClientBackend) ls(ctx *beam.Message) error { return nil } -func (b *dockerClientBackend) spawn(ctx *beam.Message) error { - if len(ctx.Args) != 1 { - return fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(ctx.Args)) +func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { + if len(cmd) != 1 { + return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } - resp, err := b.client.call("POST", "/containers/create", ctx.Args[0]) + resp, err := b.client.call("POST", "/containers/create", cmd[0]) if err != nil { - return err + return nil, err } respBody, err := ioutil.ReadAll(resp.Body) if err != nil { - return err + return nil, err } if resp.StatusCode != 201 { - return fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) + return nil, fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) } var respJson struct{ Id string } if err = json.Unmarshal(respBody, &respJson); err != nil { - return err + return nil, err } - c := b.newContainer(respJson.Id) - if _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}); err != nil { - return err - } - return nil + return b.newContainer(respJson.Id), nil } func (b *dockerClientBackend) newContainer(id string) beam.Sender { diff --git a/beam/server.go b/beam/server.go index d2012e415e..11b91d9fdf 100644 --- a/beam/server.go +++ b/beam/server.go @@ -27,6 +27,17 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server { return s } +func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { + return s.OnVerb(Spawn, Handler(func(msg *Message) error { + obj, err := h(msg.Args...) + if err != nil { + return err + } + _, err = msg.Ret.Send(&Message{Verb: Ack, Ret: obj}) + return err + })) +} + func (s *Server) Send(msg *Message) (Receiver, error) { if h, exists := s.handlers[msg.Verb]; exists { return h.Send(msg) From 440d0b7d601e1e82eedd1df00c5f2d230daa271d Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:02:16 +0100 Subject: [PATCH 321/347] Implement OnLs Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 15 ++++++--------- beam/server.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 6947f08af6..a25350e7c4 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -46,7 +46,7 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { } b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) b.Server.OnVerb(beam.Start, beam.Handler(b.start)) - b.Server.OnVerb(beam.Ls, beam.Handler(b.ls)) + b.Server.OnLs(b.ls) b.Server.OnSpawn(b.spawn) return b.Server, nil }) @@ -86,28 +86,25 @@ func (b *dockerClientBackend) start(ctx *beam.Message) error { return nil } -func (b *dockerClientBackend) ls(ctx *beam.Message) error { +func (b *dockerClientBackend) ls() ([]string, error) { resp, err := b.client.call("GET", "/containers/json", "") if err != nil { - return fmt.Errorf("get: %v", err) + return nil, fmt.Errorf("get: %v", err) } // FIXME: check for response error c := engine.NewTable("Created", 0) body, err := ioutil.ReadAll(resp.Body) if err != nil { - return fmt.Errorf("read body: %v", err) + return nil, fmt.Errorf("read body: %v", err) } if _, err := c.ReadListFrom(body); err != nil { - return fmt.Errorf("readlist: %v", err) + return nil, fmt.Errorf("readlist: %v", err) } names := []string{} for _, env := range c.Data { names = append(names, env.GetList("Names")[0][1:]) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: names}); err != nil { - return fmt.Errorf("send response: %v", err) - } - return nil + return names, nil } func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { diff --git a/beam/server.go b/beam/server.go index 11b91d9fdf..ecd4ebdaa6 100644 --- a/beam/server.go +++ b/beam/server.go @@ -27,6 +27,17 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server { return s } +func (s *Server) OnLs(h func() ([]string, error)) *Server { + return s.OnVerb(Ls, Handler(func(msg *Message) error { + names, err := h() + if err != nil { + return err + } + _, err = msg.Ret.Send(&Message{Verb: Set, Args: names}) + return err + })) +} + func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { return s.OnVerb(Spawn, Handler(func(msg *Message) error { obj, err := h(msg.Args...) From c1a78b28ecbec88b78c489b8c69fd7bb95bda6db Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:28:29 +0100 Subject: [PATCH 322/347] Implement OnStart and OnStop Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 19 ++++++------------- beam/server.go | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index a25350e7c4..f99dad27d0 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -45,7 +45,7 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { Server: beam.NewServer(), } b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) - b.Server.OnVerb(beam.Start, beam.Handler(b.start)) + b.Server.OnStart(b.start) b.Server.OnLs(b.ls) b.Server.OnSpawn(b.spawn) return b.Server, nil @@ -81,8 +81,7 @@ func (b *dockerClientBackend) attach(ctx *beam.Message) error { return nil } -func (b *dockerClientBackend) start(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) +func (b *dockerClientBackend) start() error { return nil } @@ -133,8 +132,8 @@ func (b *dockerClientBackend) newContainer(id string) beam.Sender { c := &container{backend: b, id: id} instance := beam.NewServer() instance.OnVerb(beam.Attach, beam.Handler(c.attach)) - instance.OnVerb(beam.Start, beam.Handler(c.start)) - instance.OnVerb(beam.Stop, beam.Handler(c.stop)) + instance.OnStart(c.start) + instance.OnStop(c.stop) instance.OnVerb(beam.Get, beam.Handler(c.get)) return instance } @@ -160,7 +159,7 @@ func (c *container) attach(ctx *beam.Message) error { return nil } -func (c *container) start(ctx *beam.Message) error { +func (c *container) start() error { path := fmt.Sprintf("/containers/%s/start", c.id) resp, err := c.backend.client.call("POST", path, "{}") if err != nil { @@ -173,13 +172,10 @@ func (c *container) start(ctx *beam.Message) error { if resp.StatusCode != 204 { return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { - return err - } return nil } -func (c *container) stop(ctx *beam.Message) error { +func (c *container) stop() error { path := fmt.Sprintf("/containers/%s/stop", c.id) resp, err := c.backend.client.call("POST", path, "") if err != nil { @@ -192,9 +188,6 @@ func (c *container) stop(ctx *beam.Message) error { if resp.StatusCode != 204 { return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { - return err - } return nil } diff --git a/beam/server.go b/beam/server.go index ecd4ebdaa6..b241edf6fe 100644 --- a/beam/server.go +++ b/beam/server.go @@ -49,6 +49,26 @@ func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { })) } +func (s *Server) OnStart(h func() error) *Server { + return s.OnVerb(Start, Handler(func(msg *Message) error { + if err := h(); err != nil { + return err + } + _, err := msg.Ret.Send(&Message{Verb: Ack}) + return err + })) +} + +func (s *Server) OnStop(h func() error) *Server { + return s.OnVerb(Stop, Handler(func(msg *Message) error { + if err := h(); err != nil { + return err + } + _, err := msg.Ret.Send(&Message{Verb: Ack}) + return err + })) +} + func (s *Server) Send(msg *Message) (Receiver, error) { if h, exists := s.handlers[msg.Verb]; exists { return h.Send(msg) From 8e530ead6e54abf157362226af4b820e40a3e33c Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:53:22 +0100 Subject: [PATCH 323/347] Implement OnGet Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 15 ++++++--------- beam/server.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index f99dad27d0..072473202e 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -134,7 +134,7 @@ func (b *dockerClientBackend) newContainer(id string) beam.Sender { instance.OnVerb(beam.Attach, beam.Handler(c.attach)) instance.OnStart(c.start) instance.OnStop(c.stop) - instance.OnVerb(beam.Get, beam.Handler(c.get)) + instance.OnGet(c.get) return instance } @@ -191,23 +191,20 @@ func (c *container) stop() error { return nil } -func (c *container) get(ctx *beam.Message) error { +func (c *container) get() (string, error) { path := fmt.Sprintf("/containers/%s/json", c.id) resp, err := c.backend.client.call("GET", path, "") if err != nil { - return err + return "", err } respBody, err := ioutil.ReadAll(resp.Body) if err != nil { - return err + return "", err } if resp.StatusCode != 200 { - return fmt.Errorf("%s", respBody) + return "", fmt.Errorf("%s", respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{string(respBody)}}); err != nil { - return err - } - return nil + return string(respBody), nil } type client struct { diff --git a/beam/server.go b/beam/server.go index b241edf6fe..63b35a8f70 100644 --- a/beam/server.go +++ b/beam/server.go @@ -49,6 +49,17 @@ func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { })) } +func (s *Server) OnGet(h func() (string, error)) *Server { + return s.OnVerb(Get, Handler(func(msg *Message) error { + content, err := h() + if err != nil { + return err + } + _, err = msg.Ret.Send(&Message{Verb: Set, Args: []string{content}}) + return err + })) +} + func (s *Server) OnStart(h func() error) *Server { return s.OnVerb(Start, Handler(func(msg *Message) error { if err := h(); err != nil { From 3ac10e0c926d56a3f1b48628692258ca0362b940 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:59:39 +0100 Subject: [PATCH 324/347] Implement OnAttach Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 24 ++++++++++++------------ beam/server.go | 6 ++++++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 072473202e..50960a760d 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -44,7 +44,7 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { client: client, Server: beam.NewServer(), } - b.Server.OnVerb(beam.Attach, beam.Handler(b.attach)) + b.Server.OnAttach(b.attach) b.Server.OnStart(b.start) b.Server.OnLs(b.ls) b.Server.OnSpawn(b.spawn) @@ -58,12 +58,12 @@ type dockerClientBackend struct { *beam.Server } -func (b *dockerClientBackend) attach(ctx *beam.Message) error { - if ctx.Args[0] == "" { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) +func (b *dockerClientBackend) attach(name string, ret beam.Sender) error { + if name == "" { + ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) <-make(chan struct{}) } else { - path := fmt.Sprintf("/containers/%s/json", ctx.Args[0]) + path := fmt.Sprintf("/containers/%s/json", name) resp, err := b.client.call("GET", path, "") if err != nil { return err @@ -75,8 +75,8 @@ func (b *dockerClientBackend) attach(ctx *beam.Message) error { if resp.StatusCode != 200 { return fmt.Errorf("%s", respBody) } - c := b.newContainer(ctx.Args[0]) - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) + c := b.newContainer(name) + ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) } return nil } @@ -131,7 +131,7 @@ func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { func (b *dockerClientBackend) newContainer(id string) beam.Sender { c := &container{backend: b, id: id} instance := beam.NewServer() - instance.OnVerb(beam.Attach, beam.Handler(c.attach)) + instance.OnAttach(c.attach) instance.OnStart(c.start) instance.OnStop(c.stop) instance.OnGet(c.get) @@ -143,8 +143,8 @@ type container struct { id string } -func (c *container) attach(ctx *beam.Message) error { - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { +func (c *container) attach(name string, ret beam.Sender) error { + if _, err := ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { return err } @@ -152,8 +152,8 @@ func (c *container) attach(ctx *beam.Message) error { stdoutR, stdoutW := io.Pipe() stderrR, stderrW := io.Pipe() - go beam.EncodeStream(ctx.Ret, stdoutR, "stdout") - go beam.EncodeStream(ctx.Ret, stderrR, "stderr") + go beam.EncodeStream(ret, stdoutR, "stdout") + go beam.EncodeStream(ret, stderrR, "stderr") c.backend.client.hijack("POST", path, nil, stdoutW, stderrW) return nil diff --git a/beam/server.go b/beam/server.go index 63b35a8f70..96104a0a68 100644 --- a/beam/server.go +++ b/beam/server.go @@ -49,6 +49,12 @@ func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { })) } +func (s *Server) OnAttach(h func(name string, ret Sender) error) *Server { + return s.OnVerb(Attach, Handler(func(msg *Message) error { + return h(msg.Args[0], msg.Ret) + })) +} + func (s *Server) OnGet(h func() (string, error)) *Server { return s.OnVerb(Get, Handler(func(msg *Message) error { content, err := h() From 97a0b78d35fac68265f659a0d955c169d9c98e01 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 15:14:57 +0100 Subject: [PATCH 325/347] Implement OnLog and OnError Signed-off-by: Aanand Prasad --- beam/server.go | 12 ++++++++++++ swarmd/swarmd.go | 12 ++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/beam/server.go b/beam/server.go index 96104a0a68..23a2e09baa 100644 --- a/beam/server.go +++ b/beam/server.go @@ -27,6 +27,12 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server { return s } +func (s *Server) OnLog(h func(...string) error) *Server { + return s.OnVerb(Log, Handler(func(msg *Message) error { + return h(msg.Args...) + })) +} + func (s *Server) OnLs(h func() ([]string, error)) *Server { return s.OnVerb(Ls, Handler(func(msg *Message) error { names, err := h() @@ -55,6 +61,12 @@ func (s *Server) OnAttach(h func(name string, ret Sender) error) *Server { })) } +func (s *Server) OnError(h func(...string) error) *Server { + return s.OnVerb(Error, Handler(func(msg *Message) error { + return h(msg.Args...) + })) +} + func (s *Server) OnGet(h func() (string, error)) *Server { return s.OnVerb(Get, Handler(func(msg *Message) error { content, err := h() diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index dccecdb080..864311d4b0 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -25,14 +25,14 @@ func main() { func cmdDaemon(c *cli.Context) { app := beam.NewServer() - app.OnLog(beam.Handler(func(msg *beam.Message) error { - log.Printf("%s\n", strings.Join(msg.Args, " ")) + app.OnLog(func(args ...string) error { + log.Printf("%s\n", strings.Join(args, " ")) return nil - })) - app.OnError(beam.Handler(func(msg *beam.Message) error { - Fatalf("Fatal: %v", strings.Join(msg.Args[:1], "")) + }) + app.OnError(func(args ...string) error { + Fatalf("Fatal: %v", strings.Join(args[:1], "")) return nil - })) + }) back := backends.New() if len(c.Args()) == 0 { names, err := back.Ls() From 6486d7fc941cf0128a75e4774353980c1ae80e2f Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 15:15:34 +0100 Subject: [PATCH 326/347] Convert aggregate and orchard to new server DSL Signed-off-by: Aanand Prasad --- backends/aggregate.go | 38 +++++++++++++++++--------------------- backends/orchard.go | 19 +++++++++---------- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/backends/aggregate.go b/backends/aggregate.go index a836e235d6..158229869b 100644 --- a/backends/aggregate.go +++ b/backends/aggregate.go @@ -11,22 +11,21 @@ import ( func Aggregate() beam.Sender { backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { + backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { allBackends := New() instance := beam.NewServer() - a, err := newAggregator(allBackends, instance, ctx.Args) + a, err := newAggregator(allBackends, instance, cmd) if err != nil { - return err + return nil, err } - instance.OnVerb(beam.Attach, beam.Handler(a.attach)) - instance.OnVerb(beam.Start, beam.Handler(a.start)) - instance.OnVerb(beam.Ls, beam.Handler(a.ls)) + instance.OnAttach(a.attach) + instance.OnStart(a.start) + instance.OnLs(a.ls) - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) - return err - })) + return instance, nil + }) return backend } @@ -61,13 +60,13 @@ func newAggregator(allBackends *beam.Object, server *beam.Server, args []string) return a, nil } -func (a *aggregator) attach(ctx *beam.Message) error { - if ctx.Args[0] != "" { +func (a *aggregator) attach(name string, ret beam.Sender) error { + if name != "" { // TODO: implement this? return fmt.Errorf("attaching to a child is not implemented") } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: a.server}); err != nil { + if _, err := ret.Send(&beam.Message{Verb: beam.Ack, Ret: a.server}); err != nil { return err } @@ -81,7 +80,7 @@ func (a *aggregator) attach(ctx *beam.Message) error { copies.Add(1) go func() { log.Printf("copying output from %#v\n", b) - beam.Copy(ctx.Ret, r) + beam.Copy(ret, r) log.Printf("finished output from %#v\n", b) copies.Done() }() @@ -91,29 +90,26 @@ func (a *aggregator) attach(ctx *beam.Message) error { return nil } -func (a *aggregator) start(ctx *beam.Message) error { +func (a *aggregator) start() error { for _, b := range a.backends { err := b.Start() if err != nil { return err } } - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) - return err + return nil } -func (a *aggregator) ls(ctx *beam.Message) error { +func (a *aggregator) ls() ([]string, error) { var children []string for _, b := range a.backends { bChildren, err := b.Ls() if err != nil { - return err + return nil, err } children = append(children, bChildren...) } - ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: children}) - - return nil + return children, nil } diff --git a/backends/orchard.go b/backends/orchard.go index 3425c1e8bd..f16d5aebf3 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -13,11 +13,11 @@ import ( func Orchard() beam.Sender { backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { - if len(ctx.Args) != 2 { - return fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host") + backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { + if len(cmd) != 2 { + return nil, fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host") } - apiToken, hostName := ctx.Args[0], ctx.Args[1] + apiToken, hostName := cmd[0], cmd[1] apiClient := &api.HTTPClient{ BaseURL: "https://api.orchardup.com/v2", @@ -26,13 +26,13 @@ func Orchard() beam.Sender { host, err := apiClient.GetHost(hostName) if err != nil { - return err + return nil, err } url := fmt.Sprintf("tcp://%s:4243", host.IPAddress) tlsConfig, err := getTLSConfig([]byte(host.ClientCert), []byte(host.ClientKey)) if err != nil { - return err + return nil, err } backend := DockerClientWithConfig(&DockerClientConfig{ @@ -43,12 +43,11 @@ func Orchard() beam.Sender { forwardBackend := beam.Obj(backend) forwardInstance, err := forwardBackend.Spawn(url) if err != nil { - return err + return nil, err } - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: forwardInstance}) - return err - })) + return forwardInstance, nil + }) return backend } From 62734b842fac02ae0f442249859969cb07668bfe Mon Sep 17 00:00:00 2001 From: John Hopper Date: Thu, 19 Jun 2014 11:34:27 -0500 Subject: [PATCH 327/347] Fix Debug for Libchan This includes some minor cleanup among other things needed to make debug work with libchan (correctly). Signed-off-by: John Hopper john.hopper@jpserver.net --- debug/debug.go | 65 ++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/debug/debug.go b/debug/debug.go index 686da4acd0..0e361e6db7 100644 --- a/debug/debug.go +++ b/debug/debug.go @@ -2,6 +2,7 @@ package debug import ( "fmt" + "io" "log" "github.com/docker/libswarm/beam" @@ -19,18 +20,9 @@ func Debug() beam.Sender { return sender } -// Function for forwarding a messgae including some minor error formatting -func forward(out beam.Sender, msg *beam.Message) (err error) { - if _, err := out.Send(msg); err != nil { - return fmt.Errorf("[debug] Failed to forward msg. Reason: %v\n", err) - } - return -} - // Debug service type type debug struct { service *beam.Server - in beam.Receiver out beam.Sender } @@ -40,7 +32,6 @@ func (dbg *debug) spawn(msg *beam.Message) (err error) { // set to the services present before and after this one in the pipeline. instance := beam.Task(func(in beam.Receiver, out beam.Sender) { // Setup our channels - dbg.in = in dbg.out = out // Set up the debug interceptor @@ -62,7 +53,7 @@ func (dbg *debug) spawn(msg *beam.Message) (err error) { // Catches all messages sent to the service func (dbg *debug) catchall(msg *beam.Message) (err error) { - log.Printf("[debug] ---> Upstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) + log.Printf("[debug] ---> Outbound Message ---> { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) // If there's no output after us then we'll just reply with an error // informing the receiver that the verb is not implemented. @@ -70,39 +61,39 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) { return fmt.Errorf("[debug] Verb: %s is not implemented.", msg.Verb) } - // The forwarded message has the return channel set to a new replyHandler. The replyHandler is a small - // callback that allows for interception of downstream messages. - forwardedMessage := &beam.Message{ + // We forward the message with a special Ret value of "beam.RetPipe" - this + // asks libchan to open a new pipe so that we can read replies from upstream + forwardedMsg := &beam.Message{ Verb: msg.Verb, Args: msg.Args, Att: msg.Att, - Ret: &replyHandler{ - Sender: msg.Ret, - }, + Ret: beam.RetPipe, } // Send the forwarded message - if err := forward(dbg.out, forwardedMessage); err == nil { - // Hijack the return channel so we can avoid any interference with things such as close - msg.Ret = beam.NopSender{} + if inbound, err := dbg.out.Send(forwardedMsg); err != nil { + return fmt.Errorf("[debug] Failed to forward msg. Reason: %v\n", err) + } else if inbound == nil { + return fmt.Errorf("[debug] Inbound channel nil.\n") + } else { + for { + // Relay all messages returned until the inbound channel is empty (EOF) + var reply *beam.Message + if reply, err = inbound.Receive(0); err != nil { + if err == io.EOF { + // EOF is expected + err = nil + } + break + } + + // Forward the message back downstream + if _, err = msg.Ret.Send(reply); err != nil { + return fmt.Errorf("[debug] Failed to forward msg. Reason: %v\n", err) + } + log.Printf("[debug] <--- Inbound Message <--- { Verb: %s, Args: %v }\n", reply.Verb, reply.Args) + } } return } - -// We use a replyHandler to provide context for relaying the return channel -// of the origin message. -type replyHandler struct { - beam.Sender -} - -// Send a message using the out channel -func (rh *replyHandler) Send(msg *beam.Message) (receiver beam.Receiver, err error) { - log.Printf("[debug] <--- Downstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) - return nil, forward(rh.Sender, msg) -} - -func (rh *replyHandler) Close() (err error) { - // Since we don't allow the downstream handler to close the return channel, we do so here. - return rh.Sender.Close() -} From c779c2b7b3e0c5e7faa31389fe6097ba08816c2e Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Thu, 26 Jun 2014 01:03:17 -0400 Subject: [PATCH 328/347] convert to the latest interface change Docker-DCO-1.1-Signed-off-by: Aaron Feng (github: aaronfeng) --- backends/ec2.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index 1fed368677..5848a2f4fc 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -343,7 +343,7 @@ func signalHandler(client *ec2Client) { func Ec2() beam.Sender { backend := beam.NewServer() - backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { + backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { var config, err = newConfig(ctx.Args) if err != nil { @@ -356,12 +356,12 @@ func Ec2() beam.Sender { } client := &ec2Client{config, ec2Conn, beam.NewServer(), nil, nil, nil} - client.Server.OnSpawn(beam.Handler(client.spawn)) - client.Server.OnStart(beam.Handler(client.start)) - client.Server.OnStop(beam.Handler(client.stop)) - client.Server.OnAttach(beam.Handler(client.attach)) - client.Server.OnLs(beam.Handler(client.ls)) - client.Server.OnGet(beam.Handler(client.get)) + client.Server.OnVerb(beam.Spawn, beam.Handler(client.spawn)) + client.Server.OnVerb(beam.Start, beam.Handler(client.start)) + client.Server.OnVerb(beam.Stop, beam.Handler(client.stop)) + client.Server.OnVerb(beam.Attach, beam.Handler(client.attach)) + client.Server.OnVerb(beam.Ls, beam.Handler(client.ls)) + client.Server.OnVerb(beam.Get, beam.Handler(client.get)) signalHandler(client) _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) From a9d8baf70323ea84f96260c553cc03d2fa46e256 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Wed, 25 Jun 2014 23:02:13 -0400 Subject: [PATCH 329/347] go fmt Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/dockerclient.go | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 320ec9c12f..30259b8b7f 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -107,7 +107,7 @@ func (b *dockerClientBackend) ls() ([]string, error) { } func (b *dockerClientBackend) createContainer(cmd ...string) (beam.Sender, error) { - if len(cmd) != 1 { + if len(cmd) != 1 { return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } @@ -123,7 +123,7 @@ func (b *dockerClientBackend) createContainer(cmd ...string) (beam.Sender, error if resp.StatusCode == 404 { return nil, fmt.Errorf("expected status code 201, got %d:\n%s", resp.StatusCode, respBody) - } + } var respJson struct{ Id string } if err = json.Unmarshal(respBody, &respJson); err != nil { @@ -138,47 +138,47 @@ func (b *dockerClientBackend) createImage(cmd ...string) error { } var respJson struct{ Image string } - if err := json.Unmarshal([]byte(cmd[0]), &respJson); err != nil { + if err := json.Unmarshal([]byte(cmd[0]), &respJson); err != nil { return err } - imageTag := strings.Split(respJson.Image, ":") + imageTag := strings.Split(respJson.Image, ":") - var tag = "latest" - image := imageTag[0] + var tag = "latest" + image := imageTag[0] - if len(imageTag) > 1 { - tag = imageTag[1] - } + if len(imageTag) > 1 { + tag = imageTag[1] + } - url := fmt.Sprintf("/images/create?fromImage=%s&tag=%s", image, tag) + url := fmt.Sprintf("/images/create?fromImage=%s&tag=%s", image, tag) - resp, err := b.client.call("POST", url, "") + resp, err := b.client.call("POST", url, "") if err != nil { return err } - _, err = ioutil.ReadAll(resp.Body) + _, err = ioutil.ReadAll(resp.Body) if err != nil { return err } - return nil + return nil } func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { - sender, err := b.createContainer(cmd...) + sender, err := b.createContainer(cmd...) - if err != nil { - err = b.createImage(cmd...) - if err != nil { - return sender, err - } - sender, err = b.createContainer(cmd...) - if err != nil { - return sender, err - } - } + if err != nil { + err = b.createImage(cmd...) + if err != nil { + return sender, err + } + sender, err = b.createContainer(cmd...) + if err != nil { + return sender, err + } + } return sender, nil } From d26dea3b76846591ef2bd9a68973f4fae50125a6 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 1 Jul 2014 01:10:25 -0700 Subject: [PATCH 330/347] Vendor goamz to avoid bzr build dependency Signed-off-by: Solomon Hykes --- vendor/src/launchpad.net/goamz/.lbox | 1 + vendor/src/launchpad.net/goamz/LICENSE | 185 ++ vendor/src/launchpad.net/goamz/aws/attempt.go | 74 + .../launchpad.net/goamz/aws/attempt_test.go | 57 + vendor/src/launchpad.net/goamz/aws/aws.go | 212 ++ .../src/launchpad.net/goamz/aws/aws_test.go | 73 + vendor/src/launchpad.net/goamz/ec2/ec2.go | 1087 +++++++++ .../src/launchpad.net/goamz/ec2/ec2_test.go | 900 ++++++++ .../src/launchpad.net/goamz/ec2/ec2i_test.go | 204 ++ .../src/launchpad.net/goamz/ec2/ec2t_test.go | 1072 +++++++++ .../launchpad.net/goamz/ec2/ec2test/filter.go | 84 + .../launchpad.net/goamz/ec2/ec2test/server.go | 2032 +++++++++++++++++ .../launchpad.net/goamz/ec2/export_test.go | 24 + .../goamz/ec2/networkinterfaces.go | 212 ++ .../goamz/ec2/networkinterfaces_test.go | 360 +++ .../src/launchpad.net/goamz/ec2/privateips.go | 67 + .../goamz/ec2/privateips_test.go | 177 ++ .../launchpad.net/goamz/ec2/responses_test.go | 1030 +++++++++ vendor/src/launchpad.net/goamz/ec2/sign.go | 42 + .../src/launchpad.net/goamz/ec2/sign_test.go | 68 + vendor/src/launchpad.net/goamz/ec2/subnets.go | 109 + .../launchpad.net/goamz/ec2/subnets_test.go | 247 ++ vendor/src/launchpad.net/goamz/ec2/vpc.go | 105 + .../src/launchpad.net/goamz/ec2/vpc_test.go | 196 ++ .../goamz/exp/mturk/export_test.go | 9 + .../launchpad.net/goamz/exp/mturk/mturk.go | 281 +++ .../goamz/exp/mturk/mturk_test.go | 95 + .../goamz/exp/mturk/responses_test.go | 9 + .../src/launchpad.net/goamz/exp/mturk/sign.go | 22 + .../goamz/exp/mturk/sign_test.go | 19 + .../goamz/exp/sdb/export_test.go | 9 + .../goamz/exp/sdb/responses_test.go | 120 + vendor/src/launchpad.net/goamz/exp/sdb/sdb.go | 413 ++++ .../launchpad.net/goamz/exp/sdb/sdb_test.go | 222 ++ .../src/launchpad.net/goamz/exp/sdb/sign.go | 51 + .../launchpad.net/goamz/exp/sdb/sign_test.go | 29 + .../src/launchpad.net/goamz/exp/sns/Makefile | 21 + vendor/src/launchpad.net/goamz/exp/sns/README | 1 + .../goamz/exp/sns/responses_test.go | 164 ++ .../src/launchpad.net/goamz/exp/sns/sign.go | 66 + vendor/src/launchpad.net/goamz/exp/sns/sns.go | 444 ++++ .../launchpad.net/goamz/exp/sns/sns_test.go | 245 ++ vendor/src/launchpad.net/goamz/iam/iam.go | 432 ++++ .../src/launchpad.net/goamz/iam/iam_test.go | 282 +++ .../src/launchpad.net/goamz/iam/iami_test.go | 208 ++ .../src/launchpad.net/goamz/iam/iamt_test.go | 39 + .../launchpad.net/goamz/iam/iamtest/server.go | 432 ++++ .../launchpad.net/goamz/iam/responses_test.go | 155 ++ vendor/src/launchpad.net/goamz/iam/sign.go | 35 + .../src/launchpad.net/goamz/s3/export_test.go | 31 + vendor/src/launchpad.net/goamz/s3/multi.go | 410 ++++ .../src/launchpad.net/goamz/s3/multi_test.go | 370 +++ .../launchpad.net/goamz/s3/responses_test.go | 198 ++ vendor/src/launchpad.net/goamz/s3/s3.go | 572 +++++ vendor/src/launchpad.net/goamz/s3/s3_test.go | 283 +++ vendor/src/launchpad.net/goamz/s3/s3i_test.go | 590 +++++ vendor/src/launchpad.net/goamz/s3/s3t_test.go | 79 + .../launchpad.net/goamz/s3/s3test/server.go | 628 +++++ vendor/src/launchpad.net/goamz/s3/sign.go | 112 + .../src/launchpad.net/goamz/s3/sign_test.go | 132 ++ .../src/launchpad.net/goamz/testutil/http.go | 186 ++ .../src/launchpad.net/goamz/testutil/suite.go | 30 + 62 files changed, 16042 insertions(+) create mode 100644 vendor/src/launchpad.net/goamz/.lbox create mode 100644 vendor/src/launchpad.net/goamz/LICENSE create mode 100644 vendor/src/launchpad.net/goamz/aws/attempt.go create mode 100644 vendor/src/launchpad.net/goamz/aws/attempt_test.go create mode 100644 vendor/src/launchpad.net/goamz/aws/aws.go create mode 100644 vendor/src/launchpad.net/goamz/aws/aws_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/ec2.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/ec2_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/ec2i_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/ec2t_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/ec2test/filter.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/ec2test/server.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/export_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/networkinterfaces.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/networkinterfaces_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/privateips.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/privateips_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/responses_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/sign.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/sign_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/subnets.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/subnets_test.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/vpc.go create mode 100644 vendor/src/launchpad.net/goamz/ec2/vpc_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/mturk/export_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/mturk/mturk.go create mode 100644 vendor/src/launchpad.net/goamz/exp/mturk/mturk_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/mturk/responses_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/mturk/sign.go create mode 100644 vendor/src/launchpad.net/goamz/exp/mturk/sign_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sdb/export_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sdb/responses_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sdb/sdb.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sdb/sdb_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sdb/sign.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sdb/sign_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sns/Makefile create mode 100644 vendor/src/launchpad.net/goamz/exp/sns/README create mode 100644 vendor/src/launchpad.net/goamz/exp/sns/responses_test.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sns/sign.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sns/sns.go create mode 100644 vendor/src/launchpad.net/goamz/exp/sns/sns_test.go create mode 100644 vendor/src/launchpad.net/goamz/iam/iam.go create mode 100644 vendor/src/launchpad.net/goamz/iam/iam_test.go create mode 100644 vendor/src/launchpad.net/goamz/iam/iami_test.go create mode 100644 vendor/src/launchpad.net/goamz/iam/iamt_test.go create mode 100644 vendor/src/launchpad.net/goamz/iam/iamtest/server.go create mode 100644 vendor/src/launchpad.net/goamz/iam/responses_test.go create mode 100644 vendor/src/launchpad.net/goamz/iam/sign.go create mode 100644 vendor/src/launchpad.net/goamz/s3/export_test.go create mode 100644 vendor/src/launchpad.net/goamz/s3/multi.go create mode 100644 vendor/src/launchpad.net/goamz/s3/multi_test.go create mode 100644 vendor/src/launchpad.net/goamz/s3/responses_test.go create mode 100644 vendor/src/launchpad.net/goamz/s3/s3.go create mode 100644 vendor/src/launchpad.net/goamz/s3/s3_test.go create mode 100644 vendor/src/launchpad.net/goamz/s3/s3i_test.go create mode 100644 vendor/src/launchpad.net/goamz/s3/s3t_test.go create mode 100644 vendor/src/launchpad.net/goamz/s3/s3test/server.go create mode 100644 vendor/src/launchpad.net/goamz/s3/sign.go create mode 100644 vendor/src/launchpad.net/goamz/s3/sign_test.go create mode 100644 vendor/src/launchpad.net/goamz/testutil/http.go create mode 100644 vendor/src/launchpad.net/goamz/testutil/suite.go diff --git a/vendor/src/launchpad.net/goamz/.lbox b/vendor/src/launchpad.net/goamz/.lbox new file mode 100644 index 0000000000..75e124512f --- /dev/null +++ b/vendor/src/launchpad.net/goamz/.lbox @@ -0,0 +1 @@ +propose -for=lp:goamz -cr diff --git a/vendor/src/launchpad.net/goamz/LICENSE b/vendor/src/launchpad.net/goamz/LICENSE new file mode 100644 index 0000000000..53320c352b --- /dev/null +++ b/vendor/src/launchpad.net/goamz/LICENSE @@ -0,0 +1,185 @@ +This software is licensed under the LGPLv3, included below. + +As a special exception to the GNU Lesser General Public License version 3 +("LGPL3"), the copyright holders of this Library give you permission to +convey to a third party a Combined Work that links statically or dynamically +to this Library without providing any Minimal Corresponding Source or +Minimal Application Code as set out in 4d or providing the installation +information set out in section 4e, provided that you comply with the other +provisions of LGPL3 and provided that you meet, for the Application the +terms and conditions of the license(s) which apply to the Application. + +Except as stated in this special exception, the provisions of LGPL3 will +continue to comply in full to this Library. If you modify this Library, you +may apply this exception to your version of this Library, but you are not +obliged to do so. If you do not wish to do so, delete this exception +statement from your version. This exception does not (and cannot) modify any +license terms which apply to the Application, with which you must still +comply. + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/vendor/src/launchpad.net/goamz/aws/attempt.go b/vendor/src/launchpad.net/goamz/aws/attempt.go new file mode 100644 index 0000000000..c0654f5d85 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/aws/attempt.go @@ -0,0 +1,74 @@ +package aws + +import ( + "time" +) + +// AttemptStrategy represents a strategy for waiting for an action +// to complete successfully. This is an internal type used by the +// implementation of other goamz packages. +type AttemptStrategy struct { + Total time.Duration // total duration of attempt. + Delay time.Duration // interval between each try in the burst. + Min int // minimum number of retries; overrides Total +} + +type Attempt struct { + strategy AttemptStrategy + last time.Time + end time.Time + force bool + count int +} + +// Start begins a new sequence of attempts for the given strategy. +func (s AttemptStrategy) Start() *Attempt { + now := time.Now() + return &Attempt{ + strategy: s, + last: now, + end: now.Add(s.Total), + force: true, + } +} + +// Next waits until it is time to perform the next attempt or returns +// false if it is time to stop trying. +func (a *Attempt) Next() bool { + now := time.Now() + sleep := a.nextSleep(now) + if !a.force && !now.Add(sleep).Before(a.end) && a.strategy.Min <= a.count { + return false + } + a.force = false + if sleep > 0 && a.count > 0 { + time.Sleep(sleep) + now = time.Now() + } + a.count++ + a.last = now + return true +} + +func (a *Attempt) nextSleep(now time.Time) time.Duration { + sleep := a.strategy.Delay - now.Sub(a.last) + if sleep < 0 { + return 0 + } + return sleep +} + +// HasNext returns whether another attempt will be made if the current +// one fails. If it returns true, the following call to Next is +// guaranteed to return true. +func (a *Attempt) HasNext() bool { + if a.force || a.strategy.Min > a.count { + return true + } + now := time.Now() + if now.Add(a.nextSleep(now)).Before(a.end) { + a.force = true + return true + } + return false +} diff --git a/vendor/src/launchpad.net/goamz/aws/attempt_test.go b/vendor/src/launchpad.net/goamz/aws/attempt_test.go new file mode 100644 index 0000000000..c8352e02a5 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/aws/attempt_test.go @@ -0,0 +1,57 @@ +package aws_test + +import ( + "launchpad.net/goamz/aws" + . "launchpad.net/gocheck" + "time" +) + +func (S) TestAttemptTiming(c *C) { + testAttempt := aws.AttemptStrategy{ + Total: 0.25e9, + Delay: 0.1e9, + } + want := []time.Duration{0, 0.1e9, 0.2e9, 0.2e9} + got := make([]time.Duration, 0, len(want)) // avoid allocation when testing timing + t0 := time.Now() + for a := testAttempt.Start(); a.Next(); { + got = append(got, time.Now().Sub(t0)) + } + got = append(got, time.Now().Sub(t0)) + c.Assert(got, HasLen, len(want)) + const margin = 0.01e9 + for i, got := range want { + lo := want[i] - margin + hi := want[i] + margin + if got < lo || got > hi { + c.Errorf("attempt %d want %g got %g", i, want[i].Seconds(), got.Seconds()) + } + } +} + +func (S) TestAttemptNextHasNext(c *C) { + a := aws.AttemptStrategy{}.Start() + c.Assert(a.Next(), Equals, true) + c.Assert(a.Next(), Equals, false) + + a = aws.AttemptStrategy{}.Start() + c.Assert(a.Next(), Equals, true) + c.Assert(a.HasNext(), Equals, false) + c.Assert(a.Next(), Equals, false) + + a = aws.AttemptStrategy{Total: 2e8}.Start() + c.Assert(a.Next(), Equals, true) + c.Assert(a.HasNext(), Equals, true) + time.Sleep(2e8) + c.Assert(a.HasNext(), Equals, true) + c.Assert(a.Next(), Equals, true) + c.Assert(a.Next(), Equals, false) + + a = aws.AttemptStrategy{Total: 1e8, Min: 2}.Start() + time.Sleep(1e8) + c.Assert(a.Next(), Equals, true) + c.Assert(a.HasNext(), Equals, true) + c.Assert(a.Next(), Equals, true) + c.Assert(a.HasNext(), Equals, false) + c.Assert(a.Next(), Equals, false) +} diff --git a/vendor/src/launchpad.net/goamz/aws/aws.go b/vendor/src/launchpad.net/goamz/aws/aws.go new file mode 100644 index 0000000000..366460095b --- /dev/null +++ b/vendor/src/launchpad.net/goamz/aws/aws.go @@ -0,0 +1,212 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2011 Canonical Ltd. +// + +package aws + +import ( + "errors" + "os" +) + +// Region defines the URLs where AWS services may be accessed. +// +// See http://goo.gl/d8BP1 for more details. +type Region struct { + Name string // the canonical name of this region. + EC2Endpoint string + S3Endpoint string + S3BucketEndpoint string // Not needed by AWS S3. Use ${bucket} for bucket name. + S3LocationConstraint bool // true if this region requires a LocationConstraint declaration. + S3LowercaseBucket bool // true if the region requires bucket names to be lower case. + SDBEndpoint string + SNSEndpoint string + SQSEndpoint string + IAMEndpoint string +} + +var USEast = Region{ + "us-east-1", + "https://ec2.us-east-1.amazonaws.com", + "https://s3.amazonaws.com", + "", + false, + false, + "https://sdb.amazonaws.com", + "https://sns.us-east-1.amazonaws.com", + "https://sqs.us-east-1.amazonaws.com", + "https://iam.amazonaws.com", +} + +var USWest = Region{ + "us-west-1", + "https://ec2.us-west-1.amazonaws.com", + "https://s3-us-west-1.amazonaws.com", + "", + true, + true, + "https://sdb.us-west-1.amazonaws.com", + "https://sns.us-west-1.amazonaws.com", + "https://sqs.us-west-1.amazonaws.com", + "https://iam.amazonaws.com", +} + +var USWest2 = Region{ + "us-west-2", + "https://ec2.us-west-2.amazonaws.com", + "https://s3-us-west-2.amazonaws.com", + "", + true, + true, + "https://sdb.us-west-2.amazonaws.com", + "https://sns.us-west-2.amazonaws.com", + "https://sqs.us-west-2.amazonaws.com", + "https://iam.amazonaws.com", +} + +var EUWest = Region{ + "eu-west-1", + "https://ec2.eu-west-1.amazonaws.com", + "https://s3-eu-west-1.amazonaws.com", + "", + true, + true, + "https://sdb.eu-west-1.amazonaws.com", + "https://sns.eu-west-1.amazonaws.com", + "https://sqs.eu-west-1.amazonaws.com", + "https://iam.amazonaws.com", +} + +var APSoutheast = Region{ + "ap-southeast-1", + "https://ec2.ap-southeast-1.amazonaws.com", + "https://s3-ap-southeast-1.amazonaws.com", + "", + true, + true, + "https://sdb.ap-southeast-1.amazonaws.com", + "https://sns.ap-southeast-1.amazonaws.com", + "https://sqs.ap-southeast-1.amazonaws.com", + "https://iam.amazonaws.com", +} + +var APSoutheast2 = Region{ + "ap-southeast-2", + "https://ec2.ap-southeast-2.amazonaws.com", + "https://s3-ap-southeast-2.amazonaws.com", + "", + true, + true, + "https://sdb.ap-southeast-2.amazonaws.com", + "https://sns.ap-southeast-2.amazonaws.com", + "https://sqs.ap-southeast-2.amazonaws.com", + "https://iam.amazonaws.com", +} + +var APNortheast = Region{ + "ap-northeast-1", + "https://ec2.ap-northeast-1.amazonaws.com", + "https://s3-ap-northeast-1.amazonaws.com", + "", + true, + true, + "https://sdb.ap-northeast-1.amazonaws.com", + "https://sns.ap-northeast-1.amazonaws.com", + "https://sqs.ap-northeast-1.amazonaws.com", + "https://iam.amazonaws.com", +} + +var SAEast = Region{ + "sa-east-1", + "https://ec2.sa-east-1.amazonaws.com", + "https://s3-sa-east-1.amazonaws.com", + "", + true, + true, + "https://sdb.sa-east-1.amazonaws.com", + "https://sns.sa-east-1.amazonaws.com", + "https://sqs.sa-east-1.amazonaws.com", + "https://iam.amazonaws.com", +} + +var Regions = map[string]Region{ + APNortheast.Name: APNortheast, + APSoutheast.Name: APSoutheast, + APSoutheast2.Name: APSoutheast2, + EUWest.Name: EUWest, + USEast.Name: USEast, + USWest.Name: USWest, + USWest2.Name: USWest2, + SAEast.Name: SAEast, +} + +type Auth struct { + AccessKey, SecretKey string +} + +var unreserved = make([]bool, 128) +var hex = "0123456789ABCDEF" + +func init() { + // RFC3986 + u := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890-_.~" + for _, c := range u { + unreserved[c] = true + } +} + +// EnvAuth creates an Auth based on environment information. +// The AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment +// variables are used as the first preference, but EC2_ACCESS_KEY +// and EC2_SECRET_KEY environment variables are also supported. +func EnvAuth() (auth Auth, err error) { + auth.AccessKey = os.Getenv("AWS_ACCESS_KEY_ID") + auth.SecretKey = os.Getenv("AWS_SECRET_ACCESS_KEY") + // We fallback to EC2_ env variables if the AWS_ variants are not used. + if auth.AccessKey == "" && auth.SecretKey == "" { + auth.AccessKey = os.Getenv("EC2_ACCESS_KEY") + auth.SecretKey = os.Getenv("EC2_SECRET_KEY") + } + if auth.AccessKey == "" { + err = errors.New("AWS_ACCESS_KEY_ID not found in environment") + } + if auth.SecretKey == "" { + err = errors.New("AWS_SECRET_ACCESS_KEY not found in environment") + } + return +} + +// Encode takes a string and URI-encodes it in a way suitable +// to be used in AWS signatures. +func Encode(s string) string { + encode := false + for i := 0; i != len(s); i++ { + c := s[i] + if c > 127 || !unreserved[c] { + encode = true + break + } + } + if !encode { + return s + } + e := make([]byte, len(s)*3) + ei := 0 + for i := 0; i != len(s); i++ { + c := s[i] + if c > 127 || !unreserved[c] { + e[ei] = '%' + e[ei+1] = hex[c>>4] + e[ei+2] = hex[c&0xF] + ei += 3 + } else { + e[ei] = c + ei += 1 + } + } + return string(e[:ei]) +} diff --git a/vendor/src/launchpad.net/goamz/aws/aws_test.go b/vendor/src/launchpad.net/goamz/aws/aws_test.go new file mode 100644 index 0000000000..dc14e92987 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/aws/aws_test.go @@ -0,0 +1,73 @@ +package aws_test + +import ( + "launchpad.net/goamz/aws" + . "launchpad.net/gocheck" + "os" + "strings" + "testing" +) + +func Test(t *testing.T) { + TestingT(t) +} + +var _ = Suite(&S{}) + +type S struct { + environ []string +} + +func (s *S) SetUpSuite(c *C) { + s.environ = os.Environ() +} + +func (s *S) TearDownTest(c *C) { + os.Clearenv() + for _, kv := range s.environ { + l := strings.SplitN(kv, "=", 2) + os.Setenv(l[0], l[1]) + } +} + +func (s *S) TestEnvAuthNoSecret(c *C) { + os.Clearenv() + _, err := aws.EnvAuth() + c.Assert(err, ErrorMatches, "AWS_SECRET_ACCESS_KEY not found in environment") +} + +func (s *S) TestEnvAuthNoAccess(c *C) { + os.Clearenv() + os.Setenv("AWS_SECRET_ACCESS_KEY", "foo") + _, err := aws.EnvAuth() + c.Assert(err, ErrorMatches, "AWS_ACCESS_KEY_ID not found in environment") +} + +func (s *S) TestEnvAuth(c *C) { + os.Clearenv() + os.Setenv("AWS_SECRET_ACCESS_KEY", "secret") + os.Setenv("AWS_ACCESS_KEY_ID", "access") + auth, err := aws.EnvAuth() + c.Assert(err, IsNil) + c.Assert(auth, Equals, aws.Auth{SecretKey: "secret", AccessKey: "access"}) +} + +func (s *S) TestEnvAuthLegacy(c *C) { + os.Clearenv() + os.Setenv("EC2_SECRET_KEY", "secret") + os.Setenv("EC2_ACCESS_KEY", "access") + auth, err := aws.EnvAuth() + c.Assert(err, IsNil) + c.Assert(auth, Equals, aws.Auth{SecretKey: "secret", AccessKey: "access"}) +} + +func (s *S) TestEncode(c *C) { + c.Assert(aws.Encode("foo"), Equals, "foo") + c.Assert(aws.Encode("/"), Equals, "%2F") +} + +func (s *S) TestRegionsAreNamed(c *C) { + for n, r := range aws.Regions { + c.Assert(n, Equals, r.Name) + } +} diff --git a/vendor/src/launchpad.net/goamz/ec2/ec2.go b/vendor/src/launchpad.net/goamz/ec2/ec2.go new file mode 100644 index 0000000000..54896dfdbf --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/ec2.go @@ -0,0 +1,1087 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2011 Canonical Ltd. +// + +package ec2 + +import ( + "crypto/rand" + "encoding/hex" + "encoding/xml" + "fmt" + "log" + "net/http" + "net/http/httputil" + "net/url" + "sort" + "strconv" + "time" + + "launchpad.net/goamz/aws" +) + +const ( + debug = false + + // legacyAPIVersion is the AWS API version used for all but + // VPC-related requests. + legacyAPIVersion = "2011-12-15" + + // AWS API version used for VPC-related calls. + vpcAPIVersion = "2013-10-15" +) + +// The EC2 type encapsulates operations with a specific EC2 region. +type EC2 struct { + aws.Auth + aws.Region + private byte // Reserve the right of using private data. +} + +// New creates a new EC2. +func New(auth aws.Auth, region aws.Region) *EC2 { + return &EC2{auth, region, 0} +} + +// ---------------------------------------------------------------------------- +// Filtering helper. + +// Filter builds filtering parameters to be used in an EC2 query which supports +// filtering. For example: +// +// filter := NewFilter() +// filter.Add("architecture", "i386") +// filter.Add("launch-index", "0") +// resp, err := ec2.Instances(nil, filter) +// +type Filter struct { + m map[string][]string +} + +// NewFilter creates a new Filter. +func NewFilter() *Filter { + return &Filter{make(map[string][]string)} +} + +// Add appends a filtering parameter with the given name and value(s). +func (f *Filter) Add(name string, value ...string) { + f.m[name] = append(f.m[name], value...) +} + +func (f *Filter) addParams(params map[string]string) { + if f != nil { + a := make([]string, len(f.m)) + i := 0 + for k := range f.m { + a[i] = k + i++ + } + sort.StringSlice(a).Sort() + for i, k := range a { + prefix := "Filter." + strconv.Itoa(i+1) + params[prefix+".Name"] = k + for j, v := range f.m[k] { + params[prefix+".Value."+strconv.Itoa(j+1)] = v + } + } + } +} + +// ---------------------------------------------------------------------------- +// Request dispatching logic. + +// Error encapsulates an error returned by EC2. +// +// See http://goo.gl/VZGuC for more details. +type Error struct { + // HTTP status code (200, 403, ...) + StatusCode int + // EC2 error code ("UnsupportedOperation", ...) + Code string + // The human-oriented error message + Message string + RequestId string `xml:"RequestID"` +} + +func (err *Error) Error() string { + if err.Code == "" { + return err.Message + } + + return fmt.Sprintf("%s (%s)", err.Message, err.Code) +} + +// For now a single error inst is being exposed. In the future it may be useful +// to provide access to all of them, but rather than doing it as an array/slice, +// use a *next pointer, so that it's backward compatible and it continues to be +// easy to handle the first error, which is what most people will want. +type xmlErrors struct { + RequestId string `xml:"RequestID"` + Errors []Error `xml:"Errors>Error"` +} + +var timeNow = time.Now + +func (ec2 *EC2) query(params map[string]string, resp interface{}) error { + params["Timestamp"] = timeNow().In(time.UTC).Format(time.RFC3339) + endpoint, err := url.Parse(ec2.Region.EC2Endpoint) + if err != nil { + return err + } + if endpoint.Path == "" { + endpoint.Path = "/" + } + sign(ec2.Auth, "GET", endpoint.Path, params, endpoint.Host) + endpoint.RawQuery = multimap(params).Encode() + if debug { + log.Printf("get { %v } -> {\n", endpoint.String()) + } + r, err := http.Get(endpoint.String()) + if err != nil { + return err + } + defer r.Body.Close() + + if debug { + dump, _ := httputil.DumpResponse(r, true) + log.Printf("response:\n") + log.Printf("%v\n}\n", string(dump)) + } + if r.StatusCode != 200 { + return buildError(r) + } + err = xml.NewDecoder(r.Body).Decode(resp) + return err +} + +func multimap(p map[string]string) url.Values { + q := make(url.Values, len(p)) + for k, v := range p { + q[k] = []string{v} + } + return q +} + +func buildError(r *http.Response) error { + errors := xmlErrors{} + xml.NewDecoder(r.Body).Decode(&errors) + var err Error + if len(errors.Errors) > 0 { + err = errors.Errors[0] + } + err.RequestId = errors.RequestId + err.StatusCode = r.StatusCode + if err.Message == "" { + err.Message = r.Status + } + return &err +} + +func makeParams(action string) map[string]string { + return makeParamsWithVersion(action, legacyAPIVersion) +} + +func makeParamsVPC(action string) map[string]string { + return makeParamsWithVersion(action, vpcAPIVersion) +} + +func makeParamsWithVersion(action, version string) map[string]string { + params := make(map[string]string) + params["Action"] = action + params["Version"] = version + return params +} + +func addParamsList(params map[string]string, label string, ids []string) { + for i, id := range ids { + params[label+"."+strconv.Itoa(i+1)] = id + } +} + +// ---------------------------------------------------------------------------- +// Instance management functions and types. + +// RunNetworkInterface encapsulates options for a single network +// interface, specified when calling RunInstances. +// +// If Id is set, it must match an existing VPC network interface, and +// in this case only a single instance can be launched. If Id is not +// set, a new network interface will be created for each instance. +// +// The following fields are required when creating a new network +// interface (i.e. Id is empty): DeviceIndex, SubnetId, Description +// (only used if set), SecurityGroupIds. +// +// PrivateIPs can be used to add one or more private IP addresses to a +// network interface. Only one of the IP addresses can be set as +// primary. If none are given, EC2 selects a primary IP for each +// created interface from the subnet pool. +// +// When SecondaryPrivateIPCount is non-zero, EC2 allocates that number +// of IP addresses from within the subnet range and sets them as +// secondary IPs. The number of IP addresses that can be assigned to a +// network interface varies by instance type. +type RunNetworkInterface struct { + Id string + DeviceIndex int + SubnetId string + Description string + PrivateIPs []PrivateIP + SecurityGroupIds []string + DeleteOnTermination bool + SecondaryPrivateIPCount int +} + +// The RunInstances type encapsulates options for the respective request in EC2. +// +// See http://goo.gl/Mcm3b for more details. +type RunInstances struct { + ImageId string + MinCount int + MaxCount int + KeyName string + InstanceType string + SecurityGroups []SecurityGroup + KernelId string + RamdiskId string + UserData []byte + AvailZone string + PlacementGroupName string + Monitoring bool + SubnetId string + DisableAPITermination bool + ShutdownBehavior string + PrivateIPAddress string + BlockDeviceMappings []BlockDeviceMapping + NetworkInterfaces []RunNetworkInterface +} + +// Response to a RunInstances request. +// +// See http://goo.gl/Mcm3b for more details. +type RunInstancesResp struct { + RequestId string `xml:"requestId"` + ReservationId string `xml:"reservationId"` + OwnerId string `xml:"ownerId"` + SecurityGroups []SecurityGroup `xml:"groupSet>item"` + Instances []Instance `xml:"instancesSet>item"` +} + +// Instance encapsulates a running instance in EC2. +// +// See http://goo.gl/OCH8a for more details. +type Instance struct { + InstanceId string `xml:"instanceId"` + InstanceType string `xml:"instanceType"` + ImageId string `xml:"imageId"` + PrivateDNSName string `xml:"privateDnsName"` + DNSName string `xml:"dnsName"` + IPAddress string `xml:"ipAddress"` + PrivateIPAddress string `xml:"privateIpAddress"` + SubnetId string `xml:"subnetId"` + VPCId string `xml:"vpcId"` + SourceDestCheck bool `xml:"sourceDestCheck"` + KeyName string `xml:"keyName"` + AMILaunchIndex int `xml:"amiLaunchIndex"` + Hypervisor string `xml:"hypervisor"` + VirtType string `xml:"virtualizationType"` + Monitoring string `xml:"monitoring>state"` + AvailZone string `xml:"placement>availabilityZone"` + PlacementGroupName string `xml:"placement>groupName"` + State InstanceState `xml:"instanceState"` + Tags []Tag `xml:"tagSet>item"` + SecurityGroups []SecurityGroup `xml:"groupSet>item"` + NetworkInterfaces []NetworkInterface `xml:"networkInterfaceSet>item"` +} + +// RunInstances starts new instances in EC2. +// If options.MinCount and options.MaxCount are both zero, a single instance +// will be started; otherwise if options.MaxCount is zero, options.MinCount +// will be used instead. +// +// See http://goo.gl/Mcm3b for more details. +func (ec2 *EC2) RunInstances(options *RunInstances) (resp *RunInstancesResp, err error) { + params := prepareRunParams(*options) + params["ImageId"] = options.ImageId + params["InstanceType"] = options.InstanceType + var min, max int + if options.MinCount == 0 && options.MaxCount == 0 { + min = 1 + max = 1 + } else if options.MaxCount == 0 { + min = options.MinCount + max = min + } else { + min = options.MinCount + max = options.MaxCount + } + params["MinCount"] = strconv.Itoa(min) + params["MaxCount"] = strconv.Itoa(max) + i, j := 1, 1 + for _, g := range options.SecurityGroups { + if g.Id != "" { + params["SecurityGroupId."+strconv.Itoa(i)] = g.Id + i++ + } else { + params["SecurityGroup."+strconv.Itoa(j)] = g.Name + j++ + } + } + prepareBlockDevices(params, options.BlockDeviceMappings) + prepareNetworkInterfaces(params, options.NetworkInterfaces) + token, err := clientToken() + if err != nil { + return nil, err + } + params["ClientToken"] = token + + if options.KeyName != "" { + params["KeyName"] = options.KeyName + } + if options.KernelId != "" { + params["KernelId"] = options.KernelId + } + if options.RamdiskId != "" { + params["RamdiskId"] = options.RamdiskId + } + if options.UserData != nil { + userData := make([]byte, b64.EncodedLen(len(options.UserData))) + b64.Encode(userData, options.UserData) + params["UserData"] = string(userData) + } + if options.AvailZone != "" { + params["Placement.AvailabilityZone"] = options.AvailZone + } + if options.PlacementGroupName != "" { + params["Placement.GroupName"] = options.PlacementGroupName + } + if options.Monitoring { + params["Monitoring.Enabled"] = "true" + } + if options.SubnetId != "" { + params["SubnetId"] = options.SubnetId + } + if options.DisableAPITermination { + params["DisableApiTermination"] = "true" + } + if options.ShutdownBehavior != "" { + params["InstanceInitiatedShutdownBehavior"] = options.ShutdownBehavior + } + if options.PrivateIPAddress != "" { + params["PrivateIpAddress"] = options.PrivateIPAddress + } + + resp = &RunInstancesResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return +} + +func prepareRunParams(options RunInstances) map[string]string { + if options.SubnetId != "" || len(options.NetworkInterfaces) > 0 { + // When either SubnetId or NetworkInterfaces are specified, we + // need to use the API version with complete VPC support. + return makeParamsVPC("RunInstances") + } else { + return makeParams("RunInstances") + } +} + +func prepareBlockDevices(params map[string]string, blockDevs []BlockDeviceMapping) { + for i, b := range blockDevs { + n := strconv.Itoa(i + 1) + prefix := "BlockDeviceMapping." + n + if b.DeviceName != "" { + params[prefix+".DeviceName"] = b.DeviceName + } + if b.VirtualName != "" { + params[prefix+".VirtualName"] = b.VirtualName + } + if b.SnapshotId != "" { + params[prefix+".Ebs.SnapshotId"] = b.SnapshotId + } + if b.VolumeType != "" { + params[prefix+".Ebs.VolumeType"] = b.VolumeType + } + if b.VolumeSize > 0 { + params[prefix+".Ebs.VolumeSize"] = strconv.FormatInt(b.VolumeSize, 10) + } + if b.IOPS > 0 { + params[prefix+".Ebs.Iops"] = strconv.FormatInt(b.IOPS, 10) + } + if b.DeleteOnTermination { + params[prefix+".Ebs.DeleteOnTermination"] = "true" + } + } +} + +func prepareNetworkInterfaces(params map[string]string, nics []RunNetworkInterface) { + for i, ni := range nics { + // Unlike other lists, NetworkInterface and PrivateIpAddresses + // should start from 0, not 1, according to the examples + // requests in the API documentation here http://goo.gl/Mcm3b. + n := strconv.Itoa(i) + prefix := "NetworkInterface." + n + if ni.Id != "" { + params[prefix+".NetworkInterfaceId"] = ni.Id + } + params[prefix+".DeviceIndex"] = strconv.Itoa(ni.DeviceIndex) + if ni.SubnetId != "" { + params[prefix+".SubnetId"] = ni.SubnetId + } + if ni.Description != "" { + params[prefix+".Description"] = ni.Description + } + for j, gid := range ni.SecurityGroupIds { + k := strconv.Itoa(j + 1) + params[prefix+".SecurityGroupId."+k] = gid + } + if ni.DeleteOnTermination { + params[prefix+".DeleteOnTermination"] = "true" + } + if ni.SecondaryPrivateIPCount > 0 { + val := strconv.Itoa(ni.SecondaryPrivateIPCount) + params[prefix+".SecondaryPrivateIpAddressCount"] = val + } + for j, ip := range ni.PrivateIPs { + k := strconv.Itoa(j) + subprefix := prefix + ".PrivateIpAddresses." + k + params[subprefix+".PrivateIpAddress"] = ip.Address + params[subprefix+".Primary"] = strconv.FormatBool(ip.IsPrimary) + } + } +} + +func clientToken() (string, error) { + // Maximum EC2 client token size is 64 bytes. + // Each byte expands to two when hex encoded. + buf := make([]byte, 32) + _, err := rand.Read(buf) + if err != nil { + return "", err + } + return hex.EncodeToString(buf), nil +} + +// Response to a TerminateInstances request. +// +// See http://goo.gl/3BKHj for more details. +type TerminateInstancesResp struct { + RequestId string `xml:"requestId"` + StateChanges []InstanceStateChange `xml:"instancesSet>item"` +} + +// InstanceState encapsulates the state of an instance in EC2. +// +// See http://goo.gl/y3ZBq for more details. +type InstanceState struct { + Code int `xml:"code"` // Watch out, bits 15-8 have unpublished meaning. + Name string `xml:"name"` +} + +// InstanceStateChange informs of the previous and current states +// for an instance when a state change is requested. +type InstanceStateChange struct { + InstanceId string `xml:"instanceId"` + CurrentState InstanceState `xml:"currentState"` + PreviousState InstanceState `xml:"previousState"` +} + +// TerminateInstances requests the termination of instances when the given ids. +// +// See http://goo.gl/3BKHj for more details. +func (ec2 *EC2) TerminateInstances(instIds []string) (resp *TerminateInstancesResp, err error) { + params := makeParams("TerminateInstances") + addParamsList(params, "InstanceId", instIds) + resp = &TerminateInstancesResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return +} + +// Response to a DescribeInstances request. +// +// See http://goo.gl/mLbmw for more details. +type InstancesResp struct { + RequestId string `xml:"requestId"` + Reservations []Reservation `xml:"reservationSet>item"` +} + +// Reservation represents details about a reservation in EC2. +// +// See http://goo.gl/0ItPT for more details. +type Reservation struct { + ReservationId string `xml:"reservationId"` + OwnerId string `xml:"ownerId"` + RequesterId string `xml:"requesterId"` + SecurityGroups []SecurityGroup `xml:"groupSet>item"` + Instances []Instance `xml:"instancesSet>item"` +} + +// Instances returns details about instances in EC2. Both parameters +// are optional, and if provided will limit the instances returned to those +// matching the given instance ids or filtering rules. +// +// See http://goo.gl/4No7c for more details. +func (ec2 *EC2) Instances(instIds []string, filter *Filter) (resp *InstancesResp, err error) { + params := makeParams("DescribeInstances") + addParamsList(params, "InstanceId", instIds) + filter.addParams(params) + resp = &InstancesResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return +} + +// ---------------------------------------------------------------------------- +// Image and snapshot management functions and types. + +// Response to a DescribeImages request. +// +// See http://goo.gl/hLnyg for more details. +type ImagesResp struct { + RequestId string `xml:"requestId"` + Images []Image `xml:"imagesSet>item"` +} + +// BlockDeviceMapping represents the association of a block device with an image. +// +// See http://goo.gl/wnDBf for more details. +type BlockDeviceMapping struct { + DeviceName string `xml:"deviceName"` + VirtualName string `xml:"virtualName"` + SnapshotId string `xml:"ebs>snapshotId"` + VolumeType string `xml:"ebs>volumeType"` + VolumeSize int64 `xml:"ebs>volumeSize"` // Size is given in GB + DeleteOnTermination bool `xml:"ebs>deleteOnTermination"` + + // The number of I/O operations per second (IOPS) that the volume supports. + IOPS int64 `xml:"ebs>iops"` +} + +// Image represents details about an image. +// +// See http://goo.gl/iSqJG for more details. +type Image struct { + Id string `xml:"imageId"` + Name string `xml:"name"` + Description string `xml:"description"` + Type string `xml:"imageType"` + State string `xml:"imageState"` + Location string `xml:"imageLocation"` + Public bool `xml:"isPublic"` + Architecture string `xml:"architecture"` + Platform string `xml:"platform"` + ProductCodes []string `xml:"productCode>item>productCode"` + KernelId string `xml:"kernelId"` + RamdiskId string `xml:"ramdiskId"` + StateReason string `xml:"stateReason"` + OwnerId string `xml:"imageOwnerId"` + OwnerAlias string `xml:"imageOwnerAlias"` + RootDeviceType string `xml:"rootDeviceType"` + RootDeviceName string `xml:"rootDeviceName"` + VirtualizationType string `xml:"virtualizationType"` + Hypervisor string `xml:"hypervisor"` + BlockDevices []BlockDeviceMapping `xml:"blockDeviceMapping>item"` +} + +// Images returns details about available images. +// The ids and filter parameters, if provided, will limit the images returned. +// For example, to get all the private images associated with this account set +// the boolean filter "is-private" to true. +// +// Note: calling this function with nil ids and filter parameters will result in +// a very large number of images being returned. +// +// See http://goo.gl/SRBhW for more details. +func (ec2 *EC2) Images(ids []string, filter *Filter) (resp *ImagesResp, err error) { + params := makeParams("DescribeImages") + for i, id := range ids { + params["ImageId."+strconv.Itoa(i+1)] = id + } + filter.addParams(params) + + resp = &ImagesResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return +} + +// Response to a CreateSnapshot request. +// +// See http://goo.gl/ttcda for more details. +type CreateSnapshotResp struct { + RequestId string `xml:"requestId"` + Snapshot +} + +// CreateSnapshot creates a volume snapshot and stores it in S3. +// +// See http://goo.gl/ttcda for more details. +func (ec2 *EC2) CreateSnapshot(volumeId, description string) (resp *CreateSnapshotResp, err error) { + params := makeParams("CreateSnapshot") + params["VolumeId"] = volumeId + params["Description"] = description + + resp = &CreateSnapshotResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return +} + +// DeleteSnapshots deletes the volume snapshots with the given ids. +// +// Note: If you make periodic snapshots of a volume, the snapshots are +// incremental so that only the blocks on the device that have changed +// since your last snapshot are incrementally saved in the new snapshot. +// Even though snapshots are saved incrementally, the snapshot deletion +// process is designed so that you need to retain only the most recent +// snapshot in order to restore the volume. +// +// See http://goo.gl/vwU1y for more details. +func (ec2 *EC2) DeleteSnapshots(ids []string) (resp *SimpleResp, err error) { + params := makeParams("DeleteSnapshot") + for i, id := range ids { + params["SnapshotId."+strconv.Itoa(i+1)] = id + } + + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return +} + +// Response to a DescribeSnapshots request. +// +// See http://goo.gl/nClDT for more details. +type SnapshotsResp struct { + RequestId string `xml:"requestId"` + Snapshots []Snapshot `xml:"snapshotSet>item"` +} + +// Snapshot represents details about a volume snapshot. +// +// See http://goo.gl/nkovs for more details. +type Snapshot struct { + Id string `xml:"snapshotId"` + VolumeId string `xml:"volumeId"` + VolumeSize string `xml:"volumeSize"` + Status string `xml:"status"` + StartTime string `xml:"startTime"` + Description string `xml:"description"` + Progress string `xml:"progress"` + OwnerId string `xml:"ownerId"` + OwnerAlias string `xml:"ownerAlias"` + Tags []Tag `xml:"tagSet>item"` +} + +// Snapshots returns details about volume snapshots available to the user. +// The ids and filter parameters, if provided, limit the snapshots returned. +// +// See http://goo.gl/ogJL4 for more details. +func (ec2 *EC2) Snapshots(ids []string, filter *Filter) (resp *SnapshotsResp, err error) { + params := makeParams("DescribeSnapshots") + for i, id := range ids { + params["SnapshotId."+strconv.Itoa(i+1)] = id + } + filter.addParams(params) + + resp = &SnapshotsResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return +} + +// ---------------------------------------------------------------------------- +// Security group management functions and types. + +// SimpleResp represents a response to an EC2 request which on success will +// return no other information besides a request id. +type SimpleResp struct { + XMLName xml.Name + RequestId string `xml:"requestId"` +} + +// CreateSecurityGroupResp represents a response to a CreateSecurityGroup request. +type CreateSecurityGroupResp struct { + SecurityGroup + RequestId string `xml:"requestId"` +} + +// CreateSecurityGroup creates a security group with the provided name +// and description. +// +// See http://goo.gl/Eo7Yl for more details. +func (ec2 *EC2) CreateSecurityGroup(name, description string) (resp *CreateSecurityGroupResp, err error) { + return ec2.CreateSecurityGroupVPC("", name, description) +} + +// CreateSecurityGroupVPC creates a security group in EC2, associated +// with the given VPC ID. If vpcId is empty, this call is equivalent +// to CreateSecurityGroup. +// +// See http://goo.gl/Eo7Yl for more details. +func (ec2 *EC2) CreateSecurityGroupVPC(vpcId, name, description string) (resp *CreateSecurityGroupResp, err error) { + params := makeParamsVPC("CreateSecurityGroup") + params["GroupName"] = name + params["GroupDescription"] = description + if vpcId != "" { + params["VpcId"] = vpcId + } + + resp = &CreateSecurityGroupResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + resp.Name = name + return resp, nil +} + +// SecurityGroupsResp represents a response to a DescribeSecurityGroups +// request in EC2. +// +// See http://goo.gl/k12Uy for more details. +type SecurityGroupsResp struct { + RequestId string `xml:"requestId"` + Groups []SecurityGroupInfo `xml:"securityGroupInfo>item"` +} + +// SecurityGroup encapsulates details for a security group in EC2. +// +// See http://goo.gl/CIdyP for more details. +type SecurityGroupInfo struct { + SecurityGroup + VPCId string `xml:"vpcId"` + OwnerId string `xml:"ownerId"` + Description string `xml:"groupDescription"` + IPPerms []IPPerm `xml:"ipPermissions>item"` +} + +// IPPerm represents an allowance within an EC2 security group. +// +// See http://goo.gl/4oTxv for more details. +type IPPerm struct { + Protocol string `xml:"ipProtocol"` + FromPort int `xml:"fromPort"` + ToPort int `xml:"toPort"` + SourceIPs []string `xml:"ipRanges>item>cidrIp"` + SourceGroups []UserSecurityGroup `xml:"groups>item"` +} + +// UserSecurityGroup holds a security group and the owner +// of that group. +type UserSecurityGroup struct { + Id string `xml:"groupId"` + Name string `xml:"groupName"` + OwnerId string `xml:"userId"` +} + +// SecurityGroup represents an EC2 security group. +// If SecurityGroup is used as a parameter, then one of Id or Name +// may be empty. If both are set, then Id is used. +type SecurityGroup struct { + Id string `xml:"groupId"` + Name string `xml:"groupName"` +} + +// SecurityGroupNames is a convenience function that +// returns a slice of security groups with the given names. +func SecurityGroupNames(names ...string) []SecurityGroup { + g := make([]SecurityGroup, len(names)) + for i, name := range names { + g[i] = SecurityGroup{Name: name} + } + return g +} + +// SecurityGroupNames is a convenience function that +// returns a slice of security groups with the given ids. +func SecurityGroupIds(ids ...string) []SecurityGroup { + g := make([]SecurityGroup, len(ids)) + for i, id := range ids { + g[i] = SecurityGroup{Id: id} + } + return g +} + +// SecurityGroups returns details about security groups in EC2. Both parameters +// are optional, and if provided will limit the security groups returned to those +// matching the given groups or filtering rules. +// +// See http://goo.gl/k12Uy for more details. +func (ec2 *EC2) SecurityGroups(groups []SecurityGroup, filter *Filter) (resp *SecurityGroupsResp, err error) { + params := makeParams("DescribeSecurityGroups") + i, j := 1, 1 + for _, g := range groups { + if g.Id != "" { + params["GroupId."+strconv.Itoa(i)] = g.Id + i++ + } else { + params["GroupName."+strconv.Itoa(j)] = g.Name + j++ + } + } + filter.addParams(params) + + resp = &SecurityGroupsResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// DeleteSecurityGroup removes the given security group in EC2. +// +// See http://goo.gl/QJJDO for more details. +func (ec2 *EC2) DeleteSecurityGroup(group SecurityGroup) (resp *SimpleResp, err error) { + params := makeParams("DeleteSecurityGroup") + if group.Id != "" { + params["GroupId"] = group.Id + } else { + params["GroupName"] = group.Name + } + + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// AuthorizeSecurityGroup creates an allowance for clients matching the provided +// rules to access instances within the given security group. +// +// See http://goo.gl/u2sDJ for more details. +func (ec2 *EC2) AuthorizeSecurityGroup(group SecurityGroup, perms []IPPerm) (resp *SimpleResp, err error) { + return ec2.authOrRevoke("AuthorizeSecurityGroupIngress", group, perms) +} + +// RevokeSecurityGroup revokes permissions from a group. +// +// See http://goo.gl/ZgdxA for more details. +func (ec2 *EC2) RevokeSecurityGroup(group SecurityGroup, perms []IPPerm) (resp *SimpleResp, err error) { + return ec2.authOrRevoke("RevokeSecurityGroupIngress", group, perms) +} + +func (ec2 *EC2) authOrRevoke(op string, group SecurityGroup, perms []IPPerm) (resp *SimpleResp, err error) { + params := makeParams(op) + if group.Id != "" { + params["GroupId"] = group.Id + } else { + params["GroupName"] = group.Name + } + + for i, perm := range perms { + prefix := "IpPermissions." + strconv.Itoa(i+1) + params[prefix+".IpProtocol"] = perm.Protocol + params[prefix+".FromPort"] = strconv.Itoa(perm.FromPort) + params[prefix+".ToPort"] = strconv.Itoa(perm.ToPort) + for j, ip := range perm.SourceIPs { + params[prefix+".IpRanges."+strconv.Itoa(j+1)+".CidrIp"] = ip + } + for j, g := range perm.SourceGroups { + subprefix := prefix + ".Groups." + strconv.Itoa(j+1) + if g.OwnerId != "" { + params[subprefix+".UserId"] = g.OwnerId + } + if g.Id != "" { + params[subprefix+".GroupId"] = g.Id + } else { + params[subprefix+".GroupName"] = g.Name + } + } + } + + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// Tag represents key-value metadata used to classify and organize +// EC2 instances. +// +// See http://goo.gl/bncl3 for more details +type Tag struct { + Key string `xml:"key"` + Value string `xml:"value"` +} + +// CreateTags adds or overwrites one or more tags for the specified instance ids. +// +// See http://goo.gl/Vmkqc for more details +func (ec2 *EC2) CreateTags(instIds []string, tags []Tag) (resp *SimpleResp, err error) { + params := makeParams("CreateTags") + addParamsList(params, "ResourceId", instIds) + + for j, tag := range tags { + params["Tag."+strconv.Itoa(j+1)+".Key"] = tag.Key + params["Tag."+strconv.Itoa(j+1)+".Value"] = tag.Value + } + + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// Response to a StartInstances request. +// +// See http://goo.gl/awKeF for more details. +type StartInstanceResp struct { + RequestId string `xml:"requestId"` + StateChanges []InstanceStateChange `xml:"instancesSet>item"` +} + +// Response to a StopInstances request. +// +// See http://goo.gl/436dJ for more details. +type StopInstanceResp struct { + RequestId string `xml:"requestId"` + StateChanges []InstanceStateChange `xml:"instancesSet>item"` +} + +// StartInstances starts an Amazon EBS-backed AMI that you've previously stopped. +// +// See http://goo.gl/awKeF for more details. +func (ec2 *EC2) StartInstances(ids ...string) (resp *StartInstanceResp, err error) { + params := makeParams("StartInstances") + addParamsList(params, "InstanceId", ids) + resp = &StartInstanceResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// StopInstances requests stopping one or more Amazon EBS-backed instances. +// +// See http://goo.gl/436dJ for more details. +func (ec2 *EC2) StopInstances(ids ...string) (resp *StopInstanceResp, err error) { + params := makeParams("StopInstances") + addParamsList(params, "InstanceId", ids) + resp = &StopInstanceResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// RebootInstance requests a reboot of one or more instances. This operation is asynchronous; +// it only queues a request to reboot the specified instance(s). The operation will succeed +// if the instances are valid and belong to you. +// +// Requests to reboot terminated instances are ignored. +// +// See http://goo.gl/baoUf for more details. +func (ec2 *EC2) RebootInstances(ids ...string) (resp *SimpleResp, err error) { + params := makeParams("RebootInstances") + addParamsList(params, "InstanceId", ids) + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// ---------------------------------------------------------------------------- +// Availability zone management functions and types. +// See http://goo.gl/ylxT4R for more details. + +// AvailabilityZonesResp represents a response to a DescribeAvailabilityZones +// request in EC2. +type AvailabilityZonesResp struct { + RequestId string `xml:"requestId"` + Zones []AvailabilityZoneInfo `xml:"availabilityZoneInfo>item"` +} + +// AvailabilityZoneInfo encapsulates details for an availability zone in EC2. +type AvailabilityZoneInfo struct { + AvailabilityZone + State string `xml:"zoneState"` + MessageSet []string `xml:"messageSet>item"` +} + +// AvailabilityZone represents an EC2 availability zone. +type AvailabilityZone struct { + Name string `xml:"zoneName"` + Region string `xml:"regionName"` +} + +// AvailabilityZones returns details about availability zones in EC2. +// The filter parameter is optional, and if provided will limit the +// availability zones returned to those matching the given filtering +// rules. +// +// See http://goo.gl/ylxT4R for more details. +func (ec2 *EC2) AvailabilityZones(filter *Filter) (resp *AvailabilityZonesResp, err error) { + params := makeParams("DescribeAvailabilityZones") + filter.addParams(params) + resp = &AvailabilityZonesResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return +} + +// AccountAttribute holds information about an account attribute. +// +// See http://goo.gl/hBc28j for more details. +type AccountAttribute struct { + Name string `xml:"attributeName"` + Values []string `xml:"attributeValueSet>item>attributeValue"` +} + +// AccountAttributesResp is the response to an AccountAttributes request. +// +// See http://goo.gl/hBc28j for more details. +type AccountAttributesResp struct { + RequestId string `xml:"requestId"` + Attributes []AccountAttribute `xml:"accountAttributeSet>item"` +} + +// AccountAttributes returns the values of one or more account +// attributes. +// +// See http://goo.gl/hBc28j for more details. +func (ec2 *EC2) AccountAttributes(attrNames ...string) (*AccountAttributesResp, error) { + params := makeParamsVPC("DescribeAccountAttributes") + for i, attrName := range attrNames { + params["AttributeName."+strconv.Itoa(i+1)] = attrName + } + + resp := &AccountAttributesResp{} + if err := ec2.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} diff --git a/vendor/src/launchpad.net/goamz/ec2/ec2_test.go b/vendor/src/launchpad.net/goamz/ec2/ec2_test.go new file mode 100644 index 0000000000..8ce5078625 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/ec2_test.go @@ -0,0 +1,900 @@ +package ec2_test + +import ( + "testing" + + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" +) + +func Test(t *testing.T) { + TestingT(t) +} + +var _ = Suite(&S{}) + +type S struct { + ec2 *ec2.EC2 +} + +var testServer = testutil.NewHTTPServer() + +func (s *S) SetUpSuite(c *C) { + testServer.Start() + auth := aws.Auth{"abc", "123"} + s.ec2 = ec2.New(auth, aws.Region{EC2Endpoint: testServer.URL}) +} + +func (s *S) TearDownSuite(c *C) { + testServer.Stop() +} + +func (s *S) TearDownTest(c *C) { + testServer.Flush() +} + +func (s *S) TestRunInstancesErrorDump(c *C) { + testServer.Response(400, nil, ErrorDump) + + options := ec2.RunInstances{ + ImageId: "ami-a6f504cf", // Ubuntu Maverick, i386, instance store + InstanceType: "t1.micro", // Doesn't work with micro, results in 400. + } + + msg := `AMIs with an instance-store root device are not supported for the instance type 't1\.micro'\.` + + resp, err := s.ec2.RunInstances(&options) + + testServer.WaitRequest() + + c.Assert(resp, IsNil) + c.Assert(err, ErrorMatches, msg+` \(UnsupportedOperation\)`) + + ec2err, ok := err.(*ec2.Error) + c.Assert(ok, Equals, true) + c.Assert(ec2err.StatusCode, Equals, 400) + c.Assert(ec2err.Code, Equals, "UnsupportedOperation") + c.Assert(ec2err.Message, Matches, msg) + c.Assert(ec2err.RequestId, Equals, "0503f4e9-bbd6-483c-b54f-c4ae9f3b30f4") +} + +func (s *S) TestRunInstancesErrorWithoutXML(c *C) { + testServer.Response(500, nil, "") + options := ec2.RunInstances{ImageId: "image-id"} + + resp, err := s.ec2.RunInstances(&options) + + testServer.WaitRequest() + + c.Assert(resp, IsNil) + c.Assert(err, ErrorMatches, "500 Internal Server Error") + + ec2err, ok := err.(*ec2.Error) + c.Assert(ok, Equals, true) + c.Assert(ec2err.StatusCode, Equals, 500) + c.Assert(ec2err.Code, Equals, "") + c.Assert(ec2err.Message, Equals, "500 Internal Server Error") + c.Assert(ec2err.RequestId, Equals, "") +} + +func (s *S) TestRunInstancesExample(c *C) { + testServer.Response(200, nil, RunInstancesExample) + + options := ec2.RunInstances{ + KeyName: "my-keys", + ImageId: "image-id", + InstanceType: "inst-type", + SecurityGroups: []ec2.SecurityGroup{{Name: "g1"}, {Id: "g2"}, {Name: "g3"}, {Id: "g4"}}, + UserData: []byte("1234"), + KernelId: "kernel-id", + RamdiskId: "ramdisk-id", + AvailZone: "zone", + PlacementGroupName: "group", + Monitoring: true, + SubnetId: "subnet-id", + DisableAPITermination: true, + ShutdownBehavior: "terminate", + PrivateIPAddress: "10.0.0.25", + BlockDeviceMappings: []ec2.BlockDeviceMapping{{ + DeviceName: "device-name", + VirtualName: "virtual-name", + SnapshotId: "snapshot-id", + VolumeType: "volume-type", + VolumeSize: 10, + DeleteOnTermination: true, + IOPS: 1000, + }}, + NetworkInterfaces: []ec2.RunNetworkInterface{{ + DeviceIndex: 0, + SubnetId: "subnet-id", + Description: "eth0", + PrivateIPs: []ec2.PrivateIP{ + {Address: "10.0.0.25", IsPrimary: true}, + }, + DeleteOnTermination: true, + SecurityGroupIds: []string{"sg-1", "sg-2"}, + SecondaryPrivateIPCount: 2, + }, { + Id: "eni-id", + DeviceIndex: 1, + PrivateIPs: []ec2.PrivateIP{{ + Address: "10.0.1.10", + IsPrimary: true, + }, { + Address: "10.0.1.20", + IsPrimary: false, + }}, + }}, + } + params := ec2.PrepareRunParams(options) + c.Assert(params, DeepEquals, map[string]string{ + "Version": "2013-10-15", + "Action": "RunInstances", + }) + resp, err := s.ec2.RunInstances(&options) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"RunInstances"}) + c.Assert(req.Form["ImageId"], DeepEquals, []string{"image-id"}) + c.Assert(req.Form["MinCount"], DeepEquals, []string{"1"}) + c.Assert(req.Form["MaxCount"], DeepEquals, []string{"1"}) + c.Assert(req.Form["KeyName"], DeepEquals, []string{"my-keys"}) + c.Assert(req.Form["InstanceType"], DeepEquals, []string{"inst-type"}) + c.Assert(req.Form["SecurityGroup.1"], DeepEquals, []string{"g1"}) + c.Assert(req.Form["SecurityGroup.2"], DeepEquals, []string{"g3"}) + c.Assert(req.Form["SecurityGroupId.1"], DeepEquals, []string{"g2"}) + c.Assert(req.Form["SecurityGroupId.2"], DeepEquals, []string{"g4"}) + c.Assert(req.Form["UserData"], DeepEquals, []string{"MTIzNA=="}) + c.Assert(req.Form["KernelId"], DeepEquals, []string{"kernel-id"}) + c.Assert(req.Form["RamdiskId"], DeepEquals, []string{"ramdisk-id"}) + c.Assert(req.Form["Placement.AvailabilityZone"], DeepEquals, []string{"zone"}) + c.Assert(req.Form["Placement.GroupName"], DeepEquals, []string{"group"}) + c.Assert(req.Form["Monitoring.Enabled"], DeepEquals, []string{"true"}) + c.Assert(req.Form["SubnetId"], DeepEquals, []string{"subnet-id"}) + c.Assert(req.Form["DisableApiTermination"], DeepEquals, []string{"true"}) + c.Assert(req.Form["InstanceInitiatedShutdownBehavior"], DeepEquals, []string{"terminate"}) + c.Assert(req.Form["PrivateIpAddress"], DeepEquals, []string{"10.0.0.25"}) + c.Assert(req.Form["BlockDeviceMapping.1.DeviceName"], DeepEquals, []string{"device-name"}) + c.Assert(req.Form["BlockDeviceMapping.1.VirtualName"], DeepEquals, []string{"virtual-name"}) + c.Assert(req.Form["BlockDeviceMapping.1.Ebs.SnapshotId"], DeepEquals, []string{"snapshot-id"}) + c.Assert(req.Form["BlockDeviceMapping.1.Ebs.VolumeType"], DeepEquals, []string{"volume-type"}) + c.Assert(req.Form["BlockDeviceMapping.1.Ebs.VolumeSize"], DeepEquals, []string{"10"}) + c.Assert(req.Form["BlockDeviceMapping.1.Ebs.Iops"], DeepEquals, []string{"1000"}) + c.Assert(req.Form["BlockDeviceMapping.1.Ebs.DeleteOnTermination"], DeepEquals, []string{"true"}) + c.Assert(req.Form["NetworkInterface.0.DeviceIndex"], DeepEquals, []string{"0"}) + c.Assert(req.Form["NetworkInterface.0.SubnetId"], DeepEquals, []string{"subnet-id"}) + c.Assert(req.Form["NetworkInterface.0.Description"], DeepEquals, []string{"eth0"}) + c.Assert(req.Form["NetworkInterface.0.SecurityGroupId.1"], DeepEquals, []string{"sg-1"}) + c.Assert(req.Form["NetworkInterface.0.SecurityGroupId.2"], DeepEquals, []string{"sg-2"}) + c.Assert(req.Form["NetworkInterface.0.DeleteOnTermination"], DeepEquals, []string{"true"}) + c.Assert(req.Form["NetworkInterface.0.SecondaryPrivateIpAddressCount"], DeepEquals, []string{"2"}) + c.Assert(req.Form["NetworkInterface.1.NetworkInterfaceId"], DeepEquals, []string{"eni-id"}) + c.Assert(req.Form["NetworkInterface.1.DeviceIndex"], DeepEquals, []string{"1"}) + c.Assert(req.Form["NetworkInterface.1.PrivateIpAddresses.0.PrivateIpAddress"], DeepEquals, []string{"10.0.1.10"}) + c.Assert(req.Form["NetworkInterface.1.PrivateIpAddresses.0.Primary"], DeepEquals, []string{"true"}) + c.Assert(req.Form["NetworkInterface.1.PrivateIpAddresses.1.PrivateIpAddress"], DeepEquals, []string{"10.0.1.20"}) + c.Assert(req.Form["NetworkInterface.1.PrivateIpAddresses.1.Primary"], DeepEquals, []string{"false"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.ReservationId, Equals, "r-47a5402e") + c.Assert(resp.OwnerId, Equals, "999988887777") + c.Assert(resp.SecurityGroups, DeepEquals, []ec2.SecurityGroup{{Name: "default", Id: "sg-67ad940e"}}) + c.Assert(resp.Instances, HasLen, 3) + + i0 := resp.Instances[0] + c.Assert(i0.InstanceId, Equals, "i-2ba64342") + c.Assert(i0.InstanceType, Equals, "m1.small") + c.Assert(i0.ImageId, Equals, "ami-60a54009") + c.Assert(i0.Monitoring, Equals, "enabled") + c.Assert(i0.KeyName, Equals, "example-key-name") + c.Assert(i0.AMILaunchIndex, Equals, 0) + c.Assert(i0.VirtType, Equals, "paravirtual") + c.Assert(i0.Hypervisor, Equals, "xen") + c.Assert(i0.SubnetId, Equals, "subnet-id") + c.Assert(i0.VPCId, Equals, "vpc-id") + c.Assert(i0.NetworkInterfaces, HasLen, 2) + c.Assert(i0.NetworkInterfaces, DeepEquals, []ec2.NetworkInterface{{ + Id: "eni-c6bb50ae", + SubnetId: "subnet-id", + VPCId: "vpc-id", + Description: "eth0", + SourceDestCheck: true, + OwnerId: "111122223333", + Status: "in-use", + Groups: []ec2.SecurityGroup{ + {Name: "vpc sg-1", Id: "sg-1"}, + {Name: "vpc sg-2", Id: "sg-2"}, + }, + MACAddress: "11:22:33:44:55:66", + PrivateIPAddress: "10.0.0.25", + PrivateIPs: []ec2.PrivateIP{{Address: "10.0.0.25", IsPrimary: true}}, + Attachment: ec2.NetworkInterfaceAttachment{ + Id: "eni-attach-0326646a", + DeviceIndex: 0, + Status: "attaching", + AttachTime: "2011-12-20T08:29:31.000Z", + DeleteOnTermination: true, + }, + }, { + Id: "eni-id", + SubnetId: "subnet-id", + VPCId: "vpc-id", + SourceDestCheck: true, + OwnerId: "111122223333", + Status: "in-use", + Groups: []ec2.SecurityGroup{{Name: "vpc default", Id: "sg-id"}}, + MACAddress: "11:22:33:44:55:66", + PrivateIPAddress: "10.0.1.10", + PrivateIPs: []ec2.PrivateIP{ + {Address: "10.0.1.10", IsPrimary: true}, + {Address: "10.0.1.20", IsPrimary: false}, + }, + Attachment: ec2.NetworkInterfaceAttachment{ + Id: "eni-attach-id", + DeviceIndex: 1, + Status: "attaching", + AttachTime: "2011-12-20T08:29:31.000Z", + DeleteOnTermination: false, + }, + }}) + + i1 := resp.Instances[1] + c.Assert(i1.InstanceId, Equals, "i-2bc64242") + c.Assert(i1.InstanceType, Equals, "m1.small") + c.Assert(i1.ImageId, Equals, "ami-60a54009") + c.Assert(i1.Monitoring, Equals, "enabled") + c.Assert(i1.KeyName, Equals, "example-key-name") + c.Assert(i1.AMILaunchIndex, Equals, 1) + c.Assert(i1.VirtType, Equals, "paravirtual") + c.Assert(i1.Hypervisor, Equals, "xen") + + i2 := resp.Instances[2] + c.Assert(i2.InstanceId, Equals, "i-2be64332") + c.Assert(i2.InstanceType, Equals, "m1.small") + c.Assert(i2.ImageId, Equals, "ami-60a54009") + c.Assert(i2.Monitoring, Equals, "enabled") + c.Assert(i2.KeyName, Equals, "example-key-name") + c.Assert(i2.AMILaunchIndex, Equals, 2) + c.Assert(i2.VirtType, Equals, "paravirtual") + c.Assert(i2.Hypervisor, Equals, "xen") +} + +func (s *S) TestTerminateInstancesExample(c *C) { + testServer.Response(200, nil, TerminateInstancesExample) + + resp, err := s.ec2.TerminateInstances([]string{"i-1", "i-2"}) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"TerminateInstances"}) + c.Assert(req.Form["InstanceId.1"], DeepEquals, []string{"i-1"}) + c.Assert(req.Form["InstanceId.2"], DeepEquals, []string{"i-2"}) + c.Assert(req.Form["UserData"], IsNil) + c.Assert(req.Form["KernelId"], IsNil) + c.Assert(req.Form["RamdiskId"], IsNil) + c.Assert(req.Form["Placement.AvailabilityZone"], IsNil) + c.Assert(req.Form["Placement.GroupName"], IsNil) + c.Assert(req.Form["Monitoring.Enabled"], IsNil) + c.Assert(req.Form["SubnetId"], IsNil) + c.Assert(req.Form["DisableApiTermination"], IsNil) + c.Assert(req.Form["InstanceInitiatedShutdownBehavior"], IsNil) + c.Assert(req.Form["PrivateIpAddress"], IsNil) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.StateChanges, HasLen, 1) + c.Assert(resp.StateChanges[0].InstanceId, Equals, "i-3ea74257") + c.Assert(resp.StateChanges[0].CurrentState.Code, Equals, 32) + c.Assert(resp.StateChanges[0].CurrentState.Name, Equals, "shutting-down") + c.Assert(resp.StateChanges[0].PreviousState.Code, Equals, 16) + c.Assert(resp.StateChanges[0].PreviousState.Name, Equals, "running") +} + +func (s *S) TestDescribeInstancesExample1(c *C) { + testServer.Response(200, nil, DescribeInstancesExample1) + + filter := ec2.NewFilter() + filter.Add("key1", "value1") + filter.Add("key2", "value2", "value3") + + resp, err := s.ec2.Instances([]string{"i-1", "i-2"}, nil) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeInstances"}) + c.Assert(req.Form["InstanceId.1"], DeepEquals, []string{"i-1"}) + c.Assert(req.Form["InstanceId.2"], DeepEquals, []string{"i-2"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "98e3c9a4-848c-4d6d-8e8a-b1bdEXAMPLE") + c.Assert(resp.Reservations, HasLen, 2) + + expectedGroups := []ec2.SecurityGroup{{Name: "default", Id: "sg-67ad940e"}} + r0 := resp.Reservations[0] + c.Assert(r0.ReservationId, Equals, "r-b27e30d9") + c.Assert(r0.OwnerId, Equals, "999988887777") + c.Assert(r0.RequesterId, Equals, "854251627541") + c.Assert(r0.SecurityGroups, DeepEquals, expectedGroups) + c.Assert(r0.Instances, HasLen, 1) + + r0i := r0.Instances[0] + c.Assert(r0i.InstanceId, Equals, "i-c5cd56af") + c.Assert(r0i.PrivateDNSName, Equals, "domU-12-31-39-10-56-34.compute-1.internal") + c.Assert(r0i.DNSName, Equals, "ec2-174-129-165-232.compute-1.amazonaws.com") + c.Assert(r0i.PrivateIPAddress, Equals, "10.198.85.190") + c.Assert(r0i.IPAddress, Equals, "174.129.165.232") + c.Assert(r0i.AvailZone, Equals, "us-east-1b") + c.Assert(r0i.SecurityGroups, DeepEquals, expectedGroups) +} + +func (s *S) TestDescribeInstancesExample2(c *C) { + testServer.Response(200, nil, DescribeInstancesExample2) + + filter := ec2.NewFilter() + filter.Add("key1", "value1") + filter.Add("key2", "value2", "value3") + + resp, err := s.ec2.Instances([]string{"i-1", "i-2"}, filter) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeInstances"}) + c.Assert(req.Form["InstanceId.1"], DeepEquals, []string{"i-1"}) + c.Assert(req.Form["InstanceId.2"], DeepEquals, []string{"i-2"}) + c.Assert(req.Form["Filter.1.Name"], DeepEquals, []string{"key1"}) + c.Assert(req.Form["Filter.1.Value.1"], DeepEquals, []string{"value1"}) + c.Assert(req.Form["Filter.1.Value.2"], IsNil) + c.Assert(req.Form["Filter.2.Name"], DeepEquals, []string{"key2"}) + c.Assert(req.Form["Filter.2.Value.1"], DeepEquals, []string{"value2"}) + c.Assert(req.Form["Filter.2.Value.2"], DeepEquals, []string{"value3"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.Reservations, HasLen, 1) + + r0 := resp.Reservations[0] + r0i := r0.Instances[0] + c.Assert(r0i.State.Code, Equals, 16) + c.Assert(r0i.State.Name, Equals, "running") + + r0t0 := r0i.Tags[0] + r0t1 := r0i.Tags[1] + c.Assert(r0t0.Key, Equals, "webserver") + c.Assert(r0t0.Value, Equals, "") + c.Assert(r0t1.Key, Equals, "stack") + c.Assert(r0t1.Value, Equals, "Production") +} + +func (s *S) TestDescribeImagesExample(c *C) { + testServer.Response(200, nil, DescribeImagesExample) + + filter := ec2.NewFilter() + filter.Add("key1", "value1") + filter.Add("key2", "value2", "value3") + + resp, err := s.ec2.Images([]string{"ami-1", "ami-2"}, filter) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeImages"}) + c.Assert(req.Form["ImageId.1"], DeepEquals, []string{"ami-1"}) + c.Assert(req.Form["ImageId.2"], DeepEquals, []string{"ami-2"}) + c.Assert(req.Form["Filter.1.Name"], DeepEquals, []string{"key1"}) + c.Assert(req.Form["Filter.1.Value.1"], DeepEquals, []string{"value1"}) + c.Assert(req.Form["Filter.1.Value.2"], IsNil) + c.Assert(req.Form["Filter.2.Name"], DeepEquals, []string{"key2"}) + c.Assert(req.Form["Filter.2.Value.1"], DeepEquals, []string{"value2"}) + c.Assert(req.Form["Filter.2.Value.2"], DeepEquals, []string{"value3"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "4a4a27a2-2e7c-475d-b35b-ca822EXAMPLE") + c.Assert(resp.Images, HasLen, 1) + + i0 := resp.Images[0] + c.Assert(i0.Id, Equals, "ami-a2469acf") + c.Assert(i0.Type, Equals, "machine") + c.Assert(i0.Name, Equals, "example-marketplace-amzn-ami.1") + c.Assert(i0.Description, Equals, "Amazon Linux AMI i386 EBS") + c.Assert(i0.Location, Equals, "aws-marketplace/example-marketplace-amzn-ami.1") + c.Assert(i0.State, Equals, "available") + c.Assert(i0.Public, Equals, true) + c.Assert(i0.OwnerId, Equals, "123456789999") + c.Assert(i0.OwnerAlias, Equals, "aws-marketplace") + c.Assert(i0.Architecture, Equals, "i386") + c.Assert(i0.KernelId, Equals, "aki-805ea7e9") + c.Assert(i0.RootDeviceType, Equals, "ebs") + c.Assert(i0.RootDeviceName, Equals, "/dev/sda1") + c.Assert(i0.VirtualizationType, Equals, "paravirtual") + c.Assert(i0.Hypervisor, Equals, "xen") + + c.Assert(i0.BlockDevices, HasLen, 1) + c.Assert(i0.BlockDevices[0].DeviceName, Equals, "/dev/sda1") + c.Assert(i0.BlockDevices[0].SnapshotId, Equals, "snap-787e9403") + c.Assert(i0.BlockDevices[0].VolumeSize, Equals, int64(8)) + c.Assert(i0.BlockDevices[0].DeleteOnTermination, Equals, true) +} + +func (s *S) TestCreateSnapshotExample(c *C) { + testServer.Response(200, nil, CreateSnapshotExample) + + resp, err := s.ec2.CreateSnapshot("vol-4d826724", "Daily Backup") + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"CreateSnapshot"}) + c.Assert(req.Form["VolumeId"], DeepEquals, []string{"vol-4d826724"}) + c.Assert(req.Form["Description"], DeepEquals, []string{"Daily Backup"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.Snapshot.Id, Equals, "snap-78a54011") + c.Assert(resp.Snapshot.VolumeId, Equals, "vol-4d826724") + c.Assert(resp.Snapshot.Status, Equals, "pending") + c.Assert(resp.Snapshot.StartTime, Equals, "2008-05-07T12:51:50.000Z") + c.Assert(resp.Snapshot.Progress, Equals, "60%") + c.Assert(resp.Snapshot.OwnerId, Equals, "111122223333") + c.Assert(resp.Snapshot.VolumeSize, Equals, "10") + c.Assert(resp.Snapshot.Description, Equals, "Daily Backup") +} + +func (s *S) TestDeleteSnapshotsExample(c *C) { + testServer.Response(200, nil, DeleteSnapshotExample) + + resp, err := s.ec2.DeleteSnapshots([]string{"snap-78a54011"}) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DeleteSnapshot"}) + c.Assert(req.Form["SnapshotId.1"], DeepEquals, []string{"snap-78a54011"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +func (s *S) TestDescribeSnapshotsExample(c *C) { + testServer.Response(200, nil, DescribeSnapshotsExample) + + filter := ec2.NewFilter() + filter.Add("key1", "value1") + filter.Add("key2", "value2", "value3") + + resp, err := s.ec2.Snapshots([]string{"snap-1", "snap-2"}, filter) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeSnapshots"}) + c.Assert(req.Form["SnapshotId.1"], DeepEquals, []string{"snap-1"}) + c.Assert(req.Form["SnapshotId.2"], DeepEquals, []string{"snap-2"}) + c.Assert(req.Form["Filter.1.Name"], DeepEquals, []string{"key1"}) + c.Assert(req.Form["Filter.1.Value.1"], DeepEquals, []string{"value1"}) + c.Assert(req.Form["Filter.1.Value.2"], IsNil) + c.Assert(req.Form["Filter.2.Name"], DeepEquals, []string{"key2"}) + c.Assert(req.Form["Filter.2.Value.1"], DeepEquals, []string{"value2"}) + c.Assert(req.Form["Filter.2.Value.2"], DeepEquals, []string{"value3"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.Snapshots, HasLen, 1) + + s0 := resp.Snapshots[0] + c.Assert(s0.Id, Equals, "snap-1a2b3c4d") + c.Assert(s0.VolumeId, Equals, "vol-8875daef") + c.Assert(s0.VolumeSize, Equals, "15") + c.Assert(s0.Status, Equals, "pending") + c.Assert(s0.StartTime, Equals, "2010-07-29T04:12:01.000Z") + c.Assert(s0.Progress, Equals, "30%") + c.Assert(s0.OwnerId, Equals, "111122223333") + c.Assert(s0.Description, Equals, "Daily Backup") + + c.Assert(s0.Tags, HasLen, 1) + c.Assert(s0.Tags[0].Key, Equals, "Purpose") + c.Assert(s0.Tags[0].Value, Equals, "demo_db_14_backup") +} + +func (s *S) checkCreateSGResponse(c *C, resp *ec2.CreateSecurityGroupResp, id, name, description, vpcId string) { + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"CreateSecurityGroup"}) + c.Assert(req.Form["GroupName"], DeepEquals, []string{name}) + c.Assert(req.Form["GroupDescription"], DeepEquals, []string{description}) + if vpcId != "" { + c.Assert(req.Form["VpcId"], DeepEquals, []string{vpcId}) + } + + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.Name, Equals, name) + c.Assert(resp.Id, Equals, id) +} + +func (s *S) TestCreateSecurityGroupExample(c *C) { + testServer.Response(200, nil, CreateSecurityGroupExample) + resp, err := s.ec2.CreateSecurityGroup("websrv", "Web Servers") + c.Assert(err, IsNil) + s.checkCreateSGResponse(c, resp, "sg-67ad940e", "websrv", "Web Servers", "") + + testServer.Response(200, nil, CreateSecurityGroupExample) + resp, err = s.ec2.CreateSecurityGroupVPC("vpc-id", "websrv", "Web Servers") + c.Assert(err, IsNil) + s.checkCreateSGResponse(c, resp, "sg-67ad940e", "websrv", "Web Servers", "vpc-id") +} + +func (s *S) TestDescribeSecurityGroupsExample(c *C) { + testServer.Response(200, nil, DescribeSecurityGroupsExample) + + resp, err := s.ec2.SecurityGroups([]ec2.SecurityGroup{{Name: "WebServers"}, {Name: "RangedPortsBySource"}}, nil) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeSecurityGroups"}) + c.Assert(req.Form["GroupName.1"], DeepEquals, []string{"WebServers"}) + c.Assert(req.Form["GroupName.2"], DeepEquals, []string{"RangedPortsBySource"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.Groups, HasLen, 2) + + g0 := resp.Groups[0] + c.Assert(g0.OwnerId, Equals, "999988887777") + c.Assert(g0.Name, Equals, "WebServers") + c.Assert(g0.Id, Equals, "sg-67ad940e") + c.Assert(g0.Description, Equals, "Web Servers") + c.Assert(g0.IPPerms, HasLen, 1) + + g0ipp := g0.IPPerms[0] + c.Assert(g0ipp.Protocol, Equals, "tcp") + c.Assert(g0ipp.FromPort, Equals, 80) + c.Assert(g0ipp.ToPort, Equals, 80) + c.Assert(g0ipp.SourceIPs, DeepEquals, []string{"0.0.0.0/0"}) + + g1 := resp.Groups[1] + c.Assert(g1.OwnerId, Equals, "999988887777") + c.Assert(g1.Name, Equals, "RangedPortsBySource") + c.Assert(g1.Id, Equals, "sg-76abc467") + c.Assert(g1.Description, Equals, "Group A") + c.Assert(g1.IPPerms, HasLen, 1) + + g1ipp := g1.IPPerms[0] + c.Assert(g1ipp.Protocol, Equals, "tcp") + c.Assert(g1ipp.FromPort, Equals, 6000) + c.Assert(g1ipp.ToPort, Equals, 7000) + c.Assert(g1ipp.SourceIPs, IsNil) +} + +func (s *S) TestDescribeSecurityGroupsExampleWithFilter(c *C) { + testServer.Response(200, nil, DescribeSecurityGroupsExample) + + filter := ec2.NewFilter() + filter.Add("ip-permission.protocol", "tcp") + filter.Add("ip-permission.from-port", "22") + filter.Add("ip-permission.to-port", "22") + filter.Add("ip-permission.group-name", "app_server_group", "database_group") + + _, err := s.ec2.SecurityGroups(nil, filter) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeSecurityGroups"}) + c.Assert(req.Form["Filter.1.Name"], DeepEquals, []string{"ip-permission.from-port"}) + c.Assert(req.Form["Filter.1.Value.1"], DeepEquals, []string{"22"}) + c.Assert(req.Form["Filter.2.Name"], DeepEquals, []string{"ip-permission.group-name"}) + c.Assert(req.Form["Filter.2.Value.1"], DeepEquals, []string{"app_server_group"}) + c.Assert(req.Form["Filter.2.Value.2"], DeepEquals, []string{"database_group"}) + c.Assert(req.Form["Filter.3.Name"], DeepEquals, []string{"ip-permission.protocol"}) + c.Assert(req.Form["Filter.3.Value.1"], DeepEquals, []string{"tcp"}) + c.Assert(req.Form["Filter.4.Name"], DeepEquals, []string{"ip-permission.to-port"}) + c.Assert(req.Form["Filter.4.Value.1"], DeepEquals, []string{"22"}) + + c.Assert(err, IsNil) +} + +func (s *S) TestDescribeSecurityGroupsDumpWithGroup(c *C) { + testServer.Response(200, nil, DescribeSecurityGroupsDump) + + resp, err := s.ec2.SecurityGroups(nil, nil) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeSecurityGroups"}) + c.Assert(err, IsNil) + c.Check(resp.Groups, HasLen, 1) + c.Check(resp.Groups[0].IPPerms, HasLen, 2) + + ipp0 := resp.Groups[0].IPPerms[0] + c.Assert(ipp0.SourceIPs, IsNil) + c.Check(ipp0.Protocol, Equals, "icmp") + c.Assert(ipp0.SourceGroups, HasLen, 1) + c.Check(ipp0.SourceGroups[0].OwnerId, Equals, "12345") + c.Check(ipp0.SourceGroups[0].Name, Equals, "default") + c.Check(ipp0.SourceGroups[0].Id, Equals, "sg-67ad940e") + + ipp1 := resp.Groups[0].IPPerms[1] + c.Check(ipp1.Protocol, Equals, "tcp") + c.Assert(ipp0.SourceIPs, IsNil) + c.Assert(ipp0.SourceGroups, HasLen, 1) + c.Check(ipp1.SourceGroups[0].Id, Equals, "sg-76abc467") + c.Check(ipp1.SourceGroups[0].OwnerId, Equals, "12345") + c.Check(ipp1.SourceGroups[0].Name, Equals, "other") +} + +func (s *S) TestDeleteSecurityGroupExample(c *C) { + testServer.Response(200, nil, DeleteSecurityGroupExample) + + resp, err := s.ec2.DeleteSecurityGroup(ec2.SecurityGroup{Name: "websrv"}) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"DeleteSecurityGroup"}) + c.Assert(req.Form["GroupName"], DeepEquals, []string{"websrv"}) + c.Assert(req.Form["GroupId"], IsNil) + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +func (s *S) TestDeleteSecurityGroupExampleWithId(c *C) { + testServer.Response(200, nil, DeleteSecurityGroupExample) + + // ignore return and error - we're only want to check the parameter handling. + s.ec2.DeleteSecurityGroup(ec2.SecurityGroup{Id: "sg-67ad940e", Name: "ignored"}) + req := testServer.WaitRequest() + + c.Assert(req.Form["GroupName"], IsNil) + c.Assert(req.Form["GroupId"], DeepEquals, []string{"sg-67ad940e"}) +} + +func (s *S) TestAuthorizeSecurityGroupExample1(c *C) { + testServer.Response(200, nil, AuthorizeSecurityGroupIngressExample) + + perms := []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 80, + ToPort: 80, + SourceIPs: []string{"205.192.0.0/16", "205.159.0.0/16"}, + }} + resp, err := s.ec2.AuthorizeSecurityGroup(ec2.SecurityGroup{Name: "websrv"}, perms) + + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"AuthorizeSecurityGroupIngress"}) + c.Assert(req.Form["GroupName"], DeepEquals, []string{"websrv"}) + c.Assert(req.Form["IpPermissions.1.IpProtocol"], DeepEquals, []string{"tcp"}) + c.Assert(req.Form["IpPermissions.1.FromPort"], DeepEquals, []string{"80"}) + c.Assert(req.Form["IpPermissions.1.ToPort"], DeepEquals, []string{"80"}) + c.Assert(req.Form["IpPermissions.1.IpRanges.1.CidrIp"], DeepEquals, []string{"205.192.0.0/16"}) + c.Assert(req.Form["IpPermissions.1.IpRanges.2.CidrIp"], DeepEquals, []string{"205.159.0.0/16"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +func (s *S) TestAuthorizeSecurityGroupExample1WithId(c *C) { + testServer.Response(200, nil, AuthorizeSecurityGroupIngressExample) + + perms := []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 80, + ToPort: 80, + SourceIPs: []string{"205.192.0.0/16", "205.159.0.0/16"}, + }} + // ignore return and error - we're only want to check the parameter handling. + s.ec2.AuthorizeSecurityGroup(ec2.SecurityGroup{Id: "sg-67ad940e", Name: "ignored"}, perms) + + req := testServer.WaitRequest() + + c.Assert(req.Form["GroupName"], IsNil) + c.Assert(req.Form["GroupId"], DeepEquals, []string{"sg-67ad940e"}) +} + +func (s *S) TestAuthorizeSecurityGroupExample2(c *C) { + testServer.Response(200, nil, AuthorizeSecurityGroupIngressExample) + + perms := []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 80, + ToPort: 81, + SourceGroups: []ec2.UserSecurityGroup{ + {OwnerId: "999988887777", Name: "OtherAccountGroup"}, + {Id: "sg-67ad940e"}, + }, + }} + resp, err := s.ec2.AuthorizeSecurityGroup(ec2.SecurityGroup{Name: "websrv"}, perms) + + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"AuthorizeSecurityGroupIngress"}) + c.Assert(req.Form["GroupName"], DeepEquals, []string{"websrv"}) + c.Assert(req.Form["IpPermissions.1.IpProtocol"], DeepEquals, []string{"tcp"}) + c.Assert(req.Form["IpPermissions.1.FromPort"], DeepEquals, []string{"80"}) + c.Assert(req.Form["IpPermissions.1.ToPort"], DeepEquals, []string{"81"}) + c.Assert(req.Form["IpPermissions.1.Groups.1.UserId"], DeepEquals, []string{"999988887777"}) + c.Assert(req.Form["IpPermissions.1.Groups.1.GroupName"], DeepEquals, []string{"OtherAccountGroup"}) + c.Assert(req.Form["IpPermissions.1.Groups.2.UserId"], IsNil) + c.Assert(req.Form["IpPermissions.1.Groups.2.GroupName"], IsNil) + c.Assert(req.Form["IpPermissions.1.Groups.2.GroupId"], DeepEquals, []string{"sg-67ad940e"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +func (s *S) TestRevokeSecurityGroupExample(c *C) { + // RevokeSecurityGroup is implemented by the same code as AuthorizeSecurityGroup + // so there's no need to duplicate all the tests. + testServer.Response(200, nil, RevokeSecurityGroupIngressExample) + + resp, err := s.ec2.RevokeSecurityGroup(ec2.SecurityGroup{Name: "websrv"}, nil) + + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"RevokeSecurityGroupIngress"}) + c.Assert(req.Form["GroupName"], DeepEquals, []string{"websrv"}) + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +func (s *S) TestCreateTags(c *C) { + testServer.Response(200, nil, CreateTagsExample) + + resp, err := s.ec2.CreateTags([]string{"ami-1a2b3c4d", "i-7f4d3a2b"}, []ec2.Tag{{"webserver", ""}, {"stack", "Production"}}) + + req := testServer.WaitRequest() + c.Assert(req.Form["ResourceId.1"], DeepEquals, []string{"ami-1a2b3c4d"}) + c.Assert(req.Form["ResourceId.2"], DeepEquals, []string{"i-7f4d3a2b"}) + c.Assert(req.Form["Tag.1.Key"], DeepEquals, []string{"webserver"}) + c.Assert(req.Form["Tag.1.Value"], DeepEquals, []string{""}) + c.Assert(req.Form["Tag.2.Key"], DeepEquals, []string{"stack"}) + c.Assert(req.Form["Tag.2.Value"], DeepEquals, []string{"Production"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +func (s *S) TestStartInstances(c *C) { + testServer.Response(200, nil, StartInstancesExample) + + resp, err := s.ec2.StartInstances("i-10a64379") + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"StartInstances"}) + c.Assert(req.Form["InstanceId.1"], DeepEquals, []string{"i-10a64379"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + + s0 := resp.StateChanges[0] + c.Assert(s0.InstanceId, Equals, "i-10a64379") + c.Assert(s0.CurrentState.Code, Equals, 0) + c.Assert(s0.CurrentState.Name, Equals, "pending") + c.Assert(s0.PreviousState.Code, Equals, 80) + c.Assert(s0.PreviousState.Name, Equals, "stopped") +} + +func (s *S) TestStopInstances(c *C) { + testServer.Response(200, nil, StopInstancesExample) + + resp, err := s.ec2.StopInstances("i-10a64379") + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"StopInstances"}) + c.Assert(req.Form["InstanceId.1"], DeepEquals, []string{"i-10a64379"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + + s0 := resp.StateChanges[0] + c.Assert(s0.InstanceId, Equals, "i-10a64379") + c.Assert(s0.CurrentState.Code, Equals, 64) + c.Assert(s0.CurrentState.Name, Equals, "stopping") + c.Assert(s0.PreviousState.Code, Equals, 16) + c.Assert(s0.PreviousState.Name, Equals, "running") +} + +func (s *S) TestRebootInstances(c *C) { + testServer.Response(200, nil, RebootInstancesExample) + + resp, err := s.ec2.RebootInstances("i-10a64379") + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"RebootInstances"}) + c.Assert(req.Form["InstanceId.1"], DeepEquals, []string{"i-10a64379"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +func (s *S) TestSignatureWithEndpointPath(c *C) { + ec2.FakeTime(true) + defer ec2.FakeTime(false) + + testServer.Response(200, nil, RebootInstancesExample) + + // https://bugs.launchpad.net/goamz/+bug/1022749 + ec2 := ec2.New(s.ec2.Auth, aws.Region{EC2Endpoint: testServer.URL + "/services/Cloud"}) + + _, err := ec2.RebootInstances("i-10a64379") + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Form["Signature"], DeepEquals, []string{"gdG/vEm+c6ehhhfkrJy3+wuVzw/rzKR42TYelMwti7M="}) +} + +func (s *S) TestAvailabilityZonesExample1(c *C) { + testServer.Response(200, nil, DescribeAvailabilityZonesExample1) + + resp, err := s.ec2.AvailabilityZones(nil) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeAvailabilityZones"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.Zones, HasLen, 4) + + z0 := resp.Zones[0] + c.Assert(z0.Name, Equals, "us-east-1a") + c.Assert(z0.Region, Equals, "us-east-1") + c.Assert(z0.State, Equals, "available") + c.Assert(z0.MessageSet, HasLen, 0) + + z1 := resp.Zones[1] + c.Assert(z1.Name, Equals, "us-east-1b") + c.Assert(z1.Region, Equals, "us-east-1") + c.Assert(z1.State, Equals, "available") + c.Assert(z1.MessageSet, HasLen, 0) + + z2 := resp.Zones[2] + c.Assert(z2.Name, Equals, "us-east-1c") + c.Assert(z2.Region, Equals, "us-east-1") + c.Assert(z2.State, Equals, "available") + c.Assert(z2.MessageSet, HasLen, 0) + + z3 := resp.Zones[3] + c.Assert(z3.Name, Equals, "us-east-1d") + c.Assert(z3.Region, Equals, "us-east-1") + c.Assert(z3.State, Equals, "available") + c.Assert(z3.MessageSet, HasLen, 0) +} + +func (s *S) TestAvailabilityZonesExample2(c *C) { + testServer.Response(200, nil, DescribeAvailabilityZonesExample2) + + resp, err := s.ec2.AvailabilityZones(nil) + + req := testServer.WaitRequest() + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeAvailabilityZones"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") + c.Assert(resp.Zones, HasLen, 2) + + z0 := resp.Zones[0] + c.Assert(z0.Name, Equals, "us-east-1a") + c.Assert(z0.Region, Equals, "us-east-1") + c.Assert(z0.State, Equals, "impaired") + c.Assert(z0.MessageSet, HasLen, 0) + + z1 := resp.Zones[1] + c.Assert(z1.Name, Equals, "us-east-1b") + c.Assert(z1.Region, Equals, "us-east-1") + c.Assert(z1.State, Equals, "unavailable") + c.Assert(z1.MessageSet, DeepEquals, []string{"us-east-1b is currently down for maintenance."}) +} + +func (s *S) TestDescribeAccountAttributesExamples(c *C) { + testServer.Response(200, nil, DescribeAccountAttributesExample) + + resp, err := s.ec2.AccountAttributes("supported-platforms") + req := testServer.WaitRequest() + + assertAttribute := func(name, value string) { + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeAccountAttributes"}) + c.Assert(req.Form["AttributeName.1"], DeepEquals, []string{name}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + c.Assert(resp.Attributes, HasLen, 1) + attr := resp.Attributes[0] + c.Check(attr.Name, Equals, name) + c.Check(attr.Values, DeepEquals, []string{value}) + } + assertAttribute("supported-platforms", "VPC") + + testServer.Response(200, nil, DescribeAccountAttributesExample2) + resp, err = s.ec2.AccountAttributes("default-vpc") + req = testServer.WaitRequest() + assertAttribute("default-vpc", "vpc-xxxxxxxx") + + testServer.Response(200, nil, DescribeAccountAttributesExample3) + resp, err = s.ec2.AccountAttributes("default-vpc") + req = testServer.WaitRequest() + assertAttribute("default-vpc", "none") +} diff --git a/vendor/src/launchpad.net/goamz/ec2/ec2i_test.go b/vendor/src/launchpad.net/goamz/ec2/ec2i_test.go new file mode 100644 index 0000000000..9028a41473 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/ec2i_test.go @@ -0,0 +1,204 @@ +package ec2_test + +import ( + "crypto/rand" + "fmt" + + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" +) + +// AmazonServer represents an Amazon EC2 server. +type AmazonServer struct { + auth aws.Auth +} + +func (s *AmazonServer) SetUp(c *C) { + auth, err := aws.EnvAuth() + if err != nil { + c.Fatal(err.Error()) + } + s.auth = auth +} + +// Suite cost per run: 0.02 USD +var _ = Suite(&AmazonClientSuite{}) + +// AmazonClientSuite tests the client against a live EC2 server. +type AmazonClientSuite struct { + srv AmazonServer + ClientTests +} + +func (s *AmazonClientSuite) SetUpSuite(c *C) { + if !testutil.Amazon { + c.Skip("AmazonClientSuite tests not enabled") + } + s.srv.SetUp(c) + s.ec2 = ec2.New(s.srv.auth, aws.USEast) +} + +// ClientTests defines integration tests designed to test the client. +// It is not used as a test suite in itself, but embedded within +// another type. +type ClientTests struct { + ec2 *ec2.EC2 +} + +var imageId = "ami-ccf405a5" // Ubuntu Maverick, i386, EBS store + +// Cost: 0.00 USD +func (s *ClientTests) TestRunInstancesError(c *C) { + options := ec2.RunInstances{ + ImageId: "ami-a6f504cf", // Ubuntu Maverick, i386, instance store + InstanceType: "t1.micro", // Doesn't work with micro, results in 400. + } + + resp, err := s.ec2.RunInstances(&options) + + c.Assert(resp, IsNil) + c.Assert(err, ErrorMatches, "AMI.*root device.*not supported.*") + + ec2err, ok := err.(*ec2.Error) + c.Assert(ok, Equals, true) + c.Assert(ec2err.StatusCode, Equals, 400) + c.Assert(ec2err.Code, Equals, "UnsupportedOperation") + c.Assert(ec2err.Message, Matches, "AMI.*root device.*not supported.*") + c.Assert(ec2err.RequestId, Matches, ".+") +} + +// Cost: 0.02 USD +func (s *ClientTests) TestRunAndTerminate(c *C) { + options := ec2.RunInstances{ + ImageId: imageId, + InstanceType: "t1.micro", + } + resp1, err := s.ec2.RunInstances(&options) + c.Assert(err, IsNil) + c.Check(resp1.ReservationId, Matches, "r-[0-9a-f]*") + c.Check(resp1.OwnerId, Matches, "[0-9]+") + c.Check(resp1.Instances, HasLen, 1) + c.Check(resp1.Instances[0].InstanceType, Equals, "t1.micro") + + instId := resp1.Instances[0].InstanceId + + resp2, err := s.ec2.Instances([]string{instId}, nil) + c.Assert(err, IsNil) + if c.Check(resp2.Reservations, HasLen, 1) && c.Check(len(resp2.Reservations[0].Instances), Equals, 1) { + inst := resp2.Reservations[0].Instances[0] + c.Check(inst.InstanceId, Equals, instId) + } + + resp3, err := s.ec2.TerminateInstances([]string{instId}) + c.Assert(err, IsNil) + c.Check(resp3.StateChanges, HasLen, 1) + c.Check(resp3.StateChanges[0].InstanceId, Equals, instId) + c.Check(resp3.StateChanges[0].CurrentState.Name, Equals, "shutting-down") + c.Check(resp3.StateChanges[0].CurrentState.Code, Equals, 32) +} + +// Cost: 0.00 USD +func (s *ClientTests) TestSecurityGroups(c *C) { + name := "goamz-test" + descr := "goamz security group for tests" + + // Clean it up, if a previous test left it around and avoid leaving it around. + s.ec2.DeleteSecurityGroup(ec2.SecurityGroup{Name: name}) + defer s.ec2.DeleteSecurityGroup(ec2.SecurityGroup{Name: name}) + + resp1, err := s.ec2.CreateSecurityGroup(name, descr) + c.Assert(err, IsNil) + c.Assert(resp1.RequestId, Matches, ".+") + c.Assert(resp1.Name, Equals, name) + c.Assert(resp1.Id, Matches, ".+") + + resp1, err = s.ec2.CreateSecurityGroup(name, descr) + ec2err, _ := err.(*ec2.Error) + c.Assert(resp1, IsNil) + c.Assert(ec2err, NotNil) + c.Assert(ec2err.Code, Equals, "InvalidGroup.Duplicate") + + perms := []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 0, + ToPort: 1024, + SourceIPs: []string{"127.0.0.1/24"}, + }} + + resp2, err := s.ec2.AuthorizeSecurityGroup(ec2.SecurityGroup{Name: name}, perms) + c.Assert(err, IsNil) + c.Assert(resp2.RequestId, Matches, ".+") + + resp3, err := s.ec2.SecurityGroups(ec2.SecurityGroupNames(name), nil) + c.Assert(err, IsNil) + c.Assert(resp3.RequestId, Matches, ".+") + c.Assert(resp3.Groups, HasLen, 1) + + g0 := resp3.Groups[0] + c.Assert(g0.Name, Equals, name) + c.Assert(g0.Description, Equals, descr) + c.Assert(g0.IPPerms, HasLen, 1) + c.Assert(g0.IPPerms[0].Protocol, Equals, "tcp") + c.Assert(g0.IPPerms[0].FromPort, Equals, 0) + c.Assert(g0.IPPerms[0].ToPort, Equals, 1024) + c.Assert(g0.IPPerms[0].SourceIPs, DeepEquals, []string{"127.0.0.1/24"}) + + resp2, err = s.ec2.DeleteSecurityGroup(ec2.SecurityGroup{Name: name}) + c.Assert(err, IsNil) + c.Assert(resp2.RequestId, Matches, ".+") +} + +var sessionId = func() string { + buf := make([]byte, 8) + // if we have no randomness, we'll just make do, so ignore the error. + rand.Read(buf) + return fmt.Sprintf("%x", buf) +}() + +// sessionName reutrns a name that is probably +// unique to this test session. +func sessionName(prefix string) string { + return prefix + "-" + sessionId +} + +var allRegions = []aws.Region{ + aws.USEast, + aws.USWest, + aws.EUWest, + aws.APSoutheast, + aws.APNortheast, +} + +// Communicate with all EC2 endpoints to see if they are alive. +func (s *ClientTests) TestRegions(c *C) { + name := sessionName("goamz-region-test") + perms := []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 80, + ToPort: 80, + SourceIPs: []string{"127.0.0.1/32"}, + }} + errs := make(chan error, len(allRegions)) + for _, region := range allRegions { + go func(r aws.Region) { + e := ec2.New(s.ec2.Auth, r) + _, err := e.AuthorizeSecurityGroup(ec2.SecurityGroup{Name: name}, perms) + errs <- err + }(region) + } + for _ = range allRegions { + err := <-errs + if err != nil { + ec2_err, ok := err.(*ec2.Error) + if ok { + c.Check(ec2_err.Code, Matches, "InvalidGroup.NotFound") + } else { + c.Errorf("Non-EC2 error: %s", err) + } + } else { + c.Errorf("Test should have errored but it seems to have succeeded") + } + } +} diff --git a/vendor/src/launchpad.net/goamz/ec2/ec2t_test.go b/vendor/src/launchpad.net/goamz/ec2/ec2t_test.go new file mode 100644 index 0000000000..717d254957 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/ec2t_test.go @@ -0,0 +1,1072 @@ +package ec2_test + +import ( + "fmt" + "net" + "regexp" + "sort" + "time" + + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" + "launchpad.net/goamz/ec2/ec2test" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" +) + +// LocalServer represents a local ec2test fake server. +type LocalServer struct { + auth aws.Auth + region aws.Region + srv *ec2test.Server +} + +func (s *LocalServer) SetUp(c *C) { + srv, err := ec2test.NewServer() + c.Assert(err, IsNil) + c.Assert(srv, NotNil) + + // Add default attributes. + srv.SetInitialAttributes(map[string][]string{ + "supported-platforms": []string{"VPC", "EC2"}, + "default-vpc": []string{"vpc-xxxxxxx"}, + }) + + s.srv = srv + s.region = aws.Region{EC2Endpoint: srv.URL()} +} + +// LocalServerSuite defines tests that will run +// against the local ec2test server. It includes +// selected tests from ClientTests; +// when the ec2test functionality is sufficient, it should +// include all of them, and ClientTests can be simply embedded. +type LocalServerSuite struct { + srv LocalServer + ServerTests + clientTests ClientTests +} + +var _ = Suite(&LocalServerSuite{}) + +func (s *LocalServerSuite) SetUpSuite(c *C) { + s.srv.SetUp(c) + s.ServerTests.ec2 = ec2.New(s.srv.auth, s.srv.region) + s.clientTests.ec2 = ec2.New(s.srv.auth, s.srv.region) +} + +func (s *LocalServerSuite) TestRunAndTerminate(c *C) { + s.clientTests.TestRunAndTerminate(c) +} + +func (s *LocalServerSuite) TestSecurityGroups(c *C) { + s.clientTests.TestSecurityGroups(c) +} + +// TestUserData is not defined on ServerTests because it +// requires the ec2test server to function. +func (s *LocalServerSuite) TestUserData(c *C) { + data := make([]byte, 256) + for i := range data { + data[i] = byte(i) + } + inst, err := s.ec2.RunInstances(&ec2.RunInstances{ + ImageId: imageId, + InstanceType: "t1.micro", + UserData: data, + }) + c.Assert(err, IsNil) + c.Assert(inst, NotNil) + + id := inst.Instances[0].InstanceId + + defer s.ec2.TerminateInstances([]string{id}) + + tinst := s.srv.srv.Instance(id) + c.Assert(tinst, NotNil) + c.Assert(tinst.UserData, DeepEquals, data) +} + +func (s *LocalServerSuite) TestInstanceInfo(c *C) { + list, err := s.ec2.RunInstances(&ec2.RunInstances{ + ImageId: imageId, + InstanceType: "t1.micro", + }) + c.Assert(err, IsNil) + + inst := list.Instances[0] + c.Assert(inst, NotNil) + + id := inst.InstanceId + defer s.ec2.TerminateInstances([]string{id}) + + masked := func(addr string) string { + return net.ParseIP(addr).Mask(net.CIDRMask(24, 32)).String() + } + c.Check(masked(inst.IPAddress), Equals, "8.0.0.0") + c.Check(masked(inst.PrivateIPAddress), Equals, "127.0.0.0") + // DNSName is empty initially, to check it we need to refresh. + c.Check(inst.DNSName, Equals, "") + c.Check(inst.PrivateDNSName, Equals, id+".internal.invalid") + + // Get the instance again to verify DNSName. + resp, err := s.ec2.Instances([]string{id}, nil) + c.Assert(err, IsNil) + c.Assert(resp.Reservations, HasLen, 1) + c.Assert(resp.Reservations[0].Instances, HasLen, 1) + c.Check(resp.Reservations[0].Instances[0].DNSName, Equals, id+".testing.invalid") +} + +// getDefaultVPCIdAndSubnets returns the default VPC id and a list of +// its default subnets. If fails if there is no default VPC or at +// least one subnet in it. +func (s *ServerTests) getDefaultVPCIdAndSubnets(c *C) (string, []ec2.Subnet) { + resp1, err := s.ec2.AccountAttributes("default-vpc") + c.Assert(err, IsNil) + c.Assert(resp1.Attributes, HasLen, 1) + c.Assert(resp1.Attributes[0].Name, Equals, "default-vpc") + c.Assert(resp1.Attributes[0].Values, HasLen, 1) + c.Assert(resp1.Attributes[0].Values[0], Not(Equals), "") + defaultVPCId := resp1.Attributes[0].Values[0] + if defaultVPCId == "none" { + c.Fatalf("no default VPC for region %q", s.ec2.Region.Name) + } + filter := ec2.NewFilter() + filter.Add("defaultForAz", "true") + filter.Add("vpc-id", defaultVPCId) + resp2, err := s.ec2.Subnets(nil, filter) + c.Assert(err, IsNil) + defaultSubnets := resp2.Subnets + if len(defaultSubnets) < 1 { + c.Fatalf("no default subnets for VPC %q", defaultVPCId) + } + + return defaultVPCId, defaultSubnets +} + +func validIPForSubnet(c *C, subnet ec2.Subnet, startFrom byte) string { + ip, ipnet, err := net.ParseCIDR(subnet.CIDRBlock) + c.Assert(err, IsNil) + ip[len(ip)-1] = startFrom + c.Assert(ipnet.Contains(ip), Equals, true) + return ip.String() +} + +func (s *LocalServerSuite) TestAvailabilityZones(c *C) { + s.srv.srv.SetAvailabilityZones([]ec2.AvailabilityZoneInfo{{ + AvailabilityZone: ec2.AvailabilityZone{ + Name: "us-east-1a", + Region: "us-east-1", + }, + State: "available", + }, { + AvailabilityZone: ec2.AvailabilityZone{ + Name: "us-east-1b", + Region: "us-east-1", + }, + State: "impaired", + }, { + AvailabilityZone: ec2.AvailabilityZone{ + Name: "us-west-1a", + Region: "us-west-1", + }, + State: "available", + }, { + AvailabilityZone: ec2.AvailabilityZone{ + Name: "us-west-1b", + Region: "us-west-1", + }, + State: "unavailable", + MessageSet: []string{"down for maintenance"}, + }}) + + resp, err := s.ec2.AvailabilityZones(nil) + c.Assert(err, IsNil) + c.Assert(resp.Zones, HasLen, 4) + c.Assert(resp.Zones[0].Name, Equals, "us-east-1a") + c.Assert(resp.Zones[1].Name, Equals, "us-east-1b") + c.Assert(resp.Zones[2].Name, Equals, "us-west-1a") + c.Assert(resp.Zones[3].Name, Equals, "us-west-1b") + + filter := ec2.NewFilter() + filter.Add("region-name", "us-east-1") + resp, err = s.ec2.AvailabilityZones(filter) + c.Assert(err, IsNil) + c.Assert(resp.Zones, HasLen, 2) + c.Assert(resp.Zones[0].Name, Equals, "us-east-1a") + c.Assert(resp.Zones[1].Name, Equals, "us-east-1b") +} + +// AmazonServerSuite runs the ec2test server tests against a live EC2 server. +// It will only be activated if the -amazon flag is specified. +type AmazonServerSuite struct { + srv AmazonServer + ServerTests +} + +var _ = Suite(&AmazonServerSuite{}) + +func (s *AmazonServerSuite) SetUpSuite(c *C) { + if !testutil.Amazon { + c.Skip("AmazonServerSuite tests not enabled") + } + s.srv.SetUp(c) + s.ServerTests.ec2 = ec2.New(s.srv.auth, aws.USEast) +} + +// ServerTests defines a set of tests designed to test +// the ec2test local fake ec2 server. +// It is not used as a test suite in itself, but embedded within +// another type. +type ServerTests struct { + ec2 *ec2.EC2 +} + +func (s *ServerTests) TestDescribeAccountAttributes(c *C) { + resp, err := s.ec2.AccountAttributes("supported-platforms", "default-vpc") + c.Assert(err, IsNil) + c.Assert(resp.Attributes, HasLen, 2) + for _, attr := range resp.Attributes { + switch attr.Name { + case "supported-platforms": + sort.Strings(attr.Values) + c.Assert(attr.Values, DeepEquals, []string{"EC2", "VPC"}) + case "default-vpc": + c.Assert(attr.Values, HasLen, 1) + c.Assert(attr.Values[0], Not(Equals), "") + default: + c.Fatalf("unexpected account attribute %q: %v", attr.Name, attr) + } + } +} + +func (s *ServerTests) TestRunInstancesVPCCreatesNICsWhenSpecified(c *C) { + defaultVPCId, defaultSubnets := s.getDefaultVPCIdAndSubnets(c) + subnet := defaultSubnets[0] + + g0 := s.makeTestGroupVPC(c, defaultVPCId, "goamz-test0", "ec2test group 0") + g1 := s.makeTestGroupVPC(c, defaultVPCId, "goamz-test1", "ec2test group 1") + defer s.deleteGroups(c, []ec2.SecurityGroup{g0, g1}) + + ip1 := validIPForSubnet(c, subnet, 5) + ip2 := validIPForSubnet(c, subnet, 6) + list, err := s.ec2.RunInstances(&ec2.RunInstances{ + ImageId: imageId, + InstanceType: "t1.micro", + NetworkInterfaces: []ec2.RunNetworkInterface{{ + DeviceIndex: 0, + SubnetId: subnet.Id, + Description: "first nic", + SecurityGroupIds: []string{g0.Id, g1.Id}, + DeleteOnTermination: true, + PrivateIPs: []ec2.PrivateIP{ + {Address: ip1, IsPrimary: true}, + {Address: ip2, IsPrimary: false}, + }}}}) + c.Assert(err, IsNil) + + inst := list.Instances[0] + c.Assert(inst, NotNil) + c.Assert(inst.NetworkInterfaces, HasLen, 1) + + id := inst.InstanceId + defer s.ec2.TerminateInstances([]string{id}) + + c.Check(inst.VPCId, Equals, subnet.VPCId) + c.Check(inst.SubnetId, Equals, subnet.Id) + iface := inst.NetworkInterfaces[0] + c.Check(iface.Id, Matches, "eni-.+") + c.Check(iface.Attachment.DeviceIndex, Equals, 0) + c.Check(iface.Attachment.Id, Matches, "eni-attach-.+") + c.Check(iface.SubnetId, Equals, subnet.Id) + c.Check(iface.PrivateIPAddress, Equals, ip1) + c.Check(iface.Description, Equals, "first nic") + c.Check(iface.Groups, HasLen, 2) + for _, group := range iface.Groups { + if group.Id == g0.Id { + c.Check(group.Name, Equals, g0.Name) + } else if group.Id == g1.Id { + c.Check(group.Name, Equals, g1.Name) + } + } + for _, ip := range iface.PrivateIPs { + if ip.IsPrimary { + c.Check(ip.Address, Equals, ip1) + } else { + c.Check(ip.Address, Equals, ip2) + } + } +} + +func (s *ServerTests) TestRunInstancesVPCReturnsErrorWithBothInstanceAndNICSubnetIds(c *C) { + _, defaultSubnets := s.getDefaultVPCIdAndSubnets(c) + subnet := defaultSubnets[0] + + _, err := s.ec2.RunInstances(&ec2.RunInstances{ + ImageId: imageId, + InstanceType: "t1.micro", + SubnetId: subnet.Id, + NetworkInterfaces: []ec2.RunNetworkInterface{{ + DeviceIndex: 0, + SubnetId: subnet.Id, + Description: "first nic", + DeleteOnTermination: true, + }}, + }) + c.Assert(err, NotNil) + c.Check(errorCode(err), Equals, "InvalidParameterCombination") +} + +func (s *ServerTests) testCreateDefaultNIC(c *C, subnet *ec2.Subnet) { + defaultVPCId, defaultSubnets := s.getDefaultVPCIdAndSubnets(c) + + params := &ec2.RunInstances{ + ImageId: imageId, + InstanceType: "t1.micro", + } + if subnet != nil { + params.SubnetId = subnet.Id + } else { + subnet = &defaultSubnets[0] + } + list, err := s.ec2.RunInstances(params) + c.Assert(err, IsNil) + + inst := list.Instances[0] + c.Assert(inst, NotNil) + c.Assert(inst.NetworkInterfaces, HasLen, 1) + + id := inst.InstanceId + defer s.ec2.TerminateInstances([]string{id}) + + c.Check(inst.VPCId, Equals, defaultVPCId) + if inst.SubnetId != subnet.Id { + // Since we don't specify which AZ to use, + // the instance might launch in any one. + for _, sub := range defaultSubnets { + if inst.SubnetId == sub.Id { + subnet = &sub + } + } + } + _, ipnet, err := net.ParseCIDR(subnet.CIDRBlock) + c.Assert(err, IsNil) + + c.Check(inst.SubnetId, Equals, subnet.Id) + iface := inst.NetworkInterfaces[0] + c.Assert(iface.Id, Matches, "eni-.+") + c.Assert(iface.SubnetId, Equals, subnet.Id) + c.Assert(iface.VPCId, Equals, subnet.VPCId) + if len(iface.PrivateIPs) > 0 { + // AWS doesn't always fill in the PrivateIPs slice. + expectIP := ec2.PrivateIP{ + Address: iface.PrivateIPAddress, + DNSName: iface.PrivateDNSName, + IsPrimary: true, + } + c.Assert(iface.PrivateIPs, DeepEquals, []ec2.PrivateIP{expectIP}) + } + c.Assert(ipnet.Contains(net.ParseIP(iface.PrivateIPAddress)), Equals, true) + c.Assert(iface.PrivateDNSName, Not(Equals), "") + c.Assert(iface.Attachment.Id, Matches, "eni-attach-.+") +} + +func (s *ServerTests) TestRunInstancesVPCCreatesDefaultNICWithoutSubnetIdOrNICs(c *C) { + s.testCreateDefaultNIC(c, nil) +} + +func (s *ServerTests) TestRunInstancesVPCCreatesDefaultNICWithSubnetIdNoNICs(c *C) { + _, defaultSubnets := s.getDefaultVPCIdAndSubnets(c) + s.testCreateDefaultNIC(c, &defaultSubnets[0]) +} + +func terminateInstances(c *C, e *ec2.EC2, ids []string) { + _, err := e.TerminateInstances(ids) + c.Assert(err, IsNil, Commentf("%v INSTANCES LEFT RUNNING!!!", ids)) + // We need to wait until the instances are really off, because + // entities that depend on them won't be deleted (i.e. groups, + // NICs, subnets, etc.) + testAttempt := aws.AttemptStrategy{ + Total: 10 * time.Minute, + Delay: 5 * time.Second, + } + f := ec2.NewFilter() + f.Add("instance-state-name", "terminated") + idsLeft := make(map[string]bool) + for _, id := range ids { + idsLeft[id] = true + } + for a := testAttempt.Start(); a.Next(); { + c.Logf("waiting for %v to get terminated", ids) + resp, err := e.Instances(ids, f) + if err != nil { + c.Fatalf("not waiting for %v to terminate: %v", ids, err) + } + for _, r := range resp.Reservations { + for _, inst := range r.Instances { + delete(idsLeft, inst.InstanceId) + } + } + ids = []string{} + for id, _ := range idsLeft { + ids = append(ids, id) + } + if len(ids) == 0 { + c.Logf("all instances terminated.") + return + } + } + c.Fatalf("%v INSTANCES LEFT RUNNING!!!", ids) +} + +func (s *ServerTests) makeTestGroup(c *C, name, descr string) ec2.SecurityGroup { + return s.makeTestGroupVPC(c, "", name, descr) +} + +func (s *ServerTests) makeTestGroupVPC(c *C, vpcId, name, descr string) ec2.SecurityGroup { + // Clean it up if a previous test left it around. + _, err := s.ec2.DeleteSecurityGroup(ec2.SecurityGroup{Name: name}) + if err != nil && errorCode(err) != "InvalidGroup.NotFound" { + c.Fatalf("delete security group: %v", err) + } + + resp, err := s.ec2.CreateSecurityGroupVPC(vpcId, name, descr) + c.Assert(err, IsNil) + c.Assert(resp.Name, Equals, name) + return resp.SecurityGroup +} + +func (s *ServerTests) TestIPPerms(c *C) { + g0 := s.makeTestGroup(c, "goamz-test0", "ec2test group 0") + g1 := s.makeTestGroup(c, "goamz-test1", "ec2test group 1") + defer s.deleteGroups(c, []ec2.SecurityGroup{g0, g1}) + + resp, err := s.ec2.SecurityGroups([]ec2.SecurityGroup{g0, g1}, nil) + c.Assert(err, IsNil) + c.Assert(resp.Groups, HasLen, 2) + c.Assert(resp.Groups[0].IPPerms, HasLen, 0) + c.Assert(resp.Groups[1].IPPerms, HasLen, 0) + + ownerId := resp.Groups[0].OwnerId + + // test some invalid parameters + // TODO more + _, err = s.ec2.AuthorizeSecurityGroup(g0, []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 0, + ToPort: 1024, + SourceIPs: []string{"z127.0.0.1/24"}, + }}) + c.Assert(err, NotNil) + c.Check(errorCode(err), Equals, "InvalidPermission.Malformed") + + // Check that AuthorizeSecurityGroup adds the correct authorizations. + _, err = s.ec2.AuthorizeSecurityGroup(g0, []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 2000, + ToPort: 2001, + SourceIPs: []string{"127.0.0.0/24"}, + SourceGroups: []ec2.UserSecurityGroup{{ + Name: g1.Name, + }, { + Id: g0.Id, + }}, + }, { + Protocol: "tcp", + FromPort: 2000, + ToPort: 2001, + SourceIPs: []string{"200.1.1.34/32"}, + }}) + c.Assert(err, IsNil) + + resp, err = s.ec2.SecurityGroups([]ec2.SecurityGroup{g0}, nil) + c.Assert(err, IsNil) + c.Assert(resp.Groups, HasLen, 1) + c.Assert(resp.Groups[0].IPPerms, HasLen, 1) + + perm := resp.Groups[0].IPPerms[0] + srcg := perm.SourceGroups + c.Assert(srcg, HasLen, 2) + + // Normalize so we don't care about returned order. + if srcg[0].Name == g1.Name { + srcg[0], srcg[1] = srcg[1], srcg[0] + } + c.Check(srcg[0].Name, Equals, g0.Name) + c.Check(srcg[0].Id, Equals, g0.Id) + c.Check(srcg[0].OwnerId, Equals, ownerId) + c.Check(srcg[1].Name, Equals, g1.Name) + c.Check(srcg[1].Id, Equals, g1.Id) + c.Check(srcg[1].OwnerId, Equals, ownerId) + + sort.Strings(perm.SourceIPs) + c.Check(perm.SourceIPs, DeepEquals, []string{"127.0.0.0/24", "200.1.1.34/32"}) + + // Check that we can't delete g1 (because g0 is using it) + _, err = s.ec2.DeleteSecurityGroup(g1) + c.Assert(err, NotNil) + c.Check(errorCode(err), Equals, "InvalidGroup.InUse") + + _, err = s.ec2.RevokeSecurityGroup(g0, []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 2000, + ToPort: 2001, + SourceGroups: []ec2.UserSecurityGroup{{Id: g1.Id}}, + }, { + Protocol: "tcp", + FromPort: 2000, + ToPort: 2001, + SourceIPs: []string{"200.1.1.34/32"}, + }}) + c.Assert(err, IsNil) + + resp, err = s.ec2.SecurityGroups([]ec2.SecurityGroup{g0}, nil) + c.Assert(err, IsNil) + c.Assert(resp.Groups, HasLen, 1) + c.Assert(resp.Groups[0].IPPerms, HasLen, 1) + + perm = resp.Groups[0].IPPerms[0] + srcg = perm.SourceGroups + c.Assert(srcg, HasLen, 1) + c.Check(srcg[0].Name, Equals, g0.Name) + c.Check(srcg[0].Id, Equals, g0.Id) + c.Check(srcg[0].OwnerId, Equals, ownerId) + + c.Check(perm.SourceIPs, DeepEquals, []string{"127.0.0.0/24"}) + + // We should be able to delete g1 now because we've removed its only use. + _, err = s.ec2.DeleteSecurityGroup(g1) + c.Assert(err, IsNil) + + _, err = s.ec2.DeleteSecurityGroup(g0) + c.Assert(err, IsNil) + + f := ec2.NewFilter() + f.Add("group-id", g0.Id, g1.Id) + resp, err = s.ec2.SecurityGroups(nil, f) + c.Assert(err, IsNil) + c.Assert(resp.Groups, HasLen, 0) +} + +func (s *ServerTests) TestDuplicateIPPerm(c *C) { + name := "goamz-test" + descr := "goamz security group for tests" + + // Clean it up, if a previous test left it around and avoid leaving it around. + s.ec2.DeleteSecurityGroup(ec2.SecurityGroup{Name: name}) + defer s.ec2.DeleteSecurityGroup(ec2.SecurityGroup{Name: name}) + + resp1, err := s.ec2.CreateSecurityGroup(name, descr) + c.Assert(err, IsNil) + c.Assert(resp1.Name, Equals, name) + + perms := []ec2.IPPerm{{ + Protocol: "tcp", + FromPort: 200, + ToPort: 1024, + SourceIPs: []string{"127.0.0.1/24"}, + }, { + Protocol: "tcp", + FromPort: 0, + ToPort: 100, + SourceIPs: []string{"127.0.0.1/24"}, + }} + + _, err = s.ec2.AuthorizeSecurityGroup(ec2.SecurityGroup{Name: name}, perms[0:1]) + c.Assert(err, IsNil) + + _, err = s.ec2.AuthorizeSecurityGroup(ec2.SecurityGroup{Name: name}, perms[0:2]) + c.Assert(errorCode(err), Equals, "InvalidPermission.Duplicate") +} + +type filterSpec struct { + name string + values []string +} + +func (s *ServerTests) TestInstanceFiltering(c *C) { + vpcResp, err := s.ec2.CreateVPC("10.4.0.0/16", "") + c.Assert(err, IsNil) + vpcId := vpcResp.VPC.Id + defer s.deleteVPCs(c, []string{vpcId}) + + subResp := s.createSubnet(c, vpcId, "10.4.1.0/24", "") + subId := subResp.Subnet.Id + defer s.deleteSubnets(c, []string{subId}) + + groupResp, err := s.ec2.CreateSecurityGroup( + sessionName("testgroup1"), + "testgroup one description", + ) + c.Assert(err, IsNil) + group1 := groupResp.SecurityGroup + + groupResp, err = s.ec2.CreateSecurityGroupVPC( + vpcId, + sessionName("testgroup2"), + "testgroup two description vpc", + ) + c.Assert(err, IsNil) + group2 := groupResp.SecurityGroup + + defer s.deleteGroups(c, []ec2.SecurityGroup{group1, group2}) + + insts := make([]*ec2.Instance, 3) + inst, err := s.ec2.RunInstances(&ec2.RunInstances{ + MinCount: 2, + ImageId: imageId, + InstanceType: "t1.micro", + SecurityGroups: []ec2.SecurityGroup{group1}, + }) + c.Assert(err, IsNil) + insts[0] = &inst.Instances[0] + insts[1] = &inst.Instances[1] + + imageId2 := "ami-e358958a" // Natty server, i386, EBS store + inst, err = s.ec2.RunInstances(&ec2.RunInstances{ + ImageId: imageId2, + InstanceType: "t1.micro", + SubnetId: subId, + SecurityGroups: []ec2.SecurityGroup{group2}, + }) + c.Assert(err, IsNil) + insts[2] = &inst.Instances[0] + + ids := func(indices ...int) (instIds []string) { + for _, index := range indices { + instIds = append(instIds, insts[index].InstanceId) + } + return + } + + defer terminateInstances(c, s.ec2, ids(0, 1, 2)) + + tests := []struct { + about string + instanceIds []string // instanceIds argument to Instances method. + filters []filterSpec // filters argument to Instances method. + resultIds []string // set of instance ids of expected results. + allowExtra bool // resultIds may be incomplete. + err string // expected error. + }{ + { + about: "check that Instances returns all instances", + resultIds: ids(0, 1, 2), + allowExtra: true, + }, { + about: "check that specifying two instance ids returns them", + instanceIds: ids(0, 2), + resultIds: ids(0, 2), + }, { + about: "check that specifying a non-existent instance id gives an error", + instanceIds: append(ids(0), "i-deadbeef"), + err: `.*\(InvalidInstanceID\.NotFound\)`, + }, { + about: "check that a filter allowed both instances returns both of them", + filters: []filterSpec{ + {"instance-id", ids(0, 2)}, + }, + resultIds: ids(0, 2), + }, { + about: "check that a filter allowing only one instance returns it", + filters: []filterSpec{ + {"instance-id", ids(1)}, + }, + resultIds: ids(1), + }, { + about: "check that a filter allowing no instances returns none", + filters: []filterSpec{ + {"instance-id", []string{"i-deadbeef12345"}}, + }, + }, { + about: "check that filtering on group id works", + filters: []filterSpec{ + {"group-id", []string{group1.Id}}, + }, + resultIds: ids(0, 1), + }, { + about: "check that filtering on group id with instance prefix works", + filters: []filterSpec{ + {"instance.group-id", []string{group1.Id}}, + }, + resultIds: ids(0, 1), + }, { + about: "check that filtering on group name works", + filters: []filterSpec{ + {"group-name", []string{group1.Name}}, + }, + resultIds: ids(0, 1), + }, { + about: "check that filtering on group name with instance prefix works", + filters: []filterSpec{ + {"instance.group-name", []string{group1.Name}}, + }, + resultIds: ids(0, 1), + }, { + about: "check that filtering on image id works", + filters: []filterSpec{ + {"image-id", []string{imageId}}, + }, + resultIds: ids(0, 1), + allowExtra: true, + }, { + about: "combination filters 1", + filters: []filterSpec{ + {"image-id", []string{imageId, imageId2}}, + {"group-name", []string{group1.Name}}, + }, + resultIds: ids(0, 1), + }, { + about: "combination filters 2", + filters: []filterSpec{ + {"image-id", []string{imageId2}}, + {"group-name", []string{group1.Name}}, + }, + }, { + about: "VPC filters in combination", + filters: []filterSpec{ + {"vpc-id", []string{vpcId}}, + {"subnet-id", []string{subId}}, + }, + resultIds: ids(2), + }, + } + for i, t := range tests { + c.Logf("%d. %s", i, t.about) + var f *ec2.Filter + if t.filters != nil { + f = ec2.NewFilter() + for _, spec := range t.filters { + f.Add(spec.name, spec.values...) + } + } + resp, err := s.ec2.Instances(t.instanceIds, f) + if t.err != "" { + c.Check(err, ErrorMatches, t.err) + continue + } + c.Assert(err, IsNil) + insts := make(map[string]*ec2.Instance) + for _, r := range resp.Reservations { + for j := range r.Instances { + inst := &r.Instances[j] + c.Check(insts[inst.InstanceId], IsNil, Commentf("duplicate instance id: %q", inst.InstanceId)) + insts[inst.InstanceId] = inst + } + } + if !t.allowExtra { + c.Check(insts, HasLen, len(t.resultIds), Commentf("expected %d instances got %#v", len(t.resultIds), insts)) + } + for j, id := range t.resultIds { + c.Check(insts[id], NotNil, Commentf("instance id %d (%q) not found; got %#v", j, id, insts)) + } + } +} + +func (s *AmazonServerSuite) TestRunInstancesVPC(c *C) { + vpcResp, err := s.ec2.CreateVPC("10.6.0.0/16", "") + c.Assert(err, IsNil) + vpcId := vpcResp.VPC.Id + defer s.deleteVPCs(c, []string{vpcId}) + + subResp := s.createSubnet(c, vpcId, "10.6.1.0/24", "") + subId := subResp.Subnet.Id + defer s.deleteSubnets(c, []string{subId}) + + groupResp, err := s.ec2.CreateSecurityGroupVPC( + vpcId, + sessionName("testgroup1 vpc"), + "testgroup description vpc", + ) + c.Assert(err, IsNil) + group := groupResp.SecurityGroup + + defer s.deleteGroups(c, []ec2.SecurityGroup{group}) + + // Run a single instance with a new network interface. + ips := []ec2.PrivateIP{ + {Address: "10.6.1.10", IsPrimary: true}, + {Address: "10.6.1.20", IsPrimary: false}, + } + instResp, err := s.ec2.RunInstances(&ec2.RunInstances{ + MinCount: 1, + ImageId: imageId, + InstanceType: "t1.micro", + NetworkInterfaces: []ec2.RunNetworkInterface{{ + DeviceIndex: 0, + SubnetId: subId, + PrivateIPs: ips, + SecurityGroupIds: []string{group.Id}, + DeleteOnTermination: true, + }}, + }) + c.Assert(err, IsNil) + inst := &instResp.Instances[0] + + defer terminateInstances(c, s.ec2, []string{inst.InstanceId}) + + // Now list the network interfaces and find ours. + testAttempt := aws.AttemptStrategy{ + Total: 5 * time.Minute, + Delay: 5 * time.Second, + } + f := ec2.NewFilter() + f.Add("subnet-id", subId) + var newNIC *ec2.NetworkInterface + for a := testAttempt.Start(); a.Next(); { + c.Logf("waiting for NIC to become available") + listNICs, err := s.ec2.NetworkInterfaces(nil, f) + if err != nil { + c.Logf("retrying; NetworkInterfaces returned: %v", err) + continue + } + for _, iface := range listNICs.Interfaces { + c.Logf("found NIC %v", iface) + if iface.Attachment.InstanceId == inst.InstanceId { + c.Logf("instance %v new NIC appeared", inst.InstanceId) + newNIC = &iface + break + } + } + if newNIC != nil { + break + } + } + if newNIC == nil { + c.Fatalf("timeout while waiting for NIC to appear.") + } + c.Check(newNIC.Id, Matches, `^eni-[0-9a-f]+$`) + c.Check(newNIC.SubnetId, Equals, subId) + c.Check(newNIC.VPCId, Equals, vpcId) + c.Check(newNIC.Status, Matches, `^(attaching|in-use)$`) + c.Check(newNIC.PrivateIPAddress, Equals, ips[0].Address) + c.Check(newNIC.PrivateIPs, DeepEquals, ips) + c.Check(newNIC.Groups, HasLen, 1) + c.Check(newNIC.Groups[0].Id, Equals, group.Id) + c.Check(newNIC.Attachment.Status, Matches, `^(attaching|attached)$`) + c.Check(newNIC.Attachment.DeviceIndex, Equals, 0) + c.Check(newNIC.Attachment.DeleteOnTermination, Equals, true) +} + +func idsOnly(gs []ec2.SecurityGroup) []ec2.SecurityGroup { + for i := range gs { + gs[i].Name = "" + } + return gs +} + +func namesOnly(gs []ec2.SecurityGroup) []ec2.SecurityGroup { + for i := range gs { + gs[i].Id = "" + } + return gs +} + +func (s *ServerTests) TestGroupFiltering(c *C) { + vpcResp, err := s.ec2.CreateVPC("10.5.0.0/16", "") + c.Assert(err, IsNil) + vpcId := vpcResp.VPC.Id + defer s.deleteVPCs(c, []string{vpcId}) + + subResp := s.createSubnet(c, vpcId, "10.5.1.0/24", "") + subId := subResp.Subnet.Id + defer s.deleteSubnets(c, []string{subId}) + + g := make([]ec2.SecurityGroup, 5) + for i := range g { + var resp *ec2.CreateSecurityGroupResp + gid := sessionName(fmt.Sprintf("testgroup%d", i)) + desc := fmt.Sprintf("testdescription%d", i) + if i == 0 { + // Create the first one as a VPC group. + gid += " vpc" + desc += " vpc" + resp, err = s.ec2.CreateSecurityGroupVPC(vpcId, gid, desc) + } else { + resp, err = s.ec2.CreateSecurityGroup(gid, desc) + } + c.Assert(err, IsNil) + g[i] = resp.SecurityGroup + c.Logf("group %d: %v", i, g[i]) + } + // Reorder the groups below, so that g[3] is first (some of the + // reset depend on it, so they can't be deleted before g[3]). A + // slight optimization for local live tests, so that we don't need + // to wait 5s each time deleteGroups runs. + defer s.deleteGroups(c, []ec2.SecurityGroup{g[3], g[0], g[1], g[2], g[4]}) + + perms := [][]ec2.IPPerm{ + {{ + Protocol: "tcp", + FromPort: 100, + ToPort: 200, + SourceIPs: []string{"1.2.3.4/32"}, + }}, + {{ + Protocol: "tcp", + FromPort: 200, + ToPort: 300, + SourceGroups: []ec2.UserSecurityGroup{{Id: g[2].Id}}, + }}, + {{ + Protocol: "udp", + FromPort: 200, + ToPort: 400, + SourceGroups: []ec2.UserSecurityGroup{{Id: g[2].Id}}, + }}, + } + for i, ps := range perms { + _, err := s.ec2.AuthorizeSecurityGroup(g[i+1], ps) + c.Assert(err, IsNil) + } + + groups := func(indices ...int) (gs []ec2.SecurityGroup) { + for _, index := range indices { + gs = append(gs, g[index]) + } + return + } + + type groupTest struct { + about string + groups []ec2.SecurityGroup // groupIds argument to SecurityGroups method. + filters []filterSpec // filters argument to SecurityGroups method. + results []ec2.SecurityGroup // set of expected result groups. + allowExtra bool // specified results may be incomplete. + err string // expected error. + } + filterCheck := func(name, val string, gs []ec2.SecurityGroup) groupTest { + return groupTest{ + about: "filter check " + name, + filters: []filterSpec{{name, []string{val}}}, + results: gs, + allowExtra: true, + } + } + tests := []groupTest{ + { + about: "check that SecurityGroups returns all groups", + results: groups(0, 1, 2, 3, 4), + allowExtra: true, + }, { + about: "check that specifying two group ids returns them", + groups: idsOnly(groups(0, 2)), + results: groups(0, 2), + }, { + about: "check that specifying names only works", + groups: namesOnly(groups(1, 2)), + results: groups(1, 2), + }, { + about: "check that specifying a non-existent group id gives an error", + groups: append(groups(0), ec2.SecurityGroup{Id: "sg-eeeeeeeee"}), + err: `.*\(InvalidGroup\.NotFound\)`, + }, { + about: "check that a filter allowed two groups returns both of them", + filters: []filterSpec{ + {"group-id", []string{g[0].Id, g[2].Id}}, + }, + results: groups(0, 2), + }, + { + about: "check that the previous filter works when specifying a list of ids", + groups: groups(1, 2), + filters: []filterSpec{ + {"group-id", []string{g[0].Id, g[2].Id}}, + }, + results: groups(2), + }, { + about: "check that a filter allowing no groups returns none", + filters: []filterSpec{ + {"group-id", []string{"sg-eeeeeeeee"}}, + }, + }, + filterCheck("description", "testdescription1", groups(1)), + filterCheck("group-name", g[2].Name, groups(2)), + filterCheck("ip-permission.cidr", "1.2.3.4/32", groups(1)), + filterCheck("ip-permission.group-name", g[2].Name, groups(2, 3)), + filterCheck("ip-permission.protocol", "udp", groups(3)), + filterCheck("ip-permission.from-port", "200", groups(2, 3)), + filterCheck("ip-permission.to-port", "200", groups(1)), + filterCheck("vpc-id", vpcId, groups(0)), + // TODO owner-id + } + for i, t := range tests { + c.Logf("%d. %s", i, t.about) + var f *ec2.Filter + if t.filters != nil { + f = ec2.NewFilter() + for _, spec := range t.filters { + f.Add(spec.name, spec.values...) + } + } + resp, err := s.ec2.SecurityGroups(t.groups, f) + if t.err != "" { + c.Check(err, ErrorMatches, t.err) + continue + } + c.Assert(err, IsNil) + groups := make(map[string]*ec2.SecurityGroup) + for j := range resp.Groups { + group := &resp.Groups[j].SecurityGroup + c.Check(groups[group.Id], IsNil, Commentf("duplicate group id: %q", group.Id)) + + groups[group.Id] = group + } + // If extra groups may be returned, eliminate all groups that + // we did not create in this session apart from the default group. + if t.allowExtra { + namePat := regexp.MustCompile(sessionName("testgroup[0-9]")) + for id, g := range groups { + if !namePat.MatchString(g.Name) { + delete(groups, id) + } + } + } + c.Check(groups, HasLen, len(t.results)) + for j, g := range t.results { + rg := groups[g.Id] + c.Assert(rg, NotNil, Commentf("group %d (%v) not found; got %#v", j, g, groups)) + c.Check(rg.Name, Equals, g.Name, Commentf("group %d (%v)", j, g)) + } + } +} + +// deleteGroups ensures the given groups are deleted, by retrying +// until a timeout or all groups cannot be found anymore. +// This should be used to make sure tests leave no groups around. +func (s *ServerTests) deleteGroups(c *C, groups []ec2.SecurityGroup) { + testAttempt := aws.AttemptStrategy{ + Total: 2 * time.Minute, + Delay: 5 * time.Second, + } + for a := testAttempt.Start(); a.Next(); { + deleted := 0 + c.Logf("deleting groups %v", groups) + for _, group := range groups { + _, err := s.ec2.DeleteSecurityGroup(group) + if err == nil || errorCode(err) == "InvalidGroup.NotFound" { + c.Logf("group %v deleted", group) + deleted++ + continue + } + if err != nil { + c.Logf("retrying; DeleteSecurityGroup returned: %v", err) + } + } + if deleted == len(groups) { + c.Logf("all groups deleted") + return + } + } + c.Fatalf("timeout while waiting %v groups to get deleted!", groups) +} + +// errorCode returns the code of the given error, assuming it's not +// nil and it's an instance of *ec2.Error. It returns an empty string +// otherwise. +func errorCode(err error) string { + if err, _ := err.(*ec2.Error); err != nil { + return err.Code + } + return "" +} diff --git a/vendor/src/launchpad.net/goamz/ec2/ec2test/filter.go b/vendor/src/launchpad.net/goamz/ec2/ec2test/filter.go new file mode 100644 index 0000000000..1a0c046193 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/ec2test/filter.go @@ -0,0 +1,84 @@ +package ec2test + +import ( + "fmt" + "net/url" + "strings" +) + +// filter holds an ec2 filter. A filter maps an attribute to a set of +// possible values for that attribute. For an item to pass through the +// filter, every attribute of the item mentioned in the filter must match +// at least one of its given values. +type filter map[string][]string + +// newFilter creates a new filter from the Filter fields in the url form. +// +// The filtering is specified through a map of name=>values, where the +// name is a well-defined key identifying the data to be matched, +// and the list of values holds the possible values the filtered +// item can take for the key to be included in the +// result set. For example: +// +// Filter.1.Name=instance-type +// Filter.1.Value.1=m1.small +// Filter.1.Value.2=m1.large +// +func newFilter(form url.Values) filter { + // TODO return an error if the fields are not well formed? + names := make(map[int]string) + values := make(map[int][]string) + maxId := 0 + for name, fvalues := range form { + var rest string + var id int + if x, _ := fmt.Sscanf(name, "Filter.%d.%s", &id, &rest); x != 2 { + continue + } + if id > maxId { + maxId = id + } + if rest == "Name" { + names[id] = fvalues[0] + continue + } + if !strings.HasPrefix(rest, "Value.") { + continue + } + values[id] = append(values[id], fvalues[0]) + } + + f := make(filter) + for id, name := range names { + f[name] = values[id] + } + return f +} + +func notDigit(r rune) bool { + return r < '0' || r > '9' +} + +// filterable represents an object that can be passed through a filter. +type filterable interface { + // matchAttr returns true if given attribute of the + // object matches value. It returns an error if the + // attribute is not recognised or the value is malformed. + matchAttr(attr, value string) (bool, error) +} + +// ok returns true if x passes through the filter. +func (f filter) ok(x filterable) (bool, error) { +next: + for a, vs := range f { + for _, v := range vs { + if ok, err := x.matchAttr(a, v); ok { + continue next + } else if err != nil { + return false, fmt.Errorf("bad attribute or value %q=%q for type %T: %v", a, v, x, err) + } + } + return false, nil + } + return true, nil +} diff --git a/vendor/src/launchpad.net/goamz/ec2/ec2test/server.go b/vendor/src/launchpad.net/goamz/ec2/ec2test/server.go new file mode 100644 index 0000000000..f47886b67f --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/ec2test/server.go @@ -0,0 +1,2032 @@ +// The ec2test package implements a fake EC2 provider with +// the capability of inducing errors on any given operation, +// and retrospectively determining what operations have been +// carried out. +package ec2test + +import ( + "encoding/base64" + "encoding/xml" + "fmt" + "io" + "net" + "net/http" + "net/url" + "regexp" + "strconv" + "strings" + "sync" + "time" + + "launchpad.net/goamz/ec2" +) + +var b64 = base64.StdEncoding + +// Action represents a request that changes the ec2 state. +type Action struct { + RequestId string + + // Request holds the requested action as a url.Values instance + Request url.Values + + // If the action succeeded, Response holds the value that + // was marshalled to build the XML response for the request. + Response interface{} + + // If the action failed, Err holds an error giving details of the failure. + Err *ec2.Error +} + +// TODO possible other things: +// - some virtual time stamp interface, so a client +// can ask for all actions after a certain virtual time. + +// Server implements an EC2 simulator for use in testing. +type Server struct { + url string + listener net.Listener + mu sync.Mutex + reqs []*Action + + attributes map[string][]string // attr name -> values + instances map[string]*Instance // id -> instance + reservations map[string]*reservation // id -> reservation + groups map[string]*securityGroup // id -> group + zones []availabilityZone + vpcs map[string]*vpc // id -> vpc + subnets map[string]*subnet // id -> subnet + ifaces map[string]*iface // id -> iface + attachments map[string]*attachment // id -> attachment + maxId counter + reqId counter + reservationId counter + groupId counter + vpcId counter + dhcpOptsId counter + subnetId counter + ifaceId counter + attachId counter + initialInstanceState ec2.InstanceState +} + +// reservation holds a simulated ec2 reservation. +type reservation struct { + id string + instances map[string]*Instance + groups []*securityGroup +} + +// instance holds a simulated ec2 instance +type Instance struct { + seq int + dnsNameSet bool + // UserData holds the data that was passed to the RunInstances request + // when the instance was started. + UserData []byte + imageId string + reservation *reservation + instType string + availZone string + state ec2.InstanceState + subnetId string + vpcId string + ifaces []ec2.NetworkInterface +} + +// permKey represents permission for a given security +// group or IP address (but not both) to access a given range of +// ports. Equality of permKeys is used in the implementation of +// permission sets, relying on the uniqueness of securityGroup +// instances. +type permKey struct { + protocol string + fromPort int + toPort int + group *securityGroup + ipAddr string +} + +// securityGroup holds a simulated ec2 security group. +// Instances of securityGroup should only be created through +// Server.createSecurityGroup to ensure that groups can be +// compared by pointer value. +type securityGroup struct { + id string + name string + description string + vpcId string + + perms map[permKey]bool +} + +func (g *securityGroup) ec2SecurityGroup() ec2.SecurityGroup { + return ec2.SecurityGroup{ + Name: g.name, + Id: g.id, + } +} + +func (g *securityGroup) matchAttr(attr, value string) (ok bool, err error) { + switch attr { + case "description": + return g.description == value, nil + case "group-id": + return g.id == value, nil + case "group-name": + return g.name == value, nil + case "ip-permission.cidr": + return g.hasPerm(func(k permKey) bool { return k.ipAddr == value }), nil + case "ip-permission.group-name": + return g.hasPerm(func(k permKey) bool { + return k.group != nil && k.group.name == value + }), nil + case "ip-permission.from-port": + port, err := strconv.Atoi(value) + if err != nil { + return false, err + } + return g.hasPerm(func(k permKey) bool { return k.fromPort == port }), nil + case "ip-permission.to-port": + port, err := strconv.Atoi(value) + if err != nil { + return false, err + } + return g.hasPerm(func(k permKey) bool { return k.toPort == port }), nil + case "ip-permission.protocol": + return g.hasPerm(func(k permKey) bool { return k.protocol == value }), nil + case "owner-id": + return value == ownerId, nil + case "vpc-id": + return g.vpcId == value, nil + } + return false, fmt.Errorf("unknown attribute %q", attr) +} + +func (g *securityGroup) hasPerm(test func(k permKey) bool) bool { + for k := range g.perms { + if test(k) { + return true + } + } + return false +} + +// ec2Perms returns the list of EC2 permissions granted +// to g. It groups permissions by port range and protocol. +func (g *securityGroup) ec2Perms() (perms []ec2.IPPerm) { + // The grouping is held in result. We use permKey for convenience, + // (ensuring that the group and ipAddr of each key is zero). For + // each protocol/port range combination, we build up the permission + // set in the associated value. + result := make(map[permKey]*ec2.IPPerm) + for k := range g.perms { + groupKey := k + groupKey.group = nil + groupKey.ipAddr = "" + + ec2p := result[groupKey] + if ec2p == nil { + ec2p = &ec2.IPPerm{ + Protocol: k.protocol, + FromPort: k.fromPort, + ToPort: k.toPort, + } + result[groupKey] = ec2p + } + if k.group != nil { + ec2p.SourceGroups = append(ec2p.SourceGroups, + ec2.UserSecurityGroup{ + Id: k.group.id, + Name: k.group.name, + OwnerId: ownerId, + }) + } else { + ec2p.SourceIPs = append(ec2p.SourceIPs, k.ipAddr) + } + } + for _, ec2p := range result { + perms = append(perms, *ec2p) + } + return +} + +type vpc struct { + ec2.VPC +} + +func (v *vpc) matchAttr(attr, value string) (ok bool, err error) { + switch attr { + case "cidr": + return v.CIDRBlock == value, nil + case "state": + return v.State == value, nil + case "vpc-id": + return v.Id == value, nil + case "tag", "tag-key", "tag-value", "dhcp-options-id", "isDefault": + return false, fmt.Errorf("%q filter is not implemented", attr) + } + return false, fmt.Errorf("unknown attribute %q", attr) +} + +type subnet struct { + ec2.Subnet +} + +func (s *subnet) matchAttr(attr, value string) (ok bool, err error) { + switch attr { + case "cidr": + return s.CIDRBlock == value, nil + case "availability-zone": + return s.AvailZone == value, nil + case "state": + return s.State == value, nil + case "subnet-id": + return s.Id == value, nil + case "vpc-id": + return s.VPCId == value, nil + case "defaultForAz", "default-for-az": + val, err := strconv.ParseBool(value) + if err != nil { + return false, fmt.Errorf("bad flag %q: %s", attr, value) + } + return s.DefaultForAZ == val, nil + case "tag", "tag-key", "tag-value", "available-ip-address-count": + return false, fmt.Errorf("%q filter not implemented", attr) + } + return false, fmt.Errorf("unknown attribute %q", attr) +} + +type iface struct { + ec2.NetworkInterface +} + +func (i *iface) matchAttr(attr, value string) (ok bool, err error) { + notImplemented := []string{ + "addresses.", "association.", "tag", "requester-", + "attachment.", "source-dest-check", "mac-address", + "group-", "description", "private-", "owner-id", + } + switch attr { + case "availability-zone": + return i.AvailZone == value, nil + case "network-interface-id": + return i.Id == value, nil + case "status": + return i.Status == value, nil + case "subnet-id": + return i.SubnetId == value, nil + case "vpc-id": + return i.VPCId == value, nil + default: + for _, item := range notImplemented { + if strings.HasPrefix(attr, item) { + return false, fmt.Errorf("%q filter not implemented", attr) + } + } + } + return false, fmt.Errorf("unknown attribute %q", attr) +} + +func (srv *Server) addPrivateIPs(nic *iface, numToAdd int, addrs []string) error { + for _, addr := range addrs { + newIP := ec2.PrivateIP{Address: addr, IsPrimary: false} + nic.PrivateIPs = append(nic.PrivateIPs, newIP) + } + if numToAdd == 0 { + // Nothing more to do. + return nil + } + firstIP := "" + if len(nic.PrivateIPs) > 0 { + firstIP = nic.PrivateIPs[len(nic.PrivateIPs)-1].Address + } else { + // Find the primary IP, if available, otherwise use + // the subnet CIDR to generate a valid IP to use. + firstIP = nic.PrivateIPAddress + if firstIP == "" { + sub := srv.subnets[nic.SubnetId] + if sub == nil { + return fmt.Errorf("NIC %q uses invalid subnet id: %v", nic.Id, nic.SubnetId) + } + netIP, _, err := net.ParseCIDR(sub.CIDRBlock) + if err != nil { + return fmt.Errorf("subnet %q has bad CIDR: %v", sub.Id, err) + } + firstIP = netIP.String() + } + } + ip := net.ParseIP(firstIP) + for i := 0; i < numToAdd; i++ { + ip[len(ip)-1] += 1 + newIP := ec2.PrivateIP{Address: ip.String(), IsPrimary: false} + nic.PrivateIPs = append(nic.PrivateIPs, newIP) + } + return nil +} + +func (srv *Server) removePrivateIP(nic *iface, addr string) error { + for i, privateIP := range nic.PrivateIPs { + if privateIP.Address == addr { + // Remove it, preserving order. + nic.PrivateIPs = append(nic.PrivateIPs[:i], nic.PrivateIPs[i+1:]...) + return nil + } + } + return fmt.Errorf("NIC %q does not have IP %q to remove", nic.Id, addr) +} + +type attachment struct { + ec2.NetworkInterfaceAttachment +} + +var actions = map[string]func(*Server, http.ResponseWriter, *http.Request, string) interface{}{ + "RunInstances": (*Server).runInstances, + "TerminateInstances": (*Server).terminateInstances, + "DescribeInstances": (*Server).describeInstances, + "CreateSecurityGroup": (*Server).createSecurityGroup, + "DescribeAvailabilityZones": (*Server).describeAvailabilityZones, + "DescribeSecurityGroups": (*Server).describeSecurityGroups, + "DeleteSecurityGroup": (*Server).deleteSecurityGroup, + "AuthorizeSecurityGroupIngress": (*Server).authorizeSecurityGroupIngress, + "RevokeSecurityGroupIngress": (*Server).revokeSecurityGroupIngress, + "CreateVpc": (*Server).createVpc, + "DeleteVpc": (*Server).deleteVpc, + "DescribeVpcs": (*Server).describeVpcs, + "CreateSubnet": (*Server).createSubnet, + "DeleteSubnet": (*Server).deleteSubnet, + "DescribeSubnets": (*Server).describeSubnets, + "CreateNetworkInterface": (*Server).createIFace, + "DeleteNetworkInterface": (*Server).deleteIFace, + "DescribeNetworkInterfaces": (*Server).describeIFaces, + "AttachNetworkInterface": (*Server).attachIFace, + "DetachNetworkInterface": (*Server).detachIFace, + "DescribeAccountAttributes": (*Server).accountAttributes, + "AssignPrivateIpAddresses": (*Server).assignPrivateIP, + "UnassignPrivateIpAddresses": (*Server).unassignPrivateIP, +} + +const ( + ownerId = "9876" + defaultAvailZone = "us-east-1a" +) + +// newAction allocates a new action and adds it to the +// recorded list of server actions. +func (srv *Server) newAction() *Action { + srv.mu.Lock() + defer srv.mu.Unlock() + + a := new(Action) + srv.reqs = append(srv.reqs, a) + return a +} + +// NewServer returns a new server. +func NewServer() (*Server, error) { + srv := &Server{ + attributes: make(map[string][]string), + instances: make(map[string]*Instance), + groups: make(map[string]*securityGroup), + vpcs: make(map[string]*vpc), + subnets: make(map[string]*subnet), + ifaces: make(map[string]*iface), + attachments: make(map[string]*attachment), + reservations: make(map[string]*reservation), + initialInstanceState: Pending, + } + + // Add default security group. + g := &securityGroup{ + name: "default", + description: "default group", + id: fmt.Sprintf("sg-%d", srv.groupId.next()), + } + g.perms = map[permKey]bool{ + permKey{ + protocol: "icmp", + fromPort: -1, + toPort: -1, + group: g, + }: true, + permKey{ + protocol: "tcp", + fromPort: 0, + toPort: 65535, + group: g, + }: true, + permKey{ + protocol: "udp", + fromPort: 0, + toPort: 65535, + group: g, + }: true, + } + srv.groups[g.id] = g + + // Add a default availability zone. + var z availabilityZone + z.Name = defaultAvailZone + z.Region = "us-east-1" + z.State = "available" + srv.zones = []availabilityZone{z} + + l, err := net.Listen("tcp", "localhost:0") + if err != nil { + return nil, fmt.Errorf("cannot listen on localhost: %v", err) + } + srv.listener = l + + srv.url = "http://" + l.Addr().String() + + // we use HandlerFunc rather than *Server directly so that we + // can avoid exporting HandlerFunc from *Server. + go http.Serve(l, http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + srv.serveHTTP(w, req) + })) + return srv, nil +} + +// Quit closes down the server. +func (srv *Server) Quit() { + srv.listener.Close() +} + +// SetInitialInstanceState sets the state that any new instances will be started in. +func (srv *Server) SetInitialInstanceState(state ec2.InstanceState) { + srv.mu.Lock() + srv.initialInstanceState = state + srv.mu.Unlock() +} + +func (srv *Server) SetAvailabilityZones(zones []ec2.AvailabilityZoneInfo) { + srv.mu.Lock() + srv.zones = make([]availabilityZone, len(zones)) + for i, z := range zones { + srv.zones[i] = availabilityZone{z} + } + srv.mu.Unlock() +} + +// SetInitialAttributes sets the given account attributes on the server. +func (srv *Server) SetInitialAttributes(attrs map[string][]string) { + for attrName, values := range attrs { + srv.attributes[attrName] = values + if attrName == "default-vpc" { + // The default-vpc attribute was provided, so create the + // respective VPCs and their subnets. + for _, vpcId := range values { + srv.vpcs[vpcId] = &vpc{ec2.VPC{ + Id: vpcId, + State: "available", + CIDRBlock: "10.0.0.0/16", + DHCPOptionsId: fmt.Sprintf("dopt-%d", srv.dhcpOptsId.next()), + InstanceTenancy: "default", + IsDefault: true, + }} + subnetId := fmt.Sprintf("subnet-%d", srv.subnetId.next()) + cidrBlock := "10.10.0.0/20" + availIPs, _ := srv.calcSubnetAvailIPs(cidrBlock) + srv.subnets[subnetId] = &subnet{ec2.Subnet{ + Id: subnetId, + VPCId: vpcId, + State: "available", + CIDRBlock: cidrBlock, + AvailZone: "us-east-1b", + AvailableIPCount: availIPs, + DefaultForAZ: true, + }} + } + } + } +} + +// URL returns the URL of the server. +func (srv *Server) URL() string { + return srv.url +} + +// serveHTTP serves the EC2 protocol. +func (srv *Server) serveHTTP(w http.ResponseWriter, req *http.Request) { + req.ParseForm() + + a := srv.newAction() + a.RequestId = fmt.Sprintf("req%d", srv.reqId.next()) + a.Request = req.Form + + // Methods on Server that deal with parsing user data + // may fail. To save on error handling code, we allow these + // methods to call fatalf, which will panic with an *ec2.Error + // which will be caught here and returned + // to the client as a properly formed EC2 error. + defer func() { + switch err := recover().(type) { + case *ec2.Error: + a.Err = err + err.RequestId = a.RequestId + writeError(w, err) + case nil: + default: + panic(err) + } + }() + + f := actions[req.Form.Get("Action")] + if f == nil { + fatalf(400, "InvalidParameterValue", "Unrecognized Action") + } + + response := f(srv, w, req, a.RequestId) + a.Response = response + + w.Header().Set("Content-Type", `xml version="1.0" encoding="UTF-8"`) + xmlMarshal(w, response) +} + +// Instance returns the instance for the given instance id. +// It returns nil if there is no such instance. +func (srv *Server) Instance(id string) *Instance { + srv.mu.Lock() + defer srv.mu.Unlock() + return srv.instances[id] +} + +// writeError writes an appropriate error response. +// TODO how should we deal with errors when the +// error itself is potentially generated by backend-agnostic +// code? +func writeError(w http.ResponseWriter, err *ec2.Error) { + // Error encapsulates an error returned by EC2. + // TODO merge with ec2.Error when xml supports ignoring a field. + type ec2error struct { + Code string // EC2 error code ("UnsupportedOperation", ...) + Message string // The human-oriented error message + RequestId string + } + + type Response struct { + RequestId string + Errors []ec2error `xml:"Errors>Error"` + } + + w.Header().Set("Content-Type", `xml version="1.0" encoding="UTF-8"`) + w.WriteHeader(err.StatusCode) + xmlMarshal(w, Response{ + RequestId: err.RequestId, + Errors: []ec2error{{ + Code: err.Code, + Message: err.Message, + }}, + }) +} + +// xmlMarshal is the same as xml.Marshal except that +// it panics on error. The marshalling should not fail, +// but we want to know if it does. +func xmlMarshal(w io.Writer, x interface{}) { + if err := xml.NewEncoder(w).Encode(x); err != nil { + panic(fmt.Errorf("error marshalling %#v: %v", x, err)) + } +} + +// formToGroups parses a set of SecurityGroup form values +// as found in a RunInstances request, and returns the resulting +// slice of security groups. +// It calls fatalf if a group is not found. +func (srv *Server) formToGroups(form url.Values) []*securityGroup { + var groups []*securityGroup + for name, values := range form { + switch { + case strings.HasPrefix(name, "SecurityGroupId."): + if g := srv.groups[values[0]]; g != nil { + groups = append(groups, g) + } else { + fatalf(400, "InvalidGroup.NotFound", "unknown group id %q", values[0]) + } + case strings.HasPrefix(name, "SecurityGroup."): + var found *securityGroup + for _, g := range srv.groups { + if g.name == values[0] { + found = g + } + } + if found == nil { + fatalf(400, "InvalidGroup.NotFound", "unknown group name %q", values[0]) + } + groups = append(groups, found) + } + } + return groups +} + +// parseRunNetworkInterfaces parses any RunNetworkInterface parameters +// passed to RunInstances, and returns them, along with a +// limitToOneInstance flag. The flag is set only when an existing +// network interface id is specified, which according to the API +// limits the number of instances to 1. +func (srv *Server) parseRunNetworkInterfaces(req *http.Request) ([]ec2.RunNetworkInterface, bool) { + ifaces := []ec2.RunNetworkInterface{} + limitToOneInstance := false + for attr, vals := range req.Form { + if !strings.HasPrefix(attr, "NetworkInterface.") { + // Only process network interface params. + continue + } + fields := strings.Split(attr, ".") + if len(fields) < 3 || len(vals) != 1 { + fatalf(400, "InvalidParameterValue", "bad param %q: %v", attr, vals) + } + index := atoi(fields[1]) + // Field name format: NetworkInterface...... + for len(ifaces)-1 < index { + ifaces = append(ifaces, ec2.RunNetworkInterface{}) + } + iface := ifaces[index] + fieldName := fields[2] + switch fieldName { + case "NetworkInterfaceId": + // We're using an existing NIC, hence only a single + // instance can be launched. + id := vals[0] + if _, ok := srv.ifaces[id]; !ok { + fatalf(400, "InvalidNetworkInterfaceID.NotFound", "no such nic id %q", id) + } + iface.Id = id + limitToOneInstance = true + case "DeviceIndex": + // This applies both when creating a new NIC and when using an existing one. + iface.DeviceIndex = atoi(vals[0]) + case "SubnetId": + // We're creating a new NIC (from here on). + id := vals[0] + if _, ok := srv.subnets[id]; !ok { + fatalf(400, "InvalidSubnetID.NotFound", "no such subnet id %q", id) + } + iface.SubnetId = id + case "Description": + iface.Description = vals[0] + case "DeleteOnTermination": + val, err := strconv.ParseBool(vals[0]) + if err != nil { + fatalf(400, "InvalidParameterValue", "bad flag %s: %s", fieldName, vals[0]) + } + iface.DeleteOnTermination = val + case "PrivateIpAddress": + privateIP := ec2.PrivateIP{Address: vals[0], IsPrimary: true} + iface.PrivateIPs = append(iface.PrivateIPs, privateIP) + // When a single private IP address is explicitly specified, + // only one instance can be launched according to the API docs. + limitToOneInstance = true + case "SecondaryPrivateIpAddressCount": + iface.SecondaryPrivateIPCount = atoi(vals[0]) + case "PrivateIpAddresses": + // ...PrivateIpAddress..: vals[0] + if len(fields) < 4 { + fatalf(400, "InvalidParameterValue", "bad param %q: %v", attr, vals) + } + ipIndex := atoi(fields[3]) + for len(iface.PrivateIPs)-1 < ipIndex { + iface.PrivateIPs = append(iface.PrivateIPs, ec2.PrivateIP{}) + } + privateIP := iface.PrivateIPs[ipIndex] + subFieldName := fields[4] + switch subFieldName { + case "PrivateIpAddress": + privateIP.Address = vals[0] + case "Primary": + val, err := strconv.ParseBool(vals[0]) + if err != nil { + fatalf(400, "InvalidParameterValue", "bad flag %s: %s", subFieldName, vals[0]) + } + privateIP.IsPrimary = val + default: + fatalf(400, "InvalidParameterValue", "unknown field %s, subfield %s: %s", fieldName, subFieldName, vals[0]) + } + iface.PrivateIPs[ipIndex] = privateIP + case "SecurityGroupId": + // ...SecurityGroupId.<#>: + for _, sgId := range vals { + if _, ok := srv.groups[sgId]; !ok { + fatalf(400, "InvalidParameterValue", "no such security group id %q", sgId) + } + iface.SecurityGroupIds = append(iface.SecurityGroupIds, sgId) + } + default: + fatalf(400, "InvalidParameterValue", "unknown field %s: %s", fieldName, vals[0]) + } + ifaces[index] = iface + } + return ifaces, limitToOneInstance +} + +// getDefaultSubnet returns the first default subnet for the AZ in the +// default VPC (if available). +func (srv *Server) getDefaultSubnet() *subnet { + // We need to get the default VPC id and one of its subnets to use. + defaultVPCId := "" + for _, vpc := range srv.vpcs { + if vpc.IsDefault { + defaultVPCId = vpc.Id + break + } + } + if defaultVPCId == "" { + // No default VPC, so nothing to do. + return nil + } + for _, subnet := range srv.subnets { + if subnet.VPCId == defaultVPCId && subnet.DefaultForAZ { + return subnet + } + } + return nil +} + +// addDefaultNIC requests the creation of a default network interface +// for each instance to launch in RunInstances, using the given +// instance subnet, and it's called when no explicit NICs are given. +// It returns the populated RunNetworkInterface slice to add to +// RunInstances params. +func (srv *Server) addDefaultNIC(instSubnet *subnet) []ec2.RunNetworkInterface { + if instSubnet == nil { + // No subnet specified, nothing to do. + return nil + } + + ip, ipnet, err := net.ParseCIDR(instSubnet.CIDRBlock) + if err != nil { + panic(fmt.Sprintf("subnet %q has invalid CIDR: %v", instSubnet.Id, err.Error())) + } + // Just pick a valid subnet IP, it doesn't have to be unique + // across instances, as this is a testing server. + ip[len(ip)-1] = 5 + if !ipnet.Contains(ip) { + panic(fmt.Sprintf("%q does not contain IP %q", instSubnet.Id, ip)) + } + return []ec2.RunNetworkInterface{{ + Id: fmt.Sprintf("eni-%d", srv.ifaceId.next()), + DeviceIndex: 0, + Description: "created by ec2test server", + DeleteOnTermination: true, + PrivateIPs: []ec2.PrivateIP{ + {Address: ip.String(), IsPrimary: true}, + }, + }} +} + +// createNICsOnRun creates and returns any network interfaces +// specified in ifacesToCreate in the server for the given instance id +// and subnet. +func (srv *Server) createNICsOnRun(instId string, instSubnet *subnet, ifacesToCreate []ec2.RunNetworkInterface) []ec2.NetworkInterface { + if instSubnet == nil { + // No subnet specified, nothing to do. + return nil + } + + var createdNICs []ec2.NetworkInterface + for _, ifaceToCreate := range ifacesToCreate { + nicId := ifaceToCreate.Id + macAddress := fmt.Sprintf("20:%02x:60:cb:27:37", srv.ifaceId) + if nicId == "" { + // Simulate a NIC got created. + nicId = fmt.Sprintf("eni-%d", srv.ifaceId.next()) + macAddress = fmt.Sprintf("20:%02x:60:cb:27:37", srv.ifaceId) + } + groups := make([]ec2.SecurityGroup, len(ifaceToCreate.SecurityGroupIds)) + for i, sgId := range ifaceToCreate.SecurityGroupIds { + groups[i] = srv.group(ec2.SecurityGroup{Id: sgId}).ec2SecurityGroup() + } + // Find the primary private IP address for the NIC + // inside the PrivateIPs slice. + primaryIP := "" + privateDNSName := fmt.Sprintf("%s.internal.invalid", instId) + for i, ip := range ifaceToCreate.PrivateIPs { + if ip.IsPrimary { + primaryIP = ip.Address + ifaceToCreate.PrivateIPs[i].DNSName = privateDNSName + break + } + } + attach := ec2.NetworkInterfaceAttachment{ + Id: fmt.Sprintf("eni-attach-%d", srv.attachId.next()), + InstanceId: instId, + InstanceOwnerId: ownerId, + DeviceIndex: ifaceToCreate.DeviceIndex, + Status: "in-use", + AttachTime: time.Now().Format(time.RFC3339), + DeleteOnTermination: true, + } + srv.attachments[attach.Id] = &attachment{attach} + nic := ec2.NetworkInterface{ + Id: nicId, + SubnetId: instSubnet.Id, + VPCId: instSubnet.VPCId, + AvailZone: instSubnet.AvailZone, + Description: ifaceToCreate.Description, + OwnerId: ownerId, + Status: "in-use", + MACAddress: macAddress, + PrivateIPAddress: primaryIP, + PrivateDNSName: privateDNSName, + SourceDestCheck: true, + Groups: groups, + PrivateIPs: ifaceToCreate.PrivateIPs, + Attachment: attach, + } + srv.ifaces[nicId] = &iface{nic} + createdNICs = append(createdNICs, nic) + } + return createdNICs +} + +// runInstances implements the EC2 RunInstances entry point. +func (srv *Server) runInstances(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + min := atoi(req.Form.Get("MinCount")) + max := atoi(req.Form.Get("MaxCount")) + if min < 0 || max < 1 { + fatalf(400, "InvalidParameterValue", "bad values for MinCount or MaxCount") + } + if min > max { + fatalf(400, "InvalidParameterCombination", "MinCount is greater than MaxCount") + } + var userData []byte + if data := req.Form.Get("UserData"); data != "" { + var err error + userData, err = b64.DecodeString(data) + if err != nil { + fatalf(400, "InvalidParameterValue", "bad UserData value: %v", err) + } + } + + // TODO attributes still to consider: + // ImageId: accept anything, we can verify later + // KeyName ? + // InstanceType ? + // KernelId ? + // RamdiskId ? + // AvailZone ? + // GroupName tag + // Monitoring ignore? + // DisableAPITermination bool + // ShutdownBehavior string + // PrivateIPAddress string + + srv.mu.Lock() + defer srv.mu.Unlock() + + // make sure that form fields are correct before creating the reservation. + instType := req.Form.Get("InstanceType") + imageId := req.Form.Get("ImageId") + availZone := req.Form.Get("Placement.AvailabilityZone") + + r := srv.newReservation(srv.formToGroups(req.Form)) + + // If the user specifies an explicit subnet id, use it. + // Otherwise, get a subnet from the default VPC. + userSubnetId := req.Form.Get("SubnetId") + instSubnet := srv.subnets[userSubnetId] + if instSubnet == nil && userSubnetId != "" { + fatalf(400, "InvalidSubnetID.NotFound", "subnet %s not found", userSubnetId) + } + if userSubnetId == "" { + instSubnet = srv.getDefaultSubnet() + } + + // Handle network interfaces parsing. + ifacesToCreate, limitToOneInstance := srv.parseRunNetworkInterfaces(req) + if len(ifacesToCreate) > 0 && userSubnetId != "" { + // Since we have an instance-level subnet id + // specified, we cannot add network interfaces + // in the same request. See http://goo.gl/9aqbT9. + fatalf(400, "InvalidParameterCombination", "Network interfaces and an instance-level subnet ID may not be specified on the same request") + } + if limitToOneInstance { + max = 1 + } + if len(ifacesToCreate) == 0 { + // No NICs specified, so create a default one to simulate what + // EC2 does. + ifacesToCreate = srv.addDefaultNIC(instSubnet) + } + + var resp ec2.RunInstancesResp + resp.RequestId = reqId + resp.ReservationId = r.id + resp.OwnerId = ownerId + + for i := 0; i < max; i++ { + inst := srv.newInstance(r, instType, imageId, availZone, srv.initialInstanceState) + // Create any NICs on the instance subnet (if any), and then + // save the VPC and subnet ids on the instance, as EC2 does. + inst.ifaces = srv.createNICsOnRun(inst.id(), instSubnet, ifacesToCreate) + if instSubnet != nil { + inst.subnetId = instSubnet.Id + inst.vpcId = instSubnet.VPCId + } + inst.UserData = userData + resp.Instances = append(resp.Instances, inst.ec2instance()) + } + return &resp +} + +func (srv *Server) group(group ec2.SecurityGroup) *securityGroup { + if group.Id != "" { + return srv.groups[group.Id] + } + for _, g := range srv.groups { + if g.name == group.Name { + return g + } + } + return nil +} + +// NewInstancesVPC creates n new VPC instances in srv with the given +// instance type, image ID, initial state, and security groups, +// belonging to the given vpcId and subnetId. If any group does not +// already exist, it will be created. NewInstancesVPC returns the ids +// of the new instances. +// +// If vpcId and subnetId are both empty, this call is equivalent to +// calling NewInstances. +func (srv *Server) NewInstancesVPC(vpcId, subnetId string, n int, instType string, imageId string, state ec2.InstanceState, groups []ec2.SecurityGroup) []string { + srv.mu.Lock() + defer srv.mu.Unlock() + + rgroups := make([]*securityGroup, len(groups)) + for i, group := range groups { + g := srv.group(group) + if g == nil { + fatalf(400, "InvalidGroup.NotFound", "no such group %v", g) + } + rgroups[i] = g + } + r := srv.newReservation(rgroups) + + ids := make([]string, n) + for i := 0; i < n; i++ { + inst := srv.newInstance(r, instType, imageId, defaultAvailZone, state) + inst.vpcId = vpcId + inst.subnetId = subnetId + ids[i] = inst.id() + } + return ids +} + +// NewInstances creates n new instances in srv with the given instance +// type, image ID, initial state, and security groups. If any group +// does not already exist, it will be created. NewInstances returns +// the ids of the new instances. +func (srv *Server) NewInstances(n int, instType string, imageId string, state ec2.InstanceState, groups []ec2.SecurityGroup) []string { + return srv.NewInstancesVPC("", "", n, instType, imageId, state, groups) +} + +func (srv *Server) newInstance(r *reservation, instType string, imageId string, availZone string, state ec2.InstanceState) *Instance { + inst := &Instance{ + seq: srv.maxId.next(), + instType: instType, + imageId: imageId, + availZone: availZone, + state: state, + reservation: r, + } + id := inst.id() + srv.instances[id] = inst + r.instances[id] = inst + return inst +} + +func (srv *Server) newReservation(groups []*securityGroup) *reservation { + r := &reservation{ + id: fmt.Sprintf("r-%d", srv.reservationId.next()), + instances: make(map[string]*Instance), + groups: groups, + } + + srv.reservations[r.id] = r + return r +} + +func (srv *Server) terminateInstances(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + srv.mu.Lock() + defer srv.mu.Unlock() + var resp ec2.TerminateInstancesResp + resp.RequestId = reqId + var insts []*Instance + for attr, vals := range req.Form { + if strings.HasPrefix(attr, "InstanceId.") { + id := vals[0] + inst := srv.instances[id] + if inst == nil { + fatalf(400, "InvalidInstanceID.NotFound", "no such instance id %q", id) + } + insts = append(insts, inst) + } + } + for _, inst := range insts { + resp.StateChanges = append(resp.StateChanges, inst.terminate()) + } + return &resp +} + +func (inst *Instance) id() string { + return fmt.Sprintf("i-%d", inst.seq) +} + +func (inst *Instance) terminate() (d ec2.InstanceStateChange) { + d.PreviousState = inst.state + inst.state = ShuttingDown + d.CurrentState = inst.state + d.InstanceId = inst.id() + return d +} + +func (inst *Instance) ec2instance() ec2.Instance { + id := inst.id() + // The first time the instance is returned, its DNSName + // will be empty. The client should then refresh the instance. + var dnsName string + if inst.dnsNameSet { + dnsName = fmt.Sprintf("%s.testing.invalid", id) + } else { + inst.dnsNameSet = true + } + return ec2.Instance{ + InstanceId: id, + InstanceType: inst.instType, + ImageId: inst.imageId, + DNSName: dnsName, + PrivateDNSName: fmt.Sprintf("%s.internal.invalid", id), + IPAddress: fmt.Sprintf("8.0.0.%d", inst.seq%256), + PrivateIPAddress: fmt.Sprintf("127.0.0.%d", inst.seq%256), + State: inst.state, + AvailZone: inst.availZone, + VPCId: inst.vpcId, + SubnetId: inst.subnetId, + NetworkInterfaces: inst.ifaces, + // TODO the rest + } +} + +func (inst *Instance) matchAttr(attr, value string) (ok bool, err error) { + switch attr { + case "architecture": + return value == "i386", nil + case "availability-zone": + return value == inst.availZone, nil + case "instance-id": + return inst.id() == value, nil + case "subnet-id": + return inst.subnetId == value, nil + case "vpc-id": + return inst.vpcId == value, nil + case "instance.group-id", "group-id": + for _, g := range inst.reservation.groups { + if g.id == value { + return true, nil + } + } + return false, nil + case "instance.group-name", "group-name": + for _, g := range inst.reservation.groups { + if g.name == value { + return true, nil + } + } + return false, nil + case "image-id": + return value == inst.imageId, nil + case "instance-state-code": + code, err := strconv.Atoi(value) + if err != nil { + return false, err + } + return code&0xff == inst.state.Code, nil + case "instance-state-name": + return value == inst.state.Name, nil + } + return false, fmt.Errorf("unknown attribute %q", attr) +} + +var ( + Pending = ec2.InstanceState{0, "pending"} + Running = ec2.InstanceState{16, "running"} + ShuttingDown = ec2.InstanceState{32, "shutting-down"} + Terminated = ec2.InstanceState{16, "terminated"} + Stopped = ec2.InstanceState{16, "stopped"} +) + +func (srv *Server) createSecurityGroup(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + name := req.Form.Get("GroupName") + if name == "" { + fatalf(400, "InvalidParameterValue", "empty security group name") + } + srv.mu.Lock() + defer srv.mu.Unlock() + if srv.group(ec2.SecurityGroup{Name: name}) != nil { + fatalf(400, "InvalidGroup.Duplicate", "group %q already exists", name) + } + g := &securityGroup{ + name: name, + description: req.Form.Get("GroupDescription"), + id: fmt.Sprintf("sg-%d", srv.groupId.next()), + perms: make(map[permKey]bool), + } + vpcId := req.Form.Get("VpcId") + if vpcId != "" { + g.vpcId = vpcId + } + srv.groups[g.id] = g + // we define a local type for this because ec2.CreateSecurityGroupResp + // contains SecurityGroup, but the response to this request + // should not contain the security group name. + type CreateSecurityGroupResponse struct { + RequestId string `xml:"requestId"` + Return bool `xml:"return"` + GroupId string `xml:"groupId"` + } + r := &CreateSecurityGroupResponse{ + RequestId: reqId, + Return: true, + GroupId: g.id, + } + return r +} + +func (srv *Server) notImplemented(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + fatalf(500, "InternalError", "not implemented") + panic("not reached") +} + +func (srv *Server) describeInstances(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + srv.mu.Lock() + defer srv.mu.Unlock() + insts := make(map[*Instance]bool) + for name, vals := range req.Form { + if !strings.HasPrefix(name, "InstanceId.") { + continue + } + inst := srv.instances[vals[0]] + if inst == nil { + fatalf(400, "InvalidInstanceID.NotFound", "instance %q not found", vals[0]) + } + insts[inst] = true + } + + f := newFilter(req.Form) + + var resp ec2.InstancesResp + resp.RequestId = reqId + for _, r := range srv.reservations { + var instances []ec2.Instance + var groups []ec2.SecurityGroup + for _, g := range r.groups { + groups = append(groups, g.ec2SecurityGroup()) + } + for _, inst := range r.instances { + if len(insts) > 0 && !insts[inst] { + continue + } + // make instances in state "shutting-down" to transition + // to "terminated" first, so we can simulate: shutdown, + // subsequent refresh of the state with Instances(), + // terminated. + if inst.state == ShuttingDown { + inst.state = Terminated + } + + ok, err := f.ok(inst) + if ok { + instance := inst.ec2instance() + instance.SecurityGroups = groups + instances = append(instances, instance) + } else if err != nil { + fatalf(400, "InvalidParameterValue", "describe instances: %v", err) + } + } + if len(instances) > 0 { + resp.Reservations = append(resp.Reservations, ec2.Reservation{ + ReservationId: r.id, + OwnerId: ownerId, + Instances: instances, + SecurityGroups: groups, + }) + } + } + return &resp +} + +func (srv *Server) describeSecurityGroups(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + // BUG similar bug to describeInstances, but for GroupName and GroupId + srv.mu.Lock() + defer srv.mu.Unlock() + + var groups []*securityGroup + for name, vals := range req.Form { + var g ec2.SecurityGroup + switch { + case strings.HasPrefix(name, "GroupName."): + g.Name = vals[0] + case strings.HasPrefix(name, "GroupId."): + g.Id = vals[0] + default: + continue + } + sg := srv.group(g) + if sg == nil { + fatalf(400, "InvalidGroup.NotFound", "no such group %v", g) + } + groups = append(groups, sg) + } + if len(groups) == 0 { + for _, g := range srv.groups { + groups = append(groups, g) + } + } + + f := newFilter(req.Form) + var resp ec2.SecurityGroupsResp + resp.RequestId = reqId + for _, group := range groups { + ok, err := f.ok(group) + if ok { + resp.Groups = append(resp.Groups, ec2.SecurityGroupInfo{ + OwnerId: ownerId, + SecurityGroup: group.ec2SecurityGroup(), + Description: group.description, + IPPerms: group.ec2Perms(), + }) + } else if err != nil { + fatalf(400, "InvalidParameterValue", "describe security groups: %v", err) + } + } + return &resp +} + +func (srv *Server) authorizeSecurityGroupIngress(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + srv.mu.Lock() + defer srv.mu.Unlock() + g := srv.group(ec2.SecurityGroup{ + Name: req.Form.Get("GroupName"), + Id: req.Form.Get("GroupId"), + }) + if g == nil { + fatalf(400, "InvalidGroup.NotFound", "group not found") + } + perms := srv.parsePerms(req) + + for _, p := range perms { + if g.perms[p] { + fatalf(400, "InvalidPermission.Duplicate", "Permission has already been authorized on the specified group") + } + } + for _, p := range perms { + g.perms[p] = true + } + return &ec2.SimpleResp{ + XMLName: xml.Name{"", "AuthorizeSecurityGroupIngressResponse"}, + RequestId: reqId, + } +} + +func (srv *Server) revokeSecurityGroupIngress(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + srv.mu.Lock() + defer srv.mu.Unlock() + g := srv.group(ec2.SecurityGroup{ + Name: req.Form.Get("GroupName"), + Id: req.Form.Get("GroupId"), + }) + if g == nil { + fatalf(400, "InvalidGroup.NotFound", "group not found") + } + perms := srv.parsePerms(req) + + // Note EC2 does not give an error if asked to revoke an authorization + // that does not exist. + for _, p := range perms { + delete(g.perms, p) + } + return &ec2.SimpleResp{ + XMLName: xml.Name{"", "RevokeSecurityGroupIngressResponse"}, + RequestId: reqId, + } +} + +var ( + secGroupPat = regexp.MustCompile(`^sg-[a-z0-9]+$`) + cidrIpPat = regexp.MustCompile(`^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/([0-9]+)$`) + ownerIdPat = regexp.MustCompile(`^[0-9]+$`) +) + +// parsePerms returns a slice of permKey values extracted +// from the permission fields in req. +func (srv *Server) parsePerms(req *http.Request) []permKey { + // perms maps an index found in the form to its associated + // IPPerm. For instance, the form value with key + // "IpPermissions.3.FromPort" will be stored in perms[3].FromPort + perms := make(map[int]ec2.IPPerm) + + type subgroupKey struct { + id1, id2 int + } + // Each IPPerm can have many source security groups. The form key + // for a source security group contains two indices: the index + // of the IPPerm and the sub-index of the security group. The + // sourceGroups map maps from a subgroupKey containing these + // two indices to the associated security group. For instance, + // the form value with key "IPPermissions.3.Groups.2.GroupName" + // will be stored in sourceGroups[subgroupKey{3, 2}].Name. + sourceGroups := make(map[subgroupKey]ec2.UserSecurityGroup) + + // For each value in the form we store its associated information in the + // above maps. The maps are necessary because the form keys may + // arrive in any order, and the indices are not + // necessarily sequential or even small. + for name, vals := range req.Form { + val := vals[0] + var id1 int + var rest string + if x, _ := fmt.Sscanf(name, "IpPermissions.%d.%s", &id1, &rest); x != 2 { + continue + } + ec2p := perms[id1] + switch { + case rest == "FromPort": + ec2p.FromPort = atoi(val) + case rest == "ToPort": + ec2p.ToPort = atoi(val) + case rest == "IpProtocol": + switch val { + case "tcp", "udp", "icmp": + ec2p.Protocol = val + default: + // check it's a well formed number + atoi(val) + ec2p.Protocol = val + } + case strings.HasPrefix(rest, "Groups."): + k := subgroupKey{id1: id1} + if x, _ := fmt.Sscanf(rest[len("Groups."):], "%d.%s", &k.id2, &rest); x != 2 { + continue + } + g := sourceGroups[k] + switch rest { + case "UserId": + // BUG if the user id is blank, this does not conform to the + // way that EC2 handles it - a specified but blank owner id + // can cause RevokeSecurityGroupIngress to fail with + // "group not found" even if the security group id has been + // correctly specified. + // By failing here, we ensure that we fail early in this case. + if !ownerIdPat.MatchString(val) { + fatalf(400, "InvalidUserID.Malformed", "Invalid user ID: %q", val) + } + g.OwnerId = val + case "GroupName": + g.Name = val + case "GroupId": + if !secGroupPat.MatchString(val) { + fatalf(400, "InvalidGroupId.Malformed", "Invalid group ID: %q", val) + } + g.Id = val + default: + fatalf(400, "UnknownParameter", "unknown parameter %q", name) + } + sourceGroups[k] = g + case strings.HasPrefix(rest, "IpRanges."): + var id2 int + if x, _ := fmt.Sscanf(rest[len("IpRanges."):], "%d.%s", &id2, &rest); x != 2 { + continue + } + switch rest { + case "CidrIp": + if !cidrIpPat.MatchString(val) { + fatalf(400, "InvalidPermission.Malformed", "Invalid IP range: %q", val) + } + ec2p.SourceIPs = append(ec2p.SourceIPs, val) + default: + fatalf(400, "UnknownParameter", "unknown parameter %q", name) + } + default: + fatalf(400, "UnknownParameter", "unknown parameter %q", name) + } + perms[id1] = ec2p + } + // Associate each set of source groups with its IPPerm. + for k, g := range sourceGroups { + p := perms[k.id1] + p.SourceGroups = append(p.SourceGroups, g) + perms[k.id1] = p + } + + // Now that we have built up the IPPerms we need, we check for + // parameter errors and build up a permKey for each permission, + // looking up security groups from srv as we do so. + var result []permKey + for _, p := range perms { + if p.FromPort > p.ToPort { + fatalf(400, "InvalidParameterValue", "invalid port range") + } + k := permKey{ + protocol: p.Protocol, + fromPort: p.FromPort, + toPort: p.ToPort, + } + for _, g := range p.SourceGroups { + if g.OwnerId != "" && g.OwnerId != ownerId { + fatalf(400, "InvalidGroup.NotFound", "group %q not found", g.Name) + } + var ec2g ec2.SecurityGroup + switch { + case g.Id != "": + ec2g.Id = g.Id + case g.Name != "": + ec2g.Name = g.Name + } + k.group = srv.group(ec2g) + if k.group == nil { + fatalf(400, "InvalidGroup.NotFound", "group %v not found", g) + } + result = append(result, k) + } + k.group = nil + for _, ip := range p.SourceIPs { + k.ipAddr = ip + result = append(result, k) + } + } + return result +} + +func (srv *Server) deleteSecurityGroup(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + srv.mu.Lock() + defer srv.mu.Unlock() + g := srv.group(ec2.SecurityGroup{ + Name: req.Form.Get("GroupName"), + Id: req.Form.Get("GroupId"), + }) + if g == nil { + fatalf(400, "InvalidGroup.NotFound", "group not found") + } + for _, r := range srv.reservations { + for _, h := range r.groups { + if h == g && r.hasRunningMachine() { + fatalf(500, "InvalidGroup.InUse", "group is currently in use by a running instance") + } + } + } + for _, sg := range srv.groups { + // If a group refers to itself, it's ok to delete it. + if sg == g { + continue + } + for k := range sg.perms { + if k.group == g { + fatalf(500, "InvalidGroup.InUse", "group is currently in use by group %q", sg.id) + } + } + } + + delete(srv.groups, g.id) + return &ec2.SimpleResp{ + XMLName: xml.Name{"", "DeleteSecurityGroupResponse"}, + RequestId: reqId, + } +} + +type availabilityZone struct { + ec2.AvailabilityZoneInfo +} + +func (z *availabilityZone) matchAttr(attr, value string) (ok bool, err error) { + switch attr { + case "message": + for _, m := range z.MessageSet { + if m == value { + return true, nil + } + } + return false, nil + case "region-name": + return z.Region == value, nil + case "state": + switch value { + case "available", "impaired", "unavailable": + return z.State == value, nil + } + return false, fmt.Errorf("invalid state %q", value) + case "zone-name": + return z.Name == value, nil + } + return false, fmt.Errorf("unknown attribute %q", attr) +} + +func (srv *Server) describeAvailabilityZones(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + srv.mu.Lock() + defer srv.mu.Unlock() + + f := newFilter(req.Form) + var resp ec2.AvailabilityZonesResp + resp.RequestId = reqId + for _, zone := range srv.zones { + ok, err := f.ok(&zone) + if ok { + resp.Zones = append(resp.Zones, zone.AvailabilityZoneInfo) + } else if err != nil { + fatalf(400, "InvalidParameterValue", "describe availability zones: %v", err) + } + } + return &resp +} + +func (srv *Server) createVpc(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + cidrBlock := parseCidr(req.Form.Get("CidrBlock")) + tenancy := req.Form.Get("InstanceTenancy") + if tenancy == "" { + tenancy = "default" + } + + srv.mu.Lock() + defer srv.mu.Unlock() + v := &vpc{ec2.VPC{ + Id: fmt.Sprintf("vpc-%d", srv.vpcId.next()), + State: "available", + CIDRBlock: cidrBlock, + DHCPOptionsId: fmt.Sprintf("dopt-%d", srv.dhcpOptsId.next()), + InstanceTenancy: tenancy, + }} + srv.vpcs[v.Id] = v + r := &ec2.CreateVPCResp{ + RequestId: reqId, + VPC: v.VPC, + } + return r +} + +func (srv *Server) deleteVpc(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + v := srv.vpc(req.Form.Get("VpcId")) + srv.mu.Lock() + defer srv.mu.Unlock() + + delete(srv.vpcs, v.Id) + return &ec2.SimpleResp{ + XMLName: xml.Name{"", "DeleteVpcResponse"}, + RequestId: reqId, + } +} + +func (srv *Server) describeVpcs(w http.ResponseWriter, req *http.Request, reqId string) interface{} { + srv.mu.Lock() + defer srv.mu.Unlock() + + idMap := parseIDs(req.Form, "VpcId.") + f := newFilter(req.Form) + var resp ec2.VPCsResp + resp.RequestId = reqId + for _, v := range srv.vpcs { + ok, err := f.ok(v) + _, known := idMap[v.Id] + if ok && (len(idMap) == 0 || known) { + resp.VPCs = append(resp.VPCs, v.VPC) + } else if err != nil { + fatalf(400, "InvalidParameterValue", "describe VPCs: %v", err) + } + } + return &resp +} + +func (srv *Server) calcSubnetAvailIPs(cidrBlock string) (int, error) { + _, ipnet, err := net.ParseCIDR(cidrBlock) + if err != nil { + return 0, err + } + // calculate the available IP addresses, removing the first 4 and + // the last, which are reserved by AWS. + maskOnes, maskBits := ipnet.Mask.Size() + return 1<item"` + Attachment NetworkInterfaceAttachment `xml:"attachment"` + Tags []Tag `xml:"tagSet>item"` + PrivateIPs []PrivateIP `xml:"privateIpAddressesSet>item"` +} + +// CreateNetworkInterface encapsulates options for the +// CreateNetworkInterface call. +// +// SubnetId is the only required field. +// +// One or more private IP addresses can be specified by using the +// PrivateIPs slice. Only one provided PrivateIP may be set as +// primary. +// +// If PrivateIPs is empty, EC2 selects a primary private IP from the +// subnet range. +// +// When SecondaryPrivateIPCount is non-zero, EC2 allocates that +// number of IP addresses from within the subnet range. The number of +// IP addresses you can assign to a network interface varies by +// instance type. +type CreateNetworkInterface struct { + SubnetId string + PrivateIPs []PrivateIP + SecondaryPrivateIPCount int + Description string + SecurityGroupIds []string +} + +// CreateNetworkInterfaceResp is the response to a +// CreateNetworkInterface request. +// +// See http://goo.gl/ze3VhA for more details. +type CreateNetworkInterfaceResp struct { + RequestId string `xml:"requestId"` + NetworkInterface NetworkInterface `xml:"networkInterface"` +} + +// CreateNetworkInterface creates a network interface in the specified +// subnet. +// +// See http://goo.gl/ze3VhA for more details. +func (ec2 *EC2) CreateNetworkInterface(opts CreateNetworkInterface) (resp *CreateNetworkInterfaceResp, err error) { + params := makeParamsVPC("CreateNetworkInterface") + params["SubnetId"] = opts.SubnetId + for i, ip := range opts.PrivateIPs { + prefix := fmt.Sprintf("PrivateIpAddresses.%d.", i+1) + params[prefix+"PrivateIpAddress"] = ip.Address + params[prefix+"Primary"] = strconv.FormatBool(ip.IsPrimary) + } + if opts.Description != "" { + params["Description"] = opts.Description + } + if opts.SecondaryPrivateIPCount > 0 { + count := strconv.Itoa(opts.SecondaryPrivateIPCount) + params["SecondaryPrivateIpAddressCount"] = count + } + for i, groupId := range opts.SecurityGroupIds { + params["SecurityGroupId."+strconv.Itoa(i+1)] = groupId + } + resp = &CreateNetworkInterfaceResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// DeleteNetworkInterface deletes the specified network interface, +// which must have been previously detached. +// +// See http://goo.gl/MC1yOj for more details. +func (ec2 *EC2) DeleteNetworkInterface(id string) (resp *SimpleResp, err error) { + params := makeParamsVPC("DeleteNetworkInterface") + params["NetworkInterfaceId"] = id + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// NetworkInterfacesResp is the response to a NetworkInterfaces +// request. +// +// See http://goo.gl/2LcXtM for more details. +type NetworkInterfacesResp struct { + RequestId string `xml:"requestId"` + Interfaces []NetworkInterface `xml:"networkInterfaceSet>item"` +} + +// NetworkInterfaces returns a list of network interfaces. +// +// If the ids or filter parameters are provided, only matching +// interfaces are returned. +// +// See http://goo.gl/2LcXtM for more details. +func (ec2 *EC2) NetworkInterfaces(ids []string, filter *Filter) (resp *NetworkInterfacesResp, err error) { + params := makeParamsVPC("DescribeNetworkInterfaces") + for i, id := range ids { + params["NetworkInterfaceId."+strconv.Itoa(i+1)] = id + } + filter.addParams(params) + + resp = &NetworkInterfacesResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// AttachNetworkInterfaceResp is the response to an +// AttachNetworkInterface request. +// +// See http://goo.gl/rEbSii for more details. +type AttachNetworkInterfaceResp struct { + RequestId string `xml:"requestId"` + AttachmentId string `xml:"attachmentId"` +} + +// AttachNetworkInterface attaches a network interface to an instance. +// +// See http://goo.gl/rEbSii for more details. +func (ec2 *EC2) AttachNetworkInterface(interfaceId, instanceId string, deviceIndex int) (resp *AttachNetworkInterfaceResp, err error) { + params := makeParamsVPC("AttachNetworkInterface") + params["NetworkInterfaceId"] = interfaceId + params["InstanceId"] = instanceId + params["DeviceIndex"] = strconv.Itoa(deviceIndex) + resp = &AttachNetworkInterfaceResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// DetachNetworkInterface detaches a network interface from an +// instance. +// +// See http://goo.gl/0Xc1px for more details. +func (ec2 *EC2) DetachNetworkInterface(attachmentId string, force bool) (resp *SimpleResp, err error) { + params := makeParamsVPC("DetachNetworkInterface") + params["AttachmentId"] = attachmentId + if force { + // Force is optional. + params["Force"] = "true" + } + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/vendor/src/launchpad.net/goamz/ec2/networkinterfaces_test.go b/vendor/src/launchpad.net/goamz/ec2/networkinterfaces_test.go new file mode 100644 index 0000000000..9af1c521a4 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/networkinterfaces_test.go @@ -0,0 +1,360 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2014 Canonical Ltd. +// + +package ec2_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" + . "launchpad.net/gocheck" + "time" +) + +// Network interface tests with example responses + +func (s *S) TestCreateNetworkInterfaceExample(c *C) { + testServer.Response(200, nil, CreateNetworkInterfaceExample) + + resp, err := s.ec2.CreateNetworkInterface(ec2.CreateNetworkInterface{ + SubnetId: "subnet-b2a249da", + PrivateIPs: []ec2.PrivateIP{ + {Address: "10.0.2.157", IsPrimary: true}, + }, + SecurityGroupIds: []string{"sg-1a2b3c4d"}, + }) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"CreateNetworkInterface"}) + c.Assert(req.Form["SubnetId"], DeepEquals, []string{"subnet-b2a249da"}) + c.Assert(req.Form["PrivateIpAddress"], HasLen, 0) + c.Assert( + req.Form["PrivateIpAddresses.1.PrivateIpAddress"], + DeepEquals, + []string{"10.0.2.157"}, + ) + c.Assert( + req.Form["PrivateIpAddresses.1.Primary"], + DeepEquals, + []string{"true"}, + ) + c.Assert(req.Form["Description"], HasLen, 0) + c.Assert(req.Form["SecurityGroupId.1"], DeepEquals, []string{"sg-1a2b3c4d"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "8dbe591e-5a22-48cb-b948-dd0aadd55adf") + iface := resp.NetworkInterface + c.Check(iface.Id, Equals, "eni-cfca76a6") + c.Check(iface.SubnetId, Equals, "subnet-b2a249da") + c.Check(iface.VPCId, Equals, "vpc-c31dafaa") + c.Check(iface.AvailZone, Equals, "ap-southeast-1b") + c.Check(iface.Description, Equals, "") + c.Check(iface.OwnerId, Equals, "251839141158") + c.Check(iface.RequesterManaged, Equals, false) + c.Check(iface.Status, Equals, "available") + c.Check(iface.MACAddress, Equals, "02:74:b0:72:79:61") + c.Check(iface.PrivateIPAddress, Equals, "10.0.2.157") + c.Check(iface.SourceDestCheck, Equals, true) + c.Check(iface.Groups, DeepEquals, []ec2.SecurityGroup{ + {Id: "sg-1a2b3c4d", Name: "default"}, + }) + c.Check(iface.Tags, HasLen, 0) + c.Check(iface.PrivateIPs, DeepEquals, []ec2.PrivateIP{ + {Address: "10.0.2.157", IsPrimary: true}, + }) +} + +func (s *S) TestDeleteNetworkInterfaceExample(c *C) { + testServer.Response(200, nil, DeleteNetworkInterfaceExample) + + resp, err := s.ec2.DeleteNetworkInterface("eni-id") + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"DeleteNetworkInterface"}) + c.Assert(req.Form["NetworkInterfaceId"], DeepEquals, []string{"eni-id"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "e1c6d73b-edaa-4e62-9909-6611404e1739") +} + +func (s *S) TestNetworkInterfacesExample(c *C) { + testServer.Response(200, nil, DescribeNetworkInterfacesExample) + + ids := []string{"eni-0f62d866", "eni-a66ed5cf"} + resp, err := s.ec2.NetworkInterfaces(ids, nil) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeNetworkInterfaces"}) + c.Assert(req.Form["NetworkInterfaceId.1"], DeepEquals, []string{ids[0]}) + c.Assert(req.Form["NetworkInterfaceId.2"], DeepEquals, []string{ids[1]}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "fc45294c-006b-457b-bab9-012f5b3b0e40") + c.Check(resp.Interfaces, HasLen, 2) + iface := resp.Interfaces[0] + c.Check(iface.Id, Equals, ids[0]) + c.Check(iface.SubnetId, Equals, "subnet-c53c87ac") + c.Check(iface.VPCId, Equals, "vpc-cc3c87a5") + c.Check(iface.AvailZone, Equals, "ap-southeast-1b") + c.Check(iface.Description, Equals, "") + c.Check(iface.OwnerId, Equals, "053230519467") + c.Check(iface.RequesterManaged, Equals, false) + c.Check(iface.Status, Equals, "in-use") + c.Check(iface.MACAddress, Equals, "02:81:60:cb:27:37") + c.Check(iface.PrivateIPAddress, Equals, "10.0.0.146") + c.Check(iface.SourceDestCheck, Equals, true) + c.Check(iface.Groups, DeepEquals, []ec2.SecurityGroup{ + {Id: "sg-3f4b5653", Name: "default"}, + }) + c.Check(iface.Attachment, DeepEquals, ec2.NetworkInterfaceAttachment{ + Id: "eni-attach-6537fc0c", + InstanceId: "i-22197876", + InstanceOwnerId: "053230519467", + DeviceIndex: 0, + Status: "attached", + AttachTime: "2012-07-01T21:45:27.000Z", + DeleteOnTermination: true, + }) + c.Check(iface.PrivateIPs, DeepEquals, []ec2.PrivateIP{ + {Address: "10.0.0.146", IsPrimary: true}, + {Address: "10.0.0.148", IsPrimary: false}, + {Address: "10.0.0.150", IsPrimary: false}, + }) + c.Check(iface.Tags, HasLen, 0) + + iface = resp.Interfaces[1] + c.Check(iface.Id, Equals, ids[1]) + c.Check(iface.SubnetId, Equals, "subnet-cd8a35a4") + c.Check(iface.VPCId, Equals, "vpc-f28a359b") + c.Check(iface.AvailZone, Equals, "ap-southeast-1b") + c.Check(iface.Description, Equals, "Primary network interface") + c.Check(iface.OwnerId, Equals, "053230519467") + c.Check(iface.RequesterManaged, Equals, false) + c.Check(iface.Status, Equals, "in-use") + c.Check(iface.MACAddress, Equals, "02:78:d7:00:8a:1e") + c.Check(iface.PrivateIPAddress, Equals, "10.0.1.233") + c.Check(iface.SourceDestCheck, Equals, true) + c.Check(iface.Groups, DeepEquals, []ec2.SecurityGroup{ + {Id: "sg-a2a0b2ce", Name: "quick-start-1"}, + }) + c.Check(iface.Attachment, DeepEquals, ec2.NetworkInterfaceAttachment{ + Id: "eni-attach-a99c57c0", + InstanceId: "i-886401dc", + InstanceOwnerId: "053230519467", + DeviceIndex: 0, + Status: "attached", + AttachTime: "2012-06-27T20:08:44.000Z", + DeleteOnTermination: true, + }) + c.Check(iface.PrivateIPs, DeepEquals, []ec2.PrivateIP{ + {Address: "10.0.1.233", IsPrimary: true}, + {Address: "10.0.1.20", IsPrimary: false}, + }) + c.Check(iface.Tags, HasLen, 0) +} + +func (s *S) TestAttachNetworkInterfaceExample(c *C) { + testServer.Response(200, nil, AttachNetworkInterfaceExample) + + resp, err := s.ec2.AttachNetworkInterface("eni-id", "i-id", 0) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"AttachNetworkInterface"}) + c.Assert(req.Form["NetworkInterfaceId"], DeepEquals, []string{"eni-id"}) + c.Assert(req.Form["InstanceId"], DeepEquals, []string{"i-id"}) + c.Assert(req.Form["DeviceIndex"], DeepEquals, []string{"0"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "ace8cd1e-e685-4e44-90fb-92014d907212") + c.Assert(resp.AttachmentId, Equals, "eni-attach-d94b09b0") +} + +func (s *S) TestDetachNetworkInterfaceExample(c *C) { + testServer.Response(200, nil, DetachNetworkInterfaceExample) + + resp, err := s.ec2.DetachNetworkInterface("eni-attach-id", true) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"DetachNetworkInterface"}) + c.Assert(req.Form["AttachmentId"], DeepEquals, []string{"eni-attach-id"}) + c.Assert(req.Form["Force"], DeepEquals, []string{"true"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "ce540707-0635-46bc-97da-33a8a362a0e8") +} + +// Network interface tests run against either a local test server or +// live on EC2. + +func (s *ServerTests) TestNetworkInterfaces(c *C) { + vpcResp, err := s.ec2.CreateVPC("10.3.0.0/16", "") + c.Assert(err, IsNil) + vpcId := vpcResp.VPC.Id + defer s.deleteVPCs(c, []string{vpcId}) + + subResp := s.createSubnet(c, vpcId, "10.3.1.0/24", "") + subId := subResp.Subnet.Id + defer s.deleteSubnets(c, []string{subId}) + + sg := s.makeTestGroupVPC(c, vpcId, "vpc-sg-1", "vpc test group1") + defer s.deleteGroups(c, []ec2.SecurityGroup{sg}) + + instList, err := s.ec2.RunInstances(&ec2.RunInstances{ + ImageId: imageId, + InstanceType: "t1.micro", + SubnetId: subId, + }) + c.Assert(err, IsNil) + inst := instList.Instances[0] + c.Assert(inst, NotNil) + instId := inst.InstanceId + defer terminateInstances(c, s.ec2, []string{instId}) + + ips1 := []ec2.PrivateIP{{Address: "10.3.1.10", IsPrimary: true}} + resp1, err := s.ec2.CreateNetworkInterface(ec2.CreateNetworkInterface{ + SubnetId: subId, + PrivateIPs: ips1, + Description: "My first iface", + }) + c.Assert(err, IsNil) + assertNetworkInterface(c, resp1.NetworkInterface, "", subId, ips1) + c.Check(resp1.NetworkInterface.Description, Equals, "My first iface") + id1 := resp1.NetworkInterface.Id + + ips2 := []ec2.PrivateIP{ + {Address: "10.3.1.20", IsPrimary: true}, + {Address: "10.3.1.22", IsPrimary: false}, + } + resp2, err := s.ec2.CreateNetworkInterface(ec2.CreateNetworkInterface{ + SubnetId: subId, + PrivateIPs: ips2, + SecurityGroupIds: []string{sg.Id}, + }) + c.Assert(err, IsNil) + assertNetworkInterface(c, resp2.NetworkInterface, "", subId, ips2) + c.Assert(resp2.NetworkInterface.Groups, DeepEquals, []ec2.SecurityGroup{sg}) + id2 := resp2.NetworkInterface.Id + + // We only check for the network interfaces we just created, + // because the user might have others in his account (when testing + // against the EC2 servers). In some cases it takes a short while + // until both interfaces are created, so we need to retry a few + // times to make sure. + testAttempt := aws.AttemptStrategy{ + Total: 5 * time.Minute, + Delay: 5 * time.Second, + } + var list *ec2.NetworkInterfacesResp + done := false + for a := testAttempt.Start(); a.Next(); { + c.Logf("waiting for %v to be created", []string{id1, id2}) + list, err = s.ec2.NetworkInterfaces(nil, nil) + if err != nil { + c.Logf("retrying; NetworkInterfaces returned: %v", err) + continue + } + found := 0 + for _, iface := range list.Interfaces { + c.Logf("found NIC %v", iface) + switch iface.Id { + case id1: + assertNetworkInterface(c, iface, id1, subId, ips1) + found++ + case id2: + assertNetworkInterface(c, iface, id2, subId, ips2) + found++ + } + if found == 2 { + done = true + break + } + } + if done { + c.Logf("all NICs were created") + break + } + } + if !done { + c.Fatalf("timeout while waiting for NICs %v", []string{id1, id2}) + } + + list, err = s.ec2.NetworkInterfaces([]string{id1}, nil) + c.Assert(err, IsNil) + c.Assert(list.Interfaces, HasLen, 1) + assertNetworkInterface(c, list.Interfaces[0], id1, subId, ips1) + + f := ec2.NewFilter() + f.Add("network-interface-id", id2) + list, err = s.ec2.NetworkInterfaces(nil, f) + c.Assert(err, IsNil) + c.Assert(list.Interfaces, HasLen, 1) + assertNetworkInterface(c, list.Interfaces[0], id2, subId, ips2) + + // Attachment might fail if the instance is not running yet, + // so we retry for a while until it succeeds. + var attResp *ec2.AttachNetworkInterfaceResp + for a := testAttempt.Start(); a.Next(); { + attResp, err = s.ec2.AttachNetworkInterface(id2, instId, 1) + if err != nil { + c.Logf("AttachNetworkInterface returned: %v; retrying...", err) + attResp = nil + continue + } + c.Logf("AttachNetworkInterface succeeded") + c.Check(attResp.AttachmentId, Not(Equals), "") + break + } + if attResp == nil { + c.Fatalf("timeout while waiting for AttachNetworkInterface to succeed") + } + + list, err = s.ec2.NetworkInterfaces([]string{id2}, nil) + c.Assert(err, IsNil) + att := list.Interfaces[0].Attachment + c.Check(att.Id, Equals, attResp.AttachmentId) + c.Check(att.InstanceId, Equals, instId) + c.Check(att.DeviceIndex, Equals, 1) + c.Check(att.Status, Matches, "(attaching|in-use)") + + _, err = s.ec2.DetachNetworkInterface(att.Id, true) + c.Check(err, IsNil) + + _, err = s.ec2.DeleteNetworkInterface(id1) + c.Assert(err, IsNil) + + // We might not be able to delete the interface until the + // detachment is completed, so we need to retry here as well. + for a := testAttempt.Start(); a.Next(); { + _, err = s.ec2.DeleteNetworkInterface(id2) + if err != nil { + c.Logf("DeleteNetworkInterface returned: %v; retrying...", err) + continue + } + c.Logf("DeleteNetworkInterface succeeded") + return + } + c.Fatalf("timeout while waiting for DeleteNetworkInterface to succeed") +} + +func assertNetworkInterface(c *C, obtained ec2.NetworkInterface, expectId, expectSubId string, expectIPs []ec2.PrivateIP) { + if expectId != "" { + c.Check(obtained.Id, Equals, expectId) + } else { + c.Check(obtained.Id, Matches, `^eni-[0-9a-f]+$`) + } + c.Check(obtained.Status, Matches, "(available|pending|in-use)") + if expectSubId != "" { + c.Check(obtained.SubnetId, Equals, expectSubId) + } else { + c.Check(obtained.SubnetId, Matches, `^subnet-[0-9a-f]+$`) + } + c.Check(obtained.Attachment, DeepEquals, ec2.NetworkInterfaceAttachment{}) + if len(expectIPs) > 0 { + c.Check(obtained.PrivateIPs, DeepEquals, expectIPs) + c.Check(obtained.PrivateIPAddress, DeepEquals, expectIPs[0].Address) + } +} diff --git a/vendor/src/launchpad.net/goamz/ec2/privateips.go b/vendor/src/launchpad.net/goamz/ec2/privateips.go new file mode 100644 index 0000000000..a4cd622b4f --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/privateips.go @@ -0,0 +1,67 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2014 Canonical Ltd. +// + +package ec2 + +import ( + "strconv" +) + +// AssignPrivateIPAddresses assigns secondary IP addresses to the +// network interface interfaceId. +// +// If secondaryIPCount is non-zero, ipAddresses must be nil, and the +// specified number of secondary IP addresses will be allocated within +// the subnet's CIDR block range. +// +// allowReassignment specifies whether to allow reassignment of +// addresses currently assigned to a different network interface. +// +// See http://goo.gl/MoeH0L more details. +func (ec2 *EC2) AssignPrivateIPAddresses(interfaceId string, ipAddresses []string, secondaryIPCount int, allowReassignment bool) (resp *SimpleResp, err error) { + params := makeParamsVPC("AssignPrivateIpAddresses") + params["NetworkInterfaceId"] = interfaceId + if secondaryIPCount > 0 { + params["SecondaryPrivateIpAddressCount"] = strconv.Itoa(secondaryIPCount) + } else { + for i, ip := range ipAddresses { + // PrivateIpAddress is zero indexed. + n := strconv.Itoa(i) + params["PrivateIpAddress."+n] = ip + } + } + if allowReassignment { + params["AllowReassignment"] = "true" + } + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// UnassignPrivateIPAddresses unassigns one or more secondary private +// IP addresses from a network interface. +// +// See http://goo.gl/RjGZdB for more details. +func (ec2 *EC2) UnassignPrivateIPAddresses(interfaceId string, ipAddresses []string) (resp *SimpleResp, err error) { + params := makeParamsVPC("UnassignPrivateIpAddresses") + params["NetworkInterfaceId"] = interfaceId + for i, ip := range ipAddresses { + // PrivateIpAddress is zero indexed. + n := strconv.Itoa(i) + params["PrivateIpAddress."+n] = ip + } + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/vendor/src/launchpad.net/goamz/ec2/privateips_test.go b/vendor/src/launchpad.net/goamz/ec2/privateips_test.go new file mode 100644 index 0000000000..9e49d8c0ab --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/privateips_test.go @@ -0,0 +1,177 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2014 Canonical Ltd. +// + +package ec2_test + +import ( + "strings" + "time" + + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" + . "launchpad.net/gocheck" +) + +// Private IP tests with example responses + +func (s *S) TestAssignPrivateIPAddressesExample(c *C) { + testServer.Response(200, nil, AssignPrivateIpAddressesExample) + + resp, err := s.ec2.AssignPrivateIPAddresses("eni-id", []string{"1.2.3.4", "4.3.2.1"}, 0, true) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"AssignPrivateIpAddresses"}) + c.Assert(req.Form["NetworkInterfaceId"], DeepEquals, []string{"eni-id"}) + c.Assert(req.Form["PrivateIpAddress.0"], DeepEquals, []string{"1.2.3.4"}) + c.Assert(req.Form["PrivateIpAddress.1"], DeepEquals, []string{"4.3.2.1"}) + c.Assert(req.Form["SecondaryPrivateIpAddressCount"], HasLen, 0) + c.Assert(req.Form["AllowReassignment"], DeepEquals, []string{"true"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +func (s *S) TestUnassignPrivateIPAddressesExample(c *C) { + testServer.Response(200, nil, UnassignPrivateIpAddressesExample) + + resp, err := s.ec2.UnassignPrivateIPAddresses("eni-id", []string{"1.2.3.4", "4.3.2.1"}) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"UnassignPrivateIpAddresses"}) + c.Assert(req.Form["NetworkInterfaceId"], DeepEquals, []string{"eni-id"}) + c.Assert(req.Form["PrivateIpAddress.0"], DeepEquals, []string{"1.2.3.4"}) + c.Assert(req.Form["PrivateIpAddress.1"], DeepEquals, []string{"4.3.2.1"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE") +} + +// Private IP tests run live against EC2. + +func (s *ServerTests) TestAssignUnassignPrivateIPs(c *C) { + vpcResp, err := s.ec2.CreateVPC("10.7.0.0/16", "") + c.Assert(err, IsNil) + vpcId := vpcResp.VPC.Id + defer s.deleteVPCs(c, []string{vpcId}) + + subResp := s.createSubnet(c, vpcId, "10.7.1.0/24", "") + subId := subResp.Subnet.Id + defer s.deleteSubnets(c, []string{subId}) + + // Launch a m1.medium instance, so we can later assign up to 6 + // private IPs per NIC. + instList, err := s.ec2.RunInstances(&ec2.RunInstances{ + ImageId: imageId, + InstanceType: "m1.medium", + SubnetId: subId, + }) + c.Assert(err, IsNil) + inst := instList.Instances[0] + c.Assert(inst, NotNil) + instId := inst.InstanceId + defer terminateInstances(c, s.ec2, []string{instId}) + + // We need to wait for the instance to change state to 'running', + // so its automatically created network interface on the created + // subnet will appear. + testAttempt := aws.AttemptStrategy{ + Total: 5 * time.Minute, + Delay: 5 * time.Second, + } + var newNIC *ec2.NetworkInterface + f := ec2.NewFilter() + f.Add("subnet-id", subId) + for a := testAttempt.Start(); a.Next(); { + resp, err := s.ec2.NetworkInterfaces(nil, f) + if err != nil { + c.Logf("NetworkInterfaces returned: %v; retrying...", err) + continue + } + for _, iface := range resp.Interfaces { + c.Logf("found NIC %v", iface) + if iface.Attachment.InstanceId == instId { + c.Logf("found instance %v NIC", instId) + newNIC = &iface + break + } + } + if newNIC != nil { + break + } + } + if newNIC == nil { + c.Fatalf("timeout while waiting for the NIC to appear") + } + + c.Check(newNIC.PrivateIPAddress, Matches, `^10\.7\.1\.\d+$`) + c.Check(newNIC.PrivateIPs, HasLen, 1) + + // Now let's try assigning some more private IPs. + ips := []string{"10.7.1.25", "10.7.1.30"} + _, err = s.ec2.AssignPrivateIPAddresses(newNIC.Id, ips, 0, false) + c.Assert(err, IsNil) + + expectIPs := append([]string{newNIC.PrivateIPAddress}, ips...) + s.waitForAddresses(c, newNIC.Id, expectIPs, false) + + // Try using SecondaryPrivateIPCount. + _, err = s.ec2.AssignPrivateIPAddresses(newNIC.Id, nil, 2, false) + c.Assert(err, IsNil) + + expectIPs = append(expectIPs, []string{"10.7.1.*", "10.7.1.*"}...) + ips = s.waitForAddresses(c, newNIC.Id, expectIPs, true) + + // And finally, unassign them all, except the primary. + _, err = s.ec2.UnassignPrivateIPAddresses(newNIC.Id, ips) + c.Assert(err, IsNil) + + expectIPs = []string{newNIC.PrivateIPAddress} + s.waitForAddresses(c, newNIC.Id, expectIPs, false) +} + +func (s *ServerTests) waitForAddresses(c *C, nicId string, ips []string, skipPrimary bool) []string { + // Wait for the given IPs to appear on the NIC, retrying if needed. + testAttempt := aws.AttemptStrategy{ + Total: 5 * time.Minute, + Delay: 5 * time.Second, + } + for a := testAttempt.Start(); a.Next(); { + c.Logf("waiting for %v IPs on NIC %v", ips, nicId) + resp, err := s.ec2.NetworkInterfaces([]string{nicId}, nil) + if err != nil { + c.Logf("NetworkInterfaces returned: %v; retrying...", err) + continue + } + if len(resp.Interfaces) != 1 { + c.Logf("found %d NICs; retrying", len(resp.Interfaces)) + continue + } + iface := resp.Interfaces[0] + if len(iface.PrivateIPs) != len(ips) { + c.Logf("addresses in %v: %v; still waiting", iface.Id, iface.PrivateIPs) + continue + } + + var foundIPs []string + for i, ip := range iface.PrivateIPs { + if strings.HasSuffix(ips[i], ".*") { + c.Check(ip.Address, Matches, ips[i]) + } else { + c.Check(ip.Address, Equals, ips[i]) + } + if skipPrimary && ip.IsPrimary { + continue + } + foundIPs = append(foundIPs, ip.Address) + } + c.Logf("all addresses updated") + return foundIPs + } + c.Fatalf("timeout while waiting for the IPs to get updated") + return nil +} diff --git a/vendor/src/launchpad.net/goamz/ec2/responses_test.go b/vendor/src/launchpad.net/goamz/ec2/responses_test.go new file mode 100644 index 0000000000..7b999c6a5f --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/responses_test.go @@ -0,0 +1,1030 @@ +package ec2_test + +var ErrorDump = ` + +UnsupportedOperation +AMIs with an instance-store root device are not supported for the instance type 't1.micro'. +0503f4e9-bbd6-483c-b54f-c4ae9f3b30f4 +` + +// http://goo.gl/Mcm3b +var RunInstancesExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + r-47a5402e + 999988887777 + + + sg-67ad940e + default + + + + + i-2ba64342 + ami-60a54009 + + 0 + pending + + + + example-key-name + 0 + m1.small + 2007-08-07T11:51:50.000Z + + us-east-1b + + + enabled + + paravirtual + subnet-id + vpc-id + true + + + xen + + + eni-c6bb50ae + subnet-id + vpc-id + eth0 + 111122223333 + in-use + 10.0.0.25 + 11:22:33:44:55:66 + true + + + sg-1 + vpc sg-1 + + + sg-2 + vpc sg-2 + + + + eni-attach-0326646a + 0 + attaching + 2011-12-20T08:29:31.000Z + true + + + + 10.0.0.25 + true + + + + + eni-id + subnet-id + vpc-id + + 111122223333 + in-use + 10.0.1.10 + 11:22:33:44:55:66 + true + + + sg-id + vpc default + + + + eni-attach-id + 1 + attaching + 2011-12-20T08:29:31.000Z + false + + + + 10.0.1.10 + true + + + 10.0.1.20 + false + + + + + + + i-2bc64242 + ami-60a54009 + + 0 + pending + + + + example-key-name + 1 + m1.small + 2007-08-07T11:51:50.000Z + + us-east-1b + + + enabled + + paravirtual + + + xen + + + i-2be64332 + ami-60a54009 + + 0 + pending + + + + example-key-name + 2 + m1.small + 2007-08-07T11:51:50.000Z + + us-east-1b + + + enabled + + paravirtual + + + xen + + + +` + +// http://goo.gl/3BKHj +var TerminateInstancesExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + + + i-3ea74257 + + 32 + shutting-down + + + 16 + running + + + + +` + +// http://goo.gl/mLbmw +var DescribeInstancesExample1 = ` + + 98e3c9a4-848c-4d6d-8e8a-b1bdEXAMPLE + + + r-b27e30d9 + 999988887777 + + + sg-67ad940e + default + + + + + i-c5cd56af + ami-1a2b3c4d + + 16 + running + + domU-12-31-39-10-56-34.compute-1.internal + ec2-174-129-165-232.compute-1.amazonaws.com + + GSG_Keypair + 0 + + m1.small + 2010-08-17T01:15:18.000Z + + us-east-1b + + + aki-94c527fd + ari-96c527ff + + disabled + + 10.198.85.190 + 174.129.165.232 + i386 + ebs + /dev/sda1 + + + /dev/sda1 + + vol-a082c1c9 + attached + 2010-08-17T01:15:21.000Z + false + + + + spot + sir-7a688402 + paravirtual + + + xen + + + sg-67ad940e + default + + + + + 854251627541 + + + r-b67e30dd + 999988887777 + + + sg-67ad940e + default + + + + + i-d9cd56b3 + ami-1a2b3c4d + + 16 + running + + domU-12-31-39-10-54-E5.compute-1.internal + ec2-184-73-58-78.compute-1.amazonaws.com + + GSG_Keypair + 0 + + m1.large + 2010-08-17T01:15:19.000Z + + us-east-1b + + + aki-94c527fd + ari-96c527ff + + disabled + + 10.198.87.19 + 184.73.58.78 + i386 + ebs + /dev/sda1 + + + /dev/sda1 + + vol-a282c1cb + attached + 2010-08-17T01:15:23.000Z + false + + + + spot + sir-55a3aa02 + paravirtual + + + xen + + + 854251627541 + + + +` + +// http://goo.gl/mLbmw +var DescribeInstancesExample2 = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + + + r-bc7e30d7 + 999988887777 + + + sg-67ad940e + default + + + + + i-c7cd56ad + ami-b232d0db + + 16 + running + + domU-12-31-39-01-76-06.compute-1.internal + ec2-72-44-52-124.compute-1.amazonaws.com + GSG_Keypair + 0 + + m1.small + 2010-08-17T01:15:16.000Z + + us-east-1b + + aki-94c527fd + ari-96c527ff + + disabled + + 10.255.121.240 + 72.44.52.124 + i386 + ebs + /dev/sda1 + + + /dev/sda1 + + vol-a482c1cd + attached + 2010-08-17T01:15:26.000Z + true + + + + paravirtual + + + + webserver + + + + stack + Production + + + xen + + + + + +` + +// http://goo.gl/V0U25 +var DescribeImagesExample = ` + + 4a4a27a2-2e7c-475d-b35b-ca822EXAMPLE + + + ami-a2469acf + aws-marketplace/example-marketplace-amzn-ami.1 + available + 123456789999 + true + + + a1b2c3d4e5f6g7h8i9j10k11 + marketplace + + + i386 + machine + aki-805ea7e9 + aws-marketplace + example-marketplace-amzn-ami.1 + Amazon Linux AMI i386 EBS + ebs + /dev/sda1 + + + /dev/sda1 + + snap-787e9403 + 8 + true + + + + paravirtual + xen + + + +` + +// http://goo.gl/ttcda +var CreateSnapshotExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + snap-78a54011 + vol-4d826724 + pending + 2008-05-07T12:51:50.000Z + 60% + 111122223333 + 10 + Daily Backup + +` + +// http://goo.gl/vwU1y +var DeleteSnapshotExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + +` + +// http://goo.gl/nkovs +var DescribeSnapshotsExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + + + snap-1a2b3c4d + vol-8875daef + pending + 2010-07-29T04:12:01.000Z + 30% + 111122223333 + 15 + Daily Backup + + + Purpose + demo_db_14_backup + + + + + +` + +// http://goo.gl/Eo7Yl +var CreateSecurityGroupExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + sg-67ad940e + +` + +// http://goo.gl/k12Uy +var DescribeSecurityGroupsExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + + + 999988887777 + WebServers + sg-67ad940e + Web Servers + + + tcp + 80 + 80 + + + + 0.0.0.0/0 + + + + + + + 999988887777 + RangedPortsBySource + sg-76abc467 + Group A + + + tcp + 6000 + 7000 + + + + + + + +` + +// A dump which includes groups within ip permissions. +var DescribeSecurityGroupsDump = ` + + + 87b92b57-cc6e-48b2-943f-f6f0e5c9f46c + + + 12345 + default + default group + + + icmp + -1 + -1 + + + 12345 + default + sg-67ad940e + + + + + + tcp + 0 + 65535 + + + 12345 + other + sg-76abc467 + + + + + + + + +` + +// http://goo.gl/QJJDO +var DeleteSecurityGroupExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + +` + +// http://goo.gl/u2sDJ +var AuthorizeSecurityGroupIngressExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + +` + +// http://goo.gl/Mz7xr +var RevokeSecurityGroupIngressExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + +` + +// http://goo.gl/Vmkqc +var CreateTagsExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + +` + +// http://goo.gl/awKeF +var StartInstancesExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + + + i-10a64379 + + 0 + pending + + + 80 + stopped + + + + +` + +// http://goo.gl/436dJ +var StopInstancesExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + + + i-10a64379 + + 64 + stopping + + + 16 + running + + + + +` + +// http://goo.gl/baoUf +var RebootInstancesExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + +` + +// http://goo.gl/ylxT4R +var DescribeAvailabilityZonesExample1 = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + + + us-east-1a + available + us-east-1 + + + + us-east-1b + available + us-east-1 + + + + us-east-1c + available + us-east-1 + + + + us-east-1d + available + us-east-1 + + + + +` + +// http://goo.gl/ylxT4R +var DescribeAvailabilityZonesExample2 = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + + + us-east-1a + impaired + us-east-1 + + + + us-east-1b + unavailable + us-east-1 + + us-east-1b is currently down for maintenance. + + + + +` + +// http://goo.gl/nkwjv +var CreateVpcExample = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + vpc-1a2b3c4d + pending + 10.0.0.0/16 + dopt-1a2b3c4d2 + default + + + +` + +// http://goo.gl/bcxtbf +var DeleteVpcExample = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + true + +` + +// http://goo.gl/Y5kHqG +var DescribeVpcsExample = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + + vpc-1a2b3c4d + available + 10.0.0.0/23 + dopt-7a8b9c2d + default + false + + + + +` + +// http://goo.gl/wLPhf +var CreateSubnetExample = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + subnet-9d4a7b6c + pending + vpc-1a2b3c4d + 10.0.1.0/24 + 251 + us-east-1a + + + +` + +// http://goo.gl/KmhcBM +var DeleteSubnetExample = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + true + +` + +// http://goo.gl/NTKQVI +var DescribeSubnetsExample = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + + subnet-9d4a7b6c + available + vpc-1a2b3c4d + 10.0.1.0/24 + 251 + us-east-1a + false + false + + + + subnet-6e7f829e + available + vpc-1a2b3c4d + 10.0.0.0/24 + 251 + us-east-1a + false + false + + + + +` + +// http://goo.gl/ze3VhA +var CreateNetworkInterfaceExample = ` + + 8dbe591e-5a22-48cb-b948-dd0aadd55adf + + eni-cfca76a6 + subnet-b2a249da + vpc-c31dafaa + ap-southeast-1b + + 251839141158 + false + available + 02:74:b0:72:79:61 + 10.0.2.157 + true + + + sg-1a2b3c4d + default + + + + + + 10.0.2.157 + true + + + + +` + +// http://goo.gl/MC1yOj +var DeleteNetworkInterfaceExample = ` + + e1c6d73b-edaa-4e62-9909-6611404e1739 + true + +` + +// http://goo.gl/2LcXtM +var DescribeNetworkInterfacesExample = ` + + fc45294c-006b-457b-bab9-012f5b3b0e40 + + + eni-0f62d866 + subnet-c53c87ac + vpc-cc3c87a5 + ap-southeast-1b + + 053230519467 + false + in-use + 02:81:60:cb:27:37 + 10.0.0.146 + true + + + sg-3f4b5653 + default + + + + eni-attach-6537fc0c + i-22197876 + 053230519467 + 0 + attached + 2012-07-01T21:45:27.000Z + true + + + + + 10.0.0.146 + true + + + 10.0.0.148 + false + + + 10.0.0.150 + false + + + + + eni-a66ed5cf + subnet-cd8a35a4 + vpc-f28a359b + ap-southeast-1b + Primary network interface + 053230519467 + false + in-use + 02:78:d7:00:8a:1e + 10.0.1.233 + true + + + sg-a2a0b2ce + quick-start-1 + + + + eni-attach-a99c57c0 + i-886401dc + 053230519467 + 0 + attached + 2012-06-27T20:08:44.000Z + true + + + + + 10.0.1.233 + true + + + 10.0.1.20 + false + + + + + +` + +// http://goo.gl/rEbSii +var AttachNetworkInterfaceExample = ` + + ace8cd1e-e685-4e44-90fb-92014d907212 + eni-attach-d94b09b0 + +` + +// http://goo.gl/0Xc1px +var DetachNetworkInterfaceExample = ` + + ce540707-0635-46bc-97da-33a8a362a0e8 + true + +` + +// http://goo.gl/MoeH0L +var AssignPrivateIpAddressesExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + +` + +// http://goo.gl/RjGZdB +var UnassignPrivateIpAddressesExample = ` + + 59dbff89-35bd-4eac-99ed-be587EXAMPLE + true + +` + +// http://goo.gl/hBc28j +var DescribeAccountAttributesExample = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + + supported-platforms + + + VPC + + + + + +` + +// http://goo.gl/hBc28j +var DescribeAccountAttributesExample2 = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + + default-vpc + + + vpc-xxxxxxxx + + + + + +` + +// http://goo.gl/hBc28j +var DescribeAccountAttributesExample3 = ` + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + + default-vpc + + + none + + + + + +` diff --git a/vendor/src/launchpad.net/goamz/ec2/sign.go b/vendor/src/launchpad.net/goamz/ec2/sign.go new file mode 100644 index 0000000000..3c0292feda --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/sign.go @@ -0,0 +1,42 @@ +package ec2 + +import ( + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "launchpad.net/goamz/aws" + "sort" + "strings" +) + +// ---------------------------------------------------------------------------- +// EC2 signing (http://goo.gl/fQmAN) + +var b64 = base64.StdEncoding + +func sign(auth aws.Auth, method, path string, params map[string]string, host string) { + params["AWSAccessKeyId"] = auth.AccessKey + params["SignatureVersion"] = "2" + params["SignatureMethod"] = "HmacSHA256" + + // AWS specifies that the parameters in a signed request must + // be provided in the natural order of the keys. This is distinct + // from the natural order of the encoded value of key=value. + // Percent and equals affect the sorting order. + var keys, sarray []string + for k, _ := range params { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + sarray = append(sarray, aws.Encode(k)+"="+aws.Encode(params[k])) + } + joined := strings.Join(sarray, "&") + payload := method + "\n" + host + "\n" + path + "\n" + joined + hash := hmac.New(sha256.New, []byte(auth.SecretKey)) + hash.Write([]byte(payload)) + signature := make([]byte, b64.EncodedLen(hash.Size())) + b64.Encode(signature, hash.Sum(nil)) + + params["Signature"] = string(signature) +} diff --git a/vendor/src/launchpad.net/goamz/ec2/sign_test.go b/vendor/src/launchpad.net/goamz/ec2/sign_test.go new file mode 100644 index 0000000000..36f16ea41f --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/sign_test.go @@ -0,0 +1,68 @@ +package ec2_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" + . "launchpad.net/gocheck" +) + +// EC2 ReST authentication docs: http://goo.gl/fQmAN + +var testAuth = aws.Auth{"user", "secret"} + +func (s *S) TestBasicSignature(c *C) { + params := map[string]string{} + ec2.Sign(testAuth, "GET", "/path", params, "localhost") + c.Assert(params["SignatureVersion"], Equals, "2") + c.Assert(params["SignatureMethod"], Equals, "HmacSHA256") + expected := "6lSe5QyXum0jMVc7cOUz32/52ZnL7N5RyKRk/09yiK4=" + c.Assert(params["Signature"], Equals, expected) +} + +func (s *S) TestParamSignature(c *C) { + params := map[string]string{ + "param1": "value1", + "param2": "value2", + "param3": "value3", + } + ec2.Sign(testAuth, "GET", "/path", params, "localhost") + expected := "XWOR4+0lmK8bD8CGDGZ4kfuSPbb2JibLJiCl/OPu1oU=" + c.Assert(params["Signature"], Equals, expected) +} + +func (s *S) TestManyParams(c *C) { + params := map[string]string{ + "param1": "value10", + "param2": "value2", + "param3": "value3", + "param4": "value4", + "param5": "value5", + "param6": "value6", + "param7": "value7", + "param8": "value8", + "param9": "value9", + "param10": "value1", + } + ec2.Sign(testAuth, "GET", "/path", params, "localhost") + expected := "di0sjxIvezUgQ1SIL6i+C/H8lL+U0CQ9frLIak8jkVg=" + c.Assert(params["Signature"], Equals, expected) +} + +func (s *S) TestEscaping(c *C) { + params := map[string]string{"Nonce": "+ +"} + ec2.Sign(testAuth, "GET", "/path", params, "localhost") + c.Assert(params["Nonce"], Equals, "+ +") + expected := "bqffDELReIqwjg/W0DnsnVUmfLK4wXVLO4/LuG+1VFA=" + c.Assert(params["Signature"], Equals, expected) +} + +func (s *S) TestSignatureExample1(c *C) { + params := map[string]string{ + "Timestamp": "2009-02-01T12:53:20+00:00", + "Version": "2007-11-07", + "Action": "ListDomains", + } + ec2.Sign(aws.Auth{"access", "secret"}, "GET", "/", params, "sdb.amazonaws.com") + expected := "okj96/5ucWBSc1uR2zXVfm6mDHtgfNv657rRtt/aunQ=" + c.Assert(params["Signature"], Equals, expected) +} diff --git a/vendor/src/launchpad.net/goamz/ec2/subnets.go b/vendor/src/launchpad.net/goamz/ec2/subnets.go new file mode 100644 index 0000000000..4014b41816 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/subnets.go @@ -0,0 +1,109 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2014 Canonical Ltd. +// + +package ec2 + +import ( + "strconv" +) + +// Subnet describes an Amazon VPC subnet. +// +// See http://goo.gl/CdkvO2 for more details. +type Subnet struct { + Id string `xml:"subnetId"` + State string `xml:"state"` + VPCId string `xml:"vpcId"` + CIDRBlock string `xml:"cidrBlock"` + AvailableIPCount int `xml:"availableIpAddressCount"` + AvailZone string `xml:"availabilityZone"` + DefaultForAZ bool `xml:"defaultForAz"` + MapPublicIPOnLaunch bool `xml:"mapPublicIpOnLaunch"` + Tags []Tag `xml:"tagSet>item"` +} + +// CreateSubnetResp is the response to a CreateSubnet request. +// +// See http://goo.gl/wLPhfI for more details. +type CreateSubnetResp struct { + RequestId string `xml:"requestId"` + Subnet Subnet `xml:"subnet"` +} + +// CreateSubnet creates a subnet in an existing VPC. +// +// The vpcId and cidrBlock parameters specify the VPC id and CIDR +// block respectively - these cannot be changed after creation. The +// subnet's CIDR block can be the same as the VPC's CIDR block +// (assuming a single subnet is wanted), or a subset of the VPC's CIDR +// block. If more than one subnet is created in a VPC, their CIDR +// blocks must not overlap. The smallest subnet (and VPC) that can be +// created uses a /28 netmask (16 IP addresses), and the largest uses +// a /16 netmask (65,536 IP addresses). +// +// availZone may be empty, an availability zone is automatically +// selected. +// +// See http://goo.gl/wLPhfI for more details. +func (ec2 *EC2) CreateSubnet(vpcId, cidrBlock, availZone string) (resp *CreateSubnetResp, err error) { + params := makeParamsVPC("CreateSubnet") + params["VpcId"] = vpcId + params["CidrBlock"] = cidrBlock + if availZone != "" { + params["AvailabilityZone"] = availZone + } + resp = &CreateSubnetResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// DeleteSubnet deletes the specified subnet. All running instances in +// the subnet must have been terminated. +// +// See http://goo.gl/KmhcBM for more details. +func (ec2 *EC2) DeleteSubnet(id string) (resp *SimpleResp, err error) { + params := makeParamsVPC("DeleteSubnet") + params["SubnetId"] = id + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// SubnetsResp is the response to a Subnets request. +// +// See http://goo.gl/NTKQVI for more details. +type SubnetsResp struct { + RequestId string `xml:"requestId"` + Subnets []Subnet `xml:"subnetSet>item"` +} + +// Subnets returns one or more subnets. Both parameters are optional, +// and if specified will limit the returned subnets to the matching +// ids or filtering rules. +// +// See http://goo.gl/NTKQVI for more details. +func (ec2 *EC2) Subnets(ids []string, filter *Filter) (resp *SubnetsResp, err error) { + params := makeParamsVPC("DescribeSubnets") + for i, id := range ids { + params["SubnetId."+strconv.Itoa(i+1)] = id + } + filter.addParams(params) + + resp = &SubnetsResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/vendor/src/launchpad.net/goamz/ec2/subnets_test.go b/vendor/src/launchpad.net/goamz/ec2/subnets_test.go new file mode 100644 index 0000000000..a897e1b507 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/subnets_test.go @@ -0,0 +1,247 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2014 Canonical Ltd. +// + +package ec2_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" + . "launchpad.net/gocheck" + "time" +) + +// Subnet tests with example responses + +func (s *S) TestCreateSubnetExample(c *C) { + testServer.Response(200, nil, CreateSubnetExample) + + resp, err := s.ec2.CreateSubnet("vpc-1a2b3c4d", "10.0.1.0/24", "us-east-1a") + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"CreateSubnet"}) + c.Assert(req.Form["VpcId"], DeepEquals, []string{"vpc-1a2b3c4d"}) + c.Assert(req.Form["CidrBlock"], DeepEquals, []string{"10.0.1.0/24"}) + c.Assert(req.Form["AvailabilityZone"], DeepEquals, []string{"us-east-1a"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + subnet := resp.Subnet + c.Check(subnet.Id, Equals, "subnet-9d4a7b6c") + c.Check(subnet.State, Equals, "pending") + c.Check(subnet.VPCId, Equals, "vpc-1a2b3c4d") + c.Check(subnet.CIDRBlock, Equals, "10.0.1.0/24") + c.Check(subnet.AvailableIPCount, Equals, 251) + c.Check(subnet.AvailZone, Equals, "us-east-1a") + c.Check(subnet.Tags, HasLen, 0) +} + +func (s *S) TestDeleteSubnetExample(c *C) { + testServer.Response(200, nil, DeleteSubnetExample) + + resp, err := s.ec2.DeleteSubnet("subnet-id") + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"DeleteSubnet"}) + c.Assert(req.Form["SubnetId"], DeepEquals, []string{"subnet-id"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} + +func (s *S) TestSubnetsExample(c *C) { + testServer.Response(200, nil, DescribeSubnetsExample) + + ids := []string{"subnet-9d4a7b6c", "subnet-6e7f829e"} + resp, err := s.ec2.Subnets(ids, nil) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeSubnets"}) + c.Assert(req.Form["SubnetId.1"], DeepEquals, []string{ids[0]}) + c.Assert(req.Form["SubnetId.2"], DeepEquals, []string{ids[1]}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + c.Check(resp.Subnets, HasLen, 2) + subnet := resp.Subnets[0] + c.Check(subnet.Id, Equals, "subnet-9d4a7b6c") + c.Check(subnet.State, Equals, "available") + c.Check(subnet.VPCId, Equals, "vpc-1a2b3c4d") + c.Check(subnet.CIDRBlock, Equals, "10.0.1.0/24") + c.Check(subnet.AvailableIPCount, Equals, 251) + c.Check(subnet.AvailZone, Equals, "us-east-1a") + c.Check(subnet.DefaultForAZ, Equals, false) + c.Check(subnet.MapPublicIPOnLaunch, Equals, false) + c.Check(subnet.Tags, HasLen, 0) + subnet = resp.Subnets[1] + c.Check(subnet.Id, Equals, "subnet-6e7f829e") + c.Check(subnet.State, Equals, "available") + c.Check(subnet.VPCId, Equals, "vpc-1a2b3c4d") + c.Check(subnet.CIDRBlock, Equals, "10.0.0.0/24") + c.Check(subnet.AvailableIPCount, Equals, 251) + c.Check(subnet.AvailZone, Equals, "us-east-1a") + c.Check(subnet.DefaultForAZ, Equals, false) + c.Check(subnet.MapPublicIPOnLaunch, Equals, false) + c.Check(subnet.Tags, HasLen, 0) +} + +// Subnet tests run against either a local test server or live on EC2. + +func (s *ServerTests) TestSubnets(c *C) { + resp, err := s.ec2.CreateVPC("10.2.0.0/16", "") + c.Assert(err, IsNil) + vpcId := resp.VPC.Id + defer s.deleteVPCs(c, []string{vpcId}) + + resp1 := s.createSubnet(c, vpcId, "10.2.1.0/24", "") + assertSubnet(c, resp1.Subnet, "", vpcId, "10.2.1.0/24") + id1 := resp1.Subnet.Id + + resp2, err := s.ec2.CreateSubnet(vpcId, "10.2.2.0/24", "") + c.Assert(err, IsNil) + assertSubnet(c, resp2.Subnet, "", vpcId, "10.2.2.0/24") + id2 := resp2.Subnet.Id + + // We only check for the subnets we just created, because the user + // might have others in his account (when testing against the EC2 + // servers). In some cases it takes a short while until both + // subnets are created, so we need to retry a few times to make + // sure. + testAttempt := aws.AttemptStrategy{ + Total: 2 * time.Minute, + Delay: 5 * time.Second, + } + var list *ec2.SubnetsResp + done := false + for a := testAttempt.Start(); a.Next(); { + c.Logf("waiting for %v to be created", []string{id1, id2}) + list, err = s.ec2.Subnets(nil, nil) + if err != nil { + c.Logf("retrying; Subnets returned: %v", err) + continue + } + found := 0 + for _, subnet := range list.Subnets { + c.Logf("found subnet %v", subnet) + switch subnet.Id { + case id1: + assertSubnet(c, subnet, id1, vpcId, resp1.Subnet.CIDRBlock) + found++ + case id2: + assertSubnet(c, subnet, id2, vpcId, resp2.Subnet.CIDRBlock) + found++ + } + if found == 2 { + done = true + break + } + } + if done { + c.Logf("all subnets were created") + break + } + } + if !done { + c.Fatalf("timeout while waiting for subnets %v", []string{id1, id2}) + } + + list, err = s.ec2.Subnets([]string{id1}, nil) + c.Assert(err, IsNil) + c.Assert(list.Subnets, HasLen, 1) + assertSubnet(c, list.Subnets[0], id1, vpcId, resp1.Subnet.CIDRBlock) + + f := ec2.NewFilter() + f.Add("cidr", resp2.Subnet.CIDRBlock) + list, err = s.ec2.Subnets(nil, f) + c.Assert(err, IsNil) + c.Assert(list.Subnets, HasLen, 1) + assertSubnet(c, list.Subnets[0], id2, vpcId, resp2.Subnet.CIDRBlock) + + _, err = s.ec2.DeleteSubnet(id1) + c.Assert(err, IsNil) + _, err = s.ec2.DeleteSubnet(id2) + c.Assert(err, IsNil) +} + +// createSubnet ensures a subnet with the given vpcId and cidrBlock +// gets created, retrying a few times with a timeout. This needs to be +// done when testing against EC2 servers, because if the VPC was just +// created it might take some time for it to show up, so the subnet +// can be created. +func (s *ServerTests) createSubnet(c *C, vpcId, cidrBlock, availZone string) *ec2.CreateSubnetResp { + testAttempt := aws.AttemptStrategy{ + Total: 2 * time.Minute, + Delay: 5 * time.Second, + } + for a := testAttempt.Start(); a.Next(); { + resp, err := s.ec2.CreateSubnet(vpcId, cidrBlock, availZone) + if errorCode(err) == "InvalidVpcID.NotFound" { + c.Logf("VPC %v not created yet; retrying", vpcId) + continue + } + if err != nil { + c.Logf("retrying; CreateSubnet returned: %v", err) + continue + } + return resp + } + c.Fatalf("timeout while waiting for VPC and subnet") + return nil +} + +// deleteSubnets ensures the given subnets are deleted, by retrying +// until a timeout or all subnets cannot be found anymore. This +// should be used to make sure tests leave no subnets around. +func (s *ServerTests) deleteSubnets(c *C, ids []string) { + testAttempt := aws.AttemptStrategy{ + Total: 2 * time.Minute, + Delay: 5 * time.Second, + } + for a := testAttempt.Start(); a.Next(); { + deleted := 0 + c.Logf("deleting subnets %v", ids) + for _, id := range ids { + _, err := s.ec2.DeleteSubnet(id) + if err == nil || errorCode(err) == "InvalidSubnetID.NotFound" { + c.Logf("subnet %s deleted", id) + deleted++ + continue + } + if err != nil { + c.Logf("retrying; DeleteSubnet returned: %v", err) + } + } + if deleted == len(ids) { + c.Logf("all subnets deleted") + return + } + } + c.Fatalf("timeout while waiting %v subnets to get deleted!", ids) +} + +func assertSubnet(c *C, obtained ec2.Subnet, expectId, expectVpcId, expectCidr string) { + if expectId != "" { + c.Check(obtained.Id, Equals, expectId) + } else { + c.Check(obtained.Id, Matches, `^subnet-[0-9a-f]+$`) + } + c.Check(obtained.State, Matches, "(available|pending)") + if expectVpcId != "" { + c.Check(obtained.VPCId, Equals, expectVpcId) + } else { + c.Check(obtained.VPCId, Matches, `^vpc-[0-9a-f]+$`) + } + if expectCidr != "" { + c.Check(obtained.CIDRBlock, Equals, expectCidr) + } else { + c.Check(obtained.CIDRBlock, Matches, `^\d+\.\d+\.\d+\.\d+/\d+$`) + } + c.Check(obtained.AvailZone, Not(Equals), "") + c.Check(obtained.AvailableIPCount, Not(Equals), 0) + c.Check(obtained.DefaultForAZ, Equals, false) + c.Check(obtained.MapPublicIPOnLaunch, Equals, false) +} diff --git a/vendor/src/launchpad.net/goamz/ec2/vpc.go b/vendor/src/launchpad.net/goamz/ec2/vpc.go new file mode 100644 index 0000000000..68ab434fb2 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/vpc.go @@ -0,0 +1,105 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2014 Canonical Ltd. +// + +package ec2 + +import ( + "strconv" +) + +// VPC describes a Virtual Private Cloud (VPC). +// +// See http://goo.gl/Uy6ZLL for more details. +type VPC struct { + Id string `xml:"vpcId"` + State string `xml:"state"` + CIDRBlock string `xml:"cidrBlock"` + DHCPOptionsId string `xml:"dhcpOptionsId"` + Tags []Tag `xml:"tagSet>item"` + InstanceTenancy string `xml:"instanceTenancy"` + IsDefault bool `xml:"isDefault"` +} + +// CreateVPCResp is the response to a CreateVPC request. +// +// See http://goo.gl/nkwjvN for more details. +type CreateVPCResp struct { + RequestId string `xml:"requestId"` + VPC VPC `xml:"vpc"` +} + +// CreateVPC creates a VPC with the specified CIDR block. +// +// The smallest VPC that can be created uses a /28 netmask (16 IP +// addresses), and the largest uses a /16 netmask (65,536 IP +// addresses). +// +// The instanceTenancy value holds the tenancy options for instances +// launched into the VPC - either "default" or "dedicated". +// +// See http://goo.gl/nkwjvN for more details. +func (ec2 *EC2) CreateVPC(CIDRBlock, instanceTenancy string) (resp *CreateVPCResp, err error) { + params := makeParamsVPC("CreateVpc") + params["CidrBlock"] = CIDRBlock + if instanceTenancy == "" { + instanceTenancy = "default" + } + params["InstanceTenancy"] = instanceTenancy + resp = &CreateVPCResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// DeleteVPC deletes the VPC with the specified id. All gateways and +// resources that are associated with the VPC must have been +// previously deleted, including instances running in the VPC, and +// non-default security groups and route tables associated with the +// VPC. +// +// See http://goo.gl/bcxtbf for more details. +func (ec2 *EC2) DeleteVPC(id string) (resp *SimpleResp, err error) { + params := makeParamsVPC("DeleteVpc") + params["VpcId"] = id + resp = &SimpleResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} + +// VPCsResp is the response to a VPCs request. +// +// See http://goo.gl/Y5kHqG for more details. +type VPCsResp struct { + RequestId string `xml:"requestId"` + VPCs []VPC `xml:"vpcSet>item"` +} + +// VPCs describes one or more VPCs. Both parameters are optional, and +// if specified will limit the returned VPCs to the matching ids or +// filtering rules. +// +// See http://goo.gl/Y5kHqG for more details. +func (ec2 *EC2) VPCs(ids []string, filter *Filter) (resp *VPCsResp, err error) { + params := makeParamsVPC("DescribeVpcs") + for i, id := range ids { + params["VpcId."+strconv.Itoa(i+1)] = id + } + filter.addParams(params) + + resp = &VPCsResp{} + err = ec2.query(params, resp) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/vendor/src/launchpad.net/goamz/ec2/vpc_test.go b/vendor/src/launchpad.net/goamz/ec2/vpc_test.go new file mode 100644 index 0000000000..6160e9a87a --- /dev/null +++ b/vendor/src/launchpad.net/goamz/ec2/vpc_test.go @@ -0,0 +1,196 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2014 Canonical Ltd. +// + +package ec2_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/ec2" + . "launchpad.net/gocheck" + "time" +) + +// VPC tests with example responses + +func (s *S) TestCreateVPCExample(c *C) { + testServer.Response(200, nil, CreateVpcExample) + + resp, err := s.ec2.CreateVPC("10.0.0.0/16", "default") + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"CreateVpc"}) + c.Assert(req.Form["CidrBlock"], DeepEquals, []string{"10.0.0.0/16"}) + c.Assert(req.Form["InstanceTenancy"], DeepEquals, []string{"default"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + vpc := resp.VPC + c.Check(vpc.Id, Equals, "vpc-1a2b3c4d") + c.Check(vpc.State, Equals, "pending") + c.Check(vpc.CIDRBlock, Equals, "10.0.0.0/16") + c.Check(vpc.DHCPOptionsId, Equals, "dopt-1a2b3c4d2") + c.Check(vpc.Tags, HasLen, 0) + c.Check(vpc.IsDefault, Equals, false) + c.Check(vpc.InstanceTenancy, Equals, "default") +} + +func (s *S) TestDeleteVPCExample(c *C) { + testServer.Response(200, nil, DeleteVpcExample) + + resp, err := s.ec2.DeleteVPC("vpc-id") + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"DeleteVpc"}) + c.Assert(req.Form["VpcId"], DeepEquals, []string{"vpc-id"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} + +func (s *S) TestVPCsExample(c *C) { + testServer.Response(200, nil, DescribeVpcsExample) + + resp, err := s.ec2.VPCs([]string{"vpc-1a2b3c4d"}, nil) + req := testServer.WaitRequest() + + c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeVpcs"}) + c.Assert(req.Form["VpcId.1"], DeepEquals, []string{"vpc-1a2b3c4d"}) + + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + c.Assert(resp.VPCs, HasLen, 1) + vpc := resp.VPCs[0] + c.Check(vpc.Id, Equals, "vpc-1a2b3c4d") + c.Check(vpc.State, Equals, "available") + c.Check(vpc.CIDRBlock, Equals, "10.0.0.0/23") + c.Check(vpc.DHCPOptionsId, Equals, "dopt-7a8b9c2d") + c.Check(vpc.Tags, HasLen, 0) + c.Check(vpc.IsDefault, Equals, false) + c.Check(vpc.InstanceTenancy, Equals, "default") +} + +// VPC tests to run against either a local test server or live on EC2. + +func (s *ServerTests) TestVPCs(c *C) { + resp1, err := s.ec2.CreateVPC("10.0.0.0/16", "") + c.Assert(err, IsNil) + assertVPC(c, resp1.VPC, "", "10.0.0.0/16") + id1 := resp1.VPC.Id + + resp2, err := s.ec2.CreateVPC("10.1.0.0/16", "default") + c.Assert(err, IsNil) + assertVPC(c, resp2.VPC, "", "10.1.0.0/16") + id2 := resp2.VPC.Id + + // We only check for the VPCs we just created, because the user + // might have others in his account (when testing against the EC2 + // servers). In some cases it takes a short while until both VPCs + // are created, so we need to retry a few times to make sure. + var list *ec2.VPCsResp + done := false + testAttempt := aws.AttemptStrategy{ + Total: 2 * time.Minute, + Delay: 5 * time.Second, + } + for a := testAttempt.Start(); a.Next(); { + c.Logf("waiting for %v to be created", []string{id1, id2}) + list, err = s.ec2.VPCs(nil, nil) + if err != nil { + c.Logf("retrying; VPCs returned: %v", err) + continue + } + found := 0 + for _, vpc := range list.VPCs { + c.Logf("found VPC %v", vpc) + switch vpc.Id { + case id1: + assertVPC(c, vpc, id1, resp1.VPC.CIDRBlock) + found++ + case id2: + assertVPC(c, vpc, id2, resp2.VPC.CIDRBlock) + found++ + } + if found == 2 { + done = true + break + } + } + if done { + c.Logf("all VPCs were created") + break + } + } + if !done { + c.Fatalf("timeout while waiting for VPCs %v", []string{id1, id2}) + } + + list, err = s.ec2.VPCs([]string{id1}, nil) + c.Assert(err, IsNil) + c.Assert(list.VPCs, HasLen, 1) + assertVPC(c, list.VPCs[0], id1, resp1.VPC.CIDRBlock) + + f := ec2.NewFilter() + f.Add("cidr", resp2.VPC.CIDRBlock) + list, err = s.ec2.VPCs(nil, f) + c.Assert(err, IsNil) + c.Assert(list.VPCs, HasLen, 1) + assertVPC(c, list.VPCs[0], id2, resp2.VPC.CIDRBlock) + + _, err = s.ec2.DeleteVPC(id1) + c.Assert(err, IsNil) + _, err = s.ec2.DeleteVPC(id2) + c.Assert(err, IsNil) +} + +// deleteVPCs ensures the given VPCs are deleted, by retrying until a +// timeout or all VPC cannot be found anymore. This should be used to +// make sure tests leave no VPCs around. +func (s *ServerTests) deleteVPCs(c *C, ids []string) { + testAttempt := aws.AttemptStrategy{ + Total: 2 * time.Minute, + Delay: 5 * time.Second, + } + for a := testAttempt.Start(); a.Next(); { + deleted := 0 + c.Logf("deleting VPCs %v", ids) + for _, id := range ids { + _, err := s.ec2.DeleteVPC(id) + if err == nil || errorCode(err) == "InvalidVpcID.NotFound" { + c.Logf("VPC %s deleted", id) + deleted++ + continue + } + if err != nil { + c.Logf("retrying; DeleteVPC returned: %v", err) + } + } + if deleted == len(ids) { + c.Logf("all VPCs deleted") + return + } + } + c.Fatalf("timeout while waiting %v VPCs to get deleted!", ids) +} + +func assertVPC(c *C, obtained ec2.VPC, expectId, expectCidr string) { + if expectId != "" { + c.Check(obtained.Id, Equals, expectId) + } else { + c.Check(obtained.Id, Matches, `^vpc-[0-9a-f]+$`) + } + c.Check(obtained.State, Matches, "(available|pending)") + if expectCidr != "" { + c.Check(obtained.CIDRBlock, Equals, expectCidr) + } else { + c.Check(obtained.CIDRBlock, Matches, `^\d+\.\d+\.\d+\.\d+/\d+$`) + } + c.Check(obtained.DHCPOptionsId, Matches, `^dopt-[0-9a-f]+$`) + c.Check(obtained.IsDefault, Equals, false) + c.Check(obtained.Tags, HasLen, 0) + c.Check(obtained.InstanceTenancy, Matches, "(default|dedicated)") +} diff --git a/vendor/src/launchpad.net/goamz/exp/mturk/export_test.go b/vendor/src/launchpad.net/goamz/exp/mturk/export_test.go new file mode 100644 index 0000000000..aca7771a19 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/mturk/export_test.go @@ -0,0 +1,9 @@ +package mturk + +import ( + "launchpad.net/goamz/aws" +) + +func Sign(auth aws.Auth, service, method, timestamp string, params map[string]string) { + sign(auth, service, method, timestamp, params) +} diff --git a/vendor/src/launchpad.net/goamz/exp/mturk/mturk.go b/vendor/src/launchpad.net/goamz/exp/mturk/mturk.go new file mode 100644 index 0000000000..fd8d8b1a41 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/mturk/mturk.go @@ -0,0 +1,281 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2011 Canonical Ltd. +// +// Written by Graham Miller + +// This package is in an experimental state, and does not currently +// follow conventions and style of the rest of goamz or common +// Go conventions. It must be polished before it's considered a +// first-class package in goamz. +package mturk + +import ( + "encoding/xml" + "errors" + "fmt" + "launchpad.net/goamz/aws" + "net/http" + //"net/http/httputil" + "net/url" + "strconv" + "time" +) + +type MTurk struct { + aws.Auth + URL *url.URL +} + +func New(auth aws.Auth) *MTurk { + mt := &MTurk{Auth: auth} + var err error + mt.URL, err = url.Parse("http://mechanicalturk.amazonaws.com/") + if err != nil { + panic(err.Error()) + } + return mt +} + +// ---------------------------------------------------------------------------- +// Request dispatching logic. + +// Error encapsulates an error returned by MTurk. +type Error struct { + StatusCode int // HTTP status code (200, 403, ...) + Code string // EC2 error code ("UnsupportedOperation", ...) + Message string // The human-oriented error message + RequestId string +} + +func (err *Error) Error() string { + return err.Message +} + +// The request stanza included in several response types, for example +// in a "CreateHITResponse". http://goo.gl/qGeKf +type xmlRequest struct { + RequestId string + IsValid string + Errors []Error `xml:"Errors>Error"` +} + +// Common price structure used in requests and responses +// http://goo.gl/tE4AV +type Price struct { + Amount string + CurrencyCode string + FormattedPrice string +} + +// Really just a country string +// http://goo.gl/mU4uG +type Locale string + +// Data structure used to specify requirements for the worker +// used in CreateHIT, for example +// http://goo.gl/LvRo9 +type QualificationRequirement struct { + QualificationTypeId string + Comparator string + IntegerValue int + LocaleValue Locale + RequiredToPreview string +} + +// Data structure holding the contents of an "external" +// question. http://goo.gl/NP8Aa +type ExternalQuestion struct { + XMLName xml.Name `xml:"http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsd ExternalQuestion"` + ExternalURL string + FrameHeight int +} + +// The data structure representing a "human interface task" (HIT) +// Currently only supports "external" questions, because Go +// structs don't support union types. http://goo.gl/NP8Aa +// This type is returned, for example, from SearchHITs +// http://goo.gl/PskcX +type HIT struct { + Request xmlRequest + + HITId string + HITTypeId string + CreationTime string + Title string + Description string + Keywords string + HITStatus string + Reward Price + LifetimeInSeconds uint + AssignmentDurationInSeconds uint + MaxAssignments uint + AutoApprovalDelayInSeconds uint + QualificationRequirement QualificationRequirement + Question ExternalQuestion + RequesterAnnotation string + NumberofSimilarHITs uint + HITReviewStatus string + NumberOfAssignmentsPending uint + NumberOfAssignmentsAvailable uint + NumberOfAssignmentsCompleted uint +} + +// The main data structure returned by SearchHITs +// http://goo.gl/PskcX +type SearchHITsResult struct { + NumResults uint + PageNumber uint + TotalNumResults uint + HITs []HIT `xml:"HIT"` +} + +// The wrapper data structure returned by SearchHITs +// http://goo.gl/PskcX +type SearchHITsResponse struct { + RequestId string `xml:"OperationRequest>RequestId"` + SearchHITsResult SearchHITsResult +} + +// The wrapper data structure returned by CreateHIT +// http://goo.gl/PskcX +type CreateHITResponse struct { + RequestId string `xml:"OperationRequest>RequestId"` + HIT HIT +} + +// Corresponds to the "CreateHIT" operation of the Mechanical Turk +// API. http://goo.gl/cDBRc Currently only supports "external" +// questions (see "HIT" struct above). If "keywords", "maxAssignments", +// "qualificationRequirement" or "requesterAnnotation" are the zero +// value for their types, they will not be included in the request. +func (mt *MTurk) CreateHIT(title, description string, question ExternalQuestion, reward Price, assignmentDurationInSeconds, lifetimeInSeconds uint, keywords string, maxAssignments uint, qualificationRequirement *QualificationRequirement, requesterAnnotation string) (h *HIT, err error) { + params := make(map[string]string) + params["Title"] = title + params["Description"] = description + params["Question"], err = xmlEncode(&question) + if err != nil { + return + } + params["Reward.1.Amount"] = reward.Amount + params["Reward.1.CurrencyCode"] = reward.CurrencyCode + params["AssignmentDurationInSeconds"] = strconv.FormatUint(uint64(assignmentDurationInSeconds), 10) + + params["LifetimeInSeconds"] = strconv.FormatUint(uint64(lifetimeInSeconds), 10) + if keywords != "" { + params["Keywords"] = keywords + } + if maxAssignments != 0 { + params["MaxAssignments"] = strconv.FormatUint(uint64(maxAssignments), 10) + } + if qualificationRequirement != nil { + params["QualificationRequirement"], err = xmlEncode(qualificationRequirement) + if err != nil { + return + } + } + if requesterAnnotation != "" { + params["RequesterAnnotation"] = requesterAnnotation + } + + var response CreateHITResponse + err = mt.query(params, "CreateHIT", &response) + if err == nil { + h = &response.HIT + } + return +} + +// Corresponds to the "CreateHIT" operation of the Mechanical Turk +// API, using an existing "hit type". http://goo.gl/cDBRc Currently only +// supports "external" questions (see "HIT" struct above). If +// "maxAssignments" or "requesterAnnotation" are the zero value for +// their types, they will not be included in the request. +func (mt *MTurk) CreateHITOfType(hitTypeId string, q ExternalQuestion, lifetimeInSeconds uint, maxAssignments uint, requesterAnnotation string) (h *HIT, err error) { + params := make(map[string]string) + params["HITTypeId"] = hitTypeId + params["Question"], err = xmlEncode(&q) + if err != nil { + return + } + params["LifetimeInSeconds"] = strconv.FormatUint(uint64(lifetimeInSeconds), 10) + if maxAssignments != 0 { + params["MaxAssignments"] = strconv.FormatUint(uint64(maxAssignments), 10) + } + if requesterAnnotation != "" { + params["RequesterAnnotation"] = requesterAnnotation + } + + var response CreateHITResponse + err = mt.query(params, "CreateHIT", &response) + if err == nil { + h = &response.HIT + } + return +} + +// Corresponds to "SearchHITs" operation of Mechanical Turk. http://goo.gl/PskcX +// Currenlty supports none of the optional parameters. +func (mt *MTurk) SearchHITs() (s *SearchHITsResult, err error) { + params := make(map[string]string) + var response SearchHITsResponse + err = mt.query(params, "SearchHITs", &response) + if err == nil { + s = &response.SearchHITsResult + } + return +} + +// Adds common parameters to the "params" map, signs the request, +// adds the signature to the "params" map and sends the request +// to the server. It then unmarshals the response in to the "resp" +// parameter using xml.Unmarshal() +func (mt *MTurk) query(params map[string]string, operation string, resp interface{}) error { + service := "AWSMechanicalTurkRequester" + timestamp := time.Now().UTC().Format("2006-01-02T15:04:05Z") + + params["AWSAccessKeyId"] = mt.Auth.AccessKey + params["Service"] = service + params["Timestamp"] = timestamp + params["Operation"] = operation + + // make a copy + url := *mt.URL + + sign(mt.Auth, service, operation, timestamp, params) + url.RawQuery = multimap(params).Encode() + r, err := http.Get(url.String()) + if err != nil { + return err + } + //dump, _ := httputil.DumpResponse(r, true) + //println("DUMP:\n", string(dump)) + if r.StatusCode != 200 { + return errors.New(fmt.Sprintf("%d: unexpected status code", r.StatusCode)) + } + dec := xml.NewDecoder(r.Body) + err = dec.Decode(resp) + r.Body.Close() + return err +} + +func multimap(p map[string]string) url.Values { + q := make(url.Values, len(p)) + for k, v := range p { + q[k] = []string{v} + } + return q +} + +func xmlEncode(i interface{}) (s string, err error) { + var buf []byte + buf, err = xml.Marshal(i) + if err != nil { + return + } + s = string(buf) + return +} diff --git a/vendor/src/launchpad.net/goamz/exp/mturk/mturk_test.go b/vendor/src/launchpad.net/goamz/exp/mturk/mturk_test.go new file mode 100644 index 0000000000..30351fe233 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/mturk/mturk_test.go @@ -0,0 +1,95 @@ +package mturk_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/exp/mturk" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" + "net/url" + "testing" +) + +func Test(t *testing.T) { + TestingT(t) +} + +var _ = Suite(&S{}) + +type S struct { + mturk *mturk.MTurk +} + +var testServer = testutil.NewHTTPServer() + +func (s *S) SetUpSuite(c *C) { + testServer.Start() + auth := aws.Auth{"abc", "123"} + u, err := url.Parse(testServer.URL) + if err != nil { + panic(err.Error()) + } + + s.mturk = &mturk.MTurk{ + Auth: auth, + URL: u, + } +} + +func (s *S) TearDownSuite(c *C) { + testServer.Stop() +} + +func (s *S) TearDownTest(c *C) { + testServer.Flush() +} + +func (s *S) TestCreateHIT(c *C) { + testServer.Response(200, nil, BasicHitResponse) + + question := mturk.ExternalQuestion{ + ExternalURL: "http://www.amazon.com", + FrameHeight: 200, + } + reward := mturk.Price{ + Amount: "0.01", + CurrencyCode: "USD", + } + hit, err := s.mturk.CreateHIT("title", "description", question, reward, 1, 2, "key1,key2", 3, nil, "annotation") + + testServer.WaitRequest() + + c.Assert(err, IsNil) + c.Assert(hit, NotNil) + + c.Assert(hit.HITId, Equals, "28J4IXKO2L927XKJTHO34OCDNASCDW") + c.Assert(hit.HITTypeId, Equals, "2XZ7D1X3V0FKQVW7LU51S7PKKGFKDF") +} + +func (s *S) TestSearchHITs(c *C) { + testServer.Response(200, nil, SearchHITResponse) + + hitResult, err := s.mturk.SearchHITs() + + c.Assert(err, IsNil) + c.Assert(hitResult, NotNil) + + c.Assert(hitResult.NumResults, Equals, uint(1)) + c.Assert(hitResult.PageNumber, Equals, uint(1)) + c.Assert(hitResult.TotalNumResults, Equals, uint(1)) + + c.Assert(len(hitResult.HITs), Equals, 1) + c.Assert(hitResult.HITs[0].HITId, Equals, "2BU26DG67D1XTE823B3OQ2JF2XWF83") + c.Assert(hitResult.HITs[0].HITTypeId, Equals, "22OWJ5OPB0YV6IGL5727KP9U38P5XR") + c.Assert(hitResult.HITs[0].CreationTime, Equals, "2011-12-28T19:56:20Z") + c.Assert(hitResult.HITs[0].Title, Equals, "test hit") + c.Assert(hitResult.HITs[0].Description, Equals, "please disregard, testing only") + c.Assert(hitResult.HITs[0].HITStatus, Equals, "Reviewable") + c.Assert(hitResult.HITs[0].MaxAssignments, Equals, uint(1)) + c.Assert(hitResult.HITs[0].Reward.Amount, Equals, "0.01") + c.Assert(hitResult.HITs[0].Reward.CurrencyCode, Equals, "USD") + c.Assert(hitResult.HITs[0].AutoApprovalDelayInSeconds, Equals, uint(2592000)) + c.Assert(hitResult.HITs[0].AssignmentDurationInSeconds, Equals, uint(30)) + c.Assert(hitResult.HITs[0].NumberOfAssignmentsPending, Equals, uint(0)) + c.Assert(hitResult.HITs[0].NumberOfAssignmentsAvailable, Equals, uint(1)) + c.Assert(hitResult.HITs[0].NumberOfAssignmentsCompleted, Equals, uint(0)) +} diff --git a/vendor/src/launchpad.net/goamz/exp/mturk/responses_test.go b/vendor/src/launchpad.net/goamz/exp/mturk/responses_test.go new file mode 100644 index 0000000000..4467b96713 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/mturk/responses_test.go @@ -0,0 +1,9 @@ +package mturk_test + +var BasicHitResponse = ` +643b794b-66b6-4427-bb8a-4d3df5c9a20eTrue28J4IXKO2L927XKJTHO34OCDNASCDW2XZ7D1X3V0FKQVW7LU51S7PKKGFKDF +` + +var SearchHITResponse = ` +38862d9c-f015-4177-a2d3-924110a9d6f2True1112BU26DG67D1XTE823B3OQ2JF2XWF8322OWJ5OPB0YV6IGL5727KP9U38P5XR2011-12-28T19:56:20Ztest hitplease disregard, testing onlyReviewable10.01USD$0.0125920002011-12-28T19:56:50Z30010 +` diff --git a/vendor/src/launchpad.net/goamz/exp/mturk/sign.go b/vendor/src/launchpad.net/goamz/exp/mturk/sign.go new file mode 100644 index 0000000000..556384543e --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/mturk/sign.go @@ -0,0 +1,22 @@ +package mturk + +import ( + "crypto/hmac" + "crypto/sha1" + "encoding/base64" + "launchpad.net/goamz/aws" +) + +var b64 = base64.StdEncoding + +// ---------------------------------------------------------------------------- +// Mechanical Turk signing (http://goo.gl/wrzfn) +func sign(auth aws.Auth, service, method, timestamp string, params map[string]string) { + payload := service + method + timestamp + hash := hmac.New(sha1.New, []byte(auth.SecretKey)) + hash.Write([]byte(payload)) + signature := make([]byte, b64.EncodedLen(hash.Size())) + b64.Encode(signature, hash.Sum(nil)) + + params["Signature"] = string(signature) +} diff --git a/vendor/src/launchpad.net/goamz/exp/mturk/sign_test.go b/vendor/src/launchpad.net/goamz/exp/mturk/sign_test.go new file mode 100644 index 0000000000..99865d86e7 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/mturk/sign_test.go @@ -0,0 +1,19 @@ +package mturk_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/exp/mturk" + . "launchpad.net/gocheck" +) + +// Mechanical Turk REST authentication docs: http://goo.gl/wrzfn + +var testAuth = aws.Auth{"user", "secret"} + +// == fIJy9wCApBNL2R4J2WjJGtIBFX4= +func (s *S) TestBasicSignature(c *C) { + params := map[string]string{} + mturk.Sign(testAuth, "AWSMechanicalTurkRequester", "CreateHIT", "2012-02-16T20:30:47Z", params) + expected := "b/TnvzrdeD/L/EyzdFrznPXhido=" + c.Assert(params["Signature"], Equals, expected) +} diff --git a/vendor/src/launchpad.net/goamz/exp/sdb/export_test.go b/vendor/src/launchpad.net/goamz/exp/sdb/export_test.go new file mode 100644 index 0000000000..9c50703453 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sdb/export_test.go @@ -0,0 +1,9 @@ +package sdb + +import ( + "launchpad.net/goamz/aws" +) + +func Sign(auth aws.Auth, method, path string, params map[string][]string, headers map[string][]string) { + sign(auth, method, path, params, headers) +} diff --git a/vendor/src/launchpad.net/goamz/exp/sdb/responses_test.go b/vendor/src/launchpad.net/goamz/exp/sdb/responses_test.go new file mode 100644 index 0000000000..034c2b31ce --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sdb/responses_test.go @@ -0,0 +1,120 @@ +package sdb_test + +var TestCreateDomainXmlOK = ` + + + + 63264005-7a5f-e01a-a224-395c63b89f6d + 0.0055590279 + + +` + +var TestListDomainsXmlOK = ` + + + + Account + Domain + Record + + + 15fcaf55-9914-63c2-21f3-951e31193790 + 0.0000071759 + + +` + +var TestListDomainsWithNextTokenXmlOK = ` + + + + Domain1-200706011651 + Domain2-200706011652 + TWV0ZXJpbmdUZXN0RG9tYWluMS0yMDA3MDYwMTE2NTY= + + + eb13162f-1b95-4511-8b12-489b86acfd28 + 0.0000219907 + + +` + +var TestDeleteDomainXmlOK = ` + + + + 039e1e25-9a64-2a74-93da-2fda36122a97 + 0.0055590278 + + +` + +var TestDomainMetadataXmlNoSuchDomain = ` + + + + + NoSuchDomain + The specified domain does not exist. + 0.0000071759 + + + e050cea2-a772-f90e-2cb0-98ebd42c2898 + +` + +var TestPutAttrsXmlOK = ` + + + + 490206ce-8292-456c-a00f-61b335eb202b + 0.0000219907 + + +` + +var TestAttrsXmlOK = ` + + + + ColorBlue + SizeMed + + + b1e8f1f7-42e9-494c-ad09-2674e557526d + 0.0000219942 + + +` + +var TestSelectXmlOK = ` + + + + + Item_03 + CategoryClothes + SubcategoryPants + NameSweatpants + ColorBlue + ColorYellow + ColorPink + SizeLarge + + + Item_06 + CategoryMotorcycle Parts + SubcategoryBodywork + NameFender Eliminator + ColorBlue + MakeYamaha + ModelR1 + + + + b1e8f1f7-42e9-494c-ad09-2674e557526d + 0.0000219907 + + +` diff --git a/vendor/src/launchpad.net/goamz/exp/sdb/sdb.go b/vendor/src/launchpad.net/goamz/exp/sdb/sdb.go new file mode 100644 index 0000000000..805cb7d63e --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sdb/sdb.go @@ -0,0 +1,413 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2011 AppsAttic Ltd. +// +// sdb package written by: +// +// Andrew Chilton +// Brad Rydzewski + +// This package is in an experimental state, and does not currently +// follow conventions and style of the rest of goamz or common +// Go conventions. It must be polished before it's considered a +// first-class package in goamz. +package sdb + +// BUG: SelectResp isn't properly organized. It must change. + +// + +import ( + "encoding/xml" + "launchpad.net/goamz/aws" + "log" + "net/http" + "net/http/httputil" + "net/url" + "strconv" + "time" +) + +const debug = false + +// The SDB type encapsulates operations with a specific SimpleDB region. +type SDB struct { + aws.Auth + aws.Region + private byte // Reserve the right of using private data. +} + +// New creates a new SDB. +func New(auth aws.Auth, region aws.Region) *SDB { + return &SDB{auth, region, 0} +} + +// The Domain type represents a collection of items that are described +// by name-value attributes. +type Domain struct { + *SDB + Name string +} + +// Domain returns a Domain with the given name. +func (sdb *SDB) Domain(name string) *Domain { + return &Domain{sdb, name} +} + +// The Item type represent individual objects that contain one or more +// name-value attributes stored within a SDB Domain as rows. +type Item struct { + *SDB + *Domain + Name string +} + +// Item returns an Item with the given name. +func (domain *Domain) Item(name string) *Item { + return &Item{domain.SDB, domain, name} +} + +// The Attr type represent categories of data that can be assigned to items. +type Attr struct { + Name string + Value string +} + +// ---------------------------------------------------------------------------- +// Service-level operations. + +// --- ListDomains + +// Response to a ListDomains request. +// +// See http://goo.gl/3u0Cf for more details. +type ListDomainsResp struct { + Domains []string `xml:"ListDomainsResult>DomainName"` + NextToken string `xml:"ListDomainsResult>NextToken"` + ResponseMetadata ResponseMetadata +} + +// ListDomains lists all domains in sdb. +// +// See http://goo.gl/Dsw15 for more details. +func (sdb *SDB) ListDomains() (resp *ListDomainsResp, err error) { + return sdb.ListDomainsN(0, "") +} + +// ListDomainsN lists domains in sdb up to maxDomains. +// If nextToken is not empty, domains listed will start at the given token. +// +// See http://goo.gl/Dsw15 for more details. +func (sdb *SDB) ListDomainsN(maxDomains int, nextToken string) (resp *ListDomainsResp, err error) { + params := makeParams("ListDomains") + if maxDomains != 0 { + params["MaxNumberOfDomains"] = []string{strconv.Itoa(maxDomains)} + } + if nextToken != "" { + params["NextToken"] = []string{nextToken} + } + resp = &ListDomainsResp{} + err = sdb.query(nil, nil, params, nil, resp) + return +} + +// --- SelectExpression + +// Response to a Select request. +// +// See http://goo.gl/GTsSZ for more details. +type SelectResp struct { + Items []struct { + Name string + Attrs []Attr `xml:"Attribute"` + } `xml:"SelectResult>Item"` + ResponseMetadata ResponseMetadata +} + +// Select returns a set of items and attributes that match expr. +// Select is similar to the standard SQL SELECT statement. +// +// See http://goo.gl/GTsSZ for more details. +func (sdb *SDB) Select(expr string, consistent bool) (resp *SelectResp, err error) { + resp = &SelectResp{} + params := makeParams("Select") + params["SelectExpression"] = []string{expr} + if consistent { + params["ConsistentRead"] = []string{"true"} + } + err = sdb.query(nil, nil, params, nil, resp) + return +} + +// ---------------------------------------------------------------------------- +// Domain-level operations. + +// --- CreateDomain + +// CreateDomain creates a new domain. +// +// See http://goo.gl/jDjGH for more details. +func (domain *Domain) CreateDomain() (resp *SimpleResp, err error) { + params := makeParams("CreateDomain") + resp = &SimpleResp{} + err = domain.SDB.query(domain, nil, params, nil, resp) + return +} + +// DeleteDomain deletes an existing domain. +// +// See http://goo.gl/S0dCL for more details. +func (domain *Domain) DeleteDomain() (resp *SimpleResp, err error) { + params := makeParams("DeleteDomain") + resp = &SimpleResp{} + err = domain.SDB.query(domain, nil, params, nil, resp) + return +} + +// ---------------------------------------------------------------------------- +// Item-level operations. + +type PutAttrs struct { + attrs []Attr + expected []Attr + replace map[string]bool + missing map[string]bool +} + +func (pa *PutAttrs) Add(name, value string) { + pa.attrs = append(pa.attrs, Attr{name, value}) +} + +func (pa *PutAttrs) Replace(name, value string) { + pa.Add(name, value) + if pa.replace == nil { + pa.replace = make(map[string]bool) + } + pa.replace[name] = true +} + +// The PutAttrs request will only succeed if the existing +// item in SimpleDB contains a matching name / value pair. +func (pa *PutAttrs) IfValue(name, value string) { + pa.expected = append(pa.expected, Attr{name, value}) +} + +// Flag to test the existence of an attribute while performing +// conditional updates. X can be any positive integer or 0. +// +// This should set Expected.N.Name=name and Expected.N.Exists=false +func (pa *PutAttrs) IfMissing(name string) { + if pa.missing == nil { + pa.missing = make(map[string]bool) + } + pa.missing[name] = true +} + +// PutAttrs adds attrs to item. +// +// See http://goo.gl/yTAV4 for more details. +func (item *Item) PutAttrs(attrs *PutAttrs) (resp *SimpleResp, err error) { + params := makeParams("PutAttributes") + resp = &SimpleResp{} + + // copy these attrs over to the parameters + itemNum := 1 + for _, attr := range attrs.attrs { + itemNumStr := strconv.Itoa(itemNum) + + // do the name, value and replace + params["Attribute."+itemNumStr+".Name"] = []string{attr.Name} + params["Attribute."+itemNumStr+".Value"] = []string{attr.Value} + + if _, ok := attrs.replace[attr.Name]; ok { + params["Attribute."+itemNumStr+".Replace"] = []string{"true"} + } + + itemNum++ + } + + //append expected values to params + expectedNum := 1 + for _, attr := range attrs.expected { + expectedNumStr := strconv.Itoa(expectedNum) + params["Expected."+expectedNumStr+".Name"] = []string{attr.Name} + params["Expected."+expectedNumStr+".Value"] = []string{attr.Value} + + if attrs.missing[attr.Name] { + params["Expected."+expectedNumStr+".Exists"] = []string{"false"} + } + expectedNum++ + } + + err = item.query(params, nil, resp) + if err != nil { + return nil, err + } + return +} + +// Response to an Attrs request. +// +// See http://goo.gl/45X1M for more details. +type AttrsResp struct { + Attrs []Attr `xml:"GetAttributesResult>Attribute"` + ResponseMetadata ResponseMetadata +} + +// Attrs returns one or more of the named attributes, or +// all of item's attributes if names is nil. +// If consistent is true, previous writes will necessarily +// be observed. +// +// See http://goo.gl/45X1M for more details. +func (item *Item) Attrs(names []string, consistent bool) (resp *AttrsResp, err error) { + params := makeParams("GetAttributes") + params["ItemName"] = []string{item.Name} + if consistent { + params["ConsistentRead"] = []string{"true"} + } + + // Copy these attributes over to the parameters + for i, name := range names { + params["AttributeName."+strconv.Itoa(i+1)] = []string{name} + } + + resp = &AttrsResp{} + err = item.query(params, nil, resp) + if err != nil { + return nil, err + } + return +} + +// ---------------------------------------------------------------------------- +// Generic data structures for all requests/responses. + +// Error encapsulates an error returned by SDB. +type Error struct { + StatusCode int // HTTP status code (200, 403, ...) + StatusMsg string // HTTP status message ("Service Unavailable", "Bad Request", ...) + Code string // SimpleDB error code ("InvalidParameterValue", ...) + Message string // The human-oriented error message + RequestId string // A unique ID for this request + BoxUsage float64 // The measure of machine utilization for this request. +} + +func (err *Error) Error() string { + return err.Message +} + +// SimpleResp represents a response to an SDB request which on success +// will return no other information besides ResponseMetadata. +type SimpleResp struct { + ResponseMetadata ResponseMetadata +} + +// ResponseMetadata +type ResponseMetadata struct { + RequestId string // A unique ID for tracking the request + BoxUsage float64 // The measure of machine utilization for this request. +} + +func buildError(r *http.Response) error { + err := Error{} + err.StatusCode = r.StatusCode + err.StatusMsg = r.Status + xml.NewDecoder(r.Body).Decode(&err) + return &err +} + +// ---------------------------------------------------------------------------- +// Request dispatching logic. + +func (item *Item) query(params url.Values, headers http.Header, resp interface{}) error { + return item.Domain.SDB.query(item.Domain, item, params, headers, resp) +} + +func (domain *Domain) query(item *Item, params url.Values, headers http.Header, resp interface{}) error { + return domain.SDB.query(domain, item, params, headers, resp) +} + +func (sdb *SDB) query(domain *Domain, item *Item, params url.Values, headers http.Header, resp interface{}) error { + // all SimpleDB operations have path="/" + method := "GET" + path := "/" + + // if we have been given no headers or params, create them + if headers == nil { + headers = map[string][]string{} + } + if params == nil { + params = map[string][]string{} + } + + // setup some default parameters + params["Version"] = []string{"2009-04-15"} + params["Timestamp"] = []string{time.Now().UTC().Format(time.RFC3339)} + + // set the DomainName param (every request must have one) + if domain != nil { + params["DomainName"] = []string{domain.Name} + } + + // set the ItemName if we have one + if item != nil { + params["ItemName"] = []string{item.Name} + } + + // check the endpoint URL + u, err := url.Parse(sdb.Region.SDBEndpoint) + if err != nil { + return err + } + headers["Host"] = []string{u.Host} + sign(sdb.Auth, method, path, params, headers) + + u.Path = path + if len(params) > 0 { + u.RawQuery = params.Encode() + } + req := http.Request{ + URL: u, + Method: method, + ProtoMajor: 1, + ProtoMinor: 1, + Close: true, + Header: headers, + } + + if v, ok := headers["Content-Length"]; ok { + req.ContentLength, _ = strconv.ParseInt(v[0], 10, 64) + delete(headers, "Content-Length") + } + + r, err := http.DefaultClient.Do(&req) + if err != nil { + return err + } + defer r.Body.Close() + + if debug { + dump, _ := httputil.DumpResponse(r, true) + log.Printf("response:\n") + log.Printf("%v\n}\n", string(dump)) + } + + // status code is always 200 when successful (since we're always doing a GET) + if r.StatusCode != 200 { + return buildError(r) + } + + // everything was fine, so unmarshal the XML and return what it's err is (if any) + err = xml.NewDecoder(r.Body).Decode(resp) + return err +} + +func makeParams(action string) map[string][]string { + params := make(map[string][]string) + params["Action"] = []string{action} + return params +} diff --git a/vendor/src/launchpad.net/goamz/exp/sdb/sdb_test.go b/vendor/src/launchpad.net/goamz/exp/sdb/sdb_test.go new file mode 100644 index 0000000000..9f47472fd6 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sdb/sdb_test.go @@ -0,0 +1,222 @@ +package sdb_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/exp/sdb" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" + "testing" +) + +func Test(t *testing.T) { + TestingT(t) +} + +var _ = Suite(&S{}) + +type S struct { + sdb *sdb.SDB +} + +var testServer = testutil.NewHTTPServer() + +func (s *S) SetUpSuite(c *C) { + testServer.Start() + auth := aws.Auth{"abc", "123"} + s.sdb = sdb.New(auth, aws.Region{SDBEndpoint: testServer.URL}) +} + +func (s *S) TearDownSuite(c *C) { + testServer.Stop() +} + +func (s *S) TearDownTest(c *C) { + testServer.Flush() +} + +func (s *S) TestCreateDomainOK(c *C) { + testServer.Response(200, nil, TestCreateDomainXmlOK) + + domain := s.sdb.Domain("domain") + resp, err := domain.CreateDomain() + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "63264005-7a5f-e01a-a224-395c63b89f6d") + c.Assert(resp.ResponseMetadata.BoxUsage, Equals, 0.0055590279) + + c.Assert(err, IsNil) +} + +func (s *S) TestListDomainsOK(c *C) { + testServer.Response(200, nil, TestListDomainsXmlOK) + + resp, err := s.sdb.ListDomains() + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "15fcaf55-9914-63c2-21f3-951e31193790") + c.Assert(resp.ResponseMetadata.BoxUsage, Equals, 0.0000071759) + c.Assert(resp.Domains, DeepEquals, []string{"Account", "Domain", "Record"}) + + c.Assert(err, IsNil) +} + +func (s *S) TestListDomainsWithNextTokenXmlOK(c *C) { + testServer.Response(200, nil, TestListDomainsWithNextTokenXmlOK) + + resp, err := s.sdb.ListDomains() + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "eb13162f-1b95-4511-8b12-489b86acfd28") + c.Assert(resp.ResponseMetadata.BoxUsage, Equals, 0.0000219907) + c.Assert(resp.Domains, DeepEquals, []string{"Domain1-200706011651", "Domain2-200706011652"}) + c.Assert(resp.NextToken, Equals, "TWV0ZXJpbmdUZXN0RG9tYWluMS0yMDA3MDYwMTE2NTY=") + + c.Assert(err, IsNil) +} + +func (s *S) TestDeleteDomainOK(c *C) { + testServer.Response(200, nil, TestDeleteDomainXmlOK) + + domain := s.sdb.Domain("domain") + resp, err := domain.DeleteDomain() + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "039e1e25-9a64-2a74-93da-2fda36122a97") + c.Assert(resp.ResponseMetadata.BoxUsage, Equals, 0.0055590278) + + c.Assert(err, IsNil) +} + +func (s *S) TestPutAttrsOK(c *C) { + testServer.Response(200, nil, TestPutAttrsXmlOK) + + domain := s.sdb.Domain("MyDomain") + item := domain.Item("Item123") + + putAttrs := new(sdb.PutAttrs) + putAttrs.Add("FirstName", "john") + putAttrs.Add("LastName", "smith") + putAttrs.Replace("MiddleName", "jacob") + + putAttrs.IfValue("FirstName", "john") + putAttrs.IfMissing("FirstName") + + resp, err := item.PutAttrs(putAttrs) + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Form["Action"], DeepEquals, []string{"PutAttributes"}) + c.Assert(req.Form["ItemName"], DeepEquals, []string{"Item123"}) + c.Assert(req.Form["DomainName"], DeepEquals, []string{"MyDomain"}) + c.Assert(req.Form["Attribute.1.Name"], DeepEquals, []string{"FirstName"}) + c.Assert(req.Form["Attribute.1.Value"], DeepEquals, []string{"john"}) + c.Assert(req.Form["Attribute.2.Name"], DeepEquals, []string{"LastName"}) + c.Assert(req.Form["Attribute.2.Value"], DeepEquals, []string{"smith"}) + c.Assert(req.Form["Attribute.3.Name"], DeepEquals, []string{"MiddleName"}) + c.Assert(req.Form["Attribute.3.Value"], DeepEquals, []string{"jacob"}) + c.Assert(req.Form["Attribute.3.Replace"], DeepEquals, []string{"true"}) + + c.Assert(req.Form["Expected.1.Name"], DeepEquals, []string{"FirstName"}) + c.Assert(req.Form["Expected.1.Value"], DeepEquals, []string{"john"}) + c.Assert(req.Form["Expected.1.Exists"], DeepEquals, []string{"false"}) + + c.Assert(err, IsNil) + c.Assert(resp.ResponseMetadata.RequestId, Equals, "490206ce-8292-456c-a00f-61b335eb202b") + c.Assert(resp.ResponseMetadata.BoxUsage, Equals, 0.0000219907) + +} + +func (s *S) TestAttrsOK(c *C) { + testServer.Response(200, nil, TestAttrsXmlOK) + + domain := s.sdb.Domain("MyDomain") + item := domain.Item("Item123") + + resp, err := item.Attrs(nil, true) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + c.Assert(req.Form["Action"], DeepEquals, []string{"GetAttributes"}) + c.Assert(req.Form["ItemName"], DeepEquals, []string{"Item123"}) + c.Assert(req.Form["DomainName"], DeepEquals, []string{"MyDomain"}) + c.Assert(req.Form["ConsistentRead"], DeepEquals, []string{"true"}) + + c.Assert(resp.Attrs[0].Name, Equals, "Color") + c.Assert(resp.Attrs[0].Value, Equals, "Blue") + c.Assert(resp.Attrs[1].Name, Equals, "Size") + c.Assert(resp.Attrs[1].Value, Equals, "Med") + c.Assert(resp.ResponseMetadata.RequestId, Equals, "b1e8f1f7-42e9-494c-ad09-2674e557526d") + c.Assert(resp.ResponseMetadata.BoxUsage, Equals, 0.0000219942) + + c.Assert(err, IsNil) +} + +func (s *S) TestAttrsSelectOK(c *C) { + testServer.Response(200, nil, TestAttrsXmlOK) + + domain := s.sdb.Domain("MyDomain") + item := domain.Item("Item123") + + resp, err := item.Attrs([]string{"Color", "Size"}, true) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + c.Assert(req.Form["Action"], DeepEquals, []string{"GetAttributes"}) + c.Assert(req.Form["ItemName"], DeepEquals, []string{"Item123"}) + c.Assert(req.Form["DomainName"], DeepEquals, []string{"MyDomain"}) + c.Assert(req.Form["ConsistentRead"], DeepEquals, []string{"true"}) + c.Assert(req.Form["AttributeName.1"], DeepEquals, []string{"Color"}) + c.Assert(req.Form["AttributeName.2"], DeepEquals, []string{"Size"}) + + c.Assert(resp.Attrs[0].Name, Equals, "Color") + c.Assert(resp.Attrs[0].Value, Equals, "Blue") + c.Assert(resp.Attrs[1].Name, Equals, "Size") + c.Assert(resp.Attrs[1].Value, Equals, "Med") + c.Assert(resp.ResponseMetadata.RequestId, Equals, "b1e8f1f7-42e9-494c-ad09-2674e557526d") + c.Assert(resp.ResponseMetadata.BoxUsage, Equals, 0.0000219942) + + c.Assert(err, IsNil) +} + +func (s *S) TestSelectOK(c *C) { + testServer.Response(200, nil, TestSelectXmlOK) + + resp, err := s.sdb.Select("select Color from MyDomain where Color like 'Blue%'", true) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + c.Assert(req.Form["Action"], DeepEquals, []string{"Select"}) + c.Assert(req.Form["ConsistentRead"], DeepEquals, []string{"true"}) + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "b1e8f1f7-42e9-494c-ad09-2674e557526d") + c.Assert(resp.ResponseMetadata.BoxUsage, Equals, 0.0000219907) + c.Assert(len(resp.Items), Equals, 2) + c.Assert(resp.Items[0].Name, Equals, "Item_03") + c.Assert(resp.Items[1].Name, Equals, "Item_06") + c.Assert(resp.Items[0].Attrs[0].Name, Equals, "Category") + c.Assert(resp.Items[0].Attrs[0].Value, Equals, "Clothes") + + c.Assert(err, IsNil) +} diff --git a/vendor/src/launchpad.net/goamz/exp/sdb/sign.go b/vendor/src/launchpad.net/goamz/exp/sdb/sign.go new file mode 100644 index 0000000000..7ac601cc0d --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sdb/sign.go @@ -0,0 +1,51 @@ +package sdb + +import ( + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "launchpad.net/goamz/aws" + "net/http" + "net/url" + "sort" + "strings" +) + +var b64 = base64.StdEncoding + +// ---------------------------------------------------------------------------- +// SimpleDB signing (http://goo.gl/CaY81) + +func sign(auth aws.Auth, method, path string, params url.Values, headers http.Header) { + var host string + for k, v := range headers { + k = strings.ToLower(k) + switch k { + case "host": + host = v[0] + } + } + + // set up some defaults used for signing the request + params["AWSAccessKeyId"] = []string{auth.AccessKey} + params["SignatureVersion"] = []string{"2"} + params["SignatureMethod"] = []string{"HmacSHA256"} + + // join up all the incoming params + var sarray []string + for k, v := range params { + sarray = append(sarray, aws.Encode(k)+"="+aws.Encode(v[0])) + } + sort.StringSlice(sarray).Sort() + joined := strings.Join(sarray, "&") + + // create the payload, sign it and create the signature + payload := strings.Join([]string{method, host, "/", joined}, "\n") + hash := hmac.New(sha256.New, []byte(auth.SecretKey)) + hash.Write([]byte(payload)) + signature := make([]byte, b64.EncodedLen(hash.Size())) + b64.Encode(signature, hash.Sum(nil)) + + // add the signature to the outgoing params + params["Signature"] = []string{string(signature)} +} diff --git a/vendor/src/launchpad.net/goamz/exp/sdb/sign_test.go b/vendor/src/launchpad.net/goamz/exp/sdb/sign_test.go new file mode 100644 index 0000000000..234687c465 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sdb/sign_test.go @@ -0,0 +1,29 @@ +package sdb_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/exp/sdb" + . "launchpad.net/gocheck" +) + +// SimpleDB ReST authentication docs: http://goo.gl/CaY81 + +var testAuth = aws.Auth{"access-key-id-s8eBOWuU", "secret-access-key-UkQjTLd9"} + +func (s *S) TestSignExampleDomainCreate(c *C) { + method := "GET" + params := map[string][]string{ + "Action": {"CreateDomain"}, + "DomainName": {"MyDomain"}, + "Timestamp": {"2011-08-20T07:23:57+12:00"}, + "Version": {"2009-04-15"}, + } + headers := map[string][]string{ + "Host": {"sdb.amazonaws.com"}, + } + sdb.Sign(testAuth, method, "", params, headers) + expected := "ot2JaeeqMRJqgAqW67hkzUlffgxdOz4RykbrECB+tDU=" + c.Assert(params["Signature"], DeepEquals, []string{expected}) +} + +// Do a few test methods which takes combinations of params diff --git a/vendor/src/launchpad.net/goamz/exp/sns/Makefile b/vendor/src/launchpad.net/goamz/exp/sns/Makefile new file mode 100644 index 0000000000..1e5b9da3b0 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sns/Makefile @@ -0,0 +1,21 @@ +include $(GOROOT)/src/Make.inc + +TARG=launchpad.net/goamz/sns + +GOFILES=\ + sns.go\ + sign.go\ + +include $(GOROOT)/src/Make.pkg + +GOFMT=gofmt +BADFMT=$(shell $(GOFMT) -l $(GOFILES) 2> /dev/null) + +gofmt: $(BADFMT) + @for F in $(BADFMT); do $(GOFMT) -w $$F && echo $$F; done + +ifneq ($(BADFMT),) +ifneq ($(MAKECMDGOALS), gofmt) +#$(warning WARNING: make gofmt: $(BADFMT)) +endif +endif diff --git a/vendor/src/launchpad.net/goamz/exp/sns/README b/vendor/src/launchpad.net/goamz/exp/sns/README new file mode 100644 index 0000000000..87770adb50 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sns/README @@ -0,0 +1 @@ +Amazon Simple Notification Service API for Golang. diff --git a/vendor/src/launchpad.net/goamz/exp/sns/responses_test.go b/vendor/src/launchpad.net/goamz/exp/sns/responses_test.go new file mode 100644 index 0000000000..5f8ab6541c --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sns/responses_test.go @@ -0,0 +1,164 @@ +package sns_test + +var TestListTopicsXmlOK = ` + + + + + + arn:aws:sns:us-west-1:331995417492:Transcoding + + + + + bd10b26c-e30e-11e0-ba29-93c3aca2f103 + + +` + +var TestCreateTopicXmlOK = ` + + + + arn:aws:sns:us-east-1:123456789012:My-Topic + + + a8dec8b3-33a4-11df-8963-01868b7c937a + + +` + +var TestDeleteTopicXmlOK = ` + + + f3aa9ac9-3c3d-11df-8235-9dab105e9c32 + + +` + +var TestListSubscriptionsXmlOK = ` + + + + + arn:aws:sns:us-east-1:698519295917:My-Topic + email + arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca + 123456789012 + example@amazon.com + + + + + 384ac68d-3775-11df-8963-01868b7c937a + + +` + +var TestGetTopicAttributesXmlOK = ` + + + + + Owner + 123456789012 + + + Policy + {"Version":"2008-10-17","Id":"us-east-1/698519295917/test__default_policy_ID","Statement" : [{"Effect":"Allow","Sid":"us-east-1/698519295917/test__default_statement_ID","Principal" : {"AWS": "*"},"Action":["SNS:GetTopicAttributes","SNS:SetTopicAttributes","SNS:AddPermission","SNS:RemovePermission","SNS:DeleteTopic","SNS:Subscribe","SNS:ListSubscriptionsByTopic","SNS:Publish","SNS:Receive"],"Resource":"arn:aws:sns:us-east-1:698519295917:test","Condition" : {"StringLike" : {"AWS:SourceArn": "arn:aws:*:*:698519295917:*"}}}]} + + + TopicArn + arn:aws:sns:us-east-1:123456789012:My-Topic + + + + + 057f074c-33a7-11df-9540-99d0768312d3 + + +` + +var TestPublishXmlOK = ` + + + 94f20ce6-13c5-43a0-9a9e-ca52d816e90b + + + f187a3c1-376f-11df-8963-01868b7c937a + + +` + +var TestSetTopicAttributesXmlOK = ` + + + a8763b99-33a7-11df-a9b7-05d48da6f042 + + +` + +var TestSubscribeXmlOK = ` + + + pending confirmation + + + a169c740-3766-11df-8963-01868b7c937a + + +` + +var TestUnsubscribeXmlOK = ` + + + 18e0ac39-3776-11df-84c0-b93cc1666b84 + + +` + +var TestConfirmSubscriptionXmlOK = ` + + + arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca + + + 7a50221f-3774-11df-a9b7-05d48da6f042 + + +` + +var TestAddPermissionXmlOK = ` + + + 6a213e4e-33a8-11df-9540-99d0768312d3 + + +` + +var TestRemovePermissionXmlOK = ` + + + d170b150-33a8-11df-995a-2d6fbe836cc1 + + +` + +var TestListSubscriptionsByTopicXmlOK = ` + + + + + arn:aws:sns:us-east-1:123456789012:My-Topic + email + arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca + 123456789012 + example@amazon.com + + + + + b9275252-3774-11df-9540-99d0768312d3 + + +` diff --git a/vendor/src/launchpad.net/goamz/exp/sns/sign.go b/vendor/src/launchpad.net/goamz/exp/sns/sign.go new file mode 100644 index 0000000000..e5cfa1fff6 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sns/sign.go @@ -0,0 +1,66 @@ +package sns + +import ( + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "launchpad.net/goamz/aws" + "sort" + "strings" +) + +var b64 = base64.StdEncoding + +/* +func sign(auth aws.Auth, method, path string, params url.Values, headers http.Header) { + var host string + for k, v := range headers { + k = strings.ToLower(k) + switch k { + case "host": + host = v[0] + } + } + + params["AWSAccessKeyId"] = []string{auth.AccessKey} + params["SignatureVersion"] = []string{"2"} + params["SignatureMethod"] = []string{"HmacSHA256"} + + var sarry []string + for k, v := range params { + sarry = append(sarry, aws.Encode(k) + "=" + aws.Encode(v[0])) + } + + sort.StringSlice(sarry).Sort() + joined := strings.Join(sarry, "&") + + payload := strings.Join([]string{method, host, "/", joined}, "\n") + hash := hmac.NewSHA256([]byte(auth.SecretKey)) + hash.Write([]byte(payload)) + signature := make([]byte, b64.EncodedLen(hash.Size())) + b64.Encode(signature, hash.Sum()) + + params["Signature"] = []string{"AWS " + string(signature)} + println("Payload:", payload) + println("Signature:", strings.Join(params["Signature"], "|")) +}*/ + +func sign(auth aws.Auth, method, path string, params map[string]string, host string) { + params["AWSAccessKeyId"] = auth.AccessKey + params["SignatureVersion"] = "2" + params["SignatureMethod"] = "HmacSHA256" + + var sarray []string + for k, v := range params { + sarray = append(sarray, aws.Encode(k)+"="+aws.Encode(v)) + } + sort.StringSlice(sarray).Sort() + joined := strings.Join(sarray, "&") + payload := method + "\n" + host + "\n" + path + "\n" + joined + hash := hmac.New(sha256.New, []byte(auth.SecretKey)) + hash.Write([]byte(payload)) + signature := make([]byte, b64.EncodedLen(hash.Size())) + b64.Encode(signature, hash.Sum(nil)) + + params["Signature"] = string(signature) +} diff --git a/vendor/src/launchpad.net/goamz/exp/sns/sns.go b/vendor/src/launchpad.net/goamz/exp/sns/sns.go new file mode 100644 index 0000000000..84c434a543 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sns/sns.go @@ -0,0 +1,444 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2011 Memeo Inc. +// +// Written by Prudhvi Krishna Surapaneni + +// This package is in an experimental state, and does not currently +// follow conventions and style of the rest of goamz or common +// Go conventions. It must be polished before it's considered a +// first-class package in goamz. +package sns + +// BUG(niemeyer): Package needs significant clean up. + +// BUG(niemeyer): Topic values in responses are not being initialized +// properly, since they're supposed to reference *SNS. + +// BUG(niemeyer): Package needs documentation. + +// BUG(niemeyer): Message.Message should be "Payload []byte" + +// BUG(niemeyer): Message.SNS must be dropped. + +import ( + "encoding/xml" + "errors" + "launchpad.net/goamz/aws" + "net/http" + "net/url" + "strconv" + "time" +) + +// The SNS type encapsulates operation with an SNS region. +type SNS struct { + aws.Auth + aws.Region + private byte // Reserve the right of using private data. +} + +type Topic struct { + SNS *SNS + TopicArn string +} + +func New(auth aws.Auth, region aws.Region) *SNS { + return &SNS{auth, region, 0} +} + +type Message struct { + SNS *SNS + Topic *Topic + Message [8192]byte + Subject string +} + +type Subscription struct { + Endpoint string + Owner string + Protocol string + SubscriptionArn string + TopicArn string +} + +func (topic *Topic) Message(message [8192]byte, subject string) *Message { + return &Message{topic.SNS, topic, message, subject} +} + +type ResponseMetadata struct { + RequestId string `xml:"ResponseMetadata>RequestId"` + BoxUsage float64 `xml:"ResponseMetadata>BoxUsage"` +} + +type ListTopicsResp struct { + Topics []Topic `xml:"ListTopicsResult>Topics>member"` + NextToken string + ResponseMetadata +} + +type CreateTopicResp struct { + Topic Topic `xml:"CreateTopicResult"` + ResponseMetadata +} + +type DeleteTopicResp struct { + ResponseMetadata +} + +type ListSubscriptionsResp struct { + Subscriptions []Subscription `xml:"ListSubscriptionsResult>Subscriptions>member"` + NextToken string + ResponseMetadata +} + +type AttributeEntry struct { + Key string `xml:"key"` + Value string `xml:"value"` +} + +type GetTopicAttributesResp struct { + Attributes []AttributeEntry `xml:"GetTopicAttributesResult>Attributes>entry"` + ResponseMetadata +} + +func makeParams(action string) map[string]string { + params := make(map[string]string) + params["Action"] = action + return params +} + +// ListTopics +// +// See http://goo.gl/lfrMK for more details. +func (sns *SNS) ListTopics(NextToken *string) (resp *ListTopicsResp, err error) { + resp = &ListTopicsResp{} + params := makeParams("ListTopics") + if NextToken != nil { + params["NextToken"] = *NextToken + } + err = sns.query(nil, nil, params, resp) + return +} + +// CreateTopic +// +// See http://goo.gl/m9aAt for more details. +func (sns *SNS) CreateTopic(Name string) (resp *CreateTopicResp, err error) { + resp = &CreateTopicResp{} + params := makeParams("CreateTopic") + params["Name"] = Name + err = sns.query(nil, nil, params, resp) + return +} + +// DeleteTopic +// +// See http://goo.gl/OXNcY for more details. +func (sns *SNS) DeleteTopic(topic Topic) (resp *DeleteTopicResp, err error) { + resp = &DeleteTopicResp{} + params := makeParams("DeleteTopic") + params["TopicArn"] = topic.TopicArn + err = sns.query(nil, nil, params, resp) + return +} + +// Delete +// +// Helper function for deleting a topic +func (topic *Topic) Delete() (resp *DeleteTopicResp, err error) { + return topic.SNS.DeleteTopic(*topic) +} + +// ListSubscriptions +// +// See http://goo.gl/k3aGn for more details. +func (sns *SNS) ListSubscriptions(NextToken *string) (resp *ListSubscriptionsResp, err error) { + resp = &ListSubscriptionsResp{} + params := makeParams("ListSubscriptions") + if NextToken != nil { + params["NextToken"] = *NextToken + } + err = sns.query(nil, nil, params, resp) + return +} + +// GetTopicAttributes +// +// See http://goo.gl/WXRoX for more details. +func (sns *SNS) GetTopicAttributes(TopicArn string) (resp *GetTopicAttributesResp, err error) { + resp = &GetTopicAttributesResp{} + params := makeParams("GetTopicAttributes") + params["TopicArn"] = TopicArn + err = sns.query(nil, nil, params, resp) + return +} + +type PublishOpt struct { + Message string + MessageStructure string + Subject string + TopicArn string +} + +type PublishResp struct { + MessageId string `xml:"PublishResult>MessageId"` + ResponseMetadata +} + +// Publish +// +// See http://goo.gl/AY2D8 for more details. +func (sns *SNS) Publish(options *PublishOpt) (resp *PublishResp, err error) { + resp = &PublishResp{} + params := makeParams("Publish") + + if options.Subject != "" { + params["Subject"] = options.Subject + } + + if options.MessageStructure != "" { + params["MessageStructure"] = options.MessageStructure + } + + if options.Message != "" { + params["Message"] = options.Message + } + + if options.TopicArn != "" { + params["TopicArn"] = options.TopicArn + } + + err = sns.query(nil, nil, params, resp) + return +} + +type SetTopicAttributesResponse struct { + ResponseMetadata +} + +// SetTopicAttributes +// +// See http://goo.gl/oVYW7 for more details. +func (sns *SNS) SetTopicAttributes(AttributeName, AttributeValue, TopicArn string) (resp *SetTopicAttributesResponse, err error) { + resp = &SetTopicAttributesResponse{} + params := makeParams("SetTopicAttributes") + + if AttributeName == "" || TopicArn == "" { + return nil, errors.New("Invalid Attribute Name or TopicArn") + } + + params["AttributeName"] = AttributeName + params["AttributeValue"] = AttributeValue + params["TopicArn"] = TopicArn + + err = sns.query(nil, nil, params, resp) + return +} + +type SubscribeResponse struct { + SubscriptionArn string `xml:"SubscribeResult>SubscriptionArn"` + ResponseMetadata +} + +// Subscribe +// +// See http://goo.gl/c3iGS for more details. +func (sns *SNS) Subscribe(Endpoint, Protocol, TopicArn string) (resp *SubscribeResponse, err error) { + resp = &SubscribeResponse{} + params := makeParams("Subscribe") + + params["Endpoint"] = Endpoint + params["Protocol"] = Protocol + params["TopicArn"] = TopicArn + + err = sns.query(nil, nil, params, resp) + return +} + +type UnsubscribeResponse struct { + ResponseMetadata +} + +// Unsubscribe +// +// See http://goo.gl/4l5Ge for more details. +func (sns *SNS) Unsubscribe(SubscriptionArn string) (resp *UnsubscribeResponse, err error) { + resp = &UnsubscribeResponse{} + params := makeParams("Unsubscribe") + + params["SubscriptionArn"] = SubscriptionArn + + err = sns.query(nil, nil, params, resp) + return +} + +type ConfirmSubscriptionResponse struct { + SubscriptionArn string `xml:"ConfirmSubscriptionResult>SubscriptionArn"` + ResponseMetadata +} + +type ConfirmSubscriptionOpt struct { + AuthenticateOnUnsubscribe string + Token string + TopicArn string +} + +// ConfirmSubscription +// +// See http://goo.gl/3hXzH for more details. +func (sns *SNS) ConfirmSubscription(options *ConfirmSubscriptionOpt) (resp *ConfirmSubscriptionResponse, err error) { + resp = &ConfirmSubscriptionResponse{} + params := makeParams("ConfirmSubscription") + + if options.AuthenticateOnUnsubscribe != "" { + params["AuthenticateOnUnsubscribe"] = options.AuthenticateOnUnsubscribe + } + + params["Token"] = options.Token + params["TopicArn"] = options.TopicArn + + err = sns.query(nil, nil, params, resp) + return +} + +type Permission struct { + ActionName string + AccountId string +} + +type AddPermissionResponse struct { + ResponseMetadata +} + +// AddPermission +// +// See http://goo.gl/mbY4a for more details. +func (sns *SNS) AddPermission(permissions []Permission, Label, TopicArn string) (resp *AddPermissionResponse, err error) { + resp = &AddPermissionResponse{} + params := makeParams("AddPermission") + + for i, p := range permissions { + params["AWSAccountId.member."+strconv.Itoa(i+1)] = p.AccountId + params["ActionName.member."+strconv.Itoa(i+1)] = p.ActionName + } + + params["Label"] = Label + params["TopicArn"] = TopicArn + + err = sns.query(nil, nil, params, resp) + return +} + +type RemovePermissionResponse struct { + ResponseMetadata +} + +// RemovePermission +// +// See http://goo.gl/wGl5j for more details. +func (sns *SNS) RemovePermission(Label, TopicArn string) (resp *RemovePermissionResponse, err error) { + resp = &RemovePermissionResponse{} + params := makeParams("RemovePermission") + + params["Label"] = Label + params["TopicArn"] = TopicArn + + err = sns.query(nil, nil, params, resp) + return +} + +type ListSubscriptionByTopicResponse struct { + Subscriptions []Subscription `xml:"ListSubscriptionsByTopicResult>Subscriptions>member"` + ResponseMetadata +} + +type ListSubscriptionByTopicOpt struct { + NextToken string + TopicArn string +} + +// ListSubscriptionByTopic +// +// See http://goo.gl/LaVcC for more details. +func (sns *SNS) ListSubscriptionByTopic(options *ListSubscriptionByTopicOpt) (resp *ListSubscriptionByTopicResponse, err error) { + resp = &ListSubscriptionByTopicResponse{} + params := makeParams("ListSbubscriptionByTopic") + + if options.NextToken != "" { + params["NextToken"] = options.NextToken + } + + params["TopicArn"] = options.TopicArn + + err = sns.query(nil, nil, params, resp) + return +} + +type Error struct { + StatusCode int + Code string + Message string + RequestId string +} + +func (err *Error) Error() string { + return err.Message +} + +type xmlErrors struct { + RequestId string + Errors []Error `xml:"Errors>Error"` +} + +func (sns *SNS) query(topic *Topic, message *Message, params map[string]string, resp interface{}) error { + params["Timestamp"] = time.Now().UTC().Format(time.RFC3339) + u, err := url.Parse(sns.Region.SNSEndpoint) + if err != nil { + return err + } + + sign(sns.Auth, "GET", "/", params, u.Host) + u.RawQuery = multimap(params).Encode() + r, err := http.Get(u.String()) + if err != nil { + return err + } + defer r.Body.Close() + + //dump, _ := http.DumpResponse(r, true) + //println("DUMP:\n", string(dump)) + //return nil + + if r.StatusCode != 200 { + return buildError(r) + } + err = xml.NewDecoder(r.Body).Decode(resp) + return err +} + +func buildError(r *http.Response) error { + errors := xmlErrors{} + xml.NewDecoder(r.Body).Decode(&errors) + var err Error + if len(errors.Errors) > 0 { + err = errors.Errors[0] + } + err.RequestId = errors.RequestId + err.StatusCode = r.StatusCode + if err.Message == "" { + err.Message = r.Status + } + return &err +} + +func multimap(p map[string]string) url.Values { + q := make(url.Values, len(p)) + for k, v := range p { + q[k] = []string{v} + } + return q +} diff --git a/vendor/src/launchpad.net/goamz/exp/sns/sns_test.go b/vendor/src/launchpad.net/goamz/exp/sns/sns_test.go new file mode 100644 index 0000000000..6ecaf3be4d --- /dev/null +++ b/vendor/src/launchpad.net/goamz/exp/sns/sns_test.go @@ -0,0 +1,245 @@ +package sns_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/exp/sns" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" + "testing" +) + +func Test(t *testing.T) { + TestingT(t) +} + +var _ = Suite(&S{}) + +type S struct { + sns *sns.SNS +} + +var testServer = testutil.NewHTTPServer() + +func (s *S) SetUpSuite(c *C) { + testServer.Start() + auth := aws.Auth{"abc", "123"} + s.sns = sns.New(auth, aws.Region{SNSEndpoint: testServer.URL}) +} + +func (s *S) TearDownSuite(c *C) { + testServer.Stop() +} + +func (s *S) TearDownTest(c *C) { + testServer.Flush() +} + +func (s *S) TestListTopicsOK(c *C) { + testServer.Response(200, nil, TestListTopicsXmlOK) + + resp, err := s.sns.ListTopics(nil) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "bd10b26c-e30e-11e0-ba29-93c3aca2f103") + c.Assert(err, IsNil) +} + +func (s *S) TestCreateTopic(c *C) { + testServer.Response(200, nil, TestCreateTopicXmlOK) + + resp, err := s.sns.CreateTopic("My-Topic") + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.Topic.TopicArn, Equals, "arn:aws:sns:us-east-1:123456789012:My-Topic") + c.Assert(resp.ResponseMetadata.RequestId, Equals, "a8dec8b3-33a4-11df-8963-01868b7c937a") + c.Assert(err, IsNil) +} + +func (s *S) TestDeleteTopic(c *C) { + testServer.Response(200, nil, TestDeleteTopicXmlOK) + + t := sns.Topic{nil, "arn:aws:sns:us-east-1:123456789012:My-Topic"} + resp, err := s.sns.DeleteTopic(t) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "f3aa9ac9-3c3d-11df-8235-9dab105e9c32") + c.Assert(err, IsNil) +} + +func (s *S) TestListSubscriptions(c *C) { + testServer.Response(200, nil, TestListSubscriptionsXmlOK) + + resp, err := s.sns.ListSubscriptions(nil) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(len(resp.Subscriptions), Not(Equals), 0) + c.Assert(resp.Subscriptions[0].Protocol, Equals, "email") + c.Assert(resp.Subscriptions[0].Endpoint, Equals, "example@amazon.com") + c.Assert(resp.Subscriptions[0].SubscriptionArn, Equals, "arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca") + c.Assert(resp.Subscriptions[0].TopicArn, Equals, "arn:aws:sns:us-east-1:698519295917:My-Topic") + c.Assert(resp.Subscriptions[0].Owner, Equals, "123456789012") + c.Assert(err, IsNil) +} + +func (s *S) TestGetTopicAttributes(c *C) { + testServer.Response(200, nil, TestGetTopicAttributesXmlOK) + + resp, err := s.sns.GetTopicAttributes("arn:aws:sns:us-east-1:123456789012:My-Topic") + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(len(resp.Attributes), Not(Equals), 0) + c.Assert(resp.Attributes[0].Key, Equals, "Owner") + c.Assert(resp.Attributes[0].Value, Equals, "123456789012") + c.Assert(resp.Attributes[1].Key, Equals, "Policy") + c.Assert(resp.Attributes[1].Value, Equals, `{"Version":"2008-10-17","Id":"us-east-1/698519295917/test__default_policy_ID","Statement" : [{"Effect":"Allow","Sid":"us-east-1/698519295917/test__default_statement_ID","Principal" : {"AWS": "*"},"Action":["SNS:GetTopicAttributes","SNS:SetTopicAttributes","SNS:AddPermission","SNS:RemovePermission","SNS:DeleteTopic","SNS:Subscribe","SNS:ListSubscriptionsByTopic","SNS:Publish","SNS:Receive"],"Resource":"arn:aws:sns:us-east-1:698519295917:test","Condition" : {"StringLike" : {"AWS:SourceArn": "arn:aws:*:*:698519295917:*"}}}]}`) + c.Assert(resp.ResponseMetadata.RequestId, Equals, "057f074c-33a7-11df-9540-99d0768312d3") + c.Assert(err, IsNil) +} + +func (s *S) TestPublish(c *C) { + testServer.Response(200, nil, TestPublishXmlOK) + + pubOpt := &sns.PublishOpt{"foobar", "", "subject", "arn:aws:sns:us-east-1:123456789012:My-Topic"} + resp, err := s.sns.Publish(pubOpt) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.MessageId, Equals, "94f20ce6-13c5-43a0-9a9e-ca52d816e90b") + c.Assert(resp.ResponseMetadata.RequestId, Equals, "f187a3c1-376f-11df-8963-01868b7c937a") + c.Assert(err, IsNil) +} + +func (s *S) TestSetTopicAttributes(c *C) { + testServer.Response(200, nil, TestSetTopicAttributesXmlOK) + + resp, err := s.sns.SetTopicAttributes("DisplayName", "MyTopicName", "arn:aws:sns:us-east-1:123456789012:My-Topic") + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "a8763b99-33a7-11df-a9b7-05d48da6f042") + c.Assert(err, IsNil) +} + +func (s *S) TestSubscribe(c *C) { + testServer.Response(200, nil, TestSubscribeXmlOK) + + resp, err := s.sns.Subscribe("example@amazon.com", "email", "arn:aws:sns:us-east-1:123456789012:My-Topic") + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.SubscriptionArn, Equals, "pending confirmation") + c.Assert(resp.ResponseMetadata.RequestId, Equals, "a169c740-3766-11df-8963-01868b7c937a") + c.Assert(err, IsNil) +} + +func (s *S) TestUnsubscribe(c *C) { + testServer.Response(200, nil, TestUnsubscribeXmlOK) + + resp, err := s.sns.Unsubscribe("arn:aws:sns:us-east-1:123456789012:My-Topic:a169c740-3766-11df-8963-01868b7c937a") + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.ResponseMetadata.RequestId, Equals, "18e0ac39-3776-11df-84c0-b93cc1666b84") + c.Assert(err, IsNil) +} + +func (s *S) TestConfirmSubscription(c *C) { + testServer.Response(200, nil, TestConfirmSubscriptionXmlOK) + + opt := &sns.ConfirmSubscriptionOpt{"", "51b2ff3edb475b7d91550e0ab6edf0c1de2a34e6ebaf6", "arn:aws:sns:us-east-1:123456789012:My-Topic"} + resp, err := s.sns.ConfirmSubscription(opt) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.SubscriptionArn, Equals, "arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca") + c.Assert(resp.ResponseMetadata.RequestId, Equals, "7a50221f-3774-11df-a9b7-05d48da6f042") + c.Assert(err, IsNil) +} + +func (s *S) TestAddPermission(c *C) { + testServer.Response(200, nil, TestAddPermissionXmlOK) + perm := make([]sns.Permission, 2) + perm[0].ActionName = "Publish" + perm[1].ActionName = "GetTopicAttributes" + perm[0].AccountId = "987654321000" + perm[1].AccountId = "876543210000" + + resp, err := s.sns.AddPermission(perm, "NewPermission", "arn:aws:sns:us-east-1:123456789012:My-Topic") + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.RequestId, Equals, "6a213e4e-33a8-11df-9540-99d0768312d3") + c.Assert(err, IsNil) +} + +func (s *S) TestRemovePermission(c *C) { + testServer.Response(200, nil, TestRemovePermissionXmlOK) + + resp, err := s.sns.RemovePermission("NewPermission", "arn:aws:sns:us-east-1:123456789012:My-Topic") + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(resp.RequestId, Equals, "d170b150-33a8-11df-995a-2d6fbe836cc1") + c.Assert(err, IsNil) +} + +func (s *S) TestListSubscriptionByTopic(c *C) { + testServer.Response(200, nil, TestListSubscriptionsByTopicXmlOK) + + opt := &sns.ListSubscriptionByTopicOpt{"", "arn:aws:sns:us-east-1:123456789012:My-Topic"} + resp, err := s.sns.ListSubscriptionByTopic(opt) + req := testServer.WaitRequest() + + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(len(resp.Subscriptions), Not(Equals), 0) + c.Assert(resp.Subscriptions[0].TopicArn, Equals, "arn:aws:sns:us-east-1:123456789012:My-Topic") + c.Assert(resp.Subscriptions[0].SubscriptionArn, Equals, "arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca") + c.Assert(resp.Subscriptions[0].Owner, Equals, "123456789012") + c.Assert(resp.Subscriptions[0].Endpoint, Equals, "example@amazon.com") + c.Assert(resp.Subscriptions[0].Protocol, Equals, "email") + c.Assert(err, IsNil) +} diff --git a/vendor/src/launchpad.net/goamz/iam/iam.go b/vendor/src/launchpad.net/goamz/iam/iam.go new file mode 100644 index 0000000000..348cfea177 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/iam/iam.go @@ -0,0 +1,432 @@ +// The iam package provides types and functions for interaction with the AWS +// Identity and Access Management (IAM) service. +package iam + +import ( + "encoding/xml" + "launchpad.net/goamz/aws" + "net/http" + "net/url" + "strconv" + "strings" + "time" +) + +// The IAM type encapsulates operations operations with the IAM endpoint. +type IAM struct { + aws.Auth + aws.Region +} + +// New creates a new IAM instance. +func New(auth aws.Auth, region aws.Region) *IAM { + return &IAM{auth, region} +} + +func (iam *IAM) query(params map[string]string, resp interface{}) error { + params["Version"] = "2010-05-08" + params["Timestamp"] = time.Now().In(time.UTC).Format(time.RFC3339) + endpoint, err := url.Parse(iam.IAMEndpoint) + if err != nil { + return err + } + sign(iam.Auth, "GET", "/", params, endpoint.Host) + endpoint.RawQuery = multimap(params).Encode() + r, err := http.Get(endpoint.String()) + if err != nil { + return err + } + defer r.Body.Close() + if r.StatusCode > 200 { + return buildError(r) + } + return xml.NewDecoder(r.Body).Decode(resp) +} + +func (iam *IAM) postQuery(params map[string]string, resp interface{}) error { + endpoint, err := url.Parse(iam.IAMEndpoint) + if err != nil { + return err + } + params["Version"] = "2010-05-08" + params["Timestamp"] = time.Now().In(time.UTC).Format(time.RFC3339) + sign(iam.Auth, "POST", "/", params, endpoint.Host) + encoded := multimap(params).Encode() + body := strings.NewReader(encoded) + req, err := http.NewRequest("POST", endpoint.String(), body) + if err != nil { + return err + } + req.Header.Set("Host", endpoint.Host) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + req.Header.Set("Content-Length", strconv.Itoa(len(encoded))) + r, err := http.DefaultClient.Do(req) + if err != nil { + return err + } + defer r.Body.Close() + if r.StatusCode > 200 { + return buildError(r) + } + return xml.NewDecoder(r.Body).Decode(resp) +} + +func buildError(r *http.Response) error { + var ( + err Error + errors xmlErrors + ) + xml.NewDecoder(r.Body).Decode(&errors) + if len(errors.Errors) > 0 { + err = errors.Errors[0] + } + err.StatusCode = r.StatusCode + if err.Message == "" { + err.Message = r.Status + } + return &err +} + +func multimap(p map[string]string) url.Values { + q := make(url.Values, len(p)) + for k, v := range p { + q[k] = []string{v} + } + return q +} + +// Response to a CreateUser request. +// +// See http://goo.gl/JS9Gz for more details. +type CreateUserResp struct { + RequestId string `xml:"ResponseMetadata>RequestId"` + User User `xml:"CreateUserResult>User"` +} + +// User encapsulates a user managed by IAM. +// +// See http://goo.gl/BwIQ3 for more details. +type User struct { + Arn string + Path string + Id string `xml:"UserId"` + Name string `xml:"UserName"` +} + +// CreateUser creates a new user in IAM. +// +// See http://goo.gl/JS9Gz for more details. +func (iam *IAM) CreateUser(name, path string) (*CreateUserResp, error) { + params := map[string]string{ + "Action": "CreateUser", + "Path": path, + "UserName": name, + } + resp := new(CreateUserResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// Response for GetUser requests. +// +// See http://goo.gl/ZnzRN for more details. +type GetUserResp struct { + RequestId string `xml:"ResponseMetadata>RequestId"` + User User `xml:"GetUserResult>User"` +} + +// GetUser gets a user from IAM. +// +// See http://goo.gl/ZnzRN for more details. +func (iam *IAM) GetUser(name string) (*GetUserResp, error) { + params := map[string]string{ + "Action": "GetUser", + "UserName": name, + } + resp := new(GetUserResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// DeleteUser deletes a user from IAM. +// +// See http://goo.gl/jBuCG for more details. +func (iam *IAM) DeleteUser(name string) (*SimpleResp, error) { + params := map[string]string{ + "Action": "DeleteUser", + "UserName": name, + } + resp := new(SimpleResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// Response to a CreateGroup request. +// +// See http://goo.gl/n7NNQ for more details. +type CreateGroupResp struct { + Group Group `xml:"CreateGroupResult>Group"` + RequestId string `xml:"ResponseMetadata>RequestId"` +} + +// Group encapsulates a group managed by IAM. +// +// See http://goo.gl/ae7Vs for more details. +type Group struct { + Arn string + Id string `xml:"GroupId"` + Name string `xml:"GroupName"` + Path string +} + +// CreateGroup creates a new group in IAM. +// +// The path parameter can be used to identify which division or part of the +// organization the user belongs to. +// +// If path is unset ("") it defaults to "/". +// +// See http://goo.gl/n7NNQ for more details. +func (iam *IAM) CreateGroup(name string, path string) (*CreateGroupResp, error) { + params := map[string]string{ + "Action": "CreateGroup", + "GroupName": name, + } + if path != "" { + params["Path"] = path + } + resp := new(CreateGroupResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// Response to a ListGroups request. +// +// See http://goo.gl/W2TRj for more details. +type GroupsResp struct { + Groups []Group `xml:"ListGroupsResult>Groups>member"` + RequestId string `xml:"ResponseMetadata>RequestId"` +} + +// Groups list the groups that have the specified path prefix. +// +// The parameter pathPrefix is optional. If pathPrefix is "", all groups are +// returned. +// +// See http://goo.gl/W2TRj for more details. +func (iam *IAM) Groups(pathPrefix string) (*GroupsResp, error) { + params := map[string]string{ + "Action": "ListGroups", + } + if pathPrefix != "" { + params["PathPrefix"] = pathPrefix + } + resp := new(GroupsResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// DeleteGroup deletes a group from IAM. +// +// See http://goo.gl/d5i2i for more details. +func (iam *IAM) DeleteGroup(name string) (*SimpleResp, error) { + params := map[string]string{ + "Action": "DeleteGroup", + "GroupName": name, + } + resp := new(SimpleResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// Response to a CreateAccessKey request. +// +// See http://goo.gl/L46Py for more details. +type CreateAccessKeyResp struct { + RequestId string `xml:"ResponseMetadata>RequestId"` + AccessKey AccessKey `xml:"CreateAccessKeyResult>AccessKey"` +} + +// AccessKey encapsulates an access key generated for a user. +// +// See http://goo.gl/LHgZR for more details. +type AccessKey struct { + UserName string + Id string `xml:"AccessKeyId"` + Secret string `xml:"SecretAccessKey,omitempty"` + Status string +} + +// CreateAccessKey creates a new access key in IAM. +// +// See http://goo.gl/L46Py for more details. +func (iam *IAM) CreateAccessKey(userName string) (*CreateAccessKeyResp, error) { + params := map[string]string{ + "Action": "CreateAccessKey", + "UserName": userName, + } + resp := new(CreateAccessKeyResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// Response to AccessKeys request. +// +// See http://goo.gl/Vjozx for more details. +type AccessKeysResp struct { + RequestId string `xml:"ResponseMetadata>RequestId"` + AccessKeys []AccessKey `xml:"ListAccessKeysResult>AccessKeyMetadata>member"` +} + +// AccessKeys lists all acccess keys associated with a user. +// +// The userName parameter is optional. If set to "", the userName is determined +// implicitly based on the AWS Access Key ID used to sign the request. +// +// See http://goo.gl/Vjozx for more details. +func (iam *IAM) AccessKeys(userName string) (*AccessKeysResp, error) { + params := map[string]string{ + "Action": "ListAccessKeys", + } + if userName != "" { + params["UserName"] = userName + } + resp := new(AccessKeysResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// DeleteAccessKey deletes an access key from IAM. +// +// The userName parameter is optional. If set to "", the userName is determined +// implicitly based on the AWS Access Key ID used to sign the request. +// +// See http://goo.gl/hPGhw for more details. +func (iam *IAM) DeleteAccessKey(id, userName string) (*SimpleResp, error) { + params := map[string]string{ + "Action": "DeleteAccessKey", + "AccessKeyId": id, + } + if userName != "" { + params["UserName"] = userName + } + resp := new(SimpleResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// Response to a GetUserPolicy request. +// +// See http://goo.gl/BH04O for more details. +type GetUserPolicyResp struct { + Policy UserPolicy `xml:"GetUserPolicyResult"` + RequestId string `xml:"ResponseMetadata>RequestId"` +} + +// UserPolicy encapsulates an IAM group policy. +// +// See http://goo.gl/C7hgS for more details. +type UserPolicy struct { + Name string `xml:"PolicyName"` + UserName string `xml:"UserName"` + Document string `xml:"PolicyDocument"` +} + +// GetUserPolicy gets a user policy in IAM. +// +// See http://goo.gl/BH04O for more details. +func (iam *IAM) GetUserPolicy(userName, policyName string) (*GetUserPolicyResp, error) { + params := map[string]string{ + "Action": "GetUserPolicy", + "UserName": userName, + "PolicyName": policyName, + } + resp := new(GetUserPolicyResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil + return nil, nil +} + +// PutUserPolicy creates a user policy in IAM. +// +// See http://goo.gl/ldCO8 for more details. +func (iam *IAM) PutUserPolicy(userName, policyName, policyDocument string) (*SimpleResp, error) { + params := map[string]string{ + "Action": "PutUserPolicy", + "UserName": userName, + "PolicyName": policyName, + "PolicyDocument": policyDocument, + } + resp := new(SimpleResp) + if err := iam.postQuery(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +// DeleteUserPolicy deletes a user policy from IAM. +// +// See http://goo.gl/7Jncn for more details. +func (iam *IAM) DeleteUserPolicy(userName, policyName string) (*SimpleResp, error) { + params := map[string]string{ + "Action": "DeleteUserPolicy", + "PolicyName": policyName, + "UserName": userName, + } + resp := new(SimpleResp) + if err := iam.query(params, resp); err != nil { + return nil, err + } + return resp, nil +} + +type SimpleResp struct { + RequestId string `xml:"ResponseMetadata>RequestId"` +} + +type xmlErrors struct { + Errors []Error `xml:"Error"` +} + +// Error encapsulates an IAM error. +type Error struct { + // HTTP status code of the error. + StatusCode int + + // AWS code of the error. + Code string + + // Message explaining the error. + Message string +} + +func (e *Error) Error() string { + var prefix string + if e.Code != "" { + prefix = e.Code + ": " + } + if prefix == "" && e.StatusCode > 0 { + prefix = strconv.Itoa(e.StatusCode) + ": " + } + return prefix + e.Message +} diff --git a/vendor/src/launchpad.net/goamz/iam/iam_test.go b/vendor/src/launchpad.net/goamz/iam/iam_test.go new file mode 100644 index 0000000000..fa2631d04c --- /dev/null +++ b/vendor/src/launchpad.net/goamz/iam/iam_test.go @@ -0,0 +1,282 @@ +package iam_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/iam" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" + "strings" + "testing" +) + +func Test(t *testing.T) { + TestingT(t) +} + +type S struct { + iam *iam.IAM +} + +var _ = Suite(&S{}) + +var testServer = testutil.NewHTTPServer() + +func (s *S) SetUpSuite(c *C) { + testServer.Start() + auth := aws.Auth{"abc", "123"} + s.iam = iam.New(auth, aws.Region{IAMEndpoint: testServer.URL}) +} + +func (s *S) TearDownSuite(c *C) { + testServer.Stop() +} + +func (s *S) TearDownTest(c *C) { + testServer.Flush() +} + +func (s *S) TestCreateUser(c *C) { + testServer.Response(200, nil, CreateUserExample) + resp, err := s.iam.CreateUser("Bob", "/division_abc/subdivision_xyz/") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "CreateUser") + c.Assert(values.Get("UserName"), Equals, "Bob") + c.Assert(values.Get("Path"), Equals, "/division_abc/subdivision_xyz/") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + expected := iam.User{ + Path: "/division_abc/subdivision_xyz/", + Name: "Bob", + Id: "AIDACKCEVSQ6C2EXAMPLE", + Arn: "arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob", + } + c.Assert(resp.User, DeepEquals, expected) +} + +func (s *S) TestCreateUserConflict(c *C) { + testServer.Response(409, nil, DuplicateUserExample) + resp, err := s.iam.CreateUser("Bob", "/division_abc/subdivision_xyz/") + testServer.WaitRequest() + c.Assert(resp, IsNil) + c.Assert(err, NotNil) + e, ok := err.(*iam.Error) + c.Assert(ok, Equals, true) + c.Assert(e.Message, Equals, "User with name Bob already exists.") + c.Assert(e.Code, Equals, "EntityAlreadyExists") +} + +func (s *S) TestGetUser(c *C) { + testServer.Response(200, nil, GetUserExample) + resp, err := s.iam.GetUser("Bob") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "GetUser") + c.Assert(values.Get("UserName"), Equals, "Bob") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + expected := iam.User{ + Path: "/division_abc/subdivision_xyz/", + Name: "Bob", + Id: "AIDACKCEVSQ6C2EXAMPLE", + Arn: "arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob", + } + c.Assert(resp.User, DeepEquals, expected) +} + +func (s *S) TestDeleteUser(c *C) { + testServer.Response(200, nil, RequestIdExample) + resp, err := s.iam.DeleteUser("Bob") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "DeleteUser") + c.Assert(values.Get("UserName"), Equals, "Bob") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} + +func (s *S) TestCreateGroup(c *C) { + testServer.Response(200, nil, CreateGroupExample) + resp, err := s.iam.CreateGroup("Admins", "/admins/") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "CreateGroup") + c.Assert(values.Get("GroupName"), Equals, "Admins") + c.Assert(values.Get("Path"), Equals, "/admins/") + c.Assert(err, IsNil) + c.Assert(resp.Group.Path, Equals, "/admins/") + c.Assert(resp.Group.Name, Equals, "Admins") + c.Assert(resp.Group.Id, Equals, "AGPACKCEVSQ6C2EXAMPLE") + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} + +func (s *S) TestCreateGroupWithoutPath(c *C) { + testServer.Response(200, nil, CreateGroupExample) + _, err := s.iam.CreateGroup("Managers", "") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "CreateGroup") + c.Assert(err, IsNil) + _, ok := map[string][]string(values)["Path"] + c.Assert(ok, Equals, false) +} + +func (s *S) TestDeleteGroup(c *C) { + testServer.Response(200, nil, RequestIdExample) + resp, err := s.iam.DeleteGroup("Admins") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "DeleteGroup") + c.Assert(values.Get("GroupName"), Equals, "Admins") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} + +func (s *S) TestListGroups(c *C) { + testServer.Response(200, nil, ListGroupsExample) + resp, err := s.iam.Groups("/division_abc/") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "ListGroups") + c.Assert(values.Get("PathPrefix"), Equals, "/division_abc/") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + expected := []iam.Group{ + { + Path: "/division_abc/subdivision_xyz/", + Name: "Admins", + Id: "AGPACKCEVSQ6C2EXAMPLE", + Arn: "arn:aws:iam::123456789012:group/Admins", + }, + { + Path: "/division_abc/subdivision_xyz/product_1234/engineering/", + Name: "Test", + Id: "AGP2MAB8DPLSRHEXAMPLE", + Arn: "arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/engineering/Test", + }, + { + Path: "/division_abc/subdivision_xyz/product_1234/", + Name: "Managers", + Id: "AGPIODR4TAW7CSEXAMPLE", + Arn: "arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/Managers", + }, + } + c.Assert(resp.Groups, DeepEquals, expected) +} + +func (s *S) TestListGroupsWithoutPathPrefix(c *C) { + testServer.Response(200, nil, ListGroupsExample) + _, err := s.iam.Groups("") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "ListGroups") + c.Assert(err, IsNil) + _, ok := map[string][]string(values)["PathPrefix"] + c.Assert(ok, Equals, false) +} + +func (s *S) TestCreateAccessKey(c *C) { + testServer.Response(200, nil, CreateAccessKeyExample) + resp, err := s.iam.CreateAccessKey("Bob") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "CreateAccessKey") + c.Assert(values.Get("UserName"), Equals, "Bob") + c.Assert(err, IsNil) + c.Assert(resp.AccessKey.UserName, Equals, "Bob") + c.Assert(resp.AccessKey.Id, Equals, "AKIAIOSFODNN7EXAMPLE") + c.Assert(resp.AccessKey.Secret, Equals, "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY") + c.Assert(resp.AccessKey.Status, Equals, "Active") +} + +func (s *S) TestDeleteAccessKey(c *C) { + testServer.Response(200, nil, RequestIdExample) + resp, err := s.iam.DeleteAccessKey("ysa8hasdhasdsi", "Bob") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "DeleteAccessKey") + c.Assert(values.Get("AccessKeyId"), Equals, "ysa8hasdhasdsi") + c.Assert(values.Get("UserName"), Equals, "Bob") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} + +func (s *S) TestDeleteAccessKeyBlankUserName(c *C) { + testServer.Response(200, nil, RequestIdExample) + _, err := s.iam.DeleteAccessKey("ysa8hasdhasdsi", "") + c.Assert(err, IsNil) + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "DeleteAccessKey") + c.Assert(values.Get("AccessKeyId"), Equals, "ysa8hasdhasdsi") + _, ok := map[string][]string(values)["UserName"] + c.Assert(ok, Equals, false) +} + +func (s *S) TestAccessKeys(c *C) { + testServer.Response(200, nil, ListAccessKeyExample) + resp, err := s.iam.AccessKeys("Bob") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "ListAccessKeys") + c.Assert(values.Get("UserName"), Equals, "Bob") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") + c.Assert(resp.AccessKeys, HasLen, 2) + c.Assert(resp.AccessKeys[0].Id, Equals, "AKIAIOSFODNN7EXAMPLE") + c.Assert(resp.AccessKeys[0].UserName, Equals, "Bob") + c.Assert(resp.AccessKeys[0].Status, Equals, "Active") + c.Assert(resp.AccessKeys[1].Id, Equals, "AKIAI44QH8DHBEXAMPLE") + c.Assert(resp.AccessKeys[1].UserName, Equals, "Bob") + c.Assert(resp.AccessKeys[1].Status, Equals, "Inactive") +} + +func (s *S) TestAccessKeysBlankUserName(c *C) { + testServer.Response(200, nil, ListAccessKeyExample) + _, err := s.iam.AccessKeys("") + c.Assert(err, IsNil) + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "ListAccessKeys") + _, ok := map[string][]string(values)["UserName"] + c.Assert(ok, Equals, false) +} + +func (s *S) TestGetUserPolicy(c *C) { + testServer.Response(200, nil, GetUserPolicyExample) + resp, err := s.iam.GetUserPolicy("Bob", "AllAccessPolicy") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "GetUserPolicy") + c.Assert(values.Get("UserName"), Equals, "Bob") + c.Assert(values.Get("PolicyName"), Equals, "AllAccessPolicy") + c.Assert(err, IsNil) + c.Assert(resp.Policy.UserName, Equals, "Bob") + c.Assert(resp.Policy.Name, Equals, "AllAccessPolicy") + c.Assert(strings.TrimSpace(resp.Policy.Document), Equals, `{"Statement":[{"Effect":"Allow","Action":"*","Resource":"*"}]}`) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} + +func (s *S) TestPutUserPolicy(c *C) { + document := `{ + "Statement": [ + { + "Action": [ + "s3:*" + ], + "Effect": "Allow", + "Resource": [ + "arn:aws:s3:::8shsns19s90ajahadsj/*", + "arn:aws:s3:::8shsns19s90ajahadsj" + ] + }] + }` + testServer.Response(200, nil, RequestIdExample) + resp, err := s.iam.PutUserPolicy("Bob", "AllAccessPolicy", document) + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "POST") + c.Assert(req.FormValue("Action"), Equals, "PutUserPolicy") + c.Assert(req.FormValue("PolicyName"), Equals, "AllAccessPolicy") + c.Assert(req.FormValue("UserName"), Equals, "Bob") + c.Assert(req.FormValue("PolicyDocument"), Equals, document) + c.Assert(req.FormValue("Version"), Equals, "2010-05-08") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} + +func (s *S) TestDeleteUserPolicy(c *C) { + testServer.Response(200, nil, RequestIdExample) + resp, err := s.iam.DeleteUserPolicy("Bob", "AllAccessPolicy") + values := testServer.WaitRequest().URL.Query() + c.Assert(values.Get("Action"), Equals, "DeleteUserPolicy") + c.Assert(values.Get("PolicyName"), Equals, "AllAccessPolicy") + c.Assert(values.Get("UserName"), Equals, "Bob") + c.Assert(err, IsNil) + c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE") +} diff --git a/vendor/src/launchpad.net/goamz/iam/iami_test.go b/vendor/src/launchpad.net/goamz/iam/iami_test.go new file mode 100644 index 0000000000..37d07c8343 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/iam/iami_test.go @@ -0,0 +1,208 @@ +package iam_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/iam" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" + "net/url" +) + +// AmazonServer represents an Amazon AWS server. +type AmazonServer struct { + auth aws.Auth +} + +func (s *AmazonServer) SetUp(c *C) { + auth, err := aws.EnvAuth() + if err != nil { + c.Fatal(err) + } + s.auth = auth +} + +var _ = Suite(&AmazonClientSuite{}) + +// AmazonClientSuite tests the client against a live AWS server. +type AmazonClientSuite struct { + srv AmazonServer + ClientTests +} + +func (s *AmazonClientSuite) SetUpSuite(c *C) { + if !testutil.Amazon { + c.Skip("AmazonClientSuite tests not enabled") + } + s.srv.SetUp(c) + s.iam = iam.New(s.srv.auth, aws.USEast) +} + +// ClientTests defines integration tests designed to test the client. +// It is not used as a test suite in itself, but embedded within +// another type. +type ClientTests struct { + iam *iam.IAM +} + +func (s *ClientTests) TestCreateAndDeleteUser(c *C) { + createResp, err := s.iam.CreateUser("gopher", "/gopher/") + c.Assert(err, IsNil) + getResp, err := s.iam.GetUser("gopher") + c.Assert(err, IsNil) + c.Assert(createResp.User, DeepEquals, getResp.User) + _, err = s.iam.DeleteUser("gopher") + c.Assert(err, IsNil) +} + +func (s *ClientTests) TestCreateUserError(c *C) { + _, err := s.iam.CreateUser("gopher", "/gopher/") + c.Assert(err, IsNil) + defer s.iam.DeleteUser("gopher") + _, err = s.iam.CreateUser("gopher", "/") + iamErr, ok := err.(*iam.Error) + c.Assert(ok, Equals, true) + c.Assert(iamErr.StatusCode, Equals, 409) + c.Assert(iamErr.Code, Equals, "EntityAlreadyExists") + c.Assert(iamErr.Message, Equals, "User with name gopher already exists.") +} + +func (s *ClientTests) TestDeleteUserError(c *C) { + _, err := s.iam.DeleteUser("gopher") + iamErr, ok := err.(*iam.Error) + c.Assert(ok, Equals, true) + c.Assert(iamErr.StatusCode, Equals, 404) + c.Assert(iamErr.Code, Equals, "NoSuchEntity") + c.Assert(iamErr.Message, Equals, "The user with name gopher cannot be found.") +} + +func (s *ClientTests) TestGetUserError(c *C) { + _, err := s.iam.GetUser("gopher") + iamErr, ok := err.(*iam.Error) + c.Assert(ok, Equals, true) + c.Assert(iamErr.StatusCode, Equals, 404) + c.Assert(iamErr.Code, Equals, "NoSuchEntity") + c.Assert(iamErr.Message, Equals, "The user with name gopher cannot be found.") +} + +func (s *ClientTests) TestCreateListAndDeleteAccessKey(c *C) { + createUserResp, err := s.iam.CreateUser("gopher", "/gopher/") + c.Assert(err, IsNil) + defer s.iam.DeleteUser(createUserResp.User.Name) + createKeyResp, err := s.iam.CreateAccessKey(createUserResp.User.Name) + c.Assert(err, IsNil) + listKeyResp, err := s.iam.AccessKeys(createUserResp.User.Name) + c.Assert(err, IsNil) + c.Assert(listKeyResp.AccessKeys, HasLen, 1) + createKeyResp.AccessKey.Secret = "" + c.Assert(listKeyResp.AccessKeys[0], DeepEquals, createKeyResp.AccessKey) + _, err = s.iam.DeleteAccessKey(createKeyResp.AccessKey.Id, createUserResp.User.Name) + c.Assert(err, IsNil) +} + +func (s *ClientTests) TestCreateAccessKeyError(c *C) { + _, err := s.iam.CreateAccessKey("unknowngopher") + c.Assert(err, NotNil) + iamErr, ok := err.(*iam.Error) + c.Assert(ok, Equals, true) + c.Assert(iamErr.StatusCode, Equals, 404) + c.Assert(iamErr.Code, Equals, "NoSuchEntity") + c.Assert(iamErr.Message, Equals, "The user with name unknowngopher cannot be found.") +} + +func (s *ClientTests) TestListAccessKeysUserNotFound(c *C) { + _, err := s.iam.AccessKeys("unknowngopher") + c.Assert(err, NotNil) + iamErr, ok := err.(*iam.Error) + c.Assert(ok, Equals, true) + c.Assert(iamErr.StatusCode, Equals, 404) + c.Assert(iamErr.Code, Equals, "NoSuchEntity") + c.Assert(iamErr.Message, Equals, "The user with name unknowngopher cannot be found.") +} + +func (s *ClientTests) TestListAccessKeysUserWithoutKeys(c *C) { + createUserResp, err := s.iam.CreateUser("gopher", "/") + c.Assert(err, IsNil) + defer s.iam.DeleteUser(createUserResp.User.Name) + resp, err := s.iam.AccessKeys(createUserResp.User.Name) + c.Assert(err, IsNil) + c.Assert(resp.AccessKeys, HasLen, 0) +} + +func (s *ClientTests) TestCreateListAndDeleteGroup(c *C) { + cResp1, err := s.iam.CreateGroup("Finances", "/finances/") + c.Assert(err, IsNil) + cResp2, err := s.iam.CreateGroup("DevelopmentManagers", "/development/managers/") + c.Assert(err, IsNil) + lResp, err := s.iam.Groups("/development/") + c.Assert(err, IsNil) + c.Assert(lResp.Groups, HasLen, 1) + c.Assert(cResp2.Group, DeepEquals, lResp.Groups[0]) + lResp, err = s.iam.Groups("") + c.Assert(err, IsNil) + c.Assert(lResp.Groups, HasLen, 2) + if lResp.Groups[0].Name == cResp1.Group.Name { + c.Assert([]iam.Group{cResp1.Group, cResp2.Group}, DeepEquals, lResp.Groups) + } else { + c.Assert([]iam.Group{cResp2.Group, cResp1.Group}, DeepEquals, lResp.Groups) + } + _, err = s.iam.DeleteGroup("DevelopmentManagers") + c.Assert(err, IsNil) + lResp, err = s.iam.Groups("/development/") + c.Assert(err, IsNil) + c.Assert(lResp.Groups, HasLen, 0) + _, err = s.iam.DeleteGroup("Finances") + c.Assert(err, IsNil) +} + +func (s *ClientTests) TestCreateGroupError(c *C) { + _, err := s.iam.CreateGroup("Finances", "/finances/") + c.Assert(err, IsNil) + defer s.iam.DeleteGroup("Finances") + _, err = s.iam.CreateGroup("Finances", "/something-else/") + iamErr, ok := err.(*iam.Error) + c.Assert(ok, Equals, true) + c.Assert(iamErr.StatusCode, Equals, 409) + c.Assert(iamErr.Code, Equals, "EntityAlreadyExists") + c.Assert(iamErr.Message, Equals, "Group with name Finances already exists.") +} + +func (s *ClientTests) TestDeleteGroupError(c *C) { + _, err := s.iam.DeleteGroup("Finances") + iamErr, ok := err.(*iam.Error) + c.Assert(ok, Equals, true) + c.Assert(iamErr.StatusCode, Equals, 404) + c.Assert(iamErr.Code, Equals, "NoSuchEntity") + c.Assert(iamErr.Message, Equals, "The group with name Finances cannot be found.") +} + +func (s *ClientTests) TestPutGetAndDeleteUserPolicy(c *C) { + userResp, err := s.iam.CreateUser("gopher", "/gopher/") + c.Assert(err, IsNil) + defer s.iam.DeleteUser(userResp.User.Name) + document := `{ + "Statement": [ + { + "Action": [ + "s3:*" + ], + "Effect": "Allow", + "Resource": [ + "arn:aws:s3:::8shsns19s90ajahadsj/*", + "arn:aws:s3:::8shsns19s90ajahadsj" + ] + }] + }` + _, err = s.iam.PutUserPolicy(userResp.User.Name, "EverythingS3", document) + c.Assert(err, IsNil) + resp, err := s.iam.GetUserPolicy(userResp.User.Name, "EverythingS3") + c.Assert(err, IsNil) + c.Assert(resp.Policy.Name, Equals, "EverythingS3") + c.Assert(resp.Policy.UserName, Equals, userResp.User.Name) + gotDocument, err := url.QueryUnescape(resp.Policy.Document) + c.Assert(err, IsNil) + c.Assert(gotDocument, Equals, document) + _, err = s.iam.DeleteUserPolicy(userResp.User.Name, "EverythingS3") + c.Assert(err, IsNil) + _, err = s.iam.GetUserPolicy(userResp.User.Name, "EverythingS3") + c.Assert(err, NotNil) +} diff --git a/vendor/src/launchpad.net/goamz/iam/iamt_test.go b/vendor/src/launchpad.net/goamz/iam/iamt_test.go new file mode 100644 index 0000000000..21fe984350 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/iam/iamt_test.go @@ -0,0 +1,39 @@ +package iam_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/iam" + "launchpad.net/goamz/iam/iamtest" + . "launchpad.net/gocheck" +) + +// LocalServer represents a local ec2test fake server. +type LocalServer struct { + auth aws.Auth + region aws.Region + srv *iamtest.Server +} + +func (s *LocalServer) SetUp(c *C) { + srv, err := iamtest.NewServer() + c.Assert(err, IsNil) + c.Assert(srv, NotNil) + + s.srv = srv + s.region = aws.Region{IAMEndpoint: srv.URL()} +} + +// LocalServerSuite defines tests that will run +// against the local iamtest server. It includes +// tests from ClientTests. +type LocalServerSuite struct { + srv LocalServer + ClientTests +} + +var _ = Suite(&LocalServerSuite{}) + +func (s *LocalServerSuite) SetUpSuite(c *C) { + s.srv.SetUp(c) + s.ClientTests.iam = iam.New(s.srv.auth, s.srv.region) +} diff --git a/vendor/src/launchpad.net/goamz/iam/iamtest/server.go b/vendor/src/launchpad.net/goamz/iam/iamtest/server.go new file mode 100644 index 0000000000..d79ddef0a9 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/iam/iamtest/server.go @@ -0,0 +1,432 @@ +// Package iamtest implements a fake IAM provider with the capability of +// inducing errors on any given operation, and retrospectively determining what +// operations have been carried out. +package iamtest + +import ( + "encoding/json" + "encoding/xml" + "fmt" + "launchpad.net/goamz/iam" + "net" + "net/http" + "strings" + "sync" +) + +type action struct { + srv *Server + w http.ResponseWriter + req *http.Request + reqId string +} + +// Server implements an IAM simulator for use in tests. +type Server struct { + reqId int + url string + listener net.Listener + users []iam.User + groups []iam.Group + accessKeys []iam.AccessKey + userPolicies []iam.UserPolicy + mutex sync.Mutex +} + +func NewServer() (*Server, error) { + l, err := net.Listen("tcp", "localhost:0") + if err != nil { + return nil, fmt.Errorf("cannot listen on localhost: %v", err) + } + srv := &Server{ + listener: l, + url: "http://" + l.Addr().String(), + } + go http.Serve(l, http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + srv.serveHTTP(w, req) + })) + return srv, nil +} + +// Quit closes down the server. +func (srv *Server) Quit() error { + return srv.listener.Close() +} + +// URL returns a URL for the server. +func (srv *Server) URL() string { + return srv.url +} + +type xmlErrors struct { + XMLName string `xml:"ErrorResponse"` + Error iam.Error +} + +func (srv *Server) error(w http.ResponseWriter, err *iam.Error) { + w.WriteHeader(err.StatusCode) + xmlErr := xmlErrors{Error: *err} + if e := xml.NewEncoder(w).Encode(xmlErr); e != nil { + panic(e) + } +} + +func (srv *Server) serveHTTP(w http.ResponseWriter, req *http.Request) { + req.ParseForm() + srv.mutex.Lock() + defer srv.mutex.Unlock() + action := req.FormValue("Action") + if action == "" { + srv.error(w, &iam.Error{ + StatusCode: 400, + Code: "MissingAction", + Message: "Missing action", + }) + } + if a, ok := actions[action]; ok { + reqId := fmt.Sprintf("req%0X", srv.reqId) + srv.reqId++ + if resp, err := a(srv, w, req, reqId); err == nil { + if err := xml.NewEncoder(w).Encode(resp); err != nil { + panic(err) + } + } else { + switch err.(type) { + case *iam.Error: + srv.error(w, err.(*iam.Error)) + default: + panic(err) + } + } + } else { + srv.error(w, &iam.Error{ + StatusCode: 400, + Code: "InvalidAction", + Message: "Invalid action: " + action, + }) + } +} + +func (srv *Server) createUser(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"UserName"}); err != nil { + return nil, err + } + path := req.FormValue("Path") + if path == "" { + path = "/" + } + name := req.FormValue("UserName") + for _, user := range srv.users { + if user.Name == name { + return nil, &iam.Error{ + StatusCode: 409, + Code: "EntityAlreadyExists", + Message: fmt.Sprintf("User with name %s already exists.", name), + } + } + } + user := iam.User{ + Id: "USER" + reqId + "EXAMPLE", + Arn: fmt.Sprintf("arn:aws:iam:::123456789012:user%s%s", path, name), + Name: name, + Path: path, + } + srv.users = append(srv.users, user) + return iam.CreateUserResp{ + RequestId: reqId, + User: user, + }, nil +} + +func (srv *Server) getUser(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"UserName"}); err != nil { + return nil, err + } + name := req.FormValue("UserName") + index, err := srv.findUser(name) + if err != nil { + return nil, err + } + return iam.GetUserResp{RequestId: reqId, User: srv.users[index]}, nil +} + +func (srv *Server) deleteUser(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"UserName"}); err != nil { + return nil, err + } + name := req.FormValue("UserName") + index, err := srv.findUser(name) + if err != nil { + return nil, err + } + copy(srv.users[index:], srv.users[index+1:]) + srv.users = srv.users[:len(srv.users)-1] + return iam.SimpleResp{RequestId: reqId}, nil +} + +func (srv *Server) createAccessKey(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"UserName"}); err != nil { + return nil, err + } + userName := req.FormValue("UserName") + if _, err := srv.findUser(userName); err != nil { + return nil, err + } + key := iam.AccessKey{ + Id: fmt.Sprintf("%s%d", userName, len(srv.accessKeys)), + Secret: "", + UserName: userName, + Status: "Active", + } + srv.accessKeys = append(srv.accessKeys, key) + return iam.CreateAccessKeyResp{RequestId: reqId, AccessKey: key}, nil +} + +func (srv *Server) deleteAccessKey(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"AccessKeyId", "UserName"}); err != nil { + return nil, err + } + key := req.FormValue("AccessKeyId") + index := -1 + for i, ak := range srv.accessKeys { + if ak.Id == key { + index = i + break + } + } + if index < 0 { + return nil, &iam.Error{ + StatusCode: 404, + Code: "NoSuchEntity", + Message: "No such key.", + } + } + copy(srv.accessKeys[index:], srv.accessKeys[index+1:]) + srv.accessKeys = srv.accessKeys[:len(srv.accessKeys)-1] + return iam.SimpleResp{RequestId: reqId}, nil +} + +func (srv *Server) listAccessKeys(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"UserName"}); err != nil { + return nil, err + } + userName := req.FormValue("UserName") + if _, err := srv.findUser(userName); err != nil { + return nil, err + } + var keys []iam.AccessKey + for _, k := range srv.accessKeys { + if k.UserName == userName { + keys = append(keys, k) + } + } + return iam.AccessKeysResp{ + RequestId: reqId, + AccessKeys: keys, + }, nil +} + +func (srv *Server) createGroup(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"GroupName"}); err != nil { + return nil, err + } + name := req.FormValue("GroupName") + path := req.FormValue("Path") + for _, group := range srv.groups { + if group.Name == name { + return nil, &iam.Error{ + StatusCode: 409, + Code: "EntityAlreadyExists", + Message: fmt.Sprintf("Group with name %s already exists.", name), + } + } + } + group := iam.Group{ + Id: "GROUP " + reqId + "EXAMPLE", + Arn: fmt.Sprintf("arn:aws:iam:::123456789012:group%s%s", path, name), + Name: name, + Path: path, + } + srv.groups = append(srv.groups, group) + return iam.CreateGroupResp{ + RequestId: reqId, + Group: group, + }, nil +} + +func (srv *Server) listGroups(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + pathPrefix := req.FormValue("PathPrefix") + if pathPrefix == "" { + return iam.GroupsResp{ + RequestId: reqId, + Groups: srv.groups, + }, nil + } + var groups []iam.Group + for _, group := range srv.groups { + if strings.HasPrefix(group.Path, pathPrefix) { + groups = append(groups, group) + } + } + return iam.GroupsResp{ + RequestId: reqId, + Groups: groups, + }, nil +} + +func (srv *Server) deleteGroup(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"GroupName"}); err != nil { + return nil, err + } + name := req.FormValue("GroupName") + index := -1 + for i, group := range srv.groups { + if group.Name == name { + index = i + break + } + } + if index == -1 { + return nil, &iam.Error{ + StatusCode: 404, + Code: "NoSuchEntity", + Message: fmt.Sprintf("The group with name %s cannot be found.", name), + } + } + copy(srv.groups[index:], srv.groups[index+1:]) + srv.groups = srv.groups[:len(srv.groups)-1] + return iam.SimpleResp{RequestId: reqId}, nil +} + +func (srv *Server) putUserPolicy(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"UserName", "PolicyDocument", "PolicyName"}); err != nil { + return nil, err + } + var exists bool + policyName := req.FormValue("PolicyName") + userName := req.FormValue("UserName") + for _, policy := range srv.userPolicies { + if policyName == policy.Name && userName == policy.UserName { + exists = true + break + } + } + if !exists { + policy := iam.UserPolicy{ + Name: policyName, + UserName: userName, + Document: req.FormValue("PolicyDocument"), + } + var dumb interface{} + if err := json.Unmarshal([]byte(policy.Document), &dumb); err != nil { + return nil, &iam.Error{ + StatusCode: 400, + Code: "MalformedPolicyDocument", + Message: "Malformed policy document", + } + } + srv.userPolicies = append(srv.userPolicies, policy) + } + return iam.SimpleResp{RequestId: reqId}, nil +} + +func (srv *Server) deleteUserPolicy(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"UserName", "PolicyName"}); err != nil { + return nil, err + } + policyName := req.FormValue("PolicyName") + userName := req.FormValue("UserName") + index := -1 + for i, policy := range srv.userPolicies { + if policyName == policy.Name && userName == policy.UserName { + index = i + break + } + } + if index < 0 { + return nil, &iam.Error{ + StatusCode: 404, + Code: "NoSuchEntity", + Message: "No such user policy", + } + } + copy(srv.userPolicies[index:], srv.userPolicies[index+1:]) + srv.userPolicies = srv.userPolicies[:len(srv.userPolicies)-1] + return iam.SimpleResp{RequestId: reqId}, nil +} + +func (srv *Server) getUserPolicy(w http.ResponseWriter, req *http.Request, reqId string) (interface{}, error) { + if err := srv.validate(req, []string{"UserName", "PolicyName"}); err != nil { + return nil, err + } + policyName := req.FormValue("PolicyName") + userName := req.FormValue("UserName") + index := -1 + for i, policy := range srv.userPolicies { + if policyName == policy.Name && userName == policy.UserName { + index = i + break + } + } + if index < 0 { + return nil, &iam.Error{ + StatusCode: 404, + Code: "NoSuchEntity", + Message: "No such user policy", + } + } + return iam.GetUserPolicyResp{ + Policy: srv.userPolicies[index], + RequestId: reqId, + }, nil +} + +func (srv *Server) findUser(userName string) (int, error) { + var ( + err error + index = -1 + ) + for i, user := range srv.users { + if user.Name == userName { + index = i + break + } + } + if index < 0 { + err = &iam.Error{ + StatusCode: 404, + Code: "NoSuchEntity", + Message: fmt.Sprintf("The user with name %s cannot be found.", userName), + } + } + return index, err +} + +// Validates the presence of required request parameters. +func (srv *Server) validate(req *http.Request, required []string) error { + for _, r := range required { + if req.FormValue(r) == "" { + return &iam.Error{ + StatusCode: 400, + Code: "InvalidParameterCombination", + Message: fmt.Sprintf("%s is required.", r), + } + } + } + return nil +} + +var actions = map[string]func(*Server, http.ResponseWriter, *http.Request, string) (interface{}, error){ + "CreateUser": (*Server).createUser, + "DeleteUser": (*Server).deleteUser, + "GetUser": (*Server).getUser, + "CreateAccessKey": (*Server).createAccessKey, + "DeleteAccessKey": (*Server).deleteAccessKey, + "ListAccessKeys": (*Server).listAccessKeys, + "PutUserPolicy": (*Server).putUserPolicy, + "DeleteUserPolicy": (*Server).deleteUserPolicy, + "GetUserPolicy": (*Server).getUserPolicy, + "CreateGroup": (*Server).createGroup, + "DeleteGroup": (*Server).deleteGroup, + "ListGroups": (*Server).listGroups, +} diff --git a/vendor/src/launchpad.net/goamz/iam/responses_test.go b/vendor/src/launchpad.net/goamz/iam/responses_test.go new file mode 100644 index 0000000000..cd617d8fb0 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/iam/responses_test.go @@ -0,0 +1,155 @@ +package iam_test + +// http://goo.gl/EUIvl +var CreateUserExample = ` + + + + /division_abc/subdivision_xyz/ + Bob + AIDACKCEVSQ6C2EXAMPLE + arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob + + + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + +` + +var DuplicateUserExample = ` + + + Sender + EntityAlreadyExists + User with name Bob already exists. + + 1d5f5000-1316-11e2-a60f-91a8e6fb6d21 + +` + +var GetUserExample = ` + + + + /division_abc/subdivision_xyz/ + Bob + AIDACKCEVSQ6C2EXAMPLE + arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob + + + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + +` + +var CreateGroupExample = ` + + + + /admins/ + Admins + AGPACKCEVSQ6C2EXAMPLE + arn:aws:iam::123456789012:group/Admins + + + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + +` + +var ListGroupsExample = ` + + + + + /division_abc/subdivision_xyz/ + Admins + AGPACKCEVSQ6C2EXAMPLE + arn:aws:iam::123456789012:group/Admins + + + /division_abc/subdivision_xyz/product_1234/engineering/ + Test + AGP2MAB8DPLSRHEXAMPLE + arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/engineering/Test + + + /division_abc/subdivision_xyz/product_1234/ + Managers + AGPIODR4TAW7CSEXAMPLE + arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/Managers + + + false + + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + +` + +var RequestIdExample = ` + + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + +` + +var CreateAccessKeyExample = ` + + + + Bob + AKIAIOSFODNN7EXAMPLE + Active + wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY + + + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + +` + +var ListAccessKeyExample = ` + + + Bob + + + Bob + AKIAIOSFODNN7EXAMPLE + Active + + + Bob + AKIAI44QH8DHBEXAMPLE + Inactive + + + false + + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + +` + +var GetUserPolicyExample = ` + + + Bob + AllAccessPolicy + + {"Statement":[{"Effect":"Allow","Action":"*","Resource":"*"}]} + + + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + + +` diff --git a/vendor/src/launchpad.net/goamz/iam/sign.go b/vendor/src/launchpad.net/goamz/iam/sign.go new file mode 100644 index 0000000000..51e9efc973 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/iam/sign.go @@ -0,0 +1,35 @@ +package iam + +import ( + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "launchpad.net/goamz/aws" + "sort" + "strings" +) + +// ---------------------------------------------------------------------------- +// Version 2 signing (http://goo.gl/RSRp5) + +var b64 = base64.StdEncoding + +func sign(auth aws.Auth, method, path string, params map[string]string, host string) { + params["AWSAccessKeyId"] = auth.AccessKey + params["SignatureVersion"] = "2" + params["SignatureMethod"] = "HmacSHA256" + + var sarray []string + for k, v := range params { + sarray = append(sarray, aws.Encode(k)+"="+aws.Encode(v)) + } + sort.StringSlice(sarray).Sort() + joined := strings.Join(sarray, "&") + payload := method + "\n" + host + "\n" + path + "\n" + joined + hash := hmac.New(sha256.New, []byte(auth.SecretKey)) + hash.Write([]byte(payload)) + signature := make([]byte, b64.EncodedLen(hash.Size())) + b64.Encode(signature, hash.Sum(nil)) + + params["Signature"] = string(signature) +} diff --git a/vendor/src/launchpad.net/goamz/s3/export_test.go b/vendor/src/launchpad.net/goamz/s3/export_test.go new file mode 100644 index 0000000000..8707cdac2c --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/export_test.go @@ -0,0 +1,31 @@ +package s3 + +import ( + "launchpad.net/goamz/aws" +) + +var originalStrategy = attempts + +func SetAttemptStrategy(s *aws.AttemptStrategy) { + if s == nil { + attempts = originalStrategy + } else { + attempts = *s + } +} + +func AttemptStrategy() aws.AttemptStrategy { + return attempts +} + +func Sign(auth aws.Auth, method, path string, params, headers map[string][]string) { + sign(auth, method, path, params, headers) +} + +func SetListPartsMax(n int) { + listPartsMax = n +} + +func SetListMultiMax(n int) { + listMultiMax = n +} diff --git a/vendor/src/launchpad.net/goamz/s3/multi.go b/vendor/src/launchpad.net/goamz/s3/multi.go new file mode 100644 index 0000000000..ba20047409 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/multi.go @@ -0,0 +1,410 @@ +package s3 + +import ( + "bytes" + "crypto/md5" + "encoding/base64" + "encoding/hex" + "encoding/xml" + "errors" + "io" + "sort" + "strconv" +) + +// Multi represents an unfinished multipart upload. +// +// Multipart uploads allow sending big objects in smaller chunks. +// After all parts have been sent, the upload must be explicitly +// completed by calling Complete with the list of parts. +// +// See http://goo.gl/vJfTG for an overview of multipart uploads. +type Multi struct { + Bucket *Bucket + Key string + UploadId string +} + +// That's the default. Here just for testing. +var listMultiMax = 1000 + +type listMultiResp struct { + NextKeyMarker string + NextUploadIdMarker string + IsTruncated bool + Upload []Multi + CommonPrefixes []string `xml:"CommonPrefixes>Prefix"` +} + +// ListMulti returns the list of unfinished multipart uploads in b. +// +// The prefix parameter limits the response to keys that begin with the +// specified prefix. You can use prefixes to separate a bucket into different +// groupings of keys (to get the feeling of folders, for example). +// +// The delim parameter causes the response to group all of the keys that +// share a common prefix up to the next delimiter in a single entry within +// the CommonPrefixes field. You can use delimiters to separate a bucket +// into different groupings of keys, similar to how folders would work. +// +// See http://goo.gl/ePioY for details. +func (b *Bucket) ListMulti(prefix, delim string) (multis []*Multi, prefixes []string, err error) { + params := map[string][]string{ + "uploads": {""}, + "max-uploads": {strconv.FormatInt(int64(listMultiMax), 10)}, + "prefix": {prefix}, + "delimiter": {delim}, + } + for attempt := attempts.Start(); attempt.Next(); { + req := &request{ + method: "GET", + bucket: b.Name, + params: params, + } + var resp listMultiResp + err := b.S3.query(req, &resp) + if shouldRetry(err) && attempt.HasNext() { + continue + } + if err != nil { + return nil, nil, err + } + for i := range resp.Upload { + multi := &resp.Upload[i] + multi.Bucket = b + multis = append(multis, multi) + } + prefixes = append(prefixes, resp.CommonPrefixes...) + if !resp.IsTruncated { + return multis, prefixes, nil + } + params["key-marker"] = []string{resp.NextKeyMarker} + params["upload-id-marker"] = []string{resp.NextUploadIdMarker} + attempt = attempts.Start() // Last request worked. + } + panic("unreachable") +} + +// Multi returns a multipart upload handler for the provided key +// inside b. If a multipart upload exists for key, it is returned, +// otherwise a new multipart upload is initiated with contType and perm. +func (b *Bucket) Multi(key, contType string, perm ACL) (*Multi, error) { + multis, _, err := b.ListMulti(key, "") + if err != nil && !hasCode(err, "NoSuchUpload") { + return nil, err + } + for _, m := range multis { + if m.Key == key { + return m, nil + } + } + return b.InitMulti(key, contType, perm) +} + +// InitMulti initializes a new multipart upload at the provided +// key inside b and returns a value for manipulating it. +// +// See http://goo.gl/XP8kL for details. +func (b *Bucket) InitMulti(key string, contType string, perm ACL) (*Multi, error) { + headers := map[string][]string{ + "Content-Type": {contType}, + "Content-Length": {"0"}, + "x-amz-acl": {string(perm)}, + } + params := map[string][]string{ + "uploads": {""}, + } + req := &request{ + method: "POST", + bucket: b.Name, + path: key, + headers: headers, + params: params, + } + var err error + var resp struct { + UploadId string `xml:"UploadId"` + } + for attempt := attempts.Start(); attempt.Next(); { + err = b.S3.query(req, &resp) + if !shouldRetry(err) { + break + } + } + if err != nil { + return nil, err + } + return &Multi{Bucket: b, Key: key, UploadId: resp.UploadId}, nil +} + +// PutPart sends part n of the multipart upload, reading all the content from r. +// Each part, except for the last one, must be at least 5MB in size. +// +// See http://goo.gl/pqZer for details. +func (m *Multi) PutPart(n int, r io.ReadSeeker) (Part, error) { + partSize, _, md5b64, err := seekerInfo(r) + if err != nil { + return Part{}, err + } + return m.putPart(n, r, partSize, md5b64) +} + +func (m *Multi) putPart(n int, r io.ReadSeeker, partSize int64, md5b64 string) (Part, error) { + headers := map[string][]string{ + "Content-Length": {strconv.FormatInt(partSize, 10)}, + "Content-MD5": {md5b64}, + } + params := map[string][]string{ + "uploadId": {m.UploadId}, + "partNumber": {strconv.FormatInt(int64(n), 10)}, + } + for attempt := attempts.Start(); attempt.Next(); { + _, err := r.Seek(0, 0) + if err != nil { + return Part{}, err + } + req := &request{ + method: "PUT", + bucket: m.Bucket.Name, + path: m.Key, + headers: headers, + params: params, + payload: r, + } + err = m.Bucket.S3.prepare(req) + if err != nil { + return Part{}, err + } + hresp, err := m.Bucket.S3.run(req) + if shouldRetry(err) && attempt.HasNext() { + continue + } + if err != nil { + return Part{}, err + } + hresp.Body.Close() + etag := hresp.Header.Get("ETag") + if etag == "" { + return Part{}, errors.New("part upload succeeded with no ETag") + } + return Part{n, etag, partSize}, nil + } + panic("unreachable") +} + +func seekerInfo(r io.ReadSeeker) (size int64, md5hex string, md5b64 string, err error) { + _, err = r.Seek(0, 0) + if err != nil { + return 0, "", "", err + } + digest := md5.New() + size, err = io.Copy(digest, r) + if err != nil { + return 0, "", "", err + } + sum := digest.Sum(nil) + md5hex = hex.EncodeToString(sum) + md5b64 = base64.StdEncoding.EncodeToString(sum) + return size, md5hex, md5b64, nil +} + +type Part struct { + N int `xml:"PartNumber"` + ETag string + Size int64 +} + +type partSlice []Part + +func (s partSlice) Len() int { return len(s) } +func (s partSlice) Less(i, j int) bool { return s[i].N < s[j].N } +func (s partSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +type listPartsResp struct { + NextPartNumberMarker string + IsTruncated bool + Part []Part +} + +// That's the default. Here just for testing. +var listPartsMax = 1000 + +// ListParts returns the list of previously uploaded parts in m, +// ordered by part number. +// +// See http://goo.gl/ePioY for details. +func (m *Multi) ListParts() ([]Part, error) { + params := map[string][]string{ + "uploadId": {m.UploadId}, + "max-parts": {strconv.FormatInt(int64(listPartsMax), 10)}, + } + var parts partSlice + for attempt := attempts.Start(); attempt.Next(); { + req := &request{ + method: "GET", + bucket: m.Bucket.Name, + path: m.Key, + params: params, + } + var resp listPartsResp + err := m.Bucket.S3.query(req, &resp) + if shouldRetry(err) && attempt.HasNext() { + continue + } + if err != nil { + return nil, err + } + parts = append(parts, resp.Part...) + if !resp.IsTruncated { + sort.Sort(parts) + return parts, nil + } + params["part-number-marker"] = []string{resp.NextPartNumberMarker} + attempt = attempts.Start() // Last request worked. + } + panic("unreachable") +} + +type ReaderAtSeeker interface { + io.ReaderAt + io.ReadSeeker +} + +// PutAll sends all of r via a multipart upload with parts no larger +// than partSize bytes, which must be set to at least 5MB. +// Parts previously uploaded are either reused if their checksum +// and size match the new part, or otherwise overwritten with the +// new content. +// PutAll returns all the parts of m (reused or not). +func (m *Multi) PutAll(r ReaderAtSeeker, partSize int64) ([]Part, error) { + old, err := m.ListParts() + if err != nil && !hasCode(err, "NoSuchUpload") { + return nil, err + } + reuse := 0 // Index of next old part to consider reusing. + current := 1 // Part number of latest good part handled. + totalSize, err := r.Seek(0, 2) + if err != nil { + return nil, err + } + first := true // Must send at least one empty part if the file is empty. + var result []Part +NextSection: + for offset := int64(0); offset < totalSize || first; offset += partSize { + first = false + if offset+partSize > totalSize { + partSize = totalSize - offset + } + section := io.NewSectionReader(r, offset, partSize) + _, md5hex, md5b64, err := seekerInfo(section) + if err != nil { + return nil, err + } + for reuse < len(old) && old[reuse].N <= current { + // Looks like this part was already sent. + part := &old[reuse] + etag := `"` + md5hex + `"` + if part.N == current && part.Size == partSize && part.ETag == etag { + // Checksum matches. Reuse the old part. + result = append(result, *part) + current++ + continue NextSection + } + reuse++ + } + + // Part wasn't found or doesn't match. Send it. + part, err := m.putPart(current, section, partSize, md5b64) + if err != nil { + return nil, err + } + result = append(result, part) + current++ + } + return result, nil +} + +type completeUpload struct { + XMLName xml.Name `xml:"CompleteMultipartUpload"` + Parts completeParts `xml:"Part"` +} + +type completePart struct { + PartNumber int + ETag string +} + +type completeParts []completePart + +func (p completeParts) Len() int { return len(p) } +func (p completeParts) Less(i, j int) bool { return p[i].PartNumber < p[j].PartNumber } +func (p completeParts) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +// Complete assembles the given previously uploaded parts into the +// final object. This operation may take several minutes. +// +// See http://goo.gl/2Z7Tw for details. +func (m *Multi) Complete(parts []Part) error { + params := map[string][]string{ + "uploadId": {m.UploadId}, + } + c := completeUpload{} + for _, p := range parts { + c.Parts = append(c.Parts, completePart{p.N, p.ETag}) + } + sort.Sort(c.Parts) + data, err := xml.Marshal(&c) + if err != nil { + return err + } + for attempt := attempts.Start(); attempt.Next(); { + req := &request{ + method: "POST", + bucket: m.Bucket.Name, + path: m.Key, + params: params, + payload: bytes.NewReader(data), + } + err := m.Bucket.S3.query(req, nil) + if shouldRetry(err) && attempt.HasNext() { + continue + } + return err + } + panic("unreachable") +} + +// Abort deletes an unifinished multipart upload and any previously +// uploaded parts for it. +// +// After a multipart upload is aborted, no additional parts can be +// uploaded using it. However, if any part uploads are currently in +// progress, those part uploads might or might not succeed. As a result, +// it might be necessary to abort a given multipart upload multiple +// times in order to completely free all storage consumed by all parts. +// +// NOTE: If the described scenario happens to you, please report back to +// the goamz authors with details. In the future such retrying should be +// handled internally, but it's not clear what happens precisely (Is an +// error returned? Is the issue completely undetectable?). +// +// See http://goo.gl/dnyJw for details. +func (m *Multi) Abort() error { + params := map[string][]string{ + "uploadId": {m.UploadId}, + } + for attempt := attempts.Start(); attempt.Next(); { + req := &request{ + method: "DELETE", + bucket: m.Bucket.Name, + path: m.Key, + params: params, + } + err := m.Bucket.S3.query(req, nil) + if shouldRetry(err) && attempt.HasNext() { + continue + } + return err + } + panic("unreachable") +} diff --git a/vendor/src/launchpad.net/goamz/s3/multi_test.go b/vendor/src/launchpad.net/goamz/s3/multi_test.go new file mode 100644 index 0000000000..6699e3d77b --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/multi_test.go @@ -0,0 +1,370 @@ +package s3_test + +import ( + "encoding/xml" + "io" + "io/ioutil" + "launchpad.net/goamz/s3" + . "launchpad.net/gocheck" + "strings" +) + +func (s *S) TestInitMulti(c *C) { + testServer.Response(200, nil, InitMultiResultDump) + + b := s.s3.Bucket("sample") + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "POST") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Header["Content-Type"], DeepEquals, []string{"text/plain"}) + c.Assert(req.Header["X-Amz-Acl"], DeepEquals, []string{"private"}) + c.Assert(req.Form["uploads"], DeepEquals, []string{""}) + + c.Assert(multi.UploadId, Matches, "JNbR_[A-Za-z0-9.]+QQ--") +} + +func (s *S) TestMultiNoPreviousUpload(c *C) { + // Don't retry the NoSuchUpload error. + s3.RetryAttempts(false) + + testServer.Response(404, nil, NoSuchUploadErrorDump) + testServer.Response(200, nil, InitMultiResultDump) + + b := s.s3.Bucket("sample") + + multi, err := b.Multi("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/sample/") + c.Assert(req.Form["uploads"], DeepEquals, []string{""}) + c.Assert(req.Form["prefix"], DeepEquals, []string{"multi"}) + + req = testServer.WaitRequest() + c.Assert(req.Method, Equals, "POST") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form["uploads"], DeepEquals, []string{""}) + + c.Assert(multi.UploadId, Matches, "JNbR_[A-Za-z0-9.]+QQ--") +} + +func (s *S) TestMultiReturnOld(c *C) { + testServer.Response(200, nil, ListMultiResultDump) + + b := s.s3.Bucket("sample") + + multi, err := b.Multi("multi1", "text/plain", s3.Private) + c.Assert(err, IsNil) + c.Assert(multi.Key, Equals, "multi1") + c.Assert(multi.UploadId, Equals, "iUVug89pPvSswrikD") + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/sample/") + c.Assert(req.Form["uploads"], DeepEquals, []string{""}) + c.Assert(req.Form["prefix"], DeepEquals, []string{"multi1"}) +} + +func (s *S) TestListParts(c *C) { + testServer.Response(200, nil, InitMultiResultDump) + testServer.Response(200, nil, ListPartsResultDump1) + testServer.Response(404, nil, NoSuchUploadErrorDump) // :-( + testServer.Response(200, nil, ListPartsResultDump2) + + b := s.s3.Bucket("sample") + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + parts, err := multi.ListParts() + c.Assert(err, IsNil) + c.Assert(parts, HasLen, 3) + c.Assert(parts[0].N, Equals, 1) + c.Assert(parts[0].Size, Equals, int64(5)) + c.Assert(parts[0].ETag, Equals, `"ffc88b4ca90a355f8ddba6b2c3b2af5c"`) + c.Assert(parts[1].N, Equals, 2) + c.Assert(parts[1].Size, Equals, int64(5)) + c.Assert(parts[1].ETag, Equals, `"d067a0fa9dc61a6e7195ca99696b5a89"`) + c.Assert(parts[2].N, Equals, 3) + c.Assert(parts[2].Size, Equals, int64(5)) + c.Assert(parts[2].ETag, Equals, `"49dcd91231f801159e893fb5c6674985"`) + testServer.WaitRequest() + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form.Get("uploadId"), Matches, "JNbR_[A-Za-z0-9.]+QQ--") + c.Assert(req.Form["max-parts"], DeepEquals, []string{"1000"}) + + testServer.WaitRequest() // The internal error. + req = testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form.Get("uploadId"), Matches, "JNbR_[A-Za-z0-9.]+QQ--") + c.Assert(req.Form["max-parts"], DeepEquals, []string{"1000"}) + c.Assert(req.Form["part-number-marker"], DeepEquals, []string{"2"}) +} + +func (s *S) TestPutPart(c *C) { + headers := map[string]string{ + "ETag": `"26f90efd10d614f100252ff56d88dad8"`, + } + testServer.Response(200, nil, InitMultiResultDump) + testServer.Response(200, headers, "") + + b := s.s3.Bucket("sample") + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + part, err := multi.PutPart(1, strings.NewReader("")) + c.Assert(err, IsNil) + c.Assert(part.N, Equals, 1) + c.Assert(part.Size, Equals, int64(8)) + c.Assert(part.ETag, Equals, headers["ETag"]) + + testServer.WaitRequest() + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form.Get("uploadId"), Matches, "JNbR_[A-Za-z0-9.]+QQ--") + c.Assert(req.Form["partNumber"], DeepEquals, []string{"1"}) + c.Assert(req.Header["Content-Length"], DeepEquals, []string{"8"}) + c.Assert(req.Header["Content-Md5"], DeepEquals, []string{"JvkO/RDWFPEAJS/1bYja2A=="}) +} + +func readAll(r io.Reader) string { + data, err := ioutil.ReadAll(r) + if err != nil { + panic(err) + } + return string(data) +} + +func (s *S) TestPutAllNoPreviousUpload(c *C) { + // Don't retry the NoSuchUpload error. + s3.RetryAttempts(false) + + etag1 := map[string]string{"ETag": `"etag1"`} + etag2 := map[string]string{"ETag": `"etag2"`} + etag3 := map[string]string{"ETag": `"etag3"`} + testServer.Response(200, nil, InitMultiResultDump) + testServer.Response(404, nil, NoSuchUploadErrorDump) + testServer.Response(200, etag1, "") + testServer.Response(200, etag2, "") + testServer.Response(200, etag3, "") + + b := s.s3.Bucket("sample") + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + parts, err := multi.PutAll(strings.NewReader("part1part2last"), 5) + c.Assert(parts, HasLen, 3) + c.Assert(parts[0].ETag, Equals, `"etag1"`) + c.Assert(parts[1].ETag, Equals, `"etag2"`) + c.Assert(parts[2].ETag, Equals, `"etag3"`) + c.Assert(err, IsNil) + + // Init + testServer.WaitRequest() + + // List old parts. Won't find anything. + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/sample/multi") + + // Send part 1. + req = testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form["partNumber"], DeepEquals, []string{"1"}) + c.Assert(req.Header["Content-Length"], DeepEquals, []string{"5"}) + c.Assert(readAll(req.Body), Equals, "part1") + + // Send part 2. + req = testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form["partNumber"], DeepEquals, []string{"2"}) + c.Assert(req.Header["Content-Length"], DeepEquals, []string{"5"}) + c.Assert(readAll(req.Body), Equals, "part2") + + // Send part 3 with shorter body. + req = testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form["partNumber"], DeepEquals, []string{"3"}) + c.Assert(req.Header["Content-Length"], DeepEquals, []string{"4"}) + c.Assert(readAll(req.Body), Equals, "last") +} + +func (s *S) TestPutAllZeroSizeFile(c *C) { + // Don't retry the NoSuchUpload error. + s3.RetryAttempts(false) + + etag1 := map[string]string{"ETag": `"etag1"`} + testServer.Response(200, nil, InitMultiResultDump) + testServer.Response(404, nil, NoSuchUploadErrorDump) + testServer.Response(200, etag1, "") + + b := s.s3.Bucket("sample") + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + // Must send at least one part, so that completing it will work. + parts, err := multi.PutAll(strings.NewReader(""), 5) + c.Assert(parts, HasLen, 1) + c.Assert(parts[0].ETag, Equals, `"etag1"`) + c.Assert(err, IsNil) + + // Init + testServer.WaitRequest() + + // List old parts. Won't find anything. + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/sample/multi") + + // Send empty part. + req = testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form["partNumber"], DeepEquals, []string{"1"}) + c.Assert(req.Header["Content-Length"], DeepEquals, []string{"0"}) + c.Assert(readAll(req.Body), Equals, "") +} + +func (s *S) TestPutAllResume(c *C) { + etag2 := map[string]string{"ETag": `"etag2"`} + testServer.Response(200, nil, InitMultiResultDump) + testServer.Response(200, nil, ListPartsResultDump1) + testServer.Response(200, nil, ListPartsResultDump2) + testServer.Response(200, etag2, "") + + b := s.s3.Bucket("sample") + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + // "part1" and "part3" match the checksums in ResultDump1. + // The middle one is a mismatch (it refers to "part2"). + parts, err := multi.PutAll(strings.NewReader("part1partXpart3"), 5) + c.Assert(parts, HasLen, 3) + c.Assert(parts[0].N, Equals, 1) + c.Assert(parts[0].Size, Equals, int64(5)) + c.Assert(parts[0].ETag, Equals, `"ffc88b4ca90a355f8ddba6b2c3b2af5c"`) + c.Assert(parts[1].N, Equals, 2) + c.Assert(parts[1].Size, Equals, int64(5)) + c.Assert(parts[1].ETag, Equals, `"etag2"`) + c.Assert(parts[2].N, Equals, 3) + c.Assert(parts[2].Size, Equals, int64(5)) + c.Assert(parts[2].ETag, Equals, `"49dcd91231f801159e893fb5c6674985"`) + c.Assert(err, IsNil) + + // Init + testServer.WaitRequest() + + // List old parts, broken in two requests. + for i := 0; i < 2; i++ { + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/sample/multi") + } + + // Send part 2, as it didn't match the checksum. + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form["partNumber"], DeepEquals, []string{"2"}) + c.Assert(req.Header["Content-Length"], DeepEquals, []string{"5"}) + c.Assert(readAll(req.Body), Equals, "partX") +} + +func (s *S) TestMultiComplete(c *C) { + testServer.Response(200, nil, InitMultiResultDump) + // Note the 200 response. Completing will hold the connection on some + // kind of long poll, and may return a late error even after a 200. + testServer.Response(200, nil, InternalErrorDump) + testServer.Response(200, nil, "") + + b := s.s3.Bucket("sample") + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + err = multi.Complete([]s3.Part{{2, `"ETag2"`, 32}, {1, `"ETag1"`, 64}}) + c.Assert(err, IsNil) + + testServer.WaitRequest() + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "POST") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form.Get("uploadId"), Matches, "JNbR_[A-Za-z0-9.]+QQ--") + + var payload struct { + XMLName xml.Name + Part []struct { + PartNumber int + ETag string + } + } + + dec := xml.NewDecoder(req.Body) + err = dec.Decode(&payload) + c.Assert(err, IsNil) + + c.Assert(payload.XMLName.Local, Equals, "CompleteMultipartUpload") + c.Assert(len(payload.Part), Equals, 2) + c.Assert(payload.Part[0].PartNumber, Equals, 1) + c.Assert(payload.Part[0].ETag, Equals, `"ETag1"`) + c.Assert(payload.Part[1].PartNumber, Equals, 2) + c.Assert(payload.Part[1].ETag, Equals, `"ETag2"`) +} + +func (s *S) TestMultiAbort(c *C) { + testServer.Response(200, nil, InitMultiResultDump) + testServer.Response(200, nil, "") + + b := s.s3.Bucket("sample") + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + + err = multi.Abort() + c.Assert(err, IsNil) + + testServer.WaitRequest() + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "DELETE") + c.Assert(req.URL.Path, Equals, "/sample/multi") + c.Assert(req.Form.Get("uploadId"), Matches, "JNbR_[A-Za-z0-9.]+QQ--") +} + +func (s *S) TestListMulti(c *C) { + testServer.Response(200, nil, ListMultiResultDump) + + b := s.s3.Bucket("sample") + + multis, prefixes, err := b.ListMulti("", "/") + c.Assert(err, IsNil) + c.Assert(prefixes, DeepEquals, []string{"a/", "b/"}) + c.Assert(multis, HasLen, 2) + c.Assert(multis[0].Key, Equals, "multi1") + c.Assert(multis[0].UploadId, Equals, "iUVug89pPvSswrikD") + c.Assert(multis[1].Key, Equals, "multi2") + c.Assert(multis[1].UploadId, Equals, "DkirwsSvPp98guVUi") + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/sample/") + c.Assert(req.Form["uploads"], DeepEquals, []string{""}) + c.Assert(req.Form["prefix"], DeepEquals, []string{""}) + c.Assert(req.Form["delimiter"], DeepEquals, []string{"/"}) + c.Assert(req.Form["max-uploads"], DeepEquals, []string{"1000"}) +} diff --git a/vendor/src/launchpad.net/goamz/s3/responses_test.go b/vendor/src/launchpad.net/goamz/s3/responses_test.go new file mode 100644 index 0000000000..7ceaba81b8 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/responses_test.go @@ -0,0 +1,198 @@ +package s3_test + +var GetObjectErrorDump = ` + +NoSuchBucketThe specified bucket does not exist +non-existent-bucket3F1B667FAD71C3D8 +L4ee/zrm1irFXY5F45fKXIRdOf9ktsKY/8TDVawuMK2jWRb1RF84i1uBzkdNqS5D +` + +var GetListResultDump1 = ` + + + quotes + N + false + + Nelson + 2006-01-01T12:00:00.000Z + "828ef3fdfa96f00ad9f27c383fc9ac7f" + 5 + STANDARD + + bcaf161ca5fb16fd081034f + webfile + + + + Neo + 2006-01-01T12:00:00.000Z + "828ef3fdfa96f00ad9f27c383fc9ac7f" + 4 + STANDARD + + bcaf1ffd86a5fb16fd081034f + webfile + + + +` + +var GetListResultDump2 = ` + + example-bucket + photos/2006/ + some-marker + 1000 + / + false + + + photos/2006/feb/ + + + photos/2006/jan/ + + +` + +var InitMultiResultDump = ` + + + sample + multi + JNbR_cMdwnGiD12jKAd6WK2PUkfj2VxA7i4nCwjE6t71nI9Tl3eVDPFlU0nOixhftH7I17ZPGkV3QA.l7ZD.QQ-- + +` + +var ListPartsResultDump1 = ` + + + sample + multi + JNbR_cMdwnGiD12jKAd6WK2PUkfj2VxA7i4nCwjE6t71nI9Tl3eVDPFlU0nOixhftH7I17ZPGkV3QA.l7ZD.QQ-- + + bb5c0f63b0b25f2d099c + joe + + + bb5c0f63b0b25f2d099c + joe + + STANDARD + 0 + 2 + 2 + true + + 1 + 2013-01-30T13:45:51.000Z + "ffc88b4ca90a355f8ddba6b2c3b2af5c" + 5 + + + 2 + 2013-01-30T13:45:52.000Z + "d067a0fa9dc61a6e7195ca99696b5a89" + 5 + + +` + +var ListPartsResultDump2 = ` + + + sample + multi + JNbR_cMdwnGiD12jKAd6WK2PUkfj2VxA7i4nCwjE6t71nI9Tl3eVDPFlU0nOixhftH7I17ZPGkV3QA.l7ZD.QQ-- + + bb5c0f63b0b25f2d099c + joe + + + bb5c0f63b0b25f2d099c + joe + + STANDARD + 2 + 3 + 2 + false + + 3 + 2013-01-30T13:46:50.000Z + "49dcd91231f801159e893fb5c6674985" + 5 + + +` + +var ListMultiResultDump = ` + + + goamz-test-bucket-us-east-1-akiajk3wyewhctyqbf7a + + + multi1 + iUVug89pPvSswrikD72p8uO62EzhNtpDxRmwC5WSiWDdK9SfzmDqe3xpP1kMWimyimSnz4uzFc3waVM5ufrKYQ-- + / + 1000 + false + + multi1 + iUVug89pPvSswrikD + + bb5c0f63b0b25f2d0 + gustavoniemeyer + + + bb5c0f63b0b25f2d0 + gustavoniemeyer + + STANDARD + 2013-01-30T18:15:47.000Z + + + multi2 + DkirwsSvPp98guVUi + + bb5c0f63b0b25f2d0 + joe + + + bb5c0f63b0b25f2d0 + joe + + STANDARD + 2013-01-30T18:15:47.000Z + + + a/ + + + b/ + + +` + +var NoSuchUploadErrorDump = ` + + + NoSuchUpload + Not relevant + sample + 3F1B667FAD71C3D8 + kjhwqk + +` + +var InternalErrorDump = ` + + + InternalError + Not relevant + sample + 3F1B667FAD71C3D8 + kjhwqk + +` diff --git a/vendor/src/launchpad.net/goamz/s3/s3.go b/vendor/src/launchpad.net/goamz/s3/s3.go new file mode 100644 index 0000000000..de03b3b56f --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/s3.go @@ -0,0 +1,572 @@ +// +// goamz - Go packages to interact with the Amazon Web Services. +// +// https://wiki.ubuntu.com/goamz +// +// Copyright (c) 2011 Canonical Ltd. +// + +package s3 + +import ( + "bytes" + "encoding/xml" + "fmt" + "io" + "io/ioutil" + "launchpad.net/goamz/aws" + "log" + "net" + "net/http" + "net/http/httputil" + "net/url" + "strconv" + "strings" + "time" +) + +const debug = false + +// The S3 type encapsulates operations with an S3 region. +type S3 struct { + aws.Auth + aws.Region + private byte // Reserve the right of using private data. +} + +// The Bucket type encapsulates operations with an S3 bucket. +type Bucket struct { + *S3 + Name string +} + +// The Owner type represents the owner of the object in an S3 bucket. +type Owner struct { + ID string + DisplayName string +} + +var ( + attempts = defaultAttempts + defaultAttempts = aws.AttemptStrategy{ + Min: 5, + Total: 5 * time.Second, + Delay: 200 * time.Millisecond, + } +) + +// RetryAttempts sets whether failing S3 requests may be retried to cope +// with eventual consistency or temporary failures. It should not be +// called while operations are in progress. +func RetryAttempts(retry bool) { + if retry { + attempts = defaultAttempts + } else { + attempts = aws.AttemptStrategy{} + } +} + +// New creates a new S3. +func New(auth aws.Auth, region aws.Region) *S3 { + return &S3{auth, region, 0} +} + +// Bucket returns a Bucket with the given name. +func (s3 *S3) Bucket(name string) *Bucket { + if s3.Region.S3BucketEndpoint != "" || s3.Region.S3LowercaseBucket { + name = strings.ToLower(name) + } + return &Bucket{s3, name} +} + +var createBucketConfiguration = ` + %s +` + +// locationConstraint returns an io.Reader specifying a LocationConstraint if +// required for the region. +// +// See http://goo.gl/bh9Kq for details. +func (s3 *S3) locationConstraint() io.Reader { + constraint := "" + if s3.Region.S3LocationConstraint { + constraint = fmt.Sprintf(createBucketConfiguration, s3.Region.Name) + } + return strings.NewReader(constraint) +} + +type ACL string + +const ( + Private = ACL("private") + PublicRead = ACL("public-read") + PublicReadWrite = ACL("public-read-write") + AuthenticatedRead = ACL("authenticated-read") + BucketOwnerRead = ACL("bucket-owner-read") + BucketOwnerFull = ACL("bucket-owner-full-control") +) + +// PutBucket creates a new bucket. +// +// See http://goo.gl/ndjnR for details. +func (b *Bucket) PutBucket(perm ACL) error { + headers := map[string][]string{ + "x-amz-acl": {string(perm)}, + } + req := &request{ + method: "PUT", + bucket: b.Name, + path: "/", + headers: headers, + payload: b.locationConstraint(), + } + return b.S3.query(req, nil) +} + +// DelBucket removes an existing S3 bucket. All objects in the bucket must +// be removed before the bucket itself can be removed. +// +// See http://goo.gl/GoBrY for details. +func (b *Bucket) DelBucket() (err error) { + req := &request{ + method: "DELETE", + bucket: b.Name, + path: "/", + } + for attempt := attempts.Start(); attempt.Next(); { + err = b.S3.query(req, nil) + if !shouldRetry(err) { + break + } + } + return err +} + +// Get retrieves an object from an S3 bucket. +// +// See http://goo.gl/isCO7 for details. +func (b *Bucket) Get(path string) (data []byte, err error) { + body, err := b.GetReader(path) + if err != nil { + return nil, err + } + data, err = ioutil.ReadAll(body) + body.Close() + return data, err +} + +// GetReader retrieves an object from an S3 bucket. +// It is the caller's responsibility to call Close on rc when +// finished reading. +func (b *Bucket) GetReader(path string) (rc io.ReadCloser, err error) { + req := &request{ + bucket: b.Name, + path: path, + } + err = b.S3.prepare(req) + if err != nil { + return nil, err + } + for attempt := attempts.Start(); attempt.Next(); { + hresp, err := b.S3.run(req) + if shouldRetry(err) && attempt.HasNext() { + continue + } + if err != nil { + return nil, err + } + return hresp.Body, nil + } + panic("unreachable") +} + +// Put inserts an object into the S3 bucket. +// +// See http://goo.gl/FEBPD for details. +func (b *Bucket) Put(path string, data []byte, contType string, perm ACL) error { + body := bytes.NewBuffer(data) + return b.PutReader(path, body, int64(len(data)), contType, perm) +} + +// PutReader inserts an object into the S3 bucket by consuming data +// from r until EOF. +func (b *Bucket) PutReader(path string, r io.Reader, length int64, contType string, perm ACL) error { + headers := map[string][]string{ + "Content-Length": {strconv.FormatInt(length, 10)}, + "Content-Type": {contType}, + "x-amz-acl": {string(perm)}, + } + req := &request{ + method: "PUT", + bucket: b.Name, + path: path, + headers: headers, + payload: r, + } + return b.S3.query(req, nil) +} + +// Del removes an object from the S3 bucket. +// +// See http://goo.gl/APeTt for details. +func (b *Bucket) Del(path string) error { + req := &request{ + method: "DELETE", + bucket: b.Name, + path: path, + } + return b.S3.query(req, nil) +} + +// The ListResp type holds the results of a List bucket operation. +type ListResp struct { + Name string + Prefix string + Delimiter string + Marker string + MaxKeys int + // IsTruncated is true if the results have been truncated because + // there are more keys and prefixes than can fit in MaxKeys. + // N.B. this is the opposite sense to that documented (incorrectly) in + // http://goo.gl/YjQTc + IsTruncated bool + Contents []Key + CommonPrefixes []string `xml:">Prefix"` +} + +// The Key type represents an item stored in an S3 bucket. +type Key struct { + Key string + LastModified string + Size int64 + // ETag gives the hex-encoded MD5 sum of the contents, + // surrounded with double-quotes. + ETag string + StorageClass string + Owner Owner +} + +// List returns information about objects in an S3 bucket. +// +// The prefix parameter limits the response to keys that begin with the +// specified prefix. +// +// The delim parameter causes the response to group all of the keys that +// share a common prefix up to the next delimiter in a single entry within +// the CommonPrefixes field. You can use delimiters to separate a bucket +// into different groupings of keys, similar to how folders would work. +// +// The marker parameter specifies the key to start with when listing objects +// in a bucket. Amazon S3 lists objects in alphabetical order and +// will return keys alphabetically greater than the marker. +// +// The max parameter specifies how many keys + common prefixes to return in +// the response. The default is 1000. +// +// For example, given these keys in a bucket: +// +// index.html +// index2.html +// photos/2006/January/sample.jpg +// photos/2006/February/sample2.jpg +// photos/2006/February/sample3.jpg +// photos/2006/February/sample4.jpg +// +// Listing this bucket with delimiter set to "/" would yield the +// following result: +// +// &ListResp{ +// Name: "sample-bucket", +// MaxKeys: 1000, +// Delimiter: "/", +// Contents: []Key{ +// {Key: "index.html", "index2.html"}, +// }, +// CommonPrefixes: []string{ +// "photos/", +// }, +// } +// +// Listing the same bucket with delimiter set to "/" and prefix set to +// "photos/2006/" would yield the following result: +// +// &ListResp{ +// Name: "sample-bucket", +// MaxKeys: 1000, +// Delimiter: "/", +// Prefix: "photos/2006/", +// CommonPrefixes: []string{ +// "photos/2006/February/", +// "photos/2006/January/", +// }, +// } +// +// See http://goo.gl/YjQTc for details. +func (b *Bucket) List(prefix, delim, marker string, max int) (result *ListResp, err error) { + params := map[string][]string{ + "prefix": {prefix}, + "delimiter": {delim}, + "marker": {marker}, + } + if max != 0 { + params["max-keys"] = []string{strconv.FormatInt(int64(max), 10)} + } + req := &request{ + bucket: b.Name, + params: params, + } + result = &ListResp{} + for attempt := attempts.Start(); attempt.Next(); { + err = b.S3.query(req, result) + if !shouldRetry(err) { + break + } + } + if err != nil { + return nil, err + } + return result, nil +} + +// URL returns a non-signed URL that allows retriving the +// object at path. It only works if the object is publicly +// readable (see SignedURL). +func (b *Bucket) URL(path string) string { + req := &request{ + bucket: b.Name, + path: path, + } + err := b.S3.prepare(req) + if err != nil { + panic(err) + } + u, err := req.url() + if err != nil { + panic(err) + } + u.RawQuery = "" + return u.String() +} + +// SignedURL returns a signed URL that allows anyone holding the URL +// to retrieve the object at path. The signature is valid until expires. +func (b *Bucket) SignedURL(path string, expires time.Time) string { + req := &request{ + bucket: b.Name, + path: path, + params: url.Values{"Expires": {strconv.FormatInt(expires.Unix(), 10)}}, + } + err := b.S3.prepare(req) + if err != nil { + panic(err) + } + u, err := req.url() + if err != nil { + panic(err) + } + return u.String() +} + +type request struct { + method string + bucket string + path string + signpath string + params url.Values + headers http.Header + baseurl string + payload io.Reader + prepared bool +} + +func (req *request) url() (*url.URL, error) { + u, err := url.Parse(req.baseurl) + if err != nil { + return nil, fmt.Errorf("bad S3 endpoint URL %q: %v", req.baseurl, err) + } + u.RawQuery = req.params.Encode() + u.Path = req.path + return u, nil +} + +// query prepares and runs the req request. +// If resp is not nil, the XML data contained in the response +// body will be unmarshalled on it. +func (s3 *S3) query(req *request, resp interface{}) error { + err := s3.prepare(req) + if err != nil { + return err + } + hresp, err := s3.run(req) + if err != nil { + return err + } + if resp != nil { + err = xml.NewDecoder(hresp.Body).Decode(resp) + } + hresp.Body.Close() + return nil +} + +// prepare sets up req to be delivered to S3. +func (s3 *S3) prepare(req *request) error { + if !req.prepared { + req.prepared = true + if req.method == "" { + req.method = "GET" + } + // Copy so they can be mutated without affecting on retries. + params := make(url.Values) + headers := make(http.Header) + for k, v := range req.params { + params[k] = v + } + for k, v := range req.headers { + headers[k] = v + } + req.params = params + req.headers = headers + if !strings.HasPrefix(req.path, "/") { + req.path = "/" + req.path + } + req.signpath = req.path + if req.bucket != "" { + req.baseurl = s3.Region.S3BucketEndpoint + if req.baseurl == "" { + // Use the path method to address the bucket. + req.baseurl = s3.Region.S3Endpoint + req.path = "/" + req.bucket + req.path + } else { + // Just in case, prevent injection. + if strings.IndexAny(req.bucket, "/:@") >= 0 { + return fmt.Errorf("bad S3 bucket: %q", req.bucket) + } + req.baseurl = strings.Replace(req.baseurl, "${bucket}", req.bucket, -1) + } + req.signpath = "/" + req.bucket + req.signpath + } + } + + // Always sign again as it's not clear how far the + // server has handled a previous attempt. + u, err := url.Parse(req.baseurl) + if err != nil { + return fmt.Errorf("bad S3 endpoint URL %q: %v", req.baseurl, err) + } + req.headers["Host"] = []string{u.Host} + req.headers["Date"] = []string{time.Now().In(time.UTC).Format(time.RFC1123)} + sign(s3.Auth, req.method, req.signpath, req.params, req.headers) + return nil +} + +// run sends req and returns the http response from the server. +func (s3 *S3) run(req *request) (*http.Response, error) { + if debug { + log.Printf("Running S3 request: %#v", req) + } + + u, err := req.url() + if err != nil { + return nil, err + } + + hreq := http.Request{ + URL: u, + Method: req.method, + ProtoMajor: 1, + ProtoMinor: 1, + Close: true, + Header: req.headers, + } + + if v, ok := req.headers["Content-Length"]; ok { + hreq.ContentLength, _ = strconv.ParseInt(v[0], 10, 64) + delete(req.headers, "Content-Length") + } + if req.payload != nil { + hreq.Body = ioutil.NopCloser(req.payload) + } + + hresp, err := http.DefaultClient.Do(&hreq) + if err != nil { + return nil, err + } + if debug { + dump, _ := httputil.DumpResponse(hresp, true) + log.Printf("} -> %s\n", dump) + } + if hresp.StatusCode != 200 && hresp.StatusCode != 204 { + return nil, buildError(hresp) + } + return hresp, err +} + +// Error represents an error in an operation with S3. +type Error struct { + StatusCode int // HTTP status code (200, 403, ...) + Code string // EC2 error code ("UnsupportedOperation", ...) + Message string // The human-oriented error message + BucketName string + RequestId string + HostId string +} + +func (e *Error) Error() string { + return e.Message +} + +func buildError(r *http.Response) error { + if debug { + log.Printf("got error (status code %v)", r.StatusCode) + data, err := ioutil.ReadAll(r.Body) + if err != nil { + log.Printf("\tread error: %v", err) + } else { + log.Printf("\tdata:\n%s\n\n", data) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + } + + err := Error{} + // TODO return error if Unmarshal fails? + xml.NewDecoder(r.Body).Decode(&err) + r.Body.Close() + err.StatusCode = r.StatusCode + if err.Message == "" { + err.Message = r.Status + } + if debug { + log.Printf("err: %#v\n", err) + } + return &err +} + +func shouldRetry(err error) bool { + if err == nil { + return false + } + switch err { + case io.ErrUnexpectedEOF, io.EOF: + return true + } + switch e := err.(type) { + case *net.DNSError: + return true + case *net.OpError: + switch e.Op { + case "read", "write": + return true + } + case *Error: + switch e.Code { + case "InternalError", "NoSuchUpload", "NoSuchBucket": + return true + } + } + return false +} + +func hasCode(err error, code string) bool { + s3err, ok := err.(*Error) + return ok && s3err.Code == code +} diff --git a/vendor/src/launchpad.net/goamz/s3/s3_test.go b/vendor/src/launchpad.net/goamz/s3/s3_test.go new file mode 100644 index 0000000000..4a37af5da0 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/s3_test.go @@ -0,0 +1,283 @@ +package s3_test + +import ( + "bytes" + "io/ioutil" + "net/http" + "testing" + + "launchpad.net/goamz/aws" + "launchpad.net/goamz/s3" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" + "time" +) + +func Test(t *testing.T) { + TestingT(t) +} + +type S struct { + s3 *s3.S3 +} + +var _ = Suite(&S{}) + +var testServer = testutil.NewHTTPServer() + +func (s *S) SetUpSuite(c *C) { + testServer.Start() + auth := aws.Auth{"abc", "123"} + s.s3 = s3.New(auth, aws.Region{Name: "faux-region-1", S3Endpoint: testServer.URL}) +} + +func (s *S) TearDownSuite(c *C) { + s3.SetAttemptStrategy(nil) + testServer.Stop() +} + +func (s *S) SetUpTest(c *C) { + attempts := aws.AttemptStrategy{ + Total: 300 * time.Millisecond, + Delay: 100 * time.Millisecond, + } + s3.SetAttemptStrategy(&attempts) +} + +func (s *S) TearDownTest(c *C) { + testServer.Flush() +} + +// PutBucket docs: http://goo.gl/kBTCu + +func (s *S) TestPutBucket(c *C) { + testServer.Response(200, nil, "") + + b := s.s3.Bucket("bucket") + err := b.PutBucket(s3.Private) + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/bucket/") + c.Assert(req.Header["Date"], Not(Equals), "") +} + +// DeleteBucket docs: http://goo.gl/GoBrY + +func (s *S) TestDelBucket(c *C) { + testServer.Response(204, nil, "") + + b := s.s3.Bucket("bucket") + err := b.DelBucket() + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "DELETE") + c.Assert(req.URL.Path, Equals, "/bucket/") + c.Assert(req.Header["Date"], Not(Equals), "") +} + +// GetObject docs: http://goo.gl/isCO7 + +func (s *S) TestGet(c *C) { + testServer.Response(200, nil, "content") + + b := s.s3.Bucket("bucket") + data, err := b.Get("name") + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/bucket/name") + c.Assert(req.Header["Date"], Not(Equals), "") + + c.Assert(err, IsNil) + c.Assert(string(data), Equals, "content") +} + +func (s *S) TestURL(c *C) { + testServer.Response(200, nil, "content") + + b := s.s3.Bucket("bucket") + url := b.URL("name") + r, err := http.Get(url) + c.Assert(err, IsNil) + data, err := ioutil.ReadAll(r.Body) + r.Body.Close() + c.Assert(err, IsNil) + c.Assert(string(data), Equals, "content") + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/bucket/name") +} + +func (s *S) TestGetReader(c *C) { + testServer.Response(200, nil, "content") + + b := s.s3.Bucket("bucket") + rc, err := b.GetReader("name") + c.Assert(err, IsNil) + data, err := ioutil.ReadAll(rc) + rc.Close() + c.Assert(err, IsNil) + c.Assert(string(data), Equals, "content") + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/bucket/name") + c.Assert(req.Header["Date"], Not(Equals), "") +} + +func (s *S) TestGetNotFound(c *C) { + for i := 0; i < 10; i++ { + testServer.Response(404, nil, GetObjectErrorDump) + } + + b := s.s3.Bucket("non-existent-bucket") + data, err := b.Get("non-existent") + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/non-existent-bucket/non-existent") + c.Assert(req.Header["Date"], Not(Equals), "") + + s3err, _ := err.(*s3.Error) + c.Assert(s3err, NotNil) + c.Assert(s3err.StatusCode, Equals, 404) + c.Assert(s3err.BucketName, Equals, "non-existent-bucket") + c.Assert(s3err.RequestId, Equals, "3F1B667FAD71C3D8") + c.Assert(s3err.HostId, Equals, "L4ee/zrm1irFXY5F45fKXIRdOf9ktsKY/8TDVawuMK2jWRb1RF84i1uBzkdNqS5D") + c.Assert(s3err.Code, Equals, "NoSuchBucket") + c.Assert(s3err.Message, Equals, "The specified bucket does not exist") + c.Assert(s3err.Error(), Equals, "The specified bucket does not exist") + c.Assert(data, IsNil) +} + +// PutObject docs: http://goo.gl/FEBPD + +func (s *S) TestPutObject(c *C) { + testServer.Response(200, nil, "") + + b := s.s3.Bucket("bucket") + err := b.Put("name", []byte("content"), "content-type", s3.Private) + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/bucket/name") + c.Assert(req.Header["Date"], Not(DeepEquals), []string{""}) + c.Assert(req.Header["Content-Type"], DeepEquals, []string{"content-type"}) + c.Assert(req.Header["Content-Length"], DeepEquals, []string{"7"}) + //c.Assert(req.Header["Content-MD5"], DeepEquals, "...") + c.Assert(req.Header["X-Amz-Acl"], DeepEquals, []string{"private"}) +} + +func (s *S) TestPutReader(c *C) { + testServer.Response(200, nil, "") + + b := s.s3.Bucket("bucket") + buf := bytes.NewBufferString("content") + err := b.PutReader("name", buf, int64(buf.Len()), "content-type", s3.Private) + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "PUT") + c.Assert(req.URL.Path, Equals, "/bucket/name") + c.Assert(req.Header["Date"], Not(DeepEquals), []string{""}) + c.Assert(req.Header["Content-Type"], DeepEquals, []string{"content-type"}) + c.Assert(req.Header["Content-Length"], DeepEquals, []string{"7"}) + //c.Assert(req.Header["Content-MD5"], Equals, "...") + c.Assert(req.Header["X-Amz-Acl"], DeepEquals, []string{"private"}) +} + +// DelObject docs: http://goo.gl/APeTt + +func (s *S) TestDelObject(c *C) { + testServer.Response(200, nil, "") + + b := s.s3.Bucket("bucket") + err := b.Del("name") + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "DELETE") + c.Assert(req.URL.Path, Equals, "/bucket/name") + c.Assert(req.Header["Date"], Not(Equals), "") +} + +// Bucket List Objects docs: http://goo.gl/YjQTc + +func (s *S) TestList(c *C) { + testServer.Response(200, nil, GetListResultDump1) + + b := s.s3.Bucket("quotes") + + data, err := b.List("N", "", "", 0) + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/quotes/") + c.Assert(req.Header["Date"], Not(Equals), "") + c.Assert(req.Form["prefix"], DeepEquals, []string{"N"}) + c.Assert(req.Form["delimiter"], DeepEquals, []string{""}) + c.Assert(req.Form["marker"], DeepEquals, []string{""}) + c.Assert(req.Form["max-keys"], DeepEquals, []string(nil)) + + c.Assert(data.Name, Equals, "quotes") + c.Assert(data.Prefix, Equals, "N") + c.Assert(data.IsTruncated, Equals, false) + c.Assert(len(data.Contents), Equals, 2) + + c.Assert(data.Contents[0].Key, Equals, "Nelson") + c.Assert(data.Contents[0].LastModified, Equals, "2006-01-01T12:00:00.000Z") + c.Assert(data.Contents[0].ETag, Equals, `"828ef3fdfa96f00ad9f27c383fc9ac7f"`) + c.Assert(data.Contents[0].Size, Equals, int64(5)) + c.Assert(data.Contents[0].StorageClass, Equals, "STANDARD") + c.Assert(data.Contents[0].Owner.ID, Equals, "bcaf161ca5fb16fd081034f") + c.Assert(data.Contents[0].Owner.DisplayName, Equals, "webfile") + + c.Assert(data.Contents[1].Key, Equals, "Neo") + c.Assert(data.Contents[1].LastModified, Equals, "2006-01-01T12:00:00.000Z") + c.Assert(data.Contents[1].ETag, Equals, `"828ef3fdfa96f00ad9f27c383fc9ac7f"`) + c.Assert(data.Contents[1].Size, Equals, int64(4)) + c.Assert(data.Contents[1].StorageClass, Equals, "STANDARD") + c.Assert(data.Contents[1].Owner.ID, Equals, "bcaf1ffd86a5fb16fd081034f") + c.Assert(data.Contents[1].Owner.DisplayName, Equals, "webfile") +} + +func (s *S) TestListWithDelimiter(c *C) { + testServer.Response(200, nil, GetListResultDump2) + + b := s.s3.Bucket("quotes") + + data, err := b.List("photos/2006/", "/", "some-marker", 1000) + c.Assert(err, IsNil) + + req := testServer.WaitRequest() + c.Assert(req.Method, Equals, "GET") + c.Assert(req.URL.Path, Equals, "/quotes/") + c.Assert(req.Header["Date"], Not(Equals), "") + c.Assert(req.Form["prefix"], DeepEquals, []string{"photos/2006/"}) + c.Assert(req.Form["delimiter"], DeepEquals, []string{"/"}) + c.Assert(req.Form["marker"], DeepEquals, []string{"some-marker"}) + c.Assert(req.Form["max-keys"], DeepEquals, []string{"1000"}) + + c.Assert(data.Name, Equals, "example-bucket") + c.Assert(data.Prefix, Equals, "photos/2006/") + c.Assert(data.Delimiter, Equals, "/") + c.Assert(data.Marker, Equals, "some-marker") + c.Assert(data.IsTruncated, Equals, false) + c.Assert(len(data.Contents), Equals, 0) + c.Assert(data.CommonPrefixes, DeepEquals, []string{"photos/2006/feb/", "photos/2006/jan/"}) +} + +func (s *S) TestRetryAttempts(c *C) { + s3.SetAttemptStrategy(nil) + orig := s3.AttemptStrategy() + s3.RetryAttempts(false) + c.Assert(s3.AttemptStrategy(), Equals, aws.AttemptStrategy{}) + s3.RetryAttempts(true) + c.Assert(s3.AttemptStrategy(), Equals, orig) +} diff --git a/vendor/src/launchpad.net/goamz/s3/s3i_test.go b/vendor/src/launchpad.net/goamz/s3/s3i_test.go new file mode 100644 index 0000000000..a33aaf4d6b --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/s3i_test.go @@ -0,0 +1,590 @@ +package s3_test + +import ( + "bytes" + "crypto/md5" + "fmt" + "io/ioutil" + "net/http" + "strings" + + "launchpad.net/goamz/aws" + "launchpad.net/goamz/s3" + "launchpad.net/goamz/testutil" + . "launchpad.net/gocheck" + "net" + "sort" + "time" +) + +// AmazonServer represents an Amazon S3 server. +type AmazonServer struct { + auth aws.Auth +} + +func (s *AmazonServer) SetUp(c *C) { + auth, err := aws.EnvAuth() + if err != nil { + c.Fatal(err.Error()) + } + s.auth = auth +} + +var _ = Suite(&AmazonClientSuite{Region: aws.USEast}) +var _ = Suite(&AmazonClientSuite{Region: aws.EUWest}) +var _ = Suite(&AmazonDomainClientSuite{Region: aws.USEast}) + +// AmazonClientSuite tests the client against a live S3 server. +type AmazonClientSuite struct { + aws.Region + srv AmazonServer + ClientTests +} + +func (s *AmazonClientSuite) SetUpSuite(c *C) { + if !testutil.Amazon { + c.Skip("live tests against AWS disabled (no -amazon)") + } + s.srv.SetUp(c) + s.s3 = s3.New(s.srv.auth, s.Region) + // In case tests were interrupted in the middle before. + s.ClientTests.Cleanup() +} + +func (s *AmazonClientSuite) TearDownTest(c *C) { + s.ClientTests.Cleanup() +} + +// AmazonDomainClientSuite tests the client against a live S3 +// server using bucket names in the endpoint domain name rather +// than the request path. +type AmazonDomainClientSuite struct { + aws.Region + srv AmazonServer + ClientTests +} + +func (s *AmazonDomainClientSuite) SetUpSuite(c *C) { + if !testutil.Amazon { + c.Skip("live tests against AWS disabled (no -amazon)") + } + s.srv.SetUp(c) + region := s.Region + region.S3BucketEndpoint = "https://${bucket}.s3.amazonaws.com" + s.s3 = s3.New(s.srv.auth, region) + s.ClientTests.Cleanup() +} + +func (s *AmazonDomainClientSuite) TearDownTest(c *C) { + s.ClientTests.Cleanup() +} + +// ClientTests defines integration tests designed to test the client. +// It is not used as a test suite in itself, but embedded within +// another type. +type ClientTests struct { + s3 *s3.S3 + authIsBroken bool +} + +func (s *ClientTests) Cleanup() { + killBucket(testBucket(s.s3)) +} + +func testBucket(s *s3.S3) *s3.Bucket { + // Watch out! If this function is corrupted and made to match with something + // people own, killBucket will happily remove *everything* inside the bucket. + key := s.Auth.AccessKey + if len(key) >= 8 { + key = s.Auth.AccessKey[:8] + } + return s.Bucket(fmt.Sprintf("goamz-%s-%s", s.Region.Name, key)) +} + +var attempts = aws.AttemptStrategy{ + Min: 5, + Total: 20 * time.Second, + Delay: 100 * time.Millisecond, +} + +func killBucket(b *s3.Bucket) { + var err error + for attempt := attempts.Start(); attempt.Next(); { + err = b.DelBucket() + if err == nil { + return + } + if _, ok := err.(*net.DNSError); ok { + return + } + e, ok := err.(*s3.Error) + if ok && e.Code == "NoSuchBucket" { + return + } + if ok && e.Code == "BucketNotEmpty" { + // Errors are ignored here. Just retry. + resp, err := b.List("", "", "", 1000) + if err == nil { + for _, key := range resp.Contents { + _ = b.Del(key.Key) + } + } + multis, _, _ := b.ListMulti("", "") + for _, m := range multis { + _ = m.Abort() + } + } + } + message := "cannot delete test bucket" + if err != nil { + message += ": " + err.Error() + } + panic(message) +} + +func get(url string) ([]byte, error) { + for attempt := attempts.Start(); attempt.Next(); { + resp, err := http.Get(url) + if err != nil { + if attempt.HasNext() { + continue + } + return nil, err + } + data, err := ioutil.ReadAll(resp.Body) + resp.Body.Close() + if err != nil { + if attempt.HasNext() { + continue + } + return nil, err + } + return data, err + } + panic("unreachable") +} + +func (s *ClientTests) TestBasicFunctionality(c *C) { + b := testBucket(s.s3) + err := b.PutBucket(s3.PublicRead) + c.Assert(err, IsNil) + + err = b.Put("name", []byte("yo!"), "text/plain", s3.PublicRead) + c.Assert(err, IsNil) + defer b.Del("name") + + data, err := b.Get("name") + c.Assert(err, IsNil) + c.Assert(string(data), Equals, "yo!") + + data, err = get(b.URL("name")) + c.Assert(err, IsNil) + c.Assert(string(data), Equals, "yo!") + + buf := bytes.NewBufferString("hey!") + err = b.PutReader("name2", buf, int64(buf.Len()), "text/plain", s3.Private) + c.Assert(err, IsNil) + defer b.Del("name2") + + rc, err := b.GetReader("name2") + c.Assert(err, IsNil) + data, err = ioutil.ReadAll(rc) + c.Check(err, IsNil) + c.Check(string(data), Equals, "hey!") + rc.Close() + + data, err = get(b.SignedURL("name2", time.Now().Add(time.Hour))) + c.Assert(err, IsNil) + c.Assert(string(data), Equals, "hey!") + + if !s.authIsBroken { + data, err = get(b.SignedURL("name2", time.Now().Add(-time.Hour))) + c.Assert(err, IsNil) + c.Assert(string(data), Matches, "(?s).*AccessDenied.*") + } + + err = b.DelBucket() + c.Assert(err, NotNil) + + s3err, ok := err.(*s3.Error) + c.Assert(ok, Equals, true) + c.Assert(s3err.Code, Equals, "BucketNotEmpty") + c.Assert(s3err.BucketName, Equals, b.Name) + c.Assert(s3err.Message, Equals, "The bucket you tried to delete is not empty") + + err = b.Del("name") + c.Assert(err, IsNil) + err = b.Del("name2") + c.Assert(err, IsNil) + + err = b.DelBucket() + c.Assert(err, IsNil) +} + +func (s *ClientTests) TestGetNotFound(c *C) { + b := s.s3.Bucket("goamz-" + s.s3.Auth.AccessKey) + data, err := b.Get("non-existent") + + s3err, _ := err.(*s3.Error) + c.Assert(s3err, NotNil) + c.Assert(s3err.StatusCode, Equals, 404) + c.Assert(s3err.Code, Equals, "NoSuchBucket") + c.Assert(s3err.Message, Equals, "The specified bucket does not exist") + c.Assert(data, IsNil) +} + +// Communicate with all endpoints to see if they are alive. +func (s *ClientTests) TestRegions(c *C) { + errs := make(chan error, len(aws.Regions)) + for _, region := range aws.Regions { + go func(r aws.Region) { + s := s3.New(s.s3.Auth, r) + b := s.Bucket("goamz-" + s.Auth.AccessKey) + _, err := b.Get("non-existent") + errs <- err + }(region) + } + for _ = range aws.Regions { + err := <-errs + if err != nil { + s3_err, ok := err.(*s3.Error) + if ok { + c.Check(s3_err.Code, Matches, "NoSuchBucket") + } else if _, ok = err.(*net.DNSError); ok { + // Okay as well. + } else { + c.Errorf("Non-S3 error: %s", err) + } + } else { + c.Errorf("Test should have errored but it seems to have succeeded") + } + } +} + +var objectNames = []string{ + "index.html", + "index2.html", + "photos/2006/February/sample2.jpg", + "photos/2006/February/sample3.jpg", + "photos/2006/February/sample4.jpg", + "photos/2006/January/sample.jpg", + "test/bar", + "test/foo", +} + +func keys(names ...string) []s3.Key { + ks := make([]s3.Key, len(names)) + for i, name := range names { + ks[i].Key = name + } + return ks +} + +// As the ListResp specifies all the parameters to the +// request too, we use it to specify request parameters +// and expected results. The Contents field is +// used only for the key names inside it. +var listTests = []s3.ListResp{ + // normal list. + { + Contents: keys(objectNames...), + }, { + Marker: objectNames[0], + Contents: keys(objectNames[1:]...), + }, { + Marker: objectNames[0] + "a", + Contents: keys(objectNames[1:]...), + }, { + Marker: "z", + }, + + // limited results. + { + MaxKeys: 2, + Contents: keys(objectNames[0:2]...), + IsTruncated: true, + }, { + MaxKeys: 2, + Marker: objectNames[0], + Contents: keys(objectNames[1:3]...), + IsTruncated: true, + }, { + MaxKeys: 2, + Marker: objectNames[len(objectNames)-2], + Contents: keys(objectNames[len(objectNames)-1:]...), + }, + + // with delimiter + { + Delimiter: "/", + CommonPrefixes: []string{"photos/", "test/"}, + Contents: keys("index.html", "index2.html"), + }, { + Delimiter: "/", + Prefix: "photos/2006/", + CommonPrefixes: []string{"photos/2006/February/", "photos/2006/January/"}, + }, { + Delimiter: "/", + Prefix: "t", + CommonPrefixes: []string{"test/"}, + }, { + Delimiter: "/", + MaxKeys: 1, + Contents: keys("index.html"), + IsTruncated: true, + }, { + Delimiter: "/", + MaxKeys: 1, + Marker: "index2.html", + CommonPrefixes: []string{"photos/"}, + IsTruncated: true, + }, { + Delimiter: "/", + MaxKeys: 1, + Marker: "photos/", + CommonPrefixes: []string{"test/"}, + IsTruncated: false, + }, { + Delimiter: "Feb", + CommonPrefixes: []string{"photos/2006/Feb"}, + Contents: keys("index.html", "index2.html", "photos/2006/January/sample.jpg", "test/bar", "test/foo"), + }, +} + +func (s *ClientTests) TestDoublePutBucket(c *C) { + b := testBucket(s.s3) + err := b.PutBucket(s3.PublicRead) + c.Assert(err, IsNil) + + err = b.PutBucket(s3.PublicRead) + if err != nil { + c.Assert(err, FitsTypeOf, new(s3.Error)) + c.Assert(err.(*s3.Error).Code, Equals, "BucketAlreadyOwnedByYou") + } +} + +func (s *ClientTests) TestBucketList(c *C) { + b := testBucket(s.s3) + err := b.PutBucket(s3.Private) + c.Assert(err, IsNil) + + objData := make(map[string][]byte) + for i, path := range objectNames { + data := []byte(strings.Repeat("a", i)) + err := b.Put(path, data, "text/plain", s3.Private) + c.Assert(err, IsNil) + defer b.Del(path) + objData[path] = data + } + + for i, t := range listTests { + c.Logf("test %d", i) + resp, err := b.List(t.Prefix, t.Delimiter, t.Marker, t.MaxKeys) + c.Assert(err, IsNil) + c.Check(resp.Name, Equals, b.Name) + c.Check(resp.Delimiter, Equals, t.Delimiter) + c.Check(resp.IsTruncated, Equals, t.IsTruncated) + c.Check(resp.CommonPrefixes, DeepEquals, t.CommonPrefixes) + checkContents(c, resp.Contents, objData, t.Contents) + } +} + +func etag(data []byte) string { + sum := md5.New() + sum.Write(data) + return fmt.Sprintf(`"%x"`, sum.Sum(nil)) +} + +func checkContents(c *C, contents []s3.Key, data map[string][]byte, expected []s3.Key) { + c.Assert(contents, HasLen, len(expected)) + for i, k := range contents { + c.Check(k.Key, Equals, expected[i].Key) + // TODO mtime + c.Check(k.Size, Equals, int64(len(data[k.Key]))) + c.Check(k.ETag, Equals, etag(data[k.Key])) + } +} + +func (s *ClientTests) TestMultiInitPutList(c *C) { + b := testBucket(s.s3) + err := b.PutBucket(s3.Private) + c.Assert(err, IsNil) + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + c.Assert(multi.UploadId, Matches, ".+") + defer multi.Abort() + + var sent []s3.Part + + for i := 0; i < 5; i++ { + p, err := multi.PutPart(i+1, strings.NewReader(fmt.Sprintf("", i+1))) + c.Assert(err, IsNil) + c.Assert(p.N, Equals, i+1) + c.Assert(p.Size, Equals, int64(8)) + c.Assert(p.ETag, Matches, ".+") + sent = append(sent, p) + } + + s3.SetListPartsMax(2) + + parts, err := multi.ListParts() + c.Assert(err, IsNil) + c.Assert(parts, HasLen, len(sent)) + for i := range parts { + c.Assert(parts[i].N, Equals, sent[i].N) + c.Assert(parts[i].Size, Equals, sent[i].Size) + c.Assert(parts[i].ETag, Equals, sent[i].ETag) + } + + err = multi.Complete(parts) + s3err, failed := err.(*s3.Error) + c.Assert(failed, Equals, true) + c.Assert(s3err.Code, Equals, "EntityTooSmall") + + err = multi.Abort() + c.Assert(err, IsNil) + _, err = multi.ListParts() + s3err, ok := err.(*s3.Error) + c.Assert(ok, Equals, true) + c.Assert(s3err.Code, Equals, "NoSuchUpload") +} + +// This may take a minute or more due to the minimum size accepted S3 +// on multipart upload parts. +func (s *ClientTests) TestMultiComplete(c *C) { + b := testBucket(s.s3) + err := b.PutBucket(s3.Private) + c.Assert(err, IsNil) + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + c.Assert(multi.UploadId, Matches, ".+") + defer multi.Abort() + + // Minimum size S3 accepts for all but the last part is 5MB. + data1 := make([]byte, 5*1024*1024) + data2 := []byte("") + + part1, err := multi.PutPart(1, bytes.NewReader(data1)) + c.Assert(err, IsNil) + part2, err := multi.PutPart(2, bytes.NewReader(data2)) + c.Assert(err, IsNil) + + // Purposefully reversed. The order requirement must be handled. + err = multi.Complete([]s3.Part{part2, part1}) + c.Assert(err, IsNil) + + data, err := b.Get("multi") + c.Assert(err, IsNil) + + c.Assert(len(data), Equals, len(data1)+len(data2)) + for i := range data1 { + if data[i] != data1[i] { + c.Fatalf("uploaded object at byte %d: want %d, got %d", data1[i], data[i]) + } + } + c.Assert(string(data[len(data1):]), Equals, string(data2)) +} + +type multiList []*s3.Multi + +func (l multiList) Len() int { return len(l) } +func (l multiList) Less(i, j int) bool { return l[i].Key < l[j].Key } +func (l multiList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } + +func (s *ClientTests) TestListMulti(c *C) { + b := testBucket(s.s3) + err := b.PutBucket(s3.Private) + c.Assert(err, IsNil) + + // Ensure an empty state before testing its behavior. + multis, _, err := b.ListMulti("", "") + for _, m := range multis { + err := m.Abort() + c.Assert(err, IsNil) + } + + keys := []string{ + "a/multi2", + "a/multi3", + "b/multi4", + "multi1", + } + for _, key := range keys { + m, err := b.InitMulti(key, "", s3.Private) + c.Assert(err, IsNil) + defer m.Abort() + } + + // Amazon's implementation of the multiple-request listing for + // multipart uploads in progress seems broken in multiple ways. + // (next tokens are not provided, etc). + //s3.SetListMultiMax(2) + + multis, prefixes, err := b.ListMulti("", "") + c.Assert(err, IsNil) + for attempt := attempts.Start(); attempt.Next() && len(multis) < len(keys); { + multis, prefixes, err = b.ListMulti("", "") + c.Assert(err, IsNil) + } + sort.Sort(multiList(multis)) + c.Assert(prefixes, IsNil) + var gotKeys []string + for _, m := range multis { + gotKeys = append(gotKeys, m.Key) + } + c.Assert(gotKeys, DeepEquals, keys) + for _, m := range multis { + c.Assert(m.Bucket, Equals, b) + c.Assert(m.UploadId, Matches, ".+") + } + + multis, prefixes, err = b.ListMulti("", "/") + for attempt := attempts.Start(); attempt.Next() && len(prefixes) < 2; { + multis, prefixes, err = b.ListMulti("", "") + c.Assert(err, IsNil) + } + c.Assert(err, IsNil) + c.Assert(prefixes, DeepEquals, []string{"a/", "b/"}) + c.Assert(multis, HasLen, 1) + c.Assert(multis[0].Bucket, Equals, b) + c.Assert(multis[0].Key, Equals, "multi1") + c.Assert(multis[0].UploadId, Matches, ".+") + + for attempt := attempts.Start(); attempt.Next() && len(multis) < 2; { + multis, prefixes, err = b.ListMulti("", "") + c.Assert(err, IsNil) + } + multis, prefixes, err = b.ListMulti("a/", "/") + c.Assert(err, IsNil) + c.Assert(prefixes, IsNil) + c.Assert(multis, HasLen, 2) + c.Assert(multis[0].Bucket, Equals, b) + c.Assert(multis[0].Key, Equals, "a/multi2") + c.Assert(multis[0].UploadId, Matches, ".+") + c.Assert(multis[1].Bucket, Equals, b) + c.Assert(multis[1].Key, Equals, "a/multi3") + c.Assert(multis[1].UploadId, Matches, ".+") +} + +func (s *ClientTests) TestMultiPutAllZeroLength(c *C) { + b := testBucket(s.s3) + err := b.PutBucket(s3.Private) + c.Assert(err, IsNil) + + multi, err := b.InitMulti("multi", "text/plain", s3.Private) + c.Assert(err, IsNil) + defer multi.Abort() + + // This tests an edge case. Amazon requires at least one + // part for multiprat uploads to work, even the part is empty. + parts, err := multi.PutAll(strings.NewReader(""), 5*1024*1024) + c.Assert(err, IsNil) + c.Assert(parts, HasLen, 1) + c.Assert(parts[0].Size, Equals, int64(0)) + c.Assert(parts[0].ETag, Equals, `"d41d8cd98f00b204e9800998ecf8427e"`) + + err = multi.Complete(parts) + c.Assert(err, IsNil) +} diff --git a/vendor/src/launchpad.net/goamz/s3/s3t_test.go b/vendor/src/launchpad.net/goamz/s3/s3t_test.go new file mode 100644 index 0000000000..552107b0b7 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/s3t_test.go @@ -0,0 +1,79 @@ +package s3_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/s3" + "launchpad.net/goamz/s3/s3test" + . "launchpad.net/gocheck" +) + +type LocalServer struct { + auth aws.Auth + region aws.Region + srv *s3test.Server + config *s3test.Config +} + +func (s *LocalServer) SetUp(c *C) { + srv, err := s3test.NewServer(s.config) + c.Assert(err, IsNil) + c.Assert(srv, NotNil) + + s.srv = srv + s.region = aws.Region{ + Name: "faux-region-1", + S3Endpoint: srv.URL(), + S3LocationConstraint: true, // s3test server requires a LocationConstraint + } +} + +// LocalServerSuite defines tests that will run +// against the local s3test server. It includes +// selected tests from ClientTests; +// when the s3test functionality is sufficient, it should +// include all of them, and ClientTests can be simply embedded. +type LocalServerSuite struct { + srv LocalServer + clientTests ClientTests +} + +var ( + // run tests twice, once in us-east-1 mode, once not. + _ = Suite(&LocalServerSuite{}) + _ = Suite(&LocalServerSuite{ + srv: LocalServer{ + config: &s3test.Config{ + Send409Conflict: true, + }, + }, + }) +) + +func (s *LocalServerSuite) SetUpSuite(c *C) { + s.srv.SetUp(c) + s.clientTests.s3 = s3.New(s.srv.auth, s.srv.region) + + // TODO Sadly the fake server ignores auth completely right now. :-( + s.clientTests.authIsBroken = true + s.clientTests.Cleanup() +} + +func (s *LocalServerSuite) TearDownTest(c *C) { + s.clientTests.Cleanup() +} + +func (s *LocalServerSuite) TestBasicFunctionality(c *C) { + s.clientTests.TestBasicFunctionality(c) +} + +func (s *LocalServerSuite) TestGetNotFound(c *C) { + s.clientTests.TestGetNotFound(c) +} + +func (s *LocalServerSuite) TestBucketList(c *C) { + s.clientTests.TestBucketList(c) +} + +func (s *LocalServerSuite) TestDoublePutBucket(c *C) { + s.clientTests.TestDoublePutBucket(c) +} diff --git a/vendor/src/launchpad.net/goamz/s3/s3test/server.go b/vendor/src/launchpad.net/goamz/s3/s3test/server.go new file mode 100644 index 0000000000..eb1a2bbc1f --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/s3test/server.go @@ -0,0 +1,628 @@ +package s3test + +import ( + "bytes" + "crypto/md5" + "encoding/hex" + "encoding/xml" + "fmt" + "io" + "io/ioutil" + "launchpad.net/goamz/s3" + "log" + "net" + "net/http" + "net/url" + "regexp" + "sort" + "strconv" + "strings" + "sync" + "time" +) + +const debug = false + +type s3Error struct { + statusCode int + XMLName struct{} `xml:"Error"` + Code string + Message string + BucketName string + RequestId string + HostId string +} + +type action struct { + srv *Server + w http.ResponseWriter + req *http.Request + reqId string +} + +// Config controls the internal behaviour of the Server. A nil config is the default +// and behaves as if all configurations assume their default behaviour. Once passed +// to NewServer, the configuration must not be modified. +type Config struct { + // Send409Conflict controls how the Server will respond to calls to PUT on a + // previously existing bucket. The default is false, and corresponds to the + // us-east-1 s3 enpoint. Setting this value to true emulates the behaviour of + // all other regions. + // http://docs.amazonwebservices.com/AmazonS3/latest/API/ErrorResponses.html + Send409Conflict bool +} + +func (c *Config) send409Conflict() bool { + if c != nil { + return c.Send409Conflict + } + return false +} + +// Server is a fake S3 server for testing purposes. +// All of the data for the server is kept in memory. +type Server struct { + url string + reqId int + listener net.Listener + mu sync.Mutex + buckets map[string]*bucket + config *Config +} + +type bucket struct { + name string + acl s3.ACL + ctime time.Time + objects map[string]*object +} + +type object struct { + name string + mtime time.Time + meta http.Header // metadata to return with requests. + checksum []byte // also held as Content-MD5 in meta. + data []byte +} + +// A resource encapsulates the subject of an HTTP request. +// The resource referred to may or may not exist +// when the request is made. +type resource interface { + put(a *action) interface{} + get(a *action) interface{} + post(a *action) interface{} + delete(a *action) interface{} +} + +func NewServer(config *Config) (*Server, error) { + l, err := net.Listen("tcp", "localhost:0") + if err != nil { + return nil, fmt.Errorf("cannot listen on localhost: %v", err) + } + srv := &Server{ + listener: l, + url: "http://" + l.Addr().String(), + buckets: make(map[string]*bucket), + config: config, + } + go http.Serve(l, http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + srv.serveHTTP(w, req) + })) + return srv, nil +} + +// Quit closes down the server. +func (srv *Server) Quit() { + srv.listener.Close() +} + +// URL returns a URL for the server. +func (srv *Server) URL() string { + return srv.url +} + +func fatalf(code int, codeStr string, errf string, a ...interface{}) { + panic(&s3Error{ + statusCode: code, + Code: codeStr, + Message: fmt.Sprintf(errf, a...), + }) +} + +// serveHTTP serves the S3 protocol. +func (srv *Server) serveHTTP(w http.ResponseWriter, req *http.Request) { + // ignore error from ParseForm as it's usually spurious. + req.ParseForm() + + srv.mu.Lock() + defer srv.mu.Unlock() + + if debug { + log.Printf("s3test %q %q", req.Method, req.URL) + } + a := &action{ + srv: srv, + w: w, + req: req, + reqId: fmt.Sprintf("%09X", srv.reqId), + } + srv.reqId++ + + var r resource + defer func() { + switch err := recover().(type) { + case *s3Error: + switch r := r.(type) { + case objectResource: + err.BucketName = r.bucket.name + case bucketResource: + err.BucketName = r.name + } + err.RequestId = a.reqId + // TODO HostId + w.Header().Set("Content-Type", `xml version="1.0" encoding="UTF-8"`) + w.WriteHeader(err.statusCode) + xmlMarshal(w, err) + case nil: + default: + panic(err) + } + }() + + r = srv.resourceForURL(req.URL) + + var resp interface{} + switch req.Method { + case "PUT": + resp = r.put(a) + case "GET", "HEAD": + resp = r.get(a) + case "DELETE": + resp = r.delete(a) + case "POST": + resp = r.post(a) + default: + fatalf(400, "MethodNotAllowed", "unknown http request method %q", req.Method) + } + if resp != nil && req.Method != "HEAD" { + xmlMarshal(w, resp) + } +} + +// xmlMarshal is the same as xml.Marshal except that +// it panics on error. The marshalling should not fail, +// but we want to know if it does. +func xmlMarshal(w io.Writer, x interface{}) { + if err := xml.NewEncoder(w).Encode(x); err != nil { + panic(fmt.Errorf("error marshalling %#v: %v", x, err)) + } +} + +// In a fully implemented test server, each of these would have +// its own resource type. +var unimplementedBucketResourceNames = map[string]bool{ + "acl": true, + "lifecycle": true, + "policy": true, + "location": true, + "logging": true, + "notification": true, + "versions": true, + "requestPayment": true, + "versioning": true, + "website": true, + "uploads": true, +} + +var unimplementedObjectResourceNames = map[string]bool{ + "uploadId": true, + "acl": true, + "torrent": true, + "uploads": true, +} + +var pathRegexp = regexp.MustCompile("/(([^/]+)(/(.*))?)?") + +// resourceForURL returns a resource object for the given URL. +func (srv *Server) resourceForURL(u *url.URL) (r resource) { + m := pathRegexp.FindStringSubmatch(u.Path) + if m == nil { + fatalf(404, "InvalidURI", "Couldn't parse the specified URI") + } + bucketName := m[2] + objectName := m[4] + if bucketName == "" { + return nullResource{} // root + } + b := bucketResource{ + name: bucketName, + bucket: srv.buckets[bucketName], + } + q := u.Query() + if objectName == "" { + for name := range q { + if unimplementedBucketResourceNames[name] { + return nullResource{} + } + } + return b + + } + if b.bucket == nil { + fatalf(404, "NoSuchBucket", "The specified bucket does not exist") + } + objr := objectResource{ + name: objectName, + version: q.Get("versionId"), + bucket: b.bucket, + } + for name := range q { + if unimplementedObjectResourceNames[name] { + return nullResource{} + } + } + if obj := objr.bucket.objects[objr.name]; obj != nil { + objr.object = obj + } + return objr +} + +// nullResource has error stubs for all resource methods. +type nullResource struct{} + +func notAllowed() interface{} { + fatalf(400, "MethodNotAllowed", "The specified method is not allowed against this resource") + return nil +} + +func (nullResource) put(a *action) interface{} { return notAllowed() } +func (nullResource) get(a *action) interface{} { return notAllowed() } +func (nullResource) post(a *action) interface{} { return notAllowed() } +func (nullResource) delete(a *action) interface{} { return notAllowed() } + +const timeFormat = "2006-01-02T15:04:05.000Z07:00" + +type bucketResource struct { + name string + bucket *bucket // non-nil if the bucket already exists. +} + +// GET on a bucket lists the objects in the bucket. +// http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGET.html +func (r bucketResource) get(a *action) interface{} { + if r.bucket == nil { + fatalf(404, "NoSuchBucket", "The specified bucket does not exist") + } + delimiter := a.req.Form.Get("delimiter") + marker := a.req.Form.Get("marker") + maxKeys := -1 + if s := a.req.Form.Get("max-keys"); s != "" { + i, err := strconv.Atoi(s) + if err != nil || i < 0 { + fatalf(400, "invalid value for max-keys: %q", s) + } + maxKeys = i + } + prefix := a.req.Form.Get("prefix") + a.w.Header().Set("Content-Type", "application/xml") + + if a.req.Method == "HEAD" { + return nil + } + + var objs orderedObjects + + // first get all matching objects and arrange them in alphabetical order. + for name, obj := range r.bucket.objects { + if strings.HasPrefix(name, prefix) { + objs = append(objs, obj) + } + } + sort.Sort(objs) + + if maxKeys <= 0 { + maxKeys = 1000 + } + resp := &s3.ListResp{ + Name: r.bucket.name, + Prefix: prefix, + Delimiter: delimiter, + Marker: marker, + MaxKeys: maxKeys, + } + + var prefixes []string + for _, obj := range objs { + if !strings.HasPrefix(obj.name, prefix) { + continue + } + name := obj.name + isPrefix := false + if delimiter != "" { + if i := strings.Index(obj.name[len(prefix):], delimiter); i >= 0 { + name = obj.name[:len(prefix)+i+len(delimiter)] + if prefixes != nil && prefixes[len(prefixes)-1] == name { + continue + } + isPrefix = true + } + } + if name <= marker { + continue + } + if len(resp.Contents)+len(prefixes) >= maxKeys { + resp.IsTruncated = true + break + } + if isPrefix { + prefixes = append(prefixes, name) + } else { + // Contents contains only keys not found in CommonPrefixes + resp.Contents = append(resp.Contents, obj.s3Key()) + } + } + resp.CommonPrefixes = prefixes + return resp +} + +// orderedObjects holds a slice of objects that can be sorted +// by name. +type orderedObjects []*object + +func (s orderedObjects) Len() int { + return len(s) +} +func (s orderedObjects) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} +func (s orderedObjects) Less(i, j int) bool { + return s[i].name < s[j].name +} + +func (obj *object) s3Key() s3.Key { + return s3.Key{ + Key: obj.name, + LastModified: obj.mtime.Format(timeFormat), + Size: int64(len(obj.data)), + ETag: fmt.Sprintf(`"%x"`, obj.checksum), + // TODO StorageClass + // TODO Owner + } +} + +// DELETE on a bucket deletes the bucket if it's not empty. +func (r bucketResource) delete(a *action) interface{} { + b := r.bucket + if b == nil { + fatalf(404, "NoSuchBucket", "The specified bucket does not exist") + } + if len(b.objects) > 0 { + fatalf(400, "BucketNotEmpty", "The bucket you tried to delete is not empty") + } + delete(a.srv.buckets, b.name) + return nil +} + +// PUT on a bucket creates the bucket. +// http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUT.html +func (r bucketResource) put(a *action) interface{} { + var created bool + if r.bucket == nil { + if !validBucketName(r.name) { + fatalf(400, "InvalidBucketName", "The specified bucket is not valid") + } + if loc := locationConstraint(a); loc == "" { + fatalf(400, "InvalidRequets", "The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.") + } + // TODO validate acl + r.bucket = &bucket{ + name: r.name, + // TODO default acl + objects: make(map[string]*object), + } + a.srv.buckets[r.name] = r.bucket + created = true + } + if !created && a.srv.config.send409Conflict() { + fatalf(409, "BucketAlreadyOwnedByYou", "Your previous request to create the named bucket succeeded and you already own it.") + } + r.bucket.acl = s3.ACL(a.req.Header.Get("x-amz-acl")) + return nil +} + +func (bucketResource) post(a *action) interface{} { + fatalf(400, "Method", "bucket POST method not available") + return nil +} + +// validBucketName returns whether name is a valid bucket name. +// Here are the rules, from: +// http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/BucketRestrictions.html +// +// Can contain lowercase letters, numbers, periods (.), underscores (_), +// and dashes (-). You can use uppercase letters for buckets only in the +// US Standard region. +// +// Must start with a number or letter +// +// Must be between 3 and 255 characters long +// +// There's one extra rule (Must not be formatted as an IP address (e.g., 192.168.5.4) +// but the real S3 server does not seem to check that rule, so we will not +// check it either. +// +func validBucketName(name string) bool { + if len(name) < 3 || len(name) > 255 { + return false + } + r := name[0] + if !(r >= '0' && r <= '9' || r >= 'a' && r <= 'z') { + return false + } + for _, r := range name { + switch { + case r >= '0' && r <= '9': + case r >= 'a' && r <= 'z': + case r == '_' || r == '-': + case r == '.': + default: + return false + } + } + return true +} + +var responseParams = map[string]bool{ + "content-type": true, + "content-language": true, + "expires": true, + "cache-control": true, + "content-disposition": true, + "content-encoding": true, +} + +type objectResource struct { + name string + version string + bucket *bucket // always non-nil. + object *object // may be nil. +} + +// GET on an object gets the contents of the object. +// http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html +func (objr objectResource) get(a *action) interface{} { + obj := objr.object + if obj == nil { + fatalf(404, "NoSuchKey", "The specified key does not exist.") + } + h := a.w.Header() + // add metadata + for name, d := range obj.meta { + h[name] = d + } + // override header values in response to request parameters. + for name, vals := range a.req.Form { + if strings.HasPrefix(name, "response-") { + name = name[len("response-"):] + if !responseParams[name] { + continue + } + h.Set(name, vals[0]) + } + } + if r := a.req.Header.Get("Range"); r != "" { + fatalf(400, "NotImplemented", "range unimplemented") + } + // TODO Last-Modified-Since + // TODO If-Modified-Since + // TODO If-Unmodified-Since + // TODO If-Match + // TODO If-None-Match + // TODO Connection: close ?? + // TODO x-amz-request-id + h.Set("Content-Length", fmt.Sprint(len(obj.data))) + h.Set("ETag", hex.EncodeToString(obj.checksum)) + h.Set("Last-Modified", obj.mtime.Format(time.RFC1123)) + if a.req.Method == "HEAD" { + return nil + } + // TODO avoid holding the lock when writing data. + _, err := a.w.Write(obj.data) + if err != nil { + // we can't do much except just log the fact. + log.Printf("error writing data: %v", err) + } + return nil +} + +var metaHeaders = map[string]bool{ + "Content-MD5": true, + "x-amz-acl": true, + "Content-Type": true, + "Content-Encoding": true, + "Content-Disposition": true, +} + +// PUT on an object creates the object. +func (objr objectResource) put(a *action) interface{} { + // TODO Cache-Control header + // TODO Expires header + // TODO x-amz-server-side-encryption + // TODO x-amz-storage-class + + // TODO is this correct, or should we erase all previous metadata? + obj := objr.object + if obj == nil { + obj = &object{ + name: objr.name, + meta: make(http.Header), + } + } + + var expectHash []byte + if c := a.req.Header.Get("Content-MD5"); c != "" { + var err error + expectHash, err = hex.DecodeString(c) + if err != nil || len(expectHash) != md5.Size { + fatalf(400, "InvalidDigest", "The Content-MD5 you specified was invalid") + } + } + sum := md5.New() + // TODO avoid holding lock while reading data. + data, err := ioutil.ReadAll(io.TeeReader(a.req.Body, sum)) + if err != nil { + fatalf(400, "TODO", "read error") + } + gotHash := sum.Sum(nil) + if expectHash != nil && bytes.Compare(gotHash, expectHash) != 0 { + fatalf(400, "BadDigest", "The Content-MD5 you specified did not match what we received") + } + if a.req.ContentLength >= 0 && int64(len(data)) != a.req.ContentLength { + fatalf(400, "IncompleteBody", "You did not provide the number of bytes specified by the Content-Length HTTP header") + } + + // PUT request has been successful - save data and metadata + for key, values := range a.req.Header { + key = http.CanonicalHeaderKey(key) + if metaHeaders[key] || strings.HasPrefix(key, "X-Amz-Meta-") { + obj.meta[key] = values + } + } + obj.data = data + obj.checksum = gotHash + obj.mtime = time.Now() + objr.bucket.objects[objr.name] = obj + return nil +} + +func (objr objectResource) delete(a *action) interface{} { + delete(objr.bucket.objects, objr.name) + return nil +} + +func (objr objectResource) post(a *action) interface{} { + fatalf(400, "MethodNotAllowed", "The specified method is not allowed against this resource") + return nil +} + +type CreateBucketConfiguration struct { + LocationConstraint string +} + +// locationConstraint parses the request body (if present). +// If there is no body, an empty string will be returned. +func locationConstraint(a *action) string { + var body bytes.Buffer + if _, err := io.Copy(&body, a.req.Body); err != nil { + fatalf(400, "InvalidRequest", err.Error()) + } + if body.Len() == 0 { + return "" + } + var loc CreateBucketConfiguration + if err := xml.NewDecoder(&body).Decode(&loc); err != nil { + fatalf(400, "InvalidRequest", err.Error()) + } + return loc.LocationConstraint +} diff --git a/vendor/src/launchpad.net/goamz/s3/sign.go b/vendor/src/launchpad.net/goamz/s3/sign.go new file mode 100644 index 0000000000..d6de27abae --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/sign.go @@ -0,0 +1,112 @@ +package s3 + +import ( + "crypto/hmac" + "crypto/sha1" + "encoding/base64" + "launchpad.net/goamz/aws" + "log" + "sort" + "strings" +) + +var b64 = base64.StdEncoding + +// ---------------------------------------------------------------------------- +// S3 signing (http://goo.gl/G1LrK) + +var s3ParamsToSign = map[string]bool{ + "acl": true, + "location": true, + "logging": true, + "notification": true, + "partNumber": true, + "policy": true, + "requestPayment": true, + "torrent": true, + "uploadId": true, + "uploads": true, + "versionId": true, + "versioning": true, + "versions": true, + "response-content-type": true, + "response-content-language": true, + "response-expires": true, + "response-cache-control": true, + "response-content-disposition": true, + "response-content-encoding": true, +} + +func sign(auth aws.Auth, method, canonicalPath string, params, headers map[string][]string) { + var md5, ctype, date, xamz string + var xamzDate bool + var sarray []string + for k, v := range headers { + k = strings.ToLower(k) + switch k { + case "content-md5": + md5 = v[0] + case "content-type": + ctype = v[0] + case "date": + if !xamzDate { + date = v[0] + } + default: + if strings.HasPrefix(k, "x-amz-") { + vall := strings.Join(v, ",") + sarray = append(sarray, k+":"+vall) + if k == "x-amz-date" { + xamzDate = true + date = "" + } + } + } + } + if len(sarray) > 0 { + sort.StringSlice(sarray).Sort() + xamz = strings.Join(sarray, "\n") + "\n" + } + + expires := false + if v, ok := params["Expires"]; ok { + // Query string request authentication alternative. + expires = true + date = v[0] + params["AWSAccessKeyId"] = []string{auth.AccessKey} + } + + sarray = sarray[0:0] + for k, v := range params { + if s3ParamsToSign[k] { + for _, vi := range v { + if vi == "" { + sarray = append(sarray, k) + } else { + // "When signing you do not encode these values." + sarray = append(sarray, k+"="+vi) + } + } + } + } + if len(sarray) > 0 { + sort.StringSlice(sarray).Sort() + canonicalPath = canonicalPath + "?" + strings.Join(sarray, "&") + } + + payload := method + "\n" + md5 + "\n" + ctype + "\n" + date + "\n" + xamz + canonicalPath + hash := hmac.New(sha1.New, []byte(auth.SecretKey)) + hash.Write([]byte(payload)) + signature := make([]byte, b64.EncodedLen(hash.Size())) + b64.Encode(signature, hash.Sum(nil)) + + if expires { + params["Signature"] = []string{string(signature)} + } else { + headers["Authorization"] = []string{"AWS " + auth.AccessKey + ":" + string(signature)} + } + if debug { + log.Printf("Signature payload: %q", payload) + log.Printf("Signature: %q", signature) + } +} diff --git a/vendor/src/launchpad.net/goamz/s3/sign_test.go b/vendor/src/launchpad.net/goamz/s3/sign_test.go new file mode 100644 index 0000000000..b856f9b3bf --- /dev/null +++ b/vendor/src/launchpad.net/goamz/s3/sign_test.go @@ -0,0 +1,132 @@ +package s3_test + +import ( + "launchpad.net/goamz/aws" + "launchpad.net/goamz/s3" + . "launchpad.net/gocheck" +) + +// S3 ReST authentication docs: http://goo.gl/G1LrK + +var testAuth = aws.Auth{"0PN5J17HBGZHT7JJ3X82", "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o"} + +func (s *S) TestSignExampleObjectGet(c *C) { + method := "GET" + path := "/johnsmith/photos/puppy.jpg" + headers := map[string][]string{ + "Host": {"johnsmith.s3.amazonaws.com"}, + "Date": {"Tue, 27 Mar 2007 19:36:42 +0000"}, + } + s3.Sign(testAuth, method, path, nil, headers) + expected := "AWS 0PN5J17HBGZHT7JJ3X82:xXjDGYUmKxnwqr5KXNPGldn5LbA=" + c.Assert(headers["Authorization"], DeepEquals, []string{expected}) +} + +func (s *S) TestSignExampleObjectPut(c *C) { + method := "PUT" + path := "/johnsmith/photos/puppy.jpg" + headers := map[string][]string{ + "Host": {"johnsmith.s3.amazonaws.com"}, + "Date": {"Tue, 27 Mar 2007 21:15:45 +0000"}, + "Content-Type": {"image/jpeg"}, + "Content-Length": {"94328"}, + } + s3.Sign(testAuth, method, path, nil, headers) + expected := "AWS 0PN5J17HBGZHT7JJ3X82:hcicpDDvL9SsO6AkvxqmIWkmOuQ=" + c.Assert(headers["Authorization"], DeepEquals, []string{expected}) +} + +func (s *S) TestSignExampleList(c *C) { + method := "GET" + path := "/johnsmith/" + params := map[string][]string{ + "prefix": {"photos"}, + "max-keys": {"50"}, + "marker": {"puppy"}, + } + headers := map[string][]string{ + "Host": {"johnsmith.s3.amazonaws.com"}, + "Date": {"Tue, 27 Mar 2007 19:42:41 +0000"}, + "User-Agent": {"Mozilla/5.0"}, + } + s3.Sign(testAuth, method, path, params, headers) + expected := "AWS 0PN5J17HBGZHT7JJ3X82:jsRt/rhG+Vtp88HrYL706QhE4w4=" + c.Assert(headers["Authorization"], DeepEquals, []string{expected}) +} + +func (s *S) TestSignExampleFetch(c *C) { + method := "GET" + path := "/johnsmith/" + params := map[string][]string{ + "acl": {""}, + } + headers := map[string][]string{ + "Host": {"johnsmith.s3.amazonaws.com"}, + "Date": {"Tue, 27 Mar 2007 19:44:46 +0000"}, + } + s3.Sign(testAuth, method, path, params, headers) + expected := "AWS 0PN5J17HBGZHT7JJ3X82:thdUi9VAkzhkniLj96JIrOPGi0g=" + c.Assert(headers["Authorization"], DeepEquals, []string{expected}) +} + +func (s *S) TestSignExampleDelete(c *C) { + method := "DELETE" + path := "/johnsmith/photos/puppy.jpg" + params := map[string][]string{} + headers := map[string][]string{ + "Host": {"s3.amazonaws.com"}, + "Date": {"Tue, 27 Mar 2007 21:20:27 +0000"}, + "User-Agent": {"dotnet"}, + "x-amz-date": {"Tue, 27 Mar 2007 21:20:26 +0000"}, + } + s3.Sign(testAuth, method, path, params, headers) + expected := "AWS 0PN5J17HBGZHT7JJ3X82:k3nL7gH3+PadhTEVn5Ip83xlYzk=" + c.Assert(headers["Authorization"], DeepEquals, []string{expected}) +} + +func (s *S) TestSignExampleUpload(c *C) { + method := "PUT" + path := "/static.johnsmith.net/db-backup.dat.gz" + params := map[string][]string{} + headers := map[string][]string{ + "Host": {"static.johnsmith.net:8080"}, + "Date": {"Tue, 27 Mar 2007 21:06:08 +0000"}, + "User-Agent": {"curl/7.15.5"}, + "x-amz-acl": {"public-read"}, + "content-type": {"application/x-download"}, + "Content-MD5": {"4gJE4saaMU4BqNR0kLY+lw=="}, + "X-Amz-Meta-ReviewedBy": {"joe@johnsmith.net,jane@johnsmith.net"}, + "X-Amz-Meta-FileChecksum": {"0x02661779"}, + "X-Amz-Meta-ChecksumAlgorithm": {"crc32"}, + "Content-Disposition": {"attachment; filename=database.dat"}, + "Content-Encoding": {"gzip"}, + "Content-Length": {"5913339"}, + } + s3.Sign(testAuth, method, path, params, headers) + expected := "AWS 0PN5J17HBGZHT7JJ3X82:C0FlOtU8Ylb9KDTpZqYkZPX91iI=" + c.Assert(headers["Authorization"], DeepEquals, []string{expected}) +} + +func (s *S) TestSignExampleListAllMyBuckets(c *C) { + method := "GET" + path := "/" + headers := map[string][]string{ + "Host": {"s3.amazonaws.com"}, + "Date": {"Wed, 28 Mar 2007 01:29:59 +0000"}, + } + s3.Sign(testAuth, method, path, nil, headers) + expected := "AWS 0PN5J17HBGZHT7JJ3X82:Db+gepJSUbZKwpx1FR0DLtEYoZA=" + c.Assert(headers["Authorization"], DeepEquals, []string{expected}) +} + +func (s *S) TestSignExampleUnicodeKeys(c *C) { + method := "GET" + path := "/dictionary/fran%C3%A7ais/pr%c3%a9f%c3%a8re" + headers := map[string][]string{ + "Host": {"s3.amazonaws.com"}, + "Date": {"Wed, 28 Mar 2007 01:49:49 +0000"}, + } + s3.Sign(testAuth, method, path, nil, headers) + expected := "AWS 0PN5J17HBGZHT7JJ3X82:dxhSBHoI6eVSPcXJqEghlUzZMnY=" + c.Assert(headers["Authorization"], DeepEquals, []string{expected}) +} diff --git a/vendor/src/launchpad.net/goamz/testutil/http.go b/vendor/src/launchpad.net/goamz/testutil/http.go new file mode 100644 index 0000000000..733edd49d7 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/testutil/http.go @@ -0,0 +1,186 @@ +package testutil + +import ( + "bytes" + "fmt" + "io/ioutil" + "net" + "net/http" + "net/url" + "os" + "time" +) + +type HTTPServer struct { + URL string + Timeout time.Duration + started bool + listener net.Listener + request chan *http.Request + response chan ResponseFunc +} + +type Response struct { + Status int + Headers map[string]string + Body string +} + +func NewHTTPServer() *HTTPServer { + return &HTTPServer{URL: "http://localhost:4444", Timeout: 5 * time.Second} +} + +type ResponseFunc func(path string) Response + +func (s *HTTPServer) Start() { + if s.started { + return + } + s.started = true + s.request = make(chan *http.Request, 1024) + s.response = make(chan ResponseFunc, 1024) + u, err := url.Parse(s.URL) + if err != nil { + panic(err) + } + s.listener, err = net.Listen("tcp", u.Host) + if err != nil { + panic(err) + } + go http.Serve(s.listener, s) + + s.Response(203, nil, "") + for { + // Wait for it to be up. + resp, err := http.Get(s.URL) + if err == nil && resp.StatusCode == 203 { + break + } + time.Sleep(1e8) + } + s.WaitRequest() // Consume dummy request. +} + +func (s *HTTPServer) Stop() { + if s.listener == nil { + return + } + err := s.listener.Close() + if err != nil { + panic(err) + } + s.listener = nil +} + +// Flush discards all pending requests and responses. +func (s *HTTPServer) Flush() { + for { + select { + case <-s.request: + case <-s.response: + default: + return + } + } +} + +func body(req *http.Request) string { + data, err := ioutil.ReadAll(req.Body) + if err != nil { + panic(err) + } + return string(data) +} + +func (s *HTTPServer) ServeHTTP(w http.ResponseWriter, req *http.Request) { + req.ParseMultipartForm(1e6) + data, err := ioutil.ReadAll(req.Body) + if err != nil { + panic(err) + } + req.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + s.request <- req + var resp Response + select { + case respFunc := <-s.response: + resp = respFunc(req.URL.Path) + case <-time.After(s.Timeout): + const msg = "ERROR: Timeout waiting for test to prepare a response\n" + fmt.Fprintf(os.Stderr, msg) + resp = Response{500, nil, msg} + } + if resp.Headers != nil { + h := w.Header() + for k, v := range resp.Headers { + h.Set(k, v) + } + } + if resp.Status != 0 { + w.WriteHeader(resp.Status) + } + w.Write([]byte(resp.Body)) +} + +// WaitRequests returns the next n requests made to the http server from +// the queue. If not enough requests were previously made, it waits until +// the timeout value for them to be made. +func (s *HTTPServer) WaitRequests(n int) []*http.Request { + reqs := make([]*http.Request, 0, n) + for i := 0; i < n; i++ { + select { + case req := <-s.request: + reqs = append(reqs, req) + case <-time.After(s.Timeout): + panic("Timeout waiting for request") + } + } + return reqs +} + +// WaitRequest returns the next request made to the http server from +// the queue. If no requests were previously made, it waits until the +// timeout value for one to be made. +func (s *HTTPServer) WaitRequest() *http.Request { + return s.WaitRequests(1)[0] +} + +// ResponseFunc prepares the test server to respond the following n +// requests using f to build each response. +func (s *HTTPServer) ResponseFunc(n int, f ResponseFunc) { + for i := 0; i < n; i++ { + s.response <- f + } +} + +// ResponseMap maps request paths to responses. +type ResponseMap map[string]Response + +// ResponseMap prepares the test server to respond the following n +// requests using the m to obtain the responses. +func (s *HTTPServer) ResponseMap(n int, m ResponseMap) { + f := func(path string) Response { + for rpath, resp := range m { + if rpath == path { + return resp + } + } + body := "Path not found in response map: " + path + return Response{Status: 500, Body: body} + } + s.ResponseFunc(n, f) +} + +// Responses prepares the test server to respond the following n requests +// using the provided response parameters. +func (s *HTTPServer) Responses(n int, status int, headers map[string]string, body string) { + f := func(path string) Response { + return Response{status, headers, body} + } + s.ResponseFunc(n, f) +} + +// Response prepares the test server to respond the following request +// using the provided response parameters. +func (s *HTTPServer) Response(status int, headers map[string]string, body string) { + s.Responses(1, status, headers, body) +} diff --git a/vendor/src/launchpad.net/goamz/testutil/suite.go b/vendor/src/launchpad.net/goamz/testutil/suite.go new file mode 100644 index 0000000000..75b7c83563 --- /dev/null +++ b/vendor/src/launchpad.net/goamz/testutil/suite.go @@ -0,0 +1,30 @@ +package testutil + +import ( + "flag" + "launchpad.net/goamz/aws" + . "launchpad.net/gocheck" +) + +// Amazon must be used by all tested packages to determine whether to +// run functional tests against the real AWS servers. +var Amazon bool + +func init() { + flag.BoolVar(&Amazon, "amazon", false, "Enable tests against amazon server") +} + +type LiveSuite struct { + auth aws.Auth +} + +func (s *LiveSuite) SetUpSuite(c *C) { + if !Amazon { + c.Skip("amazon tests not enabled (-amazon flag)") + } + auth, err := aws.EnvAuth() + if err != nil { + c.Fatal(err.Error()) + } + s.auth = auth +} From f2d9a4a270c281bf28337f89251aafd2b5909f13 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Mon, 23 Jun 2014 12:27:02 +0100 Subject: [PATCH 331/347] Rearrange transport code - Core types/functions moved from 'beam' to 'libswarm' top-level - Helper types/functions moved from 'beam' to 'util' Signed-off-by: Aanand Prasad --- backends/aggregate.go | 22 ++++---- backends/backends.go | 9 ++-- backends/dockerclient.go | 55 ++++++++++---------- backends/dockerclient_test.go | 8 +-- backends/dockerserver.go | 69 +++++++++++++------------ backends/ec2.go | 54 +++++++++---------- backends/exec.go | 30 +++++------ backends/fakeclient.go | 15 +++--- backends/orchard.go | 10 ++-- backends/shipyard.go | 38 +++++++------- backends/simulator.go | 25 ++++----- backends/tutum.go | 62 +++++++++++----------- beam/task.go | 36 ------------- beam/tree.go | 44 ---------------- debug/debug.go | 39 +++++++------- beam/message.go => message.go | 2 +- beam/message_test.go => message_test.go | 2 +- beam/object.go => object.go | 2 +- beam/server.go => server.go | 2 +- swarmd/swarmd.go | 12 ++--- {beam => utils}/nop.go | 8 +-- {beam => utils}/stream.go | 14 ++--- utils/task.go | 38 ++++++++++++++ utils/tree.go | 46 +++++++++++++++++ beam/verbs.go => verbs.go | 2 +- 25 files changed, 329 insertions(+), 315 deletions(-) delete mode 100644 beam/task.go delete mode 100644 beam/tree.go rename beam/message.go => message.go (99%) rename beam/message_test.go => message_test.go (99%) rename beam/object.go => object.go (99%) rename beam/server.go => server.go (99%) rename {beam => utils}/nop.go (65%) rename {beam => utils}/stream.go (50%) create mode 100644 utils/task.go create mode 100644 utils/tree.go rename beam/verbs.go => verbs.go (98%) diff --git a/backends/aggregate.go b/backends/aggregate.go index 158229869b..9d4ee296bb 100644 --- a/backends/aggregate.go +++ b/backends/aggregate.go @@ -1,7 +1,7 @@ package backends import ( - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" "github.com/flynn/go-shlex" "fmt" @@ -9,11 +9,11 @@ import ( "sync" ) -func Aggregate() beam.Sender { - backend := beam.NewServer() - backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { +func Aggregate() libswarm.Sender { + backend := libswarm.NewServer() + backend.OnSpawn(func(cmd ...string) (libswarm.Sender, error) { allBackends := New() - instance := beam.NewServer() + instance := libswarm.NewServer() a, err := newAggregator(allBackends, instance, cmd) if err != nil { @@ -30,11 +30,11 @@ func Aggregate() beam.Sender { } type aggregator struct { - backends []*beam.Object - server *beam.Server + backends []*libswarm.Object + server *libswarm.Server } -func newAggregator(allBackends *beam.Object, server *beam.Server, args []string) (*aggregator, error) { +func newAggregator(allBackends *libswarm.Object, server *libswarm.Server, args []string) (*aggregator, error) { a := &aggregator{server: server} for _, argString := range args { @@ -60,13 +60,13 @@ func newAggregator(allBackends *beam.Object, server *beam.Server, args []string) return a, nil } -func (a *aggregator) attach(name string, ret beam.Sender) error { +func (a *aggregator) attach(name string, ret libswarm.Sender) error { if name != "" { // TODO: implement this? return fmt.Errorf("attaching to a child is not implemented") } - if _, err := ret.Send(&beam.Message{Verb: beam.Ack, Ret: a.server}); err != nil { + if _, err := ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: a.server}); err != nil { return err } @@ -80,7 +80,7 @@ func (a *aggregator) attach(name string, ret beam.Sender) error { copies.Add(1) go func() { log.Printf("copying output from %#v\n", b) - beam.Copy(ret, r) + libswarm.Copy(ret, r) log.Printf("finished output from %#v\n", b) copies.Done() }() diff --git a/backends/backends.go b/backends/backends.go index 4257010a2e..2c21781a67 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -1,8 +1,9 @@ package backends import ( - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" "github.com/docker/libswarm/debug" + "github.com/docker/libswarm/utils" ) // New returns a new engine, with all backends @@ -11,8 +12,8 @@ import ( // engine, named after the desired backend. // // Example: `New().Job("debug").Run()` -func New() *beam.Object { - backends := beam.NewTree() +func New() *libswarm.Object { + backends := utils.NewTree() backends.Bind("simulator", Simulator()) backends.Bind("debug", debug.Debug()) backends.Bind("fakeclient", FakeClient()) @@ -24,5 +25,5 @@ func New() *beam.Object { backends.Bind("shipyard", Shipyard()) backends.Bind("ec2", Ec2()) backends.Bind("tutum", Tutum()) - return beam.Obj(backends) + return libswarm.Obj(backends) } diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 50960a760d..912f05c0d9 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -4,9 +4,10 @@ import ( "crypto/tls" "encoding/json" "fmt" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" + "github.com/docker/libswarm/utils" "github.com/dotcloud/docker/engine" - "github.com/dotcloud/docker/utils" + dockerutils "github.com/dotcloud/docker/utils" "io" "io/ioutil" "net" @@ -22,16 +23,16 @@ type DockerClientConfig struct { TLSClientConfig *tls.Config } -func DockerClient() beam.Sender { +func DockerClient() libswarm.Sender { return DockerClientWithConfig(&DockerClientConfig{ Scheme: "http", URLHost: "dummy.host", }) } -func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { - backend := beam.NewServer() - backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { +func DockerClientWithConfig(config *DockerClientConfig) libswarm.Sender { + backend := libswarm.NewServer() + backend.OnSpawn(func(cmd ...string) (libswarm.Sender, error) { if len(cmd) != 1 { return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } @@ -42,7 +43,7 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { client.setURL(cmd[0]) b := &dockerClientBackend{ client: client, - Server: beam.NewServer(), + Server: libswarm.NewServer(), } b.Server.OnAttach(b.attach) b.Server.OnStart(b.start) @@ -55,12 +56,12 @@ func DockerClientWithConfig(config *DockerClientConfig) beam.Sender { type dockerClientBackend struct { client *client - *beam.Server + *libswarm.Server } -func (b *dockerClientBackend) attach(name string, ret beam.Sender) error { +func (b *dockerClientBackend) attach(name string, ret libswarm.Sender) error { if name == "" { - ret.Send(&beam.Message{Verb: beam.Ack, Ret: b.Server}) + ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: b.Server}) <-make(chan struct{}) } else { path := fmt.Sprintf("/containers/%s/json", name) @@ -76,7 +77,7 @@ func (b *dockerClientBackend) attach(name string, ret beam.Sender) error { return fmt.Errorf("%s", respBody) } c := b.newContainer(name) - ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) + ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: c}) } return nil } @@ -106,7 +107,7 @@ func (b *dockerClientBackend) ls() ([]string, error) { return names, nil } -func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { +func (b *dockerClientBackend) spawn(cmd ...string) (libswarm.Sender, error) { if len(cmd) != 1 { return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } @@ -128,9 +129,9 @@ func (b *dockerClientBackend) spawn(cmd ...string) (beam.Sender, error) { return b.newContainer(respJson.Id), nil } -func (b *dockerClientBackend) newContainer(id string) beam.Sender { +func (b *dockerClientBackend) newContainer(id string) libswarm.Sender { c := &container{backend: b, id: id} - instance := beam.NewServer() + instance := libswarm.NewServer() instance.OnAttach(c.attach) instance.OnStart(c.start) instance.OnStop(c.stop) @@ -143,8 +144,8 @@ type container struct { id string } -func (c *container) attach(name string, ret beam.Sender) error { - if _, err := ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { +func (c *container) attach(name string, ret libswarm.Sender) error { + if _, err := ret.Send(&libswarm.Message{Verb: libswarm.Ack}); err != nil { return err } @@ -152,8 +153,8 @@ func (c *container) attach(name string, ret beam.Sender) error { stdoutR, stdoutW := io.Pipe() stderrR, stderrW := io.Pipe() - go beam.EncodeStream(ret, stdoutR, "stdout") - go beam.EncodeStream(ret, stderrR, "stderr") + go utils.EncodeStream(ret, stdoutR, "stdout") + go utils.EncodeStream(ret, stderrR, "stderr") c.backend.client.hijack("POST", path, nil, stdoutW, stderrW) return nil @@ -270,40 +271,40 @@ func (c *client) hijack(method, path string, in io.ReadCloser, stdout, stderr io rwc, br := clientconn.Hijack() defer rwc.Close() - receiveStdout := utils.Go(func() (err error) { + receiveStdout := dockerutils.Go(func() (err error) { defer func() { if in != nil { in.Close() } }() - _, err = utils.StdCopy(stdout, stderr, br) - utils.Debugf("[hijack] End of stdout") + _, err = dockerutils.StdCopy(stdout, stderr, br) + dockerutils.Debugf("[hijack] End of stdout") return err }) - sendStdin := utils.Go(func() error { + sendStdin := dockerutils.Go(func() error { if in != nil { io.Copy(rwc, in) - utils.Debugf("[hijack] End of stdin") + dockerutils.Debugf("[hijack] End of stdin") } if tcpc, ok := rwc.(*net.TCPConn); ok { if err := tcpc.CloseWrite(); err != nil { - utils.Debugf("Couldn't send EOF: %s", err) + dockerutils.Debugf("Couldn't send EOF: %s", err) } } else if unixc, ok := rwc.(*net.UnixConn); ok { if err := unixc.CloseWrite(); err != nil { - utils.Debugf("Couldn't send EOF: %s", err) + dockerutils.Debugf("Couldn't send EOF: %s", err) } } // Discard errors due to pipe interruption return nil }) if err := <-receiveStdout; err != nil { - utils.Debugf("Error receiveStdout: %s", err) + dockerutils.Debugf("Error receiveStdout: %s", err) return err } if err := <-sendStdin; err != nil { - utils.Debugf("Error sendStdin: %s", err) + dockerutils.Debugf("Error sendStdin: %s", err) return err } return nil diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go index 6322081111..519f704787 100644 --- a/backends/dockerclient_test.go +++ b/backends/dockerclient_test.go @@ -1,7 +1,7 @@ package backends import ( - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" "fmt" "io/ioutil" @@ -240,21 +240,21 @@ func (s *stubServer) AllSummaries() []string { return summaries } -func instance(t *testing.T, server *stubServer) *beam.Object { +func instance(t *testing.T, server *stubServer) *libswarm.Object { url := "tcp://localhost:4243" if server != nil { url = strings.Replace(server.URL, "http://", "tcp://", 1) } backend := DockerClient() - instance, err := beam.Obj(backend).Spawn(url) + instance, err := libswarm.Obj(backend).Spawn(url) if err != nil { t.Fatal(err) } return instance } -func child(t *testing.T, server *stubServer, i *beam.Object, name string) *beam.Object { +func child(t *testing.T, server *stubServer, i *libswarm.Object, name string) *libswarm.Object { _, child, err := i.Attach(name) if err != nil { t.Fatal(err) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 7a3c237ff2..4005f0b3e8 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -3,11 +3,12 @@ package backends import ( "encoding/json" "fmt" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" + "github.com/docker/libswarm/utils" "github.com/dotcloud/docker/api" "github.com/dotcloud/docker/pkg/version" dockerContainerConfig "github.com/dotcloud/docker/runconfig" - "github.com/dotcloud/docker/utils" + dockerutils "github.com/dotcloud/docker/utils" "github.com/gorilla/mux" "io" "io/ioutil" @@ -20,10 +21,10 @@ import ( "time" ) -func DockerServer() beam.Sender { - backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { - instance := beam.Task(func(in beam.Receiver, out beam.Sender) { +func DockerServer() libswarm.Sender { + backend := libswarm.NewServer() + backend.OnVerb(libswarm.Spawn, libswarm.Handler(func(ctx *libswarm.Message) error { + instance := utils.Task(func(in libswarm.Receiver, out libswarm.Sender) { url := "tcp://localhost:4243" if len(ctx.Args) > 0 { url = ctx.Args[0] @@ -33,15 +34,15 @@ func DockerServer() beam.Sender { fmt.Printf("listenAndServe: %v", err) } }) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: instance}) return err })) return backend } -type HttpApiFunc func(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error +type HttpApiFunc func(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error -func listenAndServe(urlStr string, out beam.Sender) error { +func listenAndServe(urlStr string, out libswarm.Sender) error { fmt.Println("Starting Docker server...") r, err := createRouter(out) if err != nil { @@ -69,7 +70,7 @@ func listenAndServe(urlStr string, out beam.Sender) error { return httpSrv.Serve(l) } -func ping(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { +func ping(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { _, err := w.Write([]byte{'O', 'K'}) return err } @@ -107,14 +108,14 @@ type containerJson struct { VolumesRW map[string]bool } -func getContainerJson(out beam.Sender, containerID string) (containerJson, error) { - o := beam.Obj(out) +func getContainerJson(out libswarm.Sender, containerID string) (containerJson, error) { + o := libswarm.Obj(out) _, containerOut, err := o.Attach(containerID) if err != nil { return containerJson{}, err } - container := beam.Obj(containerOut) + container := libswarm.Obj(containerOut) responseJson, err := container.Get() if err != nil { return containerJson{}, err @@ -128,7 +129,7 @@ func getContainerJson(out beam.Sender, containerID string) (containerJson, error return response, nil } -func getContainerInfo(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { +func getContainerInfo(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { container, err := getContainerJson(out, vars["name"]) if err != nil { return err @@ -136,12 +137,12 @@ func getContainerInfo(out beam.Sender, version version.Version, w http.ResponseW return writeJSON(w, http.StatusOK, container) } -func getContainersJSON(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { +func getContainersJSON(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if err := r.ParseForm(); err != nil { return err } - o := beam.Obj(out) + o := libswarm.Obj(out) names, err := o.Ls() if err != nil { return err @@ -214,7 +215,7 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return writeJSON(w, http.StatusOK, responses) } -func postContainersCreate(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { +func postContainersCreate(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if err := r.ParseForm(); err != nil { return nil } @@ -224,7 +225,7 @@ func postContainersCreate(out beam.Sender, version version.Version, w http.Respo return err } - container, err := beam.Obj(out).Spawn(string(body)) + container, err := libswarm.Obj(out).Spawn(string(body)) if err != nil { return err } @@ -241,7 +242,7 @@ func postContainersCreate(out beam.Sender, version version.Version, w http.Respo return writeJSON(w, http.StatusCreated, response) } -func postContainersStart(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { +func postContainersStart(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if vars == nil { return fmt.Errorf("Missing parameter") } @@ -249,8 +250,8 @@ func postContainersStart(out beam.Sender, version version.Version, w http.Respon // TODO: r.Body name := vars["name"] - _, containerOut, err := beam.Obj(out).Attach(name) - container := beam.Obj(containerOut) + _, containerOut, err := libswarm.Obj(out).Attach(name) + container := libswarm.Obj(containerOut) if err != nil { return err } @@ -262,14 +263,14 @@ func postContainersStart(out beam.Sender, version version.Version, w http.Respon return nil } -func postContainersStop(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { +func postContainersStop(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if vars == nil { return fmt.Errorf("Missing parameter") } name := vars["name"] - _, containerOut, err := beam.Obj(out).Attach(name) - container := beam.Obj(containerOut) + _, containerOut, err := libswarm.Obj(out).Attach(name) + container := libswarm.Obj(containerOut) if err != nil { return err } @@ -291,7 +292,7 @@ func hijackServer(w http.ResponseWriter) (io.ReadCloser, io.Writer, error) { return conn, conn, nil } -func postContainersAttach(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { +func postContainersAttach(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if err := r.ParseForm(); err != nil { return err } @@ -321,20 +322,20 @@ func postContainersAttach(out beam.Sender, version version.Version, w http.Respo fmt.Fprintf(outStream, "HTTP/1.1 200 OK\r\nContent-Type: application/vnd.docker.raw-stream\r\n\r\n") // TODO: if a TTY, then no multiplexing is done - errStream := utils.NewStdWriter(outStream, utils.Stderr) - outStream = utils.NewStdWriter(outStream, utils.Stdout) + errStream := dockerutils.NewStdWriter(outStream, dockerutils.Stderr) + outStream = dockerutils.NewStdWriter(outStream, dockerutils.Stdout) - _, containerOut, err := beam.Obj(out).Attach(vars["name"]) + _, containerOut, err := libswarm.Obj(out).Attach(vars["name"]) if err != nil { return err } - container := beam.Obj(containerOut) + container := libswarm.Obj(containerOut) containerR, _, err := container.Attach("") var tasks sync.WaitGroup go func() { defer tasks.Done() - err := beam.DecodeStream(outStream, containerR, "stdout") + err := utils.DecodeStream(outStream, containerR, "stdout") if err != nil { fmt.Printf("decodestream: %v\n", err) } @@ -342,7 +343,7 @@ func postContainersAttach(out beam.Sender, version version.Version, w http.Respo tasks.Add(1) go func() { defer tasks.Done() - err := beam.DecodeStream(errStream, containerR, "stderr") + err := utils.DecodeStream(errStream, containerR, "stderr") if err != nil { fmt.Printf("decodestream: %v\n", err) } @@ -353,7 +354,7 @@ func postContainersAttach(out beam.Sender, version version.Version, w http.Respo return nil } -func postContainersWait(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { +func postContainersWait(out libswarm.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { if vars == nil { return fmt.Errorf("Missing parameter") } @@ -365,7 +366,7 @@ func postContainersWait(out beam.Sender, version version.Version, w http.Respons }) } -func createRouter(out beam.Sender) (*mux.Router, error) { +func createRouter(out libswarm.Sender) (*mux.Router, error) { r := mux.NewRouter() m := map[string]map[string]HttpApiFunc{ "GET": { @@ -405,7 +406,7 @@ func createRouter(out beam.Sender) (*mux.Router, error) { return r, nil } -func makeHttpHandler(out beam.Sender, localMethod string, localRoute string, handlerFunc HttpApiFunc, dockerVersion version.Version) http.HandlerFunc { +func makeHttpHandler(out libswarm.Sender, localMethod string, localRoute string, handlerFunc HttpApiFunc, dockerVersion version.Version) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // log the request fmt.Printf("Calling %s %s\n", localMethod, localRoute) diff --git a/backends/ec2.go b/backends/ec2.go index 5848a2f4fc..6cc448a0ac 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -3,7 +3,7 @@ package backends import ( "errors" "fmt" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" "net" "net/http" "os" @@ -36,22 +36,22 @@ type ec2Config struct { type ec2Client struct { config *ec2Config ec2Conn *ec2.EC2 - Server *beam.Server + Server *libswarm.Server instance *ec2.Instance sshTunnel *os.Process - dockerInstance *beam.Object + dockerInstance *libswarm.Object } -func (c *ec2Client) get(ctx *beam.Message) error { +func (c *ec2Client) get(ctx *libswarm.Message) error { output, err := c.dockerInstance.Get() if err != nil { return err } - ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{output}}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Set, Args: []string{output}}) return nil } -func (c *ec2Client) start(ctx *beam.Message) error { +func (c *ec2Client) start(ctx *libswarm.Message) error { if instance, err := c.findInstance(); err != nil { return err } else if instance != nil { @@ -73,44 +73,44 @@ func (c *ec2Client) start(ctx *beam.Message) error { c.waitForDockerDaemon() fmt.Printf("ec2 service up and running: region: %s zone: %s\n", c.config.region.Name, c.config.zone) - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: c.Server}) return nil } -func (c *ec2Client) spawn(ctx *beam.Message) error { +func (c *ec2Client) spawn(ctx *libswarm.Message) error { out, err := c.dockerInstance.Spawn(ctx.Args...) if err != nil { return err } - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: out}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: out}) return nil } -func (c *ec2Client) ls(ctx *beam.Message) error { +func (c *ec2Client) ls(ctx *libswarm.Message) error { output, err := c.dockerInstance.Ls() if err != nil { return err } - ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: output}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Set, Args: output}) return nil } -func (c *ec2Client) stop(ctx *beam.Message) error { +func (c *ec2Client) stop(ctx *libswarm.Message) error { c.dockerInstance.Stop() return nil } -func (c *ec2Client) attach(ctx *beam.Message) error { +func (c *ec2Client) attach(ctx *libswarm.Message) error { if ctx.Args[0] == "" { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: c.Server}) <-make(chan struct{}) } else { _, out, err := c.dockerInstance.Attach(ctx.Args[0]) if err != nil { return err } - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: out}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: out}) } return nil @@ -281,7 +281,7 @@ func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { URLHost: "localhost", }) - dockerBackend := beam.Obj(dockerClient) + dockerBackend := libswarm.Obj(dockerClient) url := fmt.Sprintf("tcp://localhost:%s", c.config.sshLocalPort) dockerInstance, err := dockerBackend.Spawn(url) c.dockerInstance = dockerInstance @@ -341,9 +341,9 @@ func signalHandler(client *ec2Client) { }() } -func Ec2() beam.Sender { - backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { +func Ec2() libswarm.Sender { + backend := libswarm.NewServer() + backend.OnVerb(libswarm.Spawn, libswarm.Handler(func(ctx *libswarm.Message) error { var config, err = newConfig(ctx.Args) if err != nil { @@ -355,16 +355,16 @@ func Ec2() beam.Sender { return err } - client := &ec2Client{config, ec2Conn, beam.NewServer(), nil, nil, nil} - client.Server.OnVerb(beam.Spawn, beam.Handler(client.spawn)) - client.Server.OnVerb(beam.Start, beam.Handler(client.start)) - client.Server.OnVerb(beam.Stop, beam.Handler(client.stop)) - client.Server.OnVerb(beam.Attach, beam.Handler(client.attach)) - client.Server.OnVerb(beam.Ls, beam.Handler(client.ls)) - client.Server.OnVerb(beam.Get, beam.Handler(client.get)) + client := &ec2Client{config, ec2Conn, libswarm.NewServer(), nil, nil, nil} + client.Server.OnVerb(libswarm.Spawn, libswarm.Handler(client.spawn)) + client.Server.OnVerb(libswarm.Start, libswarm.Handler(client.start)) + client.Server.OnVerb(libswarm.Stop, libswarm.Handler(client.stop)) + client.Server.OnVerb(libswarm.Attach, libswarm.Handler(client.attach)) + client.Server.OnVerb(libswarm.Ls, libswarm.Handler(client.ls)) + client.Server.OnVerb(libswarm.Get, libswarm.Handler(client.get)) signalHandler(client) - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server}) + _, err = ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: client.Server}) return err })) diff --git a/backends/exec.go b/backends/exec.go index edd949ff91..f81d9e4f4a 100644 --- a/backends/exec.go +++ b/backends/exec.go @@ -9,12 +9,12 @@ import ( "strings" "sync" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" ) -func Exec() beam.Sender { - e := beam.NewServer() - e.OnVerb(beam.Spawn, beam.Handler(func(msg *beam.Message) error { +func Exec() libswarm.Sender { + e := libswarm.NewServer() + e.OnVerb(libswarm.Spawn, libswarm.Handler(func(msg *libswarm.Message) error { if len(msg.Args) < 1 { return fmt.Errorf("usage: SPAWN exec|... ") } @@ -31,9 +31,9 @@ func Exec() beam.Sender { } cmd := &command{ Cmd: exec.Command(config.Path, config.Args...), - Server: beam.NewServer(), + Server: libswarm.NewServer(), } - cmd.OnVerb(beam.Attach, beam.Handler(func(msg *beam.Message) error { + cmd.OnVerb(libswarm.Attach, libswarm.Handler(func(msg *libswarm.Message) error { stdout, err := cmd.StdoutPipe() if err != nil { return err @@ -42,11 +42,11 @@ func Exec() beam.Sender { if err != nil { return err } - inR, inW := beam.Pipe() - if _, err := msg.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: inW}); err != nil { + inR, inW := libswarm.Pipe() + if _, err := msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: inW}); err != nil { return err } - out := beam.Obj(msg.Ret) + out := libswarm.Obj(msg.Ret) go func() { defer stdin.Close() for { @@ -54,7 +54,7 @@ func Exec() beam.Sender { if err != nil { return } - if msg.Verb == beam.Log && len(msg.Args) > 0 { + if msg.Verb == libswarm.Log && len(msg.Args) > 0 { fmt.Fprintf(stdin, "%s\n", strings.TrimRight(msg.Args[0], "\r\n")) } } @@ -76,7 +76,7 @@ func Exec() beam.Sender { cmd.tasks.Wait() return nil })) - cmd.OnVerb(beam.Start, beam.Handler(func(msg *beam.Message) error { + cmd.OnVerb(libswarm.Start, libswarm.Handler(func(msg *libswarm.Message) error { cmd.tasks.Add(1) if err := cmd.Cmd.Start(); err != nil { return err @@ -84,13 +84,13 @@ func Exec() beam.Sender { go func() { defer cmd.tasks.Done() if err := cmd.Cmd.Wait(); err != nil { - beam.Obj(msg.Ret).Log("%s exited status=%v", cmd.Cmd.Path, err) + libswarm.Obj(msg.Ret).Log("%s exited status=%v", cmd.Cmd.Path, err) } }() - msg.Ret.Send(&beam.Message{Verb: beam.Ack}) + msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack}) return nil })) - if _, err := msg.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: cmd}); err != nil { + if _, err := msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: cmd}); err != nil { return err } return nil @@ -100,6 +100,6 @@ func Exec() beam.Sender { type command struct { *exec.Cmd - *beam.Server + *libswarm.Server tasks sync.WaitGroup } diff --git a/backends/fakeclient.go b/backends/fakeclient.go index 157ab842b6..56a9ed2a8a 100644 --- a/backends/fakeclient.go +++ b/backends/fakeclient.go @@ -4,17 +4,18 @@ import ( "fmt" "time" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" + "github.com/docker/libswarm/utils" ) -func FakeClient() beam.Sender { - backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { +func FakeClient() libswarm.Sender { + backend := libswarm.NewServer() + backend.OnVerb(libswarm.Spawn, libswarm.Handler(func(ctx *libswarm.Message) error { // Instantiate a new fakeclient instance - instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + instance := utils.Task(func(in libswarm.Receiver, out libswarm.Sender) { fmt.Printf("fake client!\n") defer fmt.Printf("end of fake client!\n") - o := beam.Obj(out) + o := libswarm.Obj(out) o.Log("fake client starting") defer o.Log("fake client terminating") for { @@ -22,7 +23,7 @@ func FakeClient() beam.Sender { o.Log("fake client heartbeat!") } }) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: instance}) return err })) return backend diff --git a/backends/orchard.go b/backends/orchard.go index f16d5aebf3..3e3d45c26c 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -1,7 +1,7 @@ package backends import ( - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" "github.com/orchardup/go-orchard/api" "crypto/tls" @@ -11,9 +11,9 @@ import ( "os" ) -func Orchard() beam.Sender { - backend := beam.NewServer() - backend.OnSpawn(func(cmd ...string) (beam.Sender, error) { +func Orchard() libswarm.Sender { + backend := libswarm.NewServer() + backend.OnSpawn(func(cmd ...string) (libswarm.Sender, error) { if len(cmd) != 2 { return nil, fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host") } @@ -40,7 +40,7 @@ func Orchard() beam.Sender { URLHost: host.IPAddress, TLSClientConfig: tlsConfig, }) - forwardBackend := beam.Obj(backend) + forwardBackend := libswarm.Obj(backend) forwardInstance, err := forwardBackend.Spawn(url) if err != nil { return nil, err diff --git a/backends/shipyard.go b/backends/shipyard.go index d05f4f2bb7..cc5d42a746 100644 --- a/backends/shipyard.go +++ b/backends/shipyard.go @@ -3,7 +3,7 @@ package backends import ( "encoding/json" "fmt" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" "io/ioutil" "net/http" "net/url" @@ -11,29 +11,29 @@ import ( "time" ) -func Shipyard() beam.Sender { - backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { +func Shipyard() libswarm.Sender { + backend := libswarm.NewServer() + backend.OnVerb(libswarm.Spawn, libswarm.Handler(func(ctx *libswarm.Message) error { if len(ctx.Args) != 3 { return fmt.Errorf("Shipyard: Usage ") } c := &shipyard{url: ctx.Args[0], user: ctx.Args[1], pass: ctx.Args[2]} - c.Server = beam.NewServer() - c.Server.OnVerb(beam.Attach, beam.Handler(c.attach)) - c.Server.OnVerb(beam.Start, beam.Handler(c.start)) - c.Server.OnVerb(beam.Ls, beam.Handler(c.containers)) - c.OnVerb(beam.Get, beam.Handler(c.containerInspect)) - _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + c.Server = libswarm.NewServer() + c.Server.OnVerb(libswarm.Attach, libswarm.Handler(c.attach)) + c.Server.OnVerb(libswarm.Start, libswarm.Handler(c.start)) + c.Server.OnVerb(libswarm.Ls, libswarm.Handler(c.containers)) + c.OnVerb(libswarm.Get, libswarm.Handler(c.containerInspect)) + _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: c.Server}) return err })) return backend } -func (c *shipyard) attach(ctx *beam.Message) error { +func (c *shipyard) attach(ctx *libswarm.Message) error { if ctx.Args[0] == "" { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c.Server}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: c.Server}) for { time.Sleep(1 * time.Second) } @@ -41,17 +41,17 @@ func (c *shipyard) attach(ctx *beam.Message) error { return nil } -func (c *shipyard) start(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack}) +func (c *shipyard) start(ctx *libswarm.Message) error { + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack}) return nil } type shipyard struct { url, user, pass string - *beam.Server + *libswarm.Server } -func (c *shipyard) containers(ctx *beam.Message) error { +func (c *shipyard) containers(ctx *libswarm.Message) error { out, err := c.gateway("GET", "containers", "") if err != nil { return err @@ -62,7 +62,7 @@ func (c *shipyard) containers(ctx *beam.Message) error { for _, c := range data.Objects { ids = append(ids, c.Id) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: ids}); err != nil { + if _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Set, Args: ids}); err != nil { return err } return nil @@ -76,7 +76,7 @@ type shipyardObject struct { Id string `json:"container_id"` } -func (c *shipyard) containerInspect(ctx *beam.Message) error { +func (c *shipyard) containerInspect(ctx *libswarm.Message) error { if len(ctx.Args) != 1 { return fmt.Errorf("Expected 1 container id, got %s", len(ctx.Args)) } @@ -87,7 +87,7 @@ func (c *shipyard) containerInspect(ctx *beam.Message) error { } var data shipyardObject json.Unmarshal(out, &data) - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{"foo", "bar"}}); err != nil { + if _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Set, Args: []string{"foo", "bar"}}); err != nil { return err } return nil diff --git a/backends/simulator.go b/backends/simulator.go index a2b81d957a..0a59388783 100644 --- a/backends/simulator.go +++ b/backends/simulator.go @@ -1,24 +1,25 @@ package backends import ( - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" + "github.com/docker/libswarm/utils" ) -func Simulator() beam.Sender { - s := beam.NewServer() - s.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { +func Simulator() libswarm.Sender { + s := libswarm.NewServer() + s.OnVerb(libswarm.Spawn, libswarm.Handler(func(ctx *libswarm.Message) error { containers := ctx.Args - instance := beam.Task(func(in beam.Receiver, out beam.Sender) { - beam.Obj(out).Log("[simulator] starting\n") - s := beam.NewServer() - s.OnVerb(beam.Ls, beam.Handler(func(msg *beam.Message) error { - beam.Obj(out).Log("[simulator] generating fake list of objects...\n") - beam.Obj(msg.Ret).Set(containers...) + instance := utils.Task(func(in libswarm.Receiver, out libswarm.Sender) { + libswarm.Obj(out).Log("[simulator] starting\n") + s := libswarm.NewServer() + s.OnVerb(libswarm.Ls, libswarm.Handler(func(msg *libswarm.Message) error { + libswarm.Obj(out).Log("[simulator] generating fake list of objects...\n") + libswarm.Obj(msg.Ret).Set(containers...) return nil })) - beam.Copy(s, in) + libswarm.Copy(s, in) }) - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: instance}) return nil })) return s diff --git a/backends/tutum.go b/backends/tutum.go index d9a1d41643..fd3e042969 100644 --- a/backends/tutum.go +++ b/backends/tutum.go @@ -3,7 +3,7 @@ package backends import ( "encoding/json" "fmt" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" "github.com/dotcloud/docker/engine" "github.com/tutumcloud/go-tutum" "io/ioutil" @@ -18,9 +18,9 @@ var ( tutumConnectorVersion = "v1.11" ) -func Tutum() beam.Sender { - backend := beam.NewServer() - backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error { +func Tutum() libswarm.Sender { + backend := libswarm.NewServer() + backend.OnVerb(libswarm.Spawn, libswarm.Handler(func(ctx *libswarm.Message) error { if len(ctx.Args) == 2 { tutum.User = ctx.Args[0] tutum.ApiKey = ctx.Args[1] @@ -34,13 +34,13 @@ func Tutum() beam.Sender { } t := &tutumBackend{ tutumDockerConnector: tutumDockerConnector, - Server: beam.NewServer(), + Server: libswarm.NewServer(), } - t.Server.OnVerb(beam.Attach, beam.Handler(t.attach)) - t.Server.OnVerb(beam.Start, beam.Handler(t.ack)) - t.Server.OnVerb(beam.Ls, beam.Handler(t.ls)) - t.Server.OnVerb(beam.Spawn, beam.Handler(t.spawn)) - _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) + t.Server.OnVerb(libswarm.Attach, libswarm.Handler(t.attach)) + t.Server.OnVerb(libswarm.Start, libswarm.Handler(t.ack)) + t.Server.OnVerb(libswarm.Ls, libswarm.Handler(t.ls)) + t.Server.OnVerb(libswarm.Spawn, libswarm.Handler(t.spawn)) + _, err = ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: t.Server}) return err })) return backend @@ -48,28 +48,28 @@ func Tutum() beam.Sender { type tutumBackend struct { tutumDockerConnector *tutumDockerConnector - *beam.Server + *libswarm.Server } -func (t *tutumBackend) attach(ctx *beam.Message) error { +func (t *tutumBackend) attach(ctx *libswarm.Message) error { if ctx.Args[0] == "" { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: t.Server}) for { time.Sleep(1 * time.Second) } } else { c := t.newContainer(ctx.Args[0]) - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: c}) } return nil } -func (t *tutumBackend) ack(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: t.Server}) +func (t *tutumBackend) ack(ctx *libswarm.Message) error { + ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: t.Server}) return nil } -func (t *tutumBackend) ls(ctx *beam.Message) error { +func (t *tutumBackend) ls(ctx *libswarm.Message) error { resp, err := t.tutumDockerConnector.call("GET", "/containers/json", "") if err != nil { return fmt.Errorf("%s: get: %v", t.tutumDockerConnector.URL.String(), err) @@ -86,13 +86,13 @@ func (t *tutumBackend) ls(ctx *beam.Message) error { for _, env := range c.Data { ids = append(ids, env.GetList("Id")[0]) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: ids}); err != nil { + if _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Set, Args: ids}); err != nil { return fmt.Errorf("%s: send response: %v", t.tutumDockerConnector.URL.String(), err) } return nil } -func (t *tutumBackend) spawn(ctx *beam.Message) error { +func (t *tutumBackend) spawn(ctx *libswarm.Message) error { if len(ctx.Args) != 1 { return fmt.Errorf("tutum: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } @@ -112,18 +112,18 @@ func (t *tutumBackend) spawn(ctx *beam.Message) error { return err } c := t.newContainer(respJson.Id) - if _, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}); err != nil { + if _, err = ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: c}); err != nil { return err } return nil } -func (t *tutumBackend) newContainer(id string) beam.Sender { +func (t *tutumBackend) newContainer(id string) libswarm.Sender { c := &tutumContainer{tutumBackend: t, id: id} - instance := beam.NewServer() - instance.OnVerb(beam.Get, beam.Handler(c.get)) - instance.OnVerb(beam.Start, beam.Handler(c.start)) - instance.OnVerb(beam.Stop, beam.Handler(c.stop)) + instance := libswarm.NewServer() + instance.OnVerb(libswarm.Get, libswarm.Handler(c.get)) + instance.OnVerb(libswarm.Start, libswarm.Handler(c.start)) + instance.OnVerb(libswarm.Stop, libswarm.Handler(c.stop)) return instance } @@ -132,7 +132,7 @@ type tutumContainer struct { id string } -func (c *tutumContainer) get(ctx *beam.Message) error { +func (c *tutumContainer) get(ctx *libswarm.Message) error { path := fmt.Sprintf("/containers/%s/json", c.id) resp, err := c.tutumBackend.tutumDockerConnector.call("GET", path, "") if err != nil { @@ -146,13 +146,13 @@ func (c *tutumContainer) get(ctx *beam.Message) error { if resp.StatusCode != 200 { return fmt.Errorf("%s", respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{string(respBody)}}); err != nil { + if _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Set, Args: []string{string(respBody)}}); err != nil { return err } return nil } -func (c *tutumContainer) start(ctx *beam.Message) error { +func (c *tutumContainer) start(ctx *libswarm.Message) error { path := fmt.Sprintf("/containers/%s/start", c.id) resp, err := c.tutumBackend.tutumDockerConnector.call("POST", path, "") if err != nil { @@ -165,13 +165,13 @@ func (c *tutumContainer) start(ctx *beam.Message) error { if resp.StatusCode != 204 { return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + if _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack}); err != nil { return err } return nil } -func (c *tutumContainer) stop(ctx *beam.Message) error { +func (c *tutumContainer) stop(ctx *libswarm.Message) error { path := fmt.Sprintf("/containers/%s/stop", c.id) resp, err := c.tutumBackend.tutumDockerConnector.call("POST", path, "") if err != nil { @@ -184,7 +184,7 @@ func (c *tutumContainer) stop(ctx *beam.Message) error { if resp.StatusCode != 204 { return fmt.Errorf("expected status code 204, got %d:\n%s", resp.StatusCode, respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack}); err != nil { + if _, err := ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack}); err != nil { return err } return nil diff --git a/beam/task.go b/beam/task.go deleted file mode 100644 index 4ee3f95584..0000000000 --- a/beam/task.go +++ /dev/null @@ -1,36 +0,0 @@ -package beam - -import ( - "fmt" - "sync" -) - -func Task(f func(in Receiver, out Sender)) Sender { - var running bool - var l sync.RWMutex - inR, inW := Pipe() - outR, outW := Pipe() - obj := NewServer() - obj.OnVerb(Attach, Handler(func(msg *Message) error { - msg.Ret.Send(&Message{Verb: Ack, Ret: inW}) - fmt.Printf("copying task output from %#v to %#v\n", outR, msg.Ret) - defer fmt.Printf("(DONE) copying task output from %#v to %#v\n", outR, msg.Ret) - Copy(msg.Ret, outR) - return nil - })) - obj.OnVerb(Start, Handler(func(msg *Message) error { - l.RLock() - r := running - l.RUnlock() - if r { - return fmt.Errorf("already running") - } - l.Lock() - go f(inR, outW) - running = true - l.Unlock() - msg.Ret.Send(&Message{Verb: Ack}) - return nil - })) - return obj -} diff --git a/beam/tree.go b/beam/tree.go deleted file mode 100644 index 83c92dc1a0..0000000000 --- a/beam/tree.go +++ /dev/null @@ -1,44 +0,0 @@ -package beam - -import ( - "sort" -) - -type Tree struct { - *Server - children map[string]Sender -} - -func NewTree() *Tree { - t := &Tree{ - Server: NewServer(), - children: make(map[string]Sender), - } - t.OnVerb(Attach, Handler(func(msg *Message) error { - if len(msg.Args) == 0 || msg.Args[0] == "" { - msg.Ret.Send(&Message{Verb: Ack, Ret: t}) - return nil - } - if child, exists := t.children[msg.Args[0]]; exists { - msg.Ret.Send(&Message{Verb: Ack, Ret: child}) - return nil - } - Obj(msg.Ret).Error("not found") - return nil - })) - t.OnVerb(Ls, Handler(func(msg *Message) error { - names := make([]string, 0, len(t.children)) - for name := range t.children { - names = append(names, name) - } - sort.Strings(names) - Obj(msg.Ret).Set(names...) - return nil - })) - return t -} - -func (t *Tree) Bind(name string, dst Sender) *Tree { - t.children[name] = dst - return t -} diff --git a/debug/debug.go b/debug/debug.go index 0e361e6db7..de0d0a9bd3 100644 --- a/debug/debug.go +++ b/debug/debug.go @@ -5,46 +5,47 @@ import ( "io" "log" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" + "github.com/docker/libswarm/utils" ) // The Debug service is an example of intercepting messages between a receiver and a sender. // The service also exposes messages passing through it for debug purposes. -func Debug() beam.Sender { +func Debug() libswarm.Sender { dbgInstance := &debug{ - service: beam.NewServer(), + service: libswarm.NewServer(), } - sender := beam.NewServer() - sender.OnVerb(beam.Spawn, beam.Handler(dbgInstance.spawn)) + sender := libswarm.NewServer() + sender.OnVerb(libswarm.Spawn, libswarm.Handler(dbgInstance.spawn)) return sender } // Debug service type type debug struct { - service *beam.Server - out beam.Sender + service *libswarm.Server + out libswarm.Sender } // Spawn will return a new instance as the Ret channel of the message sent back -func (dbg *debug) spawn(msg *beam.Message) (err error) { - // By sending back a task, beam will run the function with the in and out arguments +func (dbg *debug) spawn(msg *libswarm.Message) (err error) { + // By sending back a task, libswarm will run the function with the in and out arguments // set to the services present before and after this one in the pipeline. - instance := beam.Task(func(in beam.Receiver, out beam.Sender) { + instance := utils.Task(func(in libswarm.Receiver, out libswarm.Sender) { // Setup our channels dbg.out = out // Set up the debug interceptor - dbg.service.Catchall(beam.Handler(dbg.catchall)) + dbg.service.Catchall(libswarm.Handler(dbg.catchall)) // Copy everything from the receiver to our service. By copying like this in the task // we can use the catchall handler instead of handling the message here. - beam.Copy(dbg.service, in) + libswarm.Copy(dbg.service, in) }) // Inform the system of our new instance - msg.Ret.Send(&beam.Message{ - Verb: beam.Ack, + msg.Ret.Send(&libswarm.Message{ + Verb: libswarm.Ack, Ret: instance, }) @@ -52,7 +53,7 @@ func (dbg *debug) spawn(msg *beam.Message) (err error) { } // Catches all messages sent to the service -func (dbg *debug) catchall(msg *beam.Message) (err error) { +func (dbg *debug) catchall(msg *libswarm.Message) (err error) { log.Printf("[debug] ---> Outbound Message ---> { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) // If there's no output after us then we'll just reply with an error @@ -61,13 +62,13 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) { return fmt.Errorf("[debug] Verb: %s is not implemented.", msg.Verb) } - // We forward the message with a special Ret value of "beam.RetPipe" - this + // We forward the message with a special Ret value of "libswarm.RetPipe" - this // asks libchan to open a new pipe so that we can read replies from upstream - forwardedMsg := &beam.Message{ + forwardedMsg := &libswarm.Message{ Verb: msg.Verb, Args: msg.Args, Att: msg.Att, - Ret: beam.RetPipe, + Ret: libswarm.RetPipe, } // Send the forwarded message @@ -78,7 +79,7 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) { } else { for { // Relay all messages returned until the inbound channel is empty (EOF) - var reply *beam.Message + var reply *libswarm.Message if reply, err = inbound.Receive(0); err != nil { if err == io.EOF { // EOF is expected diff --git a/beam/message.go b/message.go similarity index 99% rename from beam/message.go rename to message.go index eac5b23c76..0e06e95f8a 100644 --- a/beam/message.go +++ b/message.go @@ -1,4 +1,4 @@ -package beam +package libswarm import ( "github.com/docker/libchan" diff --git a/beam/message_test.go b/message_test.go similarity index 99% rename from beam/message_test.go rename to message_test.go index 8987cb199e..9d24177b01 100644 --- a/beam/message_test.go +++ b/message_test.go @@ -1,4 +1,4 @@ -package beam +package libswarm import ( "io/ioutil" diff --git a/beam/object.go b/object.go similarity index 99% rename from beam/object.go rename to object.go index eca3389c1f..89a15e3fdb 100644 --- a/beam/object.go +++ b/object.go @@ -1,4 +1,4 @@ -package beam +package libswarm import ( "encoding/json" diff --git a/beam/server.go b/server.go similarity index 99% rename from beam/server.go rename to server.go index 23a2e09baa..ee584d3380 100644 --- a/beam/server.go +++ b/server.go @@ -1,4 +1,4 @@ -package beam +package libswarm import ( "github.com/docker/libchan" diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index 864311d4b0..cb0e512319 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/codegangsta/cli" "github.com/docker/libswarm/backends" - "github.com/docker/libswarm/beam" + "github.com/docker/libswarm" _ "github.com/dotcloud/docker/api/server" "github.com/flynn/go-shlex" "io" @@ -24,7 +24,7 @@ func main() { } func cmdDaemon(c *cli.Context) { - app := beam.NewServer() + app := libswarm.NewServer() app.OnLog(func(args ...string) error { log.Printf("%s\n", strings.Join(args, " ")) return nil @@ -42,7 +42,7 @@ func cmdDaemon(c *cli.Context) { fmt.Println(strings.Join(names, "\n")) return } - var previousInstanceR beam.Receiver + var previousInstanceR libswarm.Receiver // FIXME: refactor into a Pipeline for idx, backendArg := range c.Args() { bName, bArgs, err := parseCmd(backendArg) @@ -61,9 +61,9 @@ func cmdDaemon(c *cli.Context) { if err != nil { Fatalf("attach: %v", err) } - go func(r beam.Receiver, w beam.Sender, idx int) { + go func(r libswarm.Receiver, w libswarm.Sender, idx int) { if r != nil { - beam.Copy(w, r) + libswarm.Copy(w, r) } w.Close() }(previousInstanceR, instanceW, idx) @@ -72,7 +72,7 @@ func cmdDaemon(c *cli.Context) { } previousInstanceR = instanceR } - _, err := beam.Copy(app, previousInstanceR) + _, err := libswarm.Copy(app, previousInstanceR) if err != nil { Fatalf("copy: %v", err) } diff --git a/beam/nop.go b/utils/nop.go similarity index 65% rename from beam/nop.go rename to utils/nop.go index 9d3cabb392..6efe9d2a72 100644 --- a/beam/nop.go +++ b/utils/nop.go @@ -1,13 +1,15 @@ -package beam +package utils import ( "github.com/docker/libchan" + "github.com/docker/libswarm" + "io" ) type NopSender struct{} -func (s NopSender) Send(msg *Message) (Receiver, error) { +func (s NopSender) Send(msg *libswarm.Message) (libswarm.Receiver, error) { return NopReceiver{}, nil } @@ -21,7 +23,7 @@ func (s NopSender) Unwrap() libchan.Sender { type NopReceiver struct{} -func (r NopReceiver) Receive(mode int) (*Message, error) { +func (r NopReceiver) Receive(mode int) (*libswarm.Message, error) { return nil, io.EOF } diff --git a/beam/stream.go b/utils/stream.go similarity index 50% rename from beam/stream.go rename to utils/stream.go index beef7229c1..cec33002b4 100644 --- a/beam/stream.go +++ b/utils/stream.go @@ -1,28 +1,30 @@ -package beam +package utils import ( + "github.com/docker/libswarm" + "fmt" "io" ) -func EncodeStream(sender Sender, reader io.Reader, tag string) { +func EncodeStream(sender libswarm.Sender, reader io.Reader, tag string) { chunk := make([]byte, 4096) for { n, err := reader.Read(chunk) if n > 0 { - sender.Send(&Message{Verb: Log, Args: []string{tag, string(chunk[0:n])}}) + sender.Send(&libswarm.Message{Verb: libswarm.Log, Args: []string{tag, string(chunk[0:n])}}) } if err != nil { message := fmt.Sprintf("Error reading from stream: %v", err) - sender.Send(&Message{Verb: Error, Args: []string{message}}) + sender.Send(&libswarm.Message{Verb: libswarm.Error, Args: []string{message}}) break } } } -func DecodeStream(dst io.Writer, src Receiver, tag string) error { +func DecodeStream(dst io.Writer, src libswarm.Receiver, tag string) error { for { - msg, err := src.Receive(Ret) + msg, err := src.Receive(libswarm.Ret) if err == io.EOF { return nil } diff --git a/utils/task.go b/utils/task.go new file mode 100644 index 0000000000..e937dcb052 --- /dev/null +++ b/utils/task.go @@ -0,0 +1,38 @@ +package utils + +import ( + "github.com/docker/libswarm" + + "fmt" + "sync" +) + +func Task(f func(in libswarm.Receiver, out libswarm.Sender)) libswarm.Sender { + var running bool + var l sync.RWMutex + inR, inW := libswarm.Pipe() + outR, outW := libswarm.Pipe() + obj := libswarm.NewServer() + obj.OnVerb(libswarm.Attach, libswarm.Handler(func(msg *libswarm.Message) error { + msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: inW}) + fmt.Printf("copying task output from %#v to %#v\n", outR, msg.Ret) + defer fmt.Printf("(DONE) copying task output from %#v to %#v\n", outR, msg.Ret) + libswarm.Copy(msg.Ret, outR) + return nil + })) + obj.OnVerb(libswarm.Start, libswarm.Handler(func(msg *libswarm.Message) error { + l.RLock() + r := running + l.RUnlock() + if r { + return fmt.Errorf("already running") + } + l.Lock() + go f(inR, outW) + running = true + l.Unlock() + msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack}) + return nil + })) + return obj +} diff --git a/utils/tree.go b/utils/tree.go new file mode 100644 index 0000000000..a9a1d3de17 --- /dev/null +++ b/utils/tree.go @@ -0,0 +1,46 @@ +package utils + +import ( + "github.com/docker/libswarm" + + "sort" +) + +type Tree struct { + *libswarm.Server + children map[string]libswarm.Sender +} + +func NewTree() *Tree { + t := &Tree{ + Server: libswarm.NewServer(), + children: make(map[string]libswarm.Sender), + } + t.OnVerb(libswarm.Attach, libswarm.Handler(func(msg *libswarm.Message) error { + if len(msg.Args) == 0 || msg.Args[0] == "" { + msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: t}) + return nil + } + if child, exists := t.children[msg.Args[0]]; exists { + msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: child}) + return nil + } + libswarm.Obj(msg.Ret).Error("not found") + return nil + })) + t.OnVerb(libswarm.Ls, libswarm.Handler(func(msg *libswarm.Message) error { + names := make([]string, 0, len(t.children)) + for name := range t.children { + names = append(names, name) + } + sort.Strings(names) + libswarm.Obj(msg.Ret).Set(names...) + return nil + })) + return t +} + +func (t *Tree) Bind(name string, dst libswarm.Sender) *Tree { + t.children[name] = dst + return t +} diff --git a/beam/verbs.go b/verbs.go similarity index 98% rename from beam/verbs.go rename to verbs.go index ad10ca4a3b..460871ef41 100644 --- a/beam/verbs.go +++ b/verbs.go @@ -1,4 +1,4 @@ -package beam +package libswarm import ( "fmt" From fcbf0b1905d335a7bc68f253e63455d29ee07943 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Mon, 23 Jun 2014 13:07:47 +0100 Subject: [PATCH 332/347] Rename Object to Client Signed-off-by: Aanand Prasad --- backends/aggregate.go | 4 +-- backends/backends.go | 2 +- backends/dockerclient_test.go | 4 +-- backends/ec2.go | 2 +- object.go => client.go | 60 +++++++++++++++++------------------ 5 files changed, 35 insertions(+), 37 deletions(-) rename object.go => client.go (68%) diff --git a/backends/aggregate.go b/backends/aggregate.go index 9d4ee296bb..51750a169a 100644 --- a/backends/aggregate.go +++ b/backends/aggregate.go @@ -30,11 +30,11 @@ func Aggregate() libswarm.Sender { } type aggregator struct { - backends []*libswarm.Object + backends []*libswarm.Client server *libswarm.Server } -func newAggregator(allBackends *libswarm.Object, server *libswarm.Server, args []string) (*aggregator, error) { +func newAggregator(allBackends *libswarm.Client, server *libswarm.Server, args []string) (*aggregator, error) { a := &aggregator{server: server} for _, argString := range args { diff --git a/backends/backends.go b/backends/backends.go index 2c21781a67..c93ffcae18 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -12,7 +12,7 @@ import ( // engine, named after the desired backend. // // Example: `New().Job("debug").Run()` -func New() *libswarm.Object { +func New() *libswarm.Client { backends := utils.NewTree() backends.Bind("simulator", Simulator()) backends.Bind("debug", debug.Debug()) diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go index 519f704787..7c88310c07 100644 --- a/backends/dockerclient_test.go +++ b/backends/dockerclient_test.go @@ -240,7 +240,7 @@ func (s *stubServer) AllSummaries() []string { return summaries } -func instance(t *testing.T, server *stubServer) *libswarm.Object { +func instance(t *testing.T, server *stubServer) *libswarm.Client { url := "tcp://localhost:4243" if server != nil { url = strings.Replace(server.URL, "http://", "tcp://", 1) @@ -254,7 +254,7 @@ func instance(t *testing.T, server *stubServer) *libswarm.Object { return instance } -func child(t *testing.T, server *stubServer, i *libswarm.Object, name string) *libswarm.Object { +func child(t *testing.T, server *stubServer, i *libswarm.Client, name string) *libswarm.Client { _, child, err := i.Attach(name) if err != nil { t.Fatal(err) diff --git a/backends/ec2.go b/backends/ec2.go index 6cc448a0ac..5f24c2aa98 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -39,7 +39,7 @@ type ec2Client struct { Server *libswarm.Server instance *ec2.Instance sshTunnel *os.Process - dockerInstance *libswarm.Object + dockerInstance *libswarm.Client } func (c *ec2Client) get(ctx *libswarm.Message) error { diff --git a/object.go b/client.go similarity index 68% rename from object.go rename to client.go index 89a15e3fdb..375a43e0a7 100644 --- a/object.go +++ b/client.go @@ -8,23 +8,21 @@ import ( "strings" ) -// FIXME: rename Object to Client - -type Object struct { +type Client struct { Sender } -func Obj(dst Sender) *Object { - return &Object{dst} +func Obj(dst Sender) *Client { + return &Client{dst} } -func (o *Object) Log(msg string, args ...interface{}) error { - _, err := o.Send(&Message{Verb: Log, Args: []string{fmt.Sprintf(msg, args...)}}) +func (c *Client) Log(msg string, args ...interface{}) error { + _, err := c.Send(&Message{Verb: Log, Args: []string{fmt.Sprintf(msg, args...)}}) return err } -func (o *Object) Ls() ([]string, error) { - ret, err := o.Send(&Message{Verb: Ls, Ret: RetPipe}) +func (c *Client) Ls() ([]string, error) { + ret, err := c.Send(&Message{Verb: Ls, Ret: RetPipe}) if err != nil { return nil, err } @@ -44,8 +42,8 @@ func (o *Object) Ls() ([]string, error) { return nil, fmt.Errorf("unexpected verb %v", msg.Verb) } -func (o *Object) Spawn(cmd ...string) (out *Object, err error) { - ret, err := o.Send(&Message{Verb: Spawn, Args: cmd, Ret: RetPipe}) +func (c *Client) Spawn(cmd ...string) (out *Client, err error) { + ret, err := c.Send(&Message{Verb: Spawn, Args: cmd, Ret: RetPipe}) if err != nil { return nil, err } @@ -57,7 +55,7 @@ func (o *Object) Spawn(cmd ...string) (out *Object, err error) { return nil, err } if msg.Verb == Ack { - return &Object{msg.Ret}, nil + return &Client{msg.Ret}, nil } msg.Ret.Close() if msg.Verb == Error { @@ -66,8 +64,8 @@ func (o *Object) Spawn(cmd ...string) (out *Object, err error) { return nil, fmt.Errorf("unexpected verb %v", msg.Verb) } -func (o *Object) Attach(name string) (in Receiver, out *Object, err error) { - ret, err := o.Send(&Message{Verb: Attach, Args: []string{name}, Ret: RetPipe}) +func (c *Client) Attach(name string) (in Receiver, out *Client, err error) { + ret, err := c.Send(&Message{Verb: Attach, Args: []string{name}, Ret: RetPipe}) if err != nil { return nil, nil, err } @@ -79,7 +77,7 @@ func (o *Object) Attach(name string) (in Receiver, out *Object, err error) { return nil, nil, err } if msg.Verb == Ack { - return ret, &Object{msg.Ret}, nil + return ret, &Client{msg.Ret}, nil } msg.Ret.Close() if msg.Verb == Error { @@ -88,13 +86,13 @@ func (o *Object) Attach(name string) (in Receiver, out *Object, err error) { return nil, nil, fmt.Errorf("unexpected verb %v", msg.Verb) } -func (o *Object) Error(msg string, args ...interface{}) error { - _, err := o.Send(&Message{Verb: Error, Args: []string{fmt.Sprintf(msg, args...)}}) +func (c *Client) Error(msg string, args ...interface{}) error { + _, err := c.Send(&Message{Verb: Error, Args: []string{fmt.Sprintf(msg, args...)}}) return err } -func (o *Object) Connect() (net.Conn, error) { - ret, err := o.Send(&Message{Verb: Connect, Ret: RetPipe}) +func (c *Client) Connect() (net.Conn, error) { + ret, err := c.Send(&Message{Verb: Connect, Ret: RetPipe}) if err != nil { return nil, err } @@ -121,21 +119,21 @@ func (o *Object) Connect() (net.Conn, error) { return nil, fmt.Errorf("unexpected verb %v", msg.Verb) } -func (o *Object) SetJson(val interface{}) error { +func (c *Client) SetJson(val interface{}) error { txt, err := json.Marshal(val) if err != nil { return err } - return o.Set(string(txt)) + return c.Set(string(txt)) } -func (o *Object) Set(vals ...string) error { - _, err := o.Send(&Message{Verb: Set, Args: vals}) +func (c *Client) Set(vals ...string) error { + _, err := c.Send(&Message{Verb: Set, Args: vals}) return err } -func (o *Object) Get() (string, error) { - ret, err := o.Send(&Message{Verb: Get, Ret: RetPipe}) +func (c *Client) Get() (string, error) { + ret, err := c.Send(&Message{Verb: Get, Ret: RetPipe}) if err != nil { return "", err } @@ -158,8 +156,8 @@ func (o *Object) Get() (string, error) { return "", fmt.Errorf("unexpected verb %v", msg.Verb) } -func (o *Object) Watch() (Receiver, error) { - ret, err := o.Send(&Message{Verb: Watch, Ret: RetPipe}) +func (c *Client) Watch() (Receiver, error) { + ret, err := c.Send(&Message{Verb: Watch, Ret: RetPipe}) if err != nil { return nil, err } @@ -173,8 +171,8 @@ func (o *Object) Watch() (Receiver, error) { return nil, fmt.Errorf("unexpected verb %v", msg.Verb) } -func (o *Object) Start() error { - ret, err := o.Send(&Message{Verb: Start, Ret: RetPipe}) +func (c *Client) Start() error { + ret, err := c.Send(&Message{Verb: Start, Ret: RetPipe}) msg, err := ret.Receive(0) if err == io.EOF { return fmt.Errorf("unexpected EOF") @@ -188,8 +186,8 @@ func (o *Object) Start() error { return fmt.Errorf("unexpected verb %v", msg.Verb) } -func (o *Object) Stop() error { - ret, err := o.Send(&Message{Verb: Stop, Ret: RetPipe}) +func (c *Client) Stop() error { + ret, err := c.Send(&Message{Verb: Stop, Ret: RetPipe}) msg, err := ret.Receive(0) if err == io.EOF { return fmt.Errorf("unexpected EOF") From 3ccf699c3a2f6cf3d8ca8151e3ebd7606645eb6d Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Mon, 23 Jun 2014 14:46:21 +0100 Subject: [PATCH 333/347] Rename Obj() to AsClient() Signed-off-by: Aanand Prasad --- backends/backends.go | 2 +- backends/dockerclient_test.go | 2 +- backends/dockerserver.go | 20 ++++++++++---------- backends/ec2.go | 2 +- backends/exec.go | 4 ++-- backends/fakeclient.go | 2 +- backends/orchard.go | 2 +- backends/simulator.go | 6 +++--- client.go | 2 +- utils/tree.go | 4 ++-- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/backends/backends.go b/backends/backends.go index c93ffcae18..5357fc161b 100644 --- a/backends/backends.go +++ b/backends/backends.go @@ -25,5 +25,5 @@ func New() *libswarm.Client { backends.Bind("shipyard", Shipyard()) backends.Bind("ec2", Ec2()) backends.Bind("tutum", Tutum()) - return libswarm.Obj(backends) + return libswarm.AsClient(backends) } diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go index 7c88310c07..ac9394b754 100644 --- a/backends/dockerclient_test.go +++ b/backends/dockerclient_test.go @@ -247,7 +247,7 @@ func instance(t *testing.T, server *stubServer) *libswarm.Client { } backend := DockerClient() - instance, err := libswarm.Obj(backend).Spawn(url) + instance, err := libswarm.AsClient(backend).Spawn(url) if err != nil { t.Fatal(err) } diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 4005f0b3e8..3b9ae39912 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -109,13 +109,13 @@ type containerJson struct { } func getContainerJson(out libswarm.Sender, containerID string) (containerJson, error) { - o := libswarm.Obj(out) + o := libswarm.AsClient(out) _, containerOut, err := o.Attach(containerID) if err != nil { return containerJson{}, err } - container := libswarm.Obj(containerOut) + container := libswarm.AsClient(containerOut) responseJson, err := container.Get() if err != nil { return containerJson{}, err @@ -142,7 +142,7 @@ func getContainersJSON(out libswarm.Sender, version version.Version, w http.Resp return err } - o := libswarm.Obj(out) + o := libswarm.AsClient(out) names, err := o.Ls() if err != nil { return err @@ -225,7 +225,7 @@ func postContainersCreate(out libswarm.Sender, version version.Version, w http.R return err } - container, err := libswarm.Obj(out).Spawn(string(body)) + container, err := libswarm.AsClient(out).Spawn(string(body)) if err != nil { return err } @@ -250,8 +250,8 @@ func postContainersStart(out libswarm.Sender, version version.Version, w http.Re // TODO: r.Body name := vars["name"] - _, containerOut, err := libswarm.Obj(out).Attach(name) - container := libswarm.Obj(containerOut) + _, containerOut, err := libswarm.AsClient(out).Attach(name) + container := libswarm.AsClient(containerOut) if err != nil { return err } @@ -269,8 +269,8 @@ func postContainersStop(out libswarm.Sender, version version.Version, w http.Res } name := vars["name"] - _, containerOut, err := libswarm.Obj(out).Attach(name) - container := libswarm.Obj(containerOut) + _, containerOut, err := libswarm.AsClient(out).Attach(name) + container := libswarm.AsClient(containerOut) if err != nil { return err } @@ -325,11 +325,11 @@ func postContainersAttach(out libswarm.Sender, version version.Version, w http.R errStream := dockerutils.NewStdWriter(outStream, dockerutils.Stderr) outStream = dockerutils.NewStdWriter(outStream, dockerutils.Stdout) - _, containerOut, err := libswarm.Obj(out).Attach(vars["name"]) + _, containerOut, err := libswarm.AsClient(out).Attach(vars["name"]) if err != nil { return err } - container := libswarm.Obj(containerOut) + container := libswarm.AsClient(containerOut) containerR, _, err := container.Attach("") var tasks sync.WaitGroup diff --git a/backends/ec2.go b/backends/ec2.go index 5f24c2aa98..af9ece3535 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -281,7 +281,7 @@ func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { URLHost: "localhost", }) - dockerBackend := libswarm.Obj(dockerClient) + dockerBackend := libswarm.AsClient(dockerClient) url := fmt.Sprintf("tcp://localhost:%s", c.config.sshLocalPort) dockerInstance, err := dockerBackend.Spawn(url) c.dockerInstance = dockerInstance diff --git a/backends/exec.go b/backends/exec.go index f81d9e4f4a..1335406219 100644 --- a/backends/exec.go +++ b/backends/exec.go @@ -46,7 +46,7 @@ func Exec() libswarm.Sender { if _, err := msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: inW}); err != nil { return err } - out := libswarm.Obj(msg.Ret) + out := libswarm.AsClient(msg.Ret) go func() { defer stdin.Close() for { @@ -84,7 +84,7 @@ func Exec() libswarm.Sender { go func() { defer cmd.tasks.Done() if err := cmd.Cmd.Wait(); err != nil { - libswarm.Obj(msg.Ret).Log("%s exited status=%v", cmd.Cmd.Path, err) + libswarm.AsClient(msg.Ret).Log("%s exited status=%v", cmd.Cmd.Path, err) } }() msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack}) diff --git a/backends/fakeclient.go b/backends/fakeclient.go index 56a9ed2a8a..0f357ab62e 100644 --- a/backends/fakeclient.go +++ b/backends/fakeclient.go @@ -15,7 +15,7 @@ func FakeClient() libswarm.Sender { instance := utils.Task(func(in libswarm.Receiver, out libswarm.Sender) { fmt.Printf("fake client!\n") defer fmt.Printf("end of fake client!\n") - o := libswarm.Obj(out) + o := libswarm.AsClient(out) o.Log("fake client starting") defer o.Log("fake client terminating") for { diff --git a/backends/orchard.go b/backends/orchard.go index 3e3d45c26c..cb15af29b5 100644 --- a/backends/orchard.go +++ b/backends/orchard.go @@ -40,7 +40,7 @@ func Orchard() libswarm.Sender { URLHost: host.IPAddress, TLSClientConfig: tlsConfig, }) - forwardBackend := libswarm.Obj(backend) + forwardBackend := libswarm.AsClient(backend) forwardInstance, err := forwardBackend.Spawn(url) if err != nil { return nil, err diff --git a/backends/simulator.go b/backends/simulator.go index 0a59388783..d992ae40b4 100644 --- a/backends/simulator.go +++ b/backends/simulator.go @@ -10,11 +10,11 @@ func Simulator() libswarm.Sender { s.OnVerb(libswarm.Spawn, libswarm.Handler(func(ctx *libswarm.Message) error { containers := ctx.Args instance := utils.Task(func(in libswarm.Receiver, out libswarm.Sender) { - libswarm.Obj(out).Log("[simulator] starting\n") + libswarm.AsClient(out).Log("[simulator] starting\n") s := libswarm.NewServer() s.OnVerb(libswarm.Ls, libswarm.Handler(func(msg *libswarm.Message) error { - libswarm.Obj(out).Log("[simulator] generating fake list of objects...\n") - libswarm.Obj(msg.Ret).Set(containers...) + libswarm.AsClient(out).Log("[simulator] generating fake list of objects...\n") + libswarm.AsClient(msg.Ret).Set(containers...) return nil })) libswarm.Copy(s, in) diff --git a/client.go b/client.go index 375a43e0a7..518c42dccf 100644 --- a/client.go +++ b/client.go @@ -12,7 +12,7 @@ type Client struct { Sender } -func Obj(dst Sender) *Client { +func AsClient(dst Sender) *Client { return &Client{dst} } diff --git a/utils/tree.go b/utils/tree.go index a9a1d3de17..169d1de846 100644 --- a/utils/tree.go +++ b/utils/tree.go @@ -25,7 +25,7 @@ func NewTree() *Tree { msg.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: child}) return nil } - libswarm.Obj(msg.Ret).Error("not found") + libswarm.AsClient(msg.Ret).Error("not found") return nil })) t.OnVerb(libswarm.Ls, libswarm.Handler(func(msg *libswarm.Message) error { @@ -34,7 +34,7 @@ func NewTree() *Tree { names = append(names, name) } sort.Strings(names) - libswarm.Obj(msg.Ret).Set(names...) + libswarm.AsClient(msg.Ret).Set(names...) return nil })) return t From 7e7b4bb5ac15bcc19e92be11b428ecd9bf3d4c4b Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Fri, 11 Jul 2014 21:11:30 +0000 Subject: [PATCH 334/347] use an array for verbs Docker-DCO-1.1-Signed-off-by: Victor Vieux (github: vieux) --- verbs.go | 62 ++++++++------------------------------------------------ 1 file changed, 8 insertions(+), 54 deletions(-) diff --git a/verbs.go b/verbs.go index 460871ef41..f03ef4b154 100644 --- a/verbs.go +++ b/verbs.go @@ -22,66 +22,20 @@ const ( Watch ) +var verbs = []string{"Ack", "Attach", "Connect", "Error", "File", "Get", "Log", "Ls", "Set", "Spawn", "Start", "Stop", "Watch"} + func VerbFromString(s string) (Verb, error) { - switch s { - case "Ack": - return Ack, nil - case "Attach": - return Attach, nil - case "Connect": - return Connect, nil - case "Error": - return Error, nil - case "File": - return File, nil - case "Get": - return Get, nil - case "Log": - return Log, nil - case "Ls": - return Ls, nil - case "Set": - return Set, nil - case "Spawn": - return Spawn, nil - case "Start": - return Start, nil - case "Stop": - return Stop, nil - case "Watch": - return Watch, nil + for i, verb := range verbs { + if verb == s { + return Verb(i), nil + } } return 0, fmt.Errorf("Unrecognised verb: %s", s) } func (v Verb) String() string { - switch v { - case Ack: - return "Ack" - case Attach: - return "Attach" - case Connect: - return "Connect" - case Error: - return "Error" - case File: - return "File" - case Get: - return "Get" - case Log: - return "Log" - case Ls: - return "Ls" - case Set: - return "Set" - case Spawn: - return "Spawn" - case Start: - return "Start" - case Stop: - return "Stop" - case Watch: - return "Watch" + if int(v) < len(verbs)-1 { + return verbs[v] } return "" } From f976514119030addc305c9948385a3f062562329 Mon Sep 17 00:00:00 2001 From: Erik Hollensbe Date: Sat, 12 Jul 2014 20:19:38 -0700 Subject: [PATCH 335/347] remove an unused blank import. Docker-DCO-1.1-Signed-off-by: Erik Hollensbe (github: erikh) --- swarmd/swarmd.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/swarmd/swarmd.go b/swarmd/swarmd.go index cb0e512319..35ffd93f9f 100644 --- a/swarmd/swarmd.go +++ b/swarmd/swarmd.go @@ -3,9 +3,8 @@ package main import ( "fmt" "github.com/codegangsta/cli" - "github.com/docker/libswarm/backends" "github.com/docker/libswarm" - _ "github.com/dotcloud/docker/api/server" + "github.com/docker/libswarm/backends" "github.com/flynn/go-shlex" "io" "log" From 88b75781eb9defdd04d579f62b7e1cb99765c9c0 Mon Sep 17 00:00:00 2001 From: Yutaka Matsubara Date: Thu, 3 Jul 2014 22:52:15 +0900 Subject: [PATCH 336/347] Add name param Docker-DCO-1.1-Signed-off-by: Yutaka Matsubara (github: mopemope) --- backends/dockerclient.go | 19 ++++++++++++++++++- backends/dockerclient_test.go | 26 +++++++++++++++++++++++++- backends/dockerserver.go | 13 +++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index 20b193a1e4..b4457df641 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -112,7 +112,24 @@ func (b *dockerClientBackend) createContainer(cmd ...string) (libswarm.Sender, e return nil, fmt.Errorf("dockerclient: spawn takes exactly 1 argument, got %d", len(cmd)) } - resp, err := b.client.call("POST", "/containers/create", cmd[0]) + param := cmd[0] + containerValues := url.Values{} + + var postParam map[string]interface{} + if err := json.Unmarshal([]byte(param), &postParam); err != nil { + return nil, err + } + if name, ok := postParam["name"]; ok { + containerValues.Set("name", name.(string)) + delete(postParam, "name") + tmp, err := json.Marshal(postParam) + if err != nil { + return nil, err + } + param = string(tmp) + } + + resp, err := b.client.call("POST", "/containers/create?"+containerValues.Encode(), param) if err != nil { return nil, err } diff --git a/backends/dockerclient_test.go b/backends/dockerclient_test.go index ac9394b754..12ecda2c73 100644 --- a/backends/dockerclient_test.go +++ b/backends/dockerclient_test.go @@ -79,6 +79,25 @@ func TestSpawn(t *testing.T) { server.Check() } +func TestSpawnWithName(t *testing.T) { + name := "foo" + server := makeServer(t, &requestStub{ + reqMethod: "POST", + reqPath: "/containers/create?name=foo", + reqBody: "{}", + resStatus: 201, + resBody: "{}", + }, + ) + + i := instance(t, server) + _, err := i.Spawn(fmt.Sprintf("{\"name\":\"%s\"}", name)) + if err != nil { + t.Fatal(err) + } + server.Check() +} + func TestAttachToChild(t *testing.T) { name := "foo" server := makeServer(t, &requestStub{ @@ -210,7 +229,12 @@ func (s *stubServer) Check() { func (s *stubServer) ServeRequest(w http.ResponseWriter, r *http.Request) { for _, record := range s.stubs { stub := record.stub - if r.Method == stub.reqMethod && r.URL.Path == stub.reqPath { + path := r.URL.Path + q := r.URL.RawQuery + if q != "" { + path += "?" + q + } + if r.Method == stub.reqMethod && path == stub.reqPath { body, err := ioutil.ReadAll(r.Body) if err != nil { s.t.Fatal(err) diff --git a/backends/dockerserver.go b/backends/dockerserver.go index 3b9ae39912..065c221299 100644 --- a/backends/dockerserver.go +++ b/backends/dockerserver.go @@ -225,6 +225,19 @@ func postContainersCreate(out libswarm.Sender, version version.Version, w http.R return err } + name := r.Form.Get("name") + if name != "" { + var reqJson map[string]interface{} + if err = json.Unmarshal(body, &reqJson); err != nil { + return err + } + reqJson["name"] = name + body, err = json.Marshal(reqJson) + if err != nil { + return err + } + } + container, err := libswarm.AsClient(out).Spawn(string(body)) if err != nil { return err From 55ca9b92fd5660e676186ff69182bde8bda4fb39 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Mon, 14 Jul 2014 12:00:56 -0700 Subject: [PATCH 337/347] .travis.yml Signed-off-by: Aanand Prasad --- .travis.yml | 9 +++++++++ Makefile | 11 +++++++++++ 2 files changed, 20 insertions(+) create mode 100644 .travis.yml create mode 100644 Makefile diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..10b2780bf9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: go + +go: + - 1.2 + - 1.3 + +before_install: + - "export PATH=${GOPATH//://bin:}/bin:$PATH" + - "make deps" diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..e3fbd91ca9 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +default: + go test -v . ./backends + +deps: godep + cd swarmd && godep restore + +save-deps: godep + cd swarmd && godep save + +godep: + go get github.com/tools/godep From ae9ee4b0d35c255c0d0f0d31d84e2b1e22575c11 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Tue, 15 Jul 2014 13:33:05 -0700 Subject: [PATCH 338/347] Run godep Signed-off-by: Aanand Prasad --- swarmd/Godeps/Godeps.json | 63 +++++++++++++++++++++++++++++---------- 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index 513fdff52b..ae13b072e6 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -1,6 +1,6 @@ { "ImportPath": "github.com/docker/libswarm/swarmd", - "GoVersion": "go1.2", + "GoVersion": "go1.2.1", "Deps": [ { "ImportPath": "code.google.com/p/go.net/websocket", @@ -22,6 +22,10 @@ "Comment": "release-84", "Rev": "2ba9f0995cf0215c20ebd6de43a14d70af30fea6" }, + { + "ImportPath": "github.com/BurntSushi/toml", + "Rev": "bd2bdf7f18f849530ef7a1c29a4290217cab32a1" + }, { "ImportPath": "github.com/codegangsta/cli", "Comment": "1.0.0-43-g3fa24ca", @@ -33,8 +37,18 @@ "Rev": "2fb21b34171f083d46d66195caa7ec121d941ec5" }, { - "ImportPath": "github.com/docker/spdystream", - "Rev": "87969a9c4b79508e63004ac17a97eb9278c08b3c" + "ImportPath": "github.com/docker/libchan", + "Rev": "459978d483ec79a7d8e980ebca00eb950eb64931" + }, + { + "ImportPath": "github.com/docker/libcontainer/cgroups", + "Comment": "v1.1.0-56-gfb3d909", + "Rev": "fb3d909c288ab23f005ddbbdd8bc81c36a1cd701" + }, + { + "ImportPath": "github.com/docker/libcontainer/devices", + "Comment": "v1.1.0-56-gfb3d909", + "Rev": "fb3d909c288ab23f005ddbbdd8bc81c36a1cd701" }, { "ImportPath": "github.com/dotcloud/docker/api", @@ -61,16 +75,6 @@ "Comment": "v0.11.1-466-g77ae37a", "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, - { - "ImportPath": "github.com/dotcloud/docker/pkg/beam", - "Comment": "v0.11.1-466-g77ae37a", - "Rev": "77ae37a3836997d215ed3f1750533a9815205695" - }, - { - "ImportPath": "github.com/dotcloud/docker/pkg/libcontainer/cgroups", - "Comment": "v0.11.1-466-g77ae37a", - "Rev": "77ae37a3836997d215ed3f1750533a9815205695" - }, { "ImportPath": "github.com/dotcloud/docker/pkg/listenbuffer", "Comment": "v0.11.1-466-g77ae37a", @@ -149,12 +153,41 @@ "Rev": "9b36453141c35697401168b07f2c09fcff7721ce" }, { - "ImportPath": "github.com/tutumcloud/go-tutum", - "Rev": "c07f413c4e14bcc40f5bb9c6dbe40ec2289fa234" + "ImportPath": "github.com/mitchellh/mapstructure", + "Rev": "6fb2c832bcac61d01212ab1d172f7a14a8585b07" + }, + { + "ImportPath": "github.com/orchardup/go-orchard/api", + "Comment": "2.0.7-6-g46d97d3", + "Rev": "46d97d34b4d5dd39948091764ad9462f16ffd94f" + }, + { + "ImportPath": "github.com/orchardup/go-orchard/constants", + "Comment": "2.0.7-6-g46d97d3", + "Rev": "46d97d34b4d5dd39948091764ad9462f16ffd94f" + }, + { + "ImportPath": "github.com/racker/perigee", + "Comment": "v0.0.0-11-g01db319", + "Rev": "01db3191866051f2ec854c2d876ac1a179d3049c" }, { "ImportPath": "github.com/rackspace/gophercloud", "Rev": "2285a429874c1365ef6c6d3ceb08b1d428e26aca" + }, + { + "ImportPath": "github.com/tutumcloud/go-tutum", + "Rev": "c07f413c4e14bcc40f5bb9c6dbe40ec2289fa234" + }, + { + "ImportPath": "launchpad.net/goamz/aws", + "Comment": "48", + "Rev": "ian.booth@canonical.com-20140708164959-72q70lo1du0e4qki" + }, + { + "ImportPath": "launchpad.net/goamz/ec2", + "Comment": "48", + "Rev": "ian.booth@canonical.com-20140708164959-72q70lo1du0e4qki" } ] } From 73c18013c4fbbb53be025ff312fce8e132e6b146 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Tue, 22 Jul 2014 08:22:23 -0400 Subject: [PATCH 339/347] Instead of hardcoding AZ, retrieve it from AWS Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/ec2.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backends/ec2.go b/backends/ec2.go index af9ece3535..6f6ce33391 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -122,12 +122,17 @@ func defaultSshKeyPath() string { return path.Join(dir, ".ssh", "id_rsa") } +func (c *ec2Client) defaultAvailabilityZones() string { + filter := ec2.NewFilter() + resp, _ := c.ec2Conn.AvailabilityZones(filter) + return resp.Zones[0].Name +} + func defaultConfigValues() (config *ec2Config) { config = new(ec2Config) config.region = aws.USEast config.ami = "ami-7c807d14" config.instanceType = "t1.micro" - config.zone = "us-east-1a" config.sshUser = "ec2-user" config.tag = "docker-ec2-swarm" config.sshLocalPort = "4910" @@ -363,6 +368,10 @@ func Ec2() libswarm.Sender { client.Server.OnVerb(libswarm.Ls, libswarm.Handler(client.ls)) client.Server.OnVerb(libswarm.Get, libswarm.Handler(client.get)) + if config.zone == "" { + config.zone = client.defaultAvailabilityZones() + } + signalHandler(client) _, err = ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: client.Server}) From 1a089cbc03c1726d9794b246272ed68061d8a10c Mon Sep 17 00:00:00 2001 From: Nathan LeClaire Date: Tue, 22 Jul 2014 17:48:19 -0700 Subject: [PATCH 340/347] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 197831494c..ac9c3990f5 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Here are some examples of what you can do with libswarm: * Swap in a new clustering and service discovery system, without changing any application code. -* Collect logs across an in-house Mesos cluster, a Cloudfoundry deployment and individual servers staggered in 3 different datacenters, forward them to your legacy syslog deployment, then perform custom analytics on them. +* Collect logs across an in-house Mesos cluster, a Cloud Foundry deployment and individual servers staggered in 3 different datacenters, forward them to your legacy syslog deployment, then perform custom analytics on them. * Simulate your entire service topology in a single process, then scale it out simply by re-arranging adapters. From cde5bab4fa0bf4b8a21a1c98e9196c6428ca6ea2 Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Fri, 11 Jul 2014 14:42:07 -0700 Subject: [PATCH 341/347] Use new libchan interface Signed-off-by: Aanand Prasad --- client.go | 11 +- iowrapper/iowrapper.go | 37 ++++++ message.go | 240 ++++++++++++++++++++++---------------- message_test.go | 38 +++--- server.go | 6 - swarmd/Godeps/Godeps.json | 24 ++-- utils/nop.go | 32 ----- 7 files changed, 209 insertions(+), 179 deletions(-) create mode 100644 iowrapper/iowrapper.go delete mode 100644 utils/nop.go diff --git a/client.go b/client.go index 518c42dccf..145ffef0aa 100644 --- a/client.go +++ b/client.go @@ -4,7 +4,6 @@ import ( "encoding/json" "fmt" "io" - "net" "strings" ) @@ -91,7 +90,7 @@ func (c *Client) Error(msg string, args ...interface{}) error { return err } -func (c *Client) Connect() (net.Conn, error) { +func (c *Client) Connect() (io.ReadWriteCloser, error) { ret, err := c.Send(&Message{Verb: Connect, Ret: RetPipe}) if err != nil { return nil, err @@ -105,13 +104,7 @@ func (c *Client) Connect() (net.Conn, error) { if msg.Att == nil { return nil, fmt.Errorf("missing attachment") } - conn, err := net.FileConn(msg.Att) - if err != nil { - msg.Att.Close() - return nil, err - } - msg.Att.Close() - return conn, nil + return msg.Att, nil } if msg.Verb == Error { return nil, fmt.Errorf(strings.Join(msg.Args[:1], "")) diff --git a/iowrapper/iowrapper.go b/iowrapper/iowrapper.go new file mode 100644 index 0000000000..d4d1b91d93 --- /dev/null +++ b/iowrapper/iowrapper.go @@ -0,0 +1,37 @@ +package iowrapper + +import ( + "io" +) + +func Wrap(obj interface{}) io.ReadWriteCloser { + return iowrapper{obj} +} + +type iowrapper struct { + obj interface{} +} + +func (w iowrapper) Read(p []byte) (int, error) { + if reader, ok := w.obj.(io.Reader); ok { + return reader.Read(p) + } else { + return 0, io.ErrClosedPipe + } +} + +func (w iowrapper) Write(p []byte) (int, error) { + if writer, ok := w.obj.(io.Writer); ok { + return writer.Write(p) + } else { + return 0, io.ErrClosedPipe + } +} + +func (w iowrapper) Close() error { + if closer, ok := w.obj.(io.Closer); ok { + return closer.Close() + } else { + return nil + } +} diff --git a/message.go b/message.go index 0e06e95f8a..734f657750 100644 --- a/message.go +++ b/message.go @@ -1,29 +1,33 @@ package libswarm import ( - "github.com/docker/libchan" - "github.com/docker/libchan/data" + "github.com/dmcgowan/libchan" "fmt" - "os" + "io" ) type Message struct { Verb Args []string Ret Sender - Att *os.File + Att io.ReadWriteCloser } type Sender interface { Send(msg *Message) (Receiver, error) Close() error - Unwrap() libchan.Sender } type Receiver interface { Receive(mode int) (*Message, error) - Unwrap() libchan.Receiver +} + +type internalMessage struct { + Verb + Args []string + Ret libchan.Sender + Att io.ReadWriteCloser } type senderWrapper struct { @@ -35,15 +39,47 @@ func WrapSender(s libchan.Sender) Sender { } func (s *senderWrapper) Send(msg *Message) (Receiver, error) { - recv, err := s.Sender.Send(msg.LibchanMessage()) - if err != nil { - return nil, err - } - return WrapReceiver(recv), err -} + var rcvr Receiver = NopReceiver{} -func (s *senderWrapper) Unwrap() libchan.Sender { - return s.Sender + imsg := &internalMessage{ + Verb: msg.Verb, + Args: msg.Args, + } + + if msg.Ret != nil { + thisEnd, otherEnd, err := s.Sender.CreateNestedReceiver() + if err != nil { + return nil, err + } + + imsg.Ret = otherEnd + + if RetPipe.Equals(msg.Ret) { + rcvr = &receiverWrapper{thisEnd} + } else { + go Copy(msg.Ret, &receiverWrapper{thisEnd}) + } + } + + if msg.Att != nil { + byteStream, err := s.Sender.CreateByteStream() + if err != nil { + return nil, err + } + + imsg.Att = byteStream + + go func() { + io.Copy(byteStream, msg.Att) + byteStream.Close() + }() + go func() { + io.Copy(msg.Att, byteStream) + msg.Att.Close() + }() + } + + return rcvr, s.Sender.Send(imsg) } type receiverWrapper struct { @@ -55,115 +91,113 @@ func WrapReceiver(r libchan.Receiver) Receiver { } func (r *receiverWrapper) Receive(mode int) (*Message, error) { - lcm, err := r.Receiver.Receive(mode) - if err != nil { + imsg := &internalMessage{} + if err := r.Receiver.Receive(imsg); err != nil { return nil, err } - return DecodeLibchanMessage(lcm) -} - -func (r *receiverWrapper) Unwrap() libchan.Receiver { - return r.Receiver -} - -type senderUnwrapper struct { - Sender -} - -func (su *senderUnwrapper) Send(lcm *libchan.Message) (libchan.Receiver, error) { - msg, err := DecodeLibchanMessage(lcm) - if err != nil { - return nil, err + var ret Sender + if imsg.Ret == nil { + ret = NopSender{} + } else { + ret = &senderWrapper{imsg.Ret} } - recv, err := su.Sender.Send(msg) - if err != nil { - return nil, err + if mode&Ret == 0 { + if err := ret.Close(); err != nil { + return nil, err + } } - return &receiverUnwrapper{recv}, nil -} - -type receiverUnwrapper struct { - Receiver -} - -func (ru *receiverUnwrapper) Receive(mode int) (*libchan.Message, error) { - msg, err := ru.Receiver.Receive(mode) - if err != nil { - return nil, err + msg := &Message{ + Verb: imsg.Verb, + Args: imsg.Args, + Ret: ret, + Att: imsg.Att, } - return msg.LibchanMessage(), nil + return msg, nil } -func Pipe() (Receiver, Sender) { +func Pipe() (*receiverWrapper, *senderWrapper) { r, s := libchan.Pipe() - return WrapReceiver(r), WrapSender(s) + return &receiverWrapper{r}, &senderWrapper{s} } -func Copy(s Sender, r Receiver) (int, error) { - return libchan.Copy(s.Unwrap(), r.Unwrap()) -} - -func Handler(h func(msg *Message) error) Sender { - lch := libchan.Handler(func(lcm *libchan.Message) { - ret := WrapSender(lcm.Ret) - msg, err := DecodeLibchanMessage(lcm) +func Copy(dst Sender, src Receiver) (int, error) { + var n int + for { + msg, err := src.Receive(Ret) + if err == io.EOF { + return n, nil + } if err != nil { - ret.Send(&Message{Verb: Error, Args: []string{err.Error()}}) + return n, err } - if err = h(msg); err != nil { - ret.Send(&Message{Verb: Error, Args: []string{err.Error()}}) + if _, err := dst.Send(msg); err != nil { + return n, err } - }) - return WrapSender(lch) + n++ + } } -var RetPipe = WrapSender(libchan.RetPipe) -var Ret = libchan.Ret +type Handler func(msg *Message) error + +func (h Handler) Send(msg *Message) (Receiver, error) { + var ret Receiver + if RetPipe.Equals(msg.Ret) { + ret, msg.Ret = Pipe() + } + go func() { + if msg.Ret == nil { + msg.Ret = NopSender{} + } + h(msg) + msg.Ret.Close() + }() + return ret, nil +} + +func (h Handler) Close() error { + return fmt.Errorf("can't close a Handler") +} + +func Repeater(payload *Message) Sender { + return Handler(func(msg *Message) error { + msg.Ret.Send(payload) + return nil + }) +} var notImplementedMsg = &Message{Verb: Error, Args: []string{"not implemented"}} -var NotImplemented = WrapSender(libchan.Repeater(notImplementedMsg.LibchanMessage())) +var NotImplemented = Repeater(notImplementedMsg) -func DecodeLibchanMessage(lcm *libchan.Message) (*Message, error) { - decoded, err := data.Decode(string(lcm.Data)) - if err != nil { - return nil, err - } - verbList, exists := decoded["verb"] - if !exists { - return nil, fmt.Errorf("No 'verb' key found in message data: %s", lcm.Data) - } - if len(verbList) != 1 { - return nil, fmt.Errorf("Expected exactly one verb, got %d: %#v", len(verbList), verbList) - } - verb, err := VerbFromString(verbList[0]) - if err != nil { - return nil, err - } - args, exists := decoded["args"] - if !exists { - return nil, fmt.Errorf("No 'args' key found in message data: %s", lcm.Data) - } - return &Message{ - Verb: verb, - Args: args, - Ret: WrapSender(lcm.Ret), - Att: lcm.Fd, - }, nil +const ( + Ret int = 1 << iota + // FIXME: use an `Att` flag to auto-close attachments by default +) + +type retPipe struct { + NopSender } -func (m *Message) LibchanMessage() *libchan.Message { - encoded := data.Empty(). - Set("verb", m.Verb.String()). - Set("args", m.Args...) +var RetPipe = retPipe{} - var ret libchan.Sender - if m.Ret != nil { - ret = m.Ret.Unwrap() - } - - return &libchan.Message{ - Data: []byte(encoded), - Ret: ret, - Fd: m.Att, +func (r retPipe) Equals(val Sender) bool { + if rval, ok := val.(retPipe); ok { + return rval == r } + return false +} + +type NopSender struct{} + +func (s NopSender) Send(msg *Message) (Receiver, error) { + return NopReceiver{}, nil +} + +func (s NopSender) Close() error { + return nil +} + +type NopReceiver struct{} + +func (r NopReceiver) Receive(mode int) (*Message, error) { + return nil, io.EOF } diff --git a/message_test.go b/message_test.go index 9d24177b01..f9ea8e82e7 100644 --- a/message_test.go +++ b/message_test.go @@ -1,6 +1,9 @@ package libswarm import ( + "github.com/docker/libswarm/iowrapper" + + "io" "io/ioutil" "reflect" "testing" @@ -29,10 +32,11 @@ func TestVerbArgs(t *testing.T) { func TestReturnChannel(t *testing.T) { receiver, sender := Pipe() + replyReceiver, replySender := Pipe() go func() { - receivedMsg, err := receiver.Receive(0) + receivedMsg, err := receiver.Receive(Ret) if err != nil { t.Fatal(err) } @@ -42,8 +46,7 @@ func TestReturnChannel(t *testing.T) { receivedMsg.Ret.Send(&Message{Verb: Set}) }() - _, err := sender.Send(&Message{Verb: Get, Ret: replySender}) - if err != nil { + if _, err := sender.Send(&Message{Verb: Get, Ret: replySender}); err != nil { t.Fatal(err) } @@ -63,7 +66,7 @@ func TestRetPipe(t *testing.T) { receiver, sender := Pipe() go func() { - receivedMsg, err := receiver.Receive(0) + receivedMsg, err := receiver.Receive(Ret) if err != nil { t.Fatal(err) } @@ -71,6 +74,7 @@ func TestRetPipe(t *testing.T) { t.Fatalf("Didn't get a message") } receivedMsg.Ret.Send(&Message{Verb: Set}) + receivedMsg.Ret.Close() }() replyReceiver, err := sender.Send(&Message{Verb: Get, Ret: RetPipe}) @@ -92,28 +96,17 @@ func TestRetPipe(t *testing.T) { func TestAttachment(t *testing.T) { expectedContents := "hello world\n" - - f, err := ioutil.TempFile("/tmp", "libswarm-beam-TestAttachment-") - if err != nil { - t.Fatal(err) - } - defer f.Close() - if err = ioutil.WriteFile(f.Name(), []byte(expectedContents), 0700); err != nil { - t.Fatal(err) - } - if err = f.Sync(); err != nil { - t.Fatal(err) - } + r, w := io.Pipe() receiver, sender := Pipe() go func() { - msg, err := receiver.Receive(0) + msg, err := receiver.Receive(Ret) if err != nil { t.Fatal(err) } - msg.Ret.Send(&Message{Verb: Connect, Att: f}) + msg.Ret.Send(&Message{Verb: Connect, Att: iowrapper.Wrap(r)}) }() ret, err := sender.Send(&Message{Verb: Connect, Ret: RetPipe}) @@ -125,11 +118,18 @@ func TestAttachment(t *testing.T) { if err != nil { t.Fatal(err) } + if reply == nil { + t.Fatalf("Didn't get a reply") + } if reply.Att == nil { t.Fatalf("Didn't get an attachment back") } - contents, err := ioutil.ReadAll(reply.Att) + go func() { + w.Write([]byte(expectedContents)) + w.Close() + }() + contents, err := ioutil.ReadAll(reply.Att.(io.Reader)) if err != nil { t.Fatal(err) } diff --git a/server.go b/server.go index ee584d3380..e6ef7615c2 100644 --- a/server.go +++ b/server.go @@ -1,8 +1,6 @@ package libswarm import ( - "github.com/docker/libchan" - "fmt" ) @@ -111,7 +109,3 @@ func (s *Server) Send(msg *Message) (Receiver, error) { func (s *Server) Close() error { return fmt.Errorf("can't close") } - -func (s *Server) Unwrap() libchan.Sender { - return &senderUnwrapper{s} -} diff --git a/swarmd/Godeps/Godeps.json b/swarmd/Godeps/Godeps.json index ae13b072e6..12712adf58 100644 --- a/swarmd/Godeps/Godeps.json +++ b/swarmd/Godeps/Godeps.json @@ -37,18 +37,12 @@ "Rev": "2fb21b34171f083d46d66195caa7ec121d941ec5" }, { - "ImportPath": "github.com/docker/libchan", - "Rev": "459978d483ec79a7d8e980ebca00eb950eb64931" + "ImportPath": "github.com/dmcgowan/go/codec", + "Rev": "5d26f5fd8a4e87c22037b52bf41aad8d69e5f436" }, { - "ImportPath": "github.com/docker/libcontainer/cgroups", - "Comment": "v1.1.0-56-gfb3d909", - "Rev": "fb3d909c288ab23f005ddbbdd8bc81c36a1cd701" - }, - { - "ImportPath": "github.com/docker/libcontainer/devices", - "Comment": "v1.1.0-56-gfb3d909", - "Rev": "fb3d909c288ab23f005ddbbdd8bc81c36a1cd701" + "ImportPath": "github.com/dmcgowan/libchan", + "Rev": "a7122feb42d3e5e706373c034128e3f80252c350" }, { "ImportPath": "github.com/dotcloud/docker/api", @@ -75,6 +69,16 @@ "Comment": "v0.11.1-466-g77ae37a", "Rev": "77ae37a3836997d215ed3f1750533a9815205695" }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/beam", + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" + }, + { + "ImportPath": "github.com/dotcloud/docker/pkg/libcontainer/cgroups", + "Comment": "v0.11.1-466-g77ae37a", + "Rev": "77ae37a3836997d215ed3f1750533a9815205695" + }, { "ImportPath": "github.com/dotcloud/docker/pkg/listenbuffer", "Comment": "v0.11.1-466-g77ae37a", diff --git a/utils/nop.go b/utils/nop.go deleted file mode 100644 index 6efe9d2a72..0000000000 --- a/utils/nop.go +++ /dev/null @@ -1,32 +0,0 @@ -package utils - -import ( - "github.com/docker/libchan" - "github.com/docker/libswarm" - - "io" -) - -type NopSender struct{} - -func (s NopSender) Send(msg *libswarm.Message) (libswarm.Receiver, error) { - return NopReceiver{}, nil -} - -func (s NopSender) Close() error { - return nil -} - -func (s NopSender) Unwrap() libchan.Sender { - return libchan.NopSender{} -} - -type NopReceiver struct{} - -func (r NopReceiver) Receive(mode int) (*libswarm.Message, error) { - return nil, io.EOF -} - -func (r NopReceiver) Unwrap() libchan.Receiver { - return libchan.NopReceiver{} -} From f816f44273a6a0d17d1938aaa4313451fcde0e57 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Sat, 26 Jul 2014 08:08:41 -0400 Subject: [PATCH 342/347] Support VPC and various improvements. * Support VPC * Lookup available AZ instead hardcode to us-east-1a. * Lookup correct AMI id by name instead of hardcoded ami id. * Change security_group name to security_group_id . * Allow custom SSH port. Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- backends/ec2.go | 107 ++++++++++++++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 40 deletions(-) diff --git a/backends/ec2.go b/backends/ec2.go index 6f6ce33391..02576b943e 100644 --- a/backends/ec2.go +++ b/backends/ec2.go @@ -3,7 +3,6 @@ package backends import ( "errors" "fmt" - "github.com/docker/libswarm" "net" "net/http" "os" @@ -15,22 +14,25 @@ import ( "syscall" "time" + "github.com/docker/libswarm" "launchpad.net/goamz/aws" "launchpad.net/goamz/ec2" ) type ec2Config struct { - securityGroup string - instanceType string - zone string - ami string - tag string - sshUser string - sshKey string - sshLocalPort string - sshRemotePort string - keypair string - region aws.Region + securityGroupId string + instanceType string + zone string + ami string + tag string + sshUser string + sshKey string + sshPort string + sshLocalPort string + sshRemotePort string + keypair string + subnetId string + region aws.Region } type ec2Client struct { @@ -71,8 +73,9 @@ func (c *ec2Client) start(ctx *libswarm.Message) error { c.waitForSsh() c.startSshTunnel() c.waitForDockerDaemon() - fmt.Printf("ec2 service up and running: region: %s zone: %s\n", - c.config.region.Name, c.config.zone) + // TODO (aaron): display zone info + fmt.Printf("ec2 service up and running: region: %s\n", + c.config.region.Name) ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: c.Server}) return nil @@ -122,25 +125,32 @@ func defaultSshKeyPath() string { return path.Join(dir, ".ssh", "id_rsa") } -func (c *ec2Client) defaultAvailabilityZones() string { - filter := ec2.NewFilter() - resp, _ := c.ec2Conn.AvailabilityZones(filter) - return resp.Zones[0].Name -} - func defaultConfigValues() (config *ec2Config) { config = new(ec2Config) config.region = aws.USEast - config.ami = "ami-7c807d14" - config.instanceType = "t1.micro" + config.instanceType = "t2.micro" config.sshUser = "ec2-user" - config.tag = "docker-ec2-swarm" + config.sshPort = "22" + config.tag = "docker-ec2-libswarm" config.sshLocalPort = "4910" config.sshRemotePort = "4243" config.sshKey = defaultSshKeyPath() return config } +func defaultAMI(conn *ec2.EC2) (string, error) { + filter := ec2.NewFilter() + imageName := "amzn-ami-hvm-2014.03.2.x86_64-ebs" + filter.Add("name", imageName) + resp, _ := conn.Images(nil, filter) + + if len(resp.Images) == 0 { + return "", fmt.Errorf("Unable to retrieve ami id for image name: %s", imageName) + } + + return resp.Images[0].Id, nil +} + func newConfig(args []string) (config *ec2Config, err error) { var optValPair []string var opt, val string @@ -162,18 +172,23 @@ func newConfig(args []string) (config *ec2Config, err error) { config.ami = val case "--keypair": config.keypair = val - case "--security_group": - config.securityGroup = val + case "--security_group_id": + config.securityGroupId = val case "--instance_type": config.instanceType = val case "--ssh_user": config.sshUser = val + case "--ssh_port": + config.sshPort = val case "--ssh_key": config.sshKey = val + case "--subnet_id": + config.subnetId = val default: fmt.Printf("Unrecognizable option: %s value: %s", opt, val) } } + return config, nil } @@ -208,7 +223,20 @@ func awsInit(config *ec2Config) (ec2Conn *ec2.EC2, err error) { return nil, err } - return ec2.New(auth, config.region), nil + conn := ec2.New(auth, config.region) + + if config.ami == "" { + fmt.Println("No AMI specified. Retrieving default ami") + + amiId, err := defaultAMI(conn) + if err != nil { + return nil, fmt.Errorf("Please manually specify an ami.") + } + + config.ami = amiId + } + + return conn, nil } func (c *ec2Client) findInstance() (instance *ec2.Instance, err error) { @@ -242,13 +270,14 @@ func (c *ec2Client) tagtInstance() error { } func (c *ec2Client) startInstance() error { + // TODO: allow more than one sg in the future options := ec2.RunInstances{ - ImageId: c.config.ami, - InstanceType: c.config.instanceType, - KeyName: c.config.keypair, - AvailZone: c.config.zone, - // TODO: allow more than one sg in the future - SecurityGroups: []ec2.SecurityGroup{ec2.SecurityGroup{Name: c.config.securityGroup}}, + SubnetId: c.config.subnetId, + ImageId: c.config.ami, + InstanceType: c.config.instanceType, + KeyName: c.config.keypair, + AvailZone: c.config.zone, + SecurityGroups: []ec2.SecurityGroup{ec2.SecurityGroup{Id: c.config.securityGroupId}}, UserData: []byte(userdata), } @@ -298,7 +327,7 @@ func (c *ec2Client) initDockerClientInstance(instance *ec2.Instance) error { } func (c *ec2Client) waitForDockerDaemon() { - fmt.Println("waiting for docker daemon on remote machine to be available.") + fmt.Println("Waiting for docker daemon on remote machine to be available.") for { resp, _ := http.Get("http://localhost:" + c.config.sshLocalPort) // wait for a response. any response to know docker daemon is up @@ -312,8 +341,8 @@ func (c *ec2Client) waitForDockerDaemon() { } func (c *ec2Client) waitForSsh() { - fmt.Println("waiting for ssh to be available. make sure ssh is open on port 22.") - conn := waitFor(c.instance.IPAddress, "22") + fmt.Printf("Waiting for ssh to be available. make sure ssh is open on port %s.\n", c.config.sshPort) + conn := waitFor(c.instance.IPAddress, c.config.sshPort) conn.Close() } @@ -356,11 +385,13 @@ func Ec2() libswarm.Sender { } ec2Conn, err := awsInit(config) + if err != nil { return err } client := &ec2Client{config, ec2Conn, libswarm.NewServer(), nil, nil, nil} + client.Server.OnVerb(libswarm.Spawn, libswarm.Handler(client.spawn)) client.Server.OnVerb(libswarm.Start, libswarm.Handler(client.start)) client.Server.OnVerb(libswarm.Stop, libswarm.Handler(client.stop)) @@ -368,10 +399,6 @@ func Ec2() libswarm.Sender { client.Server.OnVerb(libswarm.Ls, libswarm.Handler(client.ls)) client.Server.OnVerb(libswarm.Get, libswarm.Handler(client.get)) - if config.zone == "" { - config.zone = client.defaultAvailabilityZones() - } - signalHandler(client) _, err = ctx.Ret.Send(&libswarm.Message{Verb: libswarm.Ack, Ret: client.Server}) @@ -405,7 +432,7 @@ func (c *ec2Client) startSshTunnel() error { "-o", "StrictHostKeyChecking=no", "-i", c.config.sshKey, "-A", - "-p", "22", + "-p", c.config.sshPort, fmt.Sprintf("%s@%s", c.config.sshUser, c.instance.IPAddress), "-N", "-f", From 1a1735522edcd37fcf82776cb89ce18312bd28a5 Mon Sep 17 00:00:00 2001 From: Aaron Feng Date: Mon, 28 Jul 2014 12:22:27 -0400 Subject: [PATCH 343/347] link to basic README Docker-DCO-1.1-Signed-off-by: Aaron Feng aaron.feng@gmail.com (github: aaronfeng) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 197831494c..42bd5ba9f6 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,8 @@ Control an [Orchard](https://www.orchardup.com/) host from libswarm. It takes tw *Aaron Feng* +[README](http://bit.ly/ec2-libswarm-readme) + ### Consul *Help wanted!* From eb9ca776ef6be3975bd0be6d34758e348fe4286c Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 28 Jul 2014 18:00:03 +0000 Subject: [PATCH 344/347] Add Aanand as a maintainer Signed-off-by: Solomon Hykes --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 5a61dee410..1446f6cd24 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1 +1,2 @@ Solomon Hykes (github:shykes) +Aanand Prasad (github: @aanand) From 280fa016124e69e6a01debf6d9727b45c3c80905 Mon Sep 17 00:00:00 2001 From: James Turnbull Date: Sat, 2 Aug 2014 07:40:13 -0400 Subject: [PATCH 345/347] Improved installation docs --- README.md | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 45ab73cef9..6a19beb364 100644 --- a/README.md +++ b/README.md @@ -22,22 +22,46 @@ Here are some examples of what you can do with libswarm: * Simulate your entire service topology in a single process, then scale it out simply by re-arranging adapters. * Organize your application as loosely coupled services from day 1, without over-engineering. - + ## Installation -First get the go dependencies: +You can install `libswarm` in a few simple steps. You will need to make +Go installed on your host. + +1. Download the current source code. ```sh -go get github.com/docker/libswarm/... +go get github.com/docker/libswarm ``` -Then you can compile `swarmd` with: +2. Make sure `$GOPATH/bin` is in your `$PATH` + +```sh +export PATH=$GOPATH/bin:$PATH +``` + +3. Download or update the current dependencies. + +```sh +cd $GOPATH/src/github.com/docker/libswarm +make deps +``` + +NOTE: You may also need `bzr`. On OS X, you can install it from +[here](http://wiki.bazaar.canonical.com/MacOSXDownloads) or via Home +Brew: `brew install bzr`. On Debian & Ubuntu, `apt-get install bzr` and +on Red Hat et al, `yum install bzr`. + +4. Then compile `swarmd` with: ```sh go install github.com/docker/libswarm/swarmd ``` -If `$GOPATH/bin` is in your `PATH`, you can invoke `swarmd` from the CLI. +## Running libswarm + +If `$GOPATH/bin` is in your `PATH`, you can invoke `swarmd` from the +command line. ```sh $ swarmd -h From 60fd2048707cff4eb32aa77c5f7337ba9d6a2953 Mon Sep 17 00:00:00 2001 From: James Turnbull Date: Sat, 2 Aug 2014 07:43:44 -0400 Subject: [PATCH 346/347] General cleanup of the README docs --- README.md | 80 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 6a19beb364..2ae7535dea 100644 --- a/README.md +++ b/README.md @@ -2,26 +2,36 @@ *libswarm* is a toolkit for composing network services. -It defines a standard interface for services in a distributed system to communicate with each other. This lets you: +It defines a standard interface for services in a distributed system to +communicate with each other. This lets you: 1. Compose complex architectures from reusable building blocks 2. Avoid vendor lock-in by swapping any service out with another -An extensive library of services is included, and you can also write your own using a simple API. +An extensive library of services is included, and you can also write +your own using a simple API. Here are some examples of what you can do with libswarm: -* Aggregate all your Docker containers across multiple hosts and infrastructure providers, as if they were running on a single host. +* Aggregate all your Docker containers across multiple hosts and + infrastructure providers, as if they were running on a single host. -* Bridge your in-house DNS-based service discovery with that new shiny Consul deployment, without getting locked into either. +* Bridge your in-house DNS-based service discovery with that new shiny + Consul deployment, without getting locked into either. -* Swap in a new clustering and service discovery system, without changing any application code. +* Swap in a new clustering and service discovery system, without + changing any application code. -* Collect logs across an in-house Mesos cluster, a Cloud Foundry deployment and individual servers staggered in 3 different datacenters, forward them to your legacy syslog deployment, then perform custom analytics on them. +* Collect logs across an in-house Mesos cluster, a Cloud Foundry + deployment and individual servers staggered in 3 different + datacenters, forward them to your legacy syslog deployment, then perform + custom analytics on them. -* Simulate your entire service topology in a single process, then scale it out simply by re-arranging adapters. +* Simulate your entire service topology in a single process, then scale + it out simply by re-arranging adapters. -* Organize your application as loosely coupled services from day 1, without over-engineering. +* Organize your application as loosely coupled services from day 1, + without over-engineering. ## Installation @@ -47,7 +57,7 @@ cd $GOPATH/src/github.com/docker/libswarm make deps ``` -NOTE: You may also need `bzr`. On OS X, you can install it from +**NOTE:** You may also need `bzr`. On OS X, you can install it from [here](http://wiki.bazaar.canonical.com/MacOSXDownloads) or via Home Brew: `brew install bzr`. On Debian & Ubuntu, `apt-get install bzr` and on Red Hat et al, `yum install bzr`. @@ -88,17 +98,18 @@ GLOBAL OPTIONS: *Maintainer: Ben Firshman* -This service runs a Docker remote API server, allowing the Docker client and -other Docker tools to control libswarm services. With no arguments, it listens -on port `4243`, but you can specify any port you like using `tcp://0.0.0.0:9999`, -`unix:///tmp/docker` etc. - +This service runs a Docker remote API server, allowing the Docker client +and other Docker tools to control libswarm services. With no arguments, +it listens on port `4243`, but you can specify any port you like using +`tcp://0.0.0.0:9999`, `unix:///tmp/docker` etc. ### Docker client *Maintainer: Aanand Prasad* -This service can be used to control a Docker Engine from libswarm services. It takes one argument, the Docker host to connect to. For example: `dockerclient tcp://10.1.2.3:4243` +This service can be used to control a Docker Engine from libswarm +services. It takes one argument, the Docker host to connect to. For +example: `dockerclient tcp://10.1.2.3:4243` ### SSH tunnel @@ -140,7 +151,9 @@ This service can be used to control a Docker Engine from libswarm services. It t *Maintainer: Aanand Prasad* -Control an [Orchard](https://www.orchardup.com/) host from libswarm. It takes two arguments, an Orchard API token and the name of the Orchard host to control. +Control an [Orchard](https://www.orchardup.com/) host from libswarm. It +takes two arguments, an Orchard API token and the name of the Orchard +host to control. ### Amazon EC2 @@ -170,41 +183,42 @@ Control an [Orchard](https://www.orchardup.com/) host from libswarm. It takes tw ### Debug -The debug service simply catches all messages and prints them on the terminal for inspection. - +The debug service simply catches all messages and prints them on the +terminal for inspection. ## Testing libswarm with swarmd -Libswarm ships with a simple daemon which can control services in your distributed system. - -Usage example: +The libswarm library ships with a simple daemon which can control services in your +distributed system. +### Usage examples Run swarmd without arguments to list available services: -``` -./swarmd +```sh +swarmd ``` Pass a service name as argument to load it: -``` -./swarmd fakeclient +```sh +swarmd fakeclient ``` You can pass arguments to the service, like a shell command: -``` -./swarmd 'dockerserver tcp://localhost:4243' +```sh +swarmd 'dockerserver tcp://localhost:4243' ``` -You can call multiple services. They will be executed in parallel, with the output -of each backend connected to the input of the next, just like unix pipelines. +You can call multiple services. They will be executed in parallel, with +the output of each backend connected to the input of the next, just like +`unix` pipelines. This allows for very powerful composition. -``` -./swarmd 'dockerserver tcp://localhost:4243' 'debug' 'dockerclient unix:///var/run/docker.sock' +```sh +swarmd 'dockerserver tcp://localhost:4243' 'debug' 'dockerclient unix:///var/run/docker.sock' ``` ## Creators @@ -216,5 +230,5 @@ This allows for very powerful composition. ## Copyright and license -Code and documentation copyright 2013-2014 Docker, inc. Code released under the Apache 2.0 license. -Docs released under Creative commons. +Code and documentation copyright 2013-2014 Docker, inc. Code released +under the Apache 2.0 license. Docs released under Creative commons. From 0d32970ba2aa83f153d7228ddb4ed8c0f28c06fc Mon Sep 17 00:00:00 2001 From: Omer Katz Date: Thu, 7 Aug 2014 10:54:37 +0300 Subject: [PATCH 347/347] Added a help wanted note for SkyDNS and SkyDNS2. --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 45ab73cef9..fcc833e49a 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,14 @@ This service can be used to control a Docker Engine from libswarm services. It t *Help wanted!* +### SkyDNS + +*Help wanted!* + +### SkyDNS2 + +*Help wanted!* + ### Geard *Clayton Coleman*

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¥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 z_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD z93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF) z443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMm zIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r z#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66 z@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4 zOdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFb zWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy z#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar z@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5X zFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy z_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD z93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF) z443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMm zIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r z#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66 z@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4 zOdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFb 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¥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 z_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD z93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF) z443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMm zIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r z#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66 z@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4 zOdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFb zWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy z#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar z@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5X zFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy z_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD z93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF) z443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMm zIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r z#v^5XFft66@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66 z@lnQy_CPs4OdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4 zOdRmD93RFbWqdF)443gy#)tMmIX+Ar@Ut8r#v^5XFft66@lnQy_CPs4OdRmD93RFb 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