zones: introduce GenCephConfig()
Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
@@ -2,6 +2,7 @@ package zones
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"net/netip"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"darvaza.org/core"
|
"darvaza.org/core"
|
||||||
@@ -30,6 +31,36 @@ func (m *Zones) GetCephConfig() (*ceph.Config, error) {
|
|||||||
return ceph.NewConfigFromReader(r)
|
return ceph.NewConfigFromReader(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GenCephConfig prepares a ceph.Config using the cluster information
|
||||||
|
func (m *Zones) GenCephConfig() (*ceph.Config, error) {
|
||||||
|
fsid, err := m.GetCephFSID()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg := &ceph.Config{
|
||||||
|
Global: ceph.GlobalConfig{
|
||||||
|
FSID: fsid,
|
||||||
|
ClusterNetwork: netip.PrefixFrom(
|
||||||
|
netip.AddrFrom4([4]byte{10, 0, 0, 0}),
|
||||||
|
8,
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
m.ForEachZone(func(z *Zone) bool {
|
||||||
|
for _, p := range z.GetCephMonitors() {
|
||||||
|
addr, _ := RingOneAddress(z.ID, p.ID)
|
||||||
|
|
||||||
|
cfg.Global.Monitors = append(cfg.Global.Monitors, p.Name)
|
||||||
|
cfg.Global.MonitorsAddr = append(cfg.Global.MonitorsAddr, addr)
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
|
||||||
|
return cfg, nil
|
||||||
|
}
|
||||||
|
|
||||||
// GetCephMonitors returns the set of Ceph monitors on
|
// GetCephMonitors returns the set of Ceph monitors on
|
||||||
// the zone
|
// the zone
|
||||||
func (z *Zone) GetCephMonitors() Machines {
|
func (z *Zone) GetCephMonitors() Machines {
|
||||||
|
|||||||
Reference in New Issue
Block a user