Simplified args and added minimal event handling
This commit is contained in:
1 parent
4949f34461
commit
d8c31fb150
1 file changed
+21
-8
+21
-8
@@ -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
|
||||
}
|
||||
Reference in new issue
Block a user