diff --git a/internal/grpc/grpc.go b/internal/grpc/grpc.go index 89c2c17e0..a49ebb414 100644 --- a/internal/grpc/grpc.go +++ b/internal/grpc/grpc.go @@ -30,7 +30,6 @@ func Run(ctx context.Context, listenAddress string, repo database.Database, audi protoapi.RegisterTeamsServer(s, &TeamsServer{db: repo}) protoapi.RegisterUsersServer(s, &UsersServer{db: repo}) protoapi.RegisterReconcilersServer(s, &ReconcilersServer{db: repo}) - protoapi.RegisterReconcilerResourcesServer(s, &ReconcilerResourcesServer{db: repo}) protoapi.RegisterAuditLogsServer(s, &AuditLogsServer{db: repo, auditlog: auditlog}) g, ctx := errgroup.WithContext(ctx) diff --git a/internal/grpc/reconciler_resources.go b/internal/grpc/reconciler_resources.go deleted file mode 100644 index b2765b64e..000000000 --- a/internal/grpc/reconciler_resources.go +++ /dev/null @@ -1,103 +0,0 @@ -package grpc - -import ( - "context" - - "github.com/nais/api/internal/database" - "github.com/nais/api/internal/slug" - "github.com/nais/api/pkg/protoapi" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/types/known/timestamppb" -) - -type ReconcilerResourcesServer struct { - db interface { - database.ReconcilerResourceRepo - database.TeamRepo - } - protoapi.UnimplementedReconcilerResourcesServer -} - -func (r *ReconcilerResourcesServer) Save(ctx context.Context, in *protoapi.SaveReconcilerResourceRequest) (*protoapi.SaveReconcilerResourceResponse, error) { - switch { - case in.ReconcilerName == "": - return nil, status.Error(400, "reconcilerName is required") - case in.TeamSlug == "": - return nil, status.Error(400, "teamSlug is required") - } - - slg := slug.Slug(in.TeamSlug) - rn := in.ReconcilerName - - for _, rr := range in.Resources { - switch { - case rr.Name == "": - return nil, status.Error(400, "name is required") - case len(rr.Value) == 0: - return nil, status.Error(400, "value is required") - } - _, err := r.db.UpsertReconcilerResource(ctx, rn, slg, rr.Name, rr.Value, rr.Metadata) - if err != nil { - return nil, err - } - } - - return &protoapi.SaveReconcilerResourceResponse{}, nil -} - -func (r *ReconcilerResourcesServer) List(ctx context.Context, req *protoapi.ListReconcilerResourcesRequest) (*protoapi.ListReconcilerResourcesResponse, error) { - var teamSlug *slug.Slug - - if req.TeamSlug != "" { - slg := slug.Slug(req.TeamSlug) - teamSlug = &slg - } - - limit, offset := pagination(req) - total := 0 - res, err := r.db.GetReconcilerResources(ctx, req.ReconcilerName, teamSlug, database.Page{ - Limit: limit, - Offset: offset, - }) - if err != nil { - return nil, err - } - - resp := &protoapi.ListReconcilerResourcesResponse{ - PageInfo: pageInfo(req, total), - } - for _, rr := range res { - resp.Nodes = append(resp.Nodes, toProtoReconcilerResource(rr)) - } - return resp, nil -} - -func (r *ReconcilerResourcesServer) Delete(ctx context.Context, req *protoapi.DeleteReconcilerResourcesRequest) (*protoapi.DeleteReconcilerResourcesResponse, error) { - if req.ReconcilerName == "" { - return nil, status.Error(400, "reconcilerName is required") - } - - if req.TeamSlug == "" { - return nil, status.Error(400, "teamSlug is required") - } - - teamSlug := slug.Slug(req.TeamSlug) - if err := r.db.DeleteAllReconcilerResources(ctx, req.ReconcilerName, teamSlug); err != nil { - return nil, err - } - - return &protoapi.DeleteReconcilerResourcesResponse{}, nil -} - -func toProtoReconcilerResource(res *database.ReconcilerResource) *protoapi.ReconcilerResource { - return &protoapi.ReconcilerResource{ - Id: res.ID.String(), - ReconcilerName: res.ReconcilerName, - TeamSlug: string(res.TeamSlug), - Name: res.Name, - Value: res.Value, - Metadata: res.Metadata, - CreatedAt: timestamppb.New(res.CreatedAt.Time), - UpdatedAt: timestamppb.New(res.UpdatedAt.Time), - } -} diff --git a/internal/grpc/reconcilers.go b/internal/grpc/reconcilers.go index 1a7298c2f..f088b92b0 100644 --- a/internal/grpc/reconcilers.go +++ b/internal/grpc/reconcilers.go @@ -10,6 +10,7 @@ import ( "github.com/nais/api/pkg/protoapi" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/timestamppb" "k8s.io/utils/ptr" ) @@ -17,6 +18,7 @@ type ReconcilersServer struct { db interface { database.ReconcilerRepo database.ReconcilerErrorRepo + database.ReconcilerResourceRepo database.TeamRepo } protoapi.UnimplementedReconcilersServer @@ -147,6 +149,90 @@ func (s *ReconcilersServer) Config(ctx context.Context, req *protoapi.ConfigReco }, nil } +func (s *ReconcilersServer) SaveResources(ctx context.Context, in *protoapi.SaveReconcilerResourceRequest) (*protoapi.SaveReconcilerResourceResponse, error) { + switch { + case in.ReconcilerName == "": + return nil, status.Error(400, "reconcilerName is required") + case in.TeamSlug == "": + return nil, status.Error(400, "teamSlug is required") + } + + slg := slug.Slug(in.TeamSlug) + rn := in.ReconcilerName + + for _, rr := range in.Resources { + switch { + case rr.Name == "": + return nil, status.Error(400, "name is required") + case len(rr.Value) == 0: + return nil, status.Error(400, "value is required") + } + _, err := s.db.UpsertReconcilerResource(ctx, rn, slg, rr.Name, rr.Value, rr.Metadata) + if err != nil { + return nil, err + } + } + + return &protoapi.SaveReconcilerResourceResponse{}, nil +} + +func (s *ReconcilersServer) Resources(ctx context.Context, req *protoapi.ListReconcilerResourcesRequest) (*protoapi.ListReconcilerResourcesResponse, error) { + var teamSlug *slug.Slug + + if req.TeamSlug != "" { + slg := slug.Slug(req.TeamSlug) + teamSlug = &slg + } + + limit, offset := pagination(req) + total := 0 + res, err := s.db.GetReconcilerResources(ctx, req.ReconcilerName, teamSlug, database.Page{ + Limit: limit, + Offset: offset, + }) + if err != nil { + return nil, err + } + + resp := &protoapi.ListReconcilerResourcesResponse{ + PageInfo: pageInfo(req, total), + } + for _, rr := range res { + resp.Nodes = append(resp.Nodes, toProtoReconcilerResource(rr)) + } + return resp, nil +} + +func (s *ReconcilersServer) DeleteResources(ctx context.Context, req *protoapi.DeleteReconcilerResourcesRequest) (*protoapi.DeleteReconcilerResourcesResponse, error) { + if req.ReconcilerName == "" { + return nil, status.Error(400, "reconcilerName is required") + } + + if req.TeamSlug == "" { + return nil, status.Error(400, "teamSlug is required") + } + + teamSlug := slug.Slug(req.TeamSlug) + if err := s.db.DeleteAllReconcilerResources(ctx, req.ReconcilerName, teamSlug); err != nil { + return nil, err + } + + return &protoapi.DeleteReconcilerResourcesResponse{}, nil +} + +func toProtoReconcilerResource(res *database.ReconcilerResource) *protoapi.ReconcilerResource { + return &protoapi.ReconcilerResource{ + Id: res.ID.String(), + ReconcilerName: res.ReconcilerName, + TeamSlug: string(res.TeamSlug), + Name: res.Name, + Value: res.Value, + Metadata: res.Metadata, + CreatedAt: timestamppb.New(res.CreatedAt.Time), + UpdatedAt: timestamppb.New(res.UpdatedAt.Time), + } +} + func toProtoReconciler(rec *database.Reconciler) *protoapi.Reconciler { return &protoapi.Reconciler{ Name: rec.Name, diff --git a/pkg/apiclient/apiclient.go b/pkg/apiclient/apiclient.go index cc0fbe678..70039386b 100644 --- a/pkg/apiclient/apiclient.go +++ b/pkg/apiclient/apiclient.go @@ -32,10 +32,6 @@ func (a *APIClient) Teams() protoapi.TeamsClient { return protoapi.NewTeamsClient(a.conn) } -func (a *APIClient) ReconcilerResources() protoapi.ReconcilerResourcesClient { - return protoapi.NewReconcilerResourcesClient(a.conn) -} - func (a *APIClient) AuditLogs() protoapi.AuditLogsClient { return protoapi.NewAuditLogsClient(a.conn) } diff --git a/pkg/apiclient/mockclient.go b/pkg/apiclient/mockclient.go index ee4ca790a..af69c4bce 100644 --- a/pkg/apiclient/mockclient.go +++ b/pkg/apiclient/mockclient.go @@ -59,11 +59,10 @@ func (t *TestingHelpers) FailNow() { } type MockServers struct { - AuditLogs *protoapi.MockAuditLogsServer - Reconcilers *protoapi.MockReconcilersServer - ReconcilerResources *protoapi.MockReconcilerResourcesServer - Teams *protoapi.MockTeamsServer - Users *protoapi.MockUsersServer + AuditLogs *protoapi.MockAuditLogsServer + Reconcilers *protoapi.MockReconcilersServer + Teams *protoapi.MockTeamsServer + Users *protoapi.MockUsersServer } func NewMockClient(t testing.TB) (*APIClient, *MockServers) { @@ -80,16 +79,14 @@ func NewMockClient(t testing.TB) (*APIClient, *MockServers) { } th.Cleanup(th.printBuffer) mockServers := &MockServers{ - AuditLogs: protoapi.NewMockAuditLogsServer(th), - Reconcilers: protoapi.NewMockReconcilersServer(th), - ReconcilerResources: protoapi.NewMockReconcilerResourcesServer(th), - Teams: protoapi.NewMockTeamsServer(th), - Users: protoapi.NewMockUsersServer(th), + AuditLogs: protoapi.NewMockAuditLogsServer(th), + Reconcilers: protoapi.NewMockReconcilersServer(th), + Teams: protoapi.NewMockTeamsServer(th), + Users: protoapi.NewMockUsersServer(th), } protoapi.RegisterAuditLogsServer(s, mockServers.AuditLogs) protoapi.RegisterReconcilersServer(s, mockServers.Reconcilers) - protoapi.RegisterReconcilerResourcesServer(s, mockServers.ReconcilerResources) protoapi.RegisterTeamsServer(s, mockServers.Teams) protoapi.RegisterUsersServer(s, mockServers.Users) diff --git a/pkg/protoapi/mock_reconciler_resources_server.go b/pkg/protoapi/mock_reconciler_resources_server.go deleted file mode 100644 index 525385bbe..000000000 --- a/pkg/protoapi/mock_reconciler_resources_server.go +++ /dev/null @@ -1,245 +0,0 @@ -// Code generated by mockery. DO NOT EDIT. - -package protoapi - -import ( - context "context" - - mock "github.com/stretchr/testify/mock" -) - -// MockReconcilerResourcesServer is an autogenerated mock type for the ReconcilerResourcesServer type -type MockReconcilerResourcesServer struct { - mock.Mock -} - -type MockReconcilerResourcesServer_Expecter struct { - mock *mock.Mock -} - -func (_m *MockReconcilerResourcesServer) EXPECT() *MockReconcilerResourcesServer_Expecter { - return &MockReconcilerResourcesServer_Expecter{mock: &_m.Mock} -} - -// Delete provides a mock function with given fields: _a0, _a1 -func (_m *MockReconcilerResourcesServer) Delete(_a0 context.Context, _a1 *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *DeleteReconcilerResourcesResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *DeleteReconcilerResourcesRequest) *DeleteReconcilerResourcesResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*DeleteReconcilerResourcesResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *DeleteReconcilerResourcesRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockReconcilerResourcesServer_Delete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Delete' -type MockReconcilerResourcesServer_Delete_Call struct { - *mock.Call -} - -// Delete is a helper method to define mock.On call -// - _a0 context.Context -// - _a1 *DeleteReconcilerResourcesRequest -func (_e *MockReconcilerResourcesServer_Expecter) Delete(_a0 interface{}, _a1 interface{}) *MockReconcilerResourcesServer_Delete_Call { - return &MockReconcilerResourcesServer_Delete_Call{Call: _e.mock.On("Delete", _a0, _a1)} -} - -func (_c *MockReconcilerResourcesServer_Delete_Call) Run(run func(_a0 context.Context, _a1 *DeleteReconcilerResourcesRequest)) *MockReconcilerResourcesServer_Delete_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(*DeleteReconcilerResourcesRequest)) - }) - return _c -} - -func (_c *MockReconcilerResourcesServer_Delete_Call) Return(_a0 *DeleteReconcilerResourcesResponse, _a1 error) *MockReconcilerResourcesServer_Delete_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockReconcilerResourcesServer_Delete_Call) RunAndReturn(run func(context.Context, *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error)) *MockReconcilerResourcesServer_Delete_Call { - _c.Call.Return(run) - return _c -} - -// List provides a mock function with given fields: _a0, _a1 -func (_m *MockReconcilerResourcesServer) List(_a0 context.Context, _a1 *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for List") - } - - var r0 *ListReconcilerResourcesResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *ListReconcilerResourcesRequest) *ListReconcilerResourcesResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*ListReconcilerResourcesResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *ListReconcilerResourcesRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockReconcilerResourcesServer_List_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'List' -type MockReconcilerResourcesServer_List_Call struct { - *mock.Call -} - -// List is a helper method to define mock.On call -// - _a0 context.Context -// - _a1 *ListReconcilerResourcesRequest -func (_e *MockReconcilerResourcesServer_Expecter) List(_a0 interface{}, _a1 interface{}) *MockReconcilerResourcesServer_List_Call { - return &MockReconcilerResourcesServer_List_Call{Call: _e.mock.On("List", _a0, _a1)} -} - -func (_c *MockReconcilerResourcesServer_List_Call) Run(run func(_a0 context.Context, _a1 *ListReconcilerResourcesRequest)) *MockReconcilerResourcesServer_List_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(*ListReconcilerResourcesRequest)) - }) - return _c -} - -func (_c *MockReconcilerResourcesServer_List_Call) Return(_a0 *ListReconcilerResourcesResponse, _a1 error) *MockReconcilerResourcesServer_List_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockReconcilerResourcesServer_List_Call) RunAndReturn(run func(context.Context, *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error)) *MockReconcilerResourcesServer_List_Call { - _c.Call.Return(run) - return _c -} - -// Save provides a mock function with given fields: _a0, _a1 -func (_m *MockReconcilerResourcesServer) Save(_a0 context.Context, _a1 *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Save") - } - - var r0 *SaveReconcilerResourceResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *SaveReconcilerResourceRequest) *SaveReconcilerResourceResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*SaveReconcilerResourceResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *SaveReconcilerResourceRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// MockReconcilerResourcesServer_Save_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Save' -type MockReconcilerResourcesServer_Save_Call struct { - *mock.Call -} - -// Save is a helper method to define mock.On call -// - _a0 context.Context -// - _a1 *SaveReconcilerResourceRequest -func (_e *MockReconcilerResourcesServer_Expecter) Save(_a0 interface{}, _a1 interface{}) *MockReconcilerResourcesServer_Save_Call { - return &MockReconcilerResourcesServer_Save_Call{Call: _e.mock.On("Save", _a0, _a1)} -} - -func (_c *MockReconcilerResourcesServer_Save_Call) Run(run func(_a0 context.Context, _a1 *SaveReconcilerResourceRequest)) *MockReconcilerResourcesServer_Save_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(*SaveReconcilerResourceRequest)) - }) - return _c -} - -func (_c *MockReconcilerResourcesServer_Save_Call) Return(_a0 *SaveReconcilerResourceResponse, _a1 error) *MockReconcilerResourcesServer_Save_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *MockReconcilerResourcesServer_Save_Call) RunAndReturn(run func(context.Context, *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error)) *MockReconcilerResourcesServer_Save_Call { - _c.Call.Return(run) - return _c -} - -// mustEmbedUnimplementedReconcilerResourcesServer provides a mock function with given fields: -func (_m *MockReconcilerResourcesServer) mustEmbedUnimplementedReconcilerResourcesServer() { - _m.Called() -} - -// MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'mustEmbedUnimplementedReconcilerResourcesServer' -type MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call struct { - *mock.Call -} - -// mustEmbedUnimplementedReconcilerResourcesServer is a helper method to define mock.On call -func (_e *MockReconcilerResourcesServer_Expecter) mustEmbedUnimplementedReconcilerResourcesServer() *MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call { - return &MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call{Call: _e.mock.On("mustEmbedUnimplementedReconcilerResourcesServer")} -} - -func (_c *MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call) Run(run func()) *MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call) Return() *MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call { - _c.Call.Return() - return _c -} - -func (_c *MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call) RunAndReturn(run func()) *MockReconcilerResourcesServer_mustEmbedUnimplementedReconcilerResourcesServer_Call { - _c.Call.Return(run) - return _c -} - -// NewMockReconcilerResourcesServer creates a new instance of MockReconcilerResourcesServer. 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 NewMockReconcilerResourcesServer(t interface { - mock.TestingT - Cleanup(func()) -}) *MockReconcilerResourcesServer { - mock := &MockReconcilerResourcesServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/pkg/protoapi/mock_reconcilers_server.go b/pkg/protoapi/mock_reconcilers_server.go index 6b2909a5f..0cbd5e422 100644 --- a/pkg/protoapi/mock_reconcilers_server.go +++ b/pkg/protoapi/mock_reconcilers_server.go @@ -80,6 +80,65 @@ func (_c *MockReconcilersServer_Config_Call) RunAndReturn(run func(context.Conte return _c } +// DeleteResources provides a mock function with given fields: _a0, _a1 +func (_m *MockReconcilersServer) DeleteResources(_a0 context.Context, _a1 *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for DeleteResources") + } + + var r0 *DeleteReconcilerResourcesResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *DeleteReconcilerResourcesRequest) *DeleteReconcilerResourcesResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*DeleteReconcilerResourcesResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *DeleteReconcilerResourcesRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockReconcilersServer_DeleteResources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeleteResources' +type MockReconcilersServer_DeleteResources_Call struct { + *mock.Call +} + +// DeleteResources is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *DeleteReconcilerResourcesRequest +func (_e *MockReconcilersServer_Expecter) DeleteResources(_a0 interface{}, _a1 interface{}) *MockReconcilersServer_DeleteResources_Call { + return &MockReconcilersServer_DeleteResources_Call{Call: _e.mock.On("DeleteResources", _a0, _a1)} +} + +func (_c *MockReconcilersServer_DeleteResources_Call) Run(run func(_a0 context.Context, _a1 *DeleteReconcilerResourcesRequest)) *MockReconcilersServer_DeleteResources_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*DeleteReconcilerResourcesRequest)) + }) + return _c +} + +func (_c *MockReconcilersServer_DeleteResources_Call) Return(_a0 *DeleteReconcilerResourcesResponse, _a1 error) *MockReconcilersServer_DeleteResources_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockReconcilersServer_DeleteResources_Call) RunAndReturn(run func(context.Context, *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error)) *MockReconcilersServer_DeleteResources_Call { + _c.Call.Return(run) + return _c +} + // Get provides a mock function with given fields: _a0, _a1 func (_m *MockReconcilersServer) Get(_a0 context.Context, _a1 *GetReconcilerRequest) (*GetReconcilerResponse, error) { ret := _m.Called(_a0, _a1) @@ -316,6 +375,124 @@ func (_c *MockReconcilersServer_RemoveReconcilerErrorForTeam_Call) RunAndReturn( return _c } +// Resources provides a mock function with given fields: _a0, _a1 +func (_m *MockReconcilersServer) Resources(_a0 context.Context, _a1 *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Resources") + } + + var r0 *ListReconcilerResourcesResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *ListReconcilerResourcesRequest) *ListReconcilerResourcesResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*ListReconcilerResourcesResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *ListReconcilerResourcesRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockReconcilersServer_Resources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Resources' +type MockReconcilersServer_Resources_Call struct { + *mock.Call +} + +// Resources is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *ListReconcilerResourcesRequest +func (_e *MockReconcilersServer_Expecter) Resources(_a0 interface{}, _a1 interface{}) *MockReconcilersServer_Resources_Call { + return &MockReconcilersServer_Resources_Call{Call: _e.mock.On("Resources", _a0, _a1)} +} + +func (_c *MockReconcilersServer_Resources_Call) Run(run func(_a0 context.Context, _a1 *ListReconcilerResourcesRequest)) *MockReconcilersServer_Resources_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*ListReconcilerResourcesRequest)) + }) + return _c +} + +func (_c *MockReconcilersServer_Resources_Call) Return(_a0 *ListReconcilerResourcesResponse, _a1 error) *MockReconcilersServer_Resources_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockReconcilersServer_Resources_Call) RunAndReturn(run func(context.Context, *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error)) *MockReconcilersServer_Resources_Call { + _c.Call.Return(run) + return _c +} + +// SaveResources provides a mock function with given fields: _a0, _a1 +func (_m *MockReconcilersServer) SaveResources(_a0 context.Context, _a1 *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for SaveResources") + } + + var r0 *SaveReconcilerResourceResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *SaveReconcilerResourceRequest) *SaveReconcilerResourceResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*SaveReconcilerResourceResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *SaveReconcilerResourceRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockReconcilersServer_SaveResources_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SaveResources' +type MockReconcilersServer_SaveResources_Call struct { + *mock.Call +} + +// SaveResources is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *SaveReconcilerResourceRequest +func (_e *MockReconcilersServer_Expecter) SaveResources(_a0 interface{}, _a1 interface{}) *MockReconcilersServer_SaveResources_Call { + return &MockReconcilersServer_SaveResources_Call{Call: _e.mock.On("SaveResources", _a0, _a1)} +} + +func (_c *MockReconcilersServer_SaveResources_Call) Run(run func(_a0 context.Context, _a1 *SaveReconcilerResourceRequest)) *MockReconcilersServer_SaveResources_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*SaveReconcilerResourceRequest)) + }) + return _c +} + +func (_c *MockReconcilersServer_SaveResources_Call) Return(_a0 *SaveReconcilerResourceResponse, _a1 error) *MockReconcilersServer_SaveResources_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockReconcilersServer_SaveResources_Call) RunAndReturn(run func(context.Context, *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error)) *MockReconcilersServer_SaveResources_Call { + _c.Call.Return(run) + return _c +} + // SetReconcilerErrorForTeam provides a mock function with given fields: _a0, _a1 func (_m *MockReconcilersServer) SetReconcilerErrorForTeam(_a0 context.Context, _a1 *SetReconcilerErrorForTeamRequest) (*SetReconcilerErrorForTeamResponse, error) { ret := _m.Called(_a0, _a1) diff --git a/pkg/protoapi/reconciler_resources.pb.go b/pkg/protoapi/reconciler_resources.pb.go deleted file mode 100644 index 0c0c1a9ff..000000000 --- a/pkg/protoapi/reconciler_resources.pb.go +++ /dev/null @@ -1,766 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.32.0 -// protoc v4.25.2 -// source: reconciler_resources.proto - -package protoapi - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type ReconcilerResource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ReconcilerName string `protobuf:"bytes,2,opt,name=reconciler_name,json=reconcilerName,proto3" json:"reconciler_name,omitempty"` - TeamSlug string `protobuf:"bytes,3,opt,name=team_slug,json=teamSlug,proto3" json:"team_slug,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Value []byte `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` - Metadata []byte `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` -} - -func (x *ReconcilerResource) Reset() { - *x = ReconcilerResource{} - if protoimpl.UnsafeEnabled { - mi := &file_reconciler_resources_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReconcilerResource) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReconcilerResource) ProtoMessage() {} - -func (x *ReconcilerResource) ProtoReflect() protoreflect.Message { - mi := &file_reconciler_resources_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReconcilerResource.ProtoReflect.Descriptor instead. -func (*ReconcilerResource) Descriptor() ([]byte, []int) { - return file_reconciler_resources_proto_rawDescGZIP(), []int{0} -} - -func (x *ReconcilerResource) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ReconcilerResource) GetReconcilerName() string { - if x != nil { - return x.ReconcilerName - } - return "" -} - -func (x *ReconcilerResource) GetTeamSlug() string { - if x != nil { - return x.TeamSlug - } - return "" -} - -func (x *ReconcilerResource) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ReconcilerResource) GetValue() []byte { - if x != nil { - return x.Value - } - return nil -} - -func (x *ReconcilerResource) GetMetadata() []byte { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *ReconcilerResource) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *ReconcilerResource) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -type SaveReconcilerResourceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *SaveReconcilerResourceResponse) Reset() { - *x = SaveReconcilerResourceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_reconciler_resources_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SaveReconcilerResourceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SaveReconcilerResourceResponse) ProtoMessage() {} - -func (x *SaveReconcilerResourceResponse) ProtoReflect() protoreflect.Message { - mi := &file_reconciler_resources_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SaveReconcilerResourceResponse.ProtoReflect.Descriptor instead. -func (*SaveReconcilerResourceResponse) Descriptor() ([]byte, []int) { - return file_reconciler_resources_proto_rawDescGZIP(), []int{1} -} - -type SaveReconcilerResourceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Resources []*NewReconcilerResource `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"` - ReconcilerName string `protobuf:"bytes,2,opt,name=reconciler_name,json=reconcilerName,proto3" json:"reconciler_name,omitempty"` - TeamSlug string `protobuf:"bytes,3,opt,name=team_slug,json=teamSlug,proto3" json:"team_slug,omitempty"` -} - -func (x *SaveReconcilerResourceRequest) Reset() { - *x = SaveReconcilerResourceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_reconciler_resources_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SaveReconcilerResourceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SaveReconcilerResourceRequest) ProtoMessage() {} - -func (x *SaveReconcilerResourceRequest) ProtoReflect() protoreflect.Message { - mi := &file_reconciler_resources_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SaveReconcilerResourceRequest.ProtoReflect.Descriptor instead. -func (*SaveReconcilerResourceRequest) Descriptor() ([]byte, []int) { - return file_reconciler_resources_proto_rawDescGZIP(), []int{2} -} - -func (x *SaveReconcilerResourceRequest) GetResources() []*NewReconcilerResource { - if x != nil { - return x.Resources - } - return nil -} - -func (x *SaveReconcilerResourceRequest) GetReconcilerName() string { - if x != nil { - return x.ReconcilerName - } - return "" -} - -func (x *SaveReconcilerResourceRequest) GetTeamSlug() string { - if x != nil { - return x.TeamSlug - } - return "" -} - -type DeleteReconcilerResourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ReconcilerName string `protobuf:"bytes,1,opt,name=reconciler_name,json=reconcilerName,proto3" json:"reconciler_name,omitempty"` - TeamSlug string `protobuf:"bytes,2,opt,name=team_slug,json=teamSlug,proto3" json:"team_slug,omitempty"` -} - -func (x *DeleteReconcilerResourcesRequest) Reset() { - *x = DeleteReconcilerResourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_reconciler_resources_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteReconcilerResourcesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteReconcilerResourcesRequest) ProtoMessage() {} - -func (x *DeleteReconcilerResourcesRequest) ProtoReflect() protoreflect.Message { - mi := &file_reconciler_resources_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteReconcilerResourcesRequest.ProtoReflect.Descriptor instead. -func (*DeleteReconcilerResourcesRequest) Descriptor() ([]byte, []int) { - return file_reconciler_resources_proto_rawDescGZIP(), []int{3} -} - -func (x *DeleteReconcilerResourcesRequest) GetReconcilerName() string { - if x != nil { - return x.ReconcilerName - } - return "" -} - -func (x *DeleteReconcilerResourcesRequest) GetTeamSlug() string { - if x != nil { - return x.TeamSlug - } - return "" -} - -type DeleteReconcilerResourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *DeleteReconcilerResourcesResponse) Reset() { - *x = DeleteReconcilerResourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_reconciler_resources_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteReconcilerResourcesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteReconcilerResourcesResponse) ProtoMessage() {} - -func (x *DeleteReconcilerResourcesResponse) ProtoReflect() protoreflect.Message { - mi := &file_reconciler_resources_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteReconcilerResourcesResponse.ProtoReflect.Descriptor instead. -func (*DeleteReconcilerResourcesResponse) Descriptor() ([]byte, []int) { - return file_reconciler_resources_proto_rawDescGZIP(), []int{4} -} - -type NewReconcilerResource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (x *NewReconcilerResource) Reset() { - *x = NewReconcilerResource{} - if protoimpl.UnsafeEnabled { - mi := &file_reconciler_resources_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NewReconcilerResource) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NewReconcilerResource) ProtoMessage() {} - -func (x *NewReconcilerResource) ProtoReflect() protoreflect.Message { - mi := &file_reconciler_resources_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NewReconcilerResource.ProtoReflect.Descriptor instead. -func (*NewReconcilerResource) Descriptor() ([]byte, []int) { - return file_reconciler_resources_proto_rawDescGZIP(), []int{5} -} - -func (x *NewReconcilerResource) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *NewReconcilerResource) GetValue() []byte { - if x != nil { - return x.Value - } - return nil -} - -func (x *NewReconcilerResource) GetMetadata() []byte { - if x != nil { - return x.Metadata - } - return nil -} - -type ListReconcilerResourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Limit int64 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int64 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - ReconcilerName string `protobuf:"bytes,3,opt,name=reconciler_name,json=reconcilerName,proto3" json:"reconciler_name,omitempty"` - TeamSlug string `protobuf:"bytes,4,opt,name=team_slug,json=teamSlug,proto3" json:"team_slug,omitempty"` -} - -func (x *ListReconcilerResourcesRequest) Reset() { - *x = ListReconcilerResourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_reconciler_resources_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListReconcilerResourcesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListReconcilerResourcesRequest) ProtoMessage() {} - -func (x *ListReconcilerResourcesRequest) ProtoReflect() protoreflect.Message { - mi := &file_reconciler_resources_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListReconcilerResourcesRequest.ProtoReflect.Descriptor instead. -func (*ListReconcilerResourcesRequest) Descriptor() ([]byte, []int) { - return file_reconciler_resources_proto_rawDescGZIP(), []int{6} -} - -func (x *ListReconcilerResourcesRequest) GetLimit() int64 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *ListReconcilerResourcesRequest) GetOffset() int64 { - if x != nil { - return x.Offset - } - return 0 -} - -func (x *ListReconcilerResourcesRequest) GetReconcilerName() string { - if x != nil { - return x.ReconcilerName - } - return "" -} - -func (x *ListReconcilerResourcesRequest) GetTeamSlug() string { - if x != nil { - return x.TeamSlug - } - return "" -} - -type ListReconcilerResourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Nodes []*ReconcilerResource `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` -} - -func (x *ListReconcilerResourcesResponse) Reset() { - *x = ListReconcilerResourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_reconciler_resources_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListReconcilerResourcesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListReconcilerResourcesResponse) ProtoMessage() {} - -func (x *ListReconcilerResourcesResponse) ProtoReflect() protoreflect.Message { - mi := &file_reconciler_resources_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListReconcilerResourcesResponse.ProtoReflect.Descriptor instead. -func (*ListReconcilerResourcesResponse) Descriptor() ([]byte, []int) { - return file_reconciler_resources_proto_rawDescGZIP(), []int{7} -} - -func (x *ListReconcilerResourcesResponse) GetNodes() []*ReconcilerResource { - if x != nil { - return x.Nodes - } - return nil -} - -func (x *ListReconcilerResourcesResponse) GetPageInfo() *PageInfo { - if x != nil { - return x.PageInfo - } - return nil -} - -var File_reconciler_resources_proto protoreflect.FileDescriptor - -var file_reconciler_resources_proto_rawDesc = []byte{ - 0x0a, 0x1a, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xa6, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, - 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x1d, 0x53, - 0x61, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x09, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x22, 0x68, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, - 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, - 0x75, 0x67, 0x22, 0x23, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x52, 0x65, - 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x94, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x22, 0x74, 0x0a, - 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x29, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, - 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x32, 0x80, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, - 0x0a, 0x04, 0x53, 0x61, 0x76, 0x65, 0x12, 0x1e, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x04, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x1f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, - 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_reconciler_resources_proto_rawDescOnce sync.Once - file_reconciler_resources_proto_rawDescData = file_reconciler_resources_proto_rawDesc -) - -func file_reconciler_resources_proto_rawDescGZIP() []byte { - file_reconciler_resources_proto_rawDescOnce.Do(func() { - file_reconciler_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_reconciler_resources_proto_rawDescData) - }) - return file_reconciler_resources_proto_rawDescData -} - -var file_reconciler_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_reconciler_resources_proto_goTypes = []interface{}{ - (*ReconcilerResource)(nil), // 0: ReconcilerResource - (*SaveReconcilerResourceResponse)(nil), // 1: SaveReconcilerResourceResponse - (*SaveReconcilerResourceRequest)(nil), // 2: SaveReconcilerResourceRequest - (*DeleteReconcilerResourcesRequest)(nil), // 3: DeleteReconcilerResourcesRequest - (*DeleteReconcilerResourcesResponse)(nil), // 4: DeleteReconcilerResourcesResponse - (*NewReconcilerResource)(nil), // 5: NewReconcilerResource - (*ListReconcilerResourcesRequest)(nil), // 6: ListReconcilerResourcesRequest - (*ListReconcilerResourcesResponse)(nil), // 7: ListReconcilerResourcesResponse - (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp - (*PageInfo)(nil), // 9: PageInfo -} -var file_reconciler_resources_proto_depIdxs = []int32{ - 8, // 0: ReconcilerResource.created_at:type_name -> google.protobuf.Timestamp - 8, // 1: ReconcilerResource.updated_at:type_name -> google.protobuf.Timestamp - 5, // 2: SaveReconcilerResourceRequest.resources:type_name -> NewReconcilerResource - 0, // 3: ListReconcilerResourcesResponse.nodes:type_name -> ReconcilerResource - 9, // 4: ListReconcilerResourcesResponse.page_info:type_name -> PageInfo - 3, // 5: ReconcilerResources.Delete:input_type -> DeleteReconcilerResourcesRequest - 2, // 6: ReconcilerResources.Save:input_type -> SaveReconcilerResourceRequest - 6, // 7: ReconcilerResources.List:input_type -> ListReconcilerResourcesRequest - 4, // 8: ReconcilerResources.Delete:output_type -> DeleteReconcilerResourcesResponse - 1, // 9: ReconcilerResources.Save:output_type -> SaveReconcilerResourceResponse - 7, // 10: ReconcilerResources.List:output_type -> ListReconcilerResourcesResponse - 8, // [8:11] is the sub-list for method output_type - 5, // [5:8] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name -} - -func init() { file_reconciler_resources_proto_init() } -func file_reconciler_resources_proto_init() { - if File_reconciler_resources_proto != nil { - return - } - file_pagination_proto_init() - if !protoimpl.UnsafeEnabled { - file_reconciler_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReconcilerResource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_reconciler_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SaveReconcilerResourceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_reconciler_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SaveReconcilerResourceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_reconciler_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteReconcilerResourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_reconciler_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteReconcilerResourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_reconciler_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NewReconcilerResource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_reconciler_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReconcilerResourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_reconciler_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReconcilerResourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_reconciler_resources_proto_rawDesc, - NumEnums: 0, - NumMessages: 8, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_reconciler_resources_proto_goTypes, - DependencyIndexes: file_reconciler_resources_proto_depIdxs, - MessageInfos: file_reconciler_resources_proto_msgTypes, - }.Build() - File_reconciler_resources_proto = out.File - file_reconciler_resources_proto_rawDesc = nil - file_reconciler_resources_proto_goTypes = nil - file_reconciler_resources_proto_depIdxs = nil -} diff --git a/pkg/protoapi/reconciler_resources_grpc.pb.go b/pkg/protoapi/reconciler_resources_grpc.pb.go deleted file mode 100644 index 181c7b9fc..000000000 --- a/pkg/protoapi/reconciler_resources_grpc.pb.go +++ /dev/null @@ -1,183 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.2 -// source: reconciler_resources.proto - -package protoapi - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - ReconcilerResources_Delete_FullMethodName = "/ReconcilerResources/Delete" - ReconcilerResources_Save_FullMethodName = "/ReconcilerResources/Save" - ReconcilerResources_List_FullMethodName = "/ReconcilerResources/List" -) - -// ReconcilerResourcesClient is the client API for ReconcilerResources service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type ReconcilerResourcesClient interface { - Delete(ctx context.Context, in *DeleteReconcilerResourcesRequest, opts ...grpc.CallOption) (*DeleteReconcilerResourcesResponse, error) - Save(ctx context.Context, in *SaveReconcilerResourceRequest, opts ...grpc.CallOption) (*SaveReconcilerResourceResponse, error) - List(ctx context.Context, in *ListReconcilerResourcesRequest, opts ...grpc.CallOption) (*ListReconcilerResourcesResponse, error) -} - -type reconcilerResourcesClient struct { - cc grpc.ClientConnInterface -} - -func NewReconcilerResourcesClient(cc grpc.ClientConnInterface) ReconcilerResourcesClient { - return &reconcilerResourcesClient{cc} -} - -func (c *reconcilerResourcesClient) Delete(ctx context.Context, in *DeleteReconcilerResourcesRequest, opts ...grpc.CallOption) (*DeleteReconcilerResourcesResponse, error) { - out := new(DeleteReconcilerResourcesResponse) - err := c.cc.Invoke(ctx, ReconcilerResources_Delete_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *reconcilerResourcesClient) Save(ctx context.Context, in *SaveReconcilerResourceRequest, opts ...grpc.CallOption) (*SaveReconcilerResourceResponse, error) { - out := new(SaveReconcilerResourceResponse) - err := c.cc.Invoke(ctx, ReconcilerResources_Save_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *reconcilerResourcesClient) List(ctx context.Context, in *ListReconcilerResourcesRequest, opts ...grpc.CallOption) (*ListReconcilerResourcesResponse, error) { - out := new(ListReconcilerResourcesResponse) - err := c.cc.Invoke(ctx, ReconcilerResources_List_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ReconcilerResourcesServer is the server API for ReconcilerResources service. -// All implementations must embed UnimplementedReconcilerResourcesServer -// for forward compatibility -type ReconcilerResourcesServer interface { - Delete(context.Context, *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error) - Save(context.Context, *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error) - List(context.Context, *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error) - mustEmbedUnimplementedReconcilerResourcesServer() -} - -// UnimplementedReconcilerResourcesServer must be embedded to have forward compatible implementations. -type UnimplementedReconcilerResourcesServer struct { -} - -func (UnimplementedReconcilerResourcesServer) Delete(context.Context, *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (UnimplementedReconcilerResourcesServer) Save(context.Context, *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Save not implemented") -} -func (UnimplementedReconcilerResourcesServer) List(context.Context, *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (UnimplementedReconcilerResourcesServer) mustEmbedUnimplementedReconcilerResourcesServer() {} - -// UnsafeReconcilerResourcesServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to ReconcilerResourcesServer will -// result in compilation errors. -type UnsafeReconcilerResourcesServer interface { - mustEmbedUnimplementedReconcilerResourcesServer() -} - -func RegisterReconcilerResourcesServer(s grpc.ServiceRegistrar, srv ReconcilerResourcesServer) { - s.RegisterService(&ReconcilerResources_ServiceDesc, srv) -} - -func _ReconcilerResources_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteReconcilerResourcesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReconcilerResourcesServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ReconcilerResources_Delete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReconcilerResourcesServer).Delete(ctx, req.(*DeleteReconcilerResourcesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReconcilerResources_Save_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SaveReconcilerResourceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReconcilerResourcesServer).Save(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ReconcilerResources_Save_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReconcilerResourcesServer).Save(ctx, req.(*SaveReconcilerResourceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReconcilerResources_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListReconcilerResourcesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReconcilerResourcesServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ReconcilerResources_List_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReconcilerResourcesServer).List(ctx, req.(*ListReconcilerResourcesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// ReconcilerResources_ServiceDesc is the grpc.ServiceDesc for ReconcilerResources service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var ReconcilerResources_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "ReconcilerResources", - HandlerType: (*ReconcilerResourcesServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Delete", - Handler: _ReconcilerResources_Delete_Handler, - }, - { - MethodName: "Save", - Handler: _ReconcilerResources_Save_Handler, - }, - { - MethodName: "List", - Handler: _ReconcilerResources_List_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "reconciler_resources.proto", -} diff --git a/pkg/protoapi/reconcilers.pb.go b/pkg/protoapi/reconcilers.pb.go index 8e38c943e..39dc95e37 100644 --- a/pkg/protoapi/reconcilers.pb.go +++ b/pkg/protoapi/reconcilers.pb.go @@ -9,6 +9,7 @@ package protoapi import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) @@ -1030,159 +1031,725 @@ func (x *ConfigReconcilerResponse) GetPageInfo() *PageInfo { return nil } +type ReconcilerResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ReconcilerName string `protobuf:"bytes,2,opt,name=reconciler_name,json=reconcilerName,proto3" json:"reconciler_name,omitempty"` + TeamSlug string `protobuf:"bytes,3,opt,name=team_slug,json=teamSlug,proto3" json:"team_slug,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Value []byte `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` + Metadata []byte `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` +} + +func (x *ReconcilerResource) Reset() { + *x = ReconcilerResource{} + if protoimpl.UnsafeEnabled { + mi := &file_reconcilers_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReconcilerResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReconcilerResource) ProtoMessage() {} + +func (x *ReconcilerResource) ProtoReflect() protoreflect.Message { + mi := &file_reconcilers_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReconcilerResource.ProtoReflect.Descriptor instead. +func (*ReconcilerResource) Descriptor() ([]byte, []int) { + return file_reconcilers_proto_rawDescGZIP(), []int{18} +} + +func (x *ReconcilerResource) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ReconcilerResource) GetReconcilerName() string { + if x != nil { + return x.ReconcilerName + } + return "" +} + +func (x *ReconcilerResource) GetTeamSlug() string { + if x != nil { + return x.TeamSlug + } + return "" +} + +func (x *ReconcilerResource) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ReconcilerResource) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *ReconcilerResource) GetMetadata() []byte { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *ReconcilerResource) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ReconcilerResource) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +type SaveReconcilerResourceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SaveReconcilerResourceResponse) Reset() { + *x = SaveReconcilerResourceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_reconcilers_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveReconcilerResourceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveReconcilerResourceResponse) ProtoMessage() {} + +func (x *SaveReconcilerResourceResponse) ProtoReflect() protoreflect.Message { + mi := &file_reconcilers_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveReconcilerResourceResponse.ProtoReflect.Descriptor instead. +func (*SaveReconcilerResourceResponse) Descriptor() ([]byte, []int) { + return file_reconcilers_proto_rawDescGZIP(), []int{19} +} + +type SaveReconcilerResourceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Resources []*NewReconcilerResource `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"` + ReconcilerName string `protobuf:"bytes,2,opt,name=reconciler_name,json=reconcilerName,proto3" json:"reconciler_name,omitempty"` + TeamSlug string `protobuf:"bytes,3,opt,name=team_slug,json=teamSlug,proto3" json:"team_slug,omitempty"` +} + +func (x *SaveReconcilerResourceRequest) Reset() { + *x = SaveReconcilerResourceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_reconcilers_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveReconcilerResourceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveReconcilerResourceRequest) ProtoMessage() {} + +func (x *SaveReconcilerResourceRequest) ProtoReflect() protoreflect.Message { + mi := &file_reconcilers_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveReconcilerResourceRequest.ProtoReflect.Descriptor instead. +func (*SaveReconcilerResourceRequest) Descriptor() ([]byte, []int) { + return file_reconcilers_proto_rawDescGZIP(), []int{20} +} + +func (x *SaveReconcilerResourceRequest) GetResources() []*NewReconcilerResource { + if x != nil { + return x.Resources + } + return nil +} + +func (x *SaveReconcilerResourceRequest) GetReconcilerName() string { + if x != nil { + return x.ReconcilerName + } + return "" +} + +func (x *SaveReconcilerResourceRequest) GetTeamSlug() string { + if x != nil { + return x.TeamSlug + } + return "" +} + +type DeleteReconcilerResourcesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ReconcilerName string `protobuf:"bytes,1,opt,name=reconciler_name,json=reconcilerName,proto3" json:"reconciler_name,omitempty"` + TeamSlug string `protobuf:"bytes,2,opt,name=team_slug,json=teamSlug,proto3" json:"team_slug,omitempty"` +} + +func (x *DeleteReconcilerResourcesRequest) Reset() { + *x = DeleteReconcilerResourcesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_reconcilers_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteReconcilerResourcesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteReconcilerResourcesRequest) ProtoMessage() {} + +func (x *DeleteReconcilerResourcesRequest) ProtoReflect() protoreflect.Message { + mi := &file_reconcilers_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteReconcilerResourcesRequest.ProtoReflect.Descriptor instead. +func (*DeleteReconcilerResourcesRequest) Descriptor() ([]byte, []int) { + return file_reconcilers_proto_rawDescGZIP(), []int{21} +} + +func (x *DeleteReconcilerResourcesRequest) GetReconcilerName() string { + if x != nil { + return x.ReconcilerName + } + return "" +} + +func (x *DeleteReconcilerResourcesRequest) GetTeamSlug() string { + if x != nil { + return x.TeamSlug + } + return "" +} + +type DeleteReconcilerResourcesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteReconcilerResourcesResponse) Reset() { + *x = DeleteReconcilerResourcesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_reconcilers_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteReconcilerResourcesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteReconcilerResourcesResponse) ProtoMessage() {} + +func (x *DeleteReconcilerResourcesResponse) ProtoReflect() protoreflect.Message { + mi := &file_reconcilers_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteReconcilerResourcesResponse.ProtoReflect.Descriptor instead. +func (*DeleteReconcilerResourcesResponse) Descriptor() ([]byte, []int) { + return file_reconcilers_proto_rawDescGZIP(), []int{22} +} + +type NewReconcilerResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *NewReconcilerResource) Reset() { + *x = NewReconcilerResource{} + if protoimpl.UnsafeEnabled { + mi := &file_reconcilers_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NewReconcilerResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewReconcilerResource) ProtoMessage() {} + +func (x *NewReconcilerResource) ProtoReflect() protoreflect.Message { + mi := &file_reconcilers_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewReconcilerResource.ProtoReflect.Descriptor instead. +func (*NewReconcilerResource) Descriptor() ([]byte, []int) { + return file_reconcilers_proto_rawDescGZIP(), []int{23} +} + +func (x *NewReconcilerResource) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NewReconcilerResource) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *NewReconcilerResource) GetMetadata() []byte { + if x != nil { + return x.Metadata + } + return nil +} + +type ListReconcilerResourcesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Limit int64 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int64 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + ReconcilerName string `protobuf:"bytes,3,opt,name=reconciler_name,json=reconcilerName,proto3" json:"reconciler_name,omitempty"` + TeamSlug string `protobuf:"bytes,4,opt,name=team_slug,json=teamSlug,proto3" json:"team_slug,omitempty"` +} + +func (x *ListReconcilerResourcesRequest) Reset() { + *x = ListReconcilerResourcesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_reconcilers_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListReconcilerResourcesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListReconcilerResourcesRequest) ProtoMessage() {} + +func (x *ListReconcilerResourcesRequest) ProtoReflect() protoreflect.Message { + mi := &file_reconcilers_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListReconcilerResourcesRequest.ProtoReflect.Descriptor instead. +func (*ListReconcilerResourcesRequest) Descriptor() ([]byte, []int) { + return file_reconcilers_proto_rawDescGZIP(), []int{24} +} + +func (x *ListReconcilerResourcesRequest) GetLimit() int64 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListReconcilerResourcesRequest) GetOffset() int64 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *ListReconcilerResourcesRequest) GetReconcilerName() string { + if x != nil { + return x.ReconcilerName + } + return "" +} + +func (x *ListReconcilerResourcesRequest) GetTeamSlug() string { + if x != nil { + return x.TeamSlug + } + return "" +} + +type ListReconcilerResourcesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Nodes []*ReconcilerResource `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` +} + +func (x *ListReconcilerResourcesResponse) Reset() { + *x = ListReconcilerResourcesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_reconcilers_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListReconcilerResourcesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListReconcilerResourcesResponse) ProtoMessage() {} + +func (x *ListReconcilerResourcesResponse) ProtoReflect() protoreflect.Message { + mi := &file_reconcilers_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListReconcilerResourcesResponse.ProtoReflect.Descriptor instead. +func (*ListReconcilerResourcesResponse) Descriptor() ([]byte, []int) { + return file_reconcilers_proto_rawDescGZIP(), []int{25} +} + +func (x *ListReconcilerResourcesResponse) GetNodes() []*ReconcilerResource { + if x != nil { + return x.Nodes + } + return nil +} + +func (x *ListReconcilerResourcesResponse) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + var File_reconcilers_proto protoreflect.FileDescriptor var file_reconcilers_proto_rawDesc = []byte{ 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x38, 0x0a, 0x19, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x66, 0x75, 0x6c, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x22, - 0x1c, 0x0a, 0x1a, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x54, 0x65, 0x61, - 0x6d, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb4, 0x01, - 0x0a, 0x20, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x12, - 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, - 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x0a, 0x23, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x12, 0x27, 0x0a, - 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x24, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, - 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, - 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x77, - 0x61, 0x72, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x85, 0x01, - 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xe4, 0x01, 0x0a, 0x0d, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, + 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x38, 0x0a, 0x19, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x66, 0x75, 0x6c, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, + 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x54, 0x65, + 0x61, 0x6d, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb4, + 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, + 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, + 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x0a, 0x23, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x12, 0x27, + 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x24, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xa2, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x61, 0x77, 0x61, 0x72, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, + 0x77, 0x61, 0x72, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x77, - 0x61, 0x72, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x42, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x4d, 0x0a, 0x19, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x85, + 0x01, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xe4, 0x01, 0x0a, 0x0d, 0x4e, 0x65, 0x77, 0x52, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x61, 0x77, 0x61, 0x72, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, + 0x77, 0x61, 0x72, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x4d, 0x0a, + 0x19, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x72, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, + 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x0b, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, - 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, - 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x22, 0x46, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2b, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, + 0x52, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x22, 0x46, 0x0a, 0x16, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x22, 0x64, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x05, 0x6e, 0x6f, 0x64, + 0x65, 0x73, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x70, 0x0a, 0x17, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x22, 0x64, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, - 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, + 0x73, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, + 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x18, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x70, 0x0a, 0x17, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x18, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, - 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x32, 0xb0, 0x04, 0x0a, 0x0b, 0x52, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1b, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x36, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x17, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, - 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, - 0x61, 0x6d, 0x12, 0x21, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x1c, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x24, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xa6, 0x02, 0x0a, 0x12, 0x52, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, + 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, + 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, + 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x1d, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4e, 0x65, 0x77, 0x52, + 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, + 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, + 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, + 0x75, 0x67, 0x22, 0x68, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x22, 0x23, 0x0a, 0x21, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x5d, 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x94, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, + 0x61, 0x6d, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x65, 0x61, 0x6d, 0x53, 0x6c, 0x75, 0x67, 0x22, 0x74, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x6e, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x05, + 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x32, 0xb2, 0x06, + 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, + 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, + 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x18, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x19, 0x53, 0x65, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x21, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, + 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x6d, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x12, 0x53, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x79, 0x6e, 0x63, - 0x12, 0x1a, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x54, 0x65, 0x61, - 0x6d, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x53, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x79, 0x6e, - 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x2e, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x24, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, + 0x72, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x4f, 0x0a, 0x12, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x54, 0x65, 0x61, + 0x6d, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x1a, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, + 0x75, 0x6c, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x54, 0x65, + 0x61, 0x6d, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5a, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0d, + 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x1e, 0x2e, + 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x50, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x1f, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1197,7 +1764,7 @@ func file_reconcilers_proto_rawDescGZIP() []byte { return file_reconcilers_proto_rawDescData } -var file_reconcilers_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_reconcilers_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_reconcilers_proto_goTypes = []interface{}{ (*SuccessfulTeamSyncRequest)(nil), // 0: SuccessfulTeamSyncRequest (*SuccessfulTeamSyncResponse)(nil), // 1: SuccessfulTeamSyncResponse @@ -1217,35 +1784,55 @@ var file_reconcilers_proto_goTypes = []interface{}{ (*ListReconcilersResponse)(nil), // 15: ListReconcilersResponse (*ConfigReconcilerRequest)(nil), // 16: ConfigReconcilerRequest (*ConfigReconcilerResponse)(nil), // 17: ConfigReconcilerResponse - (*PageInfo)(nil), // 18: PageInfo + (*ReconcilerResource)(nil), // 18: ReconcilerResource + (*SaveReconcilerResourceResponse)(nil), // 19: SaveReconcilerResourceResponse + (*SaveReconcilerResourceRequest)(nil), // 20: SaveReconcilerResourceRequest + (*DeleteReconcilerResourcesRequest)(nil), // 21: DeleteReconcilerResourcesRequest + (*DeleteReconcilerResourcesResponse)(nil), // 22: DeleteReconcilerResourcesResponse + (*NewReconcilerResource)(nil), // 23: NewReconcilerResource + (*ListReconcilerResourcesRequest)(nil), // 24: ListReconcilerResourcesRequest + (*ListReconcilerResourcesResponse)(nil), // 25: ListReconcilerResourcesResponse + (*PageInfo)(nil), // 26: PageInfo + (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp } var file_reconcilers_proto_depIdxs = []int32{ 8, // 0: NewReconciler.config:type_name -> ReconcilerConfigSpec 9, // 1: RegisterReconcilerRequest.reconcilers:type_name -> NewReconciler 6, // 2: GetReconcilerResponse.reconciler:type_name -> Reconciler 6, // 3: ListReconcilersResponse.nodes:type_name -> Reconciler - 18, // 4: ListReconcilersResponse.page_info:type_name -> PageInfo + 26, // 4: ListReconcilersResponse.page_info:type_name -> PageInfo 7, // 5: ConfigReconcilerResponse.nodes:type_name -> ReconcilerConfig - 18, // 6: ConfigReconcilerResponse.page_info:type_name -> PageInfo - 10, // 7: Reconcilers.Register:input_type -> RegisterReconcilerRequest - 12, // 8: Reconcilers.Get:input_type -> GetReconcilerRequest - 14, // 9: Reconcilers.List:input_type -> ListReconcilersRequest - 16, // 10: Reconcilers.Config:input_type -> ConfigReconcilerRequest - 2, // 11: Reconcilers.SetReconcilerErrorForTeam:input_type -> SetReconcilerErrorForTeamRequest - 4, // 12: Reconcilers.RemoveReconcilerErrorForTeam:input_type -> RemoveReconcilerErrorForTeamRequest - 0, // 13: Reconcilers.SuccessfulTeamSync:input_type -> SuccessfulTeamSyncRequest - 11, // 14: Reconcilers.Register:output_type -> RegisterReconcilerResponse - 13, // 15: Reconcilers.Get:output_type -> GetReconcilerResponse - 15, // 16: Reconcilers.List:output_type -> ListReconcilersResponse - 17, // 17: Reconcilers.Config:output_type -> ConfigReconcilerResponse - 3, // 18: Reconcilers.SetReconcilerErrorForTeam:output_type -> SetReconcilerErrorForTeamResponse - 5, // 19: Reconcilers.RemoveReconcilerErrorForTeam:output_type -> RemoveReconcilerErrorForTeamResponse - 1, // 20: Reconcilers.SuccessfulTeamSync:output_type -> SuccessfulTeamSyncResponse - 14, // [14:21] is the sub-list for method output_type - 7, // [7:14] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 26, // 6: ConfigReconcilerResponse.page_info:type_name -> PageInfo + 27, // 7: ReconcilerResource.created_at:type_name -> google.protobuf.Timestamp + 27, // 8: ReconcilerResource.updated_at:type_name -> google.protobuf.Timestamp + 23, // 9: SaveReconcilerResourceRequest.resources:type_name -> NewReconcilerResource + 18, // 10: ListReconcilerResourcesResponse.nodes:type_name -> ReconcilerResource + 26, // 11: ListReconcilerResourcesResponse.page_info:type_name -> PageInfo + 10, // 12: Reconcilers.Register:input_type -> RegisterReconcilerRequest + 12, // 13: Reconcilers.Get:input_type -> GetReconcilerRequest + 14, // 14: Reconcilers.List:input_type -> ListReconcilersRequest + 16, // 15: Reconcilers.Config:input_type -> ConfigReconcilerRequest + 2, // 16: Reconcilers.SetReconcilerErrorForTeam:input_type -> SetReconcilerErrorForTeamRequest + 4, // 17: Reconcilers.RemoveReconcilerErrorForTeam:input_type -> RemoveReconcilerErrorForTeamRequest + 0, // 18: Reconcilers.SuccessfulTeamSync:input_type -> SuccessfulTeamSyncRequest + 21, // 19: Reconcilers.DeleteResources:input_type -> DeleteReconcilerResourcesRequest + 20, // 20: Reconcilers.SaveResources:input_type -> SaveReconcilerResourceRequest + 24, // 21: Reconcilers.Resources:input_type -> ListReconcilerResourcesRequest + 11, // 22: Reconcilers.Register:output_type -> RegisterReconcilerResponse + 13, // 23: Reconcilers.Get:output_type -> GetReconcilerResponse + 15, // 24: Reconcilers.List:output_type -> ListReconcilersResponse + 17, // 25: Reconcilers.Config:output_type -> ConfigReconcilerResponse + 3, // 26: Reconcilers.SetReconcilerErrorForTeam:output_type -> SetReconcilerErrorForTeamResponse + 5, // 27: Reconcilers.RemoveReconcilerErrorForTeam:output_type -> RemoveReconcilerErrorForTeamResponse + 1, // 28: Reconcilers.SuccessfulTeamSync:output_type -> SuccessfulTeamSyncResponse + 22, // 29: Reconcilers.DeleteResources:output_type -> DeleteReconcilerResourcesResponse + 19, // 30: Reconcilers.SaveResources:output_type -> SaveReconcilerResourceResponse + 25, // 31: Reconcilers.Resources:output_type -> ListReconcilerResourcesResponse + 22, // [22:32] is the sub-list for method output_type + 12, // [12:22] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_reconcilers_proto_init() } @@ -1471,6 +2058,102 @@ func file_reconcilers_proto_init() { return nil } } + file_reconcilers_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReconcilerResource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_reconcilers_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveReconcilerResourceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_reconcilers_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveReconcilerResourceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_reconcilers_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteReconcilerResourcesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_reconcilers_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteReconcilerResourcesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_reconcilers_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NewReconcilerResource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_reconcilers_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListReconcilerResourcesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_reconcilers_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListReconcilerResourcesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1478,7 +2161,7 @@ func file_reconcilers_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_reconcilers_proto_rawDesc, NumEnums: 0, - NumMessages: 18, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/protoapi/reconcilers_grpc.pb.go b/pkg/protoapi/reconcilers_grpc.pb.go index a20df5340..cf3efeec1 100644 --- a/pkg/protoapi/reconcilers_grpc.pb.go +++ b/pkg/protoapi/reconcilers_grpc.pb.go @@ -26,6 +26,9 @@ const ( Reconcilers_SetReconcilerErrorForTeam_FullMethodName = "/Reconcilers/SetReconcilerErrorForTeam" Reconcilers_RemoveReconcilerErrorForTeam_FullMethodName = "/Reconcilers/RemoveReconcilerErrorForTeam" Reconcilers_SuccessfulTeamSync_FullMethodName = "/Reconcilers/SuccessfulTeamSync" + Reconcilers_DeleteResources_FullMethodName = "/Reconcilers/DeleteResources" + Reconcilers_SaveResources_FullMethodName = "/Reconcilers/SaveResources" + Reconcilers_Resources_FullMethodName = "/Reconcilers/Resources" ) // ReconcilersClient is the client API for Reconcilers service. @@ -39,6 +42,9 @@ type ReconcilersClient interface { SetReconcilerErrorForTeam(ctx context.Context, in *SetReconcilerErrorForTeamRequest, opts ...grpc.CallOption) (*SetReconcilerErrorForTeamResponse, error) RemoveReconcilerErrorForTeam(ctx context.Context, in *RemoveReconcilerErrorForTeamRequest, opts ...grpc.CallOption) (*RemoveReconcilerErrorForTeamResponse, error) SuccessfulTeamSync(ctx context.Context, in *SuccessfulTeamSyncRequest, opts ...grpc.CallOption) (*SuccessfulTeamSyncResponse, error) + DeleteResources(ctx context.Context, in *DeleteReconcilerResourcesRequest, opts ...grpc.CallOption) (*DeleteReconcilerResourcesResponse, error) + SaveResources(ctx context.Context, in *SaveReconcilerResourceRequest, opts ...grpc.CallOption) (*SaveReconcilerResourceResponse, error) + Resources(ctx context.Context, in *ListReconcilerResourcesRequest, opts ...grpc.CallOption) (*ListReconcilerResourcesResponse, error) } type reconcilersClient struct { @@ -112,6 +118,33 @@ func (c *reconcilersClient) SuccessfulTeamSync(ctx context.Context, in *Successf return out, nil } +func (c *reconcilersClient) DeleteResources(ctx context.Context, in *DeleteReconcilerResourcesRequest, opts ...grpc.CallOption) (*DeleteReconcilerResourcesResponse, error) { + out := new(DeleteReconcilerResourcesResponse) + err := c.cc.Invoke(ctx, Reconcilers_DeleteResources_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *reconcilersClient) SaveResources(ctx context.Context, in *SaveReconcilerResourceRequest, opts ...grpc.CallOption) (*SaveReconcilerResourceResponse, error) { + out := new(SaveReconcilerResourceResponse) + err := c.cc.Invoke(ctx, Reconcilers_SaveResources_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *reconcilersClient) Resources(ctx context.Context, in *ListReconcilerResourcesRequest, opts ...grpc.CallOption) (*ListReconcilerResourcesResponse, error) { + out := new(ListReconcilerResourcesResponse) + err := c.cc.Invoke(ctx, Reconcilers_Resources_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ReconcilersServer is the server API for Reconcilers service. // All implementations must embed UnimplementedReconcilersServer // for forward compatibility @@ -123,6 +156,9 @@ type ReconcilersServer interface { SetReconcilerErrorForTeam(context.Context, *SetReconcilerErrorForTeamRequest) (*SetReconcilerErrorForTeamResponse, error) RemoveReconcilerErrorForTeam(context.Context, *RemoveReconcilerErrorForTeamRequest) (*RemoveReconcilerErrorForTeamResponse, error) SuccessfulTeamSync(context.Context, *SuccessfulTeamSyncRequest) (*SuccessfulTeamSyncResponse, error) + DeleteResources(context.Context, *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error) + SaveResources(context.Context, *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error) + Resources(context.Context, *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error) mustEmbedUnimplementedReconcilersServer() } @@ -151,6 +187,15 @@ func (UnimplementedReconcilersServer) RemoveReconcilerErrorForTeam(context.Conte func (UnimplementedReconcilersServer) SuccessfulTeamSync(context.Context, *SuccessfulTeamSyncRequest) (*SuccessfulTeamSyncResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SuccessfulTeamSync not implemented") } +func (UnimplementedReconcilersServer) DeleteResources(context.Context, *DeleteReconcilerResourcesRequest) (*DeleteReconcilerResourcesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteResources not implemented") +} +func (UnimplementedReconcilersServer) SaveResources(context.Context, *SaveReconcilerResourceRequest) (*SaveReconcilerResourceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveResources not implemented") +} +func (UnimplementedReconcilersServer) Resources(context.Context, *ListReconcilerResourcesRequest) (*ListReconcilerResourcesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Resources not implemented") +} func (UnimplementedReconcilersServer) mustEmbedUnimplementedReconcilersServer() {} // UnsafeReconcilersServer may be embedded to opt out of forward compatibility for this service. @@ -290,6 +335,60 @@ func _Reconcilers_SuccessfulTeamSync_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _Reconcilers_DeleteResources_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteReconcilerResourcesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReconcilersServer).DeleteResources(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Reconcilers_DeleteResources_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReconcilersServer).DeleteResources(ctx, req.(*DeleteReconcilerResourcesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Reconcilers_SaveResources_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SaveReconcilerResourceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReconcilersServer).SaveResources(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Reconcilers_SaveResources_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReconcilersServer).SaveResources(ctx, req.(*SaveReconcilerResourceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Reconcilers_Resources_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListReconcilerResourcesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReconcilersServer).Resources(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Reconcilers_Resources_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReconcilersServer).Resources(ctx, req.(*ListReconcilerResourcesRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Reconcilers_ServiceDesc is the grpc.ServiceDesc for Reconcilers service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -325,6 +424,18 @@ var Reconcilers_ServiceDesc = grpc.ServiceDesc{ MethodName: "SuccessfulTeamSync", Handler: _Reconcilers_SuccessfulTeamSync_Handler, }, + { + MethodName: "DeleteResources", + Handler: _Reconcilers_DeleteResources_Handler, + }, + { + MethodName: "SaveResources", + Handler: _Reconcilers_SaveResources_Handler, + }, + { + MethodName: "Resources", + Handler: _Reconcilers_Resources_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "reconcilers.proto", diff --git a/pkg/protoapi/schema/reconciler_resources.proto b/pkg/protoapi/schema/reconciler_resources.proto deleted file mode 100644 index ec2d28d7e..000000000 --- a/pkg/protoapi/schema/reconciler_resources.proto +++ /dev/null @@ -1,56 +0,0 @@ -syntax = "proto3"; - -option go_package = "./pkg/protoapi"; - -import "google/protobuf/timestamp.proto"; -import "pagination.proto"; - -message ReconcilerResource { - string id = 1; - string reconciler_name = 2; - string team_slug = 3; - string name = 4; - bytes value = 5; - bytes metadata = 6; - google.protobuf.Timestamp created_at = 7; - google.protobuf.Timestamp updated_at = 8; -} - -service ReconcilerResources { - rpc Delete(DeleteReconcilerResourcesRequest) returns (DeleteReconcilerResourcesResponse) {} - rpc Save(SaveReconcilerResourceRequest) returns (SaveReconcilerResourceResponse) {} - rpc List(ListReconcilerResourcesRequest) returns (ListReconcilerResourcesResponse) {} -} - -message SaveReconcilerResourceResponse {} - -message SaveReconcilerResourceRequest { - repeated NewReconcilerResource resources = 1; - string reconciler_name = 2; - string team_slug = 3; -} - -message DeleteReconcilerResourcesRequest { - string reconciler_name = 1; - string team_slug = 2; -} - -message DeleteReconcilerResourcesResponse {} - -message NewReconcilerResource { - string name = 1; - bytes value = 2; - bytes metadata = 3; -} - -message ListReconcilerResourcesRequest { - int64 limit = 1; - int64 offset = 2; - string reconciler_name = 3; - string team_slug = 4; -} - -message ListReconcilerResourcesResponse { - repeated ReconcilerResource nodes = 1; - PageInfo page_info = 2; -} diff --git a/pkg/protoapi/schema/reconcilers.proto b/pkg/protoapi/schema/reconcilers.proto index 4bb376d4e..30e97e8e2 100644 --- a/pkg/protoapi/schema/reconcilers.proto +++ b/pkg/protoapi/schema/reconcilers.proto @@ -1,5 +1,6 @@ syntax = "proto3"; +import "google/protobuf/timestamp.proto"; import "pagination.proto"; option go_package = "./pkg/protoapi"; @@ -12,6 +13,9 @@ service Reconcilers { rpc SetReconcilerErrorForTeam(SetReconcilerErrorForTeamRequest) returns (SetReconcilerErrorForTeamResponse) {} rpc RemoveReconcilerErrorForTeam(RemoveReconcilerErrorForTeamRequest) returns (RemoveReconcilerErrorForTeamResponse) {} rpc SuccessfulTeamSync(SuccessfulTeamSyncRequest) returns (SuccessfulTeamSyncResponse) {} + rpc DeleteResources(DeleteReconcilerResourcesRequest) returns (DeleteReconcilerResourcesResponse) {} + rpc SaveResources(SaveReconcilerResourceRequest) returns (SaveReconcilerResourceResponse) {} + rpc Resources(ListReconcilerResourcesRequest) returns (ListReconcilerResourcesResponse) {} } message SuccessfulTeamSyncRequest { @@ -102,3 +106,47 @@ message ConfigReconcilerResponse { repeated ReconcilerConfig nodes = 1; PageInfo page_info = 2; } + +message ReconcilerResource { + string id = 1; + string reconciler_name = 2; + string team_slug = 3; + string name = 4; + bytes value = 5; + bytes metadata = 6; + google.protobuf.Timestamp created_at = 7; + google.protobuf.Timestamp updated_at = 8; +} + +message SaveReconcilerResourceResponse {} + +message SaveReconcilerResourceRequest { + repeated NewReconcilerResource resources = 1; + string reconciler_name = 2; + string team_slug = 3; +} + +message DeleteReconcilerResourcesRequest { + string reconciler_name = 1; + string team_slug = 2; +} + +message DeleteReconcilerResourcesResponse {} + +message NewReconcilerResource { + string name = 1; + bytes value = 2; + bytes metadata = 3; +} + +message ListReconcilerResourcesRequest { + int64 limit = 1; + int64 offset = 2; + string reconciler_name = 3; + string team_slug = 4; +} + +message ListReconcilerResourcesResponse { + repeated ReconcilerResource nodes = 1; + PageInfo page_info = 2; +}