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
}