github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/controller/caasmodeloperator/mock_test.go (about) 1 // Copyright 2020 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package caasmodeloperator_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/names/v5" 9 10 "github.com/juju/juju/apiserver/common" 11 "github.com/juju/juju/apiserver/facades/controller/caasmodeloperator" 12 "github.com/juju/juju/controller" 13 "github.com/juju/juju/core/network" 14 "github.com/juju/juju/environs/config" 15 "github.com/juju/juju/state" 16 coretesting "github.com/juju/juju/testing" 17 ) 18 19 type mockModel struct { 20 password string 21 tag names.Tag 22 modelConfigChanged state.NotifyWatcher 23 } 24 25 type mockState struct { 26 common.APIAddressAccessor 27 operatorRepo string 28 model *mockModel 29 controllerConfigWatcher state.NotifyWatcher 30 apiHostPortsForAgentsWatcher state.NotifyWatcher 31 } 32 33 func newMockState() *mockState { 34 return &mockState{ 35 model: &mockModel{}, 36 } 37 } 38 39 func (st *mockState) APIHostPortsForAgents() ([]network.SpaceHostPorts, error) { 40 return []network.SpaceHostPorts{ 41 network.NewSpaceHostPorts(1, "10.0.0.1"), 42 }, nil 43 } 44 45 func (st *mockState) ModelUUID() string { 46 return st.model.UUID() 47 } 48 49 func (st *mockState) ControllerConfig() (controller.Config, error) { 50 cfg := coretesting.FakeControllerConfig() 51 cfg[controller.CAASImageRepo] = st.operatorRepo 52 return cfg, nil 53 } 54 55 func (st *mockState) FindEntity(tag names.Tag) (state.Entity, error) { 56 if st.model.tag == tag { 57 return st.model, nil 58 } 59 return nil, errors.NotFoundf("entity %v", tag) 60 } 61 62 func (st *mockState) Model() (caasmodeloperator.Model, error) { 63 return st.model, nil 64 } 65 66 func (m *mockState) WatchControllerConfig() state.NotifyWatcher { 67 return m.controllerConfigWatcher 68 } 69 70 func (m *mockState) WatchAPIHostPortsForAgents() state.NotifyWatcher { 71 return m.apiHostPortsForAgentsWatcher 72 } 73 74 func (m *mockModel) Tag() names.Tag { 75 return m.tag 76 } 77 78 func (m *mockModel) SetPassword(password string) error { 79 m.password = password 80 return nil 81 } 82 83 func (m *mockModel) UUID() string { 84 return coretesting.ModelTag.Id() 85 } 86 87 func (m *mockModel) ModelConfig() (*config.Config, error) { 88 attrs := coretesting.FakeConfig() 89 attrs["operator-storage"] = "k8s-storage" 90 attrs["agent-version"] = "2.6-beta3" 91 return config.New(config.UseDefaults, attrs) 92 } 93 94 func (m *mockModel) WatchForModelConfigChanges() state.NotifyWatcher { 95 return m.modelConfigChanged 96 }