Use shared label system
This commit is contained in:
parent
5ab584bc6a
commit
ac0e5cbb29
3 changed files with 15 additions and 137 deletions
7
Gopkg.lock
generated
7
Gopkg.lock
generated
|
@ -263,8 +263,8 @@
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/containous/traefik-extra-service-fabric"
|
name = "github.com/containous/traefik-extra-service-fabric"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
revision = "7366770ee1d09b828d58e08b78898e2e39448328"
|
revision = "2889df8d4f84315e6e527588554ed0ce9d062305"
|
||||||
version = "v1.1.4"
|
version = "v1.1.5"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/coreos/bbolt"
|
name = "github.com/coreos/bbolt"
|
||||||
|
@ -761,7 +761,6 @@
|
||||||
version = "v1.3.7"
|
version = "v1.3.7"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
|
||||||
name = "github.com/jjcollinge/servicefabric"
|
name = "github.com/jjcollinge/servicefabric"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
revision = "8eebe170fa1ba25d3dfb928b3f86a7313b13b9fe"
|
revision = "8eebe170fa1ba25d3dfb928b3f86a7313b13b9fe"
|
||||||
|
@ -1675,6 +1674,6 @@
|
||||||
[solve-meta]
|
[solve-meta]
|
||||||
analyzer-name = "dep"
|
analyzer-name = "dep"
|
||||||
analyzer-version = 1
|
analyzer-version = 1
|
||||||
inputs-digest = "3142954e49f77ea41aea160bb9b57c0281c31f6de6652bbf3ec98ea3bc8fc494"
|
inputs-digest = "c7d91203842be1915ca08a31917a079489bff7ffc6f2e494330e9556b4730a06"
|
||||||
solver-name = "gps-cdcl"
|
solver-name = "gps-cdcl"
|
||||||
solver-version = 1
|
solver-version = 1
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "github.com/containous/traefik-extra-service-fabric"
|
name = "github.com/containous/traefik-extra-service-fabric"
|
||||||
version = "1.1.4"
|
version = "1.1.5"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "github.com/coreos/go-systemd"
|
name = "github.com/coreos/go-systemd"
|
||||||
|
|
143
vendor/github.com/containous/traefik-extra-service-fabric/servicefabric_config.go
generated
vendored
143
vendor/github.com/containous/traefik-extra-service-fabric/servicefabric_config.go
generated
vendored
|
@ -2,7 +2,6 @@ package servicefabric
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"math"
|
|
||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
|
@ -32,7 +31,7 @@ func (p *Provider) buildConfiguration(services []ServiceItemExtended) (*types.Co
|
||||||
"filterServicesByLabelValue": filterServicesByLabelValue, // FIXME unused
|
"filterServicesByLabelValue": filterServicesByLabelValue, // FIXME unused
|
||||||
|
|
||||||
// Backend functions
|
// Backend functions
|
||||||
"getWeight": getFuncServiceIntLabel(label.TraefikWeight, label.DefaultWeightInt),
|
"getWeight": getFuncServiceIntLabel(label.TraefikWeight, label.DefaultWeight),
|
||||||
"getProtocol": getFuncServiceStringLabel(label.TraefikProtocol, label.DefaultProtocol),
|
"getProtocol": getFuncServiceStringLabel(label.TraefikProtocol, label.DefaultProtocol),
|
||||||
"getMaxConn": getMaxConn,
|
"getMaxConn": getMaxConn,
|
||||||
"getHealthCheck": getHealthCheck,
|
"getHealthCheck": getHealthCheck,
|
||||||
|
@ -40,9 +39,9 @@ func (p *Provider) buildConfiguration(services []ServiceItemExtended) (*types.Co
|
||||||
"getLoadBalancer": getLoadBalancer,
|
"getLoadBalancer": getLoadBalancer,
|
||||||
|
|
||||||
// Frontend Functions
|
// Frontend Functions
|
||||||
"getPriority": getFuncServiceIntLabel(label.TraefikFrontendPriority, label.DefaultFrontendPriorityInt),
|
"getPriority": getFuncServiceIntLabel(label.TraefikFrontendPriority, label.DefaultFrontendPriority),
|
||||||
"getPassHostHeader": getFuncServiceBoolLabel(label.TraefikFrontendPassHostHeader, label.DefaultPassHostHeaderBool),
|
"getPassHostHeader": getFuncServiceBoolLabel(label.TraefikFrontendPassHostHeader, label.DefaultPassHostHeader),
|
||||||
"getPassTLSCert": getFuncBoolLabel(label.TraefikFrontendPassTLSCert, false),
|
"getPassTLSCert": getFuncBoolLabel(label.TraefikFrontendPassTLSCert, label.DefaultPassTLSCert),
|
||||||
"getEntryPoints": getFuncServiceSliceStringLabel(label.TraefikFrontendEntryPoints),
|
"getEntryPoints": getFuncServiceSliceStringLabel(label.TraefikFrontendEntryPoints),
|
||||||
"getBasicAuth": getFuncServiceSliceStringLabel(label.TraefikFrontendAuthBasic),
|
"getBasicAuth": getFuncServiceSliceStringLabel(label.TraefikFrontendAuthBasic),
|
||||||
"getFrontendRules": getFuncServiceLabelWithPrefix(label.TraefikFrontendRule),
|
"getFrontendRules": getFuncServiceLabelWithPrefix(label.TraefikFrontendRule),
|
||||||
|
@ -147,149 +146,29 @@ func filterServicesByLabelValue(services []ServiceItemExtended, key, expectedVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHeaders(service ServiceItemExtended) *types.Headers {
|
func getHeaders(service ServiceItemExtended) *types.Headers {
|
||||||
headers := &types.Headers{
|
return label.GetHeaders(service.Labels)
|
||||||
CustomRequestHeaders: label.GetMapValue(service.Labels, label.TraefikFrontendRequestHeaders),
|
|
||||||
CustomResponseHeaders: label.GetMapValue(service.Labels, label.TraefikFrontendResponseHeaders),
|
|
||||||
SSLProxyHeaders: label.GetMapValue(service.Labels, label.TraefikFrontendSSLProxyHeaders),
|
|
||||||
AllowedHosts: label.GetSliceStringValue(service.Labels, label.TraefikFrontendAllowedHosts),
|
|
||||||
HostsProxyHeaders: label.GetSliceStringValue(service.Labels, label.TraefikFrontendHostsProxyHeaders),
|
|
||||||
STSSeconds: label.GetInt64Value(service.Labels, label.TraefikFrontendSTSSeconds, 0),
|
|
||||||
SSLRedirect: label.GetBoolValue(service.Labels, label.TraefikFrontendSSLRedirect, false),
|
|
||||||
SSLTemporaryRedirect: label.GetBoolValue(service.Labels, label.TraefikFrontendSSLTemporaryRedirect, false),
|
|
||||||
STSIncludeSubdomains: label.GetBoolValue(service.Labels, label.TraefikFrontendSTSIncludeSubdomains, false),
|
|
||||||
STSPreload: label.GetBoolValue(service.Labels, label.TraefikFrontendSTSPreload, false),
|
|
||||||
ForceSTSHeader: label.GetBoolValue(service.Labels, label.TraefikFrontendForceSTSHeader, false),
|
|
||||||
FrameDeny: label.GetBoolValue(service.Labels, label.TraefikFrontendFrameDeny, false),
|
|
||||||
ContentTypeNosniff: label.GetBoolValue(service.Labels, label.TraefikFrontendContentTypeNosniff, false),
|
|
||||||
BrowserXSSFilter: label.GetBoolValue(service.Labels, label.TraefikFrontendBrowserXSSFilter, false),
|
|
||||||
IsDevelopment: label.GetBoolValue(service.Labels, label.TraefikFrontendIsDevelopment, false),
|
|
||||||
SSLHost: label.GetStringValue(service.Labels, label.TraefikFrontendSSLHost, ""),
|
|
||||||
CustomFrameOptionsValue: label.GetStringValue(service.Labels, label.TraefikFrontendCustomFrameOptionsValue, ""),
|
|
||||||
ContentSecurityPolicy: label.GetStringValue(service.Labels, label.TraefikFrontendContentSecurityPolicy, ""),
|
|
||||||
PublicKey: label.GetStringValue(service.Labels, label.TraefikFrontendPublicKey, ""),
|
|
||||||
ReferrerPolicy: label.GetStringValue(service.Labels, label.TraefikFrontendReferrerPolicy, ""),
|
|
||||||
CustomBrowserXSSValue: label.GetStringValue(service.Labels, label.TraefikFrontendCustomBrowserXSSValue, ""),
|
|
||||||
}
|
|
||||||
|
|
||||||
if !headers.HasSecureHeadersDefined() && !headers.HasCustomHeadersDefined() {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return headers
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getWhiteList(service ServiceItemExtended) *types.WhiteList {
|
func getWhiteList(service ServiceItemExtended) *types.WhiteList {
|
||||||
if label.Has(service.Labels, label.TraefikFrontendWhitelistSourceRange) {
|
return label.GetWhiteList(service.Labels)
|
||||||
log.Warnf("Deprecated configuration found: %s. Please use %s.", label.TraefikFrontendWhitelistSourceRange, label.TraefikFrontendWhiteListSourceRange)
|
|
||||||
}
|
|
||||||
|
|
||||||
ranges := label.GetSliceStringValue(service.Labels, label.TraefikFrontendWhiteListSourceRange)
|
|
||||||
if len(ranges) > 0 {
|
|
||||||
return &types.WhiteList{
|
|
||||||
SourceRange: ranges,
|
|
||||||
UseXForwardedFor: label.GetBoolValue(service.Labels, label.TraefikFrontendWhiteListUseXForwardedFor, false),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Deprecated
|
|
||||||
values := label.GetSliceStringValue(service.Labels, label.TraefikFrontendWhitelistSourceRange)
|
|
||||||
if len(values) > 0 {
|
|
||||||
return &types.WhiteList{
|
|
||||||
SourceRange: values,
|
|
||||||
UseXForwardedFor: false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getRedirect(service ServiceItemExtended) *types.Redirect {
|
func getRedirect(service ServiceItemExtended) *types.Redirect {
|
||||||
permanent := label.GetBoolValue(service.Labels, label.TraefikFrontendRedirectPermanent, false)
|
return label.GetRedirect(service.Labels)
|
||||||
|
|
||||||
if label.Has(service.Labels, label.TraefikFrontendRedirectEntryPoint) {
|
|
||||||
return &types.Redirect{
|
|
||||||
EntryPoint: label.GetStringValue(service.Labels, label.TraefikFrontendRedirectEntryPoint, ""),
|
|
||||||
Permanent: permanent,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if label.Has(service.Labels, label.TraefikFrontendRedirectRegex) &&
|
|
||||||
label.Has(service.Labels, label.TraefikFrontendRedirectReplacement) {
|
|
||||||
return &types.Redirect{
|
|
||||||
Regex: label.GetStringValue(service.Labels, label.TraefikFrontendRedirectRegex, ""),
|
|
||||||
Replacement: label.GetStringValue(service.Labels, label.TraefikFrontendRedirectReplacement, ""),
|
|
||||||
Permanent: permanent,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getMaxConn(service ServiceItemExtended) *types.MaxConn {
|
func getMaxConn(service ServiceItemExtended) *types.MaxConn {
|
||||||
amount := label.GetInt64Value(service.Labels, label.TraefikBackendMaxConnAmount, math.MinInt64)
|
return label.GetMaxConn(service.Labels)
|
||||||
extractorFunc := label.GetStringValue(service.Labels, label.TraefikBackendMaxConnExtractorFunc, label.DefaultBackendMaxconnExtractorFunc)
|
|
||||||
|
|
||||||
if amount == math.MinInt64 || len(extractorFunc) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return &types.MaxConn{
|
|
||||||
Amount: amount,
|
|
||||||
ExtractorFunc: extractorFunc,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHealthCheck(service ServiceItemExtended) *types.HealthCheck {
|
func getHealthCheck(service ServiceItemExtended) *types.HealthCheck {
|
||||||
path := label.GetStringValue(service.Labels, label.TraefikBackendHealthCheckPath, "")
|
return label.GetHealthCheck(service.Labels)
|
||||||
if len(path) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
port := label.GetIntValue(service.Labels, label.TraefikBackendHealthCheckPort, label.DefaultBackendHealthCheckPort)
|
|
||||||
interval := label.GetStringValue(service.Labels, label.TraefikBackendHealthCheckInterval, "")
|
|
||||||
|
|
||||||
return &types.HealthCheck{
|
|
||||||
Path: path,
|
|
||||||
Port: port,
|
|
||||||
Interval: interval,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCircuitBreaker(service ServiceItemExtended) *types.CircuitBreaker {
|
func getCircuitBreaker(service ServiceItemExtended) *types.CircuitBreaker {
|
||||||
circuitBreaker := label.GetStringValue(service.Labels, label.TraefikBackendCircuitBreakerExpression, "")
|
return label.GetCircuitBreaker(service.Labels)
|
||||||
if len(circuitBreaker) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return &types.CircuitBreaker{Expression: circuitBreaker}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getLoadBalancer(service ServiceItemExtended) *types.LoadBalancer {
|
func getLoadBalancer(service ServiceItemExtended) *types.LoadBalancer {
|
||||||
if !label.HasPrefix(service.Labels, label.TraefikBackendLoadBalancer) {
|
return label.GetLoadBalancer(service.Labels)
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
method := label.GetStringValue(service.Labels, label.TraefikBackendLoadBalancerMethod, label.DefaultBackendLoadBalancerMethod)
|
|
||||||
|
|
||||||
lb := &types.LoadBalancer{
|
|
||||||
Method: method,
|
|
||||||
Sticky: getSticky(service),
|
|
||||||
}
|
|
||||||
|
|
||||||
if label.GetBoolValue(service.Labels, label.TraefikBackendLoadBalancerStickiness, false) {
|
|
||||||
cookieName := label.GetStringValue(service.Labels, label.TraefikBackendLoadBalancerStickinessCookieName, label.DefaultBackendLoadbalancerStickinessCookieName)
|
|
||||||
lb.Stickiness = &types.Stickiness{CookieName: cookieName}
|
|
||||||
}
|
|
||||||
|
|
||||||
return lb
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Deprecated
|
|
||||||
// replaced by Stickiness
|
|
||||||
// Deprecated
|
|
||||||
func getSticky(service ServiceItemExtended) bool {
|
|
||||||
if label.Has(service.Labels, label.TraefikBackendLoadBalancerSticky) {
|
|
||||||
log.Warnf("Deprecated configuration found: %s. Please use %s.", label.TraefikBackendLoadBalancerSticky, label.TraefikBackendLoadBalancerStickiness)
|
|
||||||
}
|
|
||||||
|
|
||||||
return label.GetBoolValue(service.Labels, label.TraefikBackendLoadBalancerSticky, false)
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue