github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/cloud/backend.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package cloud 5 6 import ( 7 "gopkg.in/juju/names.v2" 8 9 "github.com/juju/juju/cloud" 10 "github.com/juju/juju/state" 11 ) 12 13 type Backend interface { 14 Clouds() (map[names.CloudTag]cloud.Cloud, error) 15 Cloud(cloudName string) (cloud.Cloud, error) 16 CloudCredentials(user names.UserTag, cloudName string) (map[string]cloud.Credential, error) 17 ControllerModel() (Model, error) 18 ControllerTag() names.ControllerTag 19 ModelTag() names.ModelTag 20 UpdateCloudCredential(names.CloudCredentialTag, cloud.Credential) error 21 RemoveCloudCredential(names.CloudCredentialTag) error 22 23 IsControllerAdmin(names.UserTag) (bool, error) 24 25 Close() error 26 } 27 28 type stateShim struct { 29 *state.State 30 } 31 32 func NewStateBackend(st *state.State) Backend { 33 return stateShim{st} 34 } 35 36 func (s stateShim) ControllerModel() (Model, error) { 37 m, err := s.State.ControllerModel() 38 if err != nil { 39 return nil, err 40 } 41 return m, nil 42 } 43 44 type Model interface { 45 Cloud() string 46 CloudCredential() (names.CloudCredentialTag, bool) 47 CloudRegion() string 48 }