Browse Source

zones: allow iterators to terminate

Signed-off-by: Alejandro Mery <amery@jpi.io>
pull/1/head v0.0.2
Alejandro Mery 10 months ago
parent
commit
f7da9519fa
  1. 7
      pkg/zones/scan.go
  2. 14
      pkg/zones/zones.go

7
pkg/zones/scan.go

@ -31,10 +31,9 @@ func (m *Zones) scan() error {
func (m *Zones) scanMachines() error { func (m *Zones) scanMachines() error {
var err error var err error
m.ForEachMachine(func(p *Machine) { m.ForEachMachine(func(p *Machine) bool {
if err == nil { err = p.scan()
err = p.scan() return err != nil
}
}) })
return err return err
} }

14
pkg/zones/zones.go

@ -32,18 +32,24 @@ type Zones struct {
} }
// ForEachMachine calls a function for each Machine in the cluster // ForEachMachine calls a function for each Machine in the cluster
func (m *Zones) ForEachMachine(fn func(*Machine)) { func (m *Zones) ForEachMachine(fn func(*Machine) bool) {
for _, z := range m.Zones { for _, z := range m.Zones {
for _, p := range z.Machines { for _, p := range z.Machines {
fn(p) if fn(p) {
// terminate
return
}
} }
} }
} }
// ForEachZone calls a function for each Zone in the cluster // ForEachZone calls a function for each Zone in the cluster
func (m *Zones) ForEachZone(fn func(*Zone)) { func (m *Zones) ForEachZone(fn func(*Zone) bool) {
for _, p := range m.Zones { for _, p := range m.Zones {
fn(p) if fn(p) {
// terminate
return
}
} }
} }

Loading…
Cancel
Save