Resolve weave IP every time we need it, in case it changed

This commit is contained in:
Bryan Boreham committed 2015-12-08 16:59:34 +00:00
1 parent a6f07fbaac
commit ecd93bbfe4
3 files changed
+26 -51

No files matched your search

+3 -16
View File
@@ -22,7 +22,9 @@ type Watcher interface {
}
func NewWatcher(client *docker.Client, driver *driver) (Watcher, error) {
w := &watcher{client: client, driver: driver}
resolver := func() (string, error) { return client.GetContainerIP(WeaveContainer) }
w := &watcher{client: client, driver: driver,
weave: weaveapi.NewClientWithResolver(resolver)}
err := client.AddObserver(w)
if err != nil {
return nil, err
@@ -31,18 +33,6 @@ func NewWatcher(client *docker.Client, driver *driver) (Watcher, error) {
return w, nil
}
func (w *watcher) haveWeaveClient() bool {
if w.weave == nil {
dnsip, err := w.client.GetContainerIP(WeaveContainer)
if err != nil {
Log.Warningf("nameserver not available: %s", err)
return false
}
w.weave = weaveapi.NewClient(dnsip)
}
return true
}
func (w *watcher) ContainerStarted(id string) {
Log.Debugf("Container started %s", id)
info, err := w.client.InspectContainer(id)
@@ -50,9 +40,6 @@ func (w *watcher) ContainerStarted(id string) {
Log.Warningf("error inspecting container: %s", err)
return
}
if !w.haveWeaveClient() {
return
}
// check that it's on our network, via the endpointID
for _, net := range info.NetworkSettings.Networks {
if w.driver.HasEndpoint(net.EndpointID) {