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  }