From d8c31fb150f586ea0a1df14985aeb8f203b2d911 Mon Sep 17 00:00:00 2001 From: Michael Bridgen Date: Mon, 13 Oct 2014 16:46:37 +0100 Subject: [PATCH] Simplified args and added minimal event handling --- updater/main.go | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/updater/main.go b/updater/main.go index 0b66d1cc..63fdcefc 100644 --- a/updater/main.go +++ b/updater/main.go @@ -2,22 +2,23 @@ package main import ( "flag" + "fmt" "github.com/fsouza/go-dockerclient" "log" + "net/http" ) func main() { var ( - serverAddr string - serverPort int + updatePath string apiPath string ) - flag.StringVar(&serverAddr, "host", "", "address or hostname of server to update") - flag.IntVar(&serverPort, "port", 6785, "port on server to send updates to") - flag.StringVar(&apiPath, "api", "unix:///var/run/docker.sock", - "Path to Docker API socket") + flag.StringVar(&updatePath, "endpoint", "", "Endpoint to which to send updates") + flag.StringVar(&apiPath, "api", "unix:///var/run/docker.sock", "Path to Docker API socket") flag.Parse() + // TODO: check status on endpoint + client, err := docker.NewClient(apiPath) if err != nil { log.Fatalf("Unable to connect to Docker API on %s: %s", apiPath, err) @@ -28,13 +29,25 @@ func main() { client.AddEventListener(events) log.Printf("Using Docker API on %s", apiPath) - log.Printf("Posting updates to server %s:%d", serverAddr, serverPort) + log.Printf("Posting updates to ", updatePath) go func() { for event := range events { - log.Printf("Event %s", *event) + handleEvent(event, client, updatePath) } done <- true }() <-done } + +func handleEvent(event *docker.APIEvents, client *docker.Client, endpoint string) error { + switch event.Status { + case "die": + id := event.ID + url := fmt.Sprintf("%s/name/%s", endpoint, id) + client := &http.Client{} + req, _ := http.NewRequest("DELETE", url, nil) + client.Do(req) + } + return nil +}