// validateFullConfig validates a fully-constructed storage config, // combining the user-specified config and any internally specified // config. func (p *rootfsProvider) validateFullConfig(cfg *storage.Config) error { if err := p.ValidateConfig(cfg); err != nil { return err } storageDir, ok := cfg.ValueString(storage.ConfigStorageDir) if !ok || storageDir == "" { return errors.New("storage directory not specified") } return nil }
// FilesystemSource is defined on the Provider interface. func (p *rootfsProvider) FilesystemSource(environConfig *config.Config, sourceConfig *storage.Config) (storage.FilesystemSource, error) { if err := p.validateFullConfig(sourceConfig); err != nil { return nil, err } // storageDir is validated by validateFullConfig. storageDir, _ := sourceConfig.ValueString(storage.ConfigStorageDir) return &rootfsFilesystemSource{ &osDirFuncs{p.run}, p.run, storageDir, }, nil }
// VolumeSource is defined on the Provider interface. func (lp *loopProvider) VolumeSource(sourceConfig *storage.Config) (storage.VolumeSource, error) { if err := lp.validateFullConfig(sourceConfig); err != nil { return nil, err } // storageDir is validated by validateFullConfig. storageDir, _ := sourceConfig.ValueString(storage.ConfigStorageDir) return &loopVolumeSource{ &osDirFuncs{lp.run}, lp.run, storageDir, }, nil }
// ValidateConfig is defined on the Provider interface. func (e *ebsProvider) ValidateConfig(cfg *storage.Config) error { _, err := newEbsConfig(cfg.Attrs()) return errors.Trace(err) }
// ValidateConfig is defined on the Provider interface. func (e *azureStorageProvider) ValidateConfig(cfg *storage.Config) error { _, err := newAzureStorageConfig(cfg.Attrs()) return errors.Trace(err) }
// ValidateConfig performs storage provider config validation, including // any common validation. func ValidateConfig(p storage.Provider, cfg *storage.Config) error { if p.Scope() == storage.ScopeMachine && cfg.IsPersistent() { return errors.Errorf("machine scoped storage provider %q does not support persistent storage", cfg.Name()) } return p.ValidateConfig(cfg) }
func addDefaultPool(pm PoolManager, pool *storage.Config) error { _, err := pm.Get(pool.Name()) if err != nil && !errors.IsNotFound(err) { return errors.Annotatef(err, "loading default pool %q", pool.Name()) } if err != nil { // We got a not found error, so default pool doesn't exist. if _, err := pm.Create(pool.Name(), pool.Provider(), pool.Attrs()); err != nil { return errors.Annotatef(err, "creating default pool %q", pool.Name()) } } return nil }