github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/worker/uniter/storage/export_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package storage 5 6 import ( 7 "gopkg.in/juju/names.v2" 8 9 "github.com/juju/juju/apiserver/params" 10 "github.com/juju/juju/worker/uniter/hook" 11 "github.com/juju/juju/worker/uniter/resolver" 12 ) 13 14 type State interface { 15 hook.Committer 16 hook.Validator 17 } 18 19 func StateAttached(s State) bool { 20 return s.(*stateFile).attached 21 } 22 23 func ValidateHook(tag names.StorageTag, attached bool, hi hook.Info) error { 24 st := &state{tag, attached} 25 return st.ValidateHook(hi) 26 } 27 28 func ReadStateFile(dirPath string, tag names.StorageTag) (d State, err error) { 29 state, err := readStateFile(dirPath, tag) 30 return state, err 31 } 32 33 func ReadAllStateFiles(dirPath string) (map[names.StorageTag]State, error) { 34 files, err := readAllStateFiles(dirPath) 35 if err != nil { 36 return nil, err 37 } 38 states := make(map[names.StorageTag]State) 39 for tag, f := range files { 40 states[tag] = f 41 } 42 return states, nil 43 } 44 45 func SetStorageLife(resolver resolver.Resolver, life map[names.StorageTag]params.Life) { 46 resolver.(*storageResolver).life = life 47 }