github.com/netdata/go.d.plugin@v0.58.1/modules/example/init.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package example 4 5 import ( 6 "errors" 7 "github.com/netdata/go.d.plugin/agent/module" 8 ) 9 10 func (e *Example) validateConfig() error { 11 if e.Config.Charts.Num <= 0 && e.Config.HiddenCharts.Num <= 0 { 12 return errors.New("'charts->num' or `hidden_charts->num` must be > 0") 13 } 14 if e.Config.Charts.Num > 0 && e.Config.Charts.Dims <= 0 { 15 return errors.New("'charts->dimensions' must be > 0") 16 } 17 if e.Config.HiddenCharts.Num > 0 && e.Config.HiddenCharts.Dims <= 0 { 18 return errors.New("'hidden_charts->dimensions' must be > 0") 19 } 20 return nil 21 } 22 23 func (e *Example) initCharts() (*module.Charts, error) { 24 charts := &module.Charts{} 25 26 var ctx int 27 v := calcContextEvery(e.Config.Charts.Num, e.Config.Charts.Contexts) 28 for i := 0; i < e.Config.Charts.Num; i++ { 29 if i != 0 && v != 0 && ctx < (e.Config.Charts.Contexts-1) && i%v == 0 { 30 ctx++ 31 } 32 chart := newChart(i, ctx, e.Config.Charts.Labels, module.ChartType(e.Config.Charts.Type)) 33 34 if err := charts.Add(chart); err != nil { 35 return nil, err 36 } 37 } 38 39 ctx = 0 40 v = calcContextEvery(e.Config.HiddenCharts.Num, e.Config.HiddenCharts.Contexts) 41 for i := 0; i < e.Config.HiddenCharts.Num; i++ { 42 if i != 0 && v != 0 && ctx < (e.Config.HiddenCharts.Contexts-1) && i%v == 0 { 43 ctx++ 44 } 45 chart := newHiddenChart(i, ctx, e.Config.HiddenCharts.Labels, module.ChartType(e.Config.HiddenCharts.Type)) 46 47 if err := charts.Add(chart); err != nil { 48 return nil, err 49 } 50 } 51 52 return charts, nil 53 } 54 55 func calcContextEvery(charts, contexts int) int { 56 if contexts <= 1 { 57 return 0 58 } 59 if contexts > charts { 60 return 1 61 } 62 return charts / contexts 63 }