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 }