1
0
Fork 0

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:
Ludovic Fernandez 2017-07-10 16:58:12 +02:00 committed by SALLEYRON Julien
parent 2e84b1e556
commit d653a348b1
20 changed files with 390 additions and 330 deletions

View file

@ -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)

View file

@ -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