|
|
|
@ -2,6 +2,7 @@ package zones
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"bytes" |
|
|
|
|
"net/netip" |
|
|
|
|
"sort" |
|
|
|
|
|
|
|
|
|
"darvaza.org/core" |
|
|
|
@ -30,6 +31,36 @@ func (m *Zones) GetCephConfig() (*ceph.Config, error) {
|
|
|
|
|
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
|
|
|
|
|
// the zone
|
|
|
|
|
func (z *Zone) GetCephMonitors() Machines { |
|
|
|
|