70 lines
1.4 KiB
Go
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
|
||
|
|
}
|