Skip to content

Commit 92c5499

Browse files
committed
Instrument plugin command executions using our utils
Signed-off-by: Christopher Petito <[email protected]>
1 parent 49dbdab commit 92c5499

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

cli-plugins/manager/cobra.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,12 @@ func AddPluginCommandStubs(dockerCli command.Cli, rootCmd *cobra.Command) (err e
9090
cargs = append(cargs, args...)
9191
cargs = append(cargs, toComplete)
9292
os.Args = cargs
93-
runCommand, runErr := PluginRunCommand(dockerCli, p.Name, cmd)
93+
pluginRunCommand, runErr := PluginRunCommand(dockerCli, p.Name, cmd)
9494
if runErr != nil {
9595
return nil, cobra.ShellCompDirectiveError
9696
}
97-
runErr = runCommand.Run()
97+
runCommand := command.InstrumentPluginCommand(pluginRunCommand, dockerCli)
98+
runErr = runCommand.TimedRun(cmd.Context())
9899
if runErr == nil {
99100
os.Exit(0) // plugin already rendered complete data
100101
}

cmd/docker/docker.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,10 @@ func setupHelpCommand(dockerCli command.Cli, rootCmd, helpCmd *cobra.Command) {
136136
helpCmd.Run = nil
137137
helpCmd.RunE = func(c *cobra.Command, args []string) error {
138138
if len(args) > 0 {
139-
helpcmd, err := pluginmanager.PluginRunCommand(dockerCli, args[0], rootCmd)
139+
helpRunCmd, err := pluginmanager.PluginRunCommand(dockerCli, args[0], rootCmd)
140+
helpcmd := command.InstrumentPluginCommand(helpRunCmd, dockerCli)
140141
if err == nil {
141-
return helpcmd.Run()
142+
return helpcmd.TimedRun(c.Context())
142143
}
143144
if !pluginmanager.IsNotFound(err) {
144145
return errors.Errorf("unknown help topic: %v", strings.Join(args, " "))
@@ -159,11 +160,12 @@ func tryRunPluginHelp(dockerCli command.Cli, ccmd *cobra.Command, cargs []string
159160
if err != nil {
160161
return err
161162
}
162-
helpcmd, err := pluginmanager.PluginRunCommand(dockerCli, cmd.Name(), root)
163+
helpRunCmd, err := pluginmanager.PluginRunCommand(dockerCli, cmd.Name(), root)
164+
helpcmd := command.InstrumentPluginCommand(helpRunCmd, dockerCli)
163165
if err != nil {
164166
return err
165167
}
166-
return helpcmd.Run()
168+
return helpcmd.TimedRun(ccmd.Context())
167169
}
168170

169171
func setHelpFunc(dockerCli command.Cli, cmd *cobra.Command) {
@@ -225,10 +227,11 @@ func setValidateArgs(dockerCli command.Cli, cmd *cobra.Command) {
225227
}
226228

227229
func tryPluginRun(dockerCli command.Cli, cmd *cobra.Command, subcommand string, envs []string) error {
228-
plugincmd, err := pluginmanager.PluginRunCommand(dockerCli, subcommand, cmd)
230+
pluginRunCmd, err := pluginmanager.PluginRunCommand(dockerCli, subcommand, cmd)
229231
if err != nil {
230232
return err
231233
}
234+
plugincmd := command.InstrumentPluginCommand(pluginRunCmd, dockerCli)
232235

233236
// Establish the plugin socket, adding it to the environment under a
234237
// well-known key if successful.
@@ -279,7 +282,7 @@ func tryPluginRun(dockerCli command.Cli, cmd *cobra.Command, subcommand string,
279282
}
280283
}()
281284

282-
if err := plugincmd.Run(); err != nil {
285+
if err := plugincmd.TimedRun(cmd.Context()); err != nil {
283286
statusCode := 1
284287
exitErr, ok := err.(*exec.ExitError)
285288
if !ok {
@@ -314,6 +317,8 @@ func runDocker(ctx context.Context, dockerCli *command.DockerCli) error {
314317

315318
dockerCli.InstrumentCobraCommands(cmd)
316319

320+
cmd.SetContext(ctx)
321+
317322
var envs []string
318323
args, os.Args, envs, err = processAliases(dockerCli, cmd, args, os.Args)
319324
if err != nil {
@@ -354,7 +359,7 @@ func runDocker(ctx context.Context, dockerCli *command.DockerCli) error {
354359
// We've parsed global args already, so reset args to those
355360
// which remain.
356361
cmd.SetArgs(args)
357-
err = cmd.ExecuteContext(ctx)
362+
err = cmd.Execute()
358363

359364
// If the command is being executed in an interactive terminal
360365
// and hook are enabled, run the plugin hooks.

0 commit comments

Comments
 (0)