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  }