github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/controller/caasmodeloperator/state.go (about)

     1  // Copyright 2020 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package caasmodeloperator
     5  
     6  import (
     7  	"github.com/juju/names/v5"
     8  
     9  	"github.com/juju/juju/apiserver/common"
    10  	"github.com/juju/juju/controller"
    11  	"github.com/juju/juju/environs/config"
    12  	"github.com/juju/juju/state"
    13  )
    14  
    15  // CAASModelOperatorState provides the subset of model state required by the
    16  // model operator provisioner.
    17  type CAASModelOperatorState interface {
    18  	FindEntity(tag names.Tag) (state.Entity, error)
    19  	Model() (Model, error)
    20  	ModelUUID() string
    21  }
    22  
    23  // CAASModelOperatorState provides the subset of controller state required by the
    24  // model operator provisioner.
    25  type CAASControllerState interface {
    26  	common.APIAddressAccessor
    27  	ControllerConfig() (controller.Config, error)
    28  	WatchControllerConfig() state.NotifyWatcher
    29  }
    30  
    31  type Model interface {
    32  	ModelConfig() (*config.Config, error)
    33  	WatchForModelConfigChanges() state.NotifyWatcher
    34  }
    35  
    36  type stateShim struct {
    37  	*state.State
    38  }
    39  
    40  func (s stateShim) Model() (Model, error) {
    41  	model, err := s.State.Model()
    42  	if err != nil {
    43  		return nil, err
    44  	}
    45  	return model.CAASModel()
    46  }