Skip to content

Commit 2d7ed91

Browse files
authored
Merge pull request #2669 from alexandear/refactor/cidata
Refactor pkg/cidata: avoid y, simplify private func
2 parents 9877e14 + ed17325 commit 2d7ed91

File tree

3 files changed

+39
-49
lines changed

3 files changed

+39
-49
lines changed

pkg/cidata/cidata.go

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ var netLookupIP = func(host string) []net.IP {
3838
return ips
3939
}
4040

41-
func setupEnv(y *limayaml.LimaYAML, args TemplateArgs) (map[string]string, error) {
41+
func setupEnv(instConfigEnv map[string]string, propagateProxyEnv bool, slirpGateway string) (map[string]string, error) {
4242
// Start with the proxy variables from the system settings.
4343
env, err := osutil.ProxySettings()
4444
if err != nil {
4545
return env, err
4646
}
4747
// env.* settings from lima.yaml override system settings without giving a warning
48-
for name, value := range y.Env {
48+
for name, value := range instConfigEnv {
4949
env[name] = value
5050
}
5151
// Current process environment setting override both system settings and env.*
@@ -54,7 +54,7 @@ func setupEnv(y *limayaml.LimaYAML, args TemplateArgs) (map[string]string, error
5454
for i, name := range lowerVars {
5555
upperVars[i] = strings.ToUpper(name)
5656
}
57-
if *y.PropagateProxyEnv {
57+
if propagateProxyEnv {
5858
for _, name := range append(lowerVars, upperVars...) {
5959
if value, ok := os.LookupEnv(name); ok {
6060
if _, ok := env[name]; ok && value != env[name] {
@@ -80,7 +80,7 @@ func setupEnv(y *limayaml.LimaYAML, args TemplateArgs) (map[string]string, error
8080

8181
for _, ip := range netLookupIP(u.Hostname()) {
8282
if ip.IsLoopback() {
83-
newHost := args.SlirpGateway
83+
newHost := slirpGateway
8484
if u.Port() != "" {
8585
newHost = net.JoinHostPort(newHost, u.Port())
8686
}
@@ -111,8 +111,8 @@ func setupEnv(y *limayaml.LimaYAML, args TemplateArgs) (map[string]string, error
111111
return env, nil
112112
}
113113

114-
func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort int, nerdctlArchive string, vsockPort int, virtioPort string) error {
115-
if err := limayaml.Validate(y, false); err != nil {
114+
func GenerateISO9660(instDir, name string, instConfig *limayaml.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort int, nerdctlArchive string, vsockPort int, virtioPort string) error {
115+
if err := limayaml.Validate(instConfig, false); err != nil {
116116
return err
117117
}
118118
u, err := osutil.LimaUser(true)
@@ -128,26 +128,26 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
128128
User: u.Username,
129129
UID: uid,
130130
Home: fmt.Sprintf("/home/%s.linux", u.Username),
131-
GuestInstallPrefix: *y.GuestInstallPrefix,
132-
UpgradePackages: *y.UpgradePackages,
133-
Containerd: Containerd{System: *y.Containerd.System, User: *y.Containerd.User},
131+
GuestInstallPrefix: *instConfig.GuestInstallPrefix,
132+
UpgradePackages: *instConfig.UpgradePackages,
133+
Containerd: Containerd{System: *instConfig.Containerd.System, User: *instConfig.Containerd.User},
134134
SlirpNICName: networks.SlirpNICName,
135135

136-
RosettaEnabled: *y.Rosetta.Enabled,
137-
RosettaBinFmt: *y.Rosetta.BinFmt,
138-
VMType: *y.VMType,
136+
RosettaEnabled: *instConfig.Rosetta.Enabled,
137+
RosettaBinFmt: *instConfig.Rosetta.BinFmt,
138+
VMType: *instConfig.VMType,
139139
VSockPort: vsockPort,
140140
VirtioPort: virtioPort,
141-
Plain: *y.Plain,
142-
TimeZone: *y.TimeZone,
143-
Param: y.Param,
141+
Plain: *instConfig.Plain,
142+
TimeZone: *instConfig.TimeZone,
143+
Param: instConfig.Param,
144144
}
145145

146-
firstUsernetIndex := limayaml.FirstUsernetIndex(y)
146+
firstUsernetIndex := limayaml.FirstUsernetIndex(instConfig)
147147
var subnet net.IP
148148

149149
if firstUsernetIndex != -1 {
150-
usernetName := y.Networks[firstUsernetIndex].Lima
150+
usernetName := instConfig.Networks[firstUsernetIndex].Lima
151151
subnet, err = usernet.Subnet(usernetName)
152152
if err != nil {
153153
return err
@@ -160,7 +160,7 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
160160
return err
161161
}
162162
args.SlirpGateway = usernet.GatewayIP(subnet)
163-
if *y.VMType == limayaml.VZ {
163+
if *instConfig.VMType == limayaml.VZ {
164164
args.SlirpDNS = usernet.GatewayIP(subnet)
165165
} else {
166166
args.SlirpDNS = usernet.DNSIP(subnet)
@@ -171,7 +171,7 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
171171
// change instance id on every boot so network config will be processed again
172172
args.IID = fmt.Sprintf("iid-%d", time.Now().Unix())
173173

174-
pubKeys, err := sshutil.DefaultPubKeys(*y.SSH.LoadDotSSHPubKeys)
174+
pubKeys, err := sshutil.DefaultPubKeys(*instConfig.SSH.LoadDotSSHPubKeys)
175175
if err != nil {
176176
return err
177177
}
@@ -183,7 +183,7 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
183183
}
184184

185185
var fstype string
186-
switch *y.MountType {
186+
switch *instConfig.MountType {
187187
case limayaml.REVSSHFS:
188188
fstype = "sshfs"
189189
case limayaml.NINEP:
@@ -195,7 +195,7 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
195195
if err != nil {
196196
return err
197197
}
198-
for i, f := range y.Mounts {
198+
for i, f := range instConfig.Mounts {
199199
tag := fmt.Sprintf("mount%d", i)
200200
location, err := localpathutil.Expand(f.Location)
201201
if err != nil {
@@ -231,7 +231,7 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
231231
}
232232
}
233233

234-
switch *y.MountType {
234+
switch *instConfig.MountType {
235235
case limayaml.REVSSHFS:
236236
args.MountType = "reverse-sshfs"
237237
case limayaml.NINEP:
@@ -240,7 +240,7 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
240240
args.MountType = "virtiofs"
241241
}
242242

243-
for i, d := range y.AdditionalDisks {
243+
for i, d := range instConfig.AdditionalDisks {
244244
format := true
245245
if d.Format != nil {
246246
format = *d.Format
@@ -259,26 +259,26 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
259259
}
260260

261261
args.Networks = append(args.Networks, Network{MACAddress: limayaml.MACAddress(instDir), Interface: networks.SlirpNICName})
262-
for i, nw := range y.Networks {
262+
for i, nw := range instConfig.Networks {
263263
if i == firstUsernetIndex {
264264
continue
265265
}
266266
args.Networks = append(args.Networks, Network{MACAddress: nw.MACAddress, Interface: nw.Interface})
267267
}
268268

269-
args.Env, err = setupEnv(y, args)
269+
args.Env, err = setupEnv(instConfig.Env, *instConfig.PropagateProxyEnv, args.SlirpGateway)
270270
if err != nil {
271271
return err
272272
}
273273

274274
switch {
275-
case len(y.DNS) > 0:
276-
for _, addr := range y.DNS {
275+
case len(instConfig.DNS) > 0:
276+
for _, addr := range instConfig.DNS {
277277
args.DNSAddresses = append(args.DNSAddresses, addr.String())
278278
}
279-
case firstUsernetIndex != -1 || *y.VMType == limayaml.VZ:
279+
case firstUsernetIndex != -1 || *instConfig.VMType == limayaml.VZ:
280280
args.DNSAddresses = append(args.DNSAddresses, args.SlirpDNS)
281-
case *y.HostResolver.Enabled:
281+
case *instConfig.HostResolver.Enabled:
282282
args.UDPDNSLocalPort = udpDNSLocalPort
283283
args.TCPDNSLocalPort = tcpDNSLocalPort
284284
args.DNSAddresses = append(args.DNSAddresses, args.SlirpDNS)
@@ -289,9 +289,9 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
289289
}
290290
}
291291

292-
args.CACerts.RemoveDefaults = y.CACertificates.RemoveDefaults
292+
args.CACerts.RemoveDefaults = instConfig.CACertificates.RemoveDefaults
293293

294-
for _, path := range y.CACertificates.Files {
294+
for _, path := range instConfig.CACertificates.Files {
295295
expanded, err := localpathutil.Expand(path)
296296
if err != nil {
297297
return err
@@ -306,14 +306,14 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
306306
args.CACerts.Trusted = append(args.CACerts.Trusted, cert)
307307
}
308308

309-
for _, content := range y.CACertificates.Certs {
309+
for _, content := range instConfig.CACertificates.Certs {
310310
cert := getCert(content)
311311
args.CACerts.Trusted = append(args.CACerts.Trusted, cert)
312312
}
313313

314-
args.BootCmds = getBootCmds(y.Provision)
314+
args.BootCmds = getBootCmds(instConfig.Provision)
315315

316-
for _, f := range y.Provision {
316+
for _, f := range instConfig.Provision {
317317
if f.Mode == limayaml.ProvisionModeDependency && *f.SkipDefaultDependencyResolution {
318318
args.SkipDefaultDependencyResolution = true
319319
}
@@ -328,7 +328,7 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
328328
return err
329329
}
330330

331-
for i, f := range y.Provision {
331+
for i, f := range instConfig.Provision {
332332
switch f.Mode {
333333
case limayaml.ProvisionModeSystem, limayaml.ProvisionModeUser, limayaml.ProvisionModeDependency:
334334
layout = append(layout, iso9660util.Entry{
@@ -344,7 +344,7 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort
344344
}
345345
}
346346

347-
guestAgentBinary, err := usrlocalsharelima.GuestAgentBinary(*y.OS, *y.Arch)
347+
guestAgentBinary, err := usrlocalsharelima.GuestAgentBinary(*instConfig.OS, *instConfig.Arch)
348348
if err != nil {
349349
return err
350350
}

pkg/cidata/cidata_test.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ import (
77
"testing"
88

99
"github.com/lima-vm/lima/pkg/networks"
10-
"github.com/lima-vm/lima/pkg/ptr"
1110

12-
"github.com/lima-vm/lima/pkg/limayaml"
1311
"gotest.tools/v3/assert"
1412
)
1513

@@ -45,8 +43,7 @@ func TestSetupEnv(t *testing.T) {
4543
t.Run(httpProxy.Host, func(t *testing.T) {
4644
envKey := "http_proxy"
4745
envValue := httpProxy.String()
48-
templateArgs := TemplateArgs{SlirpGateway: networks.SlirpGateway}
49-
envs, err := setupEnv(&limayaml.LimaYAML{PropagateProxyEnv: ptr.Of(false), Env: map[string]string{envKey: envValue}}, templateArgs)
46+
envs, err := setupEnv(map[string]string{envKey: envValue}, false, networks.SlirpGateway)
5047
assert.NilError(t, err)
5148
assert.Equal(t, envs[envKey], strings.ReplaceAll(envValue, httpProxy.Hostname(), networks.SlirpGateway))
5249
})
@@ -56,8 +53,7 @@ func TestSetupEnv(t *testing.T) {
5653
func TestSetupInvalidEnv(t *testing.T) {
5754
envKey := "http_proxy"
5855
envValue := "://localhost:8080"
59-
templateArgs := TemplateArgs{SlirpGateway: networks.SlirpGateway}
60-
envs, err := setupEnv(&limayaml.LimaYAML{PropagateProxyEnv: ptr.Of(false), Env: map[string]string{envKey: envValue}}, templateArgs)
56+
envs, err := setupEnv(map[string]string{envKey: envValue}, false, networks.SlirpGateway)
6157
assert.NilError(t, err)
6258
assert.Equal(t, envs[envKey], envValue)
6359
}

pkg/cidata/fuzz_test.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ package cidata
33
import (
44
"testing"
55

6-
"github.com/lima-vm/lima/pkg/limayaml"
76
"github.com/lima-vm/lima/pkg/networks"
8-
"github.com/lima-vm/lima/pkg/ptr"
97
)
108

119
func FuzzSetupEnv(f *testing.F) {
@@ -14,10 +12,6 @@ func FuzzSetupEnv(f *testing.F) {
1412
if localhost {
1513
prefix = "http://localhost:8080/"
1614
}
17-
templateArgs := TemplateArgs{SlirpGateway: networks.SlirpGateway}
18-
_, _ = setupEnv(&limayaml.LimaYAML{
19-
PropagateProxyEnv: ptr.Of(false),
20-
Env: map[string]string{"http_proxy": prefix + suffix},
21-
}, templateArgs)
15+
_, _ = setupEnv(map[string]string{"http_proxy": prefix + suffix}, false, networks.SlirpGateway)
2216
})
2317
}

0 commit comments

Comments
 (0)