@@ -255,6 +255,9 @@ const (
255255 ExperimentalHwmonEnabledFlag = "experimental.hwmon.enabled"
256256 ExperimentalHwmonZonesFlag = "experimental.hwmon.zones"
257257
258+ // Experimental GPU flags
259+ ExperimentalGPUEnabledFlag = "experimental.gpu.enabled"
260+
258261// WARN: dev settings shouldn't be exposed as flags as flags are intended for end users
259262)
260263
@@ -409,6 +412,9 @@ func RegisterFlags(app *kingpin.Application) ConfigUpdaterFn {
409412 hwmonEnabled := app .Flag (ExperimentalHwmonEnabledFlag , "Enable experimental hwmon power monitoring" ).Default ("false" ).Bool ()
410413 hwmonZones := app .Flag (ExperimentalHwmonZonesFlag , "Hwmon zone filter (power labels to monitor)" ).Strings ()
411414
415+ // experimental GPU
416+ gpuEnabled := app .Flag (ExperimentalGPUEnabledFlag , "Enable experimental GPU power monitoring" ).Default ("false" ).Bool ()
417+
412418 return func (cfg * Config ) error {
413419 // Logging settings
414420 if flagsSet [LogLevelFlag ] {
@@ -481,6 +487,9 @@ func RegisterFlags(app *kingpin.Application) ConfigUpdaterFn {
481487 return err
482488 }
483489
490+ // Apply experimental GPU settings
491+ applyGPUConfig (cfg , flagsSet , gpuEnabled )
492+
484493 cfg .sanitize ()
485494 return cfg .Validate ()
486495 }
@@ -604,6 +613,28 @@ func applyHwmonFlags(hwmon *Hwmon, flagsSet map[string]bool, enabled *bool, zone
604613 }
605614}
606615
616+ // applyGPUConfig applies GPU configuration from flags
617+ func applyGPUConfig (cfg * Config , flagsSet map [string ]bool , enabled * bool ) {
618+ // Early exit if no GPU flags are set and config file does not have experimental section
619+ if ! hasGPUFlags (flagsSet ) && cfg .Experimental == nil {
620+ return
621+ }
622+
623+ // Initialize experimental section if needed
624+ if cfg .Experimental == nil {
625+ cfg .Experimental = & Experimental {}
626+ }
627+
628+ if flagsSet [ExperimentalGPUEnabledFlag ] {
629+ cfg .Experimental .GPU .Enabled = enabled
630+ }
631+ }
632+
633+ // hasGPUFlags returns true if any GPU experimental flags are set
634+ func hasGPUFlags (flagsSet map [string ]bool ) bool {
635+ return flagsSet [ExperimentalGPUEnabledFlag ]
636+ }
637+
607638// resolveNodeName resolves the node name using the following precedence:
608639// 1. CLI flag / config.yaml (--experimental.platform.redfish.node-name)
609640// 2. Kubernetes node name
0 commit comments