func()

in pkg/datasource/k8s/controllers/systemrules_controller.go [105:148]


func (r *SystemRulesReconciler) assembleSystemRules(rs *datasourcev1.SystemRules) []*system.Rule {
	ret := make([]*system.Rule, 0, len(rs.Spec.Rules))
	log := r.Logger
	for _, rule := range rs.Spec.Rules {
		systemRule := &system.Rule{
			ID:           rule.Id,
			MetricType:   0,
			TriggerCount: 0,
			Strategy:     0,
		}

		switch rule.MetricType {
		case "Load":
			systemRule.MetricType = system.Load
			systemRule.TriggerCount = float64(rule.TriggerCount) / 100
		case "AvgRT":
			systemRule.MetricType = system.AvgRT
			systemRule.TriggerCount = float64(rule.TriggerCount)
		case "Concurrency":
			systemRule.MetricType = system.Concurrency
			systemRule.TriggerCount = float64(rule.TriggerCount)
		case "InboundQPS":
			systemRule.MetricType = system.InboundQPS
			systemRule.TriggerCount = float64(rule.TriggerCount)
		case "CpuUsage":
			systemRule.MetricType = system.CpuUsage
			systemRule.TriggerCount = float64(rule.TriggerCount) / 100
		default:
			log.Error(errors.New("unsupported MetricType for system.Rule"), "", "metricType", rule.MetricType)
			continue
		}
		switch rule.Strategy {
		case "NoAdaptive":
			systemRule.Strategy = system.NoAdaptive
		case "BBR":
			systemRule.Strategy = system.BBR
		default:
			log.Error(errors.New("unsupported Strategy for system.Rule"), "", "strategy", rule.Strategy)
			continue
		}
		ret = append(ret, systemRule)
	}
	return ret
}