From aa801956782fb98e9cac61e2e006eca92df1b3e9 Mon Sep 17 00:00:00 2001 From: Anders Johnsen Date: Thu, 2 May 2024 08:10:38 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9C=A8=20Support=20"checkpoint"-ing=20in?= =?UTF-8?q?=20Object=20Status=20watching?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is useful for concluding the total set of objects, from the event stream itself. --- .../rig/pkg/service/config/mock_Service.go | 129 --- .../discovery/mock_DiscoveryInterface.go | 595 ------------- .../pkg/client/mock_Client.go | 783 ------------------ pkg/controller/capsule_controller.go | 35 + pkg/controller/plugin/external_plugin.go | 9 +- pkg/controller/plugin/step.go | 20 + pkg/controller/plugin/watcher.go | 9 + pkg/controller/project_controller.go | 5 + pkg/manager/manager.go | 3 + pkg/pipeline/step.go | 1 + pkg/service/objectstatus/service.go | 74 +- pkg/service/objectstatus/watcher.go | 24 +- .../api/v1/pipeline/object_status.proto | 59 ++ .../operator/api/v1/pipeline/service.proto | 51 +- .../rig/operator/api/v1/plugin/service.proto | 5 +- test/integration/k8s/plugin_suite_test.go | 1 + test/integration/k8s/suite_test.go | 1 + 17 files changed, 224 insertions(+), 1580 deletions(-) delete mode 100644 gen/mocks/github.com/rigdev/rig/pkg/service/config/mock_Service.go delete mode 100644 gen/mocks/k8s.io/client-go/discovery/mock_DiscoveryInterface.go delete mode 100644 gen/mocks/sigs.k8s.io/controller-runtime/pkg/client/mock_Client.go create mode 100644 proto/rig/operator/api/v1/pipeline/object_status.proto diff --git a/gen/mocks/github.com/rigdev/rig/pkg/service/config/mock_Service.go b/gen/mocks/github.com/rigdev/rig/pkg/service/config/mock_Service.go deleted file mode 100644 index 58090cba6..000000000 --- a/gen/mocks/github.com/rigdev/rig/pkg/service/config/mock_Service.go +++ /dev/null @@ -1,129 +0,0 @@ -// Code generated by mockery v2.39.1. DO NOT EDIT. - -package config - -import ( - v1alpha1 "github.com/rigdev/rig/pkg/api/config/v1alpha1" - mock "github.com/stretchr/testify/mock" -) - -// MockService is an autogenerated mock type for the Service type -type MockService struct { - mock.Mock -} - -type MockService_Expecter struct { - mock *mock.Mock -} - -func (_m *MockService) EXPECT() *MockService_Expecter { - return &MockService_Expecter{mock: &_m.Mock} -} - -// Operator provides a mock function with given fields: -func (_m *MockService) Operator() *v1alpha1.OperatorConfig { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for Operator") - } - - var r0 *v1alpha1.OperatorConfig - if rf, ok := ret.Get(0).(func() *v1alpha1.OperatorConfig); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1alpha1.OperatorConfig) - } - } - - return r0 -} - -// MockService_Operator_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Operator' -type MockService_Operator_Call struct { - *mock.Call -} - -// Operator is a helper method to define mock.On call -func (_e *MockService_Expecter) Operator() *MockService_Operator_Call { - return &MockService_Operator_Call{Call: _e.mock.On("Operator")} -} - -func (_c *MockService_Operator_Call) Run(run func()) *MockService_Operator_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockService_Operator_Call) Return(_a0 *v1alpha1.OperatorConfig) *MockService_Operator_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockService_Operator_Call) RunAndReturn(run func() *v1alpha1.OperatorConfig) *MockService_Operator_Call { - _c.Call.Return(run) - return _c -} - -// Platform provides a mock function with given fields: -func (_m *MockService) Platform() *v1alpha1.PlatformConfig { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for Platform") - } - - var r0 *v1alpha1.PlatformConfig - if rf, ok := ret.Get(0).(func() *v1alpha1.PlatformConfig); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1alpha1.PlatformConfig) - } - } - - return r0 -} - -// MockService_Platform_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Platform' -type MockService_Platform_Call struct { - *mock.Call -} - -// Platform is a helper method to define mock.On call -func (_e *MockService_Expecter) Platform() *MockService_Platform_Call { - return &MockService_Platform_Call{Call: _e.mock.On("Platform")} -} - -func (_c *MockService_Platform_Call) Run(run func()) *MockService_Platform_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockService_Platform_Call) Return(_a0 *v1alpha1.PlatformConfig) *MockService_Platform_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockService_Platform_Call) RunAndReturn(run func() *v1alpha1.PlatformConfig) *MockService_Platform_Call { - _c.Call.Return(run) - return _c -} - -// NewMockService creates a new instance of MockService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewMockService(t interface { - mock.TestingT - Cleanup(func()) -}) *MockService { - mock := &MockService{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/gen/mocks/k8s.io/client-go/discovery/mock_DiscoveryInterface.go b/gen/mocks/k8s.io/client-go/discovery/mock_DiscoveryInterface.go deleted file mode 100644 index d91dc8c39..000000000 --- a/gen/mocks/k8s.io/client-go/discovery/mock_DiscoveryInterface.go +++ /dev/null @@ -1,595 +0,0 @@ -// Code generated by mockery v2.39.1. DO NOT EDIT. - -package discovery - -import ( - mock "github.com/stretchr/testify/mock" - discovery "k8s.io/client-go/discovery" - - openapi "k8s.io/client-go/openapi" - - openapi_v2 "github.com/google/gnostic-models/openapiv2" - - rest "k8s.io/client-go/rest" - - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - version "k8s.io/apimachinery/pkg/version" -) - -// MockDiscoveryInterface is an autogenerated mock type for the DiscoveryInterface type -type MockDiscoveryInterface struct { - mock.Mock -} - -type MockDiscoveryInterface_Expecter struct { - mock *mock.Mock -} - -func (_m *MockDiscoveryInterface) EXPECT() *MockDiscoveryInterface_Expecter { - return &MockDiscoveryInterface_Expecter{mock: &_m.Mock} -} - -// OpenAPISchema provides a mock function with given fields: -func (_m *MockDiscoveryInterface) OpenAPISchema() (*openapi_v2.Document, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for OpenAPISchema") - } - - var r0 *openapi_v2.Document - var r1 error - if rf, ok := ret.Get(0).(func() (*openapi_v2.Document, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() *openapi_v2.Document); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*openapi_v2.Document) - } - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockDiscoveryInterface_OpenAPISchema_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OpenAPISchema' -type MockDiscoveryInterface_OpenAPISchema_Call struct { - *mock.Call -} - -// OpenAPISchema is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) OpenAPISchema() *MockDiscoveryInterface_OpenAPISchema_Call { - return &MockDiscoveryInterface_OpenAPISchema_Call{Call: _e.mock.On("OpenAPISchema")} -} - -func (_c *MockDiscoveryInterface_OpenAPISchema_Call) Run(run func()) *MockDiscoveryInterface_OpenAPISchema_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_OpenAPISchema_Call) Return(_a0 *openapi_v2.Document, _a1 error) *MockDiscoveryInterface_OpenAPISchema_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockDiscoveryInterface_OpenAPISchema_Call) RunAndReturn(run func() (*openapi_v2.Document, error)) *MockDiscoveryInterface_OpenAPISchema_Call { - _c.Call.Return(run) - return _c -} - -// OpenAPIV3 provides a mock function with given fields: -func (_m *MockDiscoveryInterface) OpenAPIV3() openapi.Client { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for OpenAPIV3") - } - - var r0 openapi.Client - if rf, ok := ret.Get(0).(func() openapi.Client); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(openapi.Client) - } - } - - return r0 -} - -// MockDiscoveryInterface_OpenAPIV3_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OpenAPIV3' -type MockDiscoveryInterface_OpenAPIV3_Call struct { - *mock.Call -} - -// OpenAPIV3 is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) OpenAPIV3() *MockDiscoveryInterface_OpenAPIV3_Call { - return &MockDiscoveryInterface_OpenAPIV3_Call{Call: _e.mock.On("OpenAPIV3")} -} - -func (_c *MockDiscoveryInterface_OpenAPIV3_Call) Run(run func()) *MockDiscoveryInterface_OpenAPIV3_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_OpenAPIV3_Call) Return(_a0 openapi.Client) *MockDiscoveryInterface_OpenAPIV3_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockDiscoveryInterface_OpenAPIV3_Call) RunAndReturn(run func() openapi.Client) *MockDiscoveryInterface_OpenAPIV3_Call { - _c.Call.Return(run) - return _c -} - -// RESTClient provides a mock function with given fields: -func (_m *MockDiscoveryInterface) RESTClient() rest.Interface { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for RESTClient") - } - - var r0 rest.Interface - if rf, ok := ret.Get(0).(func() rest.Interface); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(rest.Interface) - } - } - - return r0 -} - -// MockDiscoveryInterface_RESTClient_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RESTClient' -type MockDiscoveryInterface_RESTClient_Call struct { - *mock.Call -} - -// RESTClient is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) RESTClient() *MockDiscoveryInterface_RESTClient_Call { - return &MockDiscoveryInterface_RESTClient_Call{Call: _e.mock.On("RESTClient")} -} - -func (_c *MockDiscoveryInterface_RESTClient_Call) Run(run func()) *MockDiscoveryInterface_RESTClient_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_RESTClient_Call) Return(_a0 rest.Interface) *MockDiscoveryInterface_RESTClient_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockDiscoveryInterface_RESTClient_Call) RunAndReturn(run func() rest.Interface) *MockDiscoveryInterface_RESTClient_Call { - _c.Call.Return(run) - return _c -} - -// ServerGroups provides a mock function with given fields: -func (_m *MockDiscoveryInterface) ServerGroups() (*v1.APIGroupList, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ServerGroups") - } - - var r0 *v1.APIGroupList - var r1 error - if rf, ok := ret.Get(0).(func() (*v1.APIGroupList, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() *v1.APIGroupList); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.APIGroupList) - } - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockDiscoveryInterface_ServerGroups_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerGroups' -type MockDiscoveryInterface_ServerGroups_Call struct { - *mock.Call -} - -// ServerGroups is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) ServerGroups() *MockDiscoveryInterface_ServerGroups_Call { - return &MockDiscoveryInterface_ServerGroups_Call{Call: _e.mock.On("ServerGroups")} -} - -func (_c *MockDiscoveryInterface_ServerGroups_Call) Run(run func()) *MockDiscoveryInterface_ServerGroups_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_ServerGroups_Call) Return(_a0 *v1.APIGroupList, _a1 error) *MockDiscoveryInterface_ServerGroups_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockDiscoveryInterface_ServerGroups_Call) RunAndReturn(run func() (*v1.APIGroupList, error)) *MockDiscoveryInterface_ServerGroups_Call { - _c.Call.Return(run) - return _c -} - -// ServerGroupsAndResources provides a mock function with given fields: -func (_m *MockDiscoveryInterface) ServerGroupsAndResources() ([]*v1.APIGroup, []*v1.APIResourceList, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ServerGroupsAndResources") - } - - var r0 []*v1.APIGroup - var r1 []*v1.APIResourceList - var r2 error - if rf, ok := ret.Get(0).(func() ([]*v1.APIGroup, []*v1.APIResourceList, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() []*v1.APIGroup); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*v1.APIGroup) - } - } - - if rf, ok := ret.Get(1).(func() []*v1.APIResourceList); ok { - r1 = rf() - } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).([]*v1.APIResourceList) - } - } - - if rf, ok := ret.Get(2).(func() error); ok { - r2 = rf() - } else { - r2 = ret.Error(2) - } - - return r0, r1, r2 -} - -// MockDiscoveryInterface_ServerGroupsAndResources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerGroupsAndResources' -type MockDiscoveryInterface_ServerGroupsAndResources_Call struct { - *mock.Call -} - -// ServerGroupsAndResources is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) ServerGroupsAndResources() *MockDiscoveryInterface_ServerGroupsAndResources_Call { - return &MockDiscoveryInterface_ServerGroupsAndResources_Call{Call: _e.mock.On("ServerGroupsAndResources")} -} - -func (_c *MockDiscoveryInterface_ServerGroupsAndResources_Call) Run(run func()) *MockDiscoveryInterface_ServerGroupsAndResources_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_ServerGroupsAndResources_Call) Return(_a0 []*v1.APIGroup, _a1 []*v1.APIResourceList, _a2 error) *MockDiscoveryInterface_ServerGroupsAndResources_Call { - _c.Call.Return(_a0, _a1, _a2) - return _c -} - -func (_c *MockDiscoveryInterface_ServerGroupsAndResources_Call) RunAndReturn(run func() ([]*v1.APIGroup, []*v1.APIResourceList, error)) *MockDiscoveryInterface_ServerGroupsAndResources_Call { - _c.Call.Return(run) - return _c -} - -// ServerPreferredNamespacedResources provides a mock function with given fields: -func (_m *MockDiscoveryInterface) ServerPreferredNamespacedResources() ([]*v1.APIResourceList, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ServerPreferredNamespacedResources") - } - - var r0 []*v1.APIResourceList - var r1 error - if rf, ok := ret.Get(0).(func() ([]*v1.APIResourceList, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() []*v1.APIResourceList); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*v1.APIResourceList) - } - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockDiscoveryInterface_ServerPreferredNamespacedResources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerPreferredNamespacedResources' -type MockDiscoveryInterface_ServerPreferredNamespacedResources_Call struct { - *mock.Call -} - -// ServerPreferredNamespacedResources is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) ServerPreferredNamespacedResources() *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call { - return &MockDiscoveryInterface_ServerPreferredNamespacedResources_Call{Call: _e.mock.On("ServerPreferredNamespacedResources")} -} - -func (_c *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call) Run(run func()) *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call) Return(_a0 []*v1.APIResourceList, _a1 error) *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call) RunAndReturn(run func() ([]*v1.APIResourceList, error)) *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call { - _c.Call.Return(run) - return _c -} - -// ServerPreferredResources provides a mock function with given fields: -func (_m *MockDiscoveryInterface) ServerPreferredResources() ([]*v1.APIResourceList, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ServerPreferredResources") - } - - var r0 []*v1.APIResourceList - var r1 error - if rf, ok := ret.Get(0).(func() ([]*v1.APIResourceList, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() []*v1.APIResourceList); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*v1.APIResourceList) - } - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockDiscoveryInterface_ServerPreferredResources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerPreferredResources' -type MockDiscoveryInterface_ServerPreferredResources_Call struct { - *mock.Call -} - -// ServerPreferredResources is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) ServerPreferredResources() *MockDiscoveryInterface_ServerPreferredResources_Call { - return &MockDiscoveryInterface_ServerPreferredResources_Call{Call: _e.mock.On("ServerPreferredResources")} -} - -func (_c *MockDiscoveryInterface_ServerPreferredResources_Call) Run(run func()) *MockDiscoveryInterface_ServerPreferredResources_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_ServerPreferredResources_Call) Return(_a0 []*v1.APIResourceList, _a1 error) *MockDiscoveryInterface_ServerPreferredResources_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockDiscoveryInterface_ServerPreferredResources_Call) RunAndReturn(run func() ([]*v1.APIResourceList, error)) *MockDiscoveryInterface_ServerPreferredResources_Call { - _c.Call.Return(run) - return _c -} - -// ServerResourcesForGroupVersion provides a mock function with given fields: groupVersion -func (_m *MockDiscoveryInterface) ServerResourcesForGroupVersion(groupVersion string) (*v1.APIResourceList, error) { - ret := _m.Called(groupVersion) - - if len(ret) == 0 { - panic("no return value specified for ServerResourcesForGroupVersion") - } - - var r0 *v1.APIResourceList - var r1 error - if rf, ok := ret.Get(0).(func(string) (*v1.APIResourceList, error)); ok { - return rf(groupVersion) - } - if rf, ok := ret.Get(0).(func(string) *v1.APIResourceList); ok { - r0 = rf(groupVersion) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.APIResourceList) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(groupVersion) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockDiscoveryInterface_ServerResourcesForGroupVersion_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerResourcesForGroupVersion' -type MockDiscoveryInterface_ServerResourcesForGroupVersion_Call struct { - *mock.Call -} - -// ServerResourcesForGroupVersion is a helper method to define mock.On call -// - groupVersion string -func (_e *MockDiscoveryInterface_Expecter) ServerResourcesForGroupVersion(groupVersion interface{}) *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call { - return &MockDiscoveryInterface_ServerResourcesForGroupVersion_Call{Call: _e.mock.On("ServerResourcesForGroupVersion", groupVersion)} -} - -func (_c *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call) Run(run func(groupVersion string)) *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(string)) - }) - return _c -} - -func (_c *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call) Return(_a0 *v1.APIResourceList, _a1 error) *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call) RunAndReturn(run func(string) (*v1.APIResourceList, error)) *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call { - _c.Call.Return(run) - return _c -} - -// ServerVersion provides a mock function with given fields: -func (_m *MockDiscoveryInterface) ServerVersion() (*version.Info, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ServerVersion") - } - - var r0 *version.Info - var r1 error - if rf, ok := ret.Get(0).(func() (*version.Info, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() *version.Info); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*version.Info) - } - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockDiscoveryInterface_ServerVersion_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerVersion' -type MockDiscoveryInterface_ServerVersion_Call struct { - *mock.Call -} - -// ServerVersion is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) ServerVersion() *MockDiscoveryInterface_ServerVersion_Call { - return &MockDiscoveryInterface_ServerVersion_Call{Call: _e.mock.On("ServerVersion")} -} - -func (_c *MockDiscoveryInterface_ServerVersion_Call) Run(run func()) *MockDiscoveryInterface_ServerVersion_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_ServerVersion_Call) Return(_a0 *version.Info, _a1 error) *MockDiscoveryInterface_ServerVersion_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockDiscoveryInterface_ServerVersion_Call) RunAndReturn(run func() (*version.Info, error)) *MockDiscoveryInterface_ServerVersion_Call { - _c.Call.Return(run) - return _c -} - -// WithLegacy provides a mock function with given fields: -func (_m *MockDiscoveryInterface) WithLegacy() discovery.DiscoveryInterface { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for WithLegacy") - } - - var r0 discovery.DiscoveryInterface - if rf, ok := ret.Get(0).(func() discovery.DiscoveryInterface); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(discovery.DiscoveryInterface) - } - } - - return r0 -} - -// MockDiscoveryInterface_WithLegacy_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WithLegacy' -type MockDiscoveryInterface_WithLegacy_Call struct { - *mock.Call -} - -// WithLegacy is a helper method to define mock.On call -func (_e *MockDiscoveryInterface_Expecter) WithLegacy() *MockDiscoveryInterface_WithLegacy_Call { - return &MockDiscoveryInterface_WithLegacy_Call{Call: _e.mock.On("WithLegacy")} -} - -func (_c *MockDiscoveryInterface_WithLegacy_Call) Run(run func()) *MockDiscoveryInterface_WithLegacy_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockDiscoveryInterface_WithLegacy_Call) Return(_a0 discovery.DiscoveryInterface) *MockDiscoveryInterface_WithLegacy_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockDiscoveryInterface_WithLegacy_Call) RunAndReturn(run func() discovery.DiscoveryInterface) *MockDiscoveryInterface_WithLegacy_Call { - _c.Call.Return(run) - return _c -} - -// NewMockDiscoveryInterface creates a new instance of MockDiscoveryInterface. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewMockDiscoveryInterface(t interface { - mock.TestingT - Cleanup(func()) -}) *MockDiscoveryInterface { - mock := &MockDiscoveryInterface{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/gen/mocks/sigs.k8s.io/controller-runtime/pkg/client/mock_Client.go b/gen/mocks/sigs.k8s.io/controller-runtime/pkg/client/mock_Client.go deleted file mode 100644 index b191faf9e..000000000 --- a/gen/mocks/sigs.k8s.io/controller-runtime/pkg/client/mock_Client.go +++ /dev/null @@ -1,783 +0,0 @@ -// Code generated by mockery v2.39.1. DO NOT EDIT. - -package client - -import ( - context "context" - - client "sigs.k8s.io/controller-runtime/pkg/client" - - meta "k8s.io/apimachinery/pkg/api/meta" - - mock "github.com/stretchr/testify/mock" - - runtime "k8s.io/apimachinery/pkg/runtime" - - schema "k8s.io/apimachinery/pkg/runtime/schema" - - types "k8s.io/apimachinery/pkg/types" -) - -// MockClient is an autogenerated mock type for the Client type -type MockClient struct { - mock.Mock -} - -type MockClient_Expecter struct { - mock *mock.Mock -} - -func (_m *MockClient) EXPECT() *MockClient_Expecter { - return &MockClient_Expecter{mock: &_m.Mock} -} - -// Create provides a mock function with given fields: ctx, obj, opts -func (_m *MockClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, obj) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, client.Object, ...client.CreateOption) error); ok { - r0 = rf(ctx, obj, opts...) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockClient_Create_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Create' -type MockClient_Create_Call struct { - *mock.Call -} - -// Create is a helper method to define mock.On call -// - ctx context.Context -// - obj client.Object -// - opts ...client.CreateOption -func (_e *MockClient_Expecter) Create(ctx interface{}, obj interface{}, opts ...interface{}) *MockClient_Create_Call { - return &MockClient_Create_Call{Call: _e.mock.On("Create", - append([]interface{}{ctx, obj}, opts...)...)} -} - -func (_c *MockClient_Create_Call) Run(run func(ctx context.Context, obj client.Object, opts ...client.CreateOption)) *MockClient_Create_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]client.CreateOption, len(args)-2) - for i, a := range args[2:] { - if a != nil { - variadicArgs[i] = a.(client.CreateOption) - } - } - run(args[0].(context.Context), args[1].(client.Object), variadicArgs...) - }) - return _c -} - -func (_c *MockClient_Create_Call) Return(_a0 error) *MockClient_Create_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_Create_Call) RunAndReturn(run func(context.Context, client.Object, ...client.CreateOption) error) *MockClient_Create_Call { - _c.Call.Return(run) - return _c -} - -// Delete provides a mock function with given fields: ctx, obj, opts -func (_m *MockClient) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, obj) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, client.Object, ...client.DeleteOption) error); ok { - r0 = rf(ctx, obj, opts...) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockClient_Delete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Delete' -type MockClient_Delete_Call struct { - *mock.Call -} - -// Delete is a helper method to define mock.On call -// - ctx context.Context -// - obj client.Object -// - opts ...client.DeleteOption -func (_e *MockClient_Expecter) Delete(ctx interface{}, obj interface{}, opts ...interface{}) *MockClient_Delete_Call { - return &MockClient_Delete_Call{Call: _e.mock.On("Delete", - append([]interface{}{ctx, obj}, opts...)...)} -} - -func (_c *MockClient_Delete_Call) Run(run func(ctx context.Context, obj client.Object, opts ...client.DeleteOption)) *MockClient_Delete_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]client.DeleteOption, len(args)-2) - for i, a := range args[2:] { - if a != nil { - variadicArgs[i] = a.(client.DeleteOption) - } - } - run(args[0].(context.Context), args[1].(client.Object), variadicArgs...) - }) - return _c -} - -func (_c *MockClient_Delete_Call) Return(_a0 error) *MockClient_Delete_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_Delete_Call) RunAndReturn(run func(context.Context, client.Object, ...client.DeleteOption) error) *MockClient_Delete_Call { - _c.Call.Return(run) - return _c -} - -// DeleteAllOf provides a mock function with given fields: ctx, obj, opts -func (_m *MockClient) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, obj) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for DeleteAllOf") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, client.Object, ...client.DeleteAllOfOption) error); ok { - r0 = rf(ctx, obj, opts...) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockClient_DeleteAllOf_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeleteAllOf' -type MockClient_DeleteAllOf_Call struct { - *mock.Call -} - -// DeleteAllOf is a helper method to define mock.On call -// - ctx context.Context -// - obj client.Object -// - opts ...client.DeleteAllOfOption -func (_e *MockClient_Expecter) DeleteAllOf(ctx interface{}, obj interface{}, opts ...interface{}) *MockClient_DeleteAllOf_Call { - return &MockClient_DeleteAllOf_Call{Call: _e.mock.On("DeleteAllOf", - append([]interface{}{ctx, obj}, opts...)...)} -} - -func (_c *MockClient_DeleteAllOf_Call) Run(run func(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption)) *MockClient_DeleteAllOf_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]client.DeleteAllOfOption, len(args)-2) - for i, a := range args[2:] { - if a != nil { - variadicArgs[i] = a.(client.DeleteAllOfOption) - } - } - run(args[0].(context.Context), args[1].(client.Object), variadicArgs...) - }) - return _c -} - -func (_c *MockClient_DeleteAllOf_Call) Return(_a0 error) *MockClient_DeleteAllOf_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_DeleteAllOf_Call) RunAndReturn(run func(context.Context, client.Object, ...client.DeleteAllOfOption) error) *MockClient_DeleteAllOf_Call { - _c.Call.Return(run) - return _c -} - -// Get provides a mock function with given fields: ctx, key, obj, opts -func (_m *MockClient) Get(ctx context.Context, key types.NamespacedName, obj client.Object, opts ...client.GetOption) error { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, key, obj) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, types.NamespacedName, client.Object, ...client.GetOption) error); ok { - r0 = rf(ctx, key, obj, opts...) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockClient_Get_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Get' -type MockClient_Get_Call struct { - *mock.Call -} - -// Get is a helper method to define mock.On call -// - ctx context.Context -// - key types.NamespacedName -// - obj client.Object -// - opts ...client.GetOption -func (_e *MockClient_Expecter) Get(ctx interface{}, key interface{}, obj interface{}, opts ...interface{}) *MockClient_Get_Call { - return &MockClient_Get_Call{Call: _e.mock.On("Get", - append([]interface{}{ctx, key, obj}, opts...)...)} -} - -func (_c *MockClient_Get_Call) Run(run func(ctx context.Context, key types.NamespacedName, obj client.Object, opts ...client.GetOption)) *MockClient_Get_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]client.GetOption, len(args)-3) - for i, a := range args[3:] { - if a != nil { - variadicArgs[i] = a.(client.GetOption) - } - } - run(args[0].(context.Context), args[1].(types.NamespacedName), args[2].(client.Object), variadicArgs...) - }) - return _c -} - -func (_c *MockClient_Get_Call) Return(_a0 error) *MockClient_Get_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_Get_Call) RunAndReturn(run func(context.Context, types.NamespacedName, client.Object, ...client.GetOption) error) *MockClient_Get_Call { - _c.Call.Return(run) - return _c -} - -// GroupVersionKindFor provides a mock function with given fields: obj -func (_m *MockClient) GroupVersionKindFor(obj runtime.Object) (schema.GroupVersionKind, error) { - ret := _m.Called(obj) - - if len(ret) == 0 { - panic("no return value specified for GroupVersionKindFor") - } - - var r0 schema.GroupVersionKind - var r1 error - if rf, ok := ret.Get(0).(func(runtime.Object) (schema.GroupVersionKind, error)); ok { - return rf(obj) - } - if rf, ok := ret.Get(0).(func(runtime.Object) schema.GroupVersionKind); ok { - r0 = rf(obj) - } else { - r0 = ret.Get(0).(schema.GroupVersionKind) - } - - if rf, ok := ret.Get(1).(func(runtime.Object) error); ok { - r1 = rf(obj) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockClient_GroupVersionKindFor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GroupVersionKindFor' -type MockClient_GroupVersionKindFor_Call struct { - *mock.Call -} - -// GroupVersionKindFor is a helper method to define mock.On call -// - obj runtime.Object -func (_e *MockClient_Expecter) GroupVersionKindFor(obj interface{}) *MockClient_GroupVersionKindFor_Call { - return &MockClient_GroupVersionKindFor_Call{Call: _e.mock.On("GroupVersionKindFor", obj)} -} - -func (_c *MockClient_GroupVersionKindFor_Call) Run(run func(obj runtime.Object)) *MockClient_GroupVersionKindFor_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(runtime.Object)) - }) - return _c -} - -func (_c *MockClient_GroupVersionKindFor_Call) Return(_a0 schema.GroupVersionKind, _a1 error) *MockClient_GroupVersionKindFor_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockClient_GroupVersionKindFor_Call) RunAndReturn(run func(runtime.Object) (schema.GroupVersionKind, error)) *MockClient_GroupVersionKindFor_Call { - _c.Call.Return(run) - return _c -} - -// IsObjectNamespaced provides a mock function with given fields: obj -func (_m *MockClient) IsObjectNamespaced(obj runtime.Object) (bool, error) { - ret := _m.Called(obj) - - if len(ret) == 0 { - panic("no return value specified for IsObjectNamespaced") - } - - var r0 bool - var r1 error - if rf, ok := ret.Get(0).(func(runtime.Object) (bool, error)); ok { - return rf(obj) - } - if rf, ok := ret.Get(0).(func(runtime.Object) bool); ok { - r0 = rf(obj) - } else { - r0 = ret.Get(0).(bool) - } - - if rf, ok := ret.Get(1).(func(runtime.Object) error); ok { - r1 = rf(obj) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockClient_IsObjectNamespaced_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'IsObjectNamespaced' -type MockClient_IsObjectNamespaced_Call struct { - *mock.Call -} - -// IsObjectNamespaced is a helper method to define mock.On call -// - obj runtime.Object -func (_e *MockClient_Expecter) IsObjectNamespaced(obj interface{}) *MockClient_IsObjectNamespaced_Call { - return &MockClient_IsObjectNamespaced_Call{Call: _e.mock.On("IsObjectNamespaced", obj)} -} - -func (_c *MockClient_IsObjectNamespaced_Call) Run(run func(obj runtime.Object)) *MockClient_IsObjectNamespaced_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(runtime.Object)) - }) - return _c -} - -func (_c *MockClient_IsObjectNamespaced_Call) Return(_a0 bool, _a1 error) *MockClient_IsObjectNamespaced_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockClient_IsObjectNamespaced_Call) RunAndReturn(run func(runtime.Object) (bool, error)) *MockClient_IsObjectNamespaced_Call { - _c.Call.Return(run) - return _c -} - -// List provides a mock function with given fields: ctx, list, opts -func (_m *MockClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, list) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for List") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, client.ObjectList, ...client.ListOption) error); ok { - r0 = rf(ctx, list, opts...) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockClient_List_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'List' -type MockClient_List_Call struct { - *mock.Call -} - -// List is a helper method to define mock.On call -// - ctx context.Context -// - list client.ObjectList -// - opts ...client.ListOption -func (_e *MockClient_Expecter) List(ctx interface{}, list interface{}, opts ...interface{}) *MockClient_List_Call { - return &MockClient_List_Call{Call: _e.mock.On("List", - append([]interface{}{ctx, list}, opts...)...)} -} - -func (_c *MockClient_List_Call) Run(run func(ctx context.Context, list client.ObjectList, opts ...client.ListOption)) *MockClient_List_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]client.ListOption, len(args)-2) - for i, a := range args[2:] { - if a != nil { - variadicArgs[i] = a.(client.ListOption) - } - } - run(args[0].(context.Context), args[1].(client.ObjectList), variadicArgs...) - }) - return _c -} - -func (_c *MockClient_List_Call) Return(_a0 error) *MockClient_List_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_List_Call) RunAndReturn(run func(context.Context, client.ObjectList, ...client.ListOption) error) *MockClient_List_Call { - _c.Call.Return(run) - return _c -} - -// Patch provides a mock function with given fields: ctx, obj, patch, opts -func (_m *MockClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, obj, patch) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Patch") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, client.Object, client.Patch, ...client.PatchOption) error); ok { - r0 = rf(ctx, obj, patch, opts...) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockClient_Patch_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Patch' -type MockClient_Patch_Call struct { - *mock.Call -} - -// Patch is a helper method to define mock.On call -// - ctx context.Context -// - obj client.Object -// - patch client.Patch -// - opts ...client.PatchOption -func (_e *MockClient_Expecter) Patch(ctx interface{}, obj interface{}, patch interface{}, opts ...interface{}) *MockClient_Patch_Call { - return &MockClient_Patch_Call{Call: _e.mock.On("Patch", - append([]interface{}{ctx, obj, patch}, opts...)...)} -} - -func (_c *MockClient_Patch_Call) Run(run func(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption)) *MockClient_Patch_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]client.PatchOption, len(args)-3) - for i, a := range args[3:] { - if a != nil { - variadicArgs[i] = a.(client.PatchOption) - } - } - run(args[0].(context.Context), args[1].(client.Object), args[2].(client.Patch), variadicArgs...) - }) - return _c -} - -func (_c *MockClient_Patch_Call) Return(_a0 error) *MockClient_Patch_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_Patch_Call) RunAndReturn(run func(context.Context, client.Object, client.Patch, ...client.PatchOption) error) *MockClient_Patch_Call { - _c.Call.Return(run) - return _c -} - -// RESTMapper provides a mock function with given fields: -func (_m *MockClient) RESTMapper() meta.RESTMapper { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for RESTMapper") - } - - var r0 meta.RESTMapper - if rf, ok := ret.Get(0).(func() meta.RESTMapper); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(meta.RESTMapper) - } - } - - return r0 -} - -// MockClient_RESTMapper_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RESTMapper' -type MockClient_RESTMapper_Call struct { - *mock.Call -} - -// RESTMapper is a helper method to define mock.On call -func (_e *MockClient_Expecter) RESTMapper() *MockClient_RESTMapper_Call { - return &MockClient_RESTMapper_Call{Call: _e.mock.On("RESTMapper")} -} - -func (_c *MockClient_RESTMapper_Call) Run(run func()) *MockClient_RESTMapper_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockClient_RESTMapper_Call) Return(_a0 meta.RESTMapper) *MockClient_RESTMapper_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_RESTMapper_Call) RunAndReturn(run func() meta.RESTMapper) *MockClient_RESTMapper_Call { - _c.Call.Return(run) - return _c -} - -// Scheme provides a mock function with given fields: -func (_m *MockClient) Scheme() *runtime.Scheme { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for Scheme") - } - - var r0 *runtime.Scheme - if rf, ok := ret.Get(0).(func() *runtime.Scheme); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*runtime.Scheme) - } - } - - return r0 -} - -// MockClient_Scheme_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Scheme' -type MockClient_Scheme_Call struct { - *mock.Call -} - -// Scheme is a helper method to define mock.On call -func (_e *MockClient_Expecter) Scheme() *MockClient_Scheme_Call { - return &MockClient_Scheme_Call{Call: _e.mock.On("Scheme")} -} - -func (_c *MockClient_Scheme_Call) Run(run func()) *MockClient_Scheme_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockClient_Scheme_Call) Return(_a0 *runtime.Scheme) *MockClient_Scheme_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_Scheme_Call) RunAndReturn(run func() *runtime.Scheme) *MockClient_Scheme_Call { - _c.Call.Return(run) - return _c -} - -// Status provides a mock function with given fields: -func (_m *MockClient) Status() client.SubResourceWriter { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for Status") - } - - var r0 client.SubResourceWriter - if rf, ok := ret.Get(0).(func() client.SubResourceWriter); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(client.SubResourceWriter) - } - } - - return r0 -} - -// MockClient_Status_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Status' -type MockClient_Status_Call struct { - *mock.Call -} - -// Status is a helper method to define mock.On call -func (_e *MockClient_Expecter) Status() *MockClient_Status_Call { - return &MockClient_Status_Call{Call: _e.mock.On("Status")} -} - -func (_c *MockClient_Status_Call) Run(run func()) *MockClient_Status_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockClient_Status_Call) Return(_a0 client.SubResourceWriter) *MockClient_Status_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_Status_Call) RunAndReturn(run func() client.SubResourceWriter) *MockClient_Status_Call { - _c.Call.Return(run) - return _c -} - -// SubResource provides a mock function with given fields: subResource -func (_m *MockClient) SubResource(subResource string) client.SubResourceClient { - ret := _m.Called(subResource) - - if len(ret) == 0 { - panic("no return value specified for SubResource") - } - - var r0 client.SubResourceClient - if rf, ok := ret.Get(0).(func(string) client.SubResourceClient); ok { - r0 = rf(subResource) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(client.SubResourceClient) - } - } - - return r0 -} - -// MockClient_SubResource_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SubResource' -type MockClient_SubResource_Call struct { - *mock.Call -} - -// SubResource is a helper method to define mock.On call -// - subResource string -func (_e *MockClient_Expecter) SubResource(subResource interface{}) *MockClient_SubResource_Call { - return &MockClient_SubResource_Call{Call: _e.mock.On("SubResource", subResource)} -} - -func (_c *MockClient_SubResource_Call) Run(run func(subResource string)) *MockClient_SubResource_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(string)) - }) - return _c -} - -func (_c *MockClient_SubResource_Call) Return(_a0 client.SubResourceClient) *MockClient_SubResource_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_SubResource_Call) RunAndReturn(run func(string) client.SubResourceClient) *MockClient_SubResource_Call { - _c.Call.Return(run) - return _c -} - -// Update provides a mock function with given fields: ctx, obj, opts -func (_m *MockClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, obj) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, client.Object, ...client.UpdateOption) error); ok { - r0 = rf(ctx, obj, opts...) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// MockClient_Update_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Update' -type MockClient_Update_Call struct { - *mock.Call -} - -// Update is a helper method to define mock.On call -// - ctx context.Context -// - obj client.Object -// - opts ...client.UpdateOption -func (_e *MockClient_Expecter) Update(ctx interface{}, obj interface{}, opts ...interface{}) *MockClient_Update_Call { - return &MockClient_Update_Call{Call: _e.mock.On("Update", - append([]interface{}{ctx, obj}, opts...)...)} -} - -func (_c *MockClient_Update_Call) Run(run func(ctx context.Context, obj client.Object, opts ...client.UpdateOption)) *MockClient_Update_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]client.UpdateOption, len(args)-2) - for i, a := range args[2:] { - if a != nil { - variadicArgs[i] = a.(client.UpdateOption) - } - } - run(args[0].(context.Context), args[1].(client.Object), variadicArgs...) - }) - return _c -} - -func (_c *MockClient_Update_Call) Return(_a0 error) *MockClient_Update_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *MockClient_Update_Call) RunAndReturn(run func(context.Context, client.Object, ...client.UpdateOption) error) *MockClient_Update_Call { - _c.Call.Return(run) - return _c -} - -// NewMockClient creates a new instance of MockClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewMockClient(t interface { - mock.TestingT - Cleanup(func()) -}) *MockClient { - mock := &MockClient{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/pkg/controller/capsule_controller.go b/pkg/controller/capsule_controller.go index 3e1e4b461..8a50d67e0 100644 --- a/pkg/controller/capsule_controller.go +++ b/pkg/controller/capsule_controller.go @@ -20,6 +20,8 @@ import ( "context" "fmt" "strconv" + "sync" + "time" cmv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1" monitorv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" @@ -29,6 +31,7 @@ import ( "github.com/rigdev/rig/pkg/service/capabilities" "github.com/rigdev/rig/pkg/service/objectstatus" svc_pipeline "github.com/rigdev/rig/pkg/service/pipeline" + "go.uber.org/fx" appsv1 "k8s.io/api/apps/v1" autoscalingv2 "k8s.io/api/autoscaling/v2" batchv1 "k8s.io/api/batch/v1" @@ -55,6 +58,9 @@ type CapsuleReconciler struct { CapabilitiesService capabilities.Service PipelineService svc_pipeline.Service ObjectStatusService objectstatus.Service + Lifecycle fx.Lifecycle + initialize sync.WaitGroup + mgr ctrl.Manager } const ( @@ -70,6 +76,11 @@ const ( func (r *CapsuleReconciler) SetupWithManager(mgr ctrl.Manager) error { ctx := context.TODO() + r.initialize.Add(1) + r.mgr = mgr + + r.Lifecycle.Append(fx.StartHook(r.initializeReconciler)) + if err := mgr.GetFieldIndexer().IndexField( context.Background(), &v1alpha2.Capsule{}, @@ -275,6 +286,28 @@ func findCapsulesForConfig(mgr ctrl.Manager) handler.MapFunc { } } +func (r *CapsuleReconciler) initializeReconciler(ctx context.Context) { + r.mgr.GetCache().WaitForCacheSync(ctx) + + for { + var capsules v1alpha2.CapsuleList + if err := r.mgr.GetCache().List(ctx, &capsules); err != nil { + r.mgr.GetLogger().Error(err, "error getting initial capsule list") + time.Sleep(1 * time.Second) + continue + } + + for _, capsule := range capsules.Items { + r.ObjectStatusService.RegisterCapsule(capsule.GetNamespace(), capsule.GetName()) + } + + break + } + + r.ObjectStatusService.CapsulesInitialized() + r.initialize.Done() +} + //+kubebuilder:rbac:groups=rig.dev,resources=capsules,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=rig.dev,resources=capsules/status,verbs=get;update;patch //+kubebuilder:rbac:groups=rig.dev,resources=capsules/finalizers,verbs=update @@ -289,6 +322,8 @@ func findCapsulesForConfig(mgr ctrl.Manager) handler.MapFunc { // actual cluster state, and then performs operations to make the cluster state // reflect the state specified by the Capsule. func (r *CapsuleReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { + r.initialize.Wait() + // TODO: use rig logger log := log.FromContext(ctx) log.Info("reconciliation started") diff --git a/pkg/controller/plugin/external_plugin.go b/pkg/controller/plugin/external_plugin.go index 3c354c902..59d270753 100644 --- a/pkg/controller/plugin/external_plugin.go +++ b/pkg/controller/plugin/external_plugin.go @@ -32,6 +32,7 @@ type pluginExecutor struct { binaryPath string args []string tag string + id uuid.UUID } func newPluginExecutor( @@ -50,6 +51,7 @@ func newPluginExecutor( binaryPath: path, args: args, tag: tag, + id: uuid.New(), } return p, p.start(context.Background(), pluginConfig, restConfig) @@ -126,7 +128,7 @@ func (p *pluginExecutor) WatchObjectStatus( capsule string, callback pipeline.ObjectStatusCallback, ) error { - return p.pluginClient.WatchObjectStatus(ctx, namespace, capsule, callback) + return p.pluginClient.WatchObjectStatus(ctx, namespace, capsule, callback, p.id) } type rigOperatorPlugin struct { @@ -214,6 +216,7 @@ func (m *pluginClient) WatchObjectStatus( namespace string, capsule string, callback pipeline.ObjectStatusCallback, + pluginID uuid.UUID, ) error { c, err := m.client.WatchObjectStatus(ctx, &apiplugin.WatchObjectStatusRequest{ Namespace: namespace, @@ -223,15 +226,13 @@ func (m *pluginClient) WatchObjectStatus( return err } - id := uuid.New() - for { res, err := c.Recv() if err != nil { return err } - callback.UpdateStatus(namespace, capsule, id, res.GetChange()) + callback.UpdateStatus(namespace, capsule, pluginID, res.GetChange()) } } diff --git a/pkg/controller/plugin/step.go b/pkg/controller/plugin/step.go index 4a28d6ff4..308f8b013 100644 --- a/pkg/controller/plugin/step.go +++ b/pkg/controller/plugin/step.go @@ -6,9 +6,11 @@ import ( "github.com/go-logr/logr" "github.com/gobwas/glob" + "github.com/rigdev/rig-go-api/operator/api/v1/plugin" "github.com/rigdev/rig/pkg/api/config/v1alpha1" "github.com/rigdev/rig/pkg/errors" "github.com/rigdev/rig/pkg/pipeline" + "github.com/rigdev/rig/pkg/uuid" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" ) @@ -70,15 +72,25 @@ func (s *Step) WatchObjectStatus( // TODO: We need annotations here. if !s.matcher.Match(namespace, capsule, nil) { + for _, p := range s.plugins { + callback.UpdateStatus(namespace, capsule, p.id, &plugin.ObjectStatusChange{ + Change: &plugin.ObjectStatusChange_Checkpoint_{}, + }) + } return nil } for _, p := range s.plugins { wg.Add(1) + go func(p *pluginExecutor) { err := p.WatchObjectStatus(ctx, namespace, capsule, callback) if !errors.IsUnimplemented(err) { s.logger.Error(err, "error getting status") + } else { + callback.UpdateStatus(namespace, capsule, p.id, &plugin.ObjectStatusChange{ + Change: &plugin.ObjectStatusChange_Checkpoint_{}, + }) } wg.Done() }(p) @@ -89,6 +101,14 @@ func (s *Step) WatchObjectStatus( return nil } +func (s *Step) PluginIDs() []uuid.UUID { + var plugins []uuid.UUID + for _, p := range s.plugins { + plugins = append(plugins, p.id) + } + return plugins +} + type Matcher struct { namespaces []glob.Glob capsules []glob.Glob diff --git a/pkg/controller/plugin/watcher.go b/pkg/controller/plugin/watcher.go index bde3e7b33..abc49e7cf 100644 --- a/pkg/controller/plugin/watcher.go +++ b/pkg/controller/plugin/watcher.go @@ -66,6 +66,14 @@ func (w *capsuleWatcher) flush() { }: case <-w.ctx.Done(): } + select { + case w.c <- &apiplugin.ObjectStatusChange{ + Change: &apiplugin.ObjectStatusChange_Checkpoint_{ + Checkpoint: &apiplugin.ObjectStatusChange_Checkpoint{}, + }, + }: + case <-w.ctx.Done(): + } w.initialized = true } @@ -90,6 +98,7 @@ func (w *capsuleWatcher) updated(os *apipipeline.ObjectStatus) { } func (w *capsuleWatcher) deleted(or *apipipeline.ObjectRef) { + // TODO: This is probably not a good idea - delay instead?. w.flush() select { case w.c <- &apiplugin.ObjectStatusChange{ diff --git a/pkg/controller/project_controller.go b/pkg/controller/project_controller.go index 824cc990d..b88d8c67a 100644 --- a/pkg/controller/project_controller.go +++ b/pkg/controller/project_controller.go @@ -8,6 +8,7 @@ import ( configv1alpha1 "github.com/rigdev/rig/pkg/api/config/v1alpha1" "github.com/rigdev/rig/pkg/api/v1alpha2" "github.com/rigdev/rig/pkg/pipeline" + "github.com/rigdev/rig/pkg/uuid" corev1 "k8s.io/api/core/v1" "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" kerrors "k8s.io/apimachinery/pkg/api/errors" @@ -102,3 +103,7 @@ func (s namespaceStep) WatchObjectStatus( ) error { return nil } + +func (s namespaceStep) PluginIDs() []uuid.UUID { + return nil +} diff --git a/pkg/manager/manager.go b/pkg/manager/manager.go index 40c143747..659b3c351 100644 --- a/pkg/manager/manager.go +++ b/pkg/manager/manager.go @@ -12,6 +12,7 @@ import ( "github.com/rigdev/rig/pkg/service/config" "github.com/rigdev/rig/pkg/service/objectstatus" "github.com/rigdev/rig/pkg/service/pipeline" + "go.uber.org/fx" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/rest" ctrl "sigs.k8s.io/controller-runtime" @@ -36,6 +37,7 @@ func New( objectstatus objectstatus.Service, restConfig *rest.Config, logger logr.Logger, + lc fx.Lifecycle, ) (manager.Manager, error) { cfg := cfgS.Operator() @@ -60,6 +62,7 @@ func New( CapabilitiesService: capabilitiesService, PipelineService: pipeline, ObjectStatusService: objectstatus, + Lifecycle: lc, } if err := cr.SetupWithManager(mgr); err != nil { diff --git a/pkg/pipeline/step.go b/pkg/pipeline/step.go index 982fc9b39..d4d3a6ad3 100644 --- a/pkg/pipeline/step.go +++ b/pkg/pipeline/step.go @@ -14,4 +14,5 @@ type ObjectStatusCallback interface { type Step[T Request] interface { Apply(ctx context.Context, req T) error WatchObjectStatus(ctx context.Context, namespace, capsule string, callback ObjectStatusCallback) error + PluginIDs() []uuid.UUID } diff --git a/pkg/service/objectstatus/service.go b/pkg/service/objectstatus/service.go index 8f560836b..aa3f8c3f7 100644 --- a/pkg/service/objectstatus/service.go +++ b/pkg/service/objectstatus/service.go @@ -2,7 +2,6 @@ package objectstatus import ( "context" - "fmt" "slices" "sync" "time" @@ -24,6 +23,7 @@ type Service interface { // TODO: Adopt iterators. Watch(ctx context.Context, namespace string, c chan<- *apipipeline.ObjectStatusChange) error + CapsulesInitialized() RegisterCapsule(namespace string, capsule string) UnregisterCapsule(namespace string, capsule string) @@ -46,19 +46,23 @@ func NewService( } type service struct { - cfg *v1alpha1.OperatorConfig - logger logr.Logger - pipeline svc_pipeline.Service - lock sync.RWMutex - capsules map[string]map[string]*capsuleCache - watchers []*watcher + cfg *v1alpha1.OperatorConfig + logger logr.Logger + pipeline svc_pipeline.Service + lock sync.RWMutex + capsules map[string]map[string]*capsuleCache + watchers []*watcher + initialized bool } -func (s *service) runForCapsule(ctx context.Context, namespace, capsule string) { +func (s *service) runForCapsule(ctx context.Context, namespace string, c *capsuleCache) { p := s.pipeline.GetDefaultPipeline() for _, step := range p.Steps() { - go s.runStepForCapsule(ctx, namespace, capsule, step) + for _, pluginID := range step.PluginIDs() { + c.plugins[pluginID] = false + } + go s.runStepForCapsule(ctx, namespace, c.capsule, step) } } @@ -95,7 +99,8 @@ func (s *service) Watch(ctx context.Context, namespace string, c chan<- *apipipe // Keep lock (and unlock in go-routine) when all statuses are read. go func() { - s.readStatusForNamespace(w.namespace, w) + s.readStatusForNamespace(namespace, w) + s.sendCheckpoint(namespace, []*watcher{w}) s.lock.Unlock() }() @@ -116,6 +121,16 @@ func (s *service) readStatusForNamespace(namespace string, w *watcher) []*apipip return res } +func (s *service) CapsulesInitialized() { + // Initialized! + s.lock.Lock() + defer s.lock.Unlock() + s.initialized = true + for namespace := range s.capsules { + s.sendCheckpoint(namespace, s.watchers) + } +} + func (s *service) RegisterCapsule(namespace string, capsule string) { if s.cfg.EnableObjectStatusCache == nil || !*s.cfg.EnableObjectStatusCache { return @@ -132,14 +147,15 @@ func (s *service) RegisterCapsule(namespace string, capsule string) { if _, ok := cs[capsule]; !ok { ctx, cancel := context.WithCancel(context.Background()) - cs[capsule] = &capsuleCache{ + c := &capsuleCache{ + plugins: map[uuid.UUID]bool{}, capsule: capsule, cancel: cancel, objects: map[pipeline.ObjectKey]*objectCache{}, } + cs[capsule] = c - fmt.Println("RUN FOR CAPSULE", namespace, capsule) - s.runForCapsule(ctx, namespace, capsule) + s.runForCapsule(ctx, namespace, c) } } @@ -202,9 +218,34 @@ func (s *service) UpdateStatus( } } } + + if change.GetCheckpoint() != nil { + s.sendCheckpoint(namespace, s.watchers) + } + s.lock.RUnlock() } +func (s *service) sendCheckpoint(namespace string, watchers []*watcher) { + if !s.initialized { + return + } + + for _, c := range s.capsules[namespace] { + for _, initialized := range c.plugins { + if !initialized { + return + } + } + } + + for _, w := range watchers { + if w.namespace == namespace { + w.checkpoint() + } + } +} + func (s *service) getCapsule(namespace string, capsule string) *capsuleCache { s.lock.RLock() defer s.lock.RUnlock() @@ -223,8 +264,10 @@ func (s *service) getCapsule(namespace string, capsule string) *capsuleCache { } type capsuleCache struct { - lock sync.RWMutex + // This property is owned by the service. + plugins map[uuid.UUID]bool + lock sync.RWMutex capsule string objects map[pipeline.ObjectKey]*objectCache cancel context.CancelFunc @@ -311,6 +354,9 @@ func (c *capsuleCache) update(pluginID uuid.UUID, change *apiplugin.ObjectStatus delete(c.objects, key) } } + + case *apiplugin.ObjectStatusChange_Checkpoint_: + c.plugins[pluginID] = true } return keys diff --git a/pkg/service/objectstatus/watcher.go b/pkg/service/objectstatus/watcher.go index 3c646907a..3a33e62e9 100644 --- a/pkg/service/objectstatus/watcher.go +++ b/pkg/service/objectstatus/watcher.go @@ -8,10 +8,11 @@ import ( ) type watcher struct { - namespace string - c chan<- *apipipeline.ObjectStatusChange - queue []*apipipeline.ObjectStatusChange - cond *sync.Cond + namespace string + c chan<- *apipipeline.ObjectStatusChange + queue []*apipipeline.ObjectStatusChange + cond *sync.Cond + sentCheckpoint bool } func newWatcher(namespace string, c chan<- *apipipeline.ObjectStatusChange) *watcher { @@ -64,3 +65,18 @@ func (w *watcher) pushChange(change *apipipeline.ObjectStatusChange) { w.cond.Signal() w.cond.L.Unlock() } + +func (w *watcher) checkpoint() { + w.cond.L.Lock() + defer w.cond.L.Unlock() + if w.sentCheckpoint { + return + } + w.sentCheckpoint = true + w.queue = append(w.queue, &apipipeline.ObjectStatusChange{ + Change: &apipipeline.ObjectStatusChange_Checkpoint_{ + Checkpoint: &apipipeline.ObjectStatusChange_Checkpoint{}, + }, + }) + w.cond.Signal() +} diff --git a/proto/rig/operator/api/v1/pipeline/object_status.proto b/proto/rig/operator/api/v1/pipeline/object_status.proto new file mode 100644 index 000000000..7e77a2a0a --- /dev/null +++ b/proto/rig/operator/api/v1/pipeline/object_status.proto @@ -0,0 +1,59 @@ +syntax = "proto3"; + +package api.v1.pipeline; + +import "google/protobuf/timestamp.proto"; + +message ObjectStatusChange { + string capsule = 1; + + message Checkpoint {} + + oneof change { + ObjectStatus updated = 2; + ObjectRef deleted = 3; + // Checkpoint events indicates that all existing object statuses for + // this namespace has been sent in the current "watch" session. + Checkpoint checkpoint = 4; + } +} + +enum ObjectType { + OBJECT_TYPE_UNSPECIFIED = 0; + OBJECT_TYPE_PRIMARY = 1; + OBJECT_TYPE_SECONDARY = 2; + OBJECT_TYPE_POD = 3; +} + +message ObjectStatus { + ObjectRef object_ref = 1; + ObjectType type = 2; + repeated ObjectCondition conditions = 3; + map properties = 4; +} + +enum ObjectState { + OBJECT_STATE_UNSPECIFIED = 0; + OBJECT_STATE_HEALTHY = 1; + OBJECT_STATE_PENDING = 2; + OBJECT_STATE_ERROR = 3; +} + +message ObjectCondition { + string name = 1; + google.protobuf.Timestamp updated_at = 2; + ObjectState state = 3; + string message = 4; +} + +message GVK { + string group = 1; + string version = 2; + string kind = 3; +} + +message ObjectRef { + GVK gvk = 1; + string namespace = 2; + string name = 3; +} diff --git a/proto/rig/operator/api/v1/pipeline/service.proto b/proto/rig/operator/api/v1/pipeline/service.proto index f2997099b..4efddc403 100644 --- a/proto/rig/operator/api/v1/pipeline/service.proto +++ b/proto/rig/operator/api/v1/pipeline/service.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package api.v1.pipeline; -import "google/protobuf/timestamp.proto"; +import "operator/api/v1/pipeline/object_status.proto"; // The service for interacting with the operator pipeline service Service { @@ -20,43 +20,6 @@ message WatchObjectStatusResponse { ObjectStatusChange change = 1; } -message ObjectStatusChange { - string capsule = 1; - - oneof change { - ObjectStatus updated = 2; - ObjectRef deleted = 3; - } -} - -enum ObjectType { - OBJECT_TYPE_UNSPECIFIED = 0; - OBJECT_TYPE_PRIMARY = 1; - OBJECT_TYPE_SECONDARY = 2; - OBJECT_TYPE_POD = 3; -} - -message ObjectStatus { - ObjectRef object_ref = 1; - ObjectType type = 2; - repeated ObjectCondition conditions = 3; - map properties = 4; -} - -enum ObjectState { - OBJECT_STATE_UNSPECIFIED = 0; - OBJECT_STATE_HEALTHY = 1; - OBJECT_STATE_PENDING = 2; - OBJECT_STATE_ERROR = 3; -} - -message ObjectCondition { - string name = 1; - google.protobuf.Timestamp updated_at = 2; - ObjectState state = 3; - string message = 4; -} - message DryRunRequest { string namespace = 1; string capsule = 2; @@ -96,15 +59,3 @@ message Object { string name = 2; string content = 3; } - -message GVK { - string group = 1; - string version = 2; - string kind = 3; -} - -message ObjectRef { - GVK gvk = 1; - string namespace = 2; - string name = 3; -} diff --git a/proto/rig/operator/api/v1/plugin/service.proto b/proto/rig/operator/api/v1/plugin/service.proto index 2ebdf6019..60579cafa 100644 --- a/proto/rig/operator/api/v1/plugin/service.proto +++ b/proto/rig/operator/api/v1/plugin/service.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package api.v1.plugin; -import "operator/api/v1/pipeline/service.proto"; +import "operator/api/v1/pipeline/object_status.proto"; service PluginService { rpc Initialize(InitializeRequest) returns (InitializeResponse) {} @@ -33,10 +33,13 @@ message ObjectStatusChange { repeated api.v1.pipeline.ObjectStatus objects = 1; } + message Checkpoint {} + oneof change { AllObjects all_objects = 1; api.v1.pipeline.ObjectStatus updated = 2; api.v1.pipeline.ObjectRef deleted = 3; + Checkpoint checkpoint = 4; } } diff --git a/test/integration/k8s/plugin_suite_test.go b/test/integration/k8s/plugin_suite_test.go index bc6535fc0..f696fa876 100644 --- a/test/integration/k8s/plugin_suite_test.go +++ b/test/integration/k8s/plugin_suite_test.go @@ -145,6 +145,7 @@ container: CapabilitiesService: cs, PipelineService: ps, ObjectStatusService: objectstatus.NewService(opConfig, ps, ctrl.Log), + Lifecycle: lc, } require.NoError(t, capsuleReconciler.SetupWithManager(manager)) diff --git a/test/integration/k8s/suite_test.go b/test/integration/k8s/suite_test.go index 3c2e35bb0..af80c8e13 100644 --- a/test/integration/k8s/suite_test.go +++ b/test/integration/k8s/suite_test.go @@ -131,6 +131,7 @@ portName: "metricsport"`, CapabilitiesService: cs, PipelineService: ps, ObjectStatusService: objectstatus.NewService(opConfig, ps, ctrl.Log), + Lifecycle: lc, } require.NoError(t, capsuleReconciler.SetupWithManager(manager)) From 24d56522c136487844578e53d218014f7ed5d08d Mon Sep 17 00:00:00 2001 From: Anders Johnsen Date: Thu, 2 May 2024 12:13:49 +0200 Subject: [PATCH 2/3] mocks --- .../rig/pkg/service/config/mock_Service.go | 129 +++ .../discovery/mock_DiscoveryInterface.go | 595 +++++++++++++ .../pkg/client/mock_Client.go | 783 ++++++++++++++++++ 3 files changed, 1507 insertions(+) create mode 100644 gen/mocks/github.com/rigdev/rig/pkg/service/config/mock_Service.go create mode 100644 gen/mocks/k8s.io/client-go/discovery/mock_DiscoveryInterface.go create mode 100644 gen/mocks/sigs.k8s.io/controller-runtime/pkg/client/mock_Client.go diff --git a/gen/mocks/github.com/rigdev/rig/pkg/service/config/mock_Service.go b/gen/mocks/github.com/rigdev/rig/pkg/service/config/mock_Service.go new file mode 100644 index 000000000..58090cba6 --- /dev/null +++ b/gen/mocks/github.com/rigdev/rig/pkg/service/config/mock_Service.go @@ -0,0 +1,129 @@ +// Code generated by mockery v2.39.1. DO NOT EDIT. + +package config + +import ( + v1alpha1 "github.com/rigdev/rig/pkg/api/config/v1alpha1" + mock "github.com/stretchr/testify/mock" +) + +// MockService is an autogenerated mock type for the Service type +type MockService struct { + mock.Mock +} + +type MockService_Expecter struct { + mock *mock.Mock +} + +func (_m *MockService) EXPECT() *MockService_Expecter { + return &MockService_Expecter{mock: &_m.Mock} +} + +// Operator provides a mock function with given fields: +func (_m *MockService) Operator() *v1alpha1.OperatorConfig { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for Operator") + } + + var r0 *v1alpha1.OperatorConfig + if rf, ok := ret.Get(0).(func() *v1alpha1.OperatorConfig); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*v1alpha1.OperatorConfig) + } + } + + return r0 +} + +// MockService_Operator_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Operator' +type MockService_Operator_Call struct { + *mock.Call +} + +// Operator is a helper method to define mock.On call +func (_e *MockService_Expecter) Operator() *MockService_Operator_Call { + return &MockService_Operator_Call{Call: _e.mock.On("Operator")} +} + +func (_c *MockService_Operator_Call) Run(run func()) *MockService_Operator_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockService_Operator_Call) Return(_a0 *v1alpha1.OperatorConfig) *MockService_Operator_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockService_Operator_Call) RunAndReturn(run func() *v1alpha1.OperatorConfig) *MockService_Operator_Call { + _c.Call.Return(run) + return _c +} + +// Platform provides a mock function with given fields: +func (_m *MockService) Platform() *v1alpha1.PlatformConfig { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for Platform") + } + + var r0 *v1alpha1.PlatformConfig + if rf, ok := ret.Get(0).(func() *v1alpha1.PlatformConfig); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*v1alpha1.PlatformConfig) + } + } + + return r0 +} + +// MockService_Platform_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Platform' +type MockService_Platform_Call struct { + *mock.Call +} + +// Platform is a helper method to define mock.On call +func (_e *MockService_Expecter) Platform() *MockService_Platform_Call { + return &MockService_Platform_Call{Call: _e.mock.On("Platform")} +} + +func (_c *MockService_Platform_Call) Run(run func()) *MockService_Platform_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockService_Platform_Call) Return(_a0 *v1alpha1.PlatformConfig) *MockService_Platform_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockService_Platform_Call) RunAndReturn(run func() *v1alpha1.PlatformConfig) *MockService_Platform_Call { + _c.Call.Return(run) + return _c +} + +// NewMockService creates a new instance of MockService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockService(t interface { + mock.TestingT + Cleanup(func()) +}) *MockService { + mock := &MockService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/gen/mocks/k8s.io/client-go/discovery/mock_DiscoveryInterface.go b/gen/mocks/k8s.io/client-go/discovery/mock_DiscoveryInterface.go new file mode 100644 index 000000000..d91dc8c39 --- /dev/null +++ b/gen/mocks/k8s.io/client-go/discovery/mock_DiscoveryInterface.go @@ -0,0 +1,595 @@ +// Code generated by mockery v2.39.1. DO NOT EDIT. + +package discovery + +import ( + mock "github.com/stretchr/testify/mock" + discovery "k8s.io/client-go/discovery" + + openapi "k8s.io/client-go/openapi" + + openapi_v2 "github.com/google/gnostic-models/openapiv2" + + rest "k8s.io/client-go/rest" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + version "k8s.io/apimachinery/pkg/version" +) + +// MockDiscoveryInterface is an autogenerated mock type for the DiscoveryInterface type +type MockDiscoveryInterface struct { + mock.Mock +} + +type MockDiscoveryInterface_Expecter struct { + mock *mock.Mock +} + +func (_m *MockDiscoveryInterface) EXPECT() *MockDiscoveryInterface_Expecter { + return &MockDiscoveryInterface_Expecter{mock: &_m.Mock} +} + +// OpenAPISchema provides a mock function with given fields: +func (_m *MockDiscoveryInterface) OpenAPISchema() (*openapi_v2.Document, error) { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for OpenAPISchema") + } + + var r0 *openapi_v2.Document + var r1 error + if rf, ok := ret.Get(0).(func() (*openapi_v2.Document, error)); ok { + return rf() + } + if rf, ok := ret.Get(0).(func() *openapi_v2.Document); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*openapi_v2.Document) + } + } + + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockDiscoveryInterface_OpenAPISchema_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OpenAPISchema' +type MockDiscoveryInterface_OpenAPISchema_Call struct { + *mock.Call +} + +// OpenAPISchema is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) OpenAPISchema() *MockDiscoveryInterface_OpenAPISchema_Call { + return &MockDiscoveryInterface_OpenAPISchema_Call{Call: _e.mock.On("OpenAPISchema")} +} + +func (_c *MockDiscoveryInterface_OpenAPISchema_Call) Run(run func()) *MockDiscoveryInterface_OpenAPISchema_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_OpenAPISchema_Call) Return(_a0 *openapi_v2.Document, _a1 error) *MockDiscoveryInterface_OpenAPISchema_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockDiscoveryInterface_OpenAPISchema_Call) RunAndReturn(run func() (*openapi_v2.Document, error)) *MockDiscoveryInterface_OpenAPISchema_Call { + _c.Call.Return(run) + return _c +} + +// OpenAPIV3 provides a mock function with given fields: +func (_m *MockDiscoveryInterface) OpenAPIV3() openapi.Client { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for OpenAPIV3") + } + + var r0 openapi.Client + if rf, ok := ret.Get(0).(func() openapi.Client); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(openapi.Client) + } + } + + return r0 +} + +// MockDiscoveryInterface_OpenAPIV3_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OpenAPIV3' +type MockDiscoveryInterface_OpenAPIV3_Call struct { + *mock.Call +} + +// OpenAPIV3 is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) OpenAPIV3() *MockDiscoveryInterface_OpenAPIV3_Call { + return &MockDiscoveryInterface_OpenAPIV3_Call{Call: _e.mock.On("OpenAPIV3")} +} + +func (_c *MockDiscoveryInterface_OpenAPIV3_Call) Run(run func()) *MockDiscoveryInterface_OpenAPIV3_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_OpenAPIV3_Call) Return(_a0 openapi.Client) *MockDiscoveryInterface_OpenAPIV3_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockDiscoveryInterface_OpenAPIV3_Call) RunAndReturn(run func() openapi.Client) *MockDiscoveryInterface_OpenAPIV3_Call { + _c.Call.Return(run) + return _c +} + +// RESTClient provides a mock function with given fields: +func (_m *MockDiscoveryInterface) RESTClient() rest.Interface { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for RESTClient") + } + + var r0 rest.Interface + if rf, ok := ret.Get(0).(func() rest.Interface); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(rest.Interface) + } + } + + return r0 +} + +// MockDiscoveryInterface_RESTClient_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RESTClient' +type MockDiscoveryInterface_RESTClient_Call struct { + *mock.Call +} + +// RESTClient is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) RESTClient() *MockDiscoveryInterface_RESTClient_Call { + return &MockDiscoveryInterface_RESTClient_Call{Call: _e.mock.On("RESTClient")} +} + +func (_c *MockDiscoveryInterface_RESTClient_Call) Run(run func()) *MockDiscoveryInterface_RESTClient_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_RESTClient_Call) Return(_a0 rest.Interface) *MockDiscoveryInterface_RESTClient_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockDiscoveryInterface_RESTClient_Call) RunAndReturn(run func() rest.Interface) *MockDiscoveryInterface_RESTClient_Call { + _c.Call.Return(run) + return _c +} + +// ServerGroups provides a mock function with given fields: +func (_m *MockDiscoveryInterface) ServerGroups() (*v1.APIGroupList, error) { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for ServerGroups") + } + + var r0 *v1.APIGroupList + var r1 error + if rf, ok := ret.Get(0).(func() (*v1.APIGroupList, error)); ok { + return rf() + } + if rf, ok := ret.Get(0).(func() *v1.APIGroupList); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*v1.APIGroupList) + } + } + + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockDiscoveryInterface_ServerGroups_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerGroups' +type MockDiscoveryInterface_ServerGroups_Call struct { + *mock.Call +} + +// ServerGroups is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) ServerGroups() *MockDiscoveryInterface_ServerGroups_Call { + return &MockDiscoveryInterface_ServerGroups_Call{Call: _e.mock.On("ServerGroups")} +} + +func (_c *MockDiscoveryInterface_ServerGroups_Call) Run(run func()) *MockDiscoveryInterface_ServerGroups_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_ServerGroups_Call) Return(_a0 *v1.APIGroupList, _a1 error) *MockDiscoveryInterface_ServerGroups_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockDiscoveryInterface_ServerGroups_Call) RunAndReturn(run func() (*v1.APIGroupList, error)) *MockDiscoveryInterface_ServerGroups_Call { + _c.Call.Return(run) + return _c +} + +// ServerGroupsAndResources provides a mock function with given fields: +func (_m *MockDiscoveryInterface) ServerGroupsAndResources() ([]*v1.APIGroup, []*v1.APIResourceList, error) { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for ServerGroupsAndResources") + } + + var r0 []*v1.APIGroup + var r1 []*v1.APIResourceList + var r2 error + if rf, ok := ret.Get(0).(func() ([]*v1.APIGroup, []*v1.APIResourceList, error)); ok { + return rf() + } + if rf, ok := ret.Get(0).(func() []*v1.APIGroup); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]*v1.APIGroup) + } + } + + if rf, ok := ret.Get(1).(func() []*v1.APIResourceList); ok { + r1 = rf() + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).([]*v1.APIResourceList) + } + } + + if rf, ok := ret.Get(2).(func() error); ok { + r2 = rf() + } else { + r2 = ret.Error(2) + } + + return r0, r1, r2 +} + +// MockDiscoveryInterface_ServerGroupsAndResources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerGroupsAndResources' +type MockDiscoveryInterface_ServerGroupsAndResources_Call struct { + *mock.Call +} + +// ServerGroupsAndResources is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) ServerGroupsAndResources() *MockDiscoveryInterface_ServerGroupsAndResources_Call { + return &MockDiscoveryInterface_ServerGroupsAndResources_Call{Call: _e.mock.On("ServerGroupsAndResources")} +} + +func (_c *MockDiscoveryInterface_ServerGroupsAndResources_Call) Run(run func()) *MockDiscoveryInterface_ServerGroupsAndResources_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_ServerGroupsAndResources_Call) Return(_a0 []*v1.APIGroup, _a1 []*v1.APIResourceList, _a2 error) *MockDiscoveryInterface_ServerGroupsAndResources_Call { + _c.Call.Return(_a0, _a1, _a2) + return _c +} + +func (_c *MockDiscoveryInterface_ServerGroupsAndResources_Call) RunAndReturn(run func() ([]*v1.APIGroup, []*v1.APIResourceList, error)) *MockDiscoveryInterface_ServerGroupsAndResources_Call { + _c.Call.Return(run) + return _c +} + +// ServerPreferredNamespacedResources provides a mock function with given fields: +func (_m *MockDiscoveryInterface) ServerPreferredNamespacedResources() ([]*v1.APIResourceList, error) { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for ServerPreferredNamespacedResources") + } + + var r0 []*v1.APIResourceList + var r1 error + if rf, ok := ret.Get(0).(func() ([]*v1.APIResourceList, error)); ok { + return rf() + } + if rf, ok := ret.Get(0).(func() []*v1.APIResourceList); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]*v1.APIResourceList) + } + } + + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockDiscoveryInterface_ServerPreferredNamespacedResources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerPreferredNamespacedResources' +type MockDiscoveryInterface_ServerPreferredNamespacedResources_Call struct { + *mock.Call +} + +// ServerPreferredNamespacedResources is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) ServerPreferredNamespacedResources() *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call { + return &MockDiscoveryInterface_ServerPreferredNamespacedResources_Call{Call: _e.mock.On("ServerPreferredNamespacedResources")} +} + +func (_c *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call) Run(run func()) *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call) Return(_a0 []*v1.APIResourceList, _a1 error) *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call) RunAndReturn(run func() ([]*v1.APIResourceList, error)) *MockDiscoveryInterface_ServerPreferredNamespacedResources_Call { + _c.Call.Return(run) + return _c +} + +// ServerPreferredResources provides a mock function with given fields: +func (_m *MockDiscoveryInterface) ServerPreferredResources() ([]*v1.APIResourceList, error) { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for ServerPreferredResources") + } + + var r0 []*v1.APIResourceList + var r1 error + if rf, ok := ret.Get(0).(func() ([]*v1.APIResourceList, error)); ok { + return rf() + } + if rf, ok := ret.Get(0).(func() []*v1.APIResourceList); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]*v1.APIResourceList) + } + } + + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockDiscoveryInterface_ServerPreferredResources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerPreferredResources' +type MockDiscoveryInterface_ServerPreferredResources_Call struct { + *mock.Call +} + +// ServerPreferredResources is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) ServerPreferredResources() *MockDiscoveryInterface_ServerPreferredResources_Call { + return &MockDiscoveryInterface_ServerPreferredResources_Call{Call: _e.mock.On("ServerPreferredResources")} +} + +func (_c *MockDiscoveryInterface_ServerPreferredResources_Call) Run(run func()) *MockDiscoveryInterface_ServerPreferredResources_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_ServerPreferredResources_Call) Return(_a0 []*v1.APIResourceList, _a1 error) *MockDiscoveryInterface_ServerPreferredResources_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockDiscoveryInterface_ServerPreferredResources_Call) RunAndReturn(run func() ([]*v1.APIResourceList, error)) *MockDiscoveryInterface_ServerPreferredResources_Call { + _c.Call.Return(run) + return _c +} + +// ServerResourcesForGroupVersion provides a mock function with given fields: groupVersion +func (_m *MockDiscoveryInterface) ServerResourcesForGroupVersion(groupVersion string) (*v1.APIResourceList, error) { + ret := _m.Called(groupVersion) + + if len(ret) == 0 { + panic("no return value specified for ServerResourcesForGroupVersion") + } + + var r0 *v1.APIResourceList + var r1 error + if rf, ok := ret.Get(0).(func(string) (*v1.APIResourceList, error)); ok { + return rf(groupVersion) + } + if rf, ok := ret.Get(0).(func(string) *v1.APIResourceList); ok { + r0 = rf(groupVersion) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*v1.APIResourceList) + } + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(groupVersion) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockDiscoveryInterface_ServerResourcesForGroupVersion_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerResourcesForGroupVersion' +type MockDiscoveryInterface_ServerResourcesForGroupVersion_Call struct { + *mock.Call +} + +// ServerResourcesForGroupVersion is a helper method to define mock.On call +// - groupVersion string +func (_e *MockDiscoveryInterface_Expecter) ServerResourcesForGroupVersion(groupVersion interface{}) *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call { + return &MockDiscoveryInterface_ServerResourcesForGroupVersion_Call{Call: _e.mock.On("ServerResourcesForGroupVersion", groupVersion)} +} + +func (_c *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call) Run(run func(groupVersion string)) *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call) Return(_a0 *v1.APIResourceList, _a1 error) *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call) RunAndReturn(run func(string) (*v1.APIResourceList, error)) *MockDiscoveryInterface_ServerResourcesForGroupVersion_Call { + _c.Call.Return(run) + return _c +} + +// ServerVersion provides a mock function with given fields: +func (_m *MockDiscoveryInterface) ServerVersion() (*version.Info, error) { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for ServerVersion") + } + + var r0 *version.Info + var r1 error + if rf, ok := ret.Get(0).(func() (*version.Info, error)); ok { + return rf() + } + if rf, ok := ret.Get(0).(func() *version.Info); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*version.Info) + } + } + + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockDiscoveryInterface_ServerVersion_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServerVersion' +type MockDiscoveryInterface_ServerVersion_Call struct { + *mock.Call +} + +// ServerVersion is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) ServerVersion() *MockDiscoveryInterface_ServerVersion_Call { + return &MockDiscoveryInterface_ServerVersion_Call{Call: _e.mock.On("ServerVersion")} +} + +func (_c *MockDiscoveryInterface_ServerVersion_Call) Run(run func()) *MockDiscoveryInterface_ServerVersion_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_ServerVersion_Call) Return(_a0 *version.Info, _a1 error) *MockDiscoveryInterface_ServerVersion_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockDiscoveryInterface_ServerVersion_Call) RunAndReturn(run func() (*version.Info, error)) *MockDiscoveryInterface_ServerVersion_Call { + _c.Call.Return(run) + return _c +} + +// WithLegacy provides a mock function with given fields: +func (_m *MockDiscoveryInterface) WithLegacy() discovery.DiscoveryInterface { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for WithLegacy") + } + + var r0 discovery.DiscoveryInterface + if rf, ok := ret.Get(0).(func() discovery.DiscoveryInterface); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(discovery.DiscoveryInterface) + } + } + + return r0 +} + +// MockDiscoveryInterface_WithLegacy_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WithLegacy' +type MockDiscoveryInterface_WithLegacy_Call struct { + *mock.Call +} + +// WithLegacy is a helper method to define mock.On call +func (_e *MockDiscoveryInterface_Expecter) WithLegacy() *MockDiscoveryInterface_WithLegacy_Call { + return &MockDiscoveryInterface_WithLegacy_Call{Call: _e.mock.On("WithLegacy")} +} + +func (_c *MockDiscoveryInterface_WithLegacy_Call) Run(run func()) *MockDiscoveryInterface_WithLegacy_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockDiscoveryInterface_WithLegacy_Call) Return(_a0 discovery.DiscoveryInterface) *MockDiscoveryInterface_WithLegacy_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockDiscoveryInterface_WithLegacy_Call) RunAndReturn(run func() discovery.DiscoveryInterface) *MockDiscoveryInterface_WithLegacy_Call { + _c.Call.Return(run) + return _c +} + +// NewMockDiscoveryInterface creates a new instance of MockDiscoveryInterface. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockDiscoveryInterface(t interface { + mock.TestingT + Cleanup(func()) +}) *MockDiscoveryInterface { + mock := &MockDiscoveryInterface{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/gen/mocks/sigs.k8s.io/controller-runtime/pkg/client/mock_Client.go b/gen/mocks/sigs.k8s.io/controller-runtime/pkg/client/mock_Client.go new file mode 100644 index 000000000..b191faf9e --- /dev/null +++ b/gen/mocks/sigs.k8s.io/controller-runtime/pkg/client/mock_Client.go @@ -0,0 +1,783 @@ +// Code generated by mockery v2.39.1. DO NOT EDIT. + +package client + +import ( + context "context" + + client "sigs.k8s.io/controller-runtime/pkg/client" + + meta "k8s.io/apimachinery/pkg/api/meta" + + mock "github.com/stretchr/testify/mock" + + runtime "k8s.io/apimachinery/pkg/runtime" + + schema "k8s.io/apimachinery/pkg/runtime/schema" + + types "k8s.io/apimachinery/pkg/types" +) + +// MockClient is an autogenerated mock type for the Client type +type MockClient struct { + mock.Mock +} + +type MockClient_Expecter struct { + mock *mock.Mock +} + +func (_m *MockClient) EXPECT() *MockClient_Expecter { + return &MockClient_Expecter{mock: &_m.Mock} +} + +// Create provides a mock function with given fields: ctx, obj, opts +func (_m *MockClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, obj) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, client.Object, ...client.CreateOption) error); ok { + r0 = rf(ctx, obj, opts...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockClient_Create_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Create' +type MockClient_Create_Call struct { + *mock.Call +} + +// Create is a helper method to define mock.On call +// - ctx context.Context +// - obj client.Object +// - opts ...client.CreateOption +func (_e *MockClient_Expecter) Create(ctx interface{}, obj interface{}, opts ...interface{}) *MockClient_Create_Call { + return &MockClient_Create_Call{Call: _e.mock.On("Create", + append([]interface{}{ctx, obj}, opts...)...)} +} + +func (_c *MockClient_Create_Call) Run(run func(ctx context.Context, obj client.Object, opts ...client.CreateOption)) *MockClient_Create_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]client.CreateOption, len(args)-2) + for i, a := range args[2:] { + if a != nil { + variadicArgs[i] = a.(client.CreateOption) + } + } + run(args[0].(context.Context), args[1].(client.Object), variadicArgs...) + }) + return _c +} + +func (_c *MockClient_Create_Call) Return(_a0 error) *MockClient_Create_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_Create_Call) RunAndReturn(run func(context.Context, client.Object, ...client.CreateOption) error) *MockClient_Create_Call { + _c.Call.Return(run) + return _c +} + +// Delete provides a mock function with given fields: ctx, obj, opts +func (_m *MockClient) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, obj) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, client.Object, ...client.DeleteOption) error); ok { + r0 = rf(ctx, obj, opts...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockClient_Delete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Delete' +type MockClient_Delete_Call struct { + *mock.Call +} + +// Delete is a helper method to define mock.On call +// - ctx context.Context +// - obj client.Object +// - opts ...client.DeleteOption +func (_e *MockClient_Expecter) Delete(ctx interface{}, obj interface{}, opts ...interface{}) *MockClient_Delete_Call { + return &MockClient_Delete_Call{Call: _e.mock.On("Delete", + append([]interface{}{ctx, obj}, opts...)...)} +} + +func (_c *MockClient_Delete_Call) Run(run func(ctx context.Context, obj client.Object, opts ...client.DeleteOption)) *MockClient_Delete_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]client.DeleteOption, len(args)-2) + for i, a := range args[2:] { + if a != nil { + variadicArgs[i] = a.(client.DeleteOption) + } + } + run(args[0].(context.Context), args[1].(client.Object), variadicArgs...) + }) + return _c +} + +func (_c *MockClient_Delete_Call) Return(_a0 error) *MockClient_Delete_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_Delete_Call) RunAndReturn(run func(context.Context, client.Object, ...client.DeleteOption) error) *MockClient_Delete_Call { + _c.Call.Return(run) + return _c +} + +// DeleteAllOf provides a mock function with given fields: ctx, obj, opts +func (_m *MockClient) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, obj) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for DeleteAllOf") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, client.Object, ...client.DeleteAllOfOption) error); ok { + r0 = rf(ctx, obj, opts...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockClient_DeleteAllOf_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeleteAllOf' +type MockClient_DeleteAllOf_Call struct { + *mock.Call +} + +// DeleteAllOf is a helper method to define mock.On call +// - ctx context.Context +// - obj client.Object +// - opts ...client.DeleteAllOfOption +func (_e *MockClient_Expecter) DeleteAllOf(ctx interface{}, obj interface{}, opts ...interface{}) *MockClient_DeleteAllOf_Call { + return &MockClient_DeleteAllOf_Call{Call: _e.mock.On("DeleteAllOf", + append([]interface{}{ctx, obj}, opts...)...)} +} + +func (_c *MockClient_DeleteAllOf_Call) Run(run func(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption)) *MockClient_DeleteAllOf_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]client.DeleteAllOfOption, len(args)-2) + for i, a := range args[2:] { + if a != nil { + variadicArgs[i] = a.(client.DeleteAllOfOption) + } + } + run(args[0].(context.Context), args[1].(client.Object), variadicArgs...) + }) + return _c +} + +func (_c *MockClient_DeleteAllOf_Call) Return(_a0 error) *MockClient_DeleteAllOf_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_DeleteAllOf_Call) RunAndReturn(run func(context.Context, client.Object, ...client.DeleteAllOfOption) error) *MockClient_DeleteAllOf_Call { + _c.Call.Return(run) + return _c +} + +// Get provides a mock function with given fields: ctx, key, obj, opts +func (_m *MockClient) Get(ctx context.Context, key types.NamespacedName, obj client.Object, opts ...client.GetOption) error { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, key, obj) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, types.NamespacedName, client.Object, ...client.GetOption) error); ok { + r0 = rf(ctx, key, obj, opts...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockClient_Get_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Get' +type MockClient_Get_Call struct { + *mock.Call +} + +// Get is a helper method to define mock.On call +// - ctx context.Context +// - key types.NamespacedName +// - obj client.Object +// - opts ...client.GetOption +func (_e *MockClient_Expecter) Get(ctx interface{}, key interface{}, obj interface{}, opts ...interface{}) *MockClient_Get_Call { + return &MockClient_Get_Call{Call: _e.mock.On("Get", + append([]interface{}{ctx, key, obj}, opts...)...)} +} + +func (_c *MockClient_Get_Call) Run(run func(ctx context.Context, key types.NamespacedName, obj client.Object, opts ...client.GetOption)) *MockClient_Get_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]client.GetOption, len(args)-3) + for i, a := range args[3:] { + if a != nil { + variadicArgs[i] = a.(client.GetOption) + } + } + run(args[0].(context.Context), args[1].(types.NamespacedName), args[2].(client.Object), variadicArgs...) + }) + return _c +} + +func (_c *MockClient_Get_Call) Return(_a0 error) *MockClient_Get_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_Get_Call) RunAndReturn(run func(context.Context, types.NamespacedName, client.Object, ...client.GetOption) error) *MockClient_Get_Call { + _c.Call.Return(run) + return _c +} + +// GroupVersionKindFor provides a mock function with given fields: obj +func (_m *MockClient) GroupVersionKindFor(obj runtime.Object) (schema.GroupVersionKind, error) { + ret := _m.Called(obj) + + if len(ret) == 0 { + panic("no return value specified for GroupVersionKindFor") + } + + var r0 schema.GroupVersionKind + var r1 error + if rf, ok := ret.Get(0).(func(runtime.Object) (schema.GroupVersionKind, error)); ok { + return rf(obj) + } + if rf, ok := ret.Get(0).(func(runtime.Object) schema.GroupVersionKind); ok { + r0 = rf(obj) + } else { + r0 = ret.Get(0).(schema.GroupVersionKind) + } + + if rf, ok := ret.Get(1).(func(runtime.Object) error); ok { + r1 = rf(obj) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockClient_GroupVersionKindFor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GroupVersionKindFor' +type MockClient_GroupVersionKindFor_Call struct { + *mock.Call +} + +// GroupVersionKindFor is a helper method to define mock.On call +// - obj runtime.Object +func (_e *MockClient_Expecter) GroupVersionKindFor(obj interface{}) *MockClient_GroupVersionKindFor_Call { + return &MockClient_GroupVersionKindFor_Call{Call: _e.mock.On("GroupVersionKindFor", obj)} +} + +func (_c *MockClient_GroupVersionKindFor_Call) Run(run func(obj runtime.Object)) *MockClient_GroupVersionKindFor_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(runtime.Object)) + }) + return _c +} + +func (_c *MockClient_GroupVersionKindFor_Call) Return(_a0 schema.GroupVersionKind, _a1 error) *MockClient_GroupVersionKindFor_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockClient_GroupVersionKindFor_Call) RunAndReturn(run func(runtime.Object) (schema.GroupVersionKind, error)) *MockClient_GroupVersionKindFor_Call { + _c.Call.Return(run) + return _c +} + +// IsObjectNamespaced provides a mock function with given fields: obj +func (_m *MockClient) IsObjectNamespaced(obj runtime.Object) (bool, error) { + ret := _m.Called(obj) + + if len(ret) == 0 { + panic("no return value specified for IsObjectNamespaced") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(runtime.Object) (bool, error)); ok { + return rf(obj) + } + if rf, ok := ret.Get(0).(func(runtime.Object) bool); ok { + r0 = rf(obj) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(runtime.Object) error); ok { + r1 = rf(obj) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockClient_IsObjectNamespaced_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'IsObjectNamespaced' +type MockClient_IsObjectNamespaced_Call struct { + *mock.Call +} + +// IsObjectNamespaced is a helper method to define mock.On call +// - obj runtime.Object +func (_e *MockClient_Expecter) IsObjectNamespaced(obj interface{}) *MockClient_IsObjectNamespaced_Call { + return &MockClient_IsObjectNamespaced_Call{Call: _e.mock.On("IsObjectNamespaced", obj)} +} + +func (_c *MockClient_IsObjectNamespaced_Call) Run(run func(obj runtime.Object)) *MockClient_IsObjectNamespaced_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(runtime.Object)) + }) + return _c +} + +func (_c *MockClient_IsObjectNamespaced_Call) Return(_a0 bool, _a1 error) *MockClient_IsObjectNamespaced_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockClient_IsObjectNamespaced_Call) RunAndReturn(run func(runtime.Object) (bool, error)) *MockClient_IsObjectNamespaced_Call { + _c.Call.Return(run) + return _c +} + +// List provides a mock function with given fields: ctx, list, opts +func (_m *MockClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, list) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for List") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, client.ObjectList, ...client.ListOption) error); ok { + r0 = rf(ctx, list, opts...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockClient_List_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'List' +type MockClient_List_Call struct { + *mock.Call +} + +// List is a helper method to define mock.On call +// - ctx context.Context +// - list client.ObjectList +// - opts ...client.ListOption +func (_e *MockClient_Expecter) List(ctx interface{}, list interface{}, opts ...interface{}) *MockClient_List_Call { + return &MockClient_List_Call{Call: _e.mock.On("List", + append([]interface{}{ctx, list}, opts...)...)} +} + +func (_c *MockClient_List_Call) Run(run func(ctx context.Context, list client.ObjectList, opts ...client.ListOption)) *MockClient_List_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]client.ListOption, len(args)-2) + for i, a := range args[2:] { + if a != nil { + variadicArgs[i] = a.(client.ListOption) + } + } + run(args[0].(context.Context), args[1].(client.ObjectList), variadicArgs...) + }) + return _c +} + +func (_c *MockClient_List_Call) Return(_a0 error) *MockClient_List_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_List_Call) RunAndReturn(run func(context.Context, client.ObjectList, ...client.ListOption) error) *MockClient_List_Call { + _c.Call.Return(run) + return _c +} + +// Patch provides a mock function with given fields: ctx, obj, patch, opts +func (_m *MockClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, obj, patch) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for Patch") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, client.Object, client.Patch, ...client.PatchOption) error); ok { + r0 = rf(ctx, obj, patch, opts...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockClient_Patch_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Patch' +type MockClient_Patch_Call struct { + *mock.Call +} + +// Patch is a helper method to define mock.On call +// - ctx context.Context +// - obj client.Object +// - patch client.Patch +// - opts ...client.PatchOption +func (_e *MockClient_Expecter) Patch(ctx interface{}, obj interface{}, patch interface{}, opts ...interface{}) *MockClient_Patch_Call { + return &MockClient_Patch_Call{Call: _e.mock.On("Patch", + append([]interface{}{ctx, obj, patch}, opts...)...)} +} + +func (_c *MockClient_Patch_Call) Run(run func(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption)) *MockClient_Patch_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]client.PatchOption, len(args)-3) + for i, a := range args[3:] { + if a != nil { + variadicArgs[i] = a.(client.PatchOption) + } + } + run(args[0].(context.Context), args[1].(client.Object), args[2].(client.Patch), variadicArgs...) + }) + return _c +} + +func (_c *MockClient_Patch_Call) Return(_a0 error) *MockClient_Patch_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_Patch_Call) RunAndReturn(run func(context.Context, client.Object, client.Patch, ...client.PatchOption) error) *MockClient_Patch_Call { + _c.Call.Return(run) + return _c +} + +// RESTMapper provides a mock function with given fields: +func (_m *MockClient) RESTMapper() meta.RESTMapper { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for RESTMapper") + } + + var r0 meta.RESTMapper + if rf, ok := ret.Get(0).(func() meta.RESTMapper); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(meta.RESTMapper) + } + } + + return r0 +} + +// MockClient_RESTMapper_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RESTMapper' +type MockClient_RESTMapper_Call struct { + *mock.Call +} + +// RESTMapper is a helper method to define mock.On call +func (_e *MockClient_Expecter) RESTMapper() *MockClient_RESTMapper_Call { + return &MockClient_RESTMapper_Call{Call: _e.mock.On("RESTMapper")} +} + +func (_c *MockClient_RESTMapper_Call) Run(run func()) *MockClient_RESTMapper_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockClient_RESTMapper_Call) Return(_a0 meta.RESTMapper) *MockClient_RESTMapper_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_RESTMapper_Call) RunAndReturn(run func() meta.RESTMapper) *MockClient_RESTMapper_Call { + _c.Call.Return(run) + return _c +} + +// Scheme provides a mock function with given fields: +func (_m *MockClient) Scheme() *runtime.Scheme { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for Scheme") + } + + var r0 *runtime.Scheme + if rf, ok := ret.Get(0).(func() *runtime.Scheme); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*runtime.Scheme) + } + } + + return r0 +} + +// MockClient_Scheme_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Scheme' +type MockClient_Scheme_Call struct { + *mock.Call +} + +// Scheme is a helper method to define mock.On call +func (_e *MockClient_Expecter) Scheme() *MockClient_Scheme_Call { + return &MockClient_Scheme_Call{Call: _e.mock.On("Scheme")} +} + +func (_c *MockClient_Scheme_Call) Run(run func()) *MockClient_Scheme_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockClient_Scheme_Call) Return(_a0 *runtime.Scheme) *MockClient_Scheme_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_Scheme_Call) RunAndReturn(run func() *runtime.Scheme) *MockClient_Scheme_Call { + _c.Call.Return(run) + return _c +} + +// Status provides a mock function with given fields: +func (_m *MockClient) Status() client.SubResourceWriter { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for Status") + } + + var r0 client.SubResourceWriter + if rf, ok := ret.Get(0).(func() client.SubResourceWriter); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(client.SubResourceWriter) + } + } + + return r0 +} + +// MockClient_Status_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Status' +type MockClient_Status_Call struct { + *mock.Call +} + +// Status is a helper method to define mock.On call +func (_e *MockClient_Expecter) Status() *MockClient_Status_Call { + return &MockClient_Status_Call{Call: _e.mock.On("Status")} +} + +func (_c *MockClient_Status_Call) Run(run func()) *MockClient_Status_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockClient_Status_Call) Return(_a0 client.SubResourceWriter) *MockClient_Status_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_Status_Call) RunAndReturn(run func() client.SubResourceWriter) *MockClient_Status_Call { + _c.Call.Return(run) + return _c +} + +// SubResource provides a mock function with given fields: subResource +func (_m *MockClient) SubResource(subResource string) client.SubResourceClient { + ret := _m.Called(subResource) + + if len(ret) == 0 { + panic("no return value specified for SubResource") + } + + var r0 client.SubResourceClient + if rf, ok := ret.Get(0).(func(string) client.SubResourceClient); ok { + r0 = rf(subResource) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(client.SubResourceClient) + } + } + + return r0 +} + +// MockClient_SubResource_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SubResource' +type MockClient_SubResource_Call struct { + *mock.Call +} + +// SubResource is a helper method to define mock.On call +// - subResource string +func (_e *MockClient_Expecter) SubResource(subResource interface{}) *MockClient_SubResource_Call { + return &MockClient_SubResource_Call{Call: _e.mock.On("SubResource", subResource)} +} + +func (_c *MockClient_SubResource_Call) Run(run func(subResource string)) *MockClient_SubResource_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *MockClient_SubResource_Call) Return(_a0 client.SubResourceClient) *MockClient_SubResource_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_SubResource_Call) RunAndReturn(run func(string) client.SubResourceClient) *MockClient_SubResource_Call { + _c.Call.Return(run) + return _c +} + +// Update provides a mock function with given fields: ctx, obj, opts +func (_m *MockClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, obj) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, client.Object, ...client.UpdateOption) error); ok { + r0 = rf(ctx, obj, opts...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// MockClient_Update_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Update' +type MockClient_Update_Call struct { + *mock.Call +} + +// Update is a helper method to define mock.On call +// - ctx context.Context +// - obj client.Object +// - opts ...client.UpdateOption +func (_e *MockClient_Expecter) Update(ctx interface{}, obj interface{}, opts ...interface{}) *MockClient_Update_Call { + return &MockClient_Update_Call{Call: _e.mock.On("Update", + append([]interface{}{ctx, obj}, opts...)...)} +} + +func (_c *MockClient_Update_Call) Run(run func(ctx context.Context, obj client.Object, opts ...client.UpdateOption)) *MockClient_Update_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]client.UpdateOption, len(args)-2) + for i, a := range args[2:] { + if a != nil { + variadicArgs[i] = a.(client.UpdateOption) + } + } + run(args[0].(context.Context), args[1].(client.Object), variadicArgs...) + }) + return _c +} + +func (_c *MockClient_Update_Call) Return(_a0 error) *MockClient_Update_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *MockClient_Update_Call) RunAndReturn(run func(context.Context, client.Object, ...client.UpdateOption) error) *MockClient_Update_Call { + _c.Call.Return(run) + return _c +} + +// NewMockClient creates a new instance of MockClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockClient(t interface { + mock.TestingT + Cleanup(func()) +}) *MockClient { + mock := &MockClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} From b44f62bbc378635285e8565d448113f13e315df2 Mon Sep 17 00:00:00 2001 From: Anders Johnsen Date: Fri, 3 May 2024 14:27:49 +0200 Subject: [PATCH 3/3] fix test start order --- test/integration/k8s/plugin_suite_test.go | 3 ++- test/integration/k8s/suite_test.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test/integration/k8s/plugin_suite_test.go b/test/integration/k8s/plugin_suite_test.go index f696fa876..ecf9dfc05 100644 --- a/test/integration/k8s/plugin_suite_test.go +++ b/test/integration/k8s/plugin_suite_test.go @@ -137,7 +137,6 @@ container: require.NoError(t, err) lc := fxtest.NewLifecycle(t) ps := pipeline.NewService(opConfig, cc, cs, ctrl.Log, pmanager, lc) - require.NoError(t, lc.Start(context.Background())) capsuleReconciler := &controller.CapsuleReconciler{ Client: manager.GetClient(), Scheme: scheme, @@ -155,6 +154,8 @@ container: require.NoError(t, manager.Start(ctx)) }() + require.NoError(t, lc.Start(context.Background())) + s.cancel = cancel setupDone = true } diff --git a/test/integration/k8s/suite_test.go b/test/integration/k8s/suite_test.go index af80c8e13..91300b9b1 100644 --- a/test/integration/k8s/suite_test.go +++ b/test/integration/k8s/suite_test.go @@ -122,7 +122,6 @@ portName: "metricsport"`, lc := fxtest.NewLifecycle(t) ps := pipeline.NewService(opConfig, cc, cs, ctrl.Log, pmanager, lc) - require.NoError(t, lc.Start(context.Background())) capsuleReconciler := &controller.CapsuleReconciler{ Client: manager.GetClient(), @@ -141,6 +140,8 @@ portName: "metricsport"`, require.NoError(t, manager.Start(ctx)) }() + require.NoError(t, lc.Start(context.Background())) + s.cancel = cancel setupDone = true }