From 128ed765e772f11724b454cbb01f84fc0c67c206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20=C5=A0trauch?= Date: Sun, 5 Sep 2021 22:00:08 +0200 Subject: [PATCH] Daemon: don't return not matched labels when searching --- server/discovery.go | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/server/discovery.go b/server/discovery.go index c125d18..162011e 100644 --- a/server/discovery.go +++ b/server/discovery.go @@ -155,19 +155,24 @@ func (d *Discoveries) Filter(labelsFilter []string) []Discovery { var found bool if len(labelsFilter) > 0 { for _, discovery := range d.activeServers { + newDiscovery := discovery + newDiscovery.Labels = Labels{} + found = false for _, label := range discovery.Labels { for _, labelFilter := range labelsFilter { if label.String() == labelFilter { - newSet = append(newSet, discovery) found = true + newDiscovery.Labels = append(newDiscovery.Labels, label) break } } - if found { - break - } } + + if found { + newSet = append(newSet, newDiscovery) + } + } } @@ -182,18 +187,27 @@ func (d *Discoveries) FilterPrefix(prefixes []string) []Discovery { var found bool if len(prefixes) > 0 { for _, discovery := range d.activeServers { + newDiscovery := discovery + newDiscovery.Labels = Labels{} + found = false + + if found { + newSet = append(newSet, newDiscovery) + } + for _, label := range discovery.Labels { for _, prefix := range prefixes { if strings.HasPrefix(label.String(), prefix) { - newSet = append(newSet, discovery) found = true + newDiscovery.Labels = append(newDiscovery.Labels, label) break } } - if found { - break - } + } + + if found { + newSet = append(newSet, newDiscovery) } }