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 ( import (
"bytes" "bytes"
"context"
"log" "log"
"net/http" "net/http"
@ -9,15 +10,38 @@ import (
"strconv" "strconv"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/client"
"github.com/gorilla/mux" "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) { func proxy(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" { if r.Method == "POST" {
log.Println(r.Header) log.Println(r.Header)
header := r.Header["X-Function"] header := r.Header["X-Function"]
log.Println(header) 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} // client := http.Client{Timeout: time.Second * 2}
requestBody, _ := ioutil.ReadAll(r.Body) requestBody, _ := ioutil.ReadAll(r.Body)
buf := bytes.NewBuffer(requestBody) buf := bytes.NewBuffer(requestBody)
@ -28,7 +52,6 @@ func proxy(w http.ResponseWriter, r *http.Request) {
} }
responseBody, _ := ioutil.ReadAll(response.Body) responseBody, _ := ioutil.ReadAll(response.Body)
w.Write(responseBody) w.Write(responseBody)
} }
} }
} }