github.com/netdata/go.d.plugin@v0.58.1/modules/vsphere/init.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package vsphere
     4  
     5  import (
     6  	"errors"
     7  
     8  	"github.com/netdata/go.d.plugin/modules/vsphere/client"
     9  	"github.com/netdata/go.d.plugin/modules/vsphere/discover"
    10  	"github.com/netdata/go.d.plugin/modules/vsphere/scrape"
    11  )
    12  
    13  func (vs *VSphere) validateConfig() error {
    14  	const minRecommendedUpdateEvery = 20
    15  
    16  	if vs.URL == "" {
    17  		return errors.New("URL is not set")
    18  	}
    19  	if vs.Username == "" || vs.Password == "" {
    20  		return errors.New("username or password not set")
    21  	}
    22  	if vs.UpdateEvery < minRecommendedUpdateEvery {
    23  		vs.Warningf("update_every is to low, minimum recommended is %d", minRecommendedUpdateEvery)
    24  	}
    25  	return nil
    26  }
    27  
    28  func (vs *VSphere) initClient() (*client.Client, error) {
    29  	config := client.Config{
    30  		URL:       vs.URL,
    31  		User:      vs.Username,
    32  		Password:  vs.Password,
    33  		Timeout:   vs.Timeout.Duration,
    34  		TLSConfig: vs.Client.TLSConfig,
    35  	}
    36  	return client.New(config)
    37  }
    38  
    39  func (vs *VSphere) initDiscoverer(c *client.Client) error {
    40  	d := discover.New(c)
    41  	d.Logger = vs.Logger
    42  
    43  	hm, err := vs.HostsInclude.Parse()
    44  	if err != nil {
    45  		return err
    46  	}
    47  	if hm != nil {
    48  		d.HostMatcher = hm
    49  	}
    50  	vmm, err := vs.VMsInclude.Parse()
    51  	if err != nil {
    52  		return err
    53  	}
    54  	if vmm != nil {
    55  		d.VMMatcher = vmm
    56  	}
    57  
    58  	vs.discoverer = d
    59  	return nil
    60  }
    61  
    62  func (vs *VSphere) initScraper(c *client.Client) {
    63  	ms := scrape.New(c)
    64  	ms.Logger = vs.Logger
    65  	vs.scraper = ms
    66  }