From a1bfcdc74a0e0fecf83b8f2aa40a85dbe422fa55 Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Wed, 26 May 2021 14:08:24 +0300 Subject: [PATCH] [#525] v2/container: Write session token from header to removal witness If container is removed via session, then session token should be included in removal witness. Write session token from request meta header to `container.RemovalWitness` structure which is passed to `wrapper.Delete` function. Signed-off-by: Leonard Lyubich --- pkg/services/container/executor.go | 4 ++-- pkg/services/container/morph/executor.go | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/services/container/executor.go b/pkg/services/container/executor.go index 0c73cc75b..cb25d9695 100644 --- a/pkg/services/container/executor.go +++ b/pkg/services/container/executor.go @@ -17,7 +17,7 @@ type ContextWithToken struct { type ServiceExecutor interface { Put(ContextWithToken, *container.PutRequestBody) (*container.PutResponseBody, error) - Delete(context.Context, *container.DeleteRequestBody) (*container.DeleteResponseBody, error) + Delete(ContextWithToken, *container.DeleteRequestBody) (*container.DeleteResponseBody, error) Get(context.Context, *container.GetRequestBody) (*container.GetResponseBody, error) List(context.Context, *container.ListRequestBody) (*container.ListResponseBody, error) SetExtendedACL(ContextWithToken, *container.SetExtendedACLRequestBody) (*container.SetExtendedACLResponseBody, error) @@ -65,7 +65,7 @@ func (s *executorSvc) Put(ctx context.Context, req *container.PutRequest) (*cont } func (s *executorSvc) Delete(ctx context.Context, req *container.DeleteRequest) (*container.DeleteResponse, error) { - respBody, err := s.exec.Delete(ctx, req.GetBody()) + respBody, err := s.exec.Delete(contextWithTokenFromRequest(ctx, req), req.GetBody()) if err != nil { return nil, fmt.Errorf("could not execute Delete request: %w", err) } diff --git a/pkg/services/container/morph/executor.go b/pkg/services/container/morph/executor.go index d51519b7e..a85b9c2af 100644 --- a/pkg/services/container/morph/executor.go +++ b/pkg/services/container/morph/executor.go @@ -51,14 +51,16 @@ func (s *morphExecutor) Put(ctx containerSvc.ContextWithToken, body *container.P return res, nil } -func (s *morphExecutor) Delete(ctx context.Context, body *container.DeleteRequestBody) (*container.DeleteResponseBody, error) { +func (s *morphExecutor) Delete(ctx containerSvc.ContextWithToken, body *container.DeleteRequestBody) (*container.DeleteResponseBody, error) { cid := containerSDK.NewIDFromV2(body.GetContainerID()) sig := body.GetSignature().GetSign() + tok := session.NewTokenFromV2(ctx.SessionToken) var rmWitness containercore.RemovalWitness rmWitness.SetContainerID(cid) rmWitness.SetSignature(sig) + rmWitness.SetSessionToken(tok) err := wrapper.Delete(s.wrapper, rmWitness) if err != nil {