github.com/portworx/docker@v1.12.1/api/client/node/ps.go (about) 1 package node 2 3 import ( 4 "golang.org/x/net/context" 5 6 "github.com/docker/docker/api/client" 7 "github.com/docker/docker/api/client/idresolver" 8 "github.com/docker/docker/api/client/task" 9 "github.com/docker/docker/cli" 10 "github.com/docker/docker/opts" 11 "github.com/docker/engine-api/types" 12 "github.com/spf13/cobra" 13 ) 14 15 type psOptions struct { 16 nodeID string 17 noResolve bool 18 filter opts.FilterOpt 19 } 20 21 func newPSCommand(dockerCli *client.DockerCli) *cobra.Command { 22 opts := psOptions{filter: opts.NewFilterOpt()} 23 24 cmd := &cobra.Command{ 25 Use: "ps [OPTIONS] self|NODE", 26 Short: "List tasks running on a node", 27 Args: cli.ExactArgs(1), 28 RunE: func(cmd *cobra.Command, args []string) error { 29 opts.nodeID = args[0] 30 return runPS(dockerCli, opts) 31 }, 32 } 33 flags := cmd.Flags() 34 flags.BoolVar(&opts.noResolve, "no-resolve", false, "Do not map IDs to Names") 35 flags.VarP(&opts.filter, "filter", "f", "Filter output based on conditions provided") 36 37 return cmd 38 } 39 40 func runPS(dockerCli *client.DockerCli, opts psOptions) error { 41 client := dockerCli.Client() 42 ctx := context.Background() 43 44 nodeRef, err := Reference(client, ctx, opts.nodeID) 45 if err != nil { 46 return nil 47 } 48 node, _, err := client.NodeInspectWithRaw(ctx, nodeRef) 49 if err != nil { 50 return err 51 } 52 53 filter := opts.filter.Value() 54 filter.Add("node", node.ID) 55 tasks, err := client.TaskList( 56 ctx, 57 types.TaskListOptions{Filter: filter}) 58 if err != nil { 59 return err 60 } 61 62 return task.Print(dockerCli, ctx, tasks, idresolver.New(client, opts.noResolve)) 63 }