func (st *State) createDefaultStoragePoolsOps(registry storage.ProviderRegistry) ([]txn.Op, error) { m := poolmanager.MemSettings{make(map[string]map[string]interface{})} pm := poolmanager.New(m, registry) providerTypes, err := registry.StorageProviderTypes() if err != nil { return nil, errors.Trace(err) } for _, providerType := range providerTypes { p, err := registry.StorageProvider(providerType) if err != nil { return nil, errors.Trace(err) } if err := poolmanager.AddDefaultStoragePools(p, pm); err != nil { return nil, errors.Annotatef( err, "adding default storage pools for %q", providerType, ) } } var ops []txn.Op for key, settings := range m.Settings { ops = append(ops, createSettingsOp(settingsC, key, settings)) } return ops, nil }
// StoragePoolConfig returns the storage provider type and // configuration for a named storage pool. If there is no // such pool with the specified name, but it identifies a // storage provider, then that type will be returned with a // nil configuration. func StoragePoolConfig(name string, poolManager poolmanager.PoolManager, registry storage.ProviderRegistry) (storage.ProviderType, *storage.Config, error) { pool, err := poolManager.Get(name) if errors.IsNotFound(err) { // If not a storage pool, then maybe a provider type. providerType := storage.ProviderType(name) if _, err1 := registry.StorageProvider(providerType); err1 != nil { return "", nil, errors.Trace(err) } return providerType, &storage.Config{}, nil } else if err != nil { return "", nil, errors.Annotatef(err, "getting pool %q", name) } return pool.Provider(), pool, nil }
func sourceParams( baseStorageDir string, sourceName string, providerType storage.ProviderType, registry storage.ProviderRegistry, ) (storage.Provider, *storage.Config, error) { provider, err := registry.StorageProvider(providerType) if err != nil { return nil, nil, errors.Annotate(err, "getting provider") } attrs := make(map[string]interface{}) if baseStorageDir != "" { storageDir := filepath.Join(baseStorageDir, sourceName) attrs[storage.ConfigStorageDir] = storageDir } sourceConfig, err := storage.NewConfig(sourceName, providerType, attrs) if err != nil { return nil, nil, errors.Annotate(err, "getting config") } return provider, sourceConfig, nil }