github.com/netdata/go.d.plugin@v0.58.1/modules/vsphere/discover/filter.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package discover 4 5 import ( 6 "time" 7 8 rs "github.com/netdata/go.d.plugin/modules/vsphere/resources" 9 ) 10 11 func (d Discoverer) matchHost(host *rs.Host) bool { 12 if d.HostMatcher == nil { 13 return true 14 } 15 return d.HostMatcher.Match(host) 16 } 17 18 func (d Discoverer) matchVM(vm *rs.VM) bool { 19 if d.VMMatcher == nil { 20 return true 21 } 22 return d.VMMatcher.Match(vm) 23 } 24 25 func (d Discoverer) removeUnmatched(res *rs.Resources) (removed int) { 26 d.Debug("discovering : filtering : starting filtering resources process") 27 t := time.Now() 28 numH, numV := len(res.Hosts), len(res.VMs) 29 removed += d.removeUnmatchedHosts(res.Hosts) 30 removed += d.removeUnmatchedVMs(res.VMs) 31 d.Infof("discovering : filtering : filtered %d/%d hosts, %d/%d vms, process took %s", 32 numH-len(res.Hosts), 33 numH, 34 numV-len(res.VMs), 35 numV, 36 time.Since(t)) 37 return 38 } 39 40 func (d Discoverer) removeUnmatchedHosts(hosts rs.Hosts) (removed int) { 41 for _, v := range hosts { 42 if !d.matchHost(v) { 43 removed++ 44 hosts.Remove(v.ID) 45 } 46 } 47 d.Debugf("discovering : filtering : removed %d unmatched hosts", removed) 48 return removed 49 } 50 51 func (d Discoverer) removeUnmatchedVMs(vms rs.VMs) (removed int) { 52 for _, v := range vms { 53 if !d.matchVM(v) { 54 removed++ 55 vms.Remove(v.ID) 56 } 57 } 58 d.Debugf("discovering : filtering : removed %d unmatched vms", removed) 59 return removed 60 }