@@ -2,6 +2,7 @@ package main
22
33import (
44 "flag"
5+ "strings"
56
67 log "github.com/sirupsen/logrus"
78
@@ -17,7 +18,8 @@ func main() {
1718 log .SetLevel (log .TraceLevel )
1819
1920 consulAddr := flag .String ("http-addr" , "127.0.0.1:8500" , "Consul agent address" )
20- service := flag .String ("sidecar-for" , "" , "The consul service to proxy" )
21+ service := flag .String ("sidecar-for" , "" , "The consul service id to proxy" )
22+ serviceTag := flag .String ("sidecar-for-tag" , "" , "The consul service id to proxy" )
2123 haproxyBin := flag .String ("haproxy" , "haproxy" , "Haproxy binary path" )
2224 dataplaneBin := flag .String ("dataplane" , "dataplane-api" , "Dataplane binary path" )
2325 haproxyCfgBasePath := flag .String ("haproxy-cfg-base-path" , "/tmp" , "Haproxy binary path" )
@@ -38,7 +40,30 @@ func main() {
3840 consulClient , err := api .NewClient (consulConfig )
3941 if err != nil {
4042 }
41- watcher := consul .New (* service , consulClient )
43+
44+ var serviceID string
45+ if * serviceTag != "" {
46+ svcs , err := consulClient .Agent ().Services ()
47+ if err != nil {
48+ log .Fatal (err )
49+ }
50+ OUTER:
51+ for _ , s := range svcs {
52+ if strings .HasSuffix (s .Service , "sidecar-proxy" ) {
53+ continue
54+ }
55+ for _ , t := range s .Tags {
56+ if t == * serviceTag {
57+ serviceID = s .ID
58+ break OUTER
59+ }
60+ }
61+ }
62+ } else {
63+ serviceID = * service
64+ }
65+
66+ watcher := consul .New (serviceID , consulClient )
4267 go func () {
4368 if err := watcher .Run (); err != nil {
4469 log .Error (err )
0 commit comments