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  }