func getConfiguredModules(c gofig.Config) ([]*Config, error) { mods := c.Get("rexray.modules") modMap, ok := mods.(map[string]interface{}) if !ok { return nil, goof.New("invalid format rexray.modules") } log.WithField("count", len(modMap)).Debug("got modules map") modConfigs := []*Config{} for name := range modMap { name = strings.ToLower(name) log.WithField("name", name).Debug("processing module config") scope := fmt.Sprintf("rexray.modules.%s", name) log.WithField("scope", scope).Debug("getting scoped config for module") sc := c.Scope(scope) disabled := sc.GetBool("disabled") if disabled { log.WithField("name", name).Debug("ignoring disabled module config") continue } mc := &Config{ Name: name, Type: strings.ToLower(sc.GetString("type")), Description: sc.GetString("desc"), Address: sc.GetString("host"), Config: sc, } log.WithFields(log.Fields{ "name": mc.Name, "type": mc.Type, "desc": mc.Description, "addr": mc.Address, }).Info("created new mod config") modConfigs = append(modConfigs, mc) } return modConfigs, nil }
func newCmd(c gofig.Config, name string, args ...string) *exec.Cmd { cmd := exec.Command(name, args...) cmd.Env = c.EnvVars() return cmd }