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  }