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  }