From 1fe6a8b04d7b3a68d98f2bb84bd1fe68244d6d9d Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Tue, 2 Jan 2018 20:02:20 +0100 Subject: [PATCH] chore(consulcatalog): gen templates. --- autogen/gentemplates/gen.go | 192 ++++++++++++++++++++++++++++-------- 1 file changed, 150 insertions(+), 42 deletions(-) diff --git a/autogen/gentemplates/gen.go b/autogen/gentemplates/gen.go index 97c3ae112..24d7c9e50 100644 --- a/autogen/gentemplates/gen.go +++ b/autogen/gentemplates/gen.go @@ -55,56 +55,164 @@ func (fi bindataFileInfo) Sys() interface{} { } var _templatesConsul_catalogTmpl = []byte(`[backends] -{{range $index, $node := .Nodes}} - [backends."backend-{{getBackend $node}}".servers."{{getBackendName $node $index}}"] - url = "{{getAttribute "protocol" $node.Service.Tags "http"}}://{{getBackendAddress $node}}:{{$node.Service.Port}}" - {{$weight := getAttribute "backend.weight" $node.Service.Tags "0"}} - {{with $weight}} - weight = {{$weight}} +{{range $service := .Services}} + + {{ $circuitBreaker := getCircuitBreaker $service.Attributes }} + {{if $circuitBreaker }} + [backends."backend-{{ getServiceBackendName $service }}".circuitBreaker] + expression = "{{ $circuitBreaker.Expression }}" + {{end}} + + {{ $loadBalancer := getLoadBalancer $service.Attributes }} + {{if $loadBalancer }} + [backends."backend-{{ getServiceBackendName $service }}".loadBalancer] + method = "{{ $loadBalancer.Method }}" + sticky = {{ $loadBalancer.Sticky }} + {{if $loadBalancer.Stickiness }} + [backends."backend-{{ getServiceBackendName $service }}".loadBalancer.stickiness] + cookieName = "{{ $loadBalancer.Stickiness.CookieName }}" {{end}} + {{end}} + + {{ $maxConn := getMaxConn $service.Attributes }} + {{if $maxConn }} + [backends."backend-{{ getServiceBackendName $service }}".maxConn] + extractorFunc = "{{ $maxConn.ExtractorFunc }}" + amount = {{ $maxConn.Amount }} + {{end}} + + {{ $healthCheck := getHealthCheck $service.Attributes }} + {{if $healthCheck }} + [backends.backend-{{ getServiceBackendName $service }}.healthCheck] + path = "{{ $healthCheck.Path }}" + port = {{ $healthCheck.Port }} + interval = "{{ $healthCheck.Interval }}" + {{end}} + {{end}} +{{range $index, $node := .Nodes}} -{{range .Services}} - {{$service := .ServiceName}} - {{$circuitBreaker := getAttribute "backend.circuitbreaker" .Attributes ""}} - {{with $circuitBreaker}} - [backends."backend-{{$service}}".circuitbreaker] - expression = "{{$circuitBreaker}}" - {{end}} - - [backends."backend-{{$service}}".loadbalancer] - method = "{{getAttribute "backend.loadbalancer" .Attributes "wrr"}}" - sticky = {{getSticky .Attributes}} - {{if hasStickinessLabel .Attributes}} - [backends."backend-{{$service}}".loadbalancer.stickiness] - cookieName = "{{getStickinessCookieName .Attributes}}" - {{end}} - - {{if hasMaxconnAttributes .Attributes}} - [backends."backend-{{$service}}".maxconn] - amount = {{getAttribute "backend.maxconn.amount" .Attributes "" }} - extractorfunc = "{{getAttribute "backend.maxconn.extractorfunc" .Attributes "" }}" - {{end}} + [backends."backend-{{ getNodeBackendName $node }}".servers."{{ getServerName $node $index }}"] + url = "{{ getProtocol $node.Service.Tags }}://{{ getBackendAddress $node }}:{{ $node.Service.Port }}" + weight = {{ getWeight $node.Service.Tags }} {{end}} [frontends] -{{range .Services}} - [frontends."frontend-{{.ServiceName}}"] - backend = "backend-{{.ServiceName}}" - passHostHeader = {{getAttribute "frontend.passHostHeader" .Attributes "true"}} - priority = {{getAttribute "frontend.priority" .Attributes "0"}} - {{$entryPoints := getAttribute "frontend.entrypoints" .Attributes ""}} - {{with $entryPoints}} - entrypoints = [{{range getEntryPoints $entryPoints}} +{{range $service := .Services}} + + [frontends."frontend-{{ $service.ServiceName }}"] + backend = "backend-{{ getServiceBackendName $service }}" + priority = {{ getPriority $service.Attributes }} + passHostHeader = {{ getPassHostHeader $service.Attributes }} + passTLSCert = {{ getPassTLSCert $service.Attributes }} + + entryPoints = [{{range getFrontEndEntryPoints $service.Attributes }} "{{.}}", - {{end}}] - {{end}} - basicAuth = [{{range getBasicAuth .Attributes}} - "{{.}}", - {{end}}] - [frontends."frontend-{{.ServiceName}}".routes."route-host-{{.ServiceName}}"] - rule = "{{getFrontendRule .}}" + {{end}}] + + {{ $whitelistSourceRange := getWhitelistSourceRange $service.Attributes }} + {{if $whitelistSourceRange }} + whitelistSourceRange = [{{range $whitelistSourceRange}} + "{{.}}", + {{end}}] + {{end}} + + basicAuth = [{{range getBasicAuth $service.Attributes }} + "{{.}}", + {{end}}] + + {{ $redirect := getRedirect $service.Attributes }} + {{if $redirect }} + [frontends."frontend-{{ $service.ServiceName }}".redirect] + entryPoint = "{{ $redirect.EntryPoint }}" + regex = "{{ $redirect.Regex }}" + replacement = "{{ $redirect.Replacement }}" + {{end}} + + {{ if hasErrorPages $service.Attributes }} + [frontends."frontend-{{ $service.ServiceName }}".errors] + {{ range $pageName, $page := getErrorPages $service.Attributes }} + [frontends."frontend-{{ $service.ServiceName }}".errors.{{ $pageName }}] + status = [{{range $page.Status }} + "{{.}}", + {{end}}] + backend = "{{ $page.Backend }}" + query = "{{ $page.Query }}" + {{end}} + {{end}} + + {{ if hasRateLimit $service.Attributes }} + {{ $rateLimit := getRateLimit $service.Attributes }} + [frontends."frontend-{{ $service.ServiceName }}".rateLimit] + extractorFunc = "{{ $rateLimit.ExtractorFunc }}" + + [frontends."frontend-{{ $service.ServiceName }}".rateLimit.rateSet] + {{ range $limitName, $limit := $rateLimit.RateSet }} + [frontends."frontend-{{ $service.ServiceName }}".rateLimit.rateSet.{{ $limitName }}] + period = "{{ $limit.Period }}" + average = {{ $limit.Average }} + burst = {{ $limit.Burst }} + {{end}} + + {{end}} + + {{ $headers := getHeaders $service.Attributes }} + {{ if $headers }} + [frontends."frontend-{{ $service.ServiceName }}".headers] + SSLRedirect = {{ $headers.SSLRedirect }} + SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }} + SSLHost = "{{ $headers.SSLHost }}" + STSSeconds = {{ $headers.STSSeconds }} + STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }} + STSPreload = {{ $headers.STSPreload }} + ForceSTSHeader = {{ $headers.ForceSTSHeader }} + FrameDeny = {{ $headers.FrameDeny }} + CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}" + ContentTypeNosniff = {{ $headers.ContentTypeNosniff }} + BrowserXSSFilter = {{ $headers.BrowserXSSFilter }} + ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}" + PublicKey = "{{ $headers.PublicKey }}" + ReferrerPolicy = "{{ $headers.ReferrerPolicy }}" + IsDevelopment = {{ $headers.IsDevelopment }} + + {{ if $headers.AllowedHosts }} + AllowedHosts = [{{ range $headers.AllowedHosts }} + "{{.}}", + {{end}}] + {{end}} + + {{ if $headers.HostsProxyHeaders }} + HostsProxyHeaders = [{{ range $headers.HostsProxyHeaders }} + "{{.}}", + {{end}}] + {{end}} + + {{ if $headers.CustomRequestHeaders }} + [frontends."frontend-{{ $service.ServiceName }}".headers.customRequestHeaders] + {{ range $k, $v := $headers.CustomRequestHeaders }} + {{$k}} = "{{$v}}" + {{end}} + {{end}} + + {{ if $headers.CustomResponseHeaders }} + [frontends."frontend-{{ $service.ServiceName }}".headers.customResponseHeaders] + {{ range $k, $v := $headers.CustomResponseHeaders }} + {{$k}} = "{{$v}}" + {{end}} + {{end}} + + {{ if $headers.SSLProxyHeaders }} + [frontends."frontend-{{ $service.ServiceName }}".headers.SSLProxyHeaders] + {{range $k, $v := $headers.SSLProxyHeaders}} + {{$k}} = "{{$v}}" + {{end}} + {{end}} + {{end}} + + [frontends."frontend-{{ $service.ServiceName }}".routes."route-host-{{ $service.ServiceName }}"] + rule = "{{ getFrontendRule $service }}" + {{end}} `)