Skip to content

Commit e2f09da

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 86a7a5a commit e2f09da

File tree

5 files changed

+39
-39
lines changed

5 files changed

+39
-39
lines changed

pkg/cidata/cidata.go

Lines changed: 12 additions & 17 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) (*TemplateArgs, error) {
121+
func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort, vsockPort int, virtioPort string, rosettaEnabled, rosettaBinFmt bool) (*TemplateArgs, error) {
122122
if err := limayaml.Validate(instConfig, false); err != nil {
123123
return nil, err
124124
}
@@ -138,19 +138,14 @@ 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-
Param: instConfig.Param,
147-
}
148-
149-
if instConfig.VMOpts.VZ.Rosetta.Enabled != nil {
150-
args.RosettaEnabled = *instConfig.VMOpts.VZ.Rosetta.Enabled
151-
}
152-
if instConfig.VMOpts.VZ.Rosetta.BinFmt != nil {
153-
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+
Param: instConfig.Param,
154149
}
155150

156151
firstUsernetIndex := limayaml.FirstUsernetIndex(instConfig)
@@ -350,7 +345,7 @@ func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, i
350345
}
351346

352347
func GenerateCloudConfig(ctx context.Context, instDir, name string, instConfig *limatype.LimaYAML) error {
353-
args, err := templateArgs(ctx, false, instDir, name, instConfig, 0, 0, 0, "")
348+
args, err := templateArgs(ctx, false, instDir, name, instConfig, 0, 0, 0, "", false, false)
354349
if err != nil {
355350
return err
356351
}
@@ -372,8 +367,8 @@ func GenerateCloudConfig(ctx context.Context, instDir, name string, instConfig *
372367
return os.WriteFile(filepath.Join(instDir, filenames.CloudConfig), config, 0o444)
373368
}
374369

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

pkg/driver/driver.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,6 @@ type DriverFeatures struct {
106106
CanRunGUI bool `json:"canRunGui,omitempty"`
107107
DynamicSSHAddress bool `json:"dynamicSSHAddress"`
108108
SkipSocketForwarding bool `json:"skipSocketForwarding"`
109+
RosettaEnabled bool `json:"rosettaEnabled"`
110+
RosettaBinFmt bool `json:"rosettaBinFmt"`
109111
}

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,10 +163,18 @@ func New(ctx context.Context, instName string, stdout io.Writer, signalCh chan o
163163
vSockPort := limaDriver.Info().VsockPort
164164
virtioPort := limaDriver.Info().VirtioPort
165165

166+
rosettaEnabled := limaDriver.Info().Features.RosettaEnabled
167+
rosettaBinFmt := limaDriver.Info().Features.RosettaBinFmt
168+
// Disable Rosetta in Plain mode
169+
if *inst.Config.Plain {
170+
rosettaEnabled = false
171+
rosettaBinFmt = false
172+
}
173+
166174
if err := cidata.GenerateCloudConfig(ctx, inst.Dir, instName, inst.Config); err != nil {
167175
return nil, err
168176
}
169-
if err := cidata.GenerateISO9660(ctx, limaDriver, inst.Dir, instName, inst.Config, udpDNSLocalPort, tcpDNSLocalPort, o.guestAgentBinary, o.nerdctlArchive, vSockPort, virtioPort); err != nil {
177+
if err := cidata.GenerateISO9660(ctx, limaDriver, inst.Dir, instName, inst.Config, udpDNSLocalPort, tcpDNSLocalPort, o.guestAgentBinary, o.nerdctlArchive, vSockPort, virtioPort, rosettaEnabled, rosettaBinFmt); err != nil {
170178
return nil, err
171179
}
172180

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)