mirror of https://github.com/docker/docs.git
Implement OnLs
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
parent
181b20d855
commit
1b8e015627
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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...)
|
||||
|
|
|
|||
Loading…
Reference in New Issue