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  }