From 6a1bfe1eaaea90a0906d7fe9a54b058cb3a01756 Mon Sep 17 00:00:00 2001 From: "a.petraki" <a.petraki@perx.ru> Date: Mon, 1 Apr 2024 17:04:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B2=D0=BD=D1=83?= =?UTF-8?q?=D1=82=D1=80=D0=B5=D0=BD=D0=BD=D0=B8=D0=B9=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80=D0=B0=D0=BD=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D0=B0=20SetState=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B5?= =?UTF-8?q?=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20Spaces?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../middleware/access_logging_middleware.go | 19 +++++ pkg/spaces/middleware/caching_middleware.go | 14 ++++ .../middleware/error_logging_middleware.go | 10 +++ pkg/spaces/middleware/logging_middleware.go | 22 ++++++ .../middleware/recovering_middleware.go | 12 ++++ pkg/spaces/middleware/telemetry_middleware.go | 38 +++++++++- pkg/spaces/mocks/SpaceCreatedObserver.go | 15 ++-- pkg/spaces/mocks/SpaceDeletedObserver.go | 15 ++-- pkg/spaces/mocks/SpaceObserver.go | 11 ++- pkg/spaces/mocks/SpaceUpdatedObserver.go | 15 ++-- pkg/spaces/mocks/Spaces.go | 69 +++++++++++++++++-- pkg/spaces/mocks/Storage.go | 35 ++++++++-- pkg/spaces/service.go | 3 + pkg/spaces/space.go | 25 ++++++- pkg/spaces/transport/client.go | 4 ++ 15 files changed, 267 insertions(+), 40 deletions(-) diff --git a/pkg/spaces/middleware/access_logging_middleware.go b/pkg/spaces/middleware/access_logging_middleware.go index 7fca51ed..5a21e84e 100644 --- a/pkg/spaces/middleware/access_logging_middleware.go +++ b/pkg/spaces/middleware/access_logging_middleware.go @@ -217,3 +217,22 @@ func (m *accessLoggingMiddleware) UpdateConfig(ctx context.Context, spaceId stri return err } + +func (m *accessLoggingMiddleware) SetState(ctx context.Context, spaceID string, state *spaces.StateInfo) (err error) { + begin := time.Now() + + m.logger.Debug("SetState.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceID", spaceID), + zap.Reflect("state", state), + ) + + err = m.next.SetState(ctx, spaceID, state) + + m.logger.Debug("SetState.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/spaces/middleware/caching_middleware.go b/pkg/spaces/middleware/caching_middleware.go index f99e21a1..97029a52 100644 --- a/pkg/spaces/middleware/caching_middleware.go +++ b/pkg/spaces/middleware/caching_middleware.go @@ -91,6 +91,20 @@ func (m cachingMiddleware) UpdateConfig(ctx context.Context, spaceId string, con return err } +func (m cachingMiddleware) SetState(ctx context.Context, spaceID string, state *service.StateInfo) (err error) { + + err = m.next.SetState(ctx, spaceID, state) + if err == nil { + value, e := m.cache.Get(spaceID) + if e == nil { + space := value.(*service.Space) + _ = m.cache.Remove(orgKey(space.OrgID)) + } + _ = m.cache.Remove(spaceID) + } + return err +} + func (m cachingMiddleware) Delete(ctx context.Context, spaceId string) (err error) { err = m.next.Delete(ctx, spaceId) diff --git a/pkg/spaces/middleware/error_logging_middleware.go b/pkg/spaces/middleware/error_logging_middleware.go index 2b11838b..0afa3eec 100644 --- a/pkg/spaces/middleware/error_logging_middleware.go +++ b/pkg/spaces/middleware/error_logging_middleware.go @@ -99,6 +99,16 @@ func (m *errorLoggingMiddleware) Move(ctx context.Context, spaceID string, orgID return m.next.Move(ctx, spaceID, orgID) } +func (m *errorLoggingMiddleware) SetState(ctx context.Context, spaceID string, state *spaces.StateInfo) (err error) { + logger := m.logger + defer func() { + if err != nil { + logger.Warn("response error", zap.Error(err)) + } + }() + return m.next.SetState(ctx, spaceID, state) +} + func (m *errorLoggingMiddleware) Transfer(ctx context.Context, spaceID string, transferToOrg string) (err error) { logger := m.logger defer func() { diff --git a/pkg/spaces/middleware/logging_middleware.go b/pkg/spaces/middleware/logging_middleware.go index 877ee7e5..4c5852e1 100644 --- a/pkg/spaces/middleware/logging_middleware.go +++ b/pkg/spaces/middleware/logging_middleware.go @@ -180,6 +180,28 @@ func (m *loggingMiddleware) Update(ctx context.Context, space *spaces.Space) (er return err } +func (m *loggingMiddleware) SetState(ctx context.Context, spaceID string, state *spaces.StateInfo) (err error) { + logger := m.logger.With( + logzap.Caller(ctx), + logzap.Event(spaces.EventUpdate), + logzap.Object(id.NewSpaceId(spaceID)), + ) + + var st spaces.State + if state != nil { + st = state.State + } + + err = m.next.SetState(ctx, spaceID, state) + if err != nil { + logger.Error(fmt.Sprintf("Failed to set state '%s' to space", st), zap.Error(err)) + return + } + + logger.Info(fmt.Sprintf("Set state '%s' to space", st)) + return err +} + func (m *loggingMiddleware) UpdateConfig(ctx context.Context, spaceId string, config *spaces.Config) (err error) { logger := m.logger.With( logzap.Caller(ctx), diff --git a/pkg/spaces/middleware/recovering_middleware.go b/pkg/spaces/middleware/recovering_middleware.go index 7b9b64ed..162f9a4c 100644 --- a/pkg/spaces/middleware/recovering_middleware.go +++ b/pkg/spaces/middleware/recovering_middleware.go @@ -114,6 +114,18 @@ func (m *recoveringMiddleware) Move(ctx context.Context, spaceID string, orgID s return m.next.Move(ctx, spaceID, orgID) } +func (m *recoveringMiddleware) SetState(ctx context.Context, spaceID string, state *spaces.StateInfo) (err error) { + logger := m.logger + defer func() { + if r := recover(); r != nil { + logger.Error("panic", zap.Error(fmt.Errorf("%v", r))) + err = fmt.Errorf("%v", r) + } + }() + + return m.next.SetState(ctx, spaceID, state) +} + func (m *recoveringMiddleware) Transfer(ctx context.Context, spaceID string, transferToOrg string) (err error) { logger := m.logger defer func() { diff --git a/pkg/spaces/middleware/telemetry_middleware.go b/pkg/spaces/middleware/telemetry_middleware.go index 90597815..38a47697 100644 --- a/pkg/spaces/middleware/telemetry_middleware.go +++ b/pkg/spaces/middleware/telemetry_middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ..\..\..\assets\templates\middleware\telemetry +// template: ../../../assets/templates/middleware/telemetry // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/spaces -i Spaces -t ..\..\..\assets\templates\middleware\telemetry -o telemetry_middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/spaces -i Spaces -t ../../../assets/templates/middleware/telemetry -o telemetry_middleware.go -l "" // source template: https://github.com/hexdigest/gowrap/blob/master/templates/opentelemetry @@ -284,6 +284,40 @@ func (_d telemetryMiddleware) Move(ctx context.Context, spaceID string, orgID st return _d.Spaces.Move(ctx, spaceID, orgID) } +// SetState implements spaces.Spaces +func (_d telemetryMiddleware) SetState(ctx context.Context, spaceID string, state *spaces.StateInfo) (err error) { + attributes := otelmetric.WithAttributeSet(attribute.NewSet( + attribute.String("service", "Spaces"), + attribute.String("method", "SetState"), + )) + + _d.requestMetrics.Total.Add(ctx, 1, attributes) + + start := time.Now() + ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Spaces.SetState") + + defer func() { + _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) + + if _d._spanDecorator != nil { + _d._spanDecorator(_span, map[string]interface{}{ + "ctx": ctx, + "spaceID": spaceID, + "state": state}, map[string]interface{}{ + "err": err}) + } else if err != nil { + _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) + + _span.RecordError(err) + _span.SetAttributes(attribute.String("event", "error")) + _span.SetAttributes(attribute.String("message", err.Error())) + } + + _span.End() + }() + return _d.Spaces.SetState(ctx, spaceID, state) +} + // Transfer implements spaces.Spaces func (_d telemetryMiddleware) Transfer(ctx context.Context, spaceID string, transferToOrg string) (err error) { attributes := otelmetric.WithAttributeSet(attribute.NewSet( diff --git a/pkg/spaces/mocks/SpaceCreatedObserver.go b/pkg/spaces/mocks/SpaceCreatedObserver.go index a85eced7..049a741a 100644 --- a/pkg/spaces/mocks/SpaceCreatedObserver.go +++ b/pkg/spaces/mocks/SpaceCreatedObserver.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.15.0. DO NOT EDIT. +// Code generated by mockery v2.40.3. DO NOT EDIT. package mocks @@ -18,6 +18,10 @@ type SpaceCreatedObserver struct { func (_m *SpaceCreatedObserver) OnSpaceCreated(ctx context.Context, space *spaces.Space) error { ret := _m.Called(ctx, space) + if len(ret) == 0 { + panic("no return value specified for OnSpaceCreated") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, *spaces.Space) error); ok { r0 = rf(ctx, space) @@ -28,13 +32,12 @@ func (_m *SpaceCreatedObserver) OnSpaceCreated(ctx context.Context, space *space return r0 } -type mockConstructorTestingTNewSpaceCreatedObserver interface { +// NewSpaceCreatedObserver creates a new instance of SpaceCreatedObserver. 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 NewSpaceCreatedObserver(t interface { mock.TestingT Cleanup(func()) -} - -// NewSpaceCreatedObserver creates a new instance of SpaceCreatedObserver. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -func NewSpaceCreatedObserver(t mockConstructorTestingTNewSpaceCreatedObserver) *SpaceCreatedObserver { +}) *SpaceCreatedObserver { mock := &SpaceCreatedObserver{} mock.Mock.Test(t) diff --git a/pkg/spaces/mocks/SpaceDeletedObserver.go b/pkg/spaces/mocks/SpaceDeletedObserver.go index 450173b0..d4e65da6 100644 --- a/pkg/spaces/mocks/SpaceDeletedObserver.go +++ b/pkg/spaces/mocks/SpaceDeletedObserver.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.15.0. DO NOT EDIT. +// Code generated by mockery v2.40.3. DO NOT EDIT. package mocks @@ -18,6 +18,10 @@ type SpaceDeletedObserver struct { func (_m *SpaceDeletedObserver) OnSpaceDeleted(ctx context.Context, space *spaces.Space) error { ret := _m.Called(ctx, space) + if len(ret) == 0 { + panic("no return value specified for OnSpaceDeleted") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, *spaces.Space) error); ok { r0 = rf(ctx, space) @@ -28,13 +32,12 @@ func (_m *SpaceDeletedObserver) OnSpaceDeleted(ctx context.Context, space *space return r0 } -type mockConstructorTestingTNewSpaceDeletedObserver interface { +// NewSpaceDeletedObserver creates a new instance of SpaceDeletedObserver. 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 NewSpaceDeletedObserver(t interface { mock.TestingT Cleanup(func()) -} - -// NewSpaceDeletedObserver creates a new instance of SpaceDeletedObserver. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -func NewSpaceDeletedObserver(t mockConstructorTestingTNewSpaceDeletedObserver) *SpaceDeletedObserver { +}) *SpaceDeletedObserver { mock := &SpaceDeletedObserver{} mock.Mock.Test(t) diff --git a/pkg/spaces/mocks/SpaceObserver.go b/pkg/spaces/mocks/SpaceObserver.go index 9c5006bf..589a7755 100644 --- a/pkg/spaces/mocks/SpaceObserver.go +++ b/pkg/spaces/mocks/SpaceObserver.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.15.0. DO NOT EDIT. +// Code generated by mockery v2.40.3. DO NOT EDIT. package mocks @@ -9,13 +9,12 @@ type SpaceObserver struct { mock.Mock } -type mockConstructorTestingTNewSpaceObserver interface { +// NewSpaceObserver creates a new instance of SpaceObserver. 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 NewSpaceObserver(t interface { mock.TestingT Cleanup(func()) -} - -// NewSpaceObserver creates a new instance of SpaceObserver. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -func NewSpaceObserver(t mockConstructorTestingTNewSpaceObserver) *SpaceObserver { +}) *SpaceObserver { mock := &SpaceObserver{} mock.Mock.Test(t) diff --git a/pkg/spaces/mocks/SpaceUpdatedObserver.go b/pkg/spaces/mocks/SpaceUpdatedObserver.go index a7ced9b2..adfa9ea5 100644 --- a/pkg/spaces/mocks/SpaceUpdatedObserver.go +++ b/pkg/spaces/mocks/SpaceUpdatedObserver.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.15.0. DO NOT EDIT. +// Code generated by mockery v2.40.3. DO NOT EDIT. package mocks @@ -18,6 +18,10 @@ type SpaceUpdatedObserver struct { func (_m *SpaceUpdatedObserver) OnSpaceUpdated(ctx context.Context, before *spaces.Space, space *spaces.Space) error { ret := _m.Called(ctx, before, space) + if len(ret) == 0 { + panic("no return value specified for OnSpaceUpdated") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, *spaces.Space, *spaces.Space) error); ok { r0 = rf(ctx, before, space) @@ -28,13 +32,12 @@ func (_m *SpaceUpdatedObserver) OnSpaceUpdated(ctx context.Context, before *spac return r0 } -type mockConstructorTestingTNewSpaceUpdatedObserver interface { +// NewSpaceUpdatedObserver creates a new instance of SpaceUpdatedObserver. 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 NewSpaceUpdatedObserver(t interface { mock.TestingT Cleanup(func()) -} - -// NewSpaceUpdatedObserver creates a new instance of SpaceUpdatedObserver. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -func NewSpaceUpdatedObserver(t mockConstructorTestingTNewSpaceUpdatedObserver) *SpaceUpdatedObserver { +}) *SpaceUpdatedObserver { mock := &SpaceUpdatedObserver{} mock.Mock.Test(t) diff --git a/pkg/spaces/mocks/Spaces.go b/pkg/spaces/mocks/Spaces.go index 0f7a187f..5e67d52d 100644 --- a/pkg/spaces/mocks/Spaces.go +++ b/pkg/spaces/mocks/Spaces.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.27.1. DO NOT EDIT. +// Code generated by mockery v2.40.3. DO NOT EDIT. package mocks @@ -18,6 +18,10 @@ type Spaces struct { func (_m *Spaces) AbortTransfer(ctx context.Context, spaceID string) error { ret := _m.Called(ctx, spaceID) + if len(ret) == 0 { + panic("no return value specified for AbortTransfer") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, string) error); ok { r0 = rf(ctx, spaceID) @@ -32,6 +36,10 @@ func (_m *Spaces) AbortTransfer(ctx context.Context, spaceID string) error { func (_m *Spaces) Create(ctx context.Context, space *spaces.Space) (*spaces.Space, error) { ret := _m.Called(ctx, space) + if len(ret) == 0 { + panic("no return value specified for Create") + } + var r0 *spaces.Space var r1 error if rf, ok := ret.Get(0).(func(context.Context, *spaces.Space) (*spaces.Space, error)); ok { @@ -58,6 +66,10 @@ func (_m *Spaces) Create(ctx context.Context, space *spaces.Space) (*spaces.Spac func (_m *Spaces) Delete(ctx context.Context, spaceId string) error { ret := _m.Called(ctx, spaceId) + if len(ret) == 0 { + panic("no return value specified for Delete") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, string) error); ok { r0 = rf(ctx, spaceId) @@ -72,6 +84,10 @@ func (_m *Spaces) Delete(ctx context.Context, spaceId string) error { func (_m *Spaces) Get(ctx context.Context, spaceId string) (*spaces.Space, error) { ret := _m.Called(ctx, spaceId) + if len(ret) == 0 { + panic("no return value specified for Get") + } + var r0 *spaces.Space var r1 error if rf, ok := ret.Get(0).(func(context.Context, string) (*spaces.Space, error)); ok { @@ -98,6 +114,10 @@ func (_m *Spaces) Get(ctx context.Context, spaceId string) (*spaces.Space, error func (_m *Spaces) List(ctx context.Context, orgId string) ([]*spaces.Space, error) { ret := _m.Called(ctx, orgId) + if len(ret) == 0 { + panic("no return value specified for List") + } + var r0 []*spaces.Space var r1 error if rf, ok := ret.Get(0).(func(context.Context, string) ([]*spaces.Space, error)); ok { @@ -124,6 +144,10 @@ func (_m *Spaces) List(ctx context.Context, orgId string) ([]*spaces.Space, erro func (_m *Spaces) ListTransfers(ctx context.Context, orgID string) ([]*spaces.Space, error) { ret := _m.Called(ctx, orgID) + if len(ret) == 0 { + panic("no return value specified for ListTransfers") + } + var r0 []*spaces.Space var r1 error if rf, ok := ret.Get(0).(func(context.Context, string) ([]*spaces.Space, error)); ok { @@ -150,6 +174,10 @@ func (_m *Spaces) ListTransfers(ctx context.Context, orgID string) ([]*spaces.Sp func (_m *Spaces) Move(ctx context.Context, spaceID string, orgID string) error { ret := _m.Called(ctx, spaceID, orgID) + if len(ret) == 0 { + panic("no return value specified for Move") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok { r0 = rf(ctx, spaceID, orgID) @@ -160,10 +188,32 @@ func (_m *Spaces) Move(ctx context.Context, spaceID string, orgID string) error return r0 } +// SetState provides a mock function with given fields: ctx, spaceID, state +func (_m *Spaces) SetState(ctx context.Context, spaceID string, state *spaces.StateInfo) error { + ret := _m.Called(ctx, spaceID, state) + + if len(ret) == 0 { + panic("no return value specified for SetState") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, string, *spaces.StateInfo) error); ok { + r0 = rf(ctx, spaceID, state) + } else { + r0 = ret.Error(0) + } + + return r0 +} + // Transfer provides a mock function with given fields: ctx, spaceID, transferToOrg func (_m *Spaces) Transfer(ctx context.Context, spaceID string, transferToOrg string) error { ret := _m.Called(ctx, spaceID, transferToOrg) + if len(ret) == 0 { + panic("no return value specified for Transfer") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok { r0 = rf(ctx, spaceID, transferToOrg) @@ -178,6 +228,10 @@ func (_m *Spaces) Transfer(ctx context.Context, spaceID string, transferToOrg st func (_m *Spaces) Update(ctx context.Context, space *spaces.Space) error { ret := _m.Called(ctx, space) + if len(ret) == 0 { + panic("no return value specified for Update") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, *spaces.Space) error); ok { r0 = rf(ctx, space) @@ -192,6 +246,10 @@ func (_m *Spaces) Update(ctx context.Context, space *spaces.Space) error { func (_m *Spaces) UpdateConfig(ctx context.Context, spaceId string, config *spaces.Config) error { ret := _m.Called(ctx, spaceId, config) + if len(ret) == 0 { + panic("no return value specified for UpdateConfig") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, string, *spaces.Config) error); ok { r0 = rf(ctx, spaceId, config) @@ -202,13 +260,12 @@ func (_m *Spaces) UpdateConfig(ctx context.Context, spaceId string, config *spac return r0 } -type mockConstructorTestingTNewSpaces interface { +// NewSpaces creates a new instance of Spaces. 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 NewSpaces(t interface { mock.TestingT Cleanup(func()) -} - -// NewSpaces creates a new instance of Spaces. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -func NewSpaces(t mockConstructorTestingTNewSpaces) *Spaces { +}) *Spaces { mock := &Spaces{} mock.Mock.Test(t) diff --git a/pkg/spaces/mocks/Storage.go b/pkg/spaces/mocks/Storage.go index 0f61e8c4..078993ce 100644 --- a/pkg/spaces/mocks/Storage.go +++ b/pkg/spaces/mocks/Storage.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.27.1. DO NOT EDIT. +// Code generated by mockery v2.40.3. DO NOT EDIT. package mocks @@ -20,6 +20,10 @@ type Storage struct { func (_m *Storage) Create(ctx context.Context, space *spaces.Space) error { ret := _m.Called(ctx, space) + if len(ret) == 0 { + panic("no return value specified for Create") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context, *spaces.Space) error); ok { r0 = rf(ctx, space) @@ -34,6 +38,10 @@ func (_m *Storage) Create(ctx context.Context, space *spaces.Space) error { func (_m *Storage) Delete(ctx context.Context, filter *spaces.Filter) (int, error) { ret := _m.Called(ctx, filter) + if len(ret) == 0 { + panic("no return value specified for Delete") + } + var r0 int var r1 error if rf, ok := ret.Get(0).(func(context.Context, *spaces.Filter) (int, error)); ok { @@ -58,6 +66,10 @@ func (_m *Storage) Delete(ctx context.Context, filter *spaces.Filter) (int, erro func (_m *Storage) Find(ctx context.Context, filter *spaces.Filter, opts *options.FindOptions) ([]*spaces.Space, int, error) { ret := _m.Called(ctx, filter, opts) + if len(ret) == 0 { + panic("no return value specified for Find") + } + var r0 []*spaces.Space var r1 int var r2 error @@ -91,6 +103,10 @@ func (_m *Storage) Find(ctx context.Context, filter *spaces.Filter, opts *option func (_m *Storage) Init(ctx context.Context) error { ret := _m.Called(ctx) + if len(ret) == 0 { + panic("no return value specified for Init") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context) error); ok { r0 = rf(ctx) @@ -105,6 +121,10 @@ func (_m *Storage) Init(ctx context.Context) error { func (_m *Storage) Reset(ctx context.Context) error { ret := _m.Called(ctx) + if len(ret) == 0 { + panic("no return value specified for Reset") + } + var r0 error if rf, ok := ret.Get(0).(func(context.Context) error); ok { r0 = rf(ctx) @@ -119,6 +139,10 @@ func (_m *Storage) Reset(ctx context.Context) error { func (_m *Storage) Update(ctx context.Context, update *spaces.Space, filter *spaces.Filter) (int, int, error) { ret := _m.Called(ctx, update, filter) + if len(ret) == 0 { + panic("no return value specified for Update") + } + var r0 int var r1 int var r2 error @@ -146,13 +170,12 @@ func (_m *Storage) Update(ctx context.Context, update *spaces.Space, filter *spa return r0, r1, r2 } -type mockConstructorTestingTNewStorage interface { +// NewStorage creates a new instance of Storage. 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 NewStorage(t interface { mock.TestingT Cleanup(func()) -} - -// NewStorage creates a new instance of Storage. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -func NewStorage(t mockConstructorTestingTNewStorage) *Storage { +}) *Storage { mock := &Storage{} mock.Mock.Test(t) diff --git a/pkg/spaces/service.go b/pkg/spaces/service.go index 40c6bd9e..1877e468 100644 --- a/pkg/spaces/service.go +++ b/pkg/spaces/service.go @@ -28,6 +28,9 @@ type Spaces interface { List(ctx context.Context, orgId string) (spaces []*Space, err error) Update(ctx context.Context, space *Space) (err error) UpdateConfig(ctx context.Context, spaceId string, config *Config) (err error) + + // @microgen - + SetState(ctx context.Context, spaceID string, state *StateInfo) (err error) Delete(ctx context.Context, spaceId string) (err error) // Transfer устанавливает для пространства значение поля RequestedMoveTo. После этого пространство diff --git a/pkg/spaces/space.go b/pkg/spaces/space.go index 83edb3f1..482a953b 100644 --- a/pkg/spaces/space.go +++ b/pkg/spaces/space.go @@ -15,8 +15,29 @@ const ( StateError // Произошла ошибка при конфигурации пространства (см. Space.Error) ) +func (s State) String() string { + switch s { + case StateNew: + return "New" + case StateReady: + return "Ready" + case StatePreparing: + return "Preparing" + case StateMaintenance: + return "Maintenance" + case StateMigration: + return "Migration" + case StateDeleting: + return "Deleting" + case StateError: + return "Error" + default: + return "Unknown" + } +} + type Config struct { - Features []string //Deprecated Возможности используемые пространством + Features []string // Deprecated Возможности используемые пространством } const StateInfoEmpty = "EMPTY" @@ -42,4 +63,4 @@ type StateInfo struct { func (s Space) Clone() *Space { return &s -} \ No newline at end of file +} diff --git a/pkg/spaces/transport/client.go b/pkg/spaces/transport/client.go index 26900dad..f7f2edcd 100644 --- a/pkg/spaces/transport/client.go +++ b/pkg/spaces/transport/client.go @@ -56,6 +56,10 @@ func (set EndpointsSet) UpdateConfig(arg0 context.Context, arg1 string, arg2 *sp return res0 } +func (set EndpointsSet) SetState(arg0 context.Context, arg1 string, arg2 *spaces.StateInfo) (res0 error) { + return +} + func (set EndpointsSet) Delete(arg0 context.Context, arg1 string) (res0 error) { request := DeleteRequest{SpaceId: arg1} _, res0 = set.DeleteEndpoint(arg0, &request) -- GitLab