github.com/Pankov404/juju@v0.0.0-20150703034450-be266991dceb/storage/provider/common.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package provider 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/container/lxc/lxcutils" 10 "github.com/juju/juju/storage" 11 ) 12 13 var errNoMountPoint = errors.New("filesystem mount point not specified") 14 15 // CommonProviders returns the storage providers used by all environments. 16 func CommonProviders() map[storage.ProviderType]storage.Provider { 17 return map[storage.ProviderType]storage.Provider{ 18 LoopProviderType: &loopProvider{logAndExec, lxcutils.RunningInsideLXC}, 19 RootfsProviderType: &rootfsProvider{logAndExec}, 20 TmpfsProviderType: &tmpfsProvider{logAndExec}, 21 } 22 } 23 24 // ValidateConfig performs storage provider config validation, including 25 // any common validation. 26 func ValidateConfig(p storage.Provider, cfg *storage.Config) error { 27 if p.Scope() == storage.ScopeMachine && cfg.IsPersistent() { 28 return errors.Errorf("machine scoped storage provider %q does not support persistent storage", cfg.Name()) 29 } 30 return p.ValidateConfig(cfg) 31 }