github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/apiserver/imagemetadata/state.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package imagemetadata 5 6 import ( 7 "github.com/juju/juju/environs/config" 8 "github.com/juju/juju/state" 9 "github.com/juju/juju/state/cloudimagemetadata" 10 names "gopkg.in/juju/names.v2" 11 ) 12 13 type metadataAcess interface { 14 FindMetadata(cloudimagemetadata.MetadataFilter) (map[string][]cloudimagemetadata.Metadata, error) 15 SaveMetadata([]cloudimagemetadata.Metadata) error 16 DeleteMetadata(imageId string) error 17 Model() (Model, error) 18 ModelConfig() (*config.Config, error) 19 ControllerTag() names.ControllerTag 20 } 21 22 type Model interface { 23 CloudRegion() string 24 } 25 26 var getState = func(st *state.State) metadataAcess { 27 return stateShim{st} 28 } 29 30 type stateShim struct { 31 *state.State 32 } 33 34 func (s stateShim) FindMetadata(f cloudimagemetadata.MetadataFilter) (map[string][]cloudimagemetadata.Metadata, error) { 35 return s.State.CloudImageMetadataStorage.FindMetadata(f) 36 } 37 38 func (s stateShim) SaveMetadata(m []cloudimagemetadata.Metadata) error { 39 return s.State.CloudImageMetadataStorage.SaveMetadata(m) 40 } 41 42 func (s stateShim) DeleteMetadata(imageId string) error { 43 return s.State.CloudImageMetadataStorage.DeleteMetadata(imageId) 44 } 45 46 func (s stateShim) Model() (Model, error) { 47 m, err := s.State.Model() 48 if err != nil { 49 return nil, err 50 } 51 return modelShim{m}, nil 52 } 53 54 type modelShim struct { 55 *state.Model 56 }