mirror of https://github.com/docker/docs.git
Convert aggregate and orchard to new server DSL
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
parent
97a0b78d35
commit
6486d7fc94
|
@ -11,22 +11,21 @@ import (
|
||||||
|
|
||||||
func Aggregate() beam.Sender {
|
func Aggregate() beam.Sender {
|
||||||
backend := beam.NewServer()
|
backend := beam.NewServer()
|
||||||
backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error {
|
backend.OnSpawn(func(cmd ...string) (beam.Sender, error) {
|
||||||
allBackends := New()
|
allBackends := New()
|
||||||
instance := beam.NewServer()
|
instance := beam.NewServer()
|
||||||
|
|
||||||
a, err := newAggregator(allBackends, instance, ctx.Args)
|
a, err := newAggregator(allBackends, instance, cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
instance.OnVerb(beam.Attach, beam.Handler(a.attach))
|
instance.OnAttach(a.attach)
|
||||||
instance.OnVerb(beam.Start, beam.Handler(a.start))
|
instance.OnStart(a.start)
|
||||||
instance.OnVerb(beam.Ls, beam.Handler(a.ls))
|
instance.OnLs(a.ls)
|
||||||
|
|
||||||
_, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: instance})
|
return instance, nil
|
||||||
return err
|
})
|
||||||
}))
|
|
||||||
return backend
|
return backend
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,13 +60,13 @@ func newAggregator(allBackends *beam.Object, server *beam.Server, args []string)
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *aggregator) attach(ctx *beam.Message) error {
|
func (a *aggregator) attach(name string, ret beam.Sender) error {
|
||||||
if ctx.Args[0] != "" {
|
if name != "" {
|
||||||
// TODO: implement this?
|
// TODO: implement this?
|
||||||
return fmt.Errorf("attaching to a child is not implemented")
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +80,7 @@ func (a *aggregator) attach(ctx *beam.Message) error {
|
||||||
copies.Add(1)
|
copies.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
log.Printf("copying output from %#v\n", b)
|
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)
|
log.Printf("finished output from %#v\n", b)
|
||||||
copies.Done()
|
copies.Done()
|
||||||
}()
|
}()
|
||||||
|
@ -91,29 +90,26 @@ func (a *aggregator) attach(ctx *beam.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *aggregator) start(ctx *beam.Message) error {
|
func (a *aggregator) start() error {
|
||||||
for _, b := range a.backends {
|
for _, b := range a.backends {
|
||||||
err := b.Start()
|
err := b.Start()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack})
|
return nil
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *aggregator) ls(ctx *beam.Message) error {
|
func (a *aggregator) ls() ([]string, error) {
|
||||||
var children []string
|
var children []string
|
||||||
|
|
||||||
for _, b := range a.backends {
|
for _, b := range a.backends {
|
||||||
bChildren, err := b.Ls()
|
bChildren, err := b.Ls()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
children = append(children, bChildren...)
|
children = append(children, bChildren...)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: children})
|
return children, nil
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,11 +13,11 @@ import (
|
||||||
|
|
||||||
func Orchard() beam.Sender {
|
func Orchard() beam.Sender {
|
||||||
backend := beam.NewServer()
|
backend := beam.NewServer()
|
||||||
backend.OnVerb(beam.Spawn, beam.Handler(func(ctx *beam.Message) error {
|
backend.OnSpawn(func(cmd ...string) (beam.Sender, error) {
|
||||||
if len(ctx.Args) != 2 {
|
if len(cmd) != 2 {
|
||||||
return fmt.Errorf("orchard: spawn expects 2 arguments: API token and name of host")
|
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{
|
apiClient := &api.HTTPClient{
|
||||||
BaseURL: "https://api.orchardup.com/v2",
|
BaseURL: "https://api.orchardup.com/v2",
|
||||||
|
@ -26,13 +26,13 @@ func Orchard() beam.Sender {
|
||||||
|
|
||||||
host, err := apiClient.GetHost(hostName)
|
host, err := apiClient.GetHost(hostName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
url := fmt.Sprintf("tcp://%s:4243", host.IPAddress)
|
url := fmt.Sprintf("tcp://%s:4243", host.IPAddress)
|
||||||
tlsConfig, err := getTLSConfig([]byte(host.ClientCert), []byte(host.ClientKey))
|
tlsConfig, err := getTLSConfig([]byte(host.ClientCert), []byte(host.ClientKey))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
backend := DockerClientWithConfig(&DockerClientConfig{
|
backend := DockerClientWithConfig(&DockerClientConfig{
|
||||||
|
@ -43,12 +43,11 @@ func Orchard() beam.Sender {
|
||||||
forwardBackend := beam.Obj(backend)
|
forwardBackend := beam.Obj(backend)
|
||||||
forwardInstance, err := forwardBackend.Spawn(url)
|
forwardInstance, err := forwardBackend.Spawn(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: forwardInstance})
|
return forwardInstance, nil
|
||||||
return err
|
})
|
||||||
}))
|
|
||||||
return backend
|
return backend
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue