github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/events.go (about) 1 package client 2 3 import ( 4 "github.com/docker/docker/api/types" 5 "github.com/docker/docker/api/types/filters" 6 Cli "github.com/docker/docker/cli" 7 "github.com/docker/docker/opts" 8 "github.com/docker/docker/pkg/jsonmessage" 9 flag "github.com/docker/docker/pkg/mflag" 10 ) 11 12 // CmdEvents prints a live stream of real time events from the server. 13 // 14 // Usage: docker events [OPTIONS] 15 func (cli *DockerCli) CmdEvents(args ...string) error { 16 cmd := Cli.Subcmd("events", nil, Cli.DockerCommands["events"].Description, true) 17 since := cmd.String([]string{"-since"}, "", "Show all events created since timestamp") 18 until := cmd.String([]string{"-until"}, "", "Stream events until this timestamp") 19 flFilter := opts.NewListOpts(nil) 20 cmd.Var(&flFilter, []string{"f", "-filter"}, "Filter output based on conditions provided") 21 cmd.Require(flag.Exact, 0) 22 23 cmd.ParseFlags(args, true) 24 25 eventFilterArgs := filters.NewArgs() 26 27 // Consolidate all filter flags, and sanity check them early. 28 // They'll get process in the daemon/server. 29 for _, f := range flFilter.GetAll() { 30 var err error 31 eventFilterArgs, err = filters.ParseFlag(f, eventFilterArgs) 32 if err != nil { 33 return err 34 } 35 } 36 37 options := types.EventsOptions{ 38 Since: *since, 39 Until: *until, 40 Filters: eventFilterArgs, 41 } 42 43 responseBody, err := cli.client.Events(options) 44 if err != nil { 45 return err 46 } 47 defer responseBody.Close() 48 49 return jsonmessage.DisplayJSONMessagesStream(responseBody, cli.out, cli.outFd, cli.isTerminalOut) 50 }