Refactor to use Weave's docker client and watcher

This commit is contained in:
Bryan Boreham committed 2015-11-30 13:25:20 +00:00
1 parent 068bbe0837
commit bd2b8df7c5
6 files changed
+25 -42

No files matched your search

+13
View File
@@ -80,3 +80,16 @@ func (c *Client) IsContainerNotRunning(idStr string) bool {
Log.Errorf("[docker] Could not check container status: %s", err)
return false
}
func (c *Client) GetContainerBridgeIP(nameOrID string) (string, error) {
Log.Debugf("Getting IP for container %s", nameOrID)
info, err := c.InspectContainer(nameOrID)
if err != nil {
return "", err
}
return info.NetworkSettings.IPAddress, nil
}
func (c *Client) InspectContainer(nameOrId string) (*docker.Container, error) {
return c.Client.InspectContainer(nameOrId)
}
+2 -2
View File
@@ -8,7 +8,7 @@ import (
)
func (d *dockerer) registerWithDNS(ID string, fqdn string, ip string) error {
dnsip, err := d.getContainerBridgeIP(WeaveDNSContainer)
dnsip, err := d.client.GetContainerBridgeIP(WeaveContainer)
if err != nil {
return fmt.Errorf("nameserver not available: %s", err)
}
@@ -33,7 +33,7 @@ func (d *dockerer) registerWithDNS(ID string, fqdn string, ip string) error {
}
func (d *dockerer) deregisterWithDNS(ID string, ip string) error {
dnsip, err := d.getContainerBridgeIP(WeaveDNSContainer)
dnsip, err := d.client.GetContainerBridgeIP(WeaveContainer)
if err != nil {
return fmt.Errorf("nameserver not available: %s", err)
}
+1 -15
View File
@@ -1,23 +1,9 @@
package plugin
import (
"github.com/fsouza/go-dockerclient"
. "github.com/weaveworks/weave/common"
"github.com/weaveworks/weave/common/docker"
)
type dockerer struct {
client *docker.Client
}
func (d *dockerer) getContainerBridgeIP(nameOrID string) (string, error) {
Log.Debugf("Getting IP for container %s", nameOrID)
info, err := d.InspectContainer(nameOrID)
if err != nil {
return "", err
}
return info.NetworkSettings.IPAddress, nil
}
func (d *dockerer) InspectContainer(nameOrId string) (*docker.Container, error) {
return d.client.InspectContainer(nameOrId)
}
+1 -1
View File
@@ -7,10 +7,10 @@ import (
"github.com/docker/libnetwork/types"
. "github.com/weaveworks/weave/common"
"github.com/weaveworks/weave/common/docker"
"github.com/weaveworks/weave/common/odp"
"github.com/weaveworks/weave/plugin/skel"
docker "github.com/fsouza/go-dockerclient"
"github.com/vishvananda/netlink"
)
+2 -2
View File
@@ -10,7 +10,7 @@ import (
)
func (d *dockerer) ipamOp(ID string, op string) (*net.IPNet, error) {
weaveip, err := d.getContainerBridgeIP(WeaveContainer)
weaveip, err := d.client.GetContainerBridgeIP(WeaveContainer)
Log.Debugf("IPAM operation %s for %s", op, ID)
if err != nil {
return nil, err
@@ -52,7 +52,7 @@ func (d *dockerer) lookupIP(ID string) (*net.IPNet, error) {
// release an IP which is no longer needed
func (d *dockerer) releaseIP(ID string) error {
weaveip, err := d.getContainerBridgeIP(WeaveContainer)
weaveip, err := d.client.GetContainerBridgeIP(WeaveContainer)
if err != nil {
return err
}
+6 -22
View File
@@ -4,19 +4,16 @@ import (
"fmt"
"strings"
"github.com/fsouza/go-dockerclient"
. "github.com/weaveworks/weave/common"
"github.com/weaveworks/weave/common/docker"
)
const (
WeaveDNSContainer = "weavedns"
WeaveDomain = "weave.local"
WeaveDomain = "weave.local"
)
type watcher struct {
dockerer
networks map[string]bool
events chan *docker.APIEvents
}
type Watcher interface {
@@ -27,31 +24,18 @@ func NewWatcher(client *docker.Client) (Watcher, error) {
dockerer: dockerer{
client: client,
},
networks: make(map[string]bool),
events: make(chan *docker.APIEvents),
}
err := client.AddEventListener(w.events)
err := client.AddObserver(w)
if err != nil {
return nil, err
}
go func() {
for event := range w.events {
switch event.Status {
case "start":
w.ContainerStart(event.ID)
case "die":
w.ContainerDied(event.ID)
}
}
}()
return w, nil
}
func (w *watcher) ContainerStart(id string) {
func (w *watcher) ContainerStarted(id string) {
Log.Debugf("Container started %s", id)
info, err := w.InspectContainer(id)
info, err := w.client.InspectContainer(id)
if err != nil {
Log.Warningf("error inspecting container: %s", err)
return
@@ -69,7 +53,7 @@ func (w *watcher) ContainerStart(id string) {
func (w *watcher) ContainerDied(id string) {
Log.Debugf("Container died %s", id)
info, err := w.InspectContainer(id)
info, err := w.client.InspectContainer(id)
if err != nil {
Log.Warningf("error inspecting container: %s", err)
return