Factorize labels
* refactor(accesslog): factorize file name. * traefik.frontend.rule * traefik.frontend.value * traefik.backend.circuitbreaker.expression * traefik.enable * traefik.backend.loadbalancer.method * traefik.backend.loadbalancer.sticky * traefik.backend.maxconn.amount * traefik.backend.maxconn.extractorfunc * traefik.port * traefik.tags * traefik.backend * traefik.weight * traefik.domain * traefik.protocol * traefik.frontend.passHostHeader * traefik.frontend.whitelistSourceRange * traefik.frontend.priority * traefik.frontend.entryPoints * traefik.frontend.auth.basic * traefik.backend.id * traefik.backend.circuitbreaker * traefik.frontend.rule.type * traefik.portIndex * refactor(docker): specific labels * refactor(rancher): specific labels * traefik.backend.healthcheck.* * refactor(providers): factorize labels.
This commit is contained in:
parent
2e84b1e556
commit
d653a348b1
20 changed files with 390 additions and 330 deletions
|
@ -206,21 +206,21 @@ func mesosTaskFilter(task state.Task, exposedByDefaultFlag bool) bool {
|
|||
}
|
||||
|
||||
//filter indeterminable task port
|
||||
portIndexLabel := labels(task, "traefik.portIndex")
|
||||
portValueLabel := labels(task, "traefik.port")
|
||||
portIndexLabel := labels(task, types.LabelPortIndex)
|
||||
portValueLabel := labels(task, types.LabelPort)
|
||||
if portIndexLabel != "" && portValueLabel != "" {
|
||||
log.Debugf("Filtering Mesos task %s specifying both traefik.portIndex and traefik.port labels", task.Name)
|
||||
return false
|
||||
}
|
||||
if portIndexLabel != "" {
|
||||
index, err := strconv.Atoi(labels(task, "traefik.portIndex"))
|
||||
index, err := strconv.Atoi(labels(task, types.LabelPortIndex))
|
||||
if err != nil || index < 0 || index > len(task.DiscoveryInfo.Ports.DiscoveryPorts)-1 {
|
||||
log.Debugf("Filtering Mesos task %s with unexpected value for traefik.portIndex label", task.Name)
|
||||
return false
|
||||
}
|
||||
}
|
||||
if portValueLabel != "" {
|
||||
port, err := strconv.Atoi(labels(task, "traefik.port"))
|
||||
port, err := strconv.Atoi(labels(task, types.LabelPort))
|
||||
if err != nil {
|
||||
log.Debugf("Filtering Mesos task %s with unexpected value for traefik.port label", task.Name)
|
||||
return false
|
||||
|
@ -259,7 +259,7 @@ func getMesos(task state.Task, apps []state.Task) (state.Task, error) {
|
|||
}
|
||||
|
||||
func isMesosApplicationEnabled(task state.Task, exposedByDefault bool) bool {
|
||||
return exposedByDefault && labels(task, "traefik.enable") != "false" || labels(task, "traefik.enable") == "true"
|
||||
return exposedByDefault && labels(task, types.LabelEnable) != "false" || labels(task, types.LabelEnable) == "true"
|
||||
}
|
||||
|
||||
func (p *Provider) getLabel(task state.Task, label string) (string, error) {
|
||||
|
@ -278,12 +278,12 @@ func (p *Provider) getPort(task state.Task, applications []state.Task) string {
|
|||
return ""
|
||||
}
|
||||
|
||||
if portIndexLabel, err := p.getLabel(application, "traefik.portIndex"); err == nil {
|
||||
if portIndexLabel, err := p.getLabel(application, types.LabelPortIndex); err == nil {
|
||||
if index, err := strconv.Atoi(portIndexLabel); err == nil {
|
||||
return strconv.Itoa(task.DiscoveryInfo.Ports.DiscoveryPorts[index].Number)
|
||||
}
|
||||
}
|
||||
if portValueLabel, err := p.getLabel(application, "traefik.port"); err == nil {
|
||||
if portValueLabel, err := p.getLabel(application, types.LabelPort); err == nil {
|
||||
return portValueLabel
|
||||
}
|
||||
|
||||
|
@ -300,14 +300,14 @@ func (p *Provider) getWeight(task state.Task, applications []state.Task) string
|
|||
return "0"
|
||||
}
|
||||
|
||||
if label, err := p.getLabel(application, "traefik.weight"); err == nil {
|
||||
if label, err := p.getLabel(application, types.LabelWeight); err == nil {
|
||||
return label
|
||||
}
|
||||
return "0"
|
||||
}
|
||||
|
||||
func (p *Provider) getDomain(task state.Task) string {
|
||||
if label, err := p.getLabel(task, "traefik.domain"); err == nil {
|
||||
if label, err := p.getLabel(task, types.LabelDomain); err == nil {
|
||||
return label
|
||||
}
|
||||
return p.Domain
|
||||
|
@ -319,28 +319,28 @@ func (p *Provider) getProtocol(task state.Task, applications []state.Task) strin
|
|||
log.Errorf("Unable to get Mesos application from task %s", task.DiscoveryInfo.Name)
|
||||
return "http"
|
||||
}
|
||||
if label, err := p.getLabel(application, "traefik.protocol"); err == nil {
|
||||
if label, err := p.getLabel(application, types.LabelProtocol); err == nil {
|
||||
return label
|
||||
}
|
||||
return "http"
|
||||
}
|
||||
|
||||
func (p *Provider) getPassHostHeader(task state.Task) string {
|
||||
if passHostHeader, err := p.getLabel(task, "traefik.frontend.passHostHeader"); err == nil {
|
||||
if passHostHeader, err := p.getLabel(task, types.LabelFrontendPassHostHeader); err == nil {
|
||||
return passHostHeader
|
||||
}
|
||||
return "false"
|
||||
}
|
||||
|
||||
func (p *Provider) getPriority(task state.Task) string {
|
||||
if priority, err := p.getLabel(task, "traefik.frontend.priority"); err == nil {
|
||||
if priority, err := p.getLabel(task, types.LabelFrontendPriority); err == nil {
|
||||
return priority
|
||||
}
|
||||
return "0"
|
||||
}
|
||||
|
||||
func (p *Provider) getEntryPoints(task state.Task) []string {
|
||||
if entryPoints, err := p.getLabel(task, "traefik.frontend.entryPoints"); err == nil {
|
||||
if entryPoints, err := p.getLabel(task, types.LabelFrontendEntryPoints); err == nil {
|
||||
return strings.Split(entryPoints, ",")
|
||||
}
|
||||
return []string{}
|
||||
|
@ -349,7 +349,7 @@ func (p *Provider) getEntryPoints(task state.Task) []string {
|
|||
// getFrontendRule returns the frontend rule for the specified application, using
|
||||
// it's label. It returns a default one (Host) if the label is not present.
|
||||
func (p *Provider) getFrontendRule(task state.Task) string {
|
||||
if label, err := p.getLabel(task, "traefik.frontend.rule"); err == nil {
|
||||
if label, err := p.getLabel(task, types.LabelFrontendRule); err == nil {
|
||||
return label
|
||||
}
|
||||
return "Host:" + strings.ToLower(strings.Replace(p.getSubDomain(task.DiscoveryInfo.Name), "_", "-", -1)) + "." + p.Domain
|
||||
|
@ -365,7 +365,7 @@ func (p *Provider) getBackend(task state.Task, applications []state.Task) string
|
|||
}
|
||||
|
||||
func (p *Provider) getFrontendBackend(task state.Task) string {
|
||||
if label, err := p.getLabel(task, "traefik.backend"); err == nil {
|
||||
if label, err := p.getLabel(task, types.LabelBackend); err == nil {
|
||||
return label
|
||||
}
|
||||
return "-" + cleanupSpecialChars(task.DiscoveryInfo.Name)
|
||||
|
|
|
@ -30,7 +30,7 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "false"),
|
||||
setLabels(types.LabelEnable, "false"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: false, // because label traefik.enable = false
|
||||
|
@ -40,7 +40,7 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true"),
|
||||
setLabels(types.LabelEnable, "true"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: true,
|
||||
|
@ -50,7 +50,7 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true"),
|
||||
setLabels(types.LabelEnable, "true"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: true,
|
||||
|
@ -60,7 +60,7 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "false"),
|
||||
setLabels(types.LabelEnable, "false"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: false, // because label traefik.enable = false (even wherek exposedByDefault = true)
|
||||
|
@ -70,9 +70,9 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.portIndex", "1",
|
||||
"traefik.port", "80"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPortIndex, "1",
|
||||
types.LabelPort, "80"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: false, // traefik.portIndex & traefik.port cannot be set both
|
||||
|
@ -82,8 +82,8 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.portIndex", "1"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPortIndex, "1"),
|
||||
discovery(setDiscoveryPorts("TCP", 80, "WEB HTTP", "TCP", 443, "WEB HTTPS")),
|
||||
),
|
||||
expected: true,
|
||||
|
@ -93,7 +93,7 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true"),
|
||||
setLabels(types.LabelEnable, "true"),
|
||||
discovery(setDiscoveryPorts("TCP", 80, "WEB HTTP", "TCP", 443, "WEB HTTPS")),
|
||||
),
|
||||
expected: true, // Default to first index
|
||||
|
@ -103,8 +103,8 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.portIndex", "1"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPortIndex, "1"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: false, // traefik.portIndex and discoveryPorts don't correspond
|
||||
|
@ -113,8 +113,8 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.portIndex", "0"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPortIndex, "0"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: true, // traefik.portIndex and discoveryPorts correspond
|
||||
|
@ -123,8 +123,8 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.port", "TRAEFIK"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPort, "TRAEFIK"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: false, // traefik.port is not an integer
|
||||
|
@ -133,8 +133,8 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.port", "443"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPort, "443"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: false, // traefik.port is not the same as discovery.port
|
||||
|
@ -143,8 +143,8 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(true))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.port", "80"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPort, "80"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: true, // traefik.port is the same as discovery.port
|
||||
|
@ -152,8 +152,8 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
}, {
|
||||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.port", "80"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPort, "80"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: true, // No healthCheck
|
||||
|
@ -162,8 +162,8 @@ func TestMesosTaskFilter(t *testing.T) {
|
|||
mesosTask: task(statuses(status(
|
||||
setState("TASK_RUNNING"),
|
||||
setHealthy(false))),
|
||||
setLabels("traefik.enable", "true",
|
||||
"traefik.port", "80"),
|
||||
setLabels(types.LabelEnable, "true",
|
||||
types.LabelPort, "80"),
|
||||
discovery(setDiscoveryPort("TCP", 80, "WEB")),
|
||||
),
|
||||
expected: false, // HealthCheck at false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue