diff --git a/packages/api/internal/handlers/volume_create.go b/packages/api/internal/handlers/volume_create.go index c61e3638ef..191256b1b1 100644 --- a/packages/api/internal/handlers/volume_create.go +++ b/packages/api/internal/handlers/volume_create.go @@ -174,7 +174,7 @@ func isValidVolumeName(name string) bool { func (a *APIStore) createVolume(ctx context.Context, clusterID uuid.UUID, volume queries.Volume) error { return a.executeOnOrchestratorByClusterID(ctx, clusterID, func(ctx context.Context, client *clusters.GRPCClient) error { - _, err := client.Volumes.Create(ctx, &orchestrator.VolumeCreateRequest{ + _, err := client.Volumes.CreateVolume(ctx, &orchestrator.CreateVolumeRequest{ Volume: toVolumeKey(volume), }) diff --git a/packages/api/internal/handlers/volume_delete.go b/packages/api/internal/handlers/volume_delete.go index a0b0fce54d..821f2839eb 100644 --- a/packages/api/internal/handlers/volume_delete.go +++ b/packages/api/internal/handlers/volume_delete.go @@ -48,7 +48,7 @@ func (a *APIStore) DeleteVolumesVolumeID(c *gin.Context, volumeID api.VolumeID) func (a *APIStore) deleteVolume(ctx context.Context, clusterID uuid.UUID, volume queries.Volume) error { return a.executeOnOrchestratorByClusterID(ctx, clusterID, func(ctx context.Context, client *clusters.GRPCClient) error { - _, err := client.Volumes.Delete(ctx, &orchestrator.VolumeDeleteRequest{ + _, err := client.Volumes.DeleteVolume(ctx, &orchestrator.DeleteVolumeRequest{ Volume: toVolumeKey(volume), }) diff --git a/packages/orchestrator/pkg/volumes/dir_create.go b/packages/orchestrator/pkg/volumes/dir_create.go index 9cff863ffc..f6f10a803b 100644 --- a/packages/orchestrator/pkg/volumes/dir_create.go +++ b/packages/orchestrator/pkg/volumes/dir_create.go @@ -16,7 +16,7 @@ import ( "github.com/e2b-dev/infra/packages/shared/pkg/utils" ) -func (s *Service) CreateDir(ctx context.Context, request *orchestrator.VolumeDirCreateRequest) (r *orchestrator.VolumeDirCreateResponse, err error) { +func (s *Service) CreateDir(ctx context.Context, request *orchestrator.CreateDirRequest) (r *orchestrator.CreateDirResponse, err error) { ctx, span := tracer.Start(ctx, "create directory in volume") defer func() { setSpanStatus(span, err) @@ -82,7 +82,7 @@ func (s *Service) CreateDir(ctx context.Context, request *orchestrator.VolumeDir entry := toEntry(path, stat) - return &orchestrator.VolumeDirCreateResponse{Entry: entry}, nil + return &orchestrator.CreateDirResponse{Entry: entry}, nil } func processError(ctx context.Context, s string, err error) error { diff --git a/packages/orchestrator/pkg/volumes/dir_create_test.go b/packages/orchestrator/pkg/volumes/dir_create_test.go index b36595b9d1..b1d403133c 100644 --- a/packages/orchestrator/pkg/volumes/dir_create_test.go +++ b/packages/orchestrator/pkg/volumes/dir_create_test.go @@ -22,7 +22,7 @@ func TestDirCreate(t *testing.T) { t.Parallel() dirname := "test-dir" - _, err := s.CreateDir(t.Context(), &orchestrator.VolumeDirCreateRequest{ + _, err := s.CreateDir(t.Context(), &orchestrator.CreateDirRequest{ Volume: volumeInfo, Path: dirname, }) @@ -37,7 +37,7 @@ func TestDirCreate(t *testing.T) { t.Parallel() dirname := "parent/child" - _, err := s.CreateDir(t.Context(), &orchestrator.VolumeDirCreateRequest{ + _, err := s.CreateDir(t.Context(), &orchestrator.CreateDirRequest{ Volume: volumeInfo, Path: dirname, CreateParents: true, @@ -53,7 +53,7 @@ func TestDirCreate(t *testing.T) { t.Parallel() dirname := "another-parent/child" - _, err := s.CreateDir(t.Context(), &orchestrator.VolumeDirCreateRequest{ + _, err := s.CreateDir(t.Context(), &orchestrator.CreateDirRequest{ Volume: volumeInfo, Path: dirname, CreateParents: false, @@ -69,7 +69,7 @@ func TestDirCreate(t *testing.T) { uid := uint32(1000) gid := uint32(1000) - _, err := s.CreateDir(t.Context(), &orchestrator.VolumeDirCreateRequest{ + _, err := s.CreateDir(t.Context(), &orchestrator.CreateDirRequest{ Volume: volumeInfo, Path: dirname, Mode: utils.ToPtr(mode), @@ -90,7 +90,7 @@ func TestDirCreate(t *testing.T) { err := os.Mkdir(filepath.Join(tmpdir, dirname), 0o755) require.NoError(t, err) - _, err = s.CreateDir(t.Context(), &orchestrator.VolumeDirCreateRequest{ + _, err = s.CreateDir(t.Context(), &orchestrator.CreateDirRequest{ Volume: volumeInfo, Path: dirname, }) @@ -105,7 +105,7 @@ func TestDirCreate(t *testing.T) { err := os.WriteFile(fullPath, []byte("test"), 0o644) require.NoError(t, err) - _, err = s.CreateDir(t.Context(), &orchestrator.VolumeDirCreateRequest{ + _, err = s.CreateDir(t.Context(), &orchestrator.CreateDirRequest{ Volume: volumeInfo, Path: filename, CreateParents: true, @@ -133,7 +133,7 @@ func TestDirCreate(t *testing.T) { // Now call CreateDir with CreateParents=true and a different mode newMode := uint32(0o777) - request := &orchestrator.VolumeDirCreateRequest{ + request := &orchestrator.CreateDirRequest{ Volume: volumeInfo, Path: dirname, CreateParents: true, diff --git a/packages/orchestrator/pkg/volumes/dir_delete.go b/packages/orchestrator/pkg/volumes/dir_delete.go deleted file mode 100644 index 62701eef69..0000000000 --- a/packages/orchestrator/pkg/volumes/dir_delete.go +++ /dev/null @@ -1,67 +0,0 @@ -package volumes - -import ( - "context" - "fmt" - "net/http" - "os" - - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/trace" - "google.golang.org/grpc/codes" - - "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" -) - -func (s *Service) DeleteDir(ctx context.Context, request *orchestrator.VolumeDirDeleteRequest) (r *orchestrator.VolumeDirDeleteResponse, err error) { - ctx, span := tracer.Start(ctx, "delete directory in volume") - defer func() { - setSpanStatus(span, err) - span.End() - }() - - fs, path, errResponse := s.getFilesystemAndPath(ctx, request) - if errResponse != nil { - return nil, errResponse.Err() - } - defer fs.Close() - - if s.isRoot(path) { - return nil, newAPIError(ctx, - codes.InvalidArgument, - http.StatusBadRequest, - orchestrator.UserErrorCode_CANNOT_DELETE_ROOT, - "cannot delete root directory", - ).Err() - } - - span.AddEvent("removing directory", trace.WithAttributes( - attribute.String("path", path), - )) - - if _, err := fs.Stat(path); err != nil { - if os.IsNotExist(err) { - return nil, newAPIError(ctx, - codes.NotFound, - http.StatusNotFound, - orchestrator.UserErrorCode_PATH_NOT_FOUND, - "failed to delete: %q not found.", - request.GetPath(), - ).Err() - } - - return nil, newAPIError(ctx, - codes.Internal, - http.StatusInternalServerError, - orchestrator.UserErrorCode_UNKNOWN_USER_ERROR_CODE, - "failed to stat directory", - ).Err() - } - - // we can skip the "is not exist" errors, b/c that's what we're trying to do anyway - if err := fs.RemoveAll(path); err != nil && !os.IsNotExist(err) { - return nil, fmt.Errorf("failed to delete directory: %w", err) - } - - return &orchestrator.VolumeDirDeleteResponse{}, nil -} diff --git a/packages/orchestrator/pkg/volumes/dir_delete_test.go b/packages/orchestrator/pkg/volumes/dir_delete_test.go deleted file mode 100644 index ddb2a9b4a1..0000000000 --- a/packages/orchestrator/pkg/volumes/dir_delete_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package volumes - -import ( - "os" - "path/filepath" - "testing" - - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" -) - -func TestDirDelete(t *testing.T) { - t.Parallel() - - s, tmpdir, volumeInfo := setupTestService(t) - - dirname := "test-dir" - - t.Run("delete dir", func(t *testing.T) { - t.Parallel() - - // create directory - err := os.Mkdir(filepath.Join(tmpdir, dirname), 0o755) - require.NoError(t, err) - - // delete directory - _, err = s.DeleteDir(t.Context(), &orchestrator.VolumeDirDeleteRequest{ - Volume: volumeInfo, - Path: dirname, - }) - require.NoError(t, err) - - // verify the directory is gone - _, err = os.Stat(filepath.Join(tmpdir, dirname)) - require.ErrorIs(t, err, os.ErrNotExist) - }) - - t.Run("delete non-existent dir", func(t *testing.T) { - t.Parallel() - - _, err := s.DeleteDir(t.Context(), &orchestrator.VolumeDirDeleteRequest{ - Volume: volumeInfo, - Path: "non-existent-dir", - }) - - requireGRPCError(t, err, codes.NotFound, orchestrator.UserErrorCode_PATH_NOT_FOUND) - }) -} - -func requireGRPCError(t *testing.T, err error, expectedGRPCCode codes.Code, expectedUserErrorCode orchestrator.UserErrorCode) { - t.Helper() - - require.Error(t, err) - - status, ok := status.FromError(err) - require.Truef(t, ok, "expected error to be a gRPC status error, got %T: %s", err, err.Error()) - - require.Equalf(t, expectedGRPCCode, status.Code(), "expected %s, got %s", expectedGRPCCode, status.Code()) - - for _, detail := range status.Details() { - if userError, ok := detail.(*orchestrator.UserError); ok { - require.Equalf(t, expectedUserErrorCode, userError.GetCode(), "expected %s, got %s", expectedUserErrorCode, userError.GetCode()) - - return - } - } - - require.Fail(t, "expected UserError detail not found") -} diff --git a/packages/orchestrator/pkg/volumes/dir_list.go b/packages/orchestrator/pkg/volumes/dir_list.go index ecad42f21d..f77141c311 100644 --- a/packages/orchestrator/pkg/volumes/dir_list.go +++ b/packages/orchestrator/pkg/volumes/dir_list.go @@ -25,8 +25,8 @@ const ( func (s *Service) ListDir( ctx context.Context, - request *orchestrator.VolumeDirListRequest, -) (r *orchestrator.VolumeDirListResponse, err error) { + request *orchestrator.ListDirRequest, +) (r *orchestrator.ListDirResponse, err error) { ctx, span := tracer.Start(ctx, "list directory in volume") defer func() { setSpanStatus(span, err) @@ -70,7 +70,7 @@ func (s *Service) ListDir( return nil, fmt.Errorf("failed to read directory %q: %w", path, err) } - return &orchestrator.VolumeDirListResponse{Files: results}, nil + return &orchestrator.ListDirResponse{Files: results}, nil } func (s *Service) listRecursive( diff --git a/packages/orchestrator/pkg/volumes/dir_list_test.go b/packages/orchestrator/pkg/volumes/dir_list_test.go index aeaa7939e9..52f15f926e 100644 --- a/packages/orchestrator/pkg/volumes/dir_list_test.go +++ b/packages/orchestrator/pkg/volumes/dir_list_test.go @@ -40,7 +40,7 @@ func TestListDir_Depth(t *testing.T) { t.Run("depth 0", func(t *testing.T) { t.Parallel() - req := &orchestrator.VolumeDirListRequest{ + req := &orchestrator.ListDirRequest{ Volume: volumeInfo, Path: "dir", Depth: 0, @@ -56,7 +56,7 @@ func TestListDir_Depth(t *testing.T) { t.Run("depth 1", func(t *testing.T) { t.Parallel() - req := &orchestrator.VolumeDirListRequest{ + req := &orchestrator.ListDirRequest{ Volume: volumeInfo, Path: "dir", Depth: 1, @@ -72,7 +72,7 @@ func TestListDir_Depth(t *testing.T) { t.Run("depth 2", func(t *testing.T) { t.Parallel() - req := &orchestrator.VolumeDirListRequest{ + req := &orchestrator.ListDirRequest{ Volume: volumeInfo, Path: "dir", Depth: 2, @@ -88,7 +88,7 @@ func TestListDir_Depth(t *testing.T) { t.Run("list non-existent dir", func(t *testing.T) { t.Parallel() - req := &orchestrator.VolumeDirListRequest{ + req := &orchestrator.ListDirRequest{ Volume: volumeInfo, Path: "non-existent-dir", } @@ -99,7 +99,7 @@ func TestListDir_Depth(t *testing.T) { t.Run("list depth out of range", func(t *testing.T) { t.Parallel() - req := &orchestrator.VolumeDirListRequest{ + req := &orchestrator.ListDirRequest{ Volume: volumeInfo, Path: "dir", Depth: 11, diff --git a/packages/orchestrator/pkg/volumes/file_create.go b/packages/orchestrator/pkg/volumes/file_create.go index dc5c8b99e5..7156b2c428 100644 --- a/packages/orchestrator/pkg/volumes/file_create.go +++ b/packages/orchestrator/pkg/volumes/file_create.go @@ -86,12 +86,12 @@ func (s *Service) CreateFile(server orchestrator.VolumeService_CreateFileServer) } switch m := req.GetMessage().(type) { - case *orchestrator.VolumeFileCreateRequest_Content: + case *orchestrator.CreateFileRequest_Content: if _, err := file.Write(m.Content.GetContent()); err != nil { return fmt.Errorf("failed to write file content: %w", err) } - case *orchestrator.VolumeFileCreateRequest_Finish: + case *orchestrator.CreateFileRequest_Finish: if err = file.Sync(); err != nil { return fmt.Errorf("failed to sync file to disk: %w", err) } @@ -112,7 +112,7 @@ func (s *Service) CreateFile(server orchestrator.VolumeService_CreateFileServer) entry := toEntry(path, fi) - return server.SendAndClose(&orchestrator.VolumeFileCreateResponse{ + return server.SendAndClose(&orchestrator.CreateFileResponse{ Entry: entry, }) diff --git a/packages/orchestrator/pkg/volumes/file_create_test.go b/packages/orchestrator/pkg/volumes/file_create_test.go index 1de62ba115..fd036d3f2e 100644 --- a/packages/orchestrator/pkg/volumes/file_create_test.go +++ b/packages/orchestrator/pkg/volumes/file_create_test.go @@ -19,16 +19,16 @@ type mockCreateFileServer struct { mock.Mock } -func (m *mockCreateFileServer) Recv() (*orchestrator.VolumeFileCreateRequest, error) { +func (m *mockCreateFileServer) Recv() (*orchestrator.CreateFileRequest, error) { args := m.Called() if args.Get(0) == nil { return nil, args.Error(1) } - return args.Get(0).(*orchestrator.VolumeFileCreateRequest), args.Error(1) + return args.Get(0).(*orchestrator.CreateFileRequest), args.Error(1) } -func (m *mockCreateFileServer) SendAndClose(resp *orchestrator.VolumeFileCreateResponse) error { +func (m *mockCreateFileServer) SendAndClose(resp *orchestrator.CreateFileResponse) error { args := m.Called(resp) return args.Error(0) @@ -53,8 +53,8 @@ func TestFileCreate(t *testing.T) { mockServer.On("Context").Return(t.Context()) // 1. Send Start - mockServer.On("Recv").Return(&orchestrator.VolumeFileCreateRequest{ - Message: &orchestrator.VolumeFileCreateRequest_Start{ + mockServer.On("Recv").Return(&orchestrator.CreateFileRequest{ + Message: &orchestrator.CreateFileRequest_Start{ Start: &orchestrator.VolumeFileCreateStart{ Volume: volumeInfo, Path: filename, @@ -63,8 +63,8 @@ func TestFileCreate(t *testing.T) { }, nil).Once() // 2. Send Content - mockServer.On("Recv").Return(&orchestrator.VolumeFileCreateRequest{ - Message: &orchestrator.VolumeFileCreateRequest_Content{ + mockServer.On("Recv").Return(&orchestrator.CreateFileRequest{ + Message: &orchestrator.CreateFileRequest_Content{ Content: &orchestrator.VolumeFileCreateContent{ Content: []byte("hello world"), }, @@ -72,8 +72,8 @@ func TestFileCreate(t *testing.T) { }, nil).Once() // 3. Send Finish - mockServer.On("Recv").Return(&orchestrator.VolumeFileCreateRequest{ - Message: &orchestrator.VolumeFileCreateRequest_Finish{ + mockServer.On("Recv").Return(&orchestrator.CreateFileRequest{ + Message: &orchestrator.CreateFileRequest_Finish{ Finish: &orchestrator.VolumeFileCreateFinish{}, }, }, nil).Once() @@ -96,8 +96,8 @@ func TestFileCreate(t *testing.T) { mockServer := &mockCreateFileServer{} mockServer.On("Context").Return(t.Context()) - mockServer.On("Recv").Return(&orchestrator.VolumeFileCreateRequest{ - Message: &orchestrator.VolumeFileCreateRequest_Start{ + mockServer.On("Recv").Return(&orchestrator.CreateFileRequest{ + Message: &orchestrator.CreateFileRequest_Start{ Start: &orchestrator.VolumeFileCreateStart{ Volume: volumeInfo, Path: filename, @@ -106,8 +106,8 @@ func TestFileCreate(t *testing.T) { }, }, nil).Once() - mockServer.On("Recv").Return(&orchestrator.VolumeFileCreateRequest{ - Message: &orchestrator.VolumeFileCreateRequest_Finish{ + mockServer.On("Recv").Return(&orchestrator.CreateFileRequest{ + Message: &orchestrator.CreateFileRequest_Finish{ Finish: &orchestrator.VolumeFileCreateFinish{}, }, }, nil).Once() diff --git a/packages/orchestrator/pkg/volumes/file_delete_test.go b/packages/orchestrator/pkg/volumes/file_delete_test.go deleted file mode 100644 index 50e67fe7fb..0000000000 --- a/packages/orchestrator/pkg/volumes/file_delete_test.go +++ /dev/null @@ -1,55 +0,0 @@ -package volumes - -import ( - "os" - "path/filepath" - "testing" - - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - - "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" -) - -func TestFileDelete(t *testing.T) { - t.Parallel() - - s, tmpdir, volumeInfo := setupTestService(t) - - t.Run("delete file", func(t *testing.T) { - t.Parallel() - - filename := "test-delete.txt" - err := os.WriteFile(filepath.Join(tmpdir, filename), []byte("test"), 0o644) - require.NoError(t, err) - - _, err = s.DeleteFile(t.Context(), &orchestrator.VolumeFileDeleteRequest{ - Volume: volumeInfo, - Path: filename, - }) - require.NoError(t, err) - - _, err = os.Stat(filepath.Join(tmpdir, filename)) - require.ErrorIs(t, err, os.ErrNotExist) - }) - - t.Run("delete non-existent file", func(t *testing.T) { - t.Parallel() - - _, err := s.DeleteFile(t.Context(), &orchestrator.VolumeFileDeleteRequest{ - Volume: volumeInfo, - Path: "non-existent-file", - }) - requireGRPCError(t, err, codes.NotFound, orchestrator.UserErrorCode_PATH_NOT_FOUND) - }) - - t.Run("delete root (should fail)", func(t *testing.T) { - t.Parallel() - - _, err := s.DeleteFile(t.Context(), &orchestrator.VolumeFileDeleteRequest{ - Volume: volumeInfo, - Path: "/", - }) - requireGRPCError(t, err, codes.InvalidArgument, orchestrator.UserErrorCode_CANNOT_DELETE_ROOT) - }) -} diff --git a/packages/orchestrator/pkg/volumes/file_get.go b/packages/orchestrator/pkg/volumes/file_get.go index 08d0079008..82807208a2 100644 --- a/packages/orchestrator/pkg/volumes/file_get.go +++ b/packages/orchestrator/pkg/volumes/file_get.go @@ -13,7 +13,7 @@ import ( const fileStreamChunkSize = 1024 * 1024 // 1MB -func (s *Service) GetFile(request *orchestrator.VolumeFileGetRequest, server orchestrator.VolumeService_GetFileServer) (err error) { +func (s *Service) GetFile(request *orchestrator.GetFileRequest, server orchestrator.VolumeService_GetFileServer) (err error) { ctx, span := tracer.Start(server.Context(), "get file from volume") defer func() { setSpanStatus(span, err) @@ -45,8 +45,8 @@ func (s *Service) GetFile(request *orchestrator.VolumeFileGetRequest, server orc span.AddEvent("sending file start", trace.WithAttributes( attribute.Int64("size", info.Size()), )) - if err := server.Send(&orchestrator.VolumeFileGetResponse{ - Message: &orchestrator.VolumeFileGetResponse_Start{ + if err := server.Send(&orchestrator.GetFileResponse{ + Message: &orchestrator.GetFileResponse_Start{ Start: &orchestrator.VolumeFileGetResponseStart{ Size: info.Size(), }, @@ -63,8 +63,8 @@ func (s *Service) GetFile(request *orchestrator.VolumeFileGetRequest, server orc span.AddEvent("send file chunk", trace.WithAttributes( attribute.Int("size", n), )) - if err := server.Send(&orchestrator.VolumeFileGetResponse{ - Message: &orchestrator.VolumeFileGetResponse_Content{ + if err := server.Send(&orchestrator.GetFileResponse{ + Message: &orchestrator.GetFileResponse_Content{ Content: &orchestrator.VolumeFileGetResponseContent{ Content: buf[:n], }, @@ -87,8 +87,8 @@ func (s *Service) GetFile(request *orchestrator.VolumeFileGetRequest, server orc break } - if err := server.Send(&orchestrator.VolumeFileGetResponse{ - Message: &orchestrator.VolumeFileGetResponse_Finish{ + if err := server.Send(&orchestrator.GetFileResponse{ + Message: &orchestrator.GetFileResponse_Finish{ Finish: &orchestrator.VolumeFileGetResponseFinish{}, }, }); err != nil { diff --git a/packages/orchestrator/pkg/volumes/file_get_test.go b/packages/orchestrator/pkg/volumes/file_get_test.go index 0bbb68ceac..33db0c1ef8 100644 --- a/packages/orchestrator/pkg/volumes/file_get_test.go +++ b/packages/orchestrator/pkg/volumes/file_get_test.go @@ -18,7 +18,7 @@ type mockGetFileServer struct { mock.Mock } -func (m *mockGetFileServer) Send(resp *orchestrator.VolumeFileGetResponse) error { +func (m *mockGetFileServer) Send(resp *orchestrator.GetFileResponse) error { args := m.Called(resp) return args.Error(0) @@ -47,15 +47,15 @@ func TestFileGet(t *testing.T) { mockServer.On("Context").Return(t.Context()) // Expect Start message - mockServer.On("Send", mock.MatchedBy(func(resp *orchestrator.VolumeFileGetResponse) bool { - _, ok := resp.GetMessage().(*orchestrator.VolumeFileGetResponse_Start) + mockServer.On("Send", mock.MatchedBy(func(resp *orchestrator.GetFileResponse) bool { + _, ok := resp.GetMessage().(*orchestrator.GetFileResponse_Start) return ok })).Return(nil).Once() // Expect Content message(s) - mockServer.On("Send", mock.MatchedBy(func(resp *orchestrator.VolumeFileGetResponse) bool { - c, ok := resp.GetMessage().(*orchestrator.VolumeFileGetResponse_Content) + mockServer.On("Send", mock.MatchedBy(func(resp *orchestrator.GetFileResponse) bool { + c, ok := resp.GetMessage().(*orchestrator.GetFileResponse_Content) if !ok { return false } @@ -64,13 +64,13 @@ func TestFileGet(t *testing.T) { })).Return(nil).Once() // Expect Finish message - mockServer.On("Send", mock.MatchedBy(func(resp *orchestrator.VolumeFileGetResponse) bool { - _, ok := resp.GetMessage().(*orchestrator.VolumeFileGetResponse_Finish) + mockServer.On("Send", mock.MatchedBy(func(resp *orchestrator.GetFileResponse) bool { + _, ok := resp.GetMessage().(*orchestrator.GetFileResponse_Finish) return ok })).Return(nil).Once() - err = s.GetFile(&orchestrator.VolumeFileGetRequest{ + err = s.GetFile(&orchestrator.GetFileRequest{ Volume: volumeInfo, Path: filename, }, mockServer) @@ -85,7 +85,7 @@ func TestFileGet(t *testing.T) { mockServer := &mockGetFileServer{} mockServer.On("Context").Return(t.Context()) - err := s.GetFile(&orchestrator.VolumeFileGetRequest{ + err := s.GetFile(&orchestrator.GetFileRequest{ Volume: volumeInfo, Path: "non-existent", }, mockServer) diff --git a/packages/orchestrator/pkg/volumes/file_update_test.go b/packages/orchestrator/pkg/volumes/file_update_test.go deleted file mode 100644 index 255d43fd26..0000000000 --- a/packages/orchestrator/pkg/volumes/file_update_test.go +++ /dev/null @@ -1,69 +0,0 @@ -package volumes - -import ( - "os" - "path/filepath" - "testing" - - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - - "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" -) - -func TestFileUpdateMetadata(t *testing.T) { - t.Parallel() - - s, tmpdir, volumeInfo := setupTestService(t) - - t.Run("update mode", func(t *testing.T) { - t.Parallel() - - filename := "test-update-mode.txt" - err := os.WriteFile(filepath.Join(tmpdir, filename), []byte("test"), 0o644) - require.NoError(t, err) - - newMode := uint32(0o755) - _, err = s.UpdateFileMetadata(t.Context(), &orchestrator.VolumeFileUpdateRequest{ - Volume: volumeInfo, - Path: filename, - Mode: &newMode, - }) - require.NoError(t, err) - - fi, err := os.Stat(filepath.Join(tmpdir, filename)) - require.NoError(t, err) - require.Equal(t, os.FileMode(newMode), fi.Mode().Perm()) - }) - - t.Run("update uid/gid", func(t *testing.T) { - t.Parallel() - - filename := "test-update-owner.txt" - err := os.WriteFile(filepath.Join(tmpdir, filename), []byte("test"), 0o644) - require.NoError(t, err) - - newUid := uint32(1001) - newGid := uint32(1001) - _, err = s.UpdateFileMetadata(t.Context(), &orchestrator.VolumeFileUpdateRequest{ - Volume: volumeInfo, - Path: filename, - Uid: &newUid, - Gid: &newGid, - }) - require.NoError(t, err) - // Ownership check would ideally be here if we were running as root. - }) - - t.Run("update non-existent file", func(t *testing.T) { - t.Parallel() - - newMode := uint32(0o755) - _, err := s.UpdateFileMetadata(t.Context(), &orchestrator.VolumeFileUpdateRequest{ - Volume: volumeInfo, - Path: "non-existent", - Mode: &newMode, - }) - requireGRPCError(t, err, codes.NotFound, orchestrator.UserErrorCode_PATH_NOT_FOUND) - }) -} diff --git a/packages/orchestrator/pkg/volumes/internal_test.go b/packages/orchestrator/pkg/volumes/internal_test.go deleted file mode 100644 index e7de258dc8..0000000000 --- a/packages/orchestrator/pkg/volumes/internal_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package volumes - -import ( - "os" - "testing" - - "github.com/google/uuid" - "github.com/stretchr/testify/require" - - "github.com/e2b-dev/infra/packages/orchestrator/pkg/cfg" - "github.com/e2b-dev/infra/packages/orchestrator/pkg/chrooted" - "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" -) - -const ( - volumeType = "test-vt" -) - -func setupTestService(t *testing.T) (*Service, string, *orchestrator.VolumeInfo) { - t.Helper() - - if os.Geteuid() != 0 { - t.Skip("Test requires root privileges") - } - - tmpDir := t.TempDir() - teamID := uuid.New() - volumeID := uuid.New() - - config := cfg.Config{ - PersistentVolumeMounts: map[string]string{ - volumeType: tmpDir, - }, - } - - builder := chrooted.NewBuilder(config) - s := New(config, builder) - - volumeInfo := &orchestrator.VolumeInfo{ - VolumeType: volumeType, - TeamId: teamID.String(), - VolumeId: volumeID.String(), - } - - rootPath, err := s.getVolumeRootPath(t.Context(), volumeInfo) - require.NoError(t, err) - - err = os.MkdirAll(rootPath, 0o755) - require.NoError(t, err) - - return s, rootPath, volumeInfo -} diff --git a/packages/orchestrator/pkg/volumes/file_delete.go b/packages/orchestrator/pkg/volumes/path_delete.go similarity index 67% rename from packages/orchestrator/pkg/volumes/file_delete.go rename to packages/orchestrator/pkg/volumes/path_delete.go index 9327cd5612..418bd9e107 100644 --- a/packages/orchestrator/pkg/volumes/file_delete.go +++ b/packages/orchestrator/pkg/volumes/path_delete.go @@ -13,7 +13,7 @@ import ( "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" ) -func (s *Service) DeleteFile(ctx context.Context, request *orchestrator.VolumeFileDeleteRequest) (r *orchestrator.VolumeFileDeleteResponse, err error) { +func (s *Service) DeletePath(ctx context.Context, request *orchestrator.DeletePathRequest) (r *orchestrator.DeletePathResponse, err error) { ctx, span := tracer.Start(ctx, "delete file in volume") defer func() { setSpanStatus(span, err) @@ -39,7 +39,8 @@ func (s *Service) DeleteFile(ctx context.Context, request *orchestrator.VolumeFi attribute.String("path", path), )) - if err = fs.Remove(path); err != nil { + // Check if path exists before deletion since RemoveAll doesn't error on missing paths + if _, err = fs.Lstat(path); err != nil { if os.IsNotExist(err) { return nil, newAPIError(ctx, codes.NotFound, @@ -49,8 +50,12 @@ func (s *Service) DeleteFile(ctx context.Context, request *orchestrator.VolumeFi ).Err() } - return nil, fmt.Errorf("failed to delete file: %w", err) + return nil, fmt.Errorf("failed to stat path: %w", err) } - return &orchestrator.VolumeFileDeleteResponse{}, nil + if err = fs.RemoveAll(path); err != nil { + return nil, fmt.Errorf("failed to delete path: %w", err) + } + + return &orchestrator.DeletePathResponse{}, nil } diff --git a/packages/orchestrator/pkg/volumes/path_delete_test.go b/packages/orchestrator/pkg/volumes/path_delete_test.go new file mode 100644 index 0000000000..ccc888ddf0 --- /dev/null +++ b/packages/orchestrator/pkg/volumes/path_delete_test.go @@ -0,0 +1,157 @@ +package volumes + +import ( + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + + "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" +) + +func TestDeletePath(t *testing.T) { + t.Parallel() + + s, tmpdir, volumeInfo := setupTestService(t) + + t.Run("delete file", func(t *testing.T) { + t.Parallel() + + filename := "file-to-delete.txt" + fullPath := filepath.Join(tmpdir, filename) + + err := os.WriteFile(fullPath, []byte("test content"), 0o644) + require.NoError(t, err) + + _, err = s.DeletePath(t.Context(), &orchestrator.DeletePathRequest{ + Volume: volumeInfo, + Path: filename, + }) + require.NoError(t, err) + + _, err = os.Stat(fullPath) + require.ErrorIs(t, err, os.ErrNotExist) + }) + + t.Run("delete empty directory", func(t *testing.T) { + t.Parallel() + + dirname := "empty-dir-to-delete" + fullPath := filepath.Join(tmpdir, dirname) + + err := os.Mkdir(fullPath, 0o755) + require.NoError(t, err) + + _, err = s.DeletePath(t.Context(), &orchestrator.DeletePathRequest{ + Volume: volumeInfo, + Path: dirname, + }) + require.NoError(t, err) + + _, err = os.Stat(fullPath) + require.ErrorIs(t, err, os.ErrNotExist) + }) + + t.Run("delete non-empty directory recursively", func(t *testing.T) { + t.Parallel() + + dirname := "non-empty-dir" + fullPath := filepath.Join(tmpdir, dirname) + + err := os.Mkdir(fullPath, 0o755) + require.NoError(t, err) + + err = os.WriteFile(filepath.Join(fullPath, "child.txt"), []byte("child content"), 0o644) + require.NoError(t, err) + + // Create nested subdirectory with file + nestedDir := filepath.Join(fullPath, "nested") + err = os.Mkdir(nestedDir, 0o755) + require.NoError(t, err) + + err = os.WriteFile(filepath.Join(nestedDir, "nested-child.txt"), []byte("nested content"), 0o644) + require.NoError(t, err) + + _, err = s.DeletePath(t.Context(), &orchestrator.DeletePathRequest{ + Volume: volumeInfo, + Path: dirname, + }) + require.NoError(t, err) + + // Directory and all contents should be deleted + _, err = os.Stat(fullPath) + require.ErrorIs(t, err, os.ErrNotExist) + }) + + t.Run("delete non-existent path", func(t *testing.T) { + t.Parallel() + + _, err := s.DeletePath(t.Context(), &orchestrator.DeletePathRequest{ + Volume: volumeInfo, + Path: "non-existent-path", + }) + requireGRPCError(t, err, codes.NotFound, orchestrator.UserErrorCode_PATH_NOT_FOUND) + }) + + t.Run("delete root fails", func(t *testing.T) { + t.Parallel() + + _, err := s.DeletePath(t.Context(), &orchestrator.DeletePathRequest{ + Volume: volumeInfo, + Path: "/", + }) + requireGRPCError(t, err, codes.InvalidArgument, orchestrator.UserErrorCode_CANNOT_DELETE_ROOT) + }) + + t.Run("delete symlink", func(t *testing.T) { + t.Parallel() + + target := "symlink-target.txt" + link := "symlink-to-delete" + targetPath := filepath.Join(tmpdir, target) + linkPath := filepath.Join(tmpdir, link) + + err := os.WriteFile(targetPath, []byte("target content"), 0o644) + require.NoError(t, err) + + err = os.Symlink(target, linkPath) + require.NoError(t, err) + + _, err = s.DeletePath(t.Context(), &orchestrator.DeletePathRequest{ + Volume: volumeInfo, + Path: link, + }) + require.NoError(t, err) + + // Symlink should be deleted + _, err = os.Lstat(linkPath) + require.ErrorIs(t, err, os.ErrNotExist) + + // Target should still exist + _, err = os.Stat(targetPath) + require.NoError(t, err) + }) + + t.Run("delete broken symlink", func(t *testing.T) { + t.Parallel() + + target := "broken-symlink-target.txt" + link := "broken-symlink-to-delete" + linkPath := filepath.Join(tmpdir, link) + + err := os.Symlink(target, linkPath) + require.NoError(t, err) + + _, err = s.DeletePath(t.Context(), &orchestrator.DeletePathRequest{ + Volume: volumeInfo, + Path: link, + }) + require.NoError(t, err) + + // Symlink should be deleted + _, err = os.Lstat(linkPath) + require.ErrorIs(t, err, os.ErrNotExist) + }) +} diff --git a/packages/orchestrator/pkg/volumes/stat.go b/packages/orchestrator/pkg/volumes/path_stat.go similarity index 83% rename from packages/orchestrator/pkg/volumes/stat.go rename to packages/orchestrator/pkg/volumes/path_stat.go index 0885f460bc..9ee94a4e10 100644 --- a/packages/orchestrator/pkg/volumes/stat.go +++ b/packages/orchestrator/pkg/volumes/path_stat.go @@ -13,7 +13,7 @@ import ( "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" ) -func (s *Service) Stat(ctx context.Context, request *orchestrator.StatRequest) (r *orchestrator.StatResponse, err error) { +func (s *Service) StatPath(ctx context.Context, request *orchestrator.StatPathRequest) (r *orchestrator.StatPathResponse, err error) { ctx, span := tracer.Start(ctx, "stat path in volume") defer func() { setSpanStatus(span, err) @@ -46,5 +46,5 @@ func (s *Service) Stat(ctx context.Context, request *orchestrator.StatRequest) ( entry := fromEntryInfo(path, info) - return &orchestrator.StatResponse{Entry: entry}, nil + return &orchestrator.StatPathResponse{Entry: entry}, nil } diff --git a/packages/orchestrator/pkg/volumes/stat_test.go b/packages/orchestrator/pkg/volumes/path_stat_test.go similarity index 85% rename from packages/orchestrator/pkg/volumes/stat_test.go rename to packages/orchestrator/pkg/volumes/path_stat_test.go index 80d028bc10..85e404e617 100644 --- a/packages/orchestrator/pkg/volumes/stat_test.go +++ b/packages/orchestrator/pkg/volumes/path_stat_test.go @@ -23,7 +23,7 @@ func TestStat(t *testing.T) { err := os.WriteFile(filepath.Join(tmpdir, filename), []byte("test"), 0o644) require.NoError(t, err) - resp, err := s.Stat(t.Context(), &orchestrator.StatRequest{ + resp, err := s.StatPath(t.Context(), &orchestrator.StatPathRequest{ Volume: volumeInfo, Path: filename, }) @@ -39,7 +39,7 @@ func TestStat(t *testing.T) { err := os.Mkdir(filepath.Join(tmpdir, dirname), 0o755) require.NoError(t, err) - resp, err := s.Stat(t.Context(), &orchestrator.StatRequest{ + resp, err := s.StatPath(t.Context(), &orchestrator.StatPathRequest{ Volume: volumeInfo, Path: dirname, }) @@ -50,7 +50,7 @@ func TestStat(t *testing.T) { t.Run("stat non-existent", func(t *testing.T) { t.Parallel() - _, err := s.Stat(t.Context(), &orchestrator.StatRequest{ + _, err := s.StatPath(t.Context(), &orchestrator.StatPathRequest{ Volume: volumeInfo, Path: "non-existent", }) @@ -67,7 +67,7 @@ func TestStat(t *testing.T) { err = os.Symlink(target, filepath.Join(tmpdir, link)) require.NoError(t, err) - resp, err := s.Stat(t.Context(), &orchestrator.StatRequest{ + resp, err := s.StatPath(t.Context(), &orchestrator.StatPathRequest{ Volume: volumeInfo, Path: link, }) diff --git a/packages/orchestrator/pkg/volumes/file_update.go b/packages/orchestrator/pkg/volumes/path_update.go similarity index 90% rename from packages/orchestrator/pkg/volumes/file_update.go rename to packages/orchestrator/pkg/volumes/path_update.go index aa84f9a480..022995a1ba 100644 --- a/packages/orchestrator/pkg/volumes/file_update.go +++ b/packages/orchestrator/pkg/volumes/path_update.go @@ -13,7 +13,7 @@ import ( "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" ) -func (s *Service) UpdateFileMetadata(ctx context.Context, request *orchestrator.VolumeFileUpdateRequest) (r *orchestrator.VolumeFileUpdateResponse, err error) { +func (s *Service) UpdatePath(ctx context.Context, request *orchestrator.UpdatePathRequest) (r *orchestrator.UpdatePathResponse, err error) { ctx, span := tracer.Start(ctx, "update file metadata in volume") defer func() { setSpanStatus(span, err) @@ -87,5 +87,5 @@ func (s *Service) UpdateFileMetadata(ctx context.Context, request *orchestrator. entry := toEntry(path, fi) - return &orchestrator.VolumeFileUpdateResponse{Entry: entry}, nil + return &orchestrator.UpdatePathResponse{Entry: entry}, nil } diff --git a/packages/orchestrator/pkg/volumes/service_test.go b/packages/orchestrator/pkg/volumes/service_test.go index d1e32fdebd..be301905b6 100644 --- a/packages/orchestrator/pkg/volumes/service_test.go +++ b/packages/orchestrator/pkg/volumes/service_test.go @@ -4,7 +4,6 @@ import ( "fmt" "os" "path/filepath" - "syscall" "testing" "github.com/google/uuid" @@ -248,18 +247,3 @@ func TestEnsureParentDirs(t *testing.T) { assertDir(t, fs, "/q/f/g", 2020, 2021, defaultDirMode) }) } - -func assertDir(t *testing.T, fs *chrooted.Chrooted, path string, uid, gid uint32, mode os.FileMode) { - t.Helper() - - info, err := fs.Stat(path) - require.NoError(t, err) - - assert.Equal(t, mode.Perm(), info.Mode().Perm()) - - osInfo, ok := info.Sys().(*syscall.Stat_t) - require.True(t, ok) - require.NotNil(t, osInfo) - assert.Equal(t, uid, osInfo.Uid) - assert.Equal(t, gid, osInfo.Gid) -} diff --git a/packages/orchestrator/pkg/volumes/utils_test.go b/packages/orchestrator/pkg/volumes/utils_test.go new file mode 100644 index 0000000000..3661e377b1 --- /dev/null +++ b/packages/orchestrator/pkg/volumes/utils_test.go @@ -0,0 +1,92 @@ +package volumes + +import ( + "os" + "syscall" + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/e2b-dev/infra/packages/orchestrator/pkg/cfg" + "github.com/e2b-dev/infra/packages/orchestrator/pkg/chrooted" + "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" +) + +const ( + volumeType = "test-vt" +) + +func setupTestService(t *testing.T) (*Service, string, *orchestrator.VolumeInfo) { + t.Helper() + + if os.Geteuid() != 0 { + t.Skip("Test requires root privileges") + } + + tmpDir := t.TempDir() + teamID := uuid.New() + volumeID := uuid.New() + + config := cfg.Config{ + PersistentVolumeMounts: map[string]string{ + volumeType: tmpDir, + }, + } + + builder := chrooted.NewBuilder(config) + s := New(config, builder) + + volumeInfo := &orchestrator.VolumeInfo{ + VolumeType: volumeType, + TeamId: teamID.String(), + VolumeId: volumeID.String(), + } + + rootPath, err := s.getVolumeRootPath(t.Context(), volumeInfo) + require.NoError(t, err) + + err = os.MkdirAll(rootPath, 0o755) + require.NoError(t, err) + + return s, rootPath, volumeInfo +} + +func assertDir(t *testing.T, fs *chrooted.Chrooted, path string, uid, gid uint32, mode os.FileMode) { + t.Helper() + + info, err := fs.Stat(path) + require.NoError(t, err) + + assert.Equal(t, mode.Perm(), info.Mode().Perm()) + + osInfo, ok := info.Sys().(*syscall.Stat_t) + require.True(t, ok) + require.NotNil(t, osInfo) + assert.Equal(t, uid, osInfo.Uid) + assert.Equal(t, gid, osInfo.Gid) +} + +func requireGRPCError(t *testing.T, err error, expectedGRPCCode codes.Code, expectedUserErrorCode orchestrator.UserErrorCode) { + t.Helper() + + require.Error(t, err) + + status, ok := status.FromError(err) + require.Truef(t, ok, "expected error to be a gRPC status error, got %T: %s", err, err.Error()) + + require.Equalf(t, expectedGRPCCode, status.Code(), "expected %s, got %s", expectedGRPCCode, status.Code()) + + for _, detail := range status.Details() { + if userError, ok := detail.(*orchestrator.UserError); ok { + require.Equalf(t, expectedUserErrorCode, userError.GetCode(), "expected %s, got %s", expectedUserErrorCode, userError.GetCode()) + + return + } + } + + require.Fail(t, "expected UserError detail not found") +} diff --git a/packages/orchestrator/pkg/volumes/volume_create.go b/packages/orchestrator/pkg/volumes/volume_create.go index 4b37af6ce8..0865bcc0b0 100644 --- a/packages/orchestrator/pkg/volumes/volume_create.go +++ b/packages/orchestrator/pkg/volumes/volume_create.go @@ -11,7 +11,7 @@ import ( "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" ) -func (s *Service) Create(ctx context.Context, request *orchestrator.VolumeCreateRequest) (r *orchestrator.VolumeCreateResponse, err error) { +func (s *Service) CreateVolume(ctx context.Context, request *orchestrator.CreateVolumeRequest) (r *orchestrator.CreateVolumeResponse, err error) { _, span := tracer.Start(ctx, "create volume") defer func() { setSpanStatus(span, err) @@ -31,5 +31,5 @@ func (s *Service) Create(ctx context.Context, request *orchestrator.VolumeCreate return nil, fmt.Errorf("failed to create volume: %w", err) } - return &orchestrator.VolumeCreateResponse{}, nil + return &orchestrator.CreateVolumeResponse{}, nil } diff --git a/packages/orchestrator/pkg/volumes/volume_delete.go b/packages/orchestrator/pkg/volumes/volume_delete.go index 61b315c506..2958995fa3 100644 --- a/packages/orchestrator/pkg/volumes/volume_delete.go +++ b/packages/orchestrator/pkg/volumes/volume_delete.go @@ -11,10 +11,10 @@ import ( "github.com/e2b-dev/infra/packages/shared/pkg/grpc/orchestrator" ) -func (s *Service) Delete( +func (s *Service) DeleteVolume( ctx context.Context, - request *orchestrator.VolumeDeleteRequest, -) (r *orchestrator.VolumeDeleteResponse, err error) { + request *orchestrator.DeleteVolumeRequest, +) (r *orchestrator.DeleteVolumeResponse, err error) { _, span := tracer.Start(ctx, "delete volume") defer func() { setSpanStatus(span, err) @@ -34,5 +34,5 @@ func (s *Service) Delete( return nil, fmt.Errorf("failed to delete volume: %w", err) } - return &orchestrator.VolumeDeleteResponse{}, nil + return &orchestrator.DeleteVolumeResponse{}, nil } diff --git a/packages/orchestrator/pkg/volumes/volume_test.go b/packages/orchestrator/pkg/volumes/volume_test.go index be37e9c397..948a969cbf 100644 --- a/packages/orchestrator/pkg/volumes/volume_test.go +++ b/packages/orchestrator/pkg/volumes/volume_test.go @@ -15,7 +15,7 @@ func TestVolume(t *testing.T) { s, rootPath, volumeInfo := setupTestService(t) // create volume - _, err := s.Create(t.Context(), &orchestrator.VolumeCreateRequest{ + _, err := s.CreateVolume(t.Context(), &orchestrator.CreateVolumeRequest{ Volume: volumeInfo, }) require.NoError(t, err) @@ -24,7 +24,7 @@ func TestVolume(t *testing.T) { require.NoError(t, err) // delete volume - _, err = s.Delete(t.Context(), &orchestrator.VolumeDeleteRequest{ + _, err = s.DeleteVolume(t.Context(), &orchestrator.DeleteVolumeRequest{ Volume: volumeInfo, }) require.NoError(t, err) diff --git a/packages/orchestrator/volume.proto b/packages/orchestrator/volume.proto index 18d1d3edca..7ca1fe6846 100644 --- a/packages/orchestrator/volume.proto +++ b/packages/orchestrator/volume.proto @@ -45,34 +45,34 @@ message UserError { uint32 http_status = 3; } -message VolumeCreateRequest { +message CreateVolumeRequest { VolumeInfo volume = 1; } -message VolumeCreateResponse { +message CreateVolumeResponse { } -message VolumeDeleteRequest { +message DeleteVolumeRequest { VolumeInfo volume = 1; } -message VolumeDeleteResponse {} +message DeleteVolumeResponse {} message VolumeDirectoryItem { EntryInfo entry = 1; } -message VolumeDirListRequest { +message ListDirRequest { VolumeInfo volume = 1; string path = 2; uint32 depth = 3; } -message VolumeDirListResponse { +message ListDirResponse { repeated VolumeDirectoryItem files = 1; } -message VolumeDirCreateRequest { +message CreateDirRequest { VolumeInfo volume = 1; string path = 2; optional uint32 mode = 3; @@ -81,18 +81,18 @@ message VolumeDirCreateRequest { bool create_parents = 6; } -message VolumeDirCreateResponse { +message CreateDirResponse { EntryInfo entry = 1; } -message VolumeDirDeleteRequest { +message DeletePathRequest { VolumeInfo volume = 1; string path = 2; } -message VolumeDirDeleteResponse {} +message DeletePathResponse {} -message VolumeFileGetRequest { +message GetFileRequest { VolumeInfo volume = 1; string path = 2; } @@ -107,7 +107,7 @@ message VolumeFileGetResponseContent { message VolumeFileGetResponseFinish {} -message VolumeFileGetResponse { +message GetFileResponse { oneof message { VolumeFileGetResponseStart start = 1; VolumeFileGetResponseContent content = 2; @@ -131,7 +131,7 @@ message VolumeFileCreateContent { message VolumeFileCreateFinish { } -message VolumeFileCreateRequest { +message CreateFileRequest { oneof message { VolumeFileCreateStart start = 1; VolumeFileCreateContent content = 2; @@ -139,24 +139,17 @@ message VolumeFileCreateRequest { } } -message VolumeFileCreateResponse { +message CreateFileResponse { EntryInfo entry = 1; } -message VolumeFileDeleteRequest { - VolumeInfo volume = 1; - string path = 2; -} - -message VolumeFileDeleteResponse {} - -message StatRequest { +message StatPathRequest { VolumeInfo volume = 1; string path = 2; bool follow_symlinks = 3; } -message StatResponse { +message StatPathResponse { EntryInfo entry = 1; } @@ -167,7 +160,7 @@ enum FileType { FILE_TYPE_SYMLINK = 3; } -message VolumeFileUpdateRequest { +message UpdatePathRequest { VolumeInfo volume = 1; string path = 2; optional uint32 mode = 3; @@ -175,22 +168,25 @@ message VolumeFileUpdateRequest { optional uint32 gid = 5; } -message VolumeFileUpdateResponse { +message UpdatePathResponse { EntryInfo entry = 1; } service VolumeService { - rpc Create(VolumeCreateRequest) returns (VolumeCreateResponse); - rpc Delete(VolumeDeleteRequest) returns (VolumeDeleteResponse); - - rpc ListDir(VolumeDirListRequest) returns (VolumeDirListResponse); - rpc CreateDir(VolumeDirCreateRequest) returns (VolumeDirCreateResponse); - rpc DeleteDir(VolumeDirDeleteRequest) returns (VolumeDirDeleteResponse); - - rpc GetFile(VolumeFileGetRequest) returns (stream VolumeFileGetResponse); - rpc CreateFile(stream VolumeFileCreateRequest) returns (VolumeFileCreateResponse); - rpc DeleteFile(VolumeFileDeleteRequest) returns (VolumeFileDeleteResponse); - rpc UpdateFileMetadata(VolumeFileUpdateRequest) returns (VolumeFileUpdateResponse); - - rpc Stat(StatRequest) returns (StatResponse); + // volume operations + rpc CreateVolume(CreateVolumeRequest) returns (CreateVolumeResponse); + rpc DeleteVolume(DeleteVolumeRequest) returns (DeleteVolumeResponse); + + // directory operations + rpc CreateDir(CreateDirRequest) returns (CreateDirResponse); + rpc ListDir(ListDirRequest) returns (ListDirResponse); + + // file operations + rpc CreateFile(stream CreateFileRequest) returns (CreateFileResponse); + rpc GetFile(GetFileRequest) returns (stream GetFileResponse); + + // path operations (file, dir, other?) + rpc DeletePath(DeletePathRequest) returns (DeletePathResponse); + rpc StatPath(StatPathRequest) returns (StatPathResponse); + rpc UpdatePath(UpdatePathRequest) returns (UpdatePathResponse); } diff --git a/packages/shared/pkg/grpc/orchestrator/volume.pb.go b/packages/shared/pkg/grpc/orchestrator/volume.pb.go index edc32abdd9..77f702e97b 100644 --- a/packages/shared/pkg/grpc/orchestrator/volume.pb.go +++ b/packages/shared/pkg/grpc/orchestrator/volume.pb.go @@ -435,7 +435,7 @@ func (x *UserError) GetHttpStatus() uint32 { return 0 } -type VolumeCreateRequest struct { +type CreateVolumeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -443,8 +443,8 @@ type VolumeCreateRequest struct { Volume *VolumeInfo `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` } -func (x *VolumeCreateRequest) Reset() { - *x = VolumeCreateRequest{} +func (x *CreateVolumeRequest) Reset() { + *x = CreateVolumeRequest{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -452,13 +452,13 @@ func (x *VolumeCreateRequest) Reset() { } } -func (x *VolumeCreateRequest) String() string { +func (x *CreateVolumeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeCreateRequest) ProtoMessage() {} +func (*CreateVolumeRequest) ProtoMessage() {} -func (x *VolumeCreateRequest) ProtoReflect() protoreflect.Message { +func (x *CreateVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -470,26 +470,26 @@ func (x *VolumeCreateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeCreateRequest.ProtoReflect.Descriptor instead. -func (*VolumeCreateRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateVolumeRequest.ProtoReflect.Descriptor instead. +func (*CreateVolumeRequest) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{4} } -func (x *VolumeCreateRequest) GetVolume() *VolumeInfo { +func (x *CreateVolumeRequest) GetVolume() *VolumeInfo { if x != nil { return x.Volume } return nil } -type VolumeCreateResponse struct { +type CreateVolumeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *VolumeCreateResponse) Reset() { - *x = VolumeCreateResponse{} +func (x *CreateVolumeResponse) Reset() { + *x = CreateVolumeResponse{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -497,13 +497,13 @@ func (x *VolumeCreateResponse) Reset() { } } -func (x *VolumeCreateResponse) String() string { +func (x *CreateVolumeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeCreateResponse) ProtoMessage() {} +func (*CreateVolumeResponse) ProtoMessage() {} -func (x *VolumeCreateResponse) ProtoReflect() protoreflect.Message { +func (x *CreateVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -515,12 +515,12 @@ func (x *VolumeCreateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeCreateResponse.ProtoReflect.Descriptor instead. -func (*VolumeCreateResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateVolumeResponse.ProtoReflect.Descriptor instead. +func (*CreateVolumeResponse) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{5} } -type VolumeDeleteRequest struct { +type DeleteVolumeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -528,8 +528,8 @@ type VolumeDeleteRequest struct { Volume *VolumeInfo `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` } -func (x *VolumeDeleteRequest) Reset() { - *x = VolumeDeleteRequest{} +func (x *DeleteVolumeRequest) Reset() { + *x = DeleteVolumeRequest{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -537,13 +537,13 @@ func (x *VolumeDeleteRequest) Reset() { } } -func (x *VolumeDeleteRequest) String() string { +func (x *DeleteVolumeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDeleteRequest) ProtoMessage() {} +func (*DeleteVolumeRequest) ProtoMessage() {} -func (x *VolumeDeleteRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -555,26 +555,26 @@ func (x *VolumeDeleteRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDeleteRequest.ProtoReflect.Descriptor instead. -func (*VolumeDeleteRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteVolumeRequest.ProtoReflect.Descriptor instead. +func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{6} } -func (x *VolumeDeleteRequest) GetVolume() *VolumeInfo { +func (x *DeleteVolumeRequest) GetVolume() *VolumeInfo { if x != nil { return x.Volume } return nil } -type VolumeDeleteResponse struct { +type DeleteVolumeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *VolumeDeleteResponse) Reset() { - *x = VolumeDeleteResponse{} +func (x *DeleteVolumeResponse) Reset() { + *x = DeleteVolumeResponse{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -582,13 +582,13 @@ func (x *VolumeDeleteResponse) Reset() { } } -func (x *VolumeDeleteResponse) String() string { +func (x *DeleteVolumeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDeleteResponse) ProtoMessage() {} +func (*DeleteVolumeResponse) ProtoMessage() {} -func (x *VolumeDeleteResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -600,8 +600,8 @@ func (x *VolumeDeleteResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDeleteResponse.ProtoReflect.Descriptor instead. -func (*VolumeDeleteResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteVolumeResponse.ProtoReflect.Descriptor instead. +func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{7} } @@ -652,7 +652,7 @@ func (x *VolumeDirectoryItem) GetEntry() *EntryInfo { return nil } -type VolumeDirListRequest struct { +type ListDirRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -662,8 +662,8 @@ type VolumeDirListRequest struct { Depth uint32 `protobuf:"varint,3,opt,name=depth,proto3" json:"depth,omitempty"` } -func (x *VolumeDirListRequest) Reset() { - *x = VolumeDirListRequest{} +func (x *ListDirRequest) Reset() { + *x = ListDirRequest{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -671,13 +671,13 @@ func (x *VolumeDirListRequest) Reset() { } } -func (x *VolumeDirListRequest) String() string { +func (x *ListDirRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDirListRequest) ProtoMessage() {} +func (*ListDirRequest) ProtoMessage() {} -func (x *VolumeDirListRequest) ProtoReflect() protoreflect.Message { +func (x *ListDirRequest) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -689,33 +689,33 @@ func (x *VolumeDirListRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDirListRequest.ProtoReflect.Descriptor instead. -func (*VolumeDirListRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListDirRequest.ProtoReflect.Descriptor instead. +func (*ListDirRequest) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{9} } -func (x *VolumeDirListRequest) GetVolume() *VolumeInfo { +func (x *ListDirRequest) GetVolume() *VolumeInfo { if x != nil { return x.Volume } return nil } -func (x *VolumeDirListRequest) GetPath() string { +func (x *ListDirRequest) GetPath() string { if x != nil { return x.Path } return "" } -func (x *VolumeDirListRequest) GetDepth() uint32 { +func (x *ListDirRequest) GetDepth() uint32 { if x != nil { return x.Depth } return 0 } -type VolumeDirListResponse struct { +type ListDirResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -723,8 +723,8 @@ type VolumeDirListResponse struct { Files []*VolumeDirectoryItem `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` } -func (x *VolumeDirListResponse) Reset() { - *x = VolumeDirListResponse{} +func (x *ListDirResponse) Reset() { + *x = ListDirResponse{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -732,13 +732,13 @@ func (x *VolumeDirListResponse) Reset() { } } -func (x *VolumeDirListResponse) String() string { +func (x *ListDirResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDirListResponse) ProtoMessage() {} +func (*ListDirResponse) ProtoMessage() {} -func (x *VolumeDirListResponse) ProtoReflect() protoreflect.Message { +func (x *ListDirResponse) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -750,19 +750,19 @@ func (x *VolumeDirListResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDirListResponse.ProtoReflect.Descriptor instead. -func (*VolumeDirListResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListDirResponse.ProtoReflect.Descriptor instead. +func (*ListDirResponse) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{10} } -func (x *VolumeDirListResponse) GetFiles() []*VolumeDirectoryItem { +func (x *ListDirResponse) GetFiles() []*VolumeDirectoryItem { if x != nil { return x.Files } return nil } -type VolumeDirCreateRequest struct { +type CreateDirRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -775,8 +775,8 @@ type VolumeDirCreateRequest struct { CreateParents bool `protobuf:"varint,6,opt,name=create_parents,json=createParents,proto3" json:"create_parents,omitempty"` } -func (x *VolumeDirCreateRequest) Reset() { - *x = VolumeDirCreateRequest{} +func (x *CreateDirRequest) Reset() { + *x = CreateDirRequest{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -784,13 +784,13 @@ func (x *VolumeDirCreateRequest) Reset() { } } -func (x *VolumeDirCreateRequest) String() string { +func (x *CreateDirRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDirCreateRequest) ProtoMessage() {} +func (*CreateDirRequest) ProtoMessage() {} -func (x *VolumeDirCreateRequest) ProtoReflect() protoreflect.Message { +func (x *CreateDirRequest) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -802,54 +802,54 @@ func (x *VolumeDirCreateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDirCreateRequest.ProtoReflect.Descriptor instead. -func (*VolumeDirCreateRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateDirRequest.ProtoReflect.Descriptor instead. +func (*CreateDirRequest) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{11} } -func (x *VolumeDirCreateRequest) GetVolume() *VolumeInfo { +func (x *CreateDirRequest) GetVolume() *VolumeInfo { if x != nil { return x.Volume } return nil } -func (x *VolumeDirCreateRequest) GetPath() string { +func (x *CreateDirRequest) GetPath() string { if x != nil { return x.Path } return "" } -func (x *VolumeDirCreateRequest) GetMode() uint32 { +func (x *CreateDirRequest) GetMode() uint32 { if x != nil && x.Mode != nil { return *x.Mode } return 0 } -func (x *VolumeDirCreateRequest) GetUid() uint32 { +func (x *CreateDirRequest) GetUid() uint32 { if x != nil && x.Uid != nil { return *x.Uid } return 0 } -func (x *VolumeDirCreateRequest) GetGid() uint32 { +func (x *CreateDirRequest) GetGid() uint32 { if x != nil && x.Gid != nil { return *x.Gid } return 0 } -func (x *VolumeDirCreateRequest) GetCreateParents() bool { +func (x *CreateDirRequest) GetCreateParents() bool { if x != nil { return x.CreateParents } return false } -type VolumeDirCreateResponse struct { +type CreateDirResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -857,8 +857,8 @@ type VolumeDirCreateResponse struct { Entry *EntryInfo `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` } -func (x *VolumeDirCreateResponse) Reset() { - *x = VolumeDirCreateResponse{} +func (x *CreateDirResponse) Reset() { + *x = CreateDirResponse{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -866,13 +866,13 @@ func (x *VolumeDirCreateResponse) Reset() { } } -func (x *VolumeDirCreateResponse) String() string { +func (x *CreateDirResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDirCreateResponse) ProtoMessage() {} +func (*CreateDirResponse) ProtoMessage() {} -func (x *VolumeDirCreateResponse) ProtoReflect() protoreflect.Message { +func (x *CreateDirResponse) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -884,19 +884,19 @@ func (x *VolumeDirCreateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDirCreateResponse.ProtoReflect.Descriptor instead. -func (*VolumeDirCreateResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateDirResponse.ProtoReflect.Descriptor instead. +func (*CreateDirResponse) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{12} } -func (x *VolumeDirCreateResponse) GetEntry() *EntryInfo { +func (x *CreateDirResponse) GetEntry() *EntryInfo { if x != nil { return x.Entry } return nil } -type VolumeDirDeleteRequest struct { +type DeletePathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -905,8 +905,8 @@ type VolumeDirDeleteRequest struct { Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` } -func (x *VolumeDirDeleteRequest) Reset() { - *x = VolumeDirDeleteRequest{} +func (x *DeletePathRequest) Reset() { + *x = DeletePathRequest{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -914,13 +914,13 @@ func (x *VolumeDirDeleteRequest) Reset() { } } -func (x *VolumeDirDeleteRequest) String() string { +func (x *DeletePathRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDirDeleteRequest) ProtoMessage() {} +func (*DeletePathRequest) ProtoMessage() {} -func (x *VolumeDirDeleteRequest) ProtoReflect() protoreflect.Message { +func (x *DeletePathRequest) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -932,33 +932,33 @@ func (x *VolumeDirDeleteRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDirDeleteRequest.ProtoReflect.Descriptor instead. -func (*VolumeDirDeleteRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeletePathRequest.ProtoReflect.Descriptor instead. +func (*DeletePathRequest) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{13} } -func (x *VolumeDirDeleteRequest) GetVolume() *VolumeInfo { +func (x *DeletePathRequest) GetVolume() *VolumeInfo { if x != nil { return x.Volume } return nil } -func (x *VolumeDirDeleteRequest) GetPath() string { +func (x *DeletePathRequest) GetPath() string { if x != nil { return x.Path } return "" } -type VolumeDirDeleteResponse struct { +type DeletePathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *VolumeDirDeleteResponse) Reset() { - *x = VolumeDirDeleteResponse{} +func (x *DeletePathResponse) Reset() { + *x = DeletePathResponse{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -966,13 +966,13 @@ func (x *VolumeDirDeleteResponse) Reset() { } } -func (x *VolumeDirDeleteResponse) String() string { +func (x *DeletePathResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDirDeleteResponse) ProtoMessage() {} +func (*DeletePathResponse) ProtoMessage() {} -func (x *VolumeDirDeleteResponse) ProtoReflect() protoreflect.Message { +func (x *DeletePathResponse) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -984,12 +984,12 @@ func (x *VolumeDirDeleteResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDirDeleteResponse.ProtoReflect.Descriptor instead. -func (*VolumeDirDeleteResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeletePathResponse.ProtoReflect.Descriptor instead. +func (*DeletePathResponse) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{14} } -type VolumeFileGetRequest struct { +type GetFileRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -998,8 +998,8 @@ type VolumeFileGetRequest struct { Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` } -func (x *VolumeFileGetRequest) Reset() { - *x = VolumeFileGetRequest{} +func (x *GetFileRequest) Reset() { + *x = GetFileRequest{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1007,13 +1007,13 @@ func (x *VolumeFileGetRequest) Reset() { } } -func (x *VolumeFileGetRequest) String() string { +func (x *GetFileRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeFileGetRequest) ProtoMessage() {} +func (*GetFileRequest) ProtoMessage() {} -func (x *VolumeFileGetRequest) ProtoReflect() protoreflect.Message { +func (x *GetFileRequest) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1025,19 +1025,19 @@ func (x *VolumeFileGetRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeFileGetRequest.ProtoReflect.Descriptor instead. -func (*VolumeFileGetRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetFileRequest.ProtoReflect.Descriptor instead. +func (*GetFileRequest) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{15} } -func (x *VolumeFileGetRequest) GetVolume() *VolumeInfo { +func (x *GetFileRequest) GetVolume() *VolumeInfo { if x != nil { return x.Volume } return nil } -func (x *VolumeFileGetRequest) GetPath() string { +func (x *GetFileRequest) GetPath() string { if x != nil { return x.Path } @@ -1176,20 +1176,20 @@ func (*VolumeFileGetResponseFinish) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{18} } -type VolumeFileGetResponse struct { +type GetFileResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Message: - // *VolumeFileGetResponse_Start - // *VolumeFileGetResponse_Content - // *VolumeFileGetResponse_Finish - Message isVolumeFileGetResponse_Message `protobuf_oneof:"message"` + // *GetFileResponse_Start + // *GetFileResponse_Content + // *GetFileResponse_Finish + Message isGetFileResponse_Message `protobuf_oneof:"message"` } -func (x *VolumeFileGetResponse) Reset() { - *x = VolumeFileGetResponse{} +func (x *GetFileResponse) Reset() { + *x = GetFileResponse{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1197,13 +1197,13 @@ func (x *VolumeFileGetResponse) Reset() { } } -func (x *VolumeFileGetResponse) String() string { +func (x *GetFileResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeFileGetResponse) ProtoMessage() {} +func (*GetFileResponse) ProtoMessage() {} -func (x *VolumeFileGetResponse) ProtoReflect() protoreflect.Message { +func (x *GetFileResponse) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1215,60 +1215,60 @@ func (x *VolumeFileGetResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeFileGetResponse.ProtoReflect.Descriptor instead. -func (*VolumeFileGetResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetFileResponse.ProtoReflect.Descriptor instead. +func (*GetFileResponse) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{19} } -func (m *VolumeFileGetResponse) GetMessage() isVolumeFileGetResponse_Message { +func (m *GetFileResponse) GetMessage() isGetFileResponse_Message { if m != nil { return m.Message } return nil } -func (x *VolumeFileGetResponse) GetStart() *VolumeFileGetResponseStart { - if x, ok := x.GetMessage().(*VolumeFileGetResponse_Start); ok { +func (x *GetFileResponse) GetStart() *VolumeFileGetResponseStart { + if x, ok := x.GetMessage().(*GetFileResponse_Start); ok { return x.Start } return nil } -func (x *VolumeFileGetResponse) GetContent() *VolumeFileGetResponseContent { - if x, ok := x.GetMessage().(*VolumeFileGetResponse_Content); ok { +func (x *GetFileResponse) GetContent() *VolumeFileGetResponseContent { + if x, ok := x.GetMessage().(*GetFileResponse_Content); ok { return x.Content } return nil } -func (x *VolumeFileGetResponse) GetFinish() *VolumeFileGetResponseFinish { - if x, ok := x.GetMessage().(*VolumeFileGetResponse_Finish); ok { +func (x *GetFileResponse) GetFinish() *VolumeFileGetResponseFinish { + if x, ok := x.GetMessage().(*GetFileResponse_Finish); ok { return x.Finish } return nil } -type isVolumeFileGetResponse_Message interface { - isVolumeFileGetResponse_Message() +type isGetFileResponse_Message interface { + isGetFileResponse_Message() } -type VolumeFileGetResponse_Start struct { +type GetFileResponse_Start struct { Start *VolumeFileGetResponseStart `protobuf:"bytes,1,opt,name=start,proto3,oneof"` } -type VolumeFileGetResponse_Content struct { +type GetFileResponse_Content struct { Content *VolumeFileGetResponseContent `protobuf:"bytes,2,opt,name=content,proto3,oneof"` } -type VolumeFileGetResponse_Finish struct { +type GetFileResponse_Finish struct { Finish *VolumeFileGetResponseFinish `protobuf:"bytes,3,opt,name=finish,proto3,oneof"` } -func (*VolumeFileGetResponse_Start) isVolumeFileGetResponse_Message() {} +func (*GetFileResponse_Start) isGetFileResponse_Message() {} -func (*VolumeFileGetResponse_Content) isVolumeFileGetResponse_Message() {} +func (*GetFileResponse_Content) isGetFileResponse_Message() {} -func (*VolumeFileGetResponse_Finish) isVolumeFileGetResponse_Message() {} +func (*GetFileResponse_Finish) isGetFileResponse_Message() {} type VolumeFileCreateStart struct { state protoimpl.MessageState @@ -1442,20 +1442,20 @@ func (*VolumeFileCreateFinish) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{22} } -type VolumeFileCreateRequest struct { +type CreateFileRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Message: - // *VolumeFileCreateRequest_Start - // *VolumeFileCreateRequest_Content - // *VolumeFileCreateRequest_Finish - Message isVolumeFileCreateRequest_Message `protobuf_oneof:"message"` + // *CreateFileRequest_Start + // *CreateFileRequest_Content + // *CreateFileRequest_Finish + Message isCreateFileRequest_Message `protobuf_oneof:"message"` } -func (x *VolumeFileCreateRequest) Reset() { - *x = VolumeFileCreateRequest{} +func (x *CreateFileRequest) Reset() { + *x = CreateFileRequest{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1463,13 +1463,13 @@ func (x *VolumeFileCreateRequest) Reset() { } } -func (x *VolumeFileCreateRequest) String() string { +func (x *CreateFileRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeFileCreateRequest) ProtoMessage() {} +func (*CreateFileRequest) ProtoMessage() {} -func (x *VolumeFileCreateRequest) ProtoReflect() protoreflect.Message { +func (x *CreateFileRequest) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1481,62 +1481,62 @@ func (x *VolumeFileCreateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeFileCreateRequest.ProtoReflect.Descriptor instead. -func (*VolumeFileCreateRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateFileRequest.ProtoReflect.Descriptor instead. +func (*CreateFileRequest) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{23} } -func (m *VolumeFileCreateRequest) GetMessage() isVolumeFileCreateRequest_Message { +func (m *CreateFileRequest) GetMessage() isCreateFileRequest_Message { if m != nil { return m.Message } return nil } -func (x *VolumeFileCreateRequest) GetStart() *VolumeFileCreateStart { - if x, ok := x.GetMessage().(*VolumeFileCreateRequest_Start); ok { +func (x *CreateFileRequest) GetStart() *VolumeFileCreateStart { + if x, ok := x.GetMessage().(*CreateFileRequest_Start); ok { return x.Start } return nil } -func (x *VolumeFileCreateRequest) GetContent() *VolumeFileCreateContent { - if x, ok := x.GetMessage().(*VolumeFileCreateRequest_Content); ok { +func (x *CreateFileRequest) GetContent() *VolumeFileCreateContent { + if x, ok := x.GetMessage().(*CreateFileRequest_Content); ok { return x.Content } return nil } -func (x *VolumeFileCreateRequest) GetFinish() *VolumeFileCreateFinish { - if x, ok := x.GetMessage().(*VolumeFileCreateRequest_Finish); ok { +func (x *CreateFileRequest) GetFinish() *VolumeFileCreateFinish { + if x, ok := x.GetMessage().(*CreateFileRequest_Finish); ok { return x.Finish } return nil } -type isVolumeFileCreateRequest_Message interface { - isVolumeFileCreateRequest_Message() +type isCreateFileRequest_Message interface { + isCreateFileRequest_Message() } -type VolumeFileCreateRequest_Start struct { +type CreateFileRequest_Start struct { Start *VolumeFileCreateStart `protobuf:"bytes,1,opt,name=start,proto3,oneof"` } -type VolumeFileCreateRequest_Content struct { +type CreateFileRequest_Content struct { Content *VolumeFileCreateContent `protobuf:"bytes,2,opt,name=content,proto3,oneof"` } -type VolumeFileCreateRequest_Finish struct { +type CreateFileRequest_Finish struct { Finish *VolumeFileCreateFinish `protobuf:"bytes,3,opt,name=finish,proto3,oneof"` } -func (*VolumeFileCreateRequest_Start) isVolumeFileCreateRequest_Message() {} +func (*CreateFileRequest_Start) isCreateFileRequest_Message() {} -func (*VolumeFileCreateRequest_Content) isVolumeFileCreateRequest_Message() {} +func (*CreateFileRequest_Content) isCreateFileRequest_Message() {} -func (*VolumeFileCreateRequest_Finish) isVolumeFileCreateRequest_Message() {} +func (*CreateFileRequest_Finish) isCreateFileRequest_Message() {} -type VolumeFileCreateResponse struct { +type CreateFileResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1544,8 +1544,8 @@ type VolumeFileCreateResponse struct { Entry *EntryInfo `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` } -func (x *VolumeFileCreateResponse) Reset() { - *x = VolumeFileCreateResponse{} +func (x *CreateFileResponse) Reset() { + *x = CreateFileResponse{} if protoimpl.UnsafeEnabled { mi := &file_volume_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1553,13 +1553,13 @@ func (x *VolumeFileCreateResponse) Reset() { } } -func (x *VolumeFileCreateResponse) String() string { +func (x *CreateFileResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeFileCreateResponse) ProtoMessage() {} +func (*CreateFileResponse) ProtoMessage() {} -func (x *VolumeFileCreateResponse) ProtoReflect() protoreflect.Message { +func (x *CreateFileResponse) ProtoReflect() protoreflect.Message { mi := &file_volume_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1571,112 +1571,19 @@ func (x *VolumeFileCreateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeFileCreateResponse.ProtoReflect.Descriptor instead. -func (*VolumeFileCreateResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateFileResponse.ProtoReflect.Descriptor instead. +func (*CreateFileResponse) Descriptor() ([]byte, []int) { return file_volume_proto_rawDescGZIP(), []int{24} } -func (x *VolumeFileCreateResponse) GetEntry() *EntryInfo { +func (x *CreateFileResponse) GetEntry() *EntryInfo { if x != nil { return x.Entry } return nil } -type VolumeFileDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Volume *VolumeInfo `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` -} - -func (x *VolumeFileDeleteRequest) Reset() { - *x = VolumeFileDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_volume_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VolumeFileDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VolumeFileDeleteRequest) ProtoMessage() {} - -func (x *VolumeFileDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_volume_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 VolumeFileDeleteRequest.ProtoReflect.Descriptor instead. -func (*VolumeFileDeleteRequest) Descriptor() ([]byte, []int) { - return file_volume_proto_rawDescGZIP(), []int{25} -} - -func (x *VolumeFileDeleteRequest) GetVolume() *VolumeInfo { - if x != nil { - return x.Volume - } - return nil -} - -func (x *VolumeFileDeleteRequest) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -type VolumeFileDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *VolumeFileDeleteResponse) Reset() { - *x = VolumeFileDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_volume_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VolumeFileDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VolumeFileDeleteResponse) ProtoMessage() {} - -func (x *VolumeFileDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_volume_proto_msgTypes[26] - 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 VolumeFileDeleteResponse.ProtoReflect.Descriptor instead. -func (*VolumeFileDeleteResponse) Descriptor() ([]byte, []int) { - return file_volume_proto_rawDescGZIP(), []int{26} -} - -type StatRequest struct { +type StatPathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1686,23 +1593,23 @@ type StatRequest struct { FollowSymlinks bool `protobuf:"varint,3,opt,name=follow_symlinks,json=followSymlinks,proto3" json:"follow_symlinks,omitempty"` } -func (x *StatRequest) Reset() { - *x = StatRequest{} +func (x *StatPathRequest) Reset() { + *x = StatPathRequest{} if protoimpl.UnsafeEnabled { - mi := &file_volume_proto_msgTypes[27] + mi := &file_volume_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatRequest) String() string { +func (x *StatPathRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatRequest) ProtoMessage() {} +func (*StatPathRequest) ProtoMessage() {} -func (x *StatRequest) ProtoReflect() protoreflect.Message { - mi := &file_volume_proto_msgTypes[27] +func (x *StatPathRequest) ProtoReflect() protoreflect.Message { + mi := &file_volume_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1713,33 +1620,33 @@ func (x *StatRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatRequest.ProtoReflect.Descriptor instead. -func (*StatRequest) Descriptor() ([]byte, []int) { - return file_volume_proto_rawDescGZIP(), []int{27} +// Deprecated: Use StatPathRequest.ProtoReflect.Descriptor instead. +func (*StatPathRequest) Descriptor() ([]byte, []int) { + return file_volume_proto_rawDescGZIP(), []int{25} } -func (x *StatRequest) GetVolume() *VolumeInfo { +func (x *StatPathRequest) GetVolume() *VolumeInfo { if x != nil { return x.Volume } return nil } -func (x *StatRequest) GetPath() string { +func (x *StatPathRequest) GetPath() string { if x != nil { return x.Path } return "" } -func (x *StatRequest) GetFollowSymlinks() bool { +func (x *StatPathRequest) GetFollowSymlinks() bool { if x != nil { return x.FollowSymlinks } return false } -type StatResponse struct { +type StatPathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1747,23 +1654,23 @@ type StatResponse struct { Entry *EntryInfo `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` } -func (x *StatResponse) Reset() { - *x = StatResponse{} +func (x *StatPathResponse) Reset() { + *x = StatPathResponse{} if protoimpl.UnsafeEnabled { - mi := &file_volume_proto_msgTypes[28] + mi := &file_volume_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatResponse) String() string { +func (x *StatPathResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatResponse) ProtoMessage() {} +func (*StatPathResponse) ProtoMessage() {} -func (x *StatResponse) ProtoReflect() protoreflect.Message { - mi := &file_volume_proto_msgTypes[28] +func (x *StatPathResponse) ProtoReflect() protoreflect.Message { + mi := &file_volume_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,19 +1681,19 @@ func (x *StatResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatResponse.ProtoReflect.Descriptor instead. -func (*StatResponse) Descriptor() ([]byte, []int) { - return file_volume_proto_rawDescGZIP(), []int{28} +// Deprecated: Use StatPathResponse.ProtoReflect.Descriptor instead. +func (*StatPathResponse) Descriptor() ([]byte, []int) { + return file_volume_proto_rawDescGZIP(), []int{26} } -func (x *StatResponse) GetEntry() *EntryInfo { +func (x *StatPathResponse) GetEntry() *EntryInfo { if x != nil { return x.Entry } return nil } -type VolumeFileUpdateRequest struct { +type UpdatePathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1798,23 +1705,23 @@ type VolumeFileUpdateRequest struct { Gid *uint32 `protobuf:"varint,5,opt,name=gid,proto3,oneof" json:"gid,omitempty"` } -func (x *VolumeFileUpdateRequest) Reset() { - *x = VolumeFileUpdateRequest{} +func (x *UpdatePathRequest) Reset() { + *x = UpdatePathRequest{} if protoimpl.UnsafeEnabled { - mi := &file_volume_proto_msgTypes[29] + mi := &file_volume_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VolumeFileUpdateRequest) String() string { +func (x *UpdatePathRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeFileUpdateRequest) ProtoMessage() {} +func (*UpdatePathRequest) ProtoMessage() {} -func (x *VolumeFileUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_volume_proto_msgTypes[29] +func (x *UpdatePathRequest) ProtoReflect() protoreflect.Message { + mi := &file_volume_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1825,47 +1732,47 @@ func (x *VolumeFileUpdateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeFileUpdateRequest.ProtoReflect.Descriptor instead. -func (*VolumeFileUpdateRequest) Descriptor() ([]byte, []int) { - return file_volume_proto_rawDescGZIP(), []int{29} +// Deprecated: Use UpdatePathRequest.ProtoReflect.Descriptor instead. +func (*UpdatePathRequest) Descriptor() ([]byte, []int) { + return file_volume_proto_rawDescGZIP(), []int{27} } -func (x *VolumeFileUpdateRequest) GetVolume() *VolumeInfo { +func (x *UpdatePathRequest) GetVolume() *VolumeInfo { if x != nil { return x.Volume } return nil } -func (x *VolumeFileUpdateRequest) GetPath() string { +func (x *UpdatePathRequest) GetPath() string { if x != nil { return x.Path } return "" } -func (x *VolumeFileUpdateRequest) GetMode() uint32 { +func (x *UpdatePathRequest) GetMode() uint32 { if x != nil && x.Mode != nil { return *x.Mode } return 0 } -func (x *VolumeFileUpdateRequest) GetUid() uint32 { +func (x *UpdatePathRequest) GetUid() uint32 { if x != nil && x.Uid != nil { return *x.Uid } return 0 } -func (x *VolumeFileUpdateRequest) GetGid() uint32 { +func (x *UpdatePathRequest) GetGid() uint32 { if x != nil && x.Gid != nil { return *x.Gid } return 0 } -type VolumeFileUpdateResponse struct { +type UpdatePathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1873,23 +1780,23 @@ type VolumeFileUpdateResponse struct { Entry *EntryInfo `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` } -func (x *VolumeFileUpdateResponse) Reset() { - *x = VolumeFileUpdateResponse{} +func (x *UpdatePathResponse) Reset() { + *x = UpdatePathResponse{} if protoimpl.UnsafeEnabled { - mi := &file_volume_proto_msgTypes[30] + mi := &file_volume_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VolumeFileUpdateResponse) String() string { +func (x *UpdatePathResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeFileUpdateResponse) ProtoMessage() {} +func (*UpdatePathResponse) ProtoMessage() {} -func (x *VolumeFileUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_volume_proto_msgTypes[30] +func (x *UpdatePathResponse) ProtoReflect() protoreflect.Message { + mi := &file_volume_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1900,12 +1807,12 @@ func (x *VolumeFileUpdateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeFileUpdateResponse.ProtoReflect.Descriptor instead. -func (*VolumeFileUpdateResponse) Descriptor() ([]byte, []int) { - return file_volume_proto_rawDescGZIP(), []int{30} +// Deprecated: Use UpdatePathResponse.ProtoReflect.Descriptor instead. +func (*UpdatePathResponse) Descriptor() ([]byte, []int) { + return file_volume_proto_rawDescGZIP(), []int{28} } -func (x *VolumeFileUpdateResponse) GetEntry() *EntryInfo { +func (x *UpdatePathResponse) GetEntry() *EntryInfo { if x != nil { return x.Entry } @@ -1961,33 +1868,81 @@ var file_volume_proto_rawDesc = []byte{ 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3a, 0x0a, 0x13, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3a, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x3a, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x65, 0x0a, - 0x14, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, - 0x0a, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x64, - 0x65, 0x70, 0x74, 0x68, 0x22, 0x43, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, - 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x16, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, + 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x5f, 0x0a, + 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x70, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, 0x3d, + 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0xd2, 0x01, + 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x03, 0x67, 0x69, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, + 0x69, 0x64, 0x22, 0x35, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x4c, 0x0a, 0x11, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x30, 0x0a, 0x1a, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x22, 0xc4, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, + 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x42, + 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x15, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, @@ -1995,174 +1950,108 @@ var file_volume_proto_rawDesc = []byte{ 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x03, 0x67, 0x69, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x67, 0x69, 0x64, 0x22, 0x3b, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, - 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x20, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x22, 0x51, 0x0a, 0x16, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x22, 0x19, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, - 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x4f, 0x0a, 0x14, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, + 0x67, 0x69, 0x64, 0x22, 0x33, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6e, 0x69, + 0x73, 0x68, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x31, + 0x0a, 0x06, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x36, 0x0a, 0x12, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x22, 0x73, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x22, 0x30, 0x0a, 0x1a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, - 0x7a, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x1d, 0x0a, 0x1b, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x22, 0xca, 0x01, 0x0a, 0x15, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, - 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x42, 0x09, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x15, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x6f, 0x64, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, - 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x03, 0x67, 0x69, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x69, - 0x64, 0x22, 0x33, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x22, 0xbd, 0x01, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x48, 0x00, 0x52, 0x06, 0x66, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x3c, 0x0a, 0x18, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x05, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x52, - 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x22, 0x1a, 0x0a, 0x18, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, - 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, - 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, - 0x5f, 0x73, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x22, - 0x30, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x20, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x22, 0xb2, 0x01, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, - 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, - 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x03, 0x67, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x69, 0x64, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x67, 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x18, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0a, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2a, 0xb1, 0x01, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, - 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x54, 0x48, 0x5f, - 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x02, - 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, - 0x45, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x54, 0x5f, - 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x44, - 0x45, 0x50, 0x54, 0x48, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x52, 0x41, 0x4e, 0x47, - 0x45, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x52, - 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x06, 0x2a, 0x69, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4c, - 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, - 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x59, 0x4d, 0x4c, 0x49, 0x4e, - 0x4b, 0x10, 0x03, 0x32, 0xeb, 0x04, 0x0a, 0x0d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x14, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x14, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x12, 0x15, - 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, - 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x12, 0x17, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, - 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x72, 0x12, 0x17, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x72, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x19, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x41, - 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x49, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x19, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, - 0x53, 0x74, 0x61, 0x74, 0x12, 0x0c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x32, 0x62, 0x2d, 0x64, 0x65, 0x76, 0x2f, - 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x79, 0x6d, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, + 0x77, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0x34, 0x0a, 0x10, 0x53, 0x74, 0x61, + 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, + 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, + 0xac, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, + 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, + 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x15, + 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x03, 0x67, + 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x75, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x69, 0x64, 0x22, 0x36, + 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2a, 0xb1, 0x01, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, + 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x54, + 0x48, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, + 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x45, 0x4c, + 0x45, 0x54, 0x45, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, + 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x16, 0x0a, + 0x12, 0x44, 0x45, 0x50, 0x54, 0x48, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x06, 0x2a, 0x69, 0x0a, 0x08, 0x46, 0x69, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, + 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x02, 0x12, 0x15, + 0x0a, 0x11, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x59, 0x4d, 0x4c, + 0x49, 0x4e, 0x4b, 0x10, 0x03, 0x32, 0xf3, 0x03, 0x0a, 0x0d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x32, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x12, 0x11, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x12, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, + 0x12, 0x0f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x10, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x12, 0x12, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x2e, 0x0a, 0x07, + 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x0f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x35, 0x0a, 0x0a, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x10, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x11, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x12, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x65, 0x32, 0x62, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, + 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2178,7 +2067,7 @@ func file_volume_proto_rawDescGZIP() []byte { } var file_volume_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_volume_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_volume_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_volume_proto_goTypes = []interface{}{ (UserErrorCode)(0), // 0: UserErrorCode (FileType)(0), // 1: FileType @@ -2186,88 +2075,83 @@ var file_volume_proto_goTypes = []interface{}{ (*EntryInfo)(nil), // 3: EntryInfo (*UnknownVolumeTypeError)(nil), // 4: UnknownVolumeTypeError (*UserError)(nil), // 5: UserError - (*VolumeCreateRequest)(nil), // 6: VolumeCreateRequest - (*VolumeCreateResponse)(nil), // 7: VolumeCreateResponse - (*VolumeDeleteRequest)(nil), // 8: VolumeDeleteRequest - (*VolumeDeleteResponse)(nil), // 9: VolumeDeleteResponse + (*CreateVolumeRequest)(nil), // 6: CreateVolumeRequest + (*CreateVolumeResponse)(nil), // 7: CreateVolumeResponse + (*DeleteVolumeRequest)(nil), // 8: DeleteVolumeRequest + (*DeleteVolumeResponse)(nil), // 9: DeleteVolumeResponse (*VolumeDirectoryItem)(nil), // 10: VolumeDirectoryItem - (*VolumeDirListRequest)(nil), // 11: VolumeDirListRequest - (*VolumeDirListResponse)(nil), // 12: VolumeDirListResponse - (*VolumeDirCreateRequest)(nil), // 13: VolumeDirCreateRequest - (*VolumeDirCreateResponse)(nil), // 14: VolumeDirCreateResponse - (*VolumeDirDeleteRequest)(nil), // 15: VolumeDirDeleteRequest - (*VolumeDirDeleteResponse)(nil), // 16: VolumeDirDeleteResponse - (*VolumeFileGetRequest)(nil), // 17: VolumeFileGetRequest + (*ListDirRequest)(nil), // 11: ListDirRequest + (*ListDirResponse)(nil), // 12: ListDirResponse + (*CreateDirRequest)(nil), // 13: CreateDirRequest + (*CreateDirResponse)(nil), // 14: CreateDirResponse + (*DeletePathRequest)(nil), // 15: DeletePathRequest + (*DeletePathResponse)(nil), // 16: DeletePathResponse + (*GetFileRequest)(nil), // 17: GetFileRequest (*VolumeFileGetResponseStart)(nil), // 18: VolumeFileGetResponseStart (*VolumeFileGetResponseContent)(nil), // 19: VolumeFileGetResponseContent (*VolumeFileGetResponseFinish)(nil), // 20: VolumeFileGetResponseFinish - (*VolumeFileGetResponse)(nil), // 21: VolumeFileGetResponse + (*GetFileResponse)(nil), // 21: GetFileResponse (*VolumeFileCreateStart)(nil), // 22: VolumeFileCreateStart (*VolumeFileCreateContent)(nil), // 23: VolumeFileCreateContent (*VolumeFileCreateFinish)(nil), // 24: VolumeFileCreateFinish - (*VolumeFileCreateRequest)(nil), // 25: VolumeFileCreateRequest - (*VolumeFileCreateResponse)(nil), // 26: VolumeFileCreateResponse - (*VolumeFileDeleteRequest)(nil), // 27: VolumeFileDeleteRequest - (*VolumeFileDeleteResponse)(nil), // 28: VolumeFileDeleteResponse - (*StatRequest)(nil), // 29: StatRequest - (*StatResponse)(nil), // 30: StatResponse - (*VolumeFileUpdateRequest)(nil), // 31: VolumeFileUpdateRequest - (*VolumeFileUpdateResponse)(nil), // 32: VolumeFileUpdateResponse - (*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp + (*CreateFileRequest)(nil), // 25: CreateFileRequest + (*CreateFileResponse)(nil), // 26: CreateFileResponse + (*StatPathRequest)(nil), // 27: StatPathRequest + (*StatPathResponse)(nil), // 28: StatPathResponse + (*UpdatePathRequest)(nil), // 29: UpdatePathRequest + (*UpdatePathResponse)(nil), // 30: UpdatePathResponse + (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp } var file_volume_proto_depIdxs = []int32{ 1, // 0: EntryInfo.type:type_name -> FileType - 33, // 1: EntryInfo.modified_time:type_name -> google.protobuf.Timestamp - 33, // 2: EntryInfo.created_time:type_name -> google.protobuf.Timestamp - 33, // 3: EntryInfo.accessed_time:type_name -> google.protobuf.Timestamp + 31, // 1: EntryInfo.modified_time:type_name -> google.protobuf.Timestamp + 31, // 2: EntryInfo.created_time:type_name -> google.protobuf.Timestamp + 31, // 3: EntryInfo.accessed_time:type_name -> google.protobuf.Timestamp 0, // 4: UserError.code:type_name -> UserErrorCode - 2, // 5: VolumeCreateRequest.volume:type_name -> VolumeInfo - 2, // 6: VolumeDeleteRequest.volume:type_name -> VolumeInfo + 2, // 5: CreateVolumeRequest.volume:type_name -> VolumeInfo + 2, // 6: DeleteVolumeRequest.volume:type_name -> VolumeInfo 3, // 7: VolumeDirectoryItem.entry:type_name -> EntryInfo - 2, // 8: VolumeDirListRequest.volume:type_name -> VolumeInfo - 10, // 9: VolumeDirListResponse.files:type_name -> VolumeDirectoryItem - 2, // 10: VolumeDirCreateRequest.volume:type_name -> VolumeInfo - 3, // 11: VolumeDirCreateResponse.entry:type_name -> EntryInfo - 2, // 12: VolumeDirDeleteRequest.volume:type_name -> VolumeInfo - 2, // 13: VolumeFileGetRequest.volume:type_name -> VolumeInfo - 18, // 14: VolumeFileGetResponse.start:type_name -> VolumeFileGetResponseStart - 19, // 15: VolumeFileGetResponse.content:type_name -> VolumeFileGetResponseContent - 20, // 16: VolumeFileGetResponse.finish:type_name -> VolumeFileGetResponseFinish + 2, // 8: ListDirRequest.volume:type_name -> VolumeInfo + 10, // 9: ListDirResponse.files:type_name -> VolumeDirectoryItem + 2, // 10: CreateDirRequest.volume:type_name -> VolumeInfo + 3, // 11: CreateDirResponse.entry:type_name -> EntryInfo + 2, // 12: DeletePathRequest.volume:type_name -> VolumeInfo + 2, // 13: GetFileRequest.volume:type_name -> VolumeInfo + 18, // 14: GetFileResponse.start:type_name -> VolumeFileGetResponseStart + 19, // 15: GetFileResponse.content:type_name -> VolumeFileGetResponseContent + 20, // 16: GetFileResponse.finish:type_name -> VolumeFileGetResponseFinish 2, // 17: VolumeFileCreateStart.volume:type_name -> VolumeInfo - 22, // 18: VolumeFileCreateRequest.start:type_name -> VolumeFileCreateStart - 23, // 19: VolumeFileCreateRequest.content:type_name -> VolumeFileCreateContent - 24, // 20: VolumeFileCreateRequest.finish:type_name -> VolumeFileCreateFinish - 3, // 21: VolumeFileCreateResponse.entry:type_name -> EntryInfo - 2, // 22: VolumeFileDeleteRequest.volume:type_name -> VolumeInfo - 2, // 23: StatRequest.volume:type_name -> VolumeInfo - 3, // 24: StatResponse.entry:type_name -> EntryInfo - 2, // 25: VolumeFileUpdateRequest.volume:type_name -> VolumeInfo - 3, // 26: VolumeFileUpdateResponse.entry:type_name -> EntryInfo - 6, // 27: VolumeService.Create:input_type -> VolumeCreateRequest - 8, // 28: VolumeService.Delete:input_type -> VolumeDeleteRequest - 11, // 29: VolumeService.ListDir:input_type -> VolumeDirListRequest - 13, // 30: VolumeService.CreateDir:input_type -> VolumeDirCreateRequest - 15, // 31: VolumeService.DeleteDir:input_type -> VolumeDirDeleteRequest - 17, // 32: VolumeService.GetFile:input_type -> VolumeFileGetRequest - 25, // 33: VolumeService.CreateFile:input_type -> VolumeFileCreateRequest - 27, // 34: VolumeService.DeleteFile:input_type -> VolumeFileDeleteRequest - 31, // 35: VolumeService.UpdateFileMetadata:input_type -> VolumeFileUpdateRequest - 29, // 36: VolumeService.Stat:input_type -> StatRequest - 7, // 37: VolumeService.Create:output_type -> VolumeCreateResponse - 9, // 38: VolumeService.Delete:output_type -> VolumeDeleteResponse - 12, // 39: VolumeService.ListDir:output_type -> VolumeDirListResponse - 14, // 40: VolumeService.CreateDir:output_type -> VolumeDirCreateResponse - 16, // 41: VolumeService.DeleteDir:output_type -> VolumeDirDeleteResponse - 21, // 42: VolumeService.GetFile:output_type -> VolumeFileGetResponse - 26, // 43: VolumeService.CreateFile:output_type -> VolumeFileCreateResponse - 28, // 44: VolumeService.DeleteFile:output_type -> VolumeFileDeleteResponse - 32, // 45: VolumeService.UpdateFileMetadata:output_type -> VolumeFileUpdateResponse - 30, // 46: VolumeService.Stat:output_type -> StatResponse - 37, // [37:47] is the sub-list for method output_type - 27, // [27:37] is the sub-list for method input_type - 27, // [27:27] is the sub-list for extension type_name - 27, // [27:27] is the sub-list for extension extendee - 0, // [0:27] is the sub-list for field type_name + 22, // 18: CreateFileRequest.start:type_name -> VolumeFileCreateStart + 23, // 19: CreateFileRequest.content:type_name -> VolumeFileCreateContent + 24, // 20: CreateFileRequest.finish:type_name -> VolumeFileCreateFinish + 3, // 21: CreateFileResponse.entry:type_name -> EntryInfo + 2, // 22: StatPathRequest.volume:type_name -> VolumeInfo + 3, // 23: StatPathResponse.entry:type_name -> EntryInfo + 2, // 24: UpdatePathRequest.volume:type_name -> VolumeInfo + 3, // 25: UpdatePathResponse.entry:type_name -> EntryInfo + 6, // 26: VolumeService.CreateVolume:input_type -> CreateVolumeRequest + 8, // 27: VolumeService.DeleteVolume:input_type -> DeleteVolumeRequest + 13, // 28: VolumeService.CreateDir:input_type -> CreateDirRequest + 11, // 29: VolumeService.ListDir:input_type -> ListDirRequest + 25, // 30: VolumeService.CreateFile:input_type -> CreateFileRequest + 17, // 31: VolumeService.GetFile:input_type -> GetFileRequest + 15, // 32: VolumeService.DeletePath:input_type -> DeletePathRequest + 27, // 33: VolumeService.StatPath:input_type -> StatPathRequest + 29, // 34: VolumeService.UpdatePath:input_type -> UpdatePathRequest + 7, // 35: VolumeService.CreateVolume:output_type -> CreateVolumeResponse + 9, // 36: VolumeService.DeleteVolume:output_type -> DeleteVolumeResponse + 14, // 37: VolumeService.CreateDir:output_type -> CreateDirResponse + 12, // 38: VolumeService.ListDir:output_type -> ListDirResponse + 26, // 39: VolumeService.CreateFile:output_type -> CreateFileResponse + 21, // 40: VolumeService.GetFile:output_type -> GetFileResponse + 16, // 41: VolumeService.DeletePath:output_type -> DeletePathResponse + 28, // 42: VolumeService.StatPath:output_type -> StatPathResponse + 30, // 43: VolumeService.UpdatePath:output_type -> UpdatePathResponse + 35, // [35:44] is the sub-list for method output_type + 26, // [26:35] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name } func init() { file_volume_proto_init() } @@ -2325,7 +2209,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCreateRequest); i { + switch v := v.(*CreateVolumeRequest); i { case 0: return &v.state case 1: @@ -2337,7 +2221,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCreateResponse); i { + switch v := v.(*CreateVolumeResponse); i { case 0: return &v.state case 1: @@ -2349,7 +2233,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDeleteRequest); i { + switch v := v.(*DeleteVolumeRequest); i { case 0: return &v.state case 1: @@ -2361,7 +2245,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDeleteResponse); i { + switch v := v.(*DeleteVolumeResponse); i { case 0: return &v.state case 1: @@ -2385,7 +2269,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDirListRequest); i { + switch v := v.(*ListDirRequest); i { case 0: return &v.state case 1: @@ -2397,7 +2281,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDirListResponse); i { + switch v := v.(*ListDirResponse); i { case 0: return &v.state case 1: @@ -2409,7 +2293,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDirCreateRequest); i { + switch v := v.(*CreateDirRequest); i { case 0: return &v.state case 1: @@ -2421,7 +2305,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDirCreateResponse); i { + switch v := v.(*CreateDirResponse); i { case 0: return &v.state case 1: @@ -2433,7 +2317,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDirDeleteRequest); i { + switch v := v.(*DeletePathRequest); i { case 0: return &v.state case 1: @@ -2445,7 +2329,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDirDeleteResponse); i { + switch v := v.(*DeletePathResponse); i { case 0: return &v.state case 1: @@ -2457,7 +2341,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeFileGetRequest); i { + switch v := v.(*GetFileRequest); i { case 0: return &v.state case 1: @@ -2505,7 +2389,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeFileGetResponse); i { + switch v := v.(*GetFileResponse); i { case 0: return &v.state case 1: @@ -2553,7 +2437,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeFileCreateRequest); i { + switch v := v.(*CreateFileRequest); i { case 0: return &v.state case 1: @@ -2565,7 +2449,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeFileCreateResponse); i { + switch v := v.(*CreateFileResponse); i { case 0: return &v.state case 1: @@ -2577,7 +2461,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeFileDeleteRequest); i { + switch v := v.(*StatPathRequest); i { case 0: return &v.state case 1: @@ -2589,7 +2473,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeFileDeleteResponse); i { + switch v := v.(*StatPathResponse); i { case 0: return &v.state case 1: @@ -2601,7 +2485,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatRequest); i { + switch v := v.(*UpdatePathRequest); i { case 0: return &v.state case 1: @@ -2613,31 +2497,7 @@ func file_volume_proto_init() { } } file_volume_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_volume_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeFileUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_volume_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeFileUpdateResponse); i { + switch v := v.(*UpdatePathResponse); i { case 0: return &v.state case 1: @@ -2652,24 +2512,24 @@ func file_volume_proto_init() { file_volume_proto_msgTypes[1].OneofWrappers = []interface{}{} file_volume_proto_msgTypes[11].OneofWrappers = []interface{}{} file_volume_proto_msgTypes[19].OneofWrappers = []interface{}{ - (*VolumeFileGetResponse_Start)(nil), - (*VolumeFileGetResponse_Content)(nil), - (*VolumeFileGetResponse_Finish)(nil), + (*GetFileResponse_Start)(nil), + (*GetFileResponse_Content)(nil), + (*GetFileResponse_Finish)(nil), } file_volume_proto_msgTypes[20].OneofWrappers = []interface{}{} file_volume_proto_msgTypes[23].OneofWrappers = []interface{}{ - (*VolumeFileCreateRequest_Start)(nil), - (*VolumeFileCreateRequest_Content)(nil), - (*VolumeFileCreateRequest_Finish)(nil), + (*CreateFileRequest_Start)(nil), + (*CreateFileRequest_Content)(nil), + (*CreateFileRequest_Finish)(nil), } - file_volume_proto_msgTypes[29].OneofWrappers = []interface{}{} + file_volume_proto_msgTypes[27].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_volume_proto_rawDesc, NumEnums: 2, - NumMessages: 31, + NumMessages: 29, NumExtensions: 0, NumServices: 1, }, diff --git a/packages/shared/pkg/grpc/orchestrator/volume_grpc.pb.go b/packages/shared/pkg/grpc/orchestrator/volume_grpc.pb.go index 4a73f7ef9e..5ae2344783 100644 --- a/packages/shared/pkg/grpc/orchestrator/volume_grpc.pb.go +++ b/packages/shared/pkg/grpc/orchestrator/volume_grpc.pb.go @@ -19,32 +19,34 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - VolumeService_Create_FullMethodName = "/VolumeService/Create" - VolumeService_Delete_FullMethodName = "/VolumeService/Delete" - VolumeService_ListDir_FullMethodName = "/VolumeService/ListDir" - VolumeService_CreateDir_FullMethodName = "/VolumeService/CreateDir" - VolumeService_DeleteDir_FullMethodName = "/VolumeService/DeleteDir" - VolumeService_GetFile_FullMethodName = "/VolumeService/GetFile" - VolumeService_CreateFile_FullMethodName = "/VolumeService/CreateFile" - VolumeService_DeleteFile_FullMethodName = "/VolumeService/DeleteFile" - VolumeService_UpdateFileMetadata_FullMethodName = "/VolumeService/UpdateFileMetadata" - VolumeService_Stat_FullMethodName = "/VolumeService/Stat" + VolumeService_CreateVolume_FullMethodName = "/VolumeService/CreateVolume" + VolumeService_DeleteVolume_FullMethodName = "/VolumeService/DeleteVolume" + VolumeService_CreateDir_FullMethodName = "/VolumeService/CreateDir" + VolumeService_ListDir_FullMethodName = "/VolumeService/ListDir" + VolumeService_CreateFile_FullMethodName = "/VolumeService/CreateFile" + VolumeService_GetFile_FullMethodName = "/VolumeService/GetFile" + VolumeService_DeletePath_FullMethodName = "/VolumeService/DeletePath" + VolumeService_StatPath_FullMethodName = "/VolumeService/StatPath" + VolumeService_UpdatePath_FullMethodName = "/VolumeService/UpdatePath" ) // VolumeServiceClient is the client API for VolumeService 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 VolumeServiceClient interface { - Create(ctx context.Context, in *VolumeCreateRequest, opts ...grpc.CallOption) (*VolumeCreateResponse, error) - Delete(ctx context.Context, in *VolumeDeleteRequest, opts ...grpc.CallOption) (*VolumeDeleteResponse, error) - ListDir(ctx context.Context, in *VolumeDirListRequest, opts ...grpc.CallOption) (*VolumeDirListResponse, error) - CreateDir(ctx context.Context, in *VolumeDirCreateRequest, opts ...grpc.CallOption) (*VolumeDirCreateResponse, error) - DeleteDir(ctx context.Context, in *VolumeDirDeleteRequest, opts ...grpc.CallOption) (*VolumeDirDeleteResponse, error) - GetFile(ctx context.Context, in *VolumeFileGetRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[VolumeFileGetResponse], error) - CreateFile(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[VolumeFileCreateRequest, VolumeFileCreateResponse], error) - DeleteFile(ctx context.Context, in *VolumeFileDeleteRequest, opts ...grpc.CallOption) (*VolumeFileDeleteResponse, error) - UpdateFileMetadata(ctx context.Context, in *VolumeFileUpdateRequest, opts ...grpc.CallOption) (*VolumeFileUpdateResponse, error) - Stat(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) + // volume operations + CreateVolume(ctx context.Context, in *CreateVolumeRequest, opts ...grpc.CallOption) (*CreateVolumeResponse, error) + DeleteVolume(ctx context.Context, in *DeleteVolumeRequest, opts ...grpc.CallOption) (*DeleteVolumeResponse, error) + // directory operations + CreateDir(ctx context.Context, in *CreateDirRequest, opts ...grpc.CallOption) (*CreateDirResponse, error) + ListDir(ctx context.Context, in *ListDirRequest, opts ...grpc.CallOption) (*ListDirResponse, error) + // file operations + CreateFile(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[CreateFileRequest, CreateFileResponse], error) + GetFile(ctx context.Context, in *GetFileRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetFileResponse], error) + // path operations (file, dir, other?) + DeletePath(ctx context.Context, in *DeletePathRequest, opts ...grpc.CallOption) (*DeletePathResponse, error) + StatPath(ctx context.Context, in *StatPathRequest, opts ...grpc.CallOption) (*StatPathResponse, error) + UpdatePath(ctx context.Context, in *UpdatePathRequest, opts ...grpc.CallOption) (*UpdatePathResponse, error) } type volumeServiceClient struct { @@ -55,63 +57,66 @@ func NewVolumeServiceClient(cc grpc.ClientConnInterface) VolumeServiceClient { return &volumeServiceClient{cc} } -func (c *volumeServiceClient) Create(ctx context.Context, in *VolumeCreateRequest, opts ...grpc.CallOption) (*VolumeCreateResponse, error) { +func (c *volumeServiceClient) CreateVolume(ctx context.Context, in *CreateVolumeRequest, opts ...grpc.CallOption) (*CreateVolumeResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(VolumeCreateResponse) - err := c.cc.Invoke(ctx, VolumeService_Create_FullMethodName, in, out, cOpts...) + out := new(CreateVolumeResponse) + err := c.cc.Invoke(ctx, VolumeService_CreateVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *volumeServiceClient) Delete(ctx context.Context, in *VolumeDeleteRequest, opts ...grpc.CallOption) (*VolumeDeleteResponse, error) { +func (c *volumeServiceClient) DeleteVolume(ctx context.Context, in *DeleteVolumeRequest, opts ...grpc.CallOption) (*DeleteVolumeResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(VolumeDeleteResponse) - err := c.cc.Invoke(ctx, VolumeService_Delete_FullMethodName, in, out, cOpts...) + out := new(DeleteVolumeResponse) + err := c.cc.Invoke(ctx, VolumeService_DeleteVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *volumeServiceClient) ListDir(ctx context.Context, in *VolumeDirListRequest, opts ...grpc.CallOption) (*VolumeDirListResponse, error) { +func (c *volumeServiceClient) CreateDir(ctx context.Context, in *CreateDirRequest, opts ...grpc.CallOption) (*CreateDirResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(VolumeDirListResponse) - err := c.cc.Invoke(ctx, VolumeService_ListDir_FullMethodName, in, out, cOpts...) + out := new(CreateDirResponse) + err := c.cc.Invoke(ctx, VolumeService_CreateDir_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *volumeServiceClient) CreateDir(ctx context.Context, in *VolumeDirCreateRequest, opts ...grpc.CallOption) (*VolumeDirCreateResponse, error) { +func (c *volumeServiceClient) ListDir(ctx context.Context, in *ListDirRequest, opts ...grpc.CallOption) (*ListDirResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(VolumeDirCreateResponse) - err := c.cc.Invoke(ctx, VolumeService_CreateDir_FullMethodName, in, out, cOpts...) + out := new(ListDirResponse) + err := c.cc.Invoke(ctx, VolumeService_ListDir_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *volumeServiceClient) DeleteDir(ctx context.Context, in *VolumeDirDeleteRequest, opts ...grpc.CallOption) (*VolumeDirDeleteResponse, error) { +func (c *volumeServiceClient) CreateFile(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[CreateFileRequest, CreateFileResponse], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(VolumeDirDeleteResponse) - err := c.cc.Invoke(ctx, VolumeService_DeleteDir_FullMethodName, in, out, cOpts...) + stream, err := c.cc.NewStream(ctx, &VolumeService_ServiceDesc.Streams[0], VolumeService_CreateFile_FullMethodName, cOpts...) if err != nil { return nil, err } - return out, nil + x := &grpc.GenericClientStream[CreateFileRequest, CreateFileResponse]{ClientStream: stream} + return x, nil } -func (c *volumeServiceClient) GetFile(ctx context.Context, in *VolumeFileGetRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[VolumeFileGetResponse], error) { +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type VolumeService_CreateFileClient = grpc.ClientStreamingClient[CreateFileRequest, CreateFileResponse] + +func (c *volumeServiceClient) GetFile(ctx context.Context, in *GetFileRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetFileResponse], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - stream, err := c.cc.NewStream(ctx, &VolumeService_ServiceDesc.Streams[0], VolumeService_GetFile_FullMethodName, cOpts...) + stream, err := c.cc.NewStream(ctx, &VolumeService_ServiceDesc.Streams[1], VolumeService_GetFile_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &grpc.GenericClientStream[VolumeFileGetRequest, VolumeFileGetResponse]{ClientStream: stream} + x := &grpc.GenericClientStream[GetFileRequest, GetFileResponse]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -122,45 +127,32 @@ func (c *volumeServiceClient) GetFile(ctx context.Context, in *VolumeFileGetRequ } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type VolumeService_GetFileClient = grpc.ServerStreamingClient[VolumeFileGetResponse] - -func (c *volumeServiceClient) CreateFile(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[VolumeFileCreateRequest, VolumeFileCreateResponse], error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - stream, err := c.cc.NewStream(ctx, &VolumeService_ServiceDesc.Streams[1], VolumeService_CreateFile_FullMethodName, cOpts...) - if err != nil { - return nil, err - } - x := &grpc.GenericClientStream[VolumeFileCreateRequest, VolumeFileCreateResponse]{ClientStream: stream} - return x, nil -} - -// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type VolumeService_CreateFileClient = grpc.ClientStreamingClient[VolumeFileCreateRequest, VolumeFileCreateResponse] +type VolumeService_GetFileClient = grpc.ServerStreamingClient[GetFileResponse] -func (c *volumeServiceClient) DeleteFile(ctx context.Context, in *VolumeFileDeleteRequest, opts ...grpc.CallOption) (*VolumeFileDeleteResponse, error) { +func (c *volumeServiceClient) DeletePath(ctx context.Context, in *DeletePathRequest, opts ...grpc.CallOption) (*DeletePathResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(VolumeFileDeleteResponse) - err := c.cc.Invoke(ctx, VolumeService_DeleteFile_FullMethodName, in, out, cOpts...) + out := new(DeletePathResponse) + err := c.cc.Invoke(ctx, VolumeService_DeletePath_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *volumeServiceClient) UpdateFileMetadata(ctx context.Context, in *VolumeFileUpdateRequest, opts ...grpc.CallOption) (*VolumeFileUpdateResponse, error) { +func (c *volumeServiceClient) StatPath(ctx context.Context, in *StatPathRequest, opts ...grpc.CallOption) (*StatPathResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(VolumeFileUpdateResponse) - err := c.cc.Invoke(ctx, VolumeService_UpdateFileMetadata_FullMethodName, in, out, cOpts...) + out := new(StatPathResponse) + err := c.cc.Invoke(ctx, VolumeService_StatPath_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *volumeServiceClient) Stat(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) { +func (c *volumeServiceClient) UpdatePath(ctx context.Context, in *UpdatePathRequest, opts ...grpc.CallOption) (*UpdatePathResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StatResponse) - err := c.cc.Invoke(ctx, VolumeService_Stat_FullMethodName, in, out, cOpts...) + out := new(UpdatePathResponse) + err := c.cc.Invoke(ctx, VolumeService_UpdatePath_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -171,16 +163,19 @@ func (c *volumeServiceClient) Stat(ctx context.Context, in *StatRequest, opts .. // All implementations must embed UnimplementedVolumeServiceServer // for forward compatibility. type VolumeServiceServer interface { - Create(context.Context, *VolumeCreateRequest) (*VolumeCreateResponse, error) - Delete(context.Context, *VolumeDeleteRequest) (*VolumeDeleteResponse, error) - ListDir(context.Context, *VolumeDirListRequest) (*VolumeDirListResponse, error) - CreateDir(context.Context, *VolumeDirCreateRequest) (*VolumeDirCreateResponse, error) - DeleteDir(context.Context, *VolumeDirDeleteRequest) (*VolumeDirDeleteResponse, error) - GetFile(*VolumeFileGetRequest, grpc.ServerStreamingServer[VolumeFileGetResponse]) error - CreateFile(grpc.ClientStreamingServer[VolumeFileCreateRequest, VolumeFileCreateResponse]) error - DeleteFile(context.Context, *VolumeFileDeleteRequest) (*VolumeFileDeleteResponse, error) - UpdateFileMetadata(context.Context, *VolumeFileUpdateRequest) (*VolumeFileUpdateResponse, error) - Stat(context.Context, *StatRequest) (*StatResponse, error) + // volume operations + CreateVolume(context.Context, *CreateVolumeRequest) (*CreateVolumeResponse, error) + DeleteVolume(context.Context, *DeleteVolumeRequest) (*DeleteVolumeResponse, error) + // directory operations + CreateDir(context.Context, *CreateDirRequest) (*CreateDirResponse, error) + ListDir(context.Context, *ListDirRequest) (*ListDirResponse, error) + // file operations + CreateFile(grpc.ClientStreamingServer[CreateFileRequest, CreateFileResponse]) error + GetFile(*GetFileRequest, grpc.ServerStreamingServer[GetFileResponse]) error + // path operations (file, dir, other?) + DeletePath(context.Context, *DeletePathRequest) (*DeletePathResponse, error) + StatPath(context.Context, *StatPathRequest) (*StatPathResponse, error) + UpdatePath(context.Context, *UpdatePathRequest) (*UpdatePathResponse, error) mustEmbedUnimplementedVolumeServiceServer() } @@ -191,35 +186,32 @@ type VolumeServiceServer interface { // pointer dereference when methods are called. type UnimplementedVolumeServiceServer struct{} -func (UnimplementedVolumeServiceServer) Create(context.Context, *VolumeCreateRequest) (*VolumeCreateResponse, error) { - return nil, status.Error(codes.Unimplemented, "method Create not implemented") +func (UnimplementedVolumeServiceServer) CreateVolume(context.Context, *CreateVolumeRequest) (*CreateVolumeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CreateVolume not implemented") } -func (UnimplementedVolumeServiceServer) Delete(context.Context, *VolumeDeleteRequest) (*VolumeDeleteResponse, error) { - return nil, status.Error(codes.Unimplemented, "method Delete not implemented") +func (UnimplementedVolumeServiceServer) DeleteVolume(context.Context, *DeleteVolumeRequest) (*DeleteVolumeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method DeleteVolume not implemented") } -func (UnimplementedVolumeServiceServer) ListDir(context.Context, *VolumeDirListRequest) (*VolumeDirListResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ListDir not implemented") -} -func (UnimplementedVolumeServiceServer) CreateDir(context.Context, *VolumeDirCreateRequest) (*VolumeDirCreateResponse, error) { +func (UnimplementedVolumeServiceServer) CreateDir(context.Context, *CreateDirRequest) (*CreateDirResponse, error) { return nil, status.Error(codes.Unimplemented, "method CreateDir not implemented") } -func (UnimplementedVolumeServiceServer) DeleteDir(context.Context, *VolumeDirDeleteRequest) (*VolumeDirDeleteResponse, error) { - return nil, status.Error(codes.Unimplemented, "method DeleteDir not implemented") -} -func (UnimplementedVolumeServiceServer) GetFile(*VolumeFileGetRequest, grpc.ServerStreamingServer[VolumeFileGetResponse]) error { - return status.Error(codes.Unimplemented, "method GetFile not implemented") +func (UnimplementedVolumeServiceServer) ListDir(context.Context, *ListDirRequest) (*ListDirResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListDir not implemented") } -func (UnimplementedVolumeServiceServer) CreateFile(grpc.ClientStreamingServer[VolumeFileCreateRequest, VolumeFileCreateResponse]) error { +func (UnimplementedVolumeServiceServer) CreateFile(grpc.ClientStreamingServer[CreateFileRequest, CreateFileResponse]) error { return status.Error(codes.Unimplemented, "method CreateFile not implemented") } -func (UnimplementedVolumeServiceServer) DeleteFile(context.Context, *VolumeFileDeleteRequest) (*VolumeFileDeleteResponse, error) { - return nil, status.Error(codes.Unimplemented, "method DeleteFile not implemented") +func (UnimplementedVolumeServiceServer) GetFile(*GetFileRequest, grpc.ServerStreamingServer[GetFileResponse]) error { + return status.Error(codes.Unimplemented, "method GetFile not implemented") } -func (UnimplementedVolumeServiceServer) UpdateFileMetadata(context.Context, *VolumeFileUpdateRequest) (*VolumeFileUpdateResponse, error) { - return nil, status.Error(codes.Unimplemented, "method UpdateFileMetadata not implemented") +func (UnimplementedVolumeServiceServer) DeletePath(context.Context, *DeletePathRequest) (*DeletePathResponse, error) { + return nil, status.Error(codes.Unimplemented, "method DeletePath not implemented") } -func (UnimplementedVolumeServiceServer) Stat(context.Context, *StatRequest) (*StatResponse, error) { - return nil, status.Error(codes.Unimplemented, "method Stat not implemented") +func (UnimplementedVolumeServiceServer) StatPath(context.Context, *StatPathRequest) (*StatPathResponse, error) { + return nil, status.Error(codes.Unimplemented, "method StatPath not implemented") +} +func (UnimplementedVolumeServiceServer) UpdatePath(context.Context, *UpdatePathRequest) (*UpdatePathResponse, error) { + return nil, status.Error(codes.Unimplemented, "method UpdatePath not implemented") } func (UnimplementedVolumeServiceServer) mustEmbedUnimplementedVolumeServiceServer() {} func (UnimplementedVolumeServiceServer) testEmbeddedByValue() {} @@ -242,62 +234,44 @@ func RegisterVolumeServiceServer(s grpc.ServiceRegistrar, srv VolumeServiceServe s.RegisterService(&VolumeService_ServiceDesc, srv) } -func _VolumeService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(VolumeCreateRequest) +func _VolumeService_CreateVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateVolumeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(VolumeServiceServer).Create(ctx, in) + return srv.(VolumeServiceServer).CreateVolume(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: VolumeService_Create_FullMethodName, + FullMethod: VolumeService_CreateVolume_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VolumeServiceServer).Create(ctx, req.(*VolumeCreateRequest)) + return srv.(VolumeServiceServer).CreateVolume(ctx, req.(*CreateVolumeRequest)) } return interceptor(ctx, in, info, handler) } -func _VolumeService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(VolumeDeleteRequest) +func _VolumeService_DeleteVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteVolumeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(VolumeServiceServer).Delete(ctx, in) + return srv.(VolumeServiceServer).DeleteVolume(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: VolumeService_Delete_FullMethodName, + FullMethod: VolumeService_DeleteVolume_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VolumeServiceServer).Delete(ctx, req.(*VolumeDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VolumeService_ListDir_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(VolumeDirListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VolumeServiceServer).ListDir(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: VolumeService_ListDir_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VolumeServiceServer).ListDir(ctx, req.(*VolumeDirListRequest)) + return srv.(VolumeServiceServer).DeleteVolume(ctx, req.(*DeleteVolumeRequest)) } return interceptor(ctx, in, info, handler) } func _VolumeService_CreateDir_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(VolumeDirCreateRequest) + in := new(CreateDirRequest) if err := dec(in); err != nil { return nil, err } @@ -309,97 +283,97 @@ func _VolumeService_CreateDir_Handler(srv interface{}, ctx context.Context, dec FullMethod: VolumeService_CreateDir_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VolumeServiceServer).CreateDir(ctx, req.(*VolumeDirCreateRequest)) + return srv.(VolumeServiceServer).CreateDir(ctx, req.(*CreateDirRequest)) } return interceptor(ctx, in, info, handler) } -func _VolumeService_DeleteDir_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(VolumeDirDeleteRequest) +func _VolumeService_ListDir_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListDirRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(VolumeServiceServer).DeleteDir(ctx, in) + return srv.(VolumeServiceServer).ListDir(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: VolumeService_DeleteDir_FullMethodName, + FullMethod: VolumeService_ListDir_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VolumeServiceServer).DeleteDir(ctx, req.(*VolumeDirDeleteRequest)) + return srv.(VolumeServiceServer).ListDir(ctx, req.(*ListDirRequest)) } return interceptor(ctx, in, info, handler) } -func _VolumeService_GetFile_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(VolumeFileGetRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(VolumeServiceServer).GetFile(m, &grpc.GenericServerStream[VolumeFileGetRequest, VolumeFileGetResponse]{ServerStream: stream}) +func _VolumeService_CreateFile_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(VolumeServiceServer).CreateFile(&grpc.GenericServerStream[CreateFileRequest, CreateFileResponse]{ServerStream: stream}) } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type VolumeService_GetFileServer = grpc.ServerStreamingServer[VolumeFileGetResponse] +type VolumeService_CreateFileServer = grpc.ClientStreamingServer[CreateFileRequest, CreateFileResponse] -func _VolumeService_CreateFile_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(VolumeServiceServer).CreateFile(&grpc.GenericServerStream[VolumeFileCreateRequest, VolumeFileCreateResponse]{ServerStream: stream}) +func _VolumeService_GetFile_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(GetFileRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(VolumeServiceServer).GetFile(m, &grpc.GenericServerStream[GetFileRequest, GetFileResponse]{ServerStream: stream}) } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type VolumeService_CreateFileServer = grpc.ClientStreamingServer[VolumeFileCreateRequest, VolumeFileCreateResponse] +type VolumeService_GetFileServer = grpc.ServerStreamingServer[GetFileResponse] -func _VolumeService_DeleteFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(VolumeFileDeleteRequest) +func _VolumeService_DeletePath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePathRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(VolumeServiceServer).DeleteFile(ctx, in) + return srv.(VolumeServiceServer).DeletePath(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: VolumeService_DeleteFile_FullMethodName, + FullMethod: VolumeService_DeletePath_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VolumeServiceServer).DeleteFile(ctx, req.(*VolumeFileDeleteRequest)) + return srv.(VolumeServiceServer).DeletePath(ctx, req.(*DeletePathRequest)) } return interceptor(ctx, in, info, handler) } -func _VolumeService_UpdateFileMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(VolumeFileUpdateRequest) +func _VolumeService_StatPath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatPathRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(VolumeServiceServer).UpdateFileMetadata(ctx, in) + return srv.(VolumeServiceServer).StatPath(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: VolumeService_UpdateFileMetadata_FullMethodName, + FullMethod: VolumeService_StatPath_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VolumeServiceServer).UpdateFileMetadata(ctx, req.(*VolumeFileUpdateRequest)) + return srv.(VolumeServiceServer).StatPath(ctx, req.(*StatPathRequest)) } return interceptor(ctx, in, info, handler) } -func _VolumeService_Stat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StatRequest) +func _VolumeService_UpdatePath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdatePathRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(VolumeServiceServer).Stat(ctx, in) + return srv.(VolumeServiceServer).UpdatePath(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: VolumeService_Stat_FullMethodName, + FullMethod: VolumeService_UpdatePath_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VolumeServiceServer).Stat(ctx, req.(*StatRequest)) + return srv.(VolumeServiceServer).UpdatePath(ctx, req.(*UpdatePathRequest)) } return interceptor(ctx, in, info, handler) } @@ -412,49 +386,45 @@ var VolumeService_ServiceDesc = grpc.ServiceDesc{ HandlerType: (*VolumeServiceServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "Create", - Handler: _VolumeService_Create_Handler, - }, - { - MethodName: "Delete", - Handler: _VolumeService_Delete_Handler, + MethodName: "CreateVolume", + Handler: _VolumeService_CreateVolume_Handler, }, { - MethodName: "ListDir", - Handler: _VolumeService_ListDir_Handler, + MethodName: "DeleteVolume", + Handler: _VolumeService_DeleteVolume_Handler, }, { MethodName: "CreateDir", Handler: _VolumeService_CreateDir_Handler, }, { - MethodName: "DeleteDir", - Handler: _VolumeService_DeleteDir_Handler, + MethodName: "ListDir", + Handler: _VolumeService_ListDir_Handler, }, { - MethodName: "DeleteFile", - Handler: _VolumeService_DeleteFile_Handler, + MethodName: "DeletePath", + Handler: _VolumeService_DeletePath_Handler, }, { - MethodName: "UpdateFileMetadata", - Handler: _VolumeService_UpdateFileMetadata_Handler, + MethodName: "StatPath", + Handler: _VolumeService_StatPath_Handler, }, { - MethodName: "Stat", - Handler: _VolumeService_Stat_Handler, + MethodName: "UpdatePath", + Handler: _VolumeService_UpdatePath_Handler, }, }, Streams: []grpc.StreamDesc{ - { - StreamName: "GetFile", - Handler: _VolumeService_GetFile_Handler, - ServerStreams: true, - }, { StreamName: "CreateFile", Handler: _VolumeService_CreateFile_Handler, ClientStreams: true, }, + { + StreamName: "GetFile", + Handler: _VolumeService_GetFile_Handler, + ServerStreams: true, + }, }, Metadata: "volume.proto", }