From 72a2a6671ead8cda7dc5624c8ea13155404b3eb2 Mon Sep 17 00:00:00 2001 From: Gyuho Lee Date: Tue, 16 Jan 2018 09:03:10 -0800 Subject: [PATCH] ctlv3: set ETCD_WATCH_KEY, ETCD_WATCH_VALUE on exec watch Signed-off-by: Gyuho Lee --- etcdctl/ctlv3/command/watch_command.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/etcdctl/ctlv3/command/watch_command.go b/etcdctl/ctlv3/command/watch_command.go index e4596f785..e546eb8dc 100644 --- a/etcdctl/ctlv3/command/watch_command.go +++ b/etcdctl/ctlv3/command/watch_command.go @@ -155,11 +155,15 @@ func printWatchCh(c *clientv3.Client, ch clientv3.WatchChan, execArgs []string) display.Watch(resp) if len(execArgs) > 0 { - cmd := exec.CommandContext(c.Ctx(), execArgs[0], execArgs[1:]...) - cmd.Env = os.Environ() - cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr - if err := cmd.Run(); err != nil { - fmt.Fprintf(os.Stderr, "command %q error (%v)\n", execArgs, err) + for _, ev := range resp.Events { + cmd := exec.CommandContext(c.Ctx(), execArgs[0], execArgs[1:]...) + cmd.Env = os.Environ() + cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_KEY=%q", ev.Kv.Key)) + cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_VALUE=%q", ev.Kv.Value)) + cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr + if err := cmd.Run(); err != nil { + fmt.Fprintf(os.Stderr, "command %q error (%v)\n", execArgs, err) + } } } }