diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 8eb9d2194..36e270c9b 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,386 +1,302 @@ { - "ImportPath": "github.com/emilevauge/traefik", - "GoVersion": "go1.4.2", - "Packages": [ - "./..." - ], - "Deps": [ - { - "ImportPath": "github.com/BurntSushi/toml", - "Rev": "bd2bdf7f18f849530ef7a1c29a4290217cab32a1" - }, - { - "ImportPath": "github.com/BurntSushi/ty", - "Rev": "6add9cd6ad42d389d6ead1dde60b4ad71e46fd74" - }, - { - "ImportPath": "github.com/Sirupsen/logrus", - "Comment": "v0.8.7", - "Rev": "418b41d23a1bf978c06faea5313ba194650ac088" - }, - { - "ImportPath": "github.com/alecthomas/template", - "Rev": "b867cc6ab45cece8143cfcc6fc9c77cf3f2c23c0" - }, - { - "ImportPath": "github.com/alecthomas/units", - "Rev": "6b4e7dc5e3143b85ea77909c72caf89416fc2915" - }, - { - "ImportPath": "github.com/boltdb/bolt", - "Rev": "51f99c862475898df9773747d3accd05a7ca33c1" - }, - { - "ImportPath": "github.com/cenkalti/backoff", - "Rev": "4dc77674aceaabba2c7e3da25d4c823edfb73f99" - }, - { - "ImportPath": "github.com/codahale/hdrhistogram", - "Rev": "954f16e8b9ef0e5d5189456aa4c1202758e04f17" - }, - { - "ImportPath": "github.com/codegangsta/negroni", - "Comment": "v0.1-70-gc7477ad", - "Rev": "c7477ad8e330bef55bf1ebe300cf8aa67c492d1b" - }, - { - "ImportPath": "github.com/coreos/go-etcd/etcd", - "Comment": "v2.0.0-11-gcc90c7b", - "Rev": "cc90c7b091275e606ad0ca7102a23fb2072f3f5e" - }, - { - "ImportPath": "github.com/davecgh/go-spew/spew", - "Rev": "2df174808ee097f90d259e432cc04442cf60be21" - }, - { - "ImportPath": "github.com/docker/libkv", - "Rev": "3732f7ff1b56057c3158f10bceb1e79133025373" - }, - { - "ImportPath": "github.com/docker/distribution", - "Comment": "v2.0.0-467-g9038e48", - "Rev": "9038e48c3b982f8e82281ea486f078a73731ac4e" - }, - { - "ImportPath": "github.com/docker/docker/api", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/cliconfig", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/daemon/network", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/graph/tags", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/image", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/opts", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/archive", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/fileutils", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/homedir", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/httputils", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/ioutils", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/jsonmessage", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/mflag", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/nat", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/parsers", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/pools", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/promise", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/random", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/stdcopy", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/stringid", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/symlink", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/system", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/tarsum", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/term", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/timeutils", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/tlsconfig", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/ulimit", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/units", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/urlutil", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/useragent", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/pkg/version", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/registry", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/runconfig", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/utils", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/docker/volume", - "Comment": "v1.4.1-5200-gf39987a", - "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" - }, - { - "ImportPath": "github.com/docker/libcompose/docker", - "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" - }, - { - "ImportPath": "github.com/docker/libcompose/logger", - "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" - }, - { - "ImportPath": "github.com/docker/libcompose/lookup", - "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" - }, - { - "ImportPath": "github.com/docker/libcompose/project", - "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" - }, - { - "ImportPath": "github.com/docker/libcompose/utils", - "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" - }, - { - "ImportPath": "github.com/docker/libtrust", - "Rev": "9cbd2a1374f46905c68a4eb3694a130610adc62a" - }, - { - "ImportPath": "github.com/elazarl/go-bindata-assetfs", - "Rev": "d5cac425555ca5cf00694df246e04f05e6a55150" - }, - { - "ImportPath": "github.com/flynn/go-shlex", - "Rev": "3f9db97f856818214da2e1057f8ad84803971cff" - }, - { - "ImportPath": "github.com/fsouza/go-dockerclient", - "Rev": "0239034d42f665efa17fd77c39f891c2f9f32922" - }, - { - "ImportPath": "github.com/gambol99/go-marathon", - "Rev": "0ba31bcb0d7633ba1888d744c42990eb15281cf1" - }, - { - "ImportPath": "github.com/gorilla/context", - "Rev": "215affda49addc4c8ef7e2534915df2c8c35c6cd" - }, - { - "ImportPath": "github.com/gorilla/handlers", - "Rev": "40694b40f4a928c062f56849989d3e9cd0570e5f" - }, - { - "ImportPath": "github.com/gorilla/mux", - "Rev": "f15e0c49460fd49eebe2bcc8486b05d1bef68d3a" - }, - { - "ImportPath": "github.com/hashicorp/consul/api", - "Comment": "v0.5.2-313-gde08067", - "Rev": "de080672fee9e6104572eeea89eccdca135bb918" - }, - { - "ImportPath": "github.com/mailgun/log", - "Rev": "44874009257d4d47ba9806f1b7f72a32a015e4d8" - }, - { - "ImportPath": "github.com/mailgun/manners", - "Comment": "0.3.1-30-g37136f7", - "Rev": "37136f736785d7c6aa3b9a27b4b2dd1028ca6d79" - }, - { - "ImportPath": "github.com/mailgun/oxy/cbreaker", - "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" - }, - { - "ImportPath": "github.com/mailgun/oxy/forward", - "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" - }, - { - "ImportPath": "github.com/mailgun/oxy/memmetrics", - "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" - }, - { - "ImportPath": "github.com/mailgun/oxy/roundrobin", - "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" - }, - { - "ImportPath": "github.com/mailgun/oxy/utils", - "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" - }, - { - "ImportPath": "github.com/mailgun/predicate", - "Rev": "cb0bff91a7ab7cf7571e661ff883fc997bc554a3" - }, - { - "ImportPath": "github.com/mailgun/timetools", - "Rev": "fd192d755b00c968d312d23f521eb0cdc6f66bd0" - }, - { - "ImportPath": "github.com/samuel/go-zookeeper/zk", - "Rev": "fa6674abf3f4580b946a01bf7a1ce4ba8766205b" - }, - { - "ImportPath": "github.com/opencontainers/runc/libcontainer/user", - "Comment": "v0.0.4-21-g4ab1324", - "Rev": "4ab132458fc3e9dbeea624153e0331952dc4c8d5" - }, - { - "ImportPath": "github.com/samalba/dockerclient", - "Rev": "cfb489c624b635251a93e74e1e90eb0959c5367f" - }, - { - "ImportPath": "github.com/thoas/stats", - "Rev": "54ed61c2b47e263ae2f01b86837b0c4bd1da28e8" - }, - { - "ImportPath": "github.com/unrolled/render", - "Rev": "26b4e3aac686940fe29521545afad9966ddfc80c" - }, - { - "ImportPath": "github.com/vdemeester/shakers", - "Rev": "8fe734f75f3a70b651cbfbf8a55a009da09e8dc5" - }, - { - "ImportPath": "golang.org/x/net/context", - "Rev": "d9558e5c97f85372afee28cf2b6059d7d3818919" - }, - { - "ImportPath": "gopkg.in/alecthomas/kingpin.v2", - "Comment": "v2.0.12", - "Rev": "639879d6110b1b0409410c7b737ef0bb18325038" - }, - { - "ImportPath": "gopkg.in/check.v1", - "Rev": "11d3bc7aa68e238947792f30573146a3231fc0f1" - }, - { - "ImportPath": "gopkg.in/fsnotify.v1", - "Comment": "v1.2.0", - "Rev": "96c060f6a6b7e0d6f75fddd10efeaca3e5d1bcb0" - }, - { - "ImportPath": "gopkg.in/mgo.v2/bson", - "Comment": "r2015.06.03-5-g22287ba", - "Rev": "22287bab4379e1fbf6002fb4eb769888f3fb224c" - }, - { - "ImportPath": "gopkg.in/yaml.v2", - "Rev": "7ad95dd0798a40da1ccdff6dff35fd177b5edf40" - } - ] + "ImportPath": "github.com/emilevauge/traefik", + "GoVersion": "go1.4.2", + "Packages": [ + "./..." + ], + "Deps": [{ + "ImportPath": "github.com/BurntSushi/toml", + "Rev": "bd2bdf7f18f849530ef7a1c29a4290217cab32a1" + }, { + "ImportPath": "github.com/BurntSushi/ty", + "Rev": "6add9cd6ad42d389d6ead1dde60b4ad71e46fd74" + }, { + "ImportPath": "github.com/Sirupsen/logrus", + "Comment": "v0.8.7", + "Rev": "418b41d23a1bf978c06faea5313ba194650ac088" + }, { + "ImportPath": "github.com/alecthomas/template", + "Rev": "b867cc6ab45cece8143cfcc6fc9c77cf3f2c23c0" + }, { + "ImportPath": "github.com/alecthomas/units", + "Rev": "6b4e7dc5e3143b85ea77909c72caf89416fc2915" + }, { + "ImportPath": "github.com/boltdb/bolt", + "Rev": "51f99c862475898df9773747d3accd05a7ca33c1" + }, { + "ImportPath": "github.com/cenkalti/backoff", + "Rev": "4dc77674aceaabba2c7e3da25d4c823edfb73f99" + }, { + "ImportPath": "github.com/codahale/hdrhistogram", + "Rev": "954f16e8b9ef0e5d5189456aa4c1202758e04f17" + }, { + "ImportPath": "github.com/codegangsta/negroni", + "Comment": "v0.1-70-gc7477ad", + "Rev": "c7477ad8e330bef55bf1ebe300cf8aa67c492d1b" + }, { + "ImportPath": "github.com/coreos/go-etcd/etcd", + "Comment": "v2.0.0-11-gcc90c7b", + "Rev": "cc90c7b091275e606ad0ca7102a23fb2072f3f5e" + }, { + "ImportPath": "github.com/davecgh/go-spew/spew", + "Rev": "2df174808ee097f90d259e432cc04442cf60be21" + }, { + "ImportPath": "github.com/docker/libkv", + "Rev": "3732f7ff1b56057c3158f10bceb1e79133025373" + }, { + "ImportPath": "github.com/docker/distribution", + "Comment": "v2.0.0-467-g9038e48", + "Rev": "9038e48c3b982f8e82281ea486f078a73731ac4e" + }, { + "ImportPath": "github.com/docker/docker/api", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/cliconfig", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/daemon/network", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/graph/tags", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/image", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/opts", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/archive", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/fileutils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/homedir", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/httputils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/ioutils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/jsonmessage", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/mflag", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/nat", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/parsers", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/pools", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/promise", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/random", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/stdcopy", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/stringid", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/symlink", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/system", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/tarsum", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/term", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/timeutils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/tlsconfig", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/ulimit", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/units", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/urlutil", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/useragent", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/pkg/version", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/registry", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/runconfig", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/utils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/docker/volume", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, { + "ImportPath": "github.com/docker/libcompose/docker", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, { + "ImportPath": "github.com/docker/libcompose/logger", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, { + "ImportPath": "github.com/docker/libcompose/lookup", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, { + "ImportPath": "github.com/docker/libcompose/project", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, { + "ImportPath": "github.com/docker/libcompose/utils", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, { + "ImportPath": "github.com/docker/libtrust", + "Rev": "9cbd2a1374f46905c68a4eb3694a130610adc62a" + }, { + "ImportPath": "github.com/elazarl/go-bindata-assetfs", + "Rev": "d5cac425555ca5cf00694df246e04f05e6a55150" + }, { + "ImportPath": "github.com/flynn/go-shlex", + "Rev": "3f9db97f856818214da2e1057f8ad84803971cff" + }, { + "ImportPath": "github.com/fsouza/go-dockerclient", + "Rev": "0239034d42f665efa17fd77c39f891c2f9f32922" + }, { + "ImportPath": "github.com/gambol99/go-marathon", + "Rev": "0ba31bcb0d7633ba1888d744c42990eb15281cf1" + }, { + "ImportPath": "github.com/gorilla/context", + "Rev": "215affda49addc4c8ef7e2534915df2c8c35c6cd" + }, { + "ImportPath": "github.com/gorilla/handlers", + "Rev": "40694b40f4a928c062f56849989d3e9cd0570e5f" + }, { + "ImportPath": "github.com/gorilla/mux", + "Rev": "f15e0c49460fd49eebe2bcc8486b05d1bef68d3a" + }, { + "ImportPath": "github.com/hashicorp/consul/api", + "Comment": "v0.5.2-313-gde08067", + "Rev": "de080672fee9e6104572eeea89eccdca135bb918" + }, { + "ImportPath": "github.com/mailgun/log", + "Rev": "44874009257d4d47ba9806f1b7f72a32a015e4d8" + }, { + "ImportPath": "github.com/mailgun/manners", + "Comment": "0.3.1-30-g37136f7", + "Rev": "37136f736785d7c6aa3b9a27b4b2dd1028ca6d79" + }, { + "ImportPath": "github.com/mailgun/oxy/cbreaker", + "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" + }, { + "ImportPath": "github.com/mailgun/oxy/forward", + "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" + }, { + "ImportPath": "github.com/mailgun/oxy/memmetrics", + "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" + }, { + "ImportPath": "github.com/mailgun/oxy/roundrobin", + "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" + }, { + "ImportPath": "github.com/mailgun/oxy/utils", + "Rev": "547c334d658398c05b346c0b79d8f47ba2e1473b" + }, { + "ImportPath": "github.com/mailgun/predicate", + "Rev": "cb0bff91a7ab7cf7571e661ff883fc997bc554a3" + }, { + "ImportPath": "github.com/mailgun/timetools", + "Rev": "fd192d755b00c968d312d23f521eb0cdc6f66bd0" + }, { + "ImportPath": "github.com/samuel/go-zookeeper/zk", + "Rev": "fa6674abf3f4580b946a01bf7a1ce4ba8766205b" + }, { + "ImportPath": "github.com/opencontainers/runc/libcontainer/user", + "Comment": "v0.0.4-21-g4ab1324", + "Rev": "4ab132458fc3e9dbeea624153e0331952dc4c8d5" + }, { + "ImportPath": "github.com/samalba/dockerclient", + "Rev": "cfb489c624b635251a93e74e1e90eb0959c5367f" + }, { + "ImportPath": "github.com/thoas/stats", + "Rev": "54ed61c2b47e263ae2f01b86837b0c4bd1da28e8" + }, { + "ImportPath": "github.com/unrolled/render", + "Rev": "26b4e3aac686940fe29521545afad9966ddfc80c" + }, { + "ImportPath": "github.com/vdemeester/shakers", + "Rev": "8fe734f75f3a70b651cbfbf8a55a009da09e8dc5" + }, { + "ImportPath": "golang.org/x/net/context", + "Rev": "d9558e5c97f85372afee28cf2b6059d7d3818919" + }, { + "ImportPath": "gopkg.in/alecthomas/kingpin.v2", + "Comment": "v2.0.12", + "Rev": "639879d6110b1b0409410c7b737ef0bb18325038" + }, { + "ImportPath": "gopkg.in/check.v1", + "Rev": "11d3bc7aa68e238947792f30573146a3231fc0f1" + }, { + "ImportPath": "gopkg.in/fsnotify.v1", + "Comment": "v1.2.0", + "Rev": "96c060f6a6b7e0d6f75fddd10efeaca3e5d1bcb0" + }, { + "ImportPath": "gopkg.in/mgo.v2/bson", + "Comment": "r2015.06.03-5-g22287ba", + "Rev": "22287bab4379e1fbf6002fb4eb769888f3fb224c" + }, { + "ImportPath": "gopkg.in/yaml.v2", + "Rev": "7ad95dd0798a40da1ccdff6dff35fd177b5edf40" + }] } diff --git a/README.md b/README.md index 8475987a7..d619bb613 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ___ Træfɪk is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. -It supports several backends ([Docker :whale:](https://www.docker.com/), [Mesos/Marathon](https://mesosphere.github.io/marathon/), [Consul](https://consul.io/), [Etcd](https://coreos.com/etcd/), Rest API, file...) to manage its configuration automatically and dynamically. +It supports several backends ([Docker :whale:](https://www.docker.com/), [Mesos/Marathon](https://mesosphere.github.io/marathon/), [Consul](https://consul.io/), [Etcd](https://coreos.com/etcd/), [Zookeeper](https://zookeeper.apache.org), [BoltDB](https://github.com/boltdb/bolt), Rest API, file...) to manage its configuration automatically and dynamically. # Features diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md deleted file mode 100644 index f672330a0..000000000 --- a/docs/ROADMAP.md +++ /dev/null @@ -1,35 +0,0 @@ -![Træfɪk](http://traefik.github.io/traefik.logo.svg "Træfɪk") -___ - -# Roadmap - -* Add traefik.protocol label -* Providers recovery -* tls client verification -* Default configuration values -* Retry with streams -* Licence -* Add traefik.indlude all/enabled policy -* Consul support -* README -* API enhancements -* Godoc - - -* Kubernetes support -* Etcd support -* Smart configuration diff - - -* ~~GraceTimeout~~ -* ~~Weights~~ -* ~~Filter traefik.enabled=false apps~~ -* ~~Filter no exposed port apps~~ -* ~~Logs~~ -* ~~SSL frontend support~~ -* ~~SSL backends support~~ -* ~~Static files with go-bindata~~ -* ~~Metrics~~ -* ~~Dockerfile~~ -* ~~Use Negroni middlewares for metrics, grace, logs~~ -* ~~Website~~ diff --git a/docs/index.md b/docs/index.md index 045f221cf..03bb16eb0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,6 +11,9 @@ ___ * [Docker backend](#docker) * [Mesos/Marathon backend](#marathon) * [Consul backend](#consul) +* [Etcd backend](#etcd) +* [Zookeeper backend](#zk) +* [Boltdb backend](#boltdb) * [Benchmarks](#benchmarks) @@ -257,106 +260,77 @@ $ curl -s "http://localhost:8080/health" | jq . * ```/api```: ```GET``` configuration for all providers ```sh -$ curl -s "http://localhost:8082/api" | jq . +$ curl -s "http://localhost:8080/api" | jq . { "file": { "Frontends": { - "frontend-traefik": { + "frontend2": { "Routes": { - "route-host-traefik": { - "Value": "traefik.docker.localhost", - "Rule": "Host" + "test_2": { + "Value": "/test", + "Rule": "Path" } }, - "Backend": "backend-test2" + "Backend": "backend1" }, - "frontend-test": { + "frontend1": { "Routes": { - "route-host-test": { - "Value": "test.docker.localhost", + "test_1": { + "Value": "test.localhost", "Rule": "Host" } }, - "Backend": "backend-test1" + "Backend": "backend2" } }, "Backends": { - "backend-test2": { + "backend2": { + "LoadBalancer": { + "Method": "drr" + }, + "CircuitBreaker": null, "Servers": { - "server-stoic_brattain": { - "Weight": 0, - "Url": "http://172.17.0.8:80" + "server2": { + "Weight": 2, + "URL": "http://172.17.0.5:80" }, - "server-jovial_khorana": { - "Weight": 0, - "Url": "http://172.17.0.12:80" - }, - "server-jovial_franklin": { - "Weight": 0, - "Url": "http://172.17.0.11:80" - }, - "server-elegant_panini": { - "Weight": 0, - "Url": "http://172.17.0.9:80" - }, - "server-adoring_elion": { - "Weight": 0, - "Url": "http://172.17.0.10:80" + "server1": { + "Weight": 1, + "URL": "http://172.17.0.4:80" } } }, - "backend-test1": { + "backend1": { + "LoadBalancer": { + "Method": "wrr" + }, + "CircuitBreaker": { + "Expression": "NetworkErrorRatio() > 0.5" + }, "Servers": { - "server-trusting_wozniak": { - "Weight": 0, - "Url": "http://172.17.0.5:80" + "server2": { + "Weight": 1, + "URL": "http://172.17.0.3:80" }, - "server-sharp_jang": { - "Weight": 0, - "Url": "http://172.17.0.7:80" - }, - "server-dreamy_feynman": { - "Weight": 0, - "Url": "http://172.17.0.6:80" + "server1": { + "Weight": 10, + "URL": "http://172.17.0.2:80" } } } } - }, - "marathon": { - "Frontends": { - "frontend-marathon": { - "Routes": { - "route-host-marathon": { - "Value": "marathon.docker.localhost", - "Rule": "Host" - } - }, - "Backend": "backend-marathon" - }, - }, - "Backends": { - "backend-marathon": { - "Servers": { - "server-marathon-1": { - "Weight": 0, - "Url": "http://172.17.0.8:802" - }, - }, - }, - }, - }, + } } - ``` -* ```/api/{provider}```: ```GET``` or ```PUT``` provider -* ```/api/{provider}/backends```: ```GET``` backends -* ```/api/{provider}/backends/{backend}```: ```GET``` a backend -* ```/api/{provider}/backends/{backend}/servers```: ```GET``` servers in a backend -* ```/api/{provider}/backends/{backend}/servers/{server}```: ```GET``` a server in a backend -* ```/api/{provider}/frontends```: ```GET``` frontends -* ```/api/{provider}/frontends/{frontend}```: ```GET``` a frontend +* ```/api/providers```: ```GET``` providers +* ```/api/providers/{provider}```: ```GET``` or ```PUT``` provider +* ```/api/providers/{provider}/backends```: ```GET``` backends +* ```/api/providers/{provider}/backends/{backend}```: ```GET``` a backend +* ```/api/providers/{provider}/backends/{backend}/servers```: ```GET``` servers in a backend +* ```/api/providers/{provider}/backends/{backend}/servers/{server}```: ```GET``` a server in a backend +* ```/api/providers/{provider}/frontends```: ```GET``` frontends +* ```/api/providers/{provider}/frontends/{frontend}```: ```GET``` a frontend ## Docker backend @@ -508,6 +482,126 @@ prefix = "traefik" # filename = "consul.tmpl" ``` +## Etcd backend + +Træfɪk can be configured to use Etcd as a backend configuration: + +```toml +################################################################ +# Etcd configuration backend +################################################################ + +# Enable Etcd configuration backend +# +# Optional +# +# [etcd] + +# Etcd server endpoint +# +# Required +# +# endpoint = "127.0.0.1:4001" + +# Enable watch Etcd changes +# +# Optional +# +# watch = true + +# Prefix used for KV store. +# +# Optional +# +# prefix = "/traefik" + +# Override default configuration template. For advanced users :) +# +# Optional +# +# filename = "etcd.tmpl" +``` + +## Zookeeper backend + +Træfɪk can be configured to use Zookeeper as a backend configuration: + +```toml +################################################################ +# Zookeeper configuration backend +################################################################ + +# Enable Zookeeperconfiguration backend +# +# Optional +# +# [zookeeper] + +# Zookeeper server endpoint +# +# Required +# +# endpoint = "127.0.0.1:2181" + +# Enable watch Zookeeper changes +# +# Optional +# +# watch = true + +# Prefix used for KV store. +# +# Optional +# +# prefix = "/traefik" + +# Override default configuration template. For advanced users :) +# +# Optional +# +# filename = "zookeeper.tmpl" +``` + +## BoltDB backend + +Træfɪk can be configured to use BoltDB as a backend configuration: + +```toml +################################################################ +# BoltDB configuration backend +################################################################ + +# Enable BoltDB configuration backend +# +# Optional +# +# [boltdb] + +# BoltDB file +# +# Required +# +# endpoint = "/my.db" + +# Enable watch BoltDB changes +# +# Optional +# +# watch = true + +# Prefix used for KV store. +# +# Optional +# +# prefix = "/traefik" + +# Override default configuration template. For advanced users :) +# +# Optional +# +# filename = "boltdb.tmpl" +``` + ## Benchmarks diff --git a/traefik.sample.toml b/traefik.sample.toml index 5194b1c8c..51d452609 100644 --- a/traefik.sample.toml +++ b/traefik.sample.toml @@ -147,7 +147,7 @@ # # endpoint = "http://127.0.0.1:8080" -# Network interface used to call Marathon web services +# Network interface used to call Marathon web services. Needed in case of multiple network interfaces. # Optional # Default: "eth0" # @@ -208,6 +208,112 @@ # filename = "consul.tmpl" +################################################################ +# Etcd configuration backend +################################################################ + +# Enable Etcd configuration backend +# +# Optional +# +# [etcd] + +# Etcd server endpoint +# +# Required +# +# endpoint = "127.0.0.1:4001" + +# Enable watch Etcd changes +# +# Optional +# +# watch = true + +# Prefix used for KV store. +# +# Optional +# +# prefix = "/traefik" + +# Override default configuration template. For advanced users :) +# +# Optional +# +# filename = "etcd.tmpl" + + +################################################################ +# Zookeeper configuration backend +################################################################ + +# Enable Zookeeperconfiguration backend +# +# Optional +# +# [zookeeper] + +# Zookeeper server endpoint +# +# Required +# +# endpoint = "127.0.0.1:2181" + +# Enable watch Zookeeper changes +# +# Optional +# +# watch = true + +# Prefix used for KV store. +# +# Optional +# +# prefix = "/traefik" + +# Override default configuration template. For advanced users :) +# +# Optional +# +# filename = "zookeeper.tmpl" + + +################################################################ +# BoltDB configuration backend +################################################################ + +# Enable BoltDB configuration backend +# +# Optional +# +# [boltdb] + +# BoltDB file +# +# Required +# +# endpoint = "/my.db" + +# Enable watch BoltDB changes +# +# Optional +# +# watch = true + +# Prefix used for KV store. +# +# Optional +# +# prefix = "/traefik" + +# Override default configuration template. For advanced users :) +# +# Optional +# +# filename = "boltdb.tmpl" + + + ################################################################ # Sample rules diff --git a/web.go b/web.go index f5a0d26c7..185542535 100644 --- a/web.go +++ b/web.go @@ -27,8 +27,8 @@ func (provider *WebProvider) Provide(configurationChan chan<- configMessage) err systemRouter.Methods("GET").Path("/health").Handler(http.HandlerFunc(GetHealthHandler)) systemRouter.Methods("GET").Path("/api").Handler(http.HandlerFunc(GetConfigHandler)) systemRouter.Methods("GET").Path("/api/providers").Handler(http.HandlerFunc(GetProvidersHandler)) - systemRouter.Methods("GET").Path("/api/{provider}").Handler(http.HandlerFunc(GetConfigHandler)) - systemRouter.Methods("PUT").Path("/api/{provider}").Handler(http.HandlerFunc( + systemRouter.Methods("GET").Path("/api/providers/{provider}").Handler(http.HandlerFunc(GetConfigHandler)) + systemRouter.Methods("PUT").Path("/api/providers/{provider}").Handler(http.HandlerFunc( func(rw http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) if vars["provider"] != "web" { @@ -48,12 +48,12 @@ func (provider *WebProvider) Provide(configurationChan chan<- configMessage) err http.Error(rw, fmt.Sprintf("%+v", err), http.StatusBadRequest) } })) - systemRouter.Methods("GET").Path("/api/{provider}/backends").Handler(http.HandlerFunc(GetBackendsHandler)) - systemRouter.Methods("GET").Path("/api/{provider}/backends/{backend}").Handler(http.HandlerFunc(GetBackendHandler)) - systemRouter.Methods("GET").Path("/api/{provider}/backends/{backend}/servers").Handler(http.HandlerFunc(GetServersHandler)) - systemRouter.Methods("GET").Path("/api/{provider}/backends/{backend}/servers/{server}").Handler(http.HandlerFunc(GetServerHandler)) - systemRouter.Methods("GET").Path("/api/{provider}/frontends").Handler(http.HandlerFunc(GetFrontendsHandler)) - systemRouter.Methods("GET").Path("/api/{provider}/frontends/{frontend}").Handler(http.HandlerFunc(GetFrontendHandler)) + systemRouter.Methods("GET").Path("/api/providers/{provider}/backends").Handler(http.HandlerFunc(GetBackendsHandler)) + systemRouter.Methods("GET").Path("/api/providers/{provider}/backends/{backend}").Handler(http.HandlerFunc(GetBackendHandler)) + systemRouter.Methods("GET").Path("/api/providers/{provider}/backends/{backend}/servers").Handler(http.HandlerFunc(GetServersHandler)) + systemRouter.Methods("GET").Path("/api/providers/{provider}/backends/{backend}/servers/{server}").Handler(http.HandlerFunc(GetServerHandler)) + systemRouter.Methods("GET").Path("/api/providers/{provider}/frontends").Handler(http.HandlerFunc(GetFrontendsHandler)) + systemRouter.Methods("GET").Path("/api/providers/{provider}/frontends/{frontend}").Handler(http.HandlerFunc(GetFrontendHandler)) systemRouter.Methods("GET").PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(&assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, Prefix: "static"}))) go func() {