zones: allow iterators to terminate
Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
+3
-4
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-4
@@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user