Frontend rule and segment labels.
This commit is contained in:
parent
118b4eb07a
commit
a731b43b52
11 changed files with 40 additions and 30 deletions
|
@ -116,7 +116,7 @@ func (p *Provider) containerFilter(container dockerData) bool {
|
|||
for segmentName, labels := range segmentProperties {
|
||||
errPort = checkSegmentPort(labels, segmentName)
|
||||
|
||||
if len(p.getFrontendRule(container)) == 0 {
|
||||
if len(p.getFrontendRule(container, labels)) == 0 {
|
||||
log.Debugf("Filtering container with empty frontend rule %s %s", container.Name, segmentName)
|
||||
return false
|
||||
}
|
||||
|
@ -160,14 +160,14 @@ func (p *Provider) getFrontendName(container dockerData, idx int) string {
|
|||
if len(container.SegmentName) > 0 {
|
||||
name = getBackendName(container)
|
||||
} else {
|
||||
name = p.getFrontendRule(container) + "-" + strconv.Itoa(idx)
|
||||
name = p.getFrontendRule(container, container.SegmentLabels) + "-" + strconv.Itoa(idx)
|
||||
}
|
||||
|
||||
return provider.Normalize(name)
|
||||
}
|
||||
|
||||
func (p *Provider) getFrontendRule(container dockerData) string {
|
||||
if value := label.GetStringValue(container.SegmentLabels, label.TraefikFrontendRule, ""); len(value) != 0 {
|
||||
func (p *Provider) getFrontendRule(container dockerData, segmentLabels map[string]string) string {
|
||||
if value := label.GetStringValue(segmentLabels, label.TraefikFrontendRule, ""); len(value) != 0 {
|
||||
return value
|
||||
}
|
||||
|
||||
|
|
|
@ -634,9 +634,6 @@ func TestDockerTraefikFilter(t *testing.T) {
|
|||
t.Parallel()
|
||||
|
||||
dData := parseContainer(test.container)
|
||||
segmentProperties := label.ExtractTraefikLabels(dData.Labels)
|
||||
dData.SegmentLabels = segmentProperties[""]
|
||||
|
||||
actual := test.provider.containerFilter(dData)
|
||||
if actual != test.expected {
|
||||
t.Errorf("expected %v for %+v, got %+v", test.expected, test, actual)
|
||||
|
@ -746,12 +743,12 @@ func TestDockerGetFrontendRule(t *testing.T) {
|
|||
|
||||
dData := parseContainer(test.container)
|
||||
segmentProperties := label.ExtractTraefikLabels(dData.Labels)
|
||||
dData.SegmentLabels = segmentProperties[""]
|
||||
|
||||
provider := &Provider{
|
||||
Domain: "docker.localhost",
|
||||
}
|
||||
actual := provider.getFrontendRule(dData)
|
||||
|
||||
actual := provider.getFrontendRule(dData, segmentProperties[""])
|
||||
assert.Equal(t, test.expected, actual)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -469,8 +469,6 @@ func TestSwarmTraefikFilter(t *testing.T) {
|
|||
t.Parallel()
|
||||
|
||||
dData := parseService(test.service, test.networks)
|
||||
segmentProperties := label.ExtractTraefikLabels(dData.Labels)
|
||||
dData.SegmentLabels = segmentProperties[""]
|
||||
|
||||
actual := test.provider.containerFilter(dData)
|
||||
if actual != test.expected {
|
||||
|
@ -583,14 +581,13 @@ func TestSwarmGetFrontendRule(t *testing.T) {
|
|||
|
||||
dData := parseService(test.service, test.networks)
|
||||
segmentProperties := label.ExtractTraefikLabels(dData.Labels)
|
||||
dData.SegmentLabels = segmentProperties[""]
|
||||
|
||||
provider := &Provider{
|
||||
Domain: "docker.localhost",
|
||||
SwarmMode: true,
|
||||
}
|
||||
|
||||
actual := provider.getFrontendRule(dData)
|
||||
actual := provider.getFrontendRule(dData, segmentProperties[""])
|
||||
assert.Equal(t, test.expected, actual)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue