@@ -110,9 +110,15 @@ func validateConfig(ctx context.Context, cfg *limatype.LimaYAML) error {
110110 }
111111 }
112112
113- if cfg .VMOpts .QEMU .MinimumVersion != nil {
114- if _ , err := semver .NewVersion (* cfg .VMOpts .QEMU .MinimumVersion ); err != nil {
115- return fmt .Errorf ("field `vmOpts.qemu.minimumVersion` must be a semvar value, got %q: %w" , * cfg .VMOpts .QEMU .MinimumVersion , err )
113+ if cfg .VMOpts [limatype .QEMU ] != nil {
114+ var qemuOpts limatype.QEMUOpts
115+ if err := limayaml .Convert (cfg .VMOpts [limatype .QEMU ], & qemuOpts , "vmOpts.qemu" ); err != nil {
116+ return err
117+ }
118+ if qemuOpts .MinimumVersion != nil {
119+ if _ , err := semver .NewVersion (* qemuOpts .MinimumVersion ); err != nil {
120+ return fmt .Errorf ("field `vmOpts.qemu.minimumVersion` must be a semvar value, got %q: %w" , * qemuOpts .MinimumVersion , err )
121+ }
116122 }
117123 }
118124
@@ -146,25 +152,32 @@ func (l *LimaQemuDriver) FillConfig(ctx context.Context, cfg *limatype.LimaYAML,
146152 cfg .Video .VNC .Display = ptr .Of ("127.0.0.1:0,to=9" )
147153 }
148154
149- if cfg .VMOpts . QEMU . CPUType == nil {
150- cfg .VMOpts . QEMU . CPUType = limatype.CPUType {}
155+ if cfg .VMOpts == nil {
156+ cfg .VMOpts = limatype.VMOpts {}
151157 }
152-
153- //nolint:staticcheck // Migration of top-level CPUTYPE if specified
154- if len (cfg .CPUType ) > 0 {
155- logrus .Warn ("The top-level `cpuType` field is deprecated and will be removed in a future release. Please migrate to `vmOpts.qemu.cpuType`." )
156- for arch , v := range cfg .CPUType {
157- if v == "" {
158- continue
159- }
160- if existing , ok := cfg .VMOpts .QEMU .CPUType [arch ]; ok && existing != "" && existing != v {
161- logrus .Warnf ("Conflicting cpuType for arch %q: top-level=%q, vmOpts.qemu=%q; using vmOpts.qemu value" , arch , v , existing )
162- continue
163- }
164- cfg .VMOpts .QEMU .CPUType [arch ] = v
158+ var qemuOpts limatype.QEMUOpts
159+ if err := limayaml .Convert (cfg .VMOpts [limatype .QEMU ], & qemuOpts , "vmOpts.qemu" ); err != nil {
160+ logrus .WithError (err ).Warnf ("Couldn't convert %q" , cfg .VMOpts [limatype .QEMU ])
161+ }
162+ if qemuOpts .CPUType == nil {
163+ qemuOpts .CPUType = limatype.CPUType {}
164+ }
165+ //nolint:staticcheck // Migration of top-level CPUType if specified
166+ for arch , v := range cfg .CPUType {
167+ if v == "" {
168+ continue
165169 }
166- cfg .CPUType = nil
170+ if existing , ok := qemuOpts .CPUType [arch ]; ok && existing != "" && existing != v {
171+ logrus .Warnf ("Conflicting cpuType for arch %q: top-level=%q, vmOpts.qemu=%q; using vmOpts.qemu value" , arch , v , existing )
172+ continue
173+ }
174+ qemuOpts .CPUType [arch ] = v
175+ }
176+ var opts any
177+ if err := limayaml .Convert (qemuOpts , & opts , "" ); err != nil {
178+ logrus .WithError (err ).Warnf ("Couldn't convert %+v" , qemuOpts )
167179 }
180+ cfg .VMOpts [limatype .QEMU ] = opts
168181
169182 mountTypesUnsupported := make (map [string ]struct {})
170183 for _ , f := range cfg .MountTypesUnsupported {
0 commit comments