ctlv3: set ETCD_WATCH_KEY, ETCD_WATCH_VALUE on exec watch

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
Gyuho Lee 2018-01-16 09:03:10 -08:00
parent 388b7fece6
commit 72a2a6671e

View File

@ -155,11 +155,15 @@ func printWatchCh(c *clientv3.Client, ch clientv3.WatchChan, execArgs []string)
display.Watch(resp) display.Watch(resp)
if len(execArgs) > 0 { if len(execArgs) > 0 {
cmd := exec.CommandContext(c.Ctx(), execArgs[0], execArgs[1:]...) for _, ev := range resp.Events {
cmd.Env = os.Environ() cmd := exec.CommandContext(c.Ctx(), execArgs[0], execArgs[1:]...)
cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr cmd.Env = os.Environ()
if err := cmd.Run(); err != nil { cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_KEY=%q", ev.Kv.Key))
fmt.Fprintf(os.Stderr, "command %q error (%v)\n", execArgs, err) 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)
}
} }
} }
} }