func()

in benchmarks/benchmark/tools/model-load-benchmark/config/config.go [63:93]


func (r *Resource) UnmarshalYAML(unmarshal func(interface{}) error) error {
	rawData := make(map[string]interface{})
	if err := unmarshal(&rawData); err != nil {
		return err
	}

	if baseVal, ok := rawData["base"].(string); ok {
		base, unit := parseValueUnit(baseVal)
		r.Base = base
		r.Unit = unit
	} else if baseVal, ok := rawData["base"].(int); ok {
		r.Base = baseVal
	}

	if stepVal, ok := rawData["step"].(int); ok {
		r.Step = stepVal
	}

	if maxVal, ok := rawData["max"].(string); ok {
		max, maxUnit := parseValueUnit(maxVal)
		if maxUnit != "" && maxUnit != r.Unit {
			return fmt.Errorf("unit mismatch between base and max: base unit is %s, but max unit is %s", r.Unit, maxUnit)
		}
		r.Max = max
	} else if maxVal, ok := rawData["max"].(int); ok {
		r.Max = maxVal
	}

	r.setDefaults()
	return nil
}