Check services against swarm

This commit is contained in:
Alex 2016-12-22 16:55:54 +00:00
parent 734c8a3dc6
commit d1f9909ae6

View File

@ -2,6 +2,7 @@ package main
import (
"bytes"
"context"
"log"
"net/http"
@ -9,15 +10,38 @@ import (
"strconv"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/client"
"github.com/gorilla/mux"
)
func lookupSwarmService(serviceName string) (bool, error) {
var c *client.Client
var err error
c, err = client.NewEnvClient()
if err != nil {
log.Fatal("Error with Docker client.")
}
serviceFilter := filters.NewArgs()
serviceFilter.Add("name", serviceName)
services, err := c.ServiceList(context.Background(), types.ServiceListOptions{Filters: serviceFilter})
return len(services) > 0, err
}
func proxy(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
log.Println(r.Header)
header := r.Header["X-Function"]
log.Println(header)
if header[0] == "catservice" {
exists, err := lookupSwarmService(header[0])
if err != nil {
log.Fatalln(err)
}
if exists == true {
// client := http.Client{Timeout: time.Second * 2}
requestBody, _ := ioutil.ReadAll(r.Body)
buf := bytes.NewBuffer(requestBody)
@ -28,7 +52,6 @@ func proxy(w http.ResponseWriter, r *http.Request) {
}
responseBody, _ := ioutil.ReadAll(response.Body)
w.Write(responseBody)
}
}
}