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 }