From 413dbc7f0cf6e5e30eac913ab3bf632f0099aad3 Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Sat, 15 Apr 2017 00:02:07 +0100 Subject: [PATCH] allow disabling of weaveDNS advertising/lookup ...while keeping other weave integrations, by setting --weave.hostname= Addresses a suggestion in #1550. --- prog/app.go | 4 ++-- prog/main.go | 14 +++++++++----- prog/probe.go | 30 ++++++++++++++++-------------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/prog/app.go b/prog/app.go index eaa80b219..1fb28d5c1 100644 --- a/prog/app.go +++ b/prog/app.go @@ -282,8 +282,8 @@ func appMain(flags appFlags) { } }) - // Periodically try and register out IP address in WeaveDNS. - if flags.weaveEnabled { + // Periodically try and register our IP address in WeaveDNS. + if flags.weaveEnabled && flags.weaveHostname != "" { weave, err := newWeavePublisher( flags.dockerEndpoint, flags.weaveAddr, flags.weaveHostname, flags.containerName) diff --git a/prog/main.go b/prog/main.go index 4d5c9cc24..cd25e2531 100644 --- a/prog/main.go +++ b/prog/main.go @@ -257,7 +257,7 @@ func main() { flag.BoolVar(&debug, "debug", false, "Force debug logging.") flag.BoolVar(&dryRun, "dry-run", false, "Don't start scope, just parse the arguments. For internal use only.") flag.BoolVar(&weaveEnabled, "weave", true, "Enable Weave Net integrations.") - flag.StringVar(&weaveHostname, "weave.hostname", "", "Hostname to advertise/lookup in WeaveDNS") + flag.StringVar(&weaveHostname, "weave.hostname", app.DefaultHostname, "Hostname to advertise/lookup in WeaveDNS") // We need to know how to parse them, but they are mainly interpreted by the entrypoint script. // They are also here so they are included in usage, and the probe uses them to decide if to @@ -321,7 +321,7 @@ func main() { // Weave flag.StringVar(&flags.probe.weaveAddr, "probe.weave.addr", "127.0.0.1:6784", "IP address & port of the Weave router") - flag.StringVar(&flags.probe.weaveHostname, "probe.weave.hostname", app.DefaultHostname, "Hostname to lookup in WeaveDNS") + flag.StringVar(&flags.probe.weaveHostname, "probe.weave.hostname", "", "Hostname to lookup in WeaveDNS") // App flags flag.DurationVar(&flags.app.window, "app.window", 15*time.Second, "window") @@ -333,7 +333,7 @@ func main() { flag.BoolVar(&flags.app.logHTTPHeaders, "app.log.httpHeaders", false, "Log HTTP headers. Needs app.log.http to be enabled.") flag.StringVar(&flags.app.weaveAddr, "app.weave.addr", app.DefaultWeaveURL, "Address on which to contact WeaveDNS") - flag.StringVar(&flags.app.weaveHostname, "app.weave.hostname", app.DefaultHostname, "Hostname to advertise in WeaveDNS") + flag.StringVar(&flags.app.weaveHostname, "app.weave.hostname", "", "Hostname to advertise in WeaveDNS") flag.StringVar(&flags.app.containerName, "app.container.name", app.DefaultContainerName, "Name of this container (to lookup container ID)") flag.StringVar(&flags.app.dockerEndpoint, "app.docker", app.DefaultDockerEndpoint, "Location of docker endpoint (to lookup container ID)") flag.Var(&containerLabelFilterFlags, "app.container-label-filter", "Add container label-based view filter, specified as title:label. Multiple flags are accepted. Example: --app.container-label-filter='Database Containers:role=db'") @@ -369,8 +369,12 @@ func main() { flags.app.logLevel = "debug" } if weaveHostname != "" { - flags.probe.weaveHostname = weaveHostname - flags.app.weaveHostname = weaveHostname + if flags.probe.weaveHostname == "" { + flags.probe.weaveHostname = weaveHostname + } + if flags.app.weaveHostname == "" { + flags.app.weaveHostname = weaveHostname + } } flags.probe.weaveEnabled = weaveEnabled flags.app.weaveEnabled = weaveEnabled diff --git a/prog/probe.go b/prog/probe.go index 4a2d430d3..274b6534d 100644 --- a/prog/probe.go +++ b/prog/probe.go @@ -244,24 +244,26 @@ func probeMain(flags probeFlags, targets []appclient.Target) { p.AddTagger(weave) p.AddReporter(weave) - dockerBridgeIP, err := network.GetFirstAddressOf(flags.dockerBridge) - if err != nil { - log.Errorf("Error getting docker bridge ip: %v", err) - } else { - weaveDNSLookup := appclient.LookupUsing(dockerBridgeIP + ":53") - weaveTargets, err := appclient.ParseTargets([]string{flags.weaveHostname}) + if flags.weaveHostname != "" { + dockerBridgeIP, err := network.GetFirstAddressOf(flags.dockerBridge) if err != nil { - log.Errorf("Failed to parse weave targets: %v", err) + log.Errorf("Error getting docker bridge ip: %v", err) } else { - weaveResolver, err := appclient.NewResolver(appclient.ResolverConfig{ - Targets: weaveTargets, - Lookup: weaveDNSLookup, - Set: clients.Set, - }) + weaveDNSLookup := appclient.LookupUsing(dockerBridgeIP + ":53") + weaveTargets, err := appclient.ParseTargets([]string{flags.weaveHostname}) if err != nil { - log.Errorf("Failed to create weave resolver: %v", err) + log.Errorf("Failed to parse weave targets: %v", err) } else { - defer weaveResolver.Stop() + weaveResolver, err := appclient.NewResolver(appclient.ResolverConfig{ + Targets: weaveTargets, + Lookup: weaveDNSLookup, + Set: clients.Set, + }) + if err != nil { + log.Errorf("Failed to create weave resolver: %v", err) + } else { + defer weaveResolver.Stop() + } } } }