in clusterloader2/pkg/measurement/common/system_pod_metrics.go [77:122]
func (m *systemPodMetricsMeasurement) Execute(config *measurement.Config) ([]measurement.Summary, error) {
systemPodMetricsEnabled, err := util.GetBoolOrDefault(config.Params, systemPodMetricsEnabledFlagName, false)
if err != nil {
return nil, err
}
if !systemPodMetricsEnabled {
klog.V(2).Info("skipping collection of system pod metrics")
return []measurement.Summary{}, nil
}
metrics, err := getPodMetrics(config)
if err != nil {
return nil, err
}
action, err := util.GetString(config.Params, "action")
if err != nil {
return nil, err
}
overrides, err := getThresholdOverrides(config)
if err != nil {
return nil, err
}
switch action {
case "start":
m.initSnapshot = metrics
return nil, nil
case "gather":
if m.initSnapshot == nil {
return nil, fmt.Errorf("start needs to be executed before gather")
}
subtractInitialRestartCounts(metrics, m.initSnapshot)
summary, err := buildSummary(metrics)
if err != nil {
return nil, err
}
if err = validateRestartCounts(metrics, config, overrides); err != nil {
return summary, err
}
return summary, nil
default:
return nil, fmt.Errorf("unknown action %v", action)
}
}