From a6955ecf59dafc44ac2eb4b2fcd7b079fc7d4964 Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Mon, 20 Nov 2017 15:26:03 +0100 Subject: [PATCH] Vendor generated file from template --- .gitignore | 6 +- CONTRIBUTING.md | 7 + Makefile | 2 +- api/dashboard.go | 5 +- autogen/gentemplates/gen.go | 444 ++++++++++++++++++++++++++++++++++++ generate.go | 6 +- provider/provider.go | 4 +- script/binary | 2 +- script/crossbinary-default | 2 +- script/crossbinary-others | 2 +- script/test-unit | 2 +- script/validate-autogen | 31 +++ script/validate-gofmt | 2 +- 13 files changed, 499 insertions(+), 16 deletions(-) create mode 100644 autogen/gentemplates/gen.go create mode 100644 script/validate-autogen diff --git a/.gitignore b/.gitignore index 0feb820a1..243850797 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ /dist -/autogen/gen.go -.idea -.intellij +/autogen/genstatic/gen.go +.idea/ +.intellij/ *.iml /traefik /traefik.toml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a16e0ee26..463f93338 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -66,6 +66,9 @@ cd ~/go/src/github.com/containous/traefik go get github.com/jteeuwen/go-bindata/... # Start build + +# generate +# (required to merge non-code components into the final binary, such as the web dashboard and provider's Go templates) go generate # Standard go build @@ -75,6 +78,10 @@ go build ./cmd/traefik You will find the Træfik executable in the `~/go/src/github.com/containous/traefik` folder as `traefik`. +### Updating the templates + +If you happen to update the provider templates (in `/templates`), you need to run `go generate` to update the `autogen` package. + ### Setting up `glide` and `glide-vc` for dependency management - Glide is not required for building; however, it is necessary to modify dependencies (i.e., add, update, or remove third-party packages) diff --git a/Makefile b/Makefile index 8a8835e76..967a9e175 100644 --- a/Makefile +++ b/Makefile @@ -74,7 +74,7 @@ test-integration: build ## run the integration tests TEST_HOST=1 ./script/make.sh test-integration validate: build ## validate gofmt, golint and go vet - $(DOCKER_RUN_TRAEFIK) ./script/make.sh validate-glide validate-gofmt validate-govet validate-golint validate-misspell validate-vendor + $(DOCKER_RUN_TRAEFIK) ./script/make.sh validate-glide validate-gofmt validate-govet validate-golint validate-misspell validate-vendor validate-autogen build: dist docker build $(DOCKER_BUILD_ARGS) -t "$(TRAEFIK_DEV_IMAGE)" -f build.Dockerfile . diff --git a/api/dashboard.go b/api/dashboard.go index 80dc9309e..64717b7dc 100644 --- a/api/dashboard.go +++ b/api/dashboard.go @@ -4,7 +4,7 @@ import ( "net/http" "github.com/containous/mux" - "github.com/containous/traefik/autogen" + "github.com/containous/traefik/autogen/genstatic" "github.com/elazarl/go-bindata-assetfs" ) @@ -18,6 +18,5 @@ func (g DashboardHandler) AddRoutes(router *mux.Router) { http.Redirect(response, request, "/dashboard/", 302) }) router.Methods(http.MethodGet).PathPrefix("/dashboard/"). - Handler(http.StripPrefix("/dashboard/", http.FileServer(&assetfs.AssetFS{Asset: autogen.Asset, AssetInfo: autogen.AssetInfo, AssetDir: autogen.AssetDir, Prefix: "static"}))) - + Handler(http.StripPrefix("/dashboard/", http.FileServer(&assetfs.AssetFS{Asset: genstatic.Asset, AssetInfo: genstatic.AssetInfo, AssetDir: genstatic.AssetDir, Prefix: "static"}))) } diff --git a/autogen/gentemplates/gen.go b/autogen/gentemplates/gen.go new file mode 100644 index 000000000..940fec7db --- /dev/null +++ b/autogen/gentemplates/gen.go @@ -0,0 +1,444 @@ +// Code generated by go-bindata. +// sources: +// templates/consul_catalog.tmpl +// templates/docker.tmpl +// templates/ecs.tmpl +// templates/eureka.tmpl +// templates/kubernetes.tmpl +// templates/kv.tmpl +// templates/marathon.tmpl +// templates/mesos.tmpl +// templates/notFound.tmpl +// templates/rancher.tmpl +// DO NOT EDIT! + +package gentemplates + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strings" + "time" +) + +func bindataRead(data []byte, name string) ([]byte, error) { + gz, err := gzip.NewReader(bytes.NewBuffer(data)) + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + + var buf bytes.Buffer + _, err = io.Copy(&buf, gz) + clErr := gz.Close() + + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + if clErr != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +type asset struct { + bytes []byte + info os.FileInfo +} + +type bindataFileInfo struct { + name string + size int64 + mode os.FileMode + modTime time.Time +} + +func (fi bindataFileInfo) Name() string { + return fi.name +} +func (fi bindataFileInfo) Size() int64 { + return fi.size +} +func (fi bindataFileInfo) Mode() os.FileMode { + return fi.mode +} +func (fi bindataFileInfo) ModTime() time.Time { + return fi.modTime +} +func (fi bindataFileInfo) IsDir() bool { + return false +} +func (fi bindataFileInfo) Sys() interface{} { + return nil +} + +var _templatesConsul_catalogTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x4d\x4f\xdc\x30\x10\xbd\xe7\x57\x8c\xac\x3d\x82\xe1\x8c\xb4\x07\xa8\x5a\x71\x68\x11\x2a\xbd\xa1\x3d\x78\x93\x61\x63\xed\xae\x1d\x8d\x27\xb0\x28\xf2\x7f\xaf\x12\xdb\xf9\x22\x6c\xe9\x29\xb1\xfd\xe6\xbd\x99\x79\x63\x3f\x6f\x55\xbe\x47\x53\xb8\x4d\xd6\x34\xa4\xcc\x0e\x61\xa5\x4d\x81\xa7\x0b\x58\x19\x5b\x20\xdc\xac\x41\x3e\xd8\x02\x9d\xf7\x19\x40\x0f\x97\x22\xfe\x5d\x36\xcd\x0e\xf9\x2e\x2c\x42\x8c\xf7\x42\x3a\xa4\x57\x24\x27\xc5\xf8\xf8\x41\x1d\x31\xd2\x06\x11\xef\xc5\x26\x03\x00\xa8\xe9\x00\x6b\x08\xe0\x5b\x66\xd2\xdb\x9a\x11\x44\x45\x96\x6d\x6e\x0f\x22\x44\xc9\x27\xa4\x57\x9d\xa3\xfc\xa3\x76\x0e\x44\xc9\x5c\x09\xef\x6f\xae\xae\xc6\x22\xb7\x45\x41\xe8\x5c\x4a\xe5\xa6\x69\xa6\xb1\x8f\x96\xd8\x7b\xd1\xc9\x36\xcd\xea\x0d\xf5\xae\xe4\xb6\xcc\xa9\x74\x2c\x4f\x86\xf3\xe5\x04\xae\x45\xd7\x94\x96\xe7\x4d\x73\x09\x91\x2c\x6e\x02\x44\xee\xf5\xa0\xd3\xe3\xd1\x14\xde\x67\xe9\xdb\xf7\x3e\x09\x84\x6e\x37\xcd\xca\x85\x75\x67\x43\x3c\x6b\xbb\x98\x8e\x73\x4d\x79\xad\xf9\x8e\x50\xed\x91\x3e\xaf\x22\xe2\xb6\x01\x27\x40\xf6\x18\x07\x42\x44\xb6\x50\xc3\x94\xf2\x73\xd7\x53\x6a\xad\xdb\x53\xfa\x60\x29\x9e\xaa\xd6\x07\x6d\x4d\x70\xf6\x03\xb1\xc8\x86\x46\x7c\x45\xe4\x60\x55\xb1\x55\x07\x65\xf2\x24\x71\x44\x2e\x6d\xb1\x34\x38\xa9\xee\x71\xcc\xac\xea\x37\x22\x91\xe6\xc0\xb1\xce\xf7\xef\x9d\x51\x3b\xe4\xa7\xb0\x1a\xa1\x7b\xdb\xf4\x0b\x94\xca\x75\x00\x6d\xd0\xb9\x9f\x6a\x8b\x87\x05\xe4\x7f\x15\x23\x5d\xcf\xb7\x89\x93\x93\x5b\xbb\xd7\x9d\xd3\x7d\x75\x83\xe8\xb7\xe1\x70\xa2\x2c\x26\xb3\x95\x0d\xf9\xfe\x52\xa7\xdc\x1a\x33\xaa\x7e\x9e\xf1\x3f\xf3\x3d\x06\x8a\x90\x9f\x3a\xda\xda\x70\x6a\xd7\x42\xdb\x23\x5a\x06\xe0\x7c\xdc\x20\x36\x09\x4f\x4c\x2a\x67\x4b\x2f\xb5\xc9\xcf\xb9\x98\xe8\x26\x01\x0b\xac\x93\x89\xea\x7f\x9e\x5f\xc8\x1a\x9e\xbe\x71\xd3\x7b\x36\x20\xa4\x48\xbf\x97\x4d\x33\xbd\x70\xdd\x4b\x15\x33\x6a\x93\x1d\xfa\x34\xc3\x65\x00\x95\x72\xee\xde\x3a\xbe\x47\x55\x20\x2d\x34\x2a\xa9\xc8\x29\x72\x56\x13\x53\x8d\xe1\x72\x56\xa4\x2d\x69\x7e\x3f\x4b\x15\x31\x33\x92\xeb\x74\xbd\x57\x68\x98\xde\x1f\xad\x36\xec\x3e\xbe\x14\x3d\x4d\x87\xaa\x3a\xd4\xd9\x77\x62\xc4\x96\xfc\x1c\x22\x61\x0d\xcf\xa9\xd7\x3b\xe4\xef\x23\xe5\x85\x40\x68\xad\x97\xde\x8b\x8b\xf1\x04\x6f\x46\x6e\xb6\x9d\x77\x3a\xbf\xad\xb9\x9c\x51\xdf\xf5\xfb\xf3\x99\x1e\x71\x8e\x18\xbf\xe6\xb5\x24\xdb\xf2\x48\xd1\x7d\x2f\x4b\xeb\x78\x79\x20\x00\xa8\x3e\x0c\x97\xf4\x47\x64\xfc\xdd\x6e\xb6\xea\xfd\x18\xfe\x0d\x00\x00\xff\xff\xe6\x0d\x7f\xe8\x69\x07\x00\x00") + +func templatesConsul_catalogTmplBytes() ([]byte, error) { + return bindataRead( + _templatesConsul_catalogTmpl, + "templates/consul_catalog.tmpl", + ) +} + +func templatesConsul_catalogTmpl() (*asset, error) { + bytes, err := templatesConsul_catalogTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/consul_catalog.tmpl", size: 1897, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesDockerTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\x4d\x6f\xc2\x38\x10\xbd\xf3\x2b\x46\x11\x47\x48\xf7\x8c\xc4\xa1\x54\xad\x5a\xa9\x5d\x21\x7a\xd8\x43\xc5\xc1\x38\xd3\x62\x11\x6c\xd6\x76\x5a\xaa\x6c\xfe\xfb\x2a\xf1\x47\x12\x37\x09\x59\xd4\xcb\x9e\x48\x3c\x33\xcf\x6f\x3e\xde\x84\x3c\x9f\xee\x08\x3d\x20\x4f\x5e\x51\x7e\xa2\x54\xb0\x58\x42\x6c\x9f\x8b\x62\xf2\x66\xad\x6a\x9b\xe7\x92\xf0\x0f\x04\xe7\xff\x27\x39\xe2\xcc\xbf\x55\x61\x2b\xeb\x5b\x14\x13\x00\x80\x3c\x67\xef\xb0\x27\xea\x8e\x49\x9a\x31\xbd\x92\x48\x0e\x28\x9f\xc9\x0e\x53\x1f\x67\x5d\xfd\x35\xb1\x7d\x98\xd7\xc4\xca\x8b\x8a\x22\xa6\x06\x65\x67\x50\xb6\x55\x18\x00\x9e\x4f\x12\x95\x62\x82\xc3\x12\xa2\x3c\xff\x40\xdd\xbe\xee\xbe\x76\xa8\xef\x8c\x2c\x3f\x43\xa0\x45\xf6\x59\x90\x64\x45\x52\xc2\xe9\xf5\x54\x53\x41\x92\x9d\xc5\x70\x44\x8f\xa8\xf7\x22\xf1\x24\x9b\xd7\xbc\x18\x53\x48\x0f\x40\x69\x46\x0f\xdf\xb0\x84\x2a\xe4\xd5\xbc\x05\x74\x6a\xe6\x95\x9d\x71\x54\xaa\x93\xf7\x68\xe6\x8e\x56\xac\x3c\xa0\x4b\x02\x80\x0a\x71\x60\x58\x7a\xfb\x54\xea\x7b\xef\x6a\xe3\xcf\x64\x5c\xb5\x7b\x2b\xff\x42\xce\x77\x82\xf3\x8a\xbc\xba\xa2\xea\x47\x72\xa6\x82\x73\xc7\x95\x1c\x45\xc6\xb5\x2b\x9e\x05\xbf\x35\x87\x3f\x4a\x83\x67\x2d\x09\xd5\x42\xbe\x67\x9c\xfa\xcc\x6c\xd0\xbd\x33\x3e\x94\xc6\x0b\x53\x34\x55\xb5\x8e\x18\x4f\xf0\x0c\xa1\xc0\xda\xb4\x6d\x98\xd5\x96\x09\xb6\xd2\x32\x2f\x25\x90\x03\x0d\x84\x55\x22\x32\x8a\xca\xd9\x1b\x23\x51\x9d\x54\xb6\xc5\x12\xca\x26\x99\xd7\x12\xb9\xcb\xbd\x71\x3d\xa3\xf8\x54\xf2\x9e\xf9\xd7\xaa\xa1\x8e\x45\x89\x39\x38\x51\xf5\x65\x76\x1d\xf8\x44\x9a\x78\x45\x11\xdb\x9c\x62\x7b\x3a\xf7\xb5\x33\x76\xd7\xc7\x4c\xa6\xf5\xa8\x19\xd7\xb5\x14\x5a\x50\x91\xf6\x20\x2f\x6e\x6e\x2a\xef\xa7\xf5\x6d\x92\x94\xe2\xaf\x13\x5e\xb4\x60\x84\xd4\x3d\x10\x6e\x68\xbf\x90\x7d\xec\xfd\x10\xd9\xb8\xbf\xcc\x61\x77\x64\xf7\xb4\xa7\x0a\xff\x8b\x0c\x9b\xa5\x41\x59\x57\x26\xae\x5a\xf1\x0f\x48\x3c\xa5\x84\x22\x44\x37\x11\x44\x51\xf3\x20\x8e\x20\x9a\x47\xdd\xd5\x0b\xcb\x36\xa2\x52\xcd\x12\xf5\x55\xa5\x5d\x8e\x40\xe1\x2d\x85\xf8\x87\xb7\x77\x29\xb8\x6e\x7f\x56\xdc\xd1\x0c\xa6\x54\x70\x4d\x18\x77\x5f\xa3\x07\xe7\x5c\xe1\xe5\x79\x6d\x6f\x88\xac\x11\xf3\x87\xf5\x0b\x45\xe2\x5d\x1c\xce\xa0\x46\x42\xef\x2b\x24\x52\xa7\x19\x47\xee\xb1\x5b\x21\x75\x46\xc1\x1c\x96\x7d\x74\x9f\xd8\x25\x44\x83\x32\xeb\x05\x99\x00\x9c\x88\x52\x8f\x42\xe9\x47\x24\x09\xca\x60\xa0\xd7\x6d\x63\x2f\xd0\x04\x40\x62\xc2\x24\xd2\xb2\xf9\x6d\x4d\x6e\x9c\x61\x90\x46\xd5\x94\x72\x66\xf6\x4c\x63\xca\x94\x7e\x15\x99\xa4\xb8\x31\xb5\x6d\x97\x1c\xe0\xab\xcb\x6b\x09\x6f\xae\x19\xa3\x81\x2a\xae\x71\x51\x44\xb3\xe6\x40\x6e\x27\xcd\x39\x3d\x49\x26\x24\xd3\xdf\x61\x6d\xdc\xf1\x50\x55\x90\x6b\xf9\xbd\x16\x8c\x6b\x15\xf0\xb3\x28\xf7\x0d\x87\x21\xa0\x16\xd1\x06\xcd\x1d\x51\x8c\xde\x66\x7a\xdf\x0d\xbf\xf2\xe6\x6b\xc0\x7f\x65\x50\x63\x29\x32\x8d\x2a\x8e\x82\x75\xee\xc4\x31\x66\x69\x45\x86\x8d\xcc\x52\x0c\x57\xbe\xdb\x01\x9b\xd2\x76\x61\xc4\x5c\x47\x1b\x7b\xb7\x27\x41\xbf\x74\x2e\x28\xed\x67\xfa\x43\xaa\xea\x95\x53\xa8\x20\x93\x61\x87\x72\xfe\x77\x62\xe9\x50\xc9\x05\x61\x74\x2b\xe2\x2a\x11\x74\x4d\xff\x20\x90\xfb\x34\x6c\xf0\xef\x0c\x5d\x9f\x3a\x68\x8c\x98\x9a\x78\x6f\x82\x63\x9a\x29\x2d\x8e\xd2\x20\xda\xc3\x6d\xfb\xcf\xdd\x61\x06\xd3\x4f\xfb\xad\xb9\x74\x75\x9e\x4f\x0f\x45\x61\x66\x64\xfa\x19\xfe\xd7\x6c\x3f\xb9\x64\xd4\x49\x70\x85\xbf\x9a\x8d\x81\x1c\x93\xce\x85\xcb\xc7\xe7\x33\x8e\xa8\xdb\x36\xd5\xef\x7c\x40\xd2\xc1\x3a\xe9\xd9\x23\xed\xd5\xe1\x7e\xff\x0d\x00\x00\xff\xff\x7c\x89\x04\xc2\x1d\x0f\x00\x00") + +func templatesDockerTmplBytes() ([]byte, error) { + return bindataRead( + _templatesDockerTmpl, + "templates/docker.tmpl", + ) +} + +func templatesDockerTmpl() (*asset, error) { + bytes, err := templatesDockerTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/docker.tmpl", size: 3869, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesEcsTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x53\x4d\x6f\xdb\x30\x0c\xbd\xe7\x57\x10\x46\x8e\xad\x7a\x2f\x90\xc3\xba\x0f\x74\x40\x37\x04\xeb\x61\x87\xa0\x07\xc5\x66\x6c\x21\xae\x54\x88\xf4\xb6\x40\xd0\x7f\x1f\x64\x49\x96\xbd\x64\x40\xb6\x93\x25\xf2\x3d\x8a\xef\x91\xde\xed\x65\x7d\x44\xdd\xd0\x8b\x73\x56\xea\x16\x61\x4d\x68\x7f\xa8\x1a\xbf\xca\x57\xbc\x81\xb5\xd2\xc4\x52\xd7\x48\x70\xbf\x01\xf1\x1c\x73\xe4\xfd\x0a\x60\xe2\x8a\x74\xb8\x75\x6e\x41\x07\xef\x45\x6f\x64\xb3\x97\x7d\x28\x61\x5f\x56\x00\x00\xaf\xc8\x9d\x69\x60\x03\x95\x73\xd0\x22\x3f\x19\xd9\x3c\x24\xc4\x97\x98\x2b\xaf\x7a\x5f\x8d\x24\x62\x55\x1f\x4f\xb0\x81\x73\xce\x73\x4c\xcd\x39\x23\xc5\x39\x75\x80\x4e\xd2\x98\x57\x1a\x89\x9e\xe4\x1e\xfb\x05\x10\x46\xe4\x3f\x0b\x11\x34\xd5\x8c\x9a\x00\x6a\x63\x8e\x2a\x82\x47\x65\x2d\x72\x79\xf8\x7d\x49\x9e\x4b\x73\x0e\x75\xe3\xfd\x6a\x15\x8e\x69\x06\x4a\x37\xf8\x2b\xb8\x1f\x5c\x3f\x53\x76\xb9\x5f\x25\x72\xab\xa1\x73\xb4\x94\xbe\xcb\x64\xbc\x7c\xfe\x00\xde\xe7\xd6\x07\xdb\x97\x69\x6c\xad\x61\x53\x9b\x60\x13\x78\x7f\x7f\x77\x17\xc3\x8f\x86\x38\x85\x12\xce\xd8\x14\xa8\x52\x99\x9f\xa8\xda\x8e\xa7\x11\x7d\x8f\xd7\xb5\x1a\x9b\xce\x22\x27\xb1\xbb\x83\x35\x9a\xff\x73\xf3\x32\xe3\xa0\x7a\x46\xfb\x29\x57\xba\xe0\xd4\xf4\x8a\xc8\xa7\x0b\xb3\xcd\x46\x24\x37\x83\x19\x7f\x5f\x84\x2c\xf7\x4d\x12\x05\x57\x1e\x51\x36\x68\x27\xd9\xdb\x65\x58\xa4\x46\x00\xde\xac\x32\x56\x71\xd9\xe1\x6d\x0e\x14\x0c\x6a\xb6\xa7\xad\x51\x9a\x09\x36\xb0\xcb\x32\x03\xfa\xe3\x2c\x55\x08\x95\x73\xc2\xfb\xea\x66\xbe\x48\x45\x0d\xa9\xfa\xdd\xc0\xdd\xbc\x54\x8b\xfc\x30\xc5\xaf\xa9\x73\x9d\x83\xc2\x9a\x81\x91\xe2\xe7\xf6\x0a\xab\xed\xd0\x97\x1f\x25\x0f\xf0\x5b\x08\x8a\x68\xf1\x1f\x0b\xf3\x3b\x00\x00\xff\xff\x86\x8c\x3e\xf5\xa8\x04\x00\x00") + +func templatesEcsTmplBytes() ([]byte, error) { + return bindataRead( + _templatesEcsTmpl, + "templates/ecs.tmpl", + ) +} + +func templatesEcsTmpl() (*asset, error) { + bytes, err := templatesEcsTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/ecs.tmpl", size: 1192, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesEurekaTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x50\x3d\x6b\xf4\x30\x0c\xde\xf3\x2b\x44\x78\xd7\xf3\xed\x07\x19\x0e\xde\xa1\xb7\x94\xdb\x3a\x84\x1b\xdc\x44\x4d\x42\x53\xcb\xc8\x4a\x8f\xa2\xfa\xbf\x17\xc7\x4e\x0a\x85\xd2\x49\x96\x9f\x0f\xe9\x51\xfb\x6c\xbb\x57\x74\x7d\xb8\xa9\xb2\x75\x03\x82\x39\x7b\x3f\x4f\x9d\x95\x89\x5c\x88\xb1\x02\x00\x50\x85\x7f\xd6\x7b\x38\x35\x60\xf6\xaf\x42\xbf\xb8\x20\xd6\x75\xb8\x71\x77\x47\x53\x1e\xaa\x49\x6b\x1e\xed\x1b\xc6\x68\x02\xf2\x3b\x72\x28\xf5\xa0\x0a\x03\xca\xe6\x71\xf9\x0f\x06\x62\xbc\xad\x46\x0b\xcf\xd0\x40\x9d\x19\x57\x26\xa1\x8e\xe6\x15\x3f\x1d\x8f\xaa\x60\x2e\xfe\xdc\xf7\x9c\xfa\xc2\x21\x96\x15\xaf\x57\xfd\x1d\xa7\x61\x14\x68\x20\xa3\x4f\xb9\x4d\x78\xa5\x8a\xae\x8f\xb1\x94\xaa\x6a\x5f\x98\x9c\xfc\x71\x86\x6f\x92\xd9\x5e\xaa\x25\x56\xde\xb8\x04\x4e\x5b\xef\xd9\x0b\x21\xaf\x84\x4e\xf8\xe3\x4a\x93\x93\x00\x0d\xb4\xf5\x28\xe2\xeb\xac\xfd\xdd\x1d\x62\x34\x4c\x8b\x60\xc8\xe5\x30\x52\x90\x1f\x93\x01\x78\x99\x31\x0d\x7e\xa0\x20\xe9\x1e\x59\xfa\x09\x42\x33\xdd\x91\xd7\xab\x6c\x79\xbf\x02\x00\x00\xff\xff\xd4\x1f\xc4\xc5\xf5\x01\x00\x00") + +func templatesEurekaTmplBytes() ([]byte, error) { + return bindataRead( + _templatesEurekaTmpl, + "templates/eureka.tmpl", + ) +} + +func templatesEurekaTmpl() (*asset, error) { + bytes, err := templatesEurekaTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/eureka.tmpl", size: 501, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesKubernetesTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\xcb\x6e\xdb\x30\x10\xbc\xfb\x2b\x16\x42\x8f\x01\x3f\xa0\x80\x0e\x75\xd0\x22\x87\xb4\x28\x6c\x14\x39\x18\x39\xd0\xd4\x26\x26\xac\x88\xc6\x92\x6a\x1a\x10\xfc\xf7\x42\x7c\x2c\x65\xd5\x70\x7d\x92\xb9\x3b\x33\x3b\x2b\x0d\xbd\xdb\x4b\x75\xc4\xa1\xb3\xcf\xde\x93\x1c\x5e\x11\x3e\xe5\xca\x0f\xf9\x86\x77\x7c\x82\xcf\x2d\x88\x75\xc6\x86\xb0\x02\x00\x60\xae\x68\xbc\x9f\xd3\x42\x68\x9e\x23\xc2\x7b\xfd\xc2\x12\xe2\x5e\x93\x1a\xb5\x5b\x13\xca\x23\xd2\x0d\x22\x42\x25\xc6\x3e\x31\x92\x26\x00\xfe\x39\x11\x5a\xab\xcd\x00\x2d\xcc\x58\x8b\x01\xe2\x2b\xe3\x42\x68\xb2\x1f\x1c\xba\x5b\x06\xf7\x46\x76\x7b\xd9\xcb\x41\xd5\xb1\x6f\xe8\x0e\xa6\x5b\x8c\x7c\x34\xb2\x5b\x67\xa0\xf8\x1e\x11\x65\xd8\x72\xfd\x33\xe8\xd6\x69\x75\xfc\xc8\x56\x00\x6c\x3c\x42\x0b\x8e\x46\x64\x76\x35\xfb\x7f\x2d\x3d\xa0\xb5\x8c\xbe\x79\x39\x61\x99\x5c\xf6\x04\x50\xc6\x1c\x35\x4e\xf0\x6b\xdb\xd6\xb1\xe2\x9e\x09\xf3\xe5\xab\x7d\xce\x96\x45\xfa\x8d\x94\xa3\x95\x0e\x53\xb2\x78\xc0\x36\x96\x6e\x09\x98\x48\xec\xd4\xaa\xb2\x1c\xbd\x91\xfa\x6c\x3e\x35\xc5\xaf\xcd\x63\x31\xf7\x8e\xfa\xf5\xe0\xa0\x85\xda\x7d\x8a\x25\xb6\x9b\xac\x97\xe7\x6a\xf7\x42\x66\x70\xe7\xd7\xa4\x94\xf2\x32\xe5\x18\x2f\xca\xb7\x02\x8f\x82\x95\x1d\xcd\xce\x89\xd9\x6e\xb9\x64\xc9\x70\x01\x94\xfb\x96\x6c\x9f\x48\x1b\xd2\xee\x23\xd9\x66\xcc\xcf\x5c\x8e\x93\x4e\xd2\xda\x07\x63\xdd\x03\xca\x0e\x69\x89\x3c\x6b\x46\x3c\x61\xa7\x09\xd5\xf4\x2a\xce\x27\x6f\x72\x23\x8d\xde\x4b\xab\xd5\x97\xd1\x1d\xa0\x85\xdd\x3f\x2f\x40\xac\x4b\x9b\xe3\xd7\x78\x2f\x42\x68\xee\x56\xfc\x2e\xa7\x2d\xdf\x0f\xda\x61\xaf\xad\xdb\x9a\x91\x14\x6e\xa2\xcc\x45\xc5\xa7\x0b\xc8\x2c\x7e\x59\x7a\x16\x31\x32\xa3\xc3\xfc\x51\xe2\xef\x18\xb0\xba\xd9\x54\xe2\x80\x5d\xfd\x32\x22\xd2\x53\x8b\x55\x39\x60\x34\xf6\xe5\x7a\xc4\xa6\xd8\x8c\x3d\x2e\xff\x68\xca\xf3\x6f\x00\x00\x00\xff\xff\x47\x52\x4d\xb3\x67\x05\x00\x00") + +func templatesKubernetesTmplBytes() ([]byte, error) { + return bindataRead( + _templatesKubernetesTmpl, + "templates/kubernetes.tmpl", + ) +} + +func templatesKubernetesTmpl() (*asset, error) { + bytes, err := templatesKubernetesTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/kubernetes.tmpl", size: 1383, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesKvTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\xc1\x6e\x1b\x21\x10\xbd\xfb\x2b\x46\x28\xc7\x6a\x37\x52\x6f\x95\x7c\x68\xa2\xb6\x39\x44\x55\xa4\x1c\xa3\x1c\xf0\x7a\x9c\x45\x5e\x83\x05\x6c\xe2\x08\xf1\xef\x15\x0c\xb0\xec\xda\x91\xeb\x1b\xf3\xde\xcc\xbc\x79\xb0\x63\xe7\x6e\x76\x5a\x49\x8b\x72\x6b\xe0\xc7\x1a\x1e\x85\xb1\xd0\x3c\x69\xdc\x89\x13\xb0\xb6\x60\x2d\x03\xef\x57\xce\xdd\x6c\x78\xb7\xcf\xe4\x25\x3b\x63\x2d\xf3\x7e\xb5\x7a\xc9\xc7\x57\xe7\x34\x97\x6f\x08\x25\x79\x56\x2a\x54\x6a\x66\x91\xbf\xfc\x80\x51\x0c\x37\xb6\x24\x11\xc3\xa0\x7e\x47\x5d\xa4\x3e\xa7\x63\xa9\x15\x1a\x3b\x77\xd3\x09\xdd\x8d\xc2\xde\x69\xe4\x7b\xd4\x81\xfd\x07\x2d\x30\x06\x0d\xb0\x36\x81\x1b\x02\x5b\x06\x0c\x4f\x47\x8d\xc6\x08\x25\x59\x6c\xf3\x21\x6c\x0f\x8b\x22\xde\x4f\x13\x35\x6c\x2e\xd6\x7b\xd6\xcc\xd9\xaf\x2b\x00\x80\xa9\x2e\xac\x81\x9d\xe9\xf2\x9e\xad\x9c\xa3\xd9\x82\xea\x41\xf1\xed\x1d\x1f\xb8\xec\xce\x34\x07\x68\x93\xa0\xa0\xf8\x80\xb6\x57\xdb\x5a\x6d\x9d\x7c\x4d\x6b\xcd\x25\xa5\x54\x2f\xa9\x9c\x97\x62\x91\x60\xac\xe8\xf6\x9f\xb0\x06\xe7\xe0\x0d\xed\x33\x1d\x9b\x60\x78\x80\x9d\x13\x3b\xe8\xb9\x89\x71\x21\xd1\x98\x47\xbe\xc1\xa1\xbe\xbd\x40\xfb\x6f\x55\x8d\x29\x85\x48\x20\x40\xa7\xd4\x5e\x60\x7c\x1b\x41\x45\x16\x11\x39\xf7\x13\xb6\xe8\x98\xfd\xad\x7d\xee\x91\x0f\xb6\xbf\xef\xb1\xdb\x2f\x6c\x26\xa4\x0b\x48\x70\xf9\xc8\x6d\x5f\x7b\x5c\x25\x5e\xb3\xb8\xa2\xd2\x00\xa1\x56\xf2\x77\x56\x86\xec\x15\xd2\xa2\x7e\xe7\x03\x31\x48\xd2\xf7\x5b\xc3\xa6\x97\x7d\x26\x2e\xa7\x84\x2f\x73\xfe\x8e\x0e\xfc\x74\xaf\xa4\xfc\x79\xb0\x8b\xf1\x0e\xfc\xd4\x29\x29\x43\x36\x3f\xa8\x51\x5a\x1a\x2e\x27\xfc\x3a\x59\xcd\x3b\xab\xf4\xef\x51\x76\x5f\xa7\x62\xa6\xed\x46\xd9\xd5\xf6\x4c\x7d\xcf\x83\xb3\xda\xd7\xcc\x4b\x39\x64\x1c\x29\x8d\x77\x3e\xef\x40\x5f\x58\x2d\x99\xec\xbd\xdc\x71\xb2\xa8\xb2\x2a\xed\xa5\xb4\x55\xae\xc9\x4a\xb4\x00\xc5\xd5\xd4\x78\xcf\x48\xe3\xa8\xd3\xcd\x55\x8e\x8d\x7a\x60\xf9\x7a\x3f\x50\xbc\xf5\x34\x43\x64\xdc\x32\x88\x1c\x8a\xb3\x4a\x54\x11\xf7\x52\x76\xef\xb4\x3f\x4b\xa8\x3c\xee\x12\x2a\xfb\xb2\x99\x30\x94\x56\x7f\x3e\x29\x21\x6d\x5c\x98\xcf\xc7\x41\xd8\xd0\x3e\x74\x8e\xd8\x31\x62\x2c\x7f\x9c\xa5\x7c\x1c\x3e\x9f\xca\x90\xf9\x25\x2e\x07\x4d\xf1\x32\xec\x91\x1b\xf3\xa0\x8c\x7d\x40\xbe\x45\x3d\x0d\x6d\xf5\x88\x94\x31\x67\xe4\xfe\x47\x2d\x94\x16\xf6\x73\x66\x53\xa4\x27\x20\x13\xeb\xb9\xd6\xf0\x52\xec\xa9\xe2\x89\x09\x41\x6a\xb8\xa6\x6f\xf5\x32\x78\xcd\x06\x69\x35\x5a\xac\xfe\xf7\x80\xb5\x14\x6a\x59\x29\x10\x88\xa9\x3e\x61\x15\xf2\xb5\x63\x0d\x71\x2f\x3c\x95\xf0\xd3\xe3\x80\x67\x36\x86\x60\xf1\xf0\xd2\xea\xfa\x17\x00\x00\xff\xff\x80\x96\x91\x75\xac\x07\x00\x00") + +func templatesKvTmplBytes() ([]byte, error) { + return bindataRead( + _templatesKvTmpl, + "templates/kv.tmpl", + ) +} + +func templatesKvTmpl() (*asset, error) { + bytes, err := templatesKvTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/kv.tmpl", size: 1964, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesMarathonTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x56\xc9\x6e\xe3\x38\x10\xbd\xfb\x2b\x0a\xc4\x1c\x13\xe6\x1e\xc0\x87\xd8\x93\x20\x01\x92\x81\x31\x1e\x60\x0e\x81\x0f\x34\x55\xb6\x08\xc9\xa4\x40\x52\x69\x07\x6c\xfe\x7b\x83\x8b\x16\xbb\x15\x74\xc7\x1d\x5f\x24\xd6\xf2\xf8\x5e\x55\x91\xb2\x73\x7f\xb1\xa6\x31\x70\x3b\x07\x7a\xd7\x34\xb5\xe0\xcc\x0a\x25\x8d\xf7\xb3\x99\x73\x9a\xc9\x3d\x42\x88\x08\x01\x31\xd2\xfb\xc1\x6e\x99\xa9\x3a\x07\xfd\x8f\x99\xea\xc4\x6b\x50\xbf\x09\x8e\x4f\xb2\xc0\xe3\x55\xbf\xfc\x87\x1d\x30\xe4\xec\xd1\xae\x07\x8b\x89\x18\xde\xcf\x00\x00\x5e\xb7\x8c\x57\x28\x0b\x43\x49\x7e\x73\x6e\x8f\x76\x91\xde\x13\x9d\x31\x9c\xf7\x84\x86\x25\x6a\x43\x49\x7a\xb9\x76\x2e\xb2\xa3\x4f\x7f\xc3\x77\xd0\xd8\xd4\x8c\x23\x10\x4a\x80\x5c\x13\xef\x23\xde\x68\xfb\x75\xbb\xdb\x89\xe3\x29\x47\xef\xc9\x26\xd2\x69\x75\x0d\x73\x20\x31\x67\xa5\x95\x55\x5c\xd5\x53\x24\x6e\x6f\x6e\xc6\x3c\xd7\x91\x48\x2e\x52\x52\x77\x9b\x30\x94\xb6\x23\xf3\xb9\x94\xb8\xe7\x37\x14\xfb\xd2\xc2\x1c\x62\xc6\xff\x69\x35\x11\x3d\x73\x0e\x65\x31\xf1\xfc\x75\xf3\x2e\x6a\xcf\x67\x5b\x93\xaa\xe8\x1c\x88\x1d\x94\xcc\xbc\xb0\xe3\x52\x49\xf9\xcc\xb6\x58\x27\x4c\xc8\x3d\xff\x7c\xd7\x03\x34\x3d\xb0\x23\x57\x52\x6e\x32\x06\x00\x3b\xa8\x56\xf6\x85\xcb\xfb\xdd\x25\xe3\xe9\x7e\x00\x78\xb4\x9a\x71\xab\xf4\xae\x95\xbc\x6f\x71\xce\xb9\xef\x9c\x0f\xc1\x99\x53\xc9\xa8\xce\x59\xd2\xb3\x62\xc5\x82\xd5\x4c\x72\xd4\x5f\xa7\xab\x56\xac\xd8\x66\xd4\x41\xdc\x01\x6d\xa9\x8a\x9e\xe9\x78\xeb\x97\xe4\xea\x79\x76\x29\xc6\x0a\x5e\xbd\x77\xf5\x58\xa7\xd5\xe8\xac\x85\x9f\x73\x49\x4a\xf4\x0a\x89\xc6\x44\x21\xe7\x61\x7f\x2c\x84\x9a\x7e\x83\x41\x13\x00\x57\xaa\x12\x29\xa3\x53\x36\x30\x59\x0e\xce\x44\x87\x8c\x68\x9f\x8f\x7e\x6e\xc9\x52\x68\xde\x0a\xbb\xd0\xc8\xaa\xaf\x6c\x0a\x4f\xb8\xdb\x84\xbb\x19\xcd\x51\xa3\xd1\x18\xa1\x64\x2f\xe0\x94\xc2\xfd\x10\xf0\xf1\x20\x3d\x22\xab\x6d\xb9\x2c\x91\x57\x5f\x47\xb9\x8c\xa0\x3c\x80\x0e\x7c\x1b\x66\xcb\x9e\xe9\x68\xdb\x55\xb0\xff\x34\x41\x42\x5a\xd4\x6f\xac\x9e\xca\x78\xea\x7c\x13\xb2\xce\xee\xa3\xd7\x9d\x56\xd2\x06\xfe\x9b\x0f\xae\xa6\x0b\x6f\x26\x1a\x2b\x34\xc0\x53\xe2\x5c\x08\x7a\xc8\x86\x7e\x76\x26\xaf\xf7\x5c\xca\x20\xee\x77\xbf\x35\xb3\x50\x41\x63\x1e\x95\x09\xa5\x28\x50\x77\xa7\x6b\x75\x6a\x9d\xba\xae\x01\x1a\x2d\x94\x16\xb6\x3f\x92\xab\x6e\x3d\x1d\x8e\xd2\xea\xf7\x95\x12\xd2\x1a\x98\xc3\x6b\x57\xa3\x3d\xda\xfb\x91\x67\x3a\x17\x42\xc3\xa8\xf7\xe4\x6a\xd6\x9f\x96\xa4\xd9\x08\x7e\xd7\xc6\x21\x18\x23\x2e\x7a\xfb\xe7\xf0\x2e\xab\x3e\xd5\xaa\xb5\x68\x28\x89\xcf\xeb\x52\x19\x9b\xfe\x8c\x9c\x7d\xb3\x6f\x2e\xf9\x66\xeb\xb6\x1e\x6e\x93\x8e\xcb\xbf\xc1\x38\xd9\xd1\x2c\xa6\x1b\xd6\x1f\x01\x00\x00\xff\xff\x32\x44\x99\xba\x15\x09\x00\x00") + +func templatesMarathonTmplBytes() ([]byte, error) { + return bindataRead( + _templatesMarathonTmpl, + "templates/marathon.tmpl", + ) +} + +func templatesMarathonTmpl() (*asset, error) { + bytes, err := templatesMarathonTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/marathon.tmpl", size: 2325, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesMesosTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x51\xcd\x6a\xf3\x40\x0c\xbc\xfb\x29\x44\xf8\x8e\x5f\x36\xf7\x80\x0f\x2d\x4d\x48\x2f\x25\x94\x42\x0f\x21\x87\x6d\xac\x3a\x26\xee\xae\x91\x94\x96\xb0\xec\xbb\x97\xfd\xb3\x93\x42\xa1\xa7\x5d\x69\x46\x62\x66\xe4\xdc\x3f\x3d\x0c\x0c\xcb\x1a\xd4\xdd\x30\xf4\xdd\x41\x4b\x67\x0d\x7b\x5f\xed\xde\xf4\xe1\x84\xa6\xe1\xbd\x73\xa4\x4d\x8b\xa0\x5e\x34\x9f\x02\x04\x00\x30\xc2\x2a\x7f\x9c\x6b\x51\xee\xd3\x1f\x14\xc4\xbd\xde\x2b\x46\xfa\x44\xe2\xfc\xce\x23\xeb\xf1\x01\x94\xf7\xfb\xb8\xe7\x4c\x3d\xd4\x30\x8b\xfd\x2d\x59\xb1\x07\xdb\x4f\xe3\xcb\xc5\x22\x22\x1b\xcb\x12\x66\x96\x89\x67\x49\x26\xce\x2c\xee\xf9\xc2\xae\x3d\x0a\xd4\x10\x19\xaf\xa9\x1a\x39\x95\x73\x68\x1a\xef\xab\x6a\xf7\x4e\xd6\xc8\xad\xaf\x1f\xce\x01\x26\x92\x2a\xbf\xa4\x7c\x1d\xaa\x95\x69\x9e\xf4\x07\x16\x0f\xd9\x7f\x70\x71\x1d\xc5\x3a\x0f\x8e\x91\x24\xa5\x83\x66\x0e\x6e\x36\xa8\x1b\xa4\xa2\x77\x7b\xdb\x55\x51\xc5\x40\x9d\xa5\x4e\x2e\x23\xa9\xd4\x09\x46\x23\x74\xd9\xda\xce\x08\x43\x0d\xbb\xe2\xa6\x45\x59\x5d\x21\x2a\xdf\x6b\xe6\x5c\x50\xf0\xbf\x02\xc8\x59\xa4\xfc\xff\x6c\x55\x91\x3d\x0b\x72\x7a\xe6\x47\xcb\xf2\x6b\x22\x00\x74\xee\x71\x3c\x6b\x49\xe2\x39\x34\x63\x0c\xe5\x1a\xdf\x01\x00\x00\xff\xff\x33\xcb\x01\xe6\x7f\x02\x00\x00") + +func templatesMesosTmplBytes() ([]byte, error) { + return bindataRead( + _templatesMesosTmpl, + "templates/mesos.tmpl", + ) +} + +func templatesMesosTmpl() (*asset, error) { + bytes, err := templatesMesosTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/mesos.tmpl", size: 639, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesNotfoundTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb2\x51\x74\xf1\x77\x0e\x89\x0c\x70\x55\xc8\x28\xc9\xcd\xb1\xe3\xb2\x81\x51\xa9\x89\x29\x76\x5c\x0a\x0a\x0a\x0a\x36\x25\x99\x25\x39\xa9\x76\x21\x45\x89\xa9\x69\x99\xd9\x36\xfa\x10\x2e\x97\x8d\x3e\x44\x89\x4d\x52\x7e\x4a\x25\x44\xa5\x7f\x46\x46\x46\x86\x42\x6e\x62\x9e\x8e\x42\x49\x46\x66\xb1\x42\x66\xb1\x42\x52\x62\x8a\x9e\x9e\x1e\x97\x8d\x3e\x44\x95\x8d\x3e\xd8\x78\x40\x00\x00\x00\xff\xff\xb8\x78\x48\x56\x75\x00\x00\x00") + +func templatesNotfoundTmplBytes() ([]byte, error) { + return bindataRead( + _templatesNotfoundTmpl, + "templates/notFound.tmpl", + ) +} + +func templatesNotfoundTmpl() (*asset, error) { + bytes, err := templatesNotfoundTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/notFound.tmpl", size: 117, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _templatesRancherTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xc1\x6e\x22\x31\x0c\xbd\xef\x57\x58\xa3\x1e\xe9\xf4\x8e\xc4\xa1\x20\xaa\x1e\xda\x15\x6a\x0f\x7b\x40\x3d\x84\x8c\x81\x08\x48\x90\x93\xd9\x9d\x6a\x94\x7f\x5f\x65\x12\x67\x86\x69\x57\x5d\xca\x85\xc4\xf6\xb3\x9f\x9f\x27\x6e\xdb\x9b\x8d\x90\x07\xd4\xd5\x2b\xd2\x6f\x24\x0b\xd3\x19\x94\xf3\x68\xb2\xde\xff\x58\x27\xb7\x7d\x6b\x5b\x12\x7a\x87\xc0\x80\x9f\xe2\x84\x93\x7c\x1b\xe3\x00\x00\xda\x56\x6d\x61\x2f\xec\x42\x91\xac\x95\x9b\x13\x8a\x03\xd2\x93\xd8\xe0\x31\xe3\x52\x68\x2e\x53\xa6\xc3\x6d\xcf\x2c\x14\xf2\xbe\x94\x31\xcb\x26\x66\x79\xeb\x60\x00\xd8\x9c\x09\xad\x55\x46\xc3\x0c\x8a\xb6\xdd\xa1\xbb\x2c\xb7\xec\x03\xfa\x9a\x45\xe2\x17\x09\x5c\x90\x7d\x32\xa2\x9a\x8b\xa3\xd0\xf2\xfb\x54\x8f\x46\x54\x9b\x94\x83\x89\x9e\xd0\xed\x4d\x95\x49\x0e\xcb\x3c\x47\xd7\x98\x1e\x80\x75\x4a\x1e\xde\x61\x06\x1d\xe4\x35\xde\x46\x74\x7a\xe6\x9d\x5f\x69\xb4\xf6\x53\xde\x57\x33\x2f\x6d\x4e\xc8\x4d\x00\x48\x63\x0e\x0a\x43\x74\x6e\xa5\xaf\xbb\xe8\x9d\x1f\x9b\x61\xb5\xff\xa9\xfc\xb3\x68\x16\x46\xeb\x8e\xbc\xfd\x86\xea\x27\xd1\x48\xa3\x35\x73\x15\x27\x53\x6b\xc7\xe2\xa5\xe4\xf7\xd1\xf8\x41\x1a\x6c\x1c\x09\xe9\x0c\x6d\x6b\x2d\x73\x67\x09\xb4\x64\xe7\x43\x70\x7e\xf1\x15\xa5\x47\xa2\x74\x85\xcd\x04\x6e\xd4\x39\xbc\x0c\xc6\x94\x0b\xa3\x9d\x50\x1a\xc9\x5e\x33\x15\x1b\xdf\x66\xfa\x0f\xfe\x2e\xbd\xf7\xdc\x6b\x4d\xc7\x4c\x7a\x45\xc6\x19\x69\x86\xf3\x9f\xde\xdd\x05\xcc\xd9\xfb\x69\x0c\x31\xe4\x3e\x99\xd0\x1f\x54\xbb\x7d\x56\xec\x57\xbc\x8d\xa4\xca\xdd\xe6\xc3\x7a\x4b\x46\xbb\xcb\x15\xc1\xa6\xb4\x23\x02\x6f\x25\xb1\xdb\x11\x0f\x1c\xcd\x83\xcd\xf0\xb2\xe0\x63\xe8\x70\x98\xc2\xfb\x22\x76\xca\xcb\x66\x06\x45\x2f\xd6\x0e\x5d\x5a\x3c\xb9\x12\xf7\x74\x16\xd6\x3e\x1a\xeb\x1e\x51\x54\x48\xdc\xd9\xea\xd2\xda\x83\x22\x86\x94\x21\xe5\xf2\xb3\x5b\xf1\x7d\x14\x47\x58\x29\x42\xe9\xb2\xf0\x2f\x6c\x18\xb3\x40\xed\xe8\x7d\x65\x94\x76\x16\x66\xb0\x66\x95\x76\xe8\x96\x03\xcf\x28\x7d\xf8\x15\x6d\x5b\x7a\x5f\x4c\x86\xca\xb3\x10\x56\xc9\xfb\xda\xed\x47\x09\xe7\xd9\x7e\x55\xba\xff\x1c\x42\x49\xa6\x76\x68\xcb\xa2\xfb\xbf\xfd\x72\x5c\x54\x1f\xfb\x35\xc1\x83\x7f\x09\xc6\xa1\x44\xfc\x25\xfd\x0d\x00\x00\xff\xff\x08\xcd\x5a\xcf\x8c\x06\x00\x00") + +func templatesRancherTmplBytes() ([]byte, error) { + return bindataRead( + _templatesRancherTmpl, + "templates/rancher.tmpl", + ) +} + +func templatesRancherTmpl() (*asset, error) { + bytes, err := templatesRancherTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "templates/rancher.tmpl", size: 1676, mode: os.FileMode(436), modTime: time.Unix(1509884496, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +// Asset loads and returns the asset for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func Asset(name string) ([]byte, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) + } + return a.bytes, nil + } + return nil, fmt.Errorf("Asset %s not found", name) +} + +// MustAsset is like Asset but panics when Asset would return an error. +// It simplifies safe initialization of global variables. +func MustAsset(name string) []byte { + a, err := Asset(name) + if err != nil { + panic("asset: Asset(" + name + "): " + err.Error()) + } + + return a +} + +// AssetInfo loads and returns the asset info for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func AssetInfo(name string) (os.FileInfo, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) + } + return a.info, nil + } + return nil, fmt.Errorf("AssetInfo %s not found", name) +} + +// AssetNames returns the names of the assets. +func AssetNames() []string { + names := make([]string, 0, len(_bindata)) + for name := range _bindata { + names = append(names, name) + } + return names +} + +// _bindata is a table, holding each asset generator, mapped to its name. +var _bindata = map[string]func() (*asset, error){ + "templates/consul_catalog.tmpl": templatesConsul_catalogTmpl, + "templates/docker.tmpl": templatesDockerTmpl, + "templates/ecs.tmpl": templatesEcsTmpl, + "templates/eureka.tmpl": templatesEurekaTmpl, + "templates/kubernetes.tmpl": templatesKubernetesTmpl, + "templates/kv.tmpl": templatesKvTmpl, + "templates/marathon.tmpl": templatesMarathonTmpl, + "templates/mesos.tmpl": templatesMesosTmpl, + "templates/notFound.tmpl": templatesNotfoundTmpl, + "templates/rancher.tmpl": templatesRancherTmpl, +} + +// AssetDir returns the file names below a certain +// directory embedded in the file by go-bindata. +// For example if you run go-bindata on data/... and data contains the +// following hierarchy: +// data/ +// foo.txt +// img/ +// a.png +// b.png +// then AssetDir("data") would return []string{"foo.txt", "img"} +// AssetDir("data/img") would return []string{"a.png", "b.png"} +// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// AssetDir("") will return []string{"data"}. +func AssetDir(name string) ([]string, error) { + node := _bintree + if len(name) != 0 { + cannonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(cannonicalName, "/") + for _, p := range pathList { + node = node.Children[p] + if node == nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + } + } + if node.Func != nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + rv := make([]string, 0, len(node.Children)) + for childName := range node.Children { + rv = append(rv, childName) + } + return rv, nil +} + +type bintree struct { + Func func() (*asset, error) + Children map[string]*bintree +} + +var _bintree = &bintree{nil, map[string]*bintree{ + "templates": &bintree{nil, map[string]*bintree{ + "consul_catalog.tmpl": &bintree{templatesConsul_catalogTmpl, map[string]*bintree{}}, + "docker.tmpl": &bintree{templatesDockerTmpl, map[string]*bintree{}}, + "ecs.tmpl": &bintree{templatesEcsTmpl, map[string]*bintree{}}, + "eureka.tmpl": &bintree{templatesEurekaTmpl, map[string]*bintree{}}, + "kubernetes.tmpl": &bintree{templatesKubernetesTmpl, map[string]*bintree{}}, + "kv.tmpl": &bintree{templatesKvTmpl, map[string]*bintree{}}, + "marathon.tmpl": &bintree{templatesMarathonTmpl, map[string]*bintree{}}, + "mesos.tmpl": &bintree{templatesMesosTmpl, map[string]*bintree{}}, + "notFound.tmpl": &bintree{templatesNotfoundTmpl, map[string]*bintree{}}, + "rancher.tmpl": &bintree{templatesRancherTmpl, map[string]*bintree{}}, + }}, +}} + +// RestoreAsset restores an asset under the given directory +func RestoreAsset(dir, name string) error { + data, err := Asset(name) + if err != nil { + return err + } + info, err := AssetInfo(name) + if err != nil { + return err + } + err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) + if err != nil { + return err + } + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + if err != nil { + return err + } + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil +} + +// RestoreAssets restores an asset under the given directory recursively +func RestoreAssets(dir, name string) error { + children, err := AssetDir(name) + // File + if err != nil { + return RestoreAsset(dir, name) + } + // Dir + for _, child := range children { + err = RestoreAssets(dir, filepath.Join(name, child)) + if err != nil { + return err + } + } + return nil +} + +func _filePath(dir, name string) string { + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) +} diff --git a/generate.go b/generate.go index 1afb67864..dc5ddc8f3 100644 --- a/generate.go +++ b/generate.go @@ -1,6 +1,8 @@ -//go:generate rm -vf autogen/gen.go +//go:generate rm -vf autogen/gentemplates/gen.go +//go:generate rm -vf autogen/genstatic/gen.go //go:generate mkdir -p static -//go:generate go-bindata -pkg autogen -o autogen/gen.go ./static/... ./templates/... +//go:generate go-bindata -pkg gentemplates -modtime 1509884496 -o autogen/gentemplates/gen.go ./templates/... +//go:generate go-bindata -pkg genstatic -o autogen/genstatic/gen.go ./static/... package main diff --git a/provider/provider.go b/provider/provider.go index fbf4da04b..cf281d0b5 100644 --- a/provider/provider.go +++ b/provider/provider.go @@ -9,7 +9,7 @@ import ( "github.com/BurntSushi/toml" "github.com/Masterminds/sprig" - "github.com/containous/traefik/autogen" + "github.com/containous/traefik/autogen/gentemplates" "github.com/containous/traefik/log" "github.com/containous/traefik/safe" "github.com/containous/traefik/types" @@ -101,7 +101,7 @@ func (p *BaseProvider) getTemplateContent(defaultTemplateFile string) (string, e } if strings.HasSuffix(defaultTemplateFile, ".tmpl") { - buf, err := autogen.Asset(defaultTemplateFile) + buf, err := gentemplates.Asset(defaultTemplateFile) if err != nil { return "", err } diff --git a/script/binary b/script/binary index 685bbb0b7..183516e4a 100755 --- a/script/binary +++ b/script/binary @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -e -if ! test -e autogen/gen.go; then +if ! test -e autogen/genstatic/gen.go; then echo >&2 'error: generate must be run before binary' false fi diff --git a/script/crossbinary-default b/script/crossbinary-default index 13e3b303d..c5e837db4 100755 --- a/script/crossbinary-default +++ b/script/crossbinary-default @@ -1,7 +1,7 @@ #!/bin/bash set -e -if ! test -e autogen/gen.go; then +if ! test -e autogen/genstatic/gen.go; then echo >&2 'error: generate must be run before crossbinary' false fi diff --git a/script/crossbinary-others b/script/crossbinary-others index d0c59eb15..e05efacf7 100755 --- a/script/crossbinary-others +++ b/script/crossbinary-others @@ -1,7 +1,7 @@ #!/bin/bash set -e -if ! test -e autogen/gen.go; then +if ! test -e autogen/genstatic/gen.go; then echo >&2 'error: generate must be run before crossbinary' false fi diff --git a/script/test-unit b/script/test-unit index 22697447d..fec622967 100755 --- a/script/test-unit +++ b/script/test-unit @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -e -if ! test -e autogen/gen.go; then +if ! test -e autogen/genstatic/gen.go; then echo >&2 'error: generate must be run before test-unit' false fi diff --git a/script/validate-autogen b/script/validate-autogen new file mode 100644 index 000000000..594b031d5 --- /dev/null +++ b/script/validate-autogen @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -o errexit +set -o pipefail +set -o nounset + +SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; export SCRIPTDIR +source "${SCRIPTDIR}/.validate" + +# Iterate over all directories containing templates folders. +IFS=$'\n' files=( $(validate_diff --diff-filter=ACMR --name-only -- templates || true) ) + +if [[ ${#files[@]} -gt 0 ]]; then + echo "checking autogen is up-to-date with templates..." + go generate >/dev/null + # Let see if the working directory is clean + diffs="$(git status --porcelain -- autogen 2>/dev/null)" + if [[ "$diffs" ]]; then + { + echo "The result of 'go generate' differs" + echo + echo "$diffs" + echo + echo 'Please do "go generate" to update the `autogen` package.' + echo + } >&2 + exit 2 + fi +fi + +echo 'Congratulations! All autogen changes are done the right way.' \ No newline at end of file diff --git a/script/validate-gofmt b/script/validate-gofmt index 95ab6603c..6f0507082 100755 --- a/script/validate-gofmt +++ b/script/validate-gofmt @@ -3,7 +3,7 @@ source "$(dirname "$BASH_SOURCE")/.validate" IFS=$'\n' -files=( $(validate_diff --diff-filter=ACMR --name-only -- '*.go' | grep -v '^vendor/' || true) ) +files=( $(validate_diff --diff-filter=ACMR --name-only -- '*.go' | grep -v '^vendor/\|autogen' || true) ) unset IFS badFiles=()