zones: add Zone.SetGateway() to set one by ID

Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
2023-08-25 17:10:52 +00:00
parent 0f244df305
commit d0ef7fe768
+25
View File
@@ -50,6 +50,31 @@ func (z *Zone) ForEachMachine(fn func(*Machine) bool) {
}
}
// SetGateway configures a machine to be the zone's ring0 gateway
func (z *Zone) SetGateway(gatewayID int, enabled bool) error {
var err error
var found bool
z.ForEachMachine(func(p *Machine) bool {
if p.ID == gatewayID {
found = true
err = p.SetGateway(enabled)
return true
}
return false
})
switch {
case err != nil:
return err
case !found:
return fs.ErrNotExist
default:
return nil
}
}
// Zones represents all zones in a cluster
type Zones struct {
dir fs.FS