Compare commits

..

8 Commits

Author SHA1 Message Date
amery 4d78214b82 cluster: add []string writer to Env
Signed-off-by: Alejandro Mery <amery@jpi.io>
2024-03-02 21:35:55 +00:00
amery 8f4ac9f789 cluster: introduce RegionIterator
Signed-off-by: Alejandro Mery <amery@jpi.io>
2024-03-02 21:35:55 +00:00
amery a769bdaaac m/eu/k8s_token [DO-NOT-MERGE]
Signed-off-by: Alejandro Mery <amery@jpi.io>
2024-03-02 21:35:55 +00:00
amery b2e7cb5f91 import m tree [DO-NOT-MERGE]
Signed-off-by: Alejandro Mery <amery@jpi.io>
2024-03-02 21:35:55 +00:00
amery c8c330d93a Merge branch 'pr-amery-k8s_token' into next-amery 2024-03-02 21:35:28 +00:00
amery 111951a86c Merge branch 'pr-amery-wireguard-ini' into next-amery 2024-03-02 21:35:24 +00:00
amery 3efe9c1d20 cluster: remove k8s_token files from zones on write if found
Signed-off-by: Alejandro Mery <amery@jpi.io>
2024-03-02 21:34:37 +00:00
amery 464c968381 cluster: introduce Region.Cluster and m/{region}/k8s_token
Signed-off-by: Alejandro Mery <amery@jpi.io>
2024-03-02 21:30:37 +00:00
3 changed files with 46 additions and 23 deletions
+16 -11
View File
@@ -4,6 +4,7 @@ import (
"io/fs"
"path"
"sort"
"strings"
"darvaza.org/core"
)
@@ -225,22 +226,26 @@ func (z *Zone) loadRegions() error {
}
func (z *Zone) loadClusterToken() error {
var token string
filename := path.Join(z.Name, RegionClusterTokenFileName)
lines, err := z.zones.ReadLines(filename)
if err == nil {
var token string
if err != nil {
return err
}
for _, s := range lines {
if s != "" {
token = s
break
}
// first non-empty line
for _, s := range lines {
s = strings.TrimSpace(s)
if s != "" {
token = s
break
}
}
err = z.zones.setRegionClusterToken(z.Name, token)
if err != nil {
err = core.Wrap(err, filename)
}
err = z.zones.setRegionClusterToken(z.Name, token)
if err != nil {
err = core.Wrap(err, filename)
}
return err
+19 -12
View File
@@ -85,22 +85,29 @@ func (m *Env) writeEnvZone(w io.Writer, z *Zone) {
}
func (m *Env) writeEnvVarInts(w io.Writer, value []int, name string, args ...any) {
var s string
var buf bytes.Buffer
if n := len(value); n > 0 {
var buf bytes.Buffer
for i, v := range value {
if i != 0 {
_, _ = fmt.Fprint(&buf, " ")
}
_, _ = fmt.Fprintf(&buf, "%v", v)
for _, v := range value {
if buf.Len() > 0 {
_, _ = fmt.Fprint(&buf, " ")
}
s = buf.String()
_, _ = fmt.Fprintf(&buf, "%v", v)
}
m.writeEnvVar(w, s, name, args...)
m.writeEnvVar(w, buf.String(), name, args...)
}
func (m *Env) writeEnvVarStrings(w io.Writer, value []string, name string, args ...any) {
var buf bytes.Buffer
for _, v := range value {
if buf.Len() > 0 {
_, _ = fmt.Fprint(&buf, " ")
}
_, _ = fmt.Fprintf(&buf, "%s", v)
}
m.writeEnvVar(w, buf.String(), name, args...)
}
func (m *Env) writeEnvVar(w io.Writer, value string, name string, args ...any) {
+11
View File
@@ -8,8 +8,14 @@ import (
var (
_ MachineIterator = (*Region)(nil)
_ ZoneIterator = (*Region)(nil)
_ RegionIterator = (*Cluster)(nil)
)
// A RegionIterator is a set of Regions we can iterate on
type RegionIterator interface {
ForEachRegion(func(*Region) bool)
}
// Region represents a group of zones geographically related
type Region struct {
m *Cluster
@@ -204,6 +210,11 @@ func (z *Zone) SyncRegions() error {
} else {
err = p.WriteStringFile("none\n", "region")
}
if err == nil {
err = p.RemoveFile(RegionClusterTokenFileName)
}
return err != nil
})
}