Skip to content

Commit e652c39

Browse files
committed
Move reconciler from networks → networks/reconcile
This allows limayaml to call networks.Config() to validate managed network names. Signed-off-by: Jan Dubois <[email protected]>
1 parent b09bd9e commit e652c39

File tree

5 files changed

+28
-17
lines changed

5 files changed

+28
-17
lines changed

cmd/limactl/delete.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"fmt"
66
"os"
77

8-
"github.com/lima-vm/lima/pkg/networks"
8+
"github.com/lima-vm/lima/pkg/networks/reconcile"
99
"github.com/lima-vm/lima/pkg/store"
1010
"github.com/sirupsen/logrus"
1111
"github.com/spf13/cobra"

cmd/limactl/start.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/AlecAivazis/survey/v2"
1313
"github.com/containerd/containerd/identifiers"
1414
"github.com/lima-vm/lima/pkg/limayaml"
15-
"github.com/lima-vm/lima/pkg/networks"
15+
"github.com/lima-vm/lima/pkg/networks/reconcile"
1616
"github.com/lima-vm/lima/pkg/osutil"
1717
"github.com/lima-vm/lima/pkg/start"
1818
"github.com/lima-vm/lima/pkg/store"
@@ -217,6 +217,9 @@ func startAction(cmd *cobra.Command, args []string) error {
217217
if err != nil {
218218
return err
219219
}
220+
if len(inst.Errors) > 0 {
221+
return fmt.Errorf("errors inspecting instance: %+v", inst.Errors)
222+
}
220223
switch inst.Status {
221224
case store.StatusRunning:
222225
logrus.Infof("The instance %q is already running. Run `%s` to open the shell.",

cmd/limactl/stop.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"time"
1212

1313
hostagentapi "github.com/lima-vm/lima/pkg/hostagent/api"
14-
"github.com/lima-vm/lima/pkg/networks"
14+
"github.com/lima-vm/lima/pkg/networks/reconcile"
1515
"github.com/lima-vm/lima/pkg/store"
1616
"github.com/lima-vm/lima/pkg/store/filenames"
1717
"github.com/sirupsen/logrus"

pkg/limayaml/validate.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package limayaml
22

33
import (
44
"fmt"
5+
"github.com/lima-vm/lima/pkg/networks"
56
"net"
67
"os"
78
"path/filepath"
@@ -188,7 +189,13 @@ func validateNetwork(y LimaYAML) error {
188189
if nw.SwitchPort != 0 {
189190
return fmt.Errorf("field `%s.switchPort` cannot be used with field `%s.lima`", field, field)
190191
}
191-
// TODO: validate network name (we can't use networks and store packages right now)
192+
config, err := networks.Config()
193+
if err != nil {
194+
return err
195+
}
196+
if config.Check(nw.Lima) != nil {
197+
return fmt.Errorf("field `%s.lima` references network %q which is not defined in networks.yaml", field, nw.Lima)
198+
}
192199
} else {
193200
if nw.VNL == "" {
194201
return fmt.Errorf("field `%s.lima` or field `%s.vnl` must be set", field, field)

pkg/networks/reconcile.go renamed to pkg/networks/reconcile/reconcile.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"strings"
1111
"sync"
1212

13+
"github.com/lima-vm/lima/pkg/networks"
1314
"github.com/lima-vm/lima/pkg/store"
1415
"github.com/lima-vm/lima/pkg/store/dirnames"
1516
"github.com/sirupsen/logrus"
@@ -19,7 +20,7 @@ func Reconcile(ctx context.Context, newInst string) error {
1920
if runtime.GOOS != "darwin" {
2021
return nil
2122
}
22-
config, err := Config()
23+
config, err := networks.Config()
2324
if err != nil {
2425
return err
2526
}
@@ -53,9 +54,9 @@ func Reconcile(ctx context.Context, newInst string) error {
5354
for name := range config.Networks {
5455
var err error
5556
if activeNetwork[name] {
56-
err = config.startNetwork(ctx, name)
57+
err = startNetwork(&config, ctx, name)
5758
} else {
58-
err = config.stopNetwork(name)
59+
err = stopNetwork(&config, name)
5960
}
6061
if err != nil {
6162
return err
@@ -79,7 +80,7 @@ func sudo(user, group, command string) error {
7980
return nil
8081
}
8182

82-
func (config *NetworksConfig) startDaemon(ctx context.Context, name, daemon string) error {
83+
func startDaemon(config *networks.NetworksConfig, ctx context.Context, name, daemon string) error {
8384
err := sudo("root", "wheel", config.MkdirCmd())
8485
if err != nil {
8586
return err
@@ -126,39 +127,39 @@ var sudoersCheck struct {
126127
err error
127128
}
128129

129-
func (config *NetworksConfig) checkSudoers() error {
130+
func checkSudoers(config *networks.NetworksConfig) error {
130131
sudoersCheck.Do(func() {
131132
if config.Paths.Sudoers != "" {
132-
sudoersCheck.err = CheckSudoers(config.Paths.Sudoers)
133+
sudoersCheck.err = networks.CheckSudoers(config.Paths.Sudoers)
133134
}
134135
})
135136
return sudoersCheck.err
136137
}
137138

138-
func (config *NetworksConfig) startNetwork(ctx context.Context, name string) error {
139+
func startNetwork(config *networks.NetworksConfig, ctx context.Context, name string) error {
139140
logrus.Debugf("Make sure %q network is running", name)
140-
for _, daemon := range []string{Switch, VMNet} {
141+
for _, daemon := range []string{networks.Switch, networks.VMNet} {
141142
pid, _ := store.ReadPIDFile(config.PIDFile(name, daemon))
142143
if pid == 0 {
143144
logrus.Infof("Starting %s daemon for %q network", daemon, name)
144-
if err := config.checkSudoers(); err != nil {
145+
if err := checkSudoers(config); err != nil {
145146
return err
146147
}
147-
if err := config.startDaemon(ctx, name, daemon); err != nil {
148+
if err := startDaemon(config, ctx, name, daemon); err != nil {
148149
return err
149150
}
150151
}
151152
}
152153
return nil
153154
}
154155

155-
func (config *NetworksConfig) stopNetwork(name string) error {
156+
func stopNetwork(config *networks.NetworksConfig, name string) error {
156157
logrus.Debugf("Make sure %q network is stopped", name)
157-
for _, daemon := range []string{VMNet, Switch} {
158+
for _, daemon := range []string{networks.VMNet, networks.Switch} {
158159
pid, _ := store.ReadPIDFile(config.PIDFile(name, daemon))
159160
if pid != 0 {
160161
logrus.Infof("Stopping %s daemon for %q network", daemon, name)
161-
if err := config.checkSudoers(); err != nil {
162+
if err := checkSudoers(config); err != nil {
162163
return err
163164
}
164165
err := sudo(config.DaemonUser(daemon), config.DaemonGroup(daemon), config.StopCmd(name, daemon))

0 commit comments

Comments
 (0)