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/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)))
 	}