m/c/metroctl: log resolver state
This makes metroctl log the resolver's output, given the --verbose flag
is provided.
Change-Id: If4578341b733b7ba0ae86bc31dac2f841e75e1ad
Reviewed-on: https://review.monogon.dev/c/monogon/+/836
Tested-by: Jenkins CI
Reviewed-by: Sergiusz Bazanski <serge@monogon.tech>
diff --git a/metropolis/cli/metroctl/main.go b/metropolis/cli/metroctl/main.go
index 7c1e050..d616714 100644
--- a/metropolis/cli/metroctl/main.go
+++ b/metropolis/cli/metroctl/main.go
@@ -21,6 +21,9 @@
proxyAddr string
// configPath overrides the default XDG config path
configPath string
+ // verbose, if set, will make this utility log additional runtime
+ // information.
+ verbose bool
}
var flags metroctlFlags
@@ -29,6 +32,7 @@
rootCmd.PersistentFlags().StringArrayVar(&flags.clusterEndpoints, "endpoints", nil, "A list of the target cluster's endpoints.")
rootCmd.PersistentFlags().StringVar(&flags.proxyAddr, "proxy", "", "SOCKS5 proxy address")
rootCmd.PersistentFlags().StringVar(&flags.configPath, "config", filepath.Join(xdg.ConfigHome, "metroctl"), "An alternative cluster config path")
+ rootCmd.PersistentFlags().BoolVar(&flags.verbose, "verbose", false, "Log additional runtime information")
}
func main() {
diff --git a/metropolis/cli/metroctl/rpc.go b/metropolis/cli/metroctl/rpc.go
index b307d06..7cb8d7c 100644
--- a/metropolis/cli/metroctl/rpc.go
+++ b/metropolis/cli/metroctl/rpc.go
@@ -6,6 +6,7 @@
"crypto/tls"
"crypto/x509"
"fmt"
+ "log"
"net"
"golang.org/x/net/proxy"
@@ -58,7 +59,15 @@
dialOpts = append(dialOpts, grpc.WithTransportCredentials(creds))
}
- r := resolver.New(ctx)
+ var resolverOpts []resolver.ResolverOption
+ if flags.verbose {
+ l := func(f string, args ...interface{}) {
+ log.Printf("resolver: " + f, args...)
+ }
+ resolverOpts = append(resolverOpts, resolver.WithLogger(l))
+ }
+ r := resolver.New(ctx, resolverOpts...)
+
for _, ep := range clusterEndpoints {
r.AddEndpoint(resolver.NodeByHostPort(ep, uint16(node.CuratorServicePort)))
}