cluster: rename Zones to Cluster
Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
@@ -1,2 +1,74 @@
|
||||
// Package cluster contains information about the cluster
|
||||
package cluster
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
|
||||
"darvaza.org/resolver"
|
||||
"darvaza.org/slog"
|
||||
"github.com/gofrs/uuid/v5"
|
||||
)
|
||||
|
||||
var (
|
||||
_ MachineIterator = (*Cluster)(nil)
|
||||
_ ZoneIterator = (*Cluster)(nil)
|
||||
)
|
||||
|
||||
// revive:disable:line-length-limit
|
||||
|
||||
// Cluster represents all zones in a cluster
|
||||
type Cluster struct {
|
||||
dir fs.FS
|
||||
log slog.Logger
|
||||
resolver resolver.Resolver
|
||||
domain string
|
||||
|
||||
CephFSID uuid.UUID `json:"ceph_fsid,omitempty" yaml:"ceph_fsid,omitempty"`
|
||||
Zones []*Zone
|
||||
}
|
||||
|
||||
// revive:enable:line-length-limit
|
||||
|
||||
// ForEachMachine calls a function for each Machine in the cluster
|
||||
// until instructed to terminate the loop
|
||||
func (m *Cluster) ForEachMachine(fn func(*Machine) bool) {
|
||||
m.ForEachZone(func(z *Zone) bool {
|
||||
var term bool
|
||||
|
||||
z.ForEachMachine(func(p *Machine) bool {
|
||||
term = fn(p)
|
||||
return term
|
||||
})
|
||||
|
||||
return term
|
||||
})
|
||||
}
|
||||
|
||||
// ForEachZone calls a function for each Zone in the cluster
|
||||
// until instructed to terminate the loop
|
||||
func (m *Cluster) ForEachZone(fn func(*Zone) bool) {
|
||||
for _, p := range m.Zones {
|
||||
if fn(p) {
|
||||
// terminate
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetMachineByName looks for a machine with the specified
|
||||
// name on any zone
|
||||
func (m *Cluster) GetMachineByName(name string) (*Machine, bool) {
|
||||
var out *Machine
|
||||
|
||||
if name != "" {
|
||||
m.ForEachMachine(func(p *Machine) bool {
|
||||
if p.Name == name {
|
||||
out = p
|
||||
}
|
||||
|
||||
return out != nil
|
||||
})
|
||||
}
|
||||
|
||||
return out, out != nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user