|
|
|
@ -11,15 +11,24 @@ import (
|
|
|
|
|
type Env struct { |
|
|
|
|
ZoneIterator |
|
|
|
|
|
|
|
|
|
cephFSID string |
|
|
|
|
export bool |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Env returns a shell environment factory
|
|
|
|
|
func (m *Zones) Env(export bool) *Env { |
|
|
|
|
return &Env{ |
|
|
|
|
func (m *Zones) Env(export bool) (*Env, error) { |
|
|
|
|
fsid, err := m.GetCephFSID() |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
env := &Env{ |
|
|
|
|
ZoneIterator: m, |
|
|
|
|
cephFSID: fsid.String(), |
|
|
|
|
export: export, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return env, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Zones returns the list of Zone IDs
|
|
|
|
@ -38,7 +47,12 @@ func (m *Env) Zones() []int {
|
|
|
|
|
func (m *Env) WriteTo(w io.Writer) (int64, error) { |
|
|
|
|
var buf bytes.Buffer |
|
|
|
|
|
|
|
|
|
if m.cephFSID != "" { |
|
|
|
|
m.writeEnvVar(&buf, m.cephFSID, "FSID") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
m.writeEnvVarInts(&buf, m.Zones(), "ZONES") |
|
|
|
|
|
|
|
|
|
m.ForEachZone(func(z *Zone) bool { |
|
|
|
|
m.writeEnvZone(&buf, z) |
|
|
|
|
return false |
|
|
|
|