func()

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)
	}
}