diff --git a/prog/plugin/main.go b/prog/plugin/main.go index 29d04713..17ea2120 100644 --- a/prog/plugin/main.go +++ b/prog/plugin/main.go @@ -4,6 +4,7 @@ import ( "flag" "fmt" "net" + "net/http" "os" "os/signal" "syscall" @@ -77,6 +78,11 @@ func run(dockerClient *docker.Client, address, meshAddress string, noMulticastRo defer meshListener.Close() } + statusListener, err := weavenet.ListenUnixSocket("/home/weave/status.sock") + if err != nil { + return err + } + go serveStatus(statusListener) sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, os.Interrupt, os.Kill, syscall.SIGTERM) @@ -114,3 +120,12 @@ func listenAndServe(dockerClient *docker.Client, address string, noMulticastRout return listener, nil } + +func serveStatus(listener net.Listener) { + server := &http.Server{Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "ok") + })} + if err := server.Serve(listener); err != nil { + Log.Fatalf("ListenAndServeStatus failed: %s", err) + } +} diff --git a/weave b/weave index 7c785227..bec9d62b 100755 --- a/weave +++ b/weave @@ -1724,6 +1724,7 @@ launch_plugin_if_not_running() { $PLUGIN_IMAGE "$@") ; then return 1 fi + wait_for_status $PLUGIN_CONTAINER_NAME http_call_unix $PLUGIN_CONTAINER_NAME status.sock util_op create-plugin-network weave weavemesh }