in pkg/datasource/k8s/controllers/hotspotrules_controller.go [155:195]
func parseSpecificItems(source []datasourcev1.SpecificValue) map[interface{}]int64 {
ret := make(map[interface{}]int64)
if len(source) == 0 {
return ret
}
for _, item := range source {
switch item.ValKind {
case "KindInt":
realVal, err := strconv.Atoi(item.ValStr)
if err != nil {
logging.Error(errors.Wrap(err, "parseSpecificItems error"), "Failed to parse value for int specific item", "itemValKind", item.ValKind, "itemValStr", item.ValStr)
continue
}
ret[realVal] = item.Threshold
case "KindString":
ret[item.ValStr] = item.Threshold
case "KindBool":
realVal, err := strconv.ParseBool(item.ValStr)
if err != nil {
logging.Error(errors.Wrap(err, "parseSpecificItems error"), "Failed to parse value for bool specific item", "itemValStr", item.ValStr)
continue
}
ret[realVal] = item.Threshold
case "KindFloat64":
realVal, err := strconv.ParseFloat(item.ValStr, 64)
if err != nil {
logging.Error(errors.Wrap(err, "parseSpecificItems error"), "Failed to parse value for float specific item", "itemValStr", item.ValStr)
continue
}
realVal, err = strconv.ParseFloat(fmt.Sprintf("%.5f", realVal), 64)
if err != nil {
logging.Error(errors.Wrap(err, "parseSpecificItems error"), "Failed to parse value for float specific item", "itemValStr", item.ValStr)
continue
}
ret[realVal] = item.Threshold
default:
logging.Error(errors.New("unsupported kind for specific item"), "", item.ValKind)
}
}
return ret
}