|
|
|
package cluster
|
|
|
|
|
|
|
|
// SyncAll updates all config files
|
|
|
|
func (m *Cluster) SyncAll() error {
|
|
|
|
for _, fn := range []func() error{
|
|
|
|
m.SyncMkdirAll,
|
|
|
|
m.SyncAllWireguard,
|
|
|
|
m.SyncAllCeph,
|
|
|
|
m.SyncAllRegions,
|
|
|
|
m.WriteHosts,
|
|
|
|
} {
|
|
|
|
if err := fn(); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// SyncMkdirAll creates the directories needed to store files
|
|
|
|
// required to represent the cluster.
|
|
|
|
func (m *Cluster) SyncMkdirAll() error {
|
|
|
|
err := m.MkdirAll(".")
|
|
|
|
if err == nil {
|
|
|
|
m.ForEachMachine(func(p *Machine) bool {
|
|
|
|
err = p.MkdirAll(".")
|
|
|
|
return err != nil
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// SyncAllWireguard updates all wireguard config files
|
|
|
|
func (m *Cluster) SyncAllWireguard() error {
|
|
|
|
var err error
|
|
|
|
|
|
|
|
for ring := 0; ring < RingsCount; ring++ {
|
|
|
|
err = m.WriteWireguardKeys(ring)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
err = m.SyncWireguardConfig(ring)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// SyncAllCeph updates the ceph.conf file
|
|
|
|
func (m *Cluster) SyncAllCeph() error {
|
|
|
|
cfg, err := m.GenCephConfig()
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return m.WriteCephConfig(cfg)
|
|
|
|
}
|
|
|
|
|
|
|
|
// SyncAllRegions rewrites all region data
|
|
|
|
func (m *Cluster) SyncAllRegions() error {
|
|
|
|
var err error
|
|
|
|
|
|
|
|
m.ForEachZone(func(z *Zone) bool {
|
|
|
|
err := z.SyncRegions()
|
|
|
|
return err != nil
|
|
|
|
})
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
m.ForEachRegion(func(r *Region) bool {
|
|
|
|
err = r.SyncRegions()
|
|
|
|
return err != nil
|
|
|
|
})
|
|
|
|
|
|
|
|
return err
|
|
|
|
}
|