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  }