github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/storage/poolmanager/defaultpool.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package poolmanager 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/storage" 10 ) 11 12 // AddDefaultStoragePools adds the default storage pools for the given 13 // provider to the given pool manager. This is called whenever a new 14 // model is created. 15 func AddDefaultStoragePools(p storage.Provider, pm PoolManager) error { 16 for _, pool := range p.DefaultPools() { 17 if err := addDefaultPool(pm, pool); err != nil { 18 return err 19 } 20 } 21 return nil 22 } 23 24 func addDefaultPool(pm PoolManager, pool *storage.Config) error { 25 _, err := pm.Get(pool.Name()) 26 if err != nil && !errors.IsNotFound(err) { 27 return errors.Annotatef(err, "loading default pool %q", pool.Name()) 28 } 29 if err != nil { 30 // We got a not found error, so default pool doesn't exist. 31 if _, err := pm.Create(pool.Name(), pool.Provider(), pool.Attrs()); err != nil { 32 return errors.Annotatef(err, "creating default pool %q", pool.Name()) 33 } 34 } 35 return nil 36 }