github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/client/imagemetadatamanager/state.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package imagemetadatamanager
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	"gopkg.in/juju/names.v2"
     9  
    10  	"github.com/juju/juju/environs/config"
    11  	"github.com/juju/juju/state"
    12  	"github.com/juju/juju/state/cloudimagemetadata"
    13  )
    14  
    15  type metadataAccess interface {
    16  	FindMetadata(cloudimagemetadata.MetadataFilter) (map[string][]cloudimagemetadata.Metadata, error)
    17  	SaveMetadata([]cloudimagemetadata.Metadata) error
    18  	DeleteMetadata(imageId string) error
    19  	ModelConfig() (*config.Config, error)
    20  	ControllerTag() names.ControllerTag
    21  }
    22  
    23  type Model interface {
    24  	CloudRegion() string
    25  }
    26  
    27  var getState = func(st *state.State) metadataAccess {
    28  	return stateShim{st}
    29  }
    30  
    31  type stateShim struct {
    32  	*state.State
    33  }
    34  
    35  func (s stateShim) FindMetadata(f cloudimagemetadata.MetadataFilter) (map[string][]cloudimagemetadata.Metadata, error) {
    36  	return s.State.CloudImageMetadataStorage.FindMetadata(f)
    37  }
    38  
    39  func (s stateShim) SaveMetadata(m []cloudimagemetadata.Metadata) error {
    40  	return s.State.CloudImageMetadataStorage.SaveMetadata(m)
    41  }
    42  
    43  func (s stateShim) DeleteMetadata(imageId string) error {
    44  	return s.State.CloudImageMetadataStorage.DeleteMetadata(imageId)
    45  }
    46  
    47  // ModelConfig implements the metadataAccess method as an expedient until the
    48  // State is replaced with its underlying Model.
    49  func (s stateShim) ModelConfig() (*config.Config, error) {
    50  	model, err := s.State.Model()
    51  	if err != nil {
    52  		return nil, errors.Trace(err)
    53  	}
    54  	cfg, err := model.Config()
    55  	if err != nil {
    56  		return nil, errors.Trace(err)
    57  	}
    58  
    59  	return cfg, nil
    60  }