Skip to content

Commit d47dbe8

Browse files
committed
Don't read VMOpts.VZ struct from cidata directly
This is supposed to be provided by the driver, and passed to the hostagent as features. The cidata and hostagent doesn't know VZ. Note: this also excludes the VMOpts.VZ from default and override, similar to the change made to VMOpts.QEMU already. It is unknown. Signed-off-by: Anders F Björklund <[email protected]>
1 parent c5d15cd commit d47dbe8

File tree

5 files changed

+40
-40
lines changed

5 files changed

+40
-40
lines changed

pkg/cidata/cidata.go

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func setupEnv(instConfigEnv map[string]string, propagateProxyEnv bool, slirpGate
118118
return env, nil
119119
}
120120

121-
func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort, vsockPort int, virtioPort string, noCloudInit bool) (*TemplateArgs, error) {
121+
func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort, vsockPort int, virtioPort string, noCloudInit, rosettaEnabled, rosettaBinFmt bool) (*TemplateArgs, error) {
122122
if err := limayaml.Validate(instConfig, false); err != nil {
123123
return nil, err
124124
}
@@ -138,20 +138,15 @@ func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, i
138138
Containerd: Containerd{System: *instConfig.Containerd.System, User: *instConfig.Containerd.User, Archive: archive},
139139
SlirpNICName: networks.SlirpNICName,
140140

141-
VMType: *instConfig.VMType,
142-
VSockPort: vsockPort,
143-
VirtioPort: virtioPort,
144-
Plain: *instConfig.Plain,
145-
TimeZone: *instConfig.TimeZone,
146-
NoCloudInit: noCloudInit,
147-
Param: instConfig.Param,
148-
}
149-
150-
if instConfig.VMOpts.VZ.Rosetta.Enabled != nil {
151-
args.RosettaEnabled = *instConfig.VMOpts.VZ.Rosetta.Enabled
152-
}
153-
if instConfig.VMOpts.VZ.Rosetta.BinFmt != nil {
154-
args.RosettaBinFmt = *instConfig.VMOpts.VZ.Rosetta.BinFmt
141+
VMType: *instConfig.VMType,
142+
VSockPort: vsockPort,
143+
VirtioPort: virtioPort,
144+
RosettaEnabled: rosettaEnabled,
145+
RosettaBinFmt: rosettaBinFmt,
146+
Plain: *instConfig.Plain,
147+
TimeZone: *instConfig.TimeZone,
148+
NoCloudInit: noCloudInit,
149+
Param: instConfig.Param,
155150
}
156151

157152
firstUsernetIndex := limayaml.FirstUsernetIndex(instConfig)
@@ -351,7 +346,7 @@ func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, i
351346
}
352347

353348
func GenerateCloudConfig(ctx context.Context, instDir, name string, instConfig *limatype.LimaYAML) error {
354-
args, err := templateArgs(ctx, false, instDir, name, instConfig, 0, 0, 0, "", false)
349+
args, err := templateArgs(ctx, false, instDir, name, instConfig, 0, 0, 0, "", false, false, false)
355350
if err != nil {
356351
return err
357352
}
@@ -373,8 +368,8 @@ func GenerateCloudConfig(ctx context.Context, instDir, name string, instConfig *
373368
return os.WriteFile(filepath.Join(instDir, filenames.CloudConfig), config, 0o444)
374369
}
375370

376-
func GenerateISO9660(ctx context.Context, drv driver.Driver, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort int, guestAgentBinary, nerdctlArchive string, vsockPort int, virtioPort string, noCloudInit bool) error {
377-
args, err := templateArgs(ctx, true, instDir, name, instConfig, udpDNSLocalPort, tcpDNSLocalPort, vsockPort, virtioPort, noCloudInit)
371+
func GenerateISO9660(ctx context.Context, drv driver.Driver, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort int, guestAgentBinary, nerdctlArchive string, vsockPort int, virtioPort string, noCloudInit, rosettaEnabled, rosettaBinFmt bool) error {
372+
args, err := templateArgs(ctx, true, instDir, name, instConfig, udpDNSLocalPort, tcpDNSLocalPort, vsockPort, virtioPort, noCloudInit, rosettaEnabled, rosettaBinFmt)
378373
if err != nil {
379374
return err
380375
}

pkg/driver/driver.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,6 @@ type DriverFeatures struct {
107107
DynamicSSHAddress bool `json:"dynamicSSHAddress"`
108108
SkipSocketForwarding bool `json:"skipSocketForwarding"`
109109
NoCloudInit bool `json:"noCloudInit"`
110+
RosettaEnabled bool `json:"rosettaEnabled"`
111+
RosettaBinFmt bool `json:"rosettaBinFmt"`
110112
}

pkg/driver/vz/vz_driver_darwin.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,11 @@ const Enabled = true
7474
type LimaVzDriver struct {
7575
Instance *limatype.Instance
7676

77-
SSHLocalPort int
78-
vSockPort int
79-
virtioPort string
77+
SSHLocalPort int
78+
vSockPort int
79+
virtioPort string
80+
rosettaEnabled bool
81+
rosettaBinFmt bool
8082

8183
machine *virtualMachineWrapper
8284
}
@@ -106,6 +108,15 @@ func (l *LimaVzDriver) Configure(inst *limatype.Instance) *driver.ConfiguredDriv
106108
}
107109
}
108110

111+
if runtime.GOOS == "darwin" && limayaml.IsNativeArch(limatype.AARCH64) {
112+
if l.Instance.Config.VMOpts.VZ.Rosetta.Enabled != nil {
113+
l.rosettaEnabled = *l.Instance.Config.VMOpts.VZ.Rosetta.Enabled
114+
}
115+
}
116+
if l.Instance.Config.VMOpts.VZ.Rosetta.BinFmt != nil {
117+
l.rosettaBinFmt = *l.Instance.Config.VMOpts.VZ.Rosetta.BinFmt
118+
}
119+
109120
return &driver.ConfiguredDriver{
110121
Driver: l,
111122
}
@@ -351,6 +362,8 @@ func (l *LimaVzDriver) Info() driver.Info {
351362
DynamicSSHAddress: false,
352363
SkipSocketForwarding: false,
353364
CanRunGUI: guiFlag,
365+
RosettaEnabled: l.rosettaEnabled,
366+
RosettaBinFmt: l.rosettaBinFmt,
354367
}
355368
return info
356369
}

pkg/hostagent/hostagent.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,19 @@ func New(ctx context.Context, instName string, stdout io.Writer, signalCh chan o
163163
vSockPort := limaDriver.Info().VsockPort
164164
virtioPort := limaDriver.Info().VirtioPort
165165
noCloudInit := limaDriver.Info().Features.NoCloudInit
166+
rosettaEnabled := limaDriver.Info().Features.RosettaEnabled
167+
rosettaBinFmt := limaDriver.Info().Features.RosettaBinFmt
168+
169+
// Disable Rosetta in Plain mode
170+
if *inst.Config.Plain {
171+
rosettaEnabled = false
172+
rosettaBinFmt = false
173+
}
166174

167175
if err := cidata.GenerateCloudConfig(ctx, inst.Dir, instName, inst.Config); err != nil {
168176
return nil, err
169177
}
170-
if err := cidata.GenerateISO9660(ctx, limaDriver, inst.Dir, instName, inst.Config, udpDNSLocalPort, tcpDNSLocalPort, o.guestAgentBinary, o.nerdctlArchive, vSockPort, virtioPort, noCloudInit); err != nil {
178+
if err := cidata.GenerateISO9660(ctx, limaDriver, inst.Dir, instName, inst.Config, udpDNSLocalPort, tcpDNSLocalPort, o.guestAgentBinary, o.nerdctlArchive, vSockPort, virtioPort, noCloudInit, rosettaEnabled, rosettaBinFmt); err != nil {
171179
return nil, err
172180
}
173181

pkg/limayaml/defaults.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -768,22 +768,6 @@ func FillDefault(ctx context.Context, y, d, o *limatype.LimaYAML, filePath strin
768768
y.CACertificates.Files = unique(slices.Concat(d.CACertificates.Files, y.CACertificates.Files, o.CACertificates.Files))
769769
y.CACertificates.Certs = unique(slices.Concat(d.CACertificates.Certs, y.CACertificates.Certs, o.CACertificates.Certs))
770770

771-
if runtime.GOOS == "darwin" && IsNativeArch(limatype.AARCH64) {
772-
if y.VMOpts.VZ.Rosetta.Enabled == nil {
773-
y.VMOpts.VZ.Rosetta.Enabled = d.VMOpts.VZ.Rosetta.Enabled
774-
}
775-
if o.VMOpts.VZ.Rosetta.Enabled != nil {
776-
y.VMOpts.VZ.Rosetta.Enabled = o.VMOpts.VZ.Rosetta.Enabled
777-
}
778-
}
779-
780-
if y.VMOpts.VZ.Rosetta.BinFmt == nil {
781-
y.VMOpts.VZ.Rosetta.BinFmt = d.VMOpts.VZ.Rosetta.BinFmt
782-
}
783-
if o.VMOpts.VZ.Rosetta.BinFmt != nil {
784-
y.VMOpts.VZ.Rosetta.BinFmt = o.VMOpts.VZ.Rosetta.BinFmt
785-
}
786-
787771
if y.NestedVirtualization == nil {
788772
y.NestedVirtualization = d.NestedVirtualization
789773
}
@@ -831,8 +815,6 @@ func fixUpForPlainMode(y *limatype.LimaYAML) {
831815
y.Mounts = nil
832816
y.Containerd.System = ptr.Of(false)
833817
y.Containerd.User = ptr.Of(false)
834-
y.VMOpts.VZ.Rosetta.BinFmt = ptr.Of(false)
835-
y.VMOpts.VZ.Rosetta.Enabled = ptr.Of(false)
836818
y.TimeZone = ptr.Of("")
837819
}
838820

0 commit comments

Comments
 (0)