diff --git a/cmd/jpictl/env.go b/cmd/jpictl/env.go index a968725..4b21773 100644 --- a/cmd/jpictl/env.go +++ b/cmd/jpictl/env.go @@ -16,7 +16,11 @@ var envCmd = &cobra.Command{ return err } - _, err = m.Env(*envExport).WriteTo(os.Stdout) + env, err := m.Env(*envExport) + if err != nil { + return err + } + _, err = env.WriteTo(os.Stdout) return err }, } diff --git a/pkg/zones/env.go b/pkg/zones/env.go index 36649f7..8780da9 100644 --- a/pkg/zones/env.go +++ b/pkg/zones/env.go @@ -11,15 +11,24 @@ import ( type Env struct { ZoneIterator - export bool + 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