Files
2026-01-15 09:58:01 +00:00

70 lines
1.4 KiB
Go

package harvester
import (
_ "embed"
"fmt"
"gopkg.in/yaml.v3"
)
//go:embed values.yaml
var valuesYAML []byte
type Defaults struct {
CP_CPU int
CP_Mem int
CP_Disk int
ChartRepo string
ChartName string
ChartVersion string
// [NEW] Default UserData for this provider
UserData string
}
func GetDefaults() (Defaults, error) {
var raw map[string]interface{}
if err := yaml.Unmarshal(valuesYAML, &raw); err != nil {
return Defaults{}, fmt.Errorf("failed to parse harvester base values: %w", err)
}
d := Defaults{
CP_CPU: 4, CP_Mem: 8, CP_Disk: 40, // Safety Fallbacks
}
if defs, ok := raw["_defaults"].(map[string]interface{}); ok {
if cp, ok := defs["controlPlaneProfile"].(map[string]interface{}); ok {
if v, ok := cp["cpuCores"].(int); ok {
d.CP_CPU = v
}
if v, ok := cp["memoryGb"].(int); ok {
d.CP_Mem = v
}
if v, ok := cp["diskGb"].(int); ok {
d.CP_Disk = v
}
}
if chart, ok := defs["helmChart"].(map[string]interface{}); ok {
if v, ok := chart["repo"].(string); ok {
d.ChartRepo = v
}
if v, ok := chart["name"].(string); ok {
d.ChartName = v
}
if v, ok := chart["version"].(string); ok {
d.ChartVersion = v
}
}
// [NEW] Extract UserData
if v, ok := defs["userData"].(string); ok {
d.UserData = v
}
}
return d, nil
}
func GetBaseValues() []byte {
return valuesYAML
}