github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/agent/credentialvalidator/state.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package credentialvalidator 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 // ModelAccessor exposes Model methods needed by credential validator. 14 type ModelAccessor interface { 15 CloudCredential() (names.CloudCredentialTag, bool) 16 ModelTag() names.ModelTag 17 Cloud() string 18 WatchModelCredential() state.NotifyWatcher 19 } 20 21 // StateAccessor exposes State methods needed by credential validator. 22 type StateAccessor interface { 23 Model() (ModelAccessor, error) 24 CloudCredential(tag names.CloudCredentialTag) (state.Credential, error) 25 WatchCredential(names.CloudCredentialTag) state.NotifyWatcher 26 InvalidateModelCredential(reason string) error 27 Cloud(name string) (cloud.Cloud, error) 28 } 29 30 type stateShim struct { 31 *state.State 32 } 33 34 // NewStateShim creates new state shim to be used by credential validator Facade. 35 func NewStateShim(st *state.State) StateAccessor { 36 return &stateShim{st} 37 } 38 39 // Model returns model from this shim. 40 func (s *stateShim) Model() (ModelAccessor, error) { 41 return s.State.Model() 42 }