Simplified args and added minimal event handling

This commit is contained in:
Michael Bridgen committed 2014-10-16 12:35:05 +01:00
1 parent 4949f34461
commit d8c31fb150
1 file changed
+21 -8
+21 -8
View File
@@ -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
}