Compare commits

..

15 Commits

Author SHA1 Message Date
amery 0eb0647992 Merge branch 'pr-amery-dns-ignore' into next-amery 2023-10-30 18:54:01 +00:00
amery a725b66d14 cluster: mark Machine as Inactive if the "region" file contains "none"
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-10-30 18:52:38 +00:00
amery 851274954e cluster: introduce Machine.Inactive flag
if a Machine is Inactive, it won't be included on the DNS
aliases for the zone or it's regions.

Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-10-30 18:52:34 +00:00
amery 1580c09746 cluster: add Machine.ReadLines() shortcut
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-10-30 18:52:28 +00:00
amery 770f55c8f1 Merge branch 'pr-amery-wireguard-ini' into next-amery 2023-10-30 18:51:23 +00:00
amery 188f0a765f Merge branch 'pr-amery-unmarshaltext' into next-amery 2023-10-30 18:51:07 +00:00
amery a928ab8880 Merge pull request 'jpictl: add flags to control the default scan' (#34)
Reviewed-on: #34
2023-10-30 19:50:14 +01:00
amery 66fc213f64 Merge pull request 'cluster: improve defaults to ease initialisation of new machines' (#31)
Reviewed-on: #31
2023-10-30 19:48:40 +01:00
amery 944400249f Merge pull request 'jpictl: create machine directories on jpictl write' (#33)
Reviewed-on: #33
2023-10-30 19:47:37 +01:00
amery 1492061ab8 jpictl: create machine directories on jpictl write
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-10-30 18:46:48 +00:00
amery 57e1077a85 cluster: add MkdirAll() support
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-10-30 18:46:46 +00:00
amery 5a3d483f98 cluster: refactor Machine.ReadFile() and Machine.OpenFile()
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-10-30 18:45:01 +00:00
amery 0ff17abd59 Merge pull request 'cluster: add top level ReadLines(), WriteStringFile() and RemoveFile() helpers' (#36)
Reviewed-on: #36
2023-10-30 19:42:50 +01:00
amery a742bad084 Merge pull request 'dns: sort zones when writing data' (#35)
Reviewed-on: #35
2023-10-30 19:41:16 +01:00
amery 629b6ee74f Merge pull request 'cluster: sort regions, for jpictl dump sake' (#37)
Reviewed-on: #37
2023-10-30 19:39:02 +01:00
6 changed files with 52 additions and 12 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ func populateDNSManager(mgr *dns.Manager, m *cluster.Cluster) error {
m.ForEachZone(func(z *cluster.Zone) bool {
z.ForEachMachine(func(p *cluster.Machine) bool {
err = mgr.AddHost(ctx, z.Name, p.ID, true, p.PublicAddresses...)
err = mgr.AddHost(ctx, z.Name, p.ID, p.Active(), p.PublicAddresses...)
return err != nil
})
+9 -9
View File
@@ -67,15 +67,6 @@ func (m *Cluster) ReadFile(name string, args ...any) ([]byte, error) {
return fs.ReadFile(m.dir, name)
}
// MkdirAll creates directories relative to the cluster's config directory
func (m *Cluster) MkdirAll(name string, args ...any) error {
if len(args) > 0 {
name = fmt.Sprintf(name, args...)
}
return fs.MkdirAll(m.dir, name, 0755)
}
// ReadLines reads a file from the cluster's config directory,
// split by lines, trimmed, and accepting `#` to comment lines out.
func (m *Cluster) ReadLines(name string, args ...any) ([]string, error) {
@@ -113,3 +104,12 @@ func (m *Cluster) WriteStringFile(value string, name string, args ...any) error
_, err = buf.WriteTo(f)
return err
}
// MkdirAll creates directories relative to the cluster's config directory
func (m *Cluster) MkdirAll(name string, args ...any) error {
if len(args) > 0 {
name = fmt.Sprintf(name, args...)
}
return fs.MkdirAll(m.dir, name, 0755)
}
+6
View File
@@ -15,6 +15,7 @@ type Machine struct {
ID int
Name string `json:"-" yaml:"-"`
Inactive bool `json:"inactive,omitempty" yaml:"inactive,omitempty"`
CephMonitor bool `json:"ceph_monitor,omitempty" yaml:"ceph_monitor,omitempty"`
PublicAddresses []netip.Addr `json:"public,omitempty" yaml:"public,omitempty"`
Rings []*RingInfo `json:"rings,omitempty" yaml:"rings,omitempty"`
@@ -43,6 +44,11 @@ func (m *Machine) FullName() string {
return strings.Join(name, ".")
}
// Active indicates the machine is to be included in regions' DNS entries
func (m *Machine) Active() bool {
return !m.Inactive
}
// IsGateway tells if the Machine is a ring0 gateway
func (m *Machine) IsGateway() bool {
_, ok := m.getRingInfo(0)
+8
View File
@@ -53,6 +53,14 @@ func (m *Machine) ReadFile(name string, args ...any) ([]byte, error) {
return m.zone.zones.ReadFile(fullName)
}
// ReadLines reads a file from the machine's config directory,
// split by lines, trimmed, and accepting `#` to comment lines out.
func (m *Machine) ReadLines(name string, args ...any) ([]string, error) {
fullName := m.getFilename(name, args...)
return m.zone.zones.ReadLines(fullName)
}
// WriteStringFile writes the given content to a file on the machine's config directory
func (m *Machine) WriteStringFile(value string, name string, args ...any) error {
fullName := m.getFilename(name, args...)
+25 -1
View File
@@ -3,6 +3,7 @@ package cluster
import (
"context"
"net/netip"
"os"
"strconv"
"strings"
"time"
@@ -81,7 +82,30 @@ func (m *Machine) scan(_ *ScanOptions) error {
}
}
return nil
return m.loadInactive()
}
func (m *Machine) loadInactive() error {
data, err := m.ReadLines("region")
switch {
case os.IsNotExist(err):
// no file
return nil
case err != nil:
// read error
return err
default:
// look for "none"
for _, r := range data {
switch r {
case "none":
m.Inactive = true
default:
m.Inactive = false
}
}
return nil
}
}
// scanWrapUp is called once all machines have been scanned
+3 -1
View File
@@ -32,7 +32,9 @@ func (r *Region) ForEachMachine(fn func(*Machine) bool) {
var term bool
z.ForEachMachine(func(p *Machine) bool {
term = fn(p)
if p.Active() {
term = fn(p)
}
return term
})