Compare commits
10 Commits
v0.8.0
..
26c1b37f1b
| Author | SHA1 | Date | |
|---|---|---|---|
| 26c1b37f1b | |||
| 1d3db78dd6 | |||
| 2075b2b730 | |||
| cedca2d3d8 | |||
| ae9f941bfc | |||
| 48cfc710f8 | |||
| 0bb8375301 | |||
| 299556544d | |||
| 464c968381 | |||
| d51275fb1e |
+16
-65
@@ -4,14 +4,12 @@ import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Env is a shell environment factory for this cluster
|
||||
type Env struct {
|
||||
ZoneIterator
|
||||
RegionIterator
|
||||
|
||||
cephFSID string
|
||||
export bool
|
||||
@@ -25,10 +23,9 @@ func (m *Cluster) Env(export bool) (*Env, error) {
|
||||
}
|
||||
|
||||
env := &Env{
|
||||
ZoneIterator: m,
|
||||
RegionIterator: m,
|
||||
cephFSID: fsid.String(),
|
||||
export: export,
|
||||
ZoneIterator: m,
|
||||
cephFSID: fsid.String(),
|
||||
export: export,
|
||||
}
|
||||
|
||||
return env, nil
|
||||
@@ -46,22 +43,6 @@ func (m *Env) Zones() []int {
|
||||
return zones
|
||||
}
|
||||
|
||||
// Regions returns the list of primary regions
|
||||
func (m *Env) Regions() []string {
|
||||
var regions []string
|
||||
|
||||
m.ForEachRegion(func(r *Region) bool {
|
||||
if r.Cluster != nil {
|
||||
regions = append(regions, r.Name)
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
|
||||
sort.Strings(regions)
|
||||
return regions
|
||||
}
|
||||
|
||||
// WriteTo generates environment variables for shell scripts
|
||||
func (m *Env) WriteTo(w io.Writer) (int64, error) {
|
||||
var buf bytes.Buffer
|
||||
@@ -70,7 +51,6 @@ func (m *Env) WriteTo(w io.Writer) (int64, error) {
|
||||
m.writeEnvVar(&buf, m.cephFSID, "FSID")
|
||||
}
|
||||
|
||||
m.writeEnvVarStrings(&buf, m.Regions(), "REGIONS")
|
||||
m.writeEnvVarInts(&buf, m.Zones(), "ZONES")
|
||||
|
||||
m.ForEachZone(func(z *Zone) bool {
|
||||
@@ -94,9 +74,6 @@ func (m *Env) writeEnvZone(w io.Writer, z *Zone) {
|
||||
gateways, _ := z.GatewayIDs()
|
||||
m.writeEnvVarInts(w, gateways, "ZONE%v_%s", zoneID, "GW")
|
||||
|
||||
// ZONE{zoneID}_REGION
|
||||
m.writeEnvVar(w, genEnvZoneRegion(z), "ZONE%v_%s", zoneID, "REGION")
|
||||
|
||||
// Ceph
|
||||
monitors := z.GetCephMonitors()
|
||||
// MON{zoneID}_NAME
|
||||
@@ -108,29 +85,22 @@ func (m *Env) writeEnvZone(w io.Writer, z *Zone) {
|
||||
}
|
||||
|
||||
func (m *Env) writeEnvVarInts(w io.Writer, value []int, name string, args ...any) {
|
||||
var buf bytes.Buffer
|
||||
var s string
|
||||
|
||||
for _, v := range value {
|
||||
if buf.Len() > 0 {
|
||||
_, _ = fmt.Fprint(&buf, " ")
|
||||
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)
|
||||
}
|
||||
_, _ = fmt.Fprintf(&buf, "%v", v)
|
||||
|
||||
s = buf.String()
|
||||
}
|
||||
|
||||
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...)
|
||||
m.writeEnvVar(w, s, name, args...)
|
||||
}
|
||||
|
||||
func (m *Env) writeEnvVar(w io.Writer, value string, name string, args ...any) {
|
||||
@@ -147,11 +117,7 @@ func (m *Env) writeEnvVar(w io.Writer, value string, name string, args ...any) {
|
||||
if name != "" {
|
||||
value = strings.TrimSpace(value)
|
||||
|
||||
if value == "" {
|
||||
_, _ = fmt.Fprintf(w, "%s%s=\n", prefix, name)
|
||||
} else {
|
||||
_, _ = fmt.Fprintf(w, "%s%s=%q\n", prefix, name, value)
|
||||
}
|
||||
_, _ = fmt.Fprintf(w, "%s%s=%q\n", prefix, name, value)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,21 +135,6 @@ func genEnvZoneNodes(z *Zone) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func genEnvZoneRegion(z *Zone) string {
|
||||
var region string
|
||||
|
||||
z.ForEachRegion(func(r *Region) bool {
|
||||
if r.Cluster != nil {
|
||||
region = r.Name
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
|
||||
return region
|
||||
}
|
||||
|
||||
func genEnvZoneCephMonNames(m Machines) string {
|
||||
var buf strings.Builder
|
||||
m.ForEachMachine(func(p *Machine) bool {
|
||||
|
||||
Reference in New Issue
Block a user