in lib/backend/manager.go [62:104]
func NewManager(managerConfig ManagerConfig, configs []Config, auth AuthConfig, stats tally.Scope) (*Manager, error) {
logger, err := log.New(managerConfig.Log, nil)
if err != nil {
return nil, fmt.Errorf("log: %s", err)
}
slogger := logger.Sugar()
var backends []*backend
for _, config := range configs {
config = config.applyDefaults()
var c Client
if len(config.Backend) != 1 {
return nil, fmt.Errorf("no backend or more than one backend configured")
}
var backendName string
var backendConfig interface{}
for backendName, backendConfig = range config.Backend { // Pull the only key/value out of map
}
factory, err := getFactory(backendName)
if err != nil {
return nil, fmt.Errorf("get backend client factory: %s", err)
}
c, err = factory.Create(backendConfig, auth, stats, slogger)
if err != nil {
return nil, fmt.Errorf("create backend client: %s", err)
}
if config.Bandwidth.Enable {
l, err := bandwidth.NewLimiter(config.Bandwidth)
if err != nil {
return nil, fmt.Errorf("bandwidth: %s", err)
}
c = throttle(c, l)
}
b, err := newBackend(config.Namespace, c, config.MustReady)
if err != nil {
return nil, fmt.Errorf("new backend for namespace %s: %s", config.Namespace, err)
}
backends = append(backends, b)
}
return &Manager{backends}, nil
}