From 25463344272c0365b9ba1effdcdc4794740959c7 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Tue, 13 Feb 2024 17:40:02 +0100 Subject: [PATCH 01/26] Prepare infra to pass lock holder metadata --- .../storageprovider/storageprovider.go | 9 ++++++++ internal/http/services/owncloud/ocdav/put.go | 7 +++++++ .../http/services/owncloud/ocdav/webdav.go | 1 + pkg/eosclient/eosbinary/eosbinary.go | 7 +++---- pkg/eosclient/eosclient.go | 4 ++-- pkg/eosclient/eosgrpc/eosgrpc.go | 4 ++-- pkg/ocm/storage/outcoming/ocm.go | 21 +++++++++++++++---- pkg/ocm/storage/received/ocm.go | 2 +- pkg/rhttp/datatx/manager/simple/simple.go | 5 ++++- pkg/rhttp/datatx/manager/spaces/spaces.go | 6 +++++- pkg/storage/fs/cephfs/upload.go | 4 +++- pkg/storage/fs/nextcloud/nextcloud.go | 4 ++-- pkg/storage/fs/nextcloud/nextcloud_test.go | 4 ++-- pkg/storage/storage.go | 2 +- pkg/storage/utils/eosfs/upload.go | 4 ++-- pkg/storage/utils/localfs/upload.go | 2 +- tests/helpers/helpers.go | 2 +- 17 files changed, 63 insertions(+), 25 deletions(-) diff --git a/internal/grpc/services/storageprovider/storageprovider.go b/internal/grpc/services/storageprovider/storageprovider.go index bad19304f1..d87b5d81c9 100644 --- a/internal/grpc/services/storageprovider/storageprovider.go +++ b/internal/grpc/services/storageprovider/storageprovider.go @@ -453,6 +453,8 @@ func (s *service) InitiateFileUpload(ctx context.Context, req *provider.Initiate }, nil } + // extract all metadata from (custom) headers + // TODO(lopresti) They are defined in the http/services/ownclod/ocdav package (webdav.go) but duplicated here metadata := map[string]string{} var uploadLength int64 if req.Opaque != nil && req.Opaque.Map != nil { @@ -473,6 +475,13 @@ func (s *service) InitiateFileUpload(ctx context.Context, req *provider.Initiate if req.Opaque.Map["X-OC-Mtime"] != nil { metadata["mtime"] = string(req.Opaque.Map["X-OC-Mtime"].Value) } + // in addition to the lock_id we may have the lock holder + if req.Opaque.Map["Lock-Holder"] != nil { + metadata["lockholder"] = string(req.Opaque.Map["Lock-Holder"].Value) + } + } + if req.LockId != "" { + metadata["lockid"] = req.LockId } uploadIDs, err := s.storage.InitiateUpload(ctx, newRef, uploadLength, metadata) if err != nil { diff --git a/internal/http/services/owncloud/ocdav/put.go b/internal/http/services/owncloud/ocdav/put.go index b813244fb0..75f97fb4d1 100644 --- a/internal/http/services/owncloud/ocdav/put.go +++ b/internal/http/services/owncloud/ocdav/put.go @@ -186,6 +186,13 @@ func (s *svc) handlePut(ctx context.Context, w http.ResponseWriter, r *http.Requ w.Header().Set(HeaderOCMtime, "accepted") } + if lockholder := r.Header.Get(HeaderLockHolder); lockholder != "" { + opaqueMap[HeaderLockHolder] = &typespb.OpaqueEntry{ + Decoder: "plain", + Value: []byte(lockholder), + } + } + // curl -X PUT https://demo.owncloud.com/remote.php/webdav/testcs.bin -u demo:demo -d '123' -v -H 'OC-Checksum: SHA1:40bd001563085fc35165329ea1ff5c5ecbdbbeef' var cparts []string diff --git a/internal/http/services/owncloud/ocdav/webdav.go b/internal/http/services/owncloud/ocdav/webdav.go index 60ad87fdbf..c2e2d58fd5 100644 --- a/internal/http/services/owncloud/ocdav/webdav.go +++ b/internal/http/services/owncloud/ocdav/webdav.go @@ -76,6 +76,7 @@ const ( HeaderOCMtime = "X-OC-Mtime" HeaderExpectedEntityLength = "X-Expected-Entity-Length" HeaderTransferAuth = "TransferHeaderAuthorization" + HeaderLockHolder = "Lock-Holder" ) // WebDavHandler implements a dav endpoint. diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index ecdf8f4f51..5210465359 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -707,7 +707,7 @@ func (c *Client) Read(ctx context.Context, auth eosclient.Authorization, path st } // Write writes a stream to the mgm. -func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path string, stream io.ReadCloser) error { +func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path string, stream io.ReadCloser, metadata map[string]string) error { fd, err := os.CreateTemp(c.opt.CacheDirectory, "eoswrite-") if err != nil { return err @@ -720,12 +720,11 @@ func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path s if err != nil { return err } - - return c.WriteFile(ctx, auth, path, fd.Name()) + return c.WriteFile(ctx, auth, path, fd.Name(), metadata["lockholder"]) } // WriteFile writes an existing file to the mgm. -func (c *Client) WriteFile(ctx context.Context, auth eosclient.Authorization, path, source string) error { +func (c *Client) WriteFile(ctx context.Context, auth eosclient.Authorization, path, source, app string) error { xrdPath := fmt.Sprintf("%s//%s", c.opt.URL, path) args := []string{"--nopbar", "--silent", "-f", source, xrdPath} diff --git a/pkg/eosclient/eosclient.go b/pkg/eosclient/eosclient.go index 0cc28d5705..23eaeb9c11 100644 --- a/pkg/eosclient/eosclient.go +++ b/pkg/eosclient/eosclient.go @@ -51,8 +51,8 @@ type EOSClient interface { Rename(ctx context.Context, auth Authorization, oldPath, newPath string) error List(ctx context.Context, auth Authorization, path string) ([]*FileInfo, error) Read(ctx context.Context, auth Authorization, path string) (io.ReadCloser, error) - Write(ctx context.Context, auth Authorization, path string, stream io.ReadCloser) error - WriteFile(ctx context.Context, auth Authorization, path, source string) error + Write(ctx context.Context, auth Authorization, path string, stream io.ReadCloser, metadata map[string]string) error + WriteFile(ctx context.Context, auth Authorization, path, source, app string) error ListDeletedEntries(ctx context.Context, auth Authorization, maxentries int, from, to time.Time) ([]*DeletedEntry, error) RestoreDeletedEntry(ctx context.Context, auth Authorization, key string) error PurgeDeletedEntries(ctx context.Context, auth Authorization) error diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 59cc0c5fbc..9ce7099ae3 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -1322,7 +1322,7 @@ func (c *Client) Read(ctx context.Context, auth eosclient.Authorization, path st // Write writes a file to the mgm // Somehow the same considerations as Read apply. -func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path string, stream io.ReadCloser) error { +func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path string, stream io.ReadCloser, metadata map[string]string) error { log := appctx.GetLogger(ctx) log.Info().Str("func", "Write").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") var length int64 @@ -1365,7 +1365,7 @@ func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path s } // WriteFile writes an existing file to the mgm. Old xrdcp utility. -func (c *Client) WriteFile(ctx context.Context, auth eosclient.Authorization, path, source string) error { +func (c *Client) WriteFile(ctx context.Context, auth eosclient.Authorization, path, source, app string) error { log := appctx.GetLogger(ctx) log.Info().Str("func", "WriteFile").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Str("source", source).Msg("") diff --git a/pkg/ocm/storage/outcoming/ocm.go b/pkg/ocm/storage/outcoming/ocm.go index ac80120f7c..4fa16f9ac3 100644 --- a/pkg/ocm/storage/outcoming/ocm.go +++ b/pkg/ocm/storage/outcoming/ocm.go @@ -32,7 +32,7 @@ import ( rpcv1beta1 "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1" ocmv1beta1 "github.com/cs3org/go-cs3apis/cs3/sharing/ocm/v1beta1" provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" - typepb "github.com/cs3org/go-cs3apis/cs3/types/v1beta1" + typespb "github.com/cs3org/go-cs3apis/cs3/types/v1beta1" "github.com/cs3org/reva/internal/http/services/datagateway" "github.com/cs3org/reva/internal/http/services/owncloud/ocs/conversions" @@ -396,14 +396,27 @@ func getUploadProtocol(protocols []*gateway.FileUploadProtocol, protocol string) return "", "", false } -func (d *driver) Upload(ctx context.Context, ref *provider.Reference, content io.ReadCloser) error { +func (d *driver) Upload(ctx context.Context, ref *provider.Reference, content io.ReadCloser, metadata map[string]string) error { share, rel, err := d.shareAndRelativePathFromRef(ctx, ref) if err != nil { return err } return d.unwrappedOpFromShareCreator(ctx, share, rel, func(ctx context.Context, newRef *provider.Reference) error { - initRes, err := d.gateway.InitiateFileUpload(ctx, &provider.InitiateFileUploadRequest{Ref: newRef}) + opaqueMap := map[string]*typespb.OpaqueEntry{} + if lockholder := metadata["lockholder"]; lockholder != "" { + opaqueMap["Lock-Holder"] = &typespb.OpaqueEntry{ + Decoder: "plain", + Value: []byte(lockholder), + } + } + initRes, err := d.gateway.InitiateFileUpload(ctx, &provider.InitiateFileUploadRequest{ + Ref: newRef, + LockId: metadata["lockid"], + Opaque: &typespb.Opaque{ + Map: opaqueMap, + }, + }) switch { case err != nil: return err @@ -673,7 +686,7 @@ func (d *driver) RestoreRevision(ctx context.Context, ref *provider.Reference, k return errtypes.NotSupported("operation not supported") } -func (d *driver) ListRecycle(ctx context.Context, basePath, key, relativePath string, from, to *typepb.Timestamp) ([]*provider.RecycleItem, error) { +func (d *driver) ListRecycle(ctx context.Context, basePath, key, relativePath string, from, to *typespb.Timestamp) ([]*provider.RecycleItem, error) { return nil, errtypes.NotSupported("operation not supported") } diff --git a/pkg/ocm/storage/received/ocm.go b/pkg/ocm/storage/received/ocm.go index 89e73ef29b..75a0f38ff6 100644 --- a/pkg/ocm/storage/received/ocm.go +++ b/pkg/ocm/storage/received/ocm.go @@ -285,7 +285,7 @@ func (d *driver) InitiateUpload(ctx context.Context, ref *provider.Reference, _ }, nil } -func (d *driver) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser) error { +func (d *driver) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser, _ map[string]string) error { client, _, rel, err := d.webdavClient(ctx, ref) if err != nil { return err diff --git a/pkg/rhttp/datatx/manager/simple/simple.go b/pkg/rhttp/datatx/manager/simple/simple.go index 40bbd3104e..8ce580e61a 100644 --- a/pkg/rhttp/datatx/manager/simple/simple.go +++ b/pkg/rhttp/datatx/manager/simple/simple.go @@ -75,8 +75,9 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { defer r.Body.Close() ref := &provider.Reference{Path: fn} + metadata := map[string]string{} - err := fs.Upload(ctx, ref, r.Body) + err := fs.Upload(ctx, ref, r.Body, metadata) switch v := err.(type) { case nil: w.WriteHeader(http.StatusOK) @@ -92,6 +93,8 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { w.WriteHeader(http.StatusUnauthorized) case errtypes.InsufficientStorage: w.WriteHeader(http.StatusInsufficientStorage) + case errtypes.BadRequest: + w.WriteHeader(http.StatusConflict) default: sublog.Error().Err(v).Msg("error uploading file") w.WriteHeader(http.StatusInternalServerError) diff --git a/pkg/rhttp/datatx/manager/spaces/spaces.go b/pkg/rhttp/datatx/manager/spaces/spaces.go index 07a346d32e..03ce1cd799 100644 --- a/pkg/rhttp/datatx/manager/spaces/spaces.go +++ b/pkg/rhttp/datatx/manager/spaces/spaces.go @@ -96,7 +96,9 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { ResourceId: &provider.ResourceId{StorageId: storageid, OpaqueId: opaqeid}, Path: fn, } - err = fs.Upload(ctx, ref, r.Body) + metadata := map[string]string{} + + err = fs.Upload(ctx, ref, r.Body, metadata) switch v := err.(type) { case nil: w.WriteHeader(http.StatusOK) @@ -112,6 +114,8 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { w.WriteHeader(http.StatusUnauthorized) case errtypes.InsufficientStorage: w.WriteHeader(http.StatusInsufficientStorage) + case errtypes.BadRequest: + w.WriteHeader(http.StatusConflict) default: sublog.Error().Err(v).Msg("error uploading file") w.WriteHeader(http.StatusInternalServerError) diff --git a/pkg/storage/fs/cephfs/upload.go b/pkg/storage/fs/cephfs/upload.go index d5cc71a863..64ac7f7179 100644 --- a/pkg/storage/fs/cephfs/upload.go +++ b/pkg/storage/fs/cephfs/upload.go @@ -31,10 +31,12 @@ import ( "github.com/pkg/errors" ) -func (fs *cephfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser) error { +func (fs *cephfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser, metadata map[string]string) error { user := fs.makeUser(ctx) p := ref.GetPath() + // TODO(lopresti) validate lock metadata if present + ok, err := IsChunked(p) if err != nil { return errors.Wrap(err, "cephfs: error checking path") diff --git a/pkg/storage/fs/nextcloud/nextcloud.go b/pkg/storage/fs/nextcloud/nextcloud.go index db081d3d73..e66307ca49 100644 --- a/pkg/storage/fs/nextcloud/nextcloud.go +++ b/pkg/storage/fs/nextcloud/nextcloud.go @@ -317,8 +317,8 @@ func (nc *StorageDriver) InitiateUpload(ctx context.Context, ref *provider.Refer return res, err } -// Upload as defined in the storage.FS interface. -func (nc *StorageDriver) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser) error { +// Upload as defined in the storage.FS interface. The metadata parameters (e.g. lock context) are ignored. +func (nc *StorageDriver) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser, _ map[string]string) error { req, err := nc.prepareRequest(ctx, http.MethodPut, filepath.Join("/Upload/home", ref.Path), r) if err != nil { return err diff --git a/pkg/storage/fs/nextcloud/nextcloud_test.go b/pkg/storage/fs/nextcloud/nextcloud_test.go index 5ff07bdb16..753b56fff5 100644 --- a/pkg/storage/fs/nextcloud/nextcloud_test.go +++ b/pkg/storage/fs/nextcloud/nextcloud_test.go @@ -351,7 +351,7 @@ var _ = Describe("Nextcloud", func() { }) }) - // Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser) error + // Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser, metadata map[string]string) error Describe("Upload", func() { It("calls the Upload endpoint", func() { nc, called, teardown := setUpNextcloudServer() @@ -366,7 +366,7 @@ var _ = Describe("Nextcloud", func() { } stringReader := strings.NewReader("shiny!") stringReadCloser := io.NopCloser(stringReader) - err := nc.Upload(ctx, ref, stringReadCloser) + err := nc.Upload(ctx, ref, stringReadCloser, map[string]string{}) Expect(err).ToNot(HaveOccurred()) checkCalled(called, `PUT /apps/sciencemesh/~tester/api/storage/Upload/home/some/file/path.txt shiny!`) }) diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index 54de8aefa1..1ce30d9142 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -39,7 +39,7 @@ type FS interface { GetMD(ctx context.Context, ref *provider.Reference, mdKeys []string) (*provider.ResourceInfo, error) ListFolder(ctx context.Context, ref *provider.Reference, mdKeys []string) ([]*provider.ResourceInfo, error) InitiateUpload(ctx context.Context, ref *provider.Reference, uploadLength int64, metadata map[string]string) (map[string]string, error) - Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser) error + Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser, metadata map[string]string) error Download(ctx context.Context, ref *provider.Reference) (io.ReadCloser, error) ListRevisions(ctx context.Context, ref *provider.Reference) ([]*provider.FileVersion, error) DownloadRevision(ctx context.Context, ref *provider.Reference, key string) (io.ReadCloser, error) diff --git a/pkg/storage/utils/eosfs/upload.go b/pkg/storage/utils/eosfs/upload.go index 2c53920fe1..5d2818f86f 100644 --- a/pkg/storage/utils/eosfs/upload.go +++ b/pkg/storage/utils/eosfs/upload.go @@ -30,7 +30,7 @@ import ( "github.com/pkg/errors" ) -func (fs *eosfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser) error { +func (fs *eosfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser, metadata map[string]string) error { p, err := fs.resolve(ctx, ref) if err != nil { return errors.Wrap(err, "eos: error resolving reference") @@ -75,7 +75,7 @@ func (fs *eosfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadC if err != nil { return err } - return fs.c.Write(ctx, auth, fn, r) + return fs.c.Write(ctx, auth, fn, r, metadata) } func (fs *eosfs) InitiateUpload(ctx context.Context, ref *provider.Reference, uploadLength int64, metadata map[string]string) (map[string]string, error) { diff --git a/pkg/storage/utils/localfs/upload.go b/pkg/storage/utils/localfs/upload.go index 67967fa495..604cd26b4f 100644 --- a/pkg/storage/utils/localfs/upload.go +++ b/pkg/storage/utils/localfs/upload.go @@ -39,7 +39,7 @@ import ( var defaultFilePerm = os.FileMode(0664) -func (fs *localfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser) error { +func (fs *localfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadCloser, metadata map[string]string) error { upload, err := fs.GetUpload(ctx, ref.GetPath()) if err != nil { return errors.Wrap(err, "localfs: error retrieving upload") diff --git a/tests/helpers/helpers.go b/tests/helpers/helpers.go index d84923b15c..2354c72be0 100644 --- a/tests/helpers/helpers.go +++ b/tests/helpers/helpers.go @@ -105,7 +105,7 @@ func Upload(ctx context.Context, fs storage.FS, ref *provider.Reference, content return errors.New("simple upload method not available") } uploadRef := &provider.Reference{Path: "/" + uploadID} - err = fs.Upload(ctx, uploadRef, io.NopCloser(bytes.NewReader(content))) + err = fs.Upload(ctx, uploadRef, io.NopCloser(bytes.NewReader(content)), map[string]string{}) return err } From 10364eebc6bdde5a383b4b24c71dd3e16825ef57 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 14 Feb 2024 13:47:41 +0100 Subject: [PATCH 02/26] Propagate lock holder to eos --- pkg/eosclient/eosbinary/eosbinary.go | 6 +++--- pkg/eosclient/eosclient.go | 2 +- pkg/eosclient/eosgrpc/eosgrpc.go | 6 +++--- pkg/eosclient/eosgrpc/eoshttp.go | 7 +++++-- pkg/storage/utils/eosfs/eosfs.go | 4 +++- pkg/storage/utils/eosfs/upload.go | 11 ++++++++++- 6 files changed, 25 insertions(+), 11 deletions(-) diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index 5210465359..995fbac932 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -707,7 +707,7 @@ func (c *Client) Read(ctx context.Context, auth eosclient.Authorization, path st } // Write writes a stream to the mgm. -func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path string, stream io.ReadCloser, metadata map[string]string) error { +func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path string, stream io.ReadCloser, app string) error { fd, err := os.CreateTemp(c.opt.CacheDirectory, "eoswrite-") if err != nil { return err @@ -720,7 +720,7 @@ func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path s if err != nil { return err } - return c.WriteFile(ctx, auth, path, fd.Name(), metadata["lockholder"]) + return c.WriteFile(ctx, auth, path, fd.Name(), app) } // WriteFile writes an existing file to the mgm. @@ -731,7 +731,7 @@ func (c *Client) WriteFile(ctx context.Context, auth eosclient.Authorization, pa if auth.Token != "" { args[4] += "?authz=" + auth.Token } else if auth.Role.UID != "" && auth.Role.GID != "" { - args = append(args, fmt.Sprintf("-ODeos.ruid=%s&eos.rgid=%s&eos.app=reva_eosclient::write", auth.Role.UID, auth.Role.GID)) + args = append(args, fmt.Sprintf("-ODeos.ruid=%s&eos.rgid=%s&eos.app=%s", auth.Role.UID, auth.Role.GID, app)) } _, _, err := c.executeXRDCopy(ctx, args) diff --git a/pkg/eosclient/eosclient.go b/pkg/eosclient/eosclient.go index 23eaeb9c11..d4a5f0a0b3 100644 --- a/pkg/eosclient/eosclient.go +++ b/pkg/eosclient/eosclient.go @@ -51,7 +51,7 @@ type EOSClient interface { Rename(ctx context.Context, auth Authorization, oldPath, newPath string) error List(ctx context.Context, auth Authorization, path string) ([]*FileInfo, error) Read(ctx context.Context, auth Authorization, path string) (io.ReadCloser, error) - Write(ctx context.Context, auth Authorization, path string, stream io.ReadCloser, metadata map[string]string) error + Write(ctx context.Context, auth Authorization, path string, stream io.ReadCloser, app string) error WriteFile(ctx context.Context, auth Authorization, path, source, app string) error ListDeletedEntries(ctx context.Context, auth Authorization, maxentries int, from, to time.Time) ([]*DeletedEntry, error) RestoreDeletedEntry(ctx context.Context, auth Authorization, key string) error diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 9ce7099ae3..54c11d6426 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -1322,7 +1322,7 @@ func (c *Client) Read(ctx context.Context, auth eosclient.Authorization, path st // Write writes a file to the mgm // Somehow the same considerations as Read apply. -func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path string, stream io.ReadCloser, metadata map[string]string) error { +func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path string, stream io.ReadCloser, app string) error { log := appctx.GetLogger(ctx) log.Info().Str("func", "Write").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") var length int64 @@ -1355,10 +1355,10 @@ func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path s defer wfd.Close() defer os.RemoveAll(fd.Name()) - return c.httpcl.PUTFile(ctx, u.Username, auth, path, wfd, length) + return c.httpcl.PUTFile(ctx, u.Username, auth, path, wfd, length, app) } - return c.httpcl.PUTFile(ctx, u.Username, auth, path, stream, length) + return c.httpcl.PUTFile(ctx, u.Username, auth, path, stream, length, app) // return c.httpcl.PUTFile(ctx, remoteuser, auth, urlpathng, stream) // return c.WriteFile(ctx, uid, gid, path, fd.Name()) diff --git a/pkg/eosclient/eosgrpc/eoshttp.go b/pkg/eosclient/eosgrpc/eoshttp.go index e75fc8c409..b78312d634 100644 --- a/pkg/eosclient/eosgrpc/eoshttp.go +++ b/pkg/eosclient/eosgrpc/eoshttp.go @@ -360,9 +360,9 @@ func (c *EOSHTTPClient) GETFile(ctx context.Context, remoteuser string, auth eos } // PUTFile does an entire PUT to upload a full file, taking the data from a stream. -func (c *EOSHTTPClient) PUTFile(ctx context.Context, remoteuser string, auth eosclient.Authorization, urlpath string, stream io.ReadCloser, length int64) error { +func (c *EOSHTTPClient) PUTFile(ctx context.Context, remoteuser string, auth eosclient.Authorization, urlpath string, stream io.ReadCloser, length int64, app string) error { log := appctx.GetLogger(ctx) - log.Info().Str("func", "PUTFile").Str("remoteuser", remoteuser).Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", urlpath).Int64("length", length).Msg("") + log.Info().Str("func", "PUTFile").Str("remoteuser", remoteuser).Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", urlpath).Int64("length", length).Str("app", app).Msg("") // Now send the req and see what happens finalurl, err := c.buildFullURL(urlpath, auth) @@ -376,6 +376,9 @@ func (c *EOSHTTPClient) PUTFile(ctx context.Context, remoteuser string, auth eos return err } + if app != "" { + req.Header.Set("app", app) + } req.Close = true ntries := 0 diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index d98bde1fe5..00b913f268 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -833,7 +833,9 @@ func encodeLock(l *provider.Lock) (string, string, error) { } var a string if l.AppName != "" { - a = l.AppName + // cf. upload implementation + r := strings.NewReplacer(" ", "_") + a = "reva_" + strings.ToLower(r.Replace(l.AppName)) } else { a = "*" } diff --git a/pkg/storage/utils/eosfs/upload.go b/pkg/storage/utils/eosfs/upload.go index 5d2818f86f..0213dd78cb 100644 --- a/pkg/storage/utils/eosfs/upload.go +++ b/pkg/storage/utils/eosfs/upload.go @@ -23,6 +23,7 @@ import ( "io" "os" "path" + "strings" provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" "github.com/cs3org/reva/pkg/errtypes" @@ -75,7 +76,15 @@ func (fs *eosfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadC if err != nil { return err } - return fs.c.Write(ctx, auth, fn, r, metadata) + + app := metadata["lockholder"] + if app == "" { + app = "reva_eosclient::write" + } else { + r := strings.NewReplacer(" ", "_") + app = "reva_" + strings.ToLower(r.Replace(app)) + } + return fs.c.Write(ctx, auth, fn, r, app) } func (fs *eosfs) InitiateUpload(ctx context.Context, ref *provider.Reference, uploadLength int64, metadata map[string]string) (map[string]string, error) { From 507ef83283a1929218fb4cdaf51a714406fbcd34 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 14 Feb 2024 16:36:10 +0100 Subject: [PATCH 03/26] changelog --- changelog/unreleased/locks-uploads.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/unreleased/locks-uploads.md diff --git a/changelog/unreleased/locks-uploads.md b/changelog/unreleased/locks-uploads.md new file mode 100644 index 0000000000..0c66fca473 --- /dev/null +++ b/changelog/unreleased/locks-uploads.md @@ -0,0 +1,6 @@ +Enhancement: Pass lock holder metadata on uploads + +We now pass relevant metadata (lock id and lock holder) downstream +on uploads, and handle the case of conflicts due to lock mismatch. + +https://github.com/cs3org/reva/pull/4514 From 507399b52b4007c5584955f5ff8dbcecf80e99d7 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 14 Feb 2024 17:58:25 +0100 Subject: [PATCH 04/26] Changed strategy following cs3org/cs3apis#226 --- .../storageprovider/storageprovider.go | 9 --------- internal/http/services/owncloud/ocdav/put.go | 13 ++++++------ .../http/services/owncloud/ocdav/webdav.go | 3 ++- pkg/ocm/storage/outcoming/ocm.go | 20 ++++++++----------- pkg/rhttp/datatx/manager/simple/simple.go | 7 +++++++ pkg/rhttp/datatx/manager/spaces/spaces.go | 7 +++++++ 6 files changed, 30 insertions(+), 29 deletions(-) diff --git a/internal/grpc/services/storageprovider/storageprovider.go b/internal/grpc/services/storageprovider/storageprovider.go index d87b5d81c9..bad19304f1 100644 --- a/internal/grpc/services/storageprovider/storageprovider.go +++ b/internal/grpc/services/storageprovider/storageprovider.go @@ -453,8 +453,6 @@ func (s *service) InitiateFileUpload(ctx context.Context, req *provider.Initiate }, nil } - // extract all metadata from (custom) headers - // TODO(lopresti) They are defined in the http/services/ownclod/ocdav package (webdav.go) but duplicated here metadata := map[string]string{} var uploadLength int64 if req.Opaque != nil && req.Opaque.Map != nil { @@ -475,13 +473,6 @@ func (s *service) InitiateFileUpload(ctx context.Context, req *provider.Initiate if req.Opaque.Map["X-OC-Mtime"] != nil { metadata["mtime"] = string(req.Opaque.Map["X-OC-Mtime"].Value) } - // in addition to the lock_id we may have the lock holder - if req.Opaque.Map["Lock-Holder"] != nil { - metadata["lockholder"] = string(req.Opaque.Map["Lock-Holder"].Value) - } - } - if req.LockId != "" { - metadata["lockid"] = req.LockId } uploadIDs, err := s.storage.InitiateUpload(ctx, newRef, uploadLength, metadata) if err != nil { diff --git a/internal/http/services/owncloud/ocdav/put.go b/internal/http/services/owncloud/ocdav/put.go index 75f97fb4d1..e9a000b1bf 100644 --- a/internal/http/services/owncloud/ocdav/put.go +++ b/internal/http/services/owncloud/ocdav/put.go @@ -186,13 +186,6 @@ func (s *svc) handlePut(ctx context.Context, w http.ResponseWriter, r *http.Requ w.Header().Set(HeaderOCMtime, "accepted") } - if lockholder := r.Header.Get(HeaderLockHolder); lockholder != "" { - opaqueMap[HeaderLockHolder] = &typespb.OpaqueEntry{ - Decoder: "plain", - Value: []byte(lockholder), - } - } - // curl -X PUT https://demo.owncloud.com/remote.php/webdav/testcs.bin -u demo:demo -d '123' -v -H 'OC-Checksum: SHA1:40bd001563085fc35165329ea1ff5c5ecbdbbeef' var cparts []string @@ -278,6 +271,12 @@ func (s *svc) handlePut(ctx context.Context, w http.ResponseWriter, r *http.Requ return } httpReq.Header.Set(datagateway.TokenTransportHeader, token) + if lockid := r.Header.Get(HeaderLockID); lockid != "" { + httpReq.Header.Set(HeaderLockID, lockid) + } + if lockholder := r.Header.Get(HeaderLockHolder); lockholder != "" { + httpReq.Header.Set(HeaderLockHolder, lockholder) + } httpRes, err := s.client.Do(httpReq) if err != nil { diff --git a/internal/http/services/owncloud/ocdav/webdav.go b/internal/http/services/owncloud/ocdav/webdav.go index c2e2d58fd5..06a1480156 100644 --- a/internal/http/services/owncloud/ocdav/webdav.go +++ b/internal/http/services/owncloud/ocdav/webdav.go @@ -76,7 +76,8 @@ const ( HeaderOCMtime = "X-OC-Mtime" HeaderExpectedEntityLength = "X-Expected-Entity-Length" HeaderTransferAuth = "TransferHeaderAuthorization" - HeaderLockHolder = "Lock-Holder" + HeaderLockID = "X-Lock-Id" + HeaderLockHolder = "X-Lock-Holder" ) // WebDavHandler implements a dav endpoint. diff --git a/pkg/ocm/storage/outcoming/ocm.go b/pkg/ocm/storage/outcoming/ocm.go index 4fa16f9ac3..28fd9a5c5c 100644 --- a/pkg/ocm/storage/outcoming/ocm.go +++ b/pkg/ocm/storage/outcoming/ocm.go @@ -34,6 +34,7 @@ import ( provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" typespb "github.com/cs3org/go-cs3apis/cs3/types/v1beta1" "github.com/cs3org/reva/internal/http/services/datagateway" + "github.com/cs3org/reva/internal/http/services/owncloud/ocdav" "github.com/cs3org/reva/internal/http/services/owncloud/ocs/conversions" "github.com/cs3org/reva/pkg/appctx" @@ -403,20 +404,9 @@ func (d *driver) Upload(ctx context.Context, ref *provider.Reference, content io } return d.unwrappedOpFromShareCreator(ctx, share, rel, func(ctx context.Context, newRef *provider.Reference) error { - opaqueMap := map[string]*typespb.OpaqueEntry{} - if lockholder := metadata["lockholder"]; lockholder != "" { - opaqueMap["Lock-Holder"] = &typespb.OpaqueEntry{ - Decoder: "plain", - Value: []byte(lockholder), - } - } initRes, err := d.gateway.InitiateFileUpload(ctx, &provider.InitiateFileUploadRequest{ Ref: newRef, - LockId: metadata["lockid"], - Opaque: &typespb.Opaque{ - Map: opaqueMap, - }, - }) + LockId: metadata["lockid"]}) switch { case err != nil: return err @@ -435,6 +425,12 @@ func (d *driver) Upload(ctx context.Context, ref *provider.Reference, content io } httpReq.Header.Set(datagateway.TokenTransportHeader, token) + if lockid := metadata["lockid"]; lockid != "" { + httpReq.Header.Set(ocdav.HeaderLockID, lockid) + } + if lockholder := metadata["lockholder"]; lockholder != "" { + httpReq.Header.Set(ocdav.HeaderLockHolder, lockholder) + } httpRes, err := httpclient.New().Do(httpReq) if err != nil { diff --git a/pkg/rhttp/datatx/manager/simple/simple.go b/pkg/rhttp/datatx/manager/simple/simple.go index 8ce580e61a..b1b489a676 100644 --- a/pkg/rhttp/datatx/manager/simple/simple.go +++ b/pkg/rhttp/datatx/manager/simple/simple.go @@ -23,6 +23,7 @@ import ( "net/http" provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" + "github.com/cs3org/reva/internal/http/services/owncloud/ocdav" "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/errtypes" "github.com/cs3org/reva/pkg/rhttp/datatx" @@ -76,6 +77,12 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { ref := &provider.Reference{Path: fn} metadata := map[string]string{} + if lockid := r.Header.Get(ocdav.HeaderLockID); lockid != "" { + metadata["lockid"] = lockid + } + if lockholder := r.Header.Get(ocdav.HeaderLockHolder); lockholder != "" { + metadata["lockholder"] = lockholder + } err := fs.Upload(ctx, ref, r.Body, metadata) switch v := err.(type) { diff --git a/pkg/rhttp/datatx/manager/spaces/spaces.go b/pkg/rhttp/datatx/manager/spaces/spaces.go index 03ce1cd799..4f95b47f10 100644 --- a/pkg/rhttp/datatx/manager/spaces/spaces.go +++ b/pkg/rhttp/datatx/manager/spaces/spaces.go @@ -25,6 +25,7 @@ import ( "strings" provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" + "github.com/cs3org/reva/internal/http/services/owncloud/ocdav" "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/errtypes" "github.com/cs3org/reva/pkg/rhttp/datatx" @@ -97,6 +98,12 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { Path: fn, } metadata := map[string]string{} + if lockid := r.Header.Get(ocdav.HeaderLockID); lockid != "" { + metadata["lockid"] = lockid + } + if lockholder := r.Header.Get(ocdav.HeaderLockHolder); lockholder != "" { + metadata["lockholder"] = lockholder + } err = fs.Upload(ctx, ref, r.Body, metadata) switch v := err.(type) { From 51c3cafd4177a24996847b15b4c74e2e3028d4b2 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Thu, 15 Feb 2024 10:48:07 +0100 Subject: [PATCH 05/26] eos: properly propagate lock errors as GRPC BadRequest -> HTTP 409 --- pkg/eosclient/eosbinary/eosbinary.go | 5 +++++ pkg/eosclient/eosgrpc/eoshttp.go | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index 995fbac932..f6d790804f 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -203,6 +203,11 @@ func (c *Client) executeXRDCopy(ctx context.Context, cmdArgs []string) (string, err = errtypes.InvalidCredentials("eosclient: no sufficient permissions for the operation") } + // check for lock mismatch error + if strings.Contains(errBuf.String(), "file has a valid extended attribute lock") { + err = errtypes.BadRequest("eosclient: lock mismatch") + } + args := fmt.Sprintf("%s", cmd.Args) env := fmt.Sprintf("%s", cmd.Env) log.Info().Str("args", args).Str("env", env).Int("exit", exitStatus).Msg("eos cmd") diff --git a/pkg/eosclient/eosgrpc/eoshttp.go b/pkg/eosclient/eosgrpc/eoshttp.go index b78312d634..7de32f5cf3 100644 --- a/pkg/eosclient/eosgrpc/eoshttp.go +++ b/pkg/eosclient/eosgrpc/eoshttp.go @@ -210,8 +210,8 @@ func (c *EOSHTTPClient) doReq(req *http.Request, remoteuser string) (*http.Respo return resp, err } -// If the error is not nil, take that -// If there is an error coming from EOS, erturn a descriptive error. +// If the error is not nil, take that. +// If there is an error coming from EOS, return a descriptive error. func (c *EOSHTTPClient) getRespError(rsp *http.Response, err error) error { if err != nil { return err @@ -228,6 +228,8 @@ func (c *EOSHTTPClient) getRespError(rsp *http.Response, err error) error { return errtypes.PermissionDenied(rspdesc(rsp)) case http.StatusNotFound: return errtypes.NotFound(rspdesc(rsp)) + case http.StatusConflict: + return errtypes.BadRequest(rspdesc(rsp)) } return errtypes.InternalError("Err from EOS: " + rspdesc(rsp)) From ce38bcc67a73a1e78d749412bf713f797d8fa1da Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Fri, 16 Feb 2024 16:10:21 +0100 Subject: [PATCH 06/26] Cosmetic change --- internal/grpc/services/storageprovider/storageprovider.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/grpc/services/storageprovider/storageprovider.go b/internal/grpc/services/storageprovider/storageprovider.go index bad19304f1..ad97acc374 100644 --- a/internal/grpc/services/storageprovider/storageprovider.go +++ b/internal/grpc/services/storageprovider/storageprovider.go @@ -284,7 +284,7 @@ func (s *service) SetLock(ctx context.Context, req *provider.SetLockRequest) (*p var st *rpc.Status switch err.(type) { case errtypes.IsNotFound: - st = status.NewNotFound(ctx, "path not found when setting lock") + st = status.NewNotFound(ctx, "resource not found when setting lock") case errtypes.PermissionDenied: st = status.NewPermissionDenied(ctx, err, "permission denied") case errtypes.BadRequest: From 0ed9ef16650495065a591e290e01f6b97f5069a8 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Tue, 27 Feb 2024 18:55:39 +0100 Subject: [PATCH 07/26] eosfs: fixed lock mismatch error reporting --- pkg/eosclient/eosbinary/eosbinary.go | 5 ++++- pkg/eosclient/eosclient.go | 4 ++++ pkg/storage/utils/eosfs/eosfs.go | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index f6d790804f..448c5fffcc 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -490,9 +490,12 @@ func (c *Client) setEOSAttr(ctx context.Context, auth eosclient.Authorization, a _, _, err := c.executeEOS(ctx, args, auth) if err != nil { var exErr *exec.ExitError - if errors.As(err, &exErr) && exErr.ExitCode() == 17 { + if errors.As(err, &exErr) && exErr.ExitCode() == 17 { // EEXIST return eosclient.AttrAlreadyExistsError } + if errors.As(err, &exErr) && exErr.ExitCode() == 16 { // EBUSY -> Locked + return eosclient.FileIsLockedError + } return err } return nil diff --git a/pkg/eosclient/eosclient.go b/pkg/eosclient/eosclient.go index d4a5f0a0b3..7cc59a4cc2 100644 --- a/pkg/eosclient/eosclient.go +++ b/pkg/eosclient/eosclient.go @@ -154,3 +154,7 @@ const AttrAlreadyExistsError = errtypes.BadRequest("attr already exists") // AttrNotExistsError is the error raised when removing // an attribute that does not exist. const AttrNotExistsError = errtypes.BadRequest("attr not exists") + +// FileIsLockedError is the error raised when attempting to set a lock +// attribute to an already locked file with a mismatched lock +const FileIsLockedError = errtypes.BadRequest("file is locked") diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index 00b913f268..12cc61dca2 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -720,7 +720,7 @@ func (fs *eosfs) setLock(ctx context.Context, lock *provider.Lock, path string) Val: eosLock, }, false, false, path) switch { - case errors.Is(err, eosclient.AttrAlreadyExistsError): + case errors.Is(err, eosclient.FileIsLockedError): return errtypes.BadRequest("resource already locked") case err != nil: return errors.Wrap(err, "eosfs: error setting eos lock") From a7c5495627b6ff7bc5676eda35cfa75e96b3f4aa Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Thu, 29 Feb 2024 14:22:12 +0100 Subject: [PATCH 08/26] Fixed lock expiration check --- pkg/storage/utils/eosfs/eosfs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index 12cc61dca2..ea732541ca 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -665,7 +665,7 @@ func (fs *eosfs) getLock(ctx context.Context, user *userpb.User, path string, re return nil, errors.Wrap(err, "eosfs: malformed lock payload") } - if time.Unix(int64(l.Expiration.Seconds), 0).After(time.Now()) { + if time.Unix(int64(l.Expiration.Seconds), 0).Before(time.Now()) { // the lock expired if err := fs.removeLockAttrs(ctx, path); err != nil { return nil, err From b31ee0537e3a24257cd23dd2dbd2df5e07cf9885 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Mon, 4 Mar 2024 17:25:21 +0100 Subject: [PATCH 09/26] eos: pass app on setAttr as required for locking and expose lock on Stat --- pkg/eosclient/eosbinary/eosbinary.go | 16 ++++-- pkg/eosclient/eosclient.go | 4 +- pkg/eosclient/eosgrpc/eosgrpc.go | 10 +++- pkg/storage/utils/eosfs/eosfs.go | 79 +++++++++++++++------------- 4 files changed, 63 insertions(+), 46 deletions(-) diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index 448c5fffcc..cb17eec14f 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -460,7 +460,7 @@ func (c *Client) mergeACLsAndAttrsForFiles(ctx context.Context, auth eosclient.A } // SetAttr sets an extended attributes on a path. -func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, errorIfExists, recursive bool, path string) error { +func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, errorIfExists, recursive bool, path, app string) error { if !isValidAttribute(attr) { return errors.New("eos: attr is invalid: " + serializeAttribute(attr)) } @@ -473,14 +473,17 @@ func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr } return c.handleFavAttr(ctx, auth, attr, recursive, path, info, true) } - return c.setEOSAttr(ctx, auth, attr, errorIfExists, recursive, path) + return c.setEOSAttr(ctx, auth, attr, errorIfExists, recursive, path, app) } -func (c *Client) setEOSAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, errorIfExists, recursive bool, path string) error { +func (c *Client) setEOSAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, errorIfExists, recursive bool, path, app string) error { args := []string{"attr"} if recursive { args = append(args, "-r") } + if app != "" { + args = append(args, "-a", app) + } args = append(args, "set") if errorIfExists { args = append(args, "-c") @@ -524,11 +527,11 @@ func (c *Client) handleFavAttr(ctx context.Context, auth eosclient.Authorization favs.DeleteEntry(acl.TypeUser, u.Id.OpaqueId) } attr.Val = favs.Serialize() - return c.setEOSAttr(ctx, auth, attr, false, recursive, path) + return c.setEOSAttr(ctx, auth, attr, false, recursive, path, "") } // UnsetAttr unsets an extended attribute on a path. -func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, recursive bool, path string) error { +func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, recursive bool, path, app string) error { if !isValidAttribute(attr) { return errors.New("eos: attr is invalid: " + serializeAttribute(attr)) } @@ -549,6 +552,9 @@ func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, at } else { args = []string{"attr", "rm", fmt.Sprintf("%s.%s", attrTypeToString(attr.Type), attr.Key), path} } + if app != "" { + args = append(args, "-a", app) + } _, _, err = c.executeEOS(ctx, args, auth) if err != nil { var exErr *exec.ExitError diff --git a/pkg/eosclient/eosclient.go b/pkg/eosclient/eosclient.go index 7cc59a4cc2..eeef01e704 100644 --- a/pkg/eosclient/eosclient.go +++ b/pkg/eosclient/eosclient.go @@ -37,8 +37,8 @@ type EOSClient interface { GetFileInfoByInode(ctx context.Context, auth Authorization, inode uint64) (*FileInfo, error) GetFileInfoByFXID(ctx context.Context, auth Authorization, fxid string) (*FileInfo, error) GetFileInfoByPath(ctx context.Context, auth Authorization, path string) (*FileInfo, error) - SetAttr(ctx context.Context, auth Authorization, attr *Attribute, errorIfExists, recursive bool, path string) error - UnsetAttr(ctx context.Context, auth Authorization, attr *Attribute, recursive bool, path string) error + SetAttr(ctx context.Context, auth Authorization, attr *Attribute, errorIfExists, recursive bool, path, app string) error + UnsetAttr(ctx context.Context, auth Authorization, attr *Attribute, recursive bool, path, app string) error GetAttr(ctx context.Context, auth Authorization, key, path string) (*Attribute, error) GetAttrs(ctx context.Context, auth Authorization, path string) ([]*Attribute, error) GetQuota(ctx context.Context, username string, rootAuth Authorization, path string) (*QuotaInfo, error) diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 54c11d6426..c8430fe6f3 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -507,7 +507,7 @@ func (c *Client) fixupACLs(ctx context.Context, auth eosclient.Authorization, in } // SetAttr sets an extended attributes on a path. -func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, errorIfExists, recursive bool, path string) error { +func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, errorIfExists, recursive bool, path, app string) error { log := appctx.GetLogger(ctx) log.Info().Str("func", "SetAttr").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") @@ -531,6 +531,9 @@ func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr } rq.Command = &erpc.NSRequest_Xattr{Xattr: msg} + if app != "" { + // rq.Header.Set("app", app) + } // Now send the req and see what happens resp, err := c.cl.Exec(appctx.ContextGetClean(ctx), rq) @@ -557,7 +560,7 @@ func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr } // UnsetAttr unsets an extended attribute on a path. -func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, recursive bool, path string) error { +func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, recursive bool, path, app string) error { log := appctx.GetLogger(ctx) log.Info().Str("func", "UnsetAttr").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") @@ -577,6 +580,9 @@ func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, at msg.Id.Path = []byte(path) rq.Command = &erpc.NSRequest_Xattr{Xattr: msg} + if app != "" { + // rq.Header.Set("app", app) + } // Now send the req and see what happens resp, err := c.cl.Exec(appctx.ContextGetClean(ctx), rq) diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index ea732541ca..8ad26d3feb 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -62,8 +62,10 @@ import ( ) const ( - refTargetAttrKey = "reva.target" - lwShareAttrKey = "reva.lwshare" + refTargetAttrKey = "reva.target" // used as user attr to store a reference + lwShareAttrKey = "reva.lwshare" // used to store grants to lightweight accounts + lockPayloadKey = "reva.lockpayload" // used to store lock payloads + eosLockKey = "app.lock" // this is the key known by EOS to enforce a lock. ) const ( @@ -73,12 +75,6 @@ const ( UserAttr ) -// EosLockKey is the key in the xattrs known by EOS to enforce a lock. -const EosLockKey = "app.lock" - -// LockPayloadKey is the key in the xattrs used to store the lock payload. -const LockPayloadKey = "reva.lockpayload" - var hiddenReg = regexp.MustCompile(`\.sys\..#.`) var eosLockReg = regexp.MustCompile(`expires:\d+,type:[a-z]+,owner:.+:.+`) @@ -541,9 +537,9 @@ func (fs *eosfs) SetArbitraryMetadata(ctx context.Context, ref *provider.Referen return errtypes.BadRequest(fmt.Sprintf("eosfs: key or value is empty: key:%s, value:%s", k, v)) } - // do not allow to set a lock key attr - if k == LockPayloadKey || k == EosLockKey { - return errtypes.BadRequest(fmt.Sprintf("eosfs: key %s not allowed", k)) + // do not allow to override system-reserved keys + if k == lockPayloadKey || k == eosLockKey || k == lwShareAttrKey || k == refTargetAttrKey { + return errtypes.BadRequest(fmt.Sprintf("eosfs: key %s is reserved", k)) } attr := &eosclient.Attribute{ @@ -554,7 +550,7 @@ func (fs *eosfs) SetArbitraryMetadata(ctx context.Context, ref *provider.Referen // TODO(labkode): SetArbitraryMetadata does not have semantics for recursivity. // We set it to false - err := fs.c.SetAttr(ctx, rootAuth, attr, false, false, fn) + err := fs.c.SetAttr(ctx, rootAuth, attr, false, false, fn, "") if err != nil { return errors.Wrap(err, "eosfs: error setting xattr in eos driver") } @@ -587,7 +583,7 @@ func (fs *eosfs) UnsetArbitraryMetadata(ctx context.Context, ref *provider.Refer Key: k, } - err := fs.c.UnsetAttr(ctx, rootAuth, attr, false, fn) + err := fs.c.UnsetAttr(ctx, rootAuth, attr, false, fn, "") if err != nil { if errors.Is(err, eosclient.AttrNotExistsError) { continue @@ -604,12 +600,12 @@ func (fs *eosfs) getLockPayloads(ctx context.Context, path string) (string, stri if err != nil { return "", "", err } - data, err := fs.c.GetAttr(ctx, rootauth, "sys."+LockPayloadKey, path) + data, err := fs.c.GetAttr(ctx, rootauth, "sys."+lockPayloadKey, path) if err != nil { return "", "", err } - eoslock, err := fs.c.GetAttr(ctx, rootauth, "sys."+EosLockKey, path) + eoslock, err := fs.c.GetAttr(ctx, rootauth, "sys."+eosLockKey, path) if err != nil { return "", "", err } @@ -617,7 +613,7 @@ func (fs *eosfs) getLockPayloads(ctx context.Context, path string) (string, stri return data.Val, eoslock.Val, nil } -func (fs *eosfs) removeLockAttrs(ctx context.Context, path string) error { +func (fs *eosfs) removeLockAttrs(ctx context.Context, path, app string) error { rootAuth, err := fs.getRootAuth(ctx) if err != nil { return err @@ -625,16 +621,16 @@ func (fs *eosfs) removeLockAttrs(ctx context.Context, path string) error { err = fs.c.UnsetAttr(ctx, rootAuth, &eosclient.Attribute{ Type: SystemAttr, - Key: EosLockKey, - }, false, path) + Key: eosLockKey, + }, false, path, app) if err != nil { return errors.Wrap(err, "eosfs: error unsetting the eos lock") } err = fs.c.UnsetAttr(ctx, rootAuth, &eosclient.Attribute{ Type: SystemAttr, - Key: LockPayloadKey, - }, false, path) + Key: lockPayloadKey, + }, false, path, app) if err != nil { return errors.Wrap(err, "eosfs: error unsetting the lock payload") } @@ -667,7 +663,7 @@ func (fs *eosfs) getLock(ctx context.Context, user *userpb.User, path string, re if time.Unix(int64(l.Expiration.Seconds), 0).Before(time.Now()) { // the lock expired - if err := fs.removeLockAttrs(ctx, path); err != nil { + if err := fs.removeLockAttrs(ctx, path, encodeAppName(l.AppName)); err != nil { return nil, err } return nil, errtypes.NotFound("lock not found for ref") @@ -716,9 +712,9 @@ func (fs *eosfs) setLock(ctx context.Context, lock *provider.Lock, path string) // set eos lock err = fs.c.SetAttr(ctx, auth, &eosclient.Attribute{ Type: SystemAttr, - Key: EosLockKey, + Key: eosLockKey, Val: eosLock, - }, false, false, path) + }, false, false, path, encodeAppName(lock.AppName)) switch { case errors.Is(err, eosclient.FileIsLockedError): return errtypes.BadRequest("resource already locked") @@ -729,9 +725,9 @@ func (fs *eosfs) setLock(ctx context.Context, lock *provider.Lock, path string) // set payload err = fs.c.SetAttr(ctx, auth, &eosclient.Attribute{ Type: SystemAttr, - Key: LockPayloadKey, + Key: lockPayloadKey, Val: encodedLock, - }, false, false, path) + }, false, false, path, encodeAppName(lock.AppName)) if err != nil { return errors.Wrap(err, "eosfs: error setting lock payload") } @@ -826,6 +822,11 @@ func (fs *eosfs) userHasReadAccess(ctx context.Context, user *userpb.User, ref * return resInfo.PermissionSet.InitiateFileDownload, nil } +func encodeAppName(a string) string { + r := strings.NewReplacer(" ", "_") + return "reva_" + strings.ToLower(r.Replace(a)) +} + func encodeLock(l *provider.Lock) (string, string, error) { data, err := json.Marshal(l) if err != nil { @@ -834,8 +835,7 @@ func encodeLock(l *provider.Lock) (string, string, error) { var a string if l.AppName != "" { // cf. upload implementation - r := strings.NewReplacer(" ", "_") - a = "reva_" + strings.ToLower(r.Replace(l.AppName)) + a = encodeAppName(l.AppName) } else { a = "*" } @@ -976,7 +976,7 @@ func (fs *eosfs) Unlock(ctx context.Context, ref *provider.Reference, lock *prov } path = fs.wrap(ctx, path) - return fs.removeLockAttrs(ctx, path) + return fs.removeLockAttrs(ctx, path, encodeAppName(lock.AppName)) } func (fs *eosfs) AddGrant(ctx context.Context, ref *provider.Reference, g *provider.Grant) error { @@ -1005,7 +1005,7 @@ func (fs *eosfs) AddGrant(ctx context.Context, ref *provider.Reference, g *provi Key: fmt.Sprintf("%s.%s", lwShareAttrKey, eosACL.Qualifier), Val: eosACL.Permissions, } - if err := fs.c.SetAttr(ctx, rootAuth, attr, false, true, fn); err != nil { + if err := fs.c.SetAttr(ctx, rootAuth, attr, false, true, fn, ""); err != nil { return errors.Wrap(err, "eosfs: error adding acl for lightweight account") } return nil @@ -1108,7 +1108,7 @@ func (fs *eosfs) RemoveGrant(ctx context.Context, ref *provider.Reference, g *pr Type: SystemAttr, Key: fmt.Sprintf("%s.%s", lwShareAttrKey, eosACL.Qualifier), } - if err := fs.c.UnsetAttr(ctx, rootAuth, attr, true, fn); err != nil { + if err := fs.c.UnsetAttr(ctx, rootAuth, attr, true, fn, ""); err != nil { return errors.Wrap(err, "eosfs: error removing acl for lightweight account") } return nil @@ -1595,7 +1595,7 @@ func (fs *eosfs) createUserDir(ctx context.Context, u *userpb.User, path string, } for _, attr := range attrs { - err = fs.c.SetAttr(ctx, rootAuth, attr, false, recursiveAttr, path) + err = fs.c.SetAttr(ctx, rootAuth, attr, false, recursiveAttr, path, "") if err != nil { return errors.Wrap(err, "eosfs: error setting attribute") } @@ -1678,7 +1678,7 @@ func (fs *eosfs) CreateReference(ctx context.Context, p string, targetURI *url.U Val: targetURI.String(), } - if err := fs.c.SetAttr(ctx, rootAuth, attr, false, false, tmp); err != nil { + if err := fs.c.SetAttr(ctx, rootAuth, attr, false, false, tmp, ""); err != nil { err = errors.Wrapf(err, "eosfs: error setting reva.ref attr on file: %q", tmp) return err } @@ -2255,7 +2255,7 @@ func (fs *eosfs) convert(ctx context.Context, eosFileInfo *eosclient.FileInfo) ( } } - // filter 'sys' attrs and the reserved lock + // filter 'sys' attrs filteredAttrs := make(map[string]string) for k, v := range eosFileInfo.Attrs { if !strings.HasPrefix(k, "sys") { @@ -2278,6 +2278,9 @@ func (fs *eosfs) convert(ctx context.Context, eosFileInfo *eosclient.FileInfo) ( Seconds: eosFileInfo.MTimeSec, Nanos: eosFileInfo.MTimeNanos, }, + ArbitraryMetadata: &provider.ArbitraryMetadata{ + Metadata: filteredAttrs, + }, Opaque: &types.Opaque{ Map: map[string]*types.OpaqueEntry{ "eos": { @@ -2286,11 +2289,13 @@ func (fs *eosfs) convert(ctx context.Context, eosFileInfo *eosclient.FileInfo) ( }, }, }, - ArbitraryMetadata: &provider.ArbitraryMetadata{ - Metadata: filteredAttrs, - }, } - + if eosFileInfo.Attrs[eosLockKey] != "" { + // populate the lock, fail silently if unable to decode + if l, _ := decodeLock(eosFileInfo.Attrs[lockPayloadKey], eosFileInfo.Attrs[eosLockKey]); l != nil { + info.Lock = l + } + } if eosFileInfo.IsDir { info.Opaque.Map["disable_tus"] = &types.OpaqueEntry{ Decoder: "plain", From 571257230d9c24cb3c2f7b540a129eb503b86187 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 6 Mar 2024 18:40:28 +0100 Subject: [PATCH 10/26] Fixed setting xattrs in case of locks --- pkg/eosclient/eosbinary/eosbinary.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index cb17eec14f..b53223ad1d 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -477,13 +477,14 @@ func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr } func (c *Client) setEOSAttr(ctx context.Context, auth eosclient.Authorization, attr *eosclient.Attribute, errorIfExists, recursive bool, path, app string) error { - args := []string{"attr"} - if recursive { - args = append(args, "-r") - } + args := []string{} if app != "" { args = append(args, "-a", app) } + args = append(args, "attr") + if recursive { + args = append(args, "-r") + } args = append(args, "set") if errorIfExists { args = append(args, "-c") @@ -547,14 +548,15 @@ func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, at } var args []string - if recursive { - args = []string{"attr", "-r", "rm", fmt.Sprintf("%s.%s", attrTypeToString(attr.Type), attr.Key), path} - } else { - args = []string{"attr", "rm", fmt.Sprintf("%s.%s", attrTypeToString(attr.Type), attr.Key), path} - } if app != "" { args = append(args, "-a", app) } + args = append(args, "attr") + if recursive { + args = append(args, "-r") + } + args = append(args, "rm", fmt.Sprintf("%s.%s", attrTypeToString(attr.Type), attr.Key), path) + _, _, err = c.executeEOS(ctx, args, auth) if err != nil { var exErr *exec.ExitError From 5e24ccab87dc6928aa7fd0566c536dd29d50d78e Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 6 Mar 2024 19:06:07 +0100 Subject: [PATCH 11/26] Linting --- pkg/eosclient/eosclient.go | 2 +- pkg/eosclient/eosgrpc/eosgrpc.go | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/eosclient/eosclient.go b/pkg/eosclient/eosclient.go index eeef01e704..bde1f16d07 100644 --- a/pkg/eosclient/eosclient.go +++ b/pkg/eosclient/eosclient.go @@ -156,5 +156,5 @@ const AttrAlreadyExistsError = errtypes.BadRequest("attr already exists") const AttrNotExistsError = errtypes.BadRequest("attr not exists") // FileIsLockedError is the error raised when attempting to set a lock -// attribute to an already locked file with a mismatched lock +// attribute to an already locked file with a mismatched lock. const FileIsLockedError = errtypes.BadRequest("file is locked") diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index c8430fe6f3..63870c5ceb 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -531,9 +531,9 @@ func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr } rq.Command = &erpc.NSRequest_Xattr{Xattr: msg} - if app != "" { - // rq.Header.Set("app", app) - } + // if app != "" { + // rq.Header.Set("app", app) + // } // Now send the req and see what happens resp, err := c.cl.Exec(appctx.ContextGetClean(ctx), rq) @@ -580,9 +580,9 @@ func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, at msg.Id.Path = []byte(path) rq.Command = &erpc.NSRequest_Xattr{Xattr: msg} - if app != "" { - // rq.Header.Set("app", app) - } + // if app != "" { + // rq.Header.Set("app", app) + // } // Now send the req and see what happens resp, err := c.cl.Exec(appctx.ContextGetClean(ctx), rq) From ac6855e2cbeb522118e43cb771cc9a9fca069a86 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 6 Mar 2024 19:11:19 +0100 Subject: [PATCH 12/26] Future implementation for passing app in eos-grpc --- pkg/eosclient/eosgrpc/eosgrpc.go | 50 +++++++++++++++----------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 63870c5ceb..84cc71b3a1 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -204,7 +204,7 @@ func (c *Client) getRespError(rsp *erpc.NSResponse, err error) error { } // Common code to create and initialize a NSRequest. -func (c *Client) initNSRequest(ctx context.Context, auth eosclient.Authorization) (*erpc.NSRequest, error) { +func (c *Client) initNSRequest(ctx context.Context, auth eosclient.Authorization, app string) (*erpc.NSRequest, error) { // Stuff filename, uid, gid into the MDRequest type log := appctx.GetLogger(ctx) @@ -223,12 +223,15 @@ func (c *Client) initNSRequest(ctx context.Context, auth eosclient.Authorization } rq.Role.Uid = uidInt rq.Role.Gid = gidInt + if app != "" { + rq.Role.Groupname = app // FIXME this is going to be rq.Role.App once the GRPC interface is updated + } rq.Authkey = c.opt.Authkey return rq, nil } -// Common code to create and initialize a NSRequest. +// Common code to create and initialize a MDRequest. func (c *Client) initMDRequest(ctx context.Context, auth eosclient.Authorization) (*erpc.MDRequest, error) { // Stuff filename, uid, gid into the MDRequest type @@ -260,7 +263,7 @@ func (c *Client) AddACL(ctx context.Context, auth, rootAuth eosclient.Authorizat log.Info().Str("func", "AddACL").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") // Init a new NSRequest - rq, err := c.initNSRequest(ctx, rootAuth) + rq, err := c.initNSRequest(ctx, rootAuth, "") if err != nil { return err } @@ -311,7 +314,7 @@ func (c *Client) RemoveACL(ctx context.Context, auth, rootAuth eosclient.Authori sysACL := acls.Serialize() // Init a new NSRequest - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -388,7 +391,7 @@ func (c *Client) getACLForPath(ctx context.Context, auth eosclient.Authorization log.Info().Str("func", "GetACLForPath").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return nil, err } @@ -512,7 +515,7 @@ func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr log.Info().Str("func", "SetAttr").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, app) if err != nil { return err } @@ -531,9 +534,6 @@ func (c *Client) SetAttr(ctx context.Context, auth eosclient.Authorization, attr } rq.Command = &erpc.NSRequest_Xattr{Xattr: msg} - // if app != "" { - // rq.Header.Set("app", app) - // } // Now send the req and see what happens resp, err := c.cl.Exec(appctx.ContextGetClean(ctx), rq) @@ -565,7 +565,7 @@ func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, at log.Info().Str("func", "UnsetAttr").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, app) if err != nil { return err } @@ -575,14 +575,10 @@ func (c *Client) UnsetAttr(ctx context.Context, auth eosclient.Authorization, at var ktd = []string{attr.GetKey()} msg.Keystodelete = ktd msg.Recursive = recursive - msg.Id = new(erpc.MDId) msg.Id.Path = []byte(path) rq.Command = &erpc.NSRequest_Xattr{Xattr: msg} - // if app != "" { - // rq.Header.Set("app", app) - // } // Now send the req and see what happens resp, err := c.cl.Exec(appctx.ContextGetClean(ctx), rq) @@ -731,7 +727,7 @@ func (c *Client) GetQuota(ctx context.Context, username string, rootAuth eosclie log.Info().Str("func", "GetQuota").Str("rootuid,rootgid", rootAuth.Role.UID+","+rootAuth.Role.GID).Str("username", username).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, rootAuth) + rq, err := c.initNSRequest(ctx, rootAuth, "") if err != nil { return nil, err } @@ -807,7 +803,7 @@ func (c *Client) SetQuota(ctx context.Context, rootAuth eosclient.Authorization, // return errtypes.NotSupported("eosgrpc: SetQuota not implemented") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, rootAuth) + rq, err := c.initNSRequest(ctx, rootAuth, "") if err != nil { return err } @@ -865,7 +861,7 @@ func (c *Client) Touch(ctx context.Context, auth eosclient.Authorization, path s log.Info().Str("func", "Touch").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -900,7 +896,7 @@ func (c *Client) Chown(ctx context.Context, auth, chownAuth eosclient.Authorizat log.Info().Str("func", "Chown").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("chownuid,chowngid", chownAuth.Role.UID+","+chownAuth.Role.GID).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -944,7 +940,7 @@ func (c *Client) Chmod(ctx context.Context, auth eosclient.Authorization, mode, log.Info().Str("func", "Chmod").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("mode", mode).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -985,7 +981,7 @@ func (c *Client) CreateDir(ctx context.Context, auth eosclient.Authorization, pa log.Info().Str("func", "Createdir").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -1026,7 +1022,7 @@ func (c *Client) rm(ctx context.Context, auth eosclient.Authorization, path stri log.Info().Str("func", "rm").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -1061,7 +1057,7 @@ func (c *Client) rmdir(ctx context.Context, auth eosclient.Authorization, path s log.Info().Str("func", "rmdir").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -1116,7 +1112,7 @@ func (c *Client) Rename(ctx context.Context, auth eosclient.Authorization, oldPa log.Info().Str("func", "Rename").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("oldPath", oldPath).Str("newPath", newPath).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -1387,7 +1383,7 @@ func (c *Client) ListDeletedEntries(ctx context.Context, auth eosclient.Authoriz log.Info().Str("func", "ListDeletedEntries").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return nil, err } @@ -1455,7 +1451,7 @@ func (c *Client) RestoreDeletedEntry(ctx context.Context, auth eosclient.Authori log.Info().Str("func", "RestoreDeletedEntries").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("key", key).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -1493,7 +1489,7 @@ func (c *Client) PurgeDeletedEntries(ctx context.Context, auth eosclient.Authori log.Info().Str("func", "PurgeDeletedEntries").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } @@ -1540,7 +1536,7 @@ func (c *Client) RollbackToVersion(ctx context.Context, auth eosclient.Authoriza log.Info().Str("func", "RollbackToVersion").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Str("version", version).Msg("") // Initialize the common fields of the NSReq - rq, err := c.initNSRequest(ctx, auth) + rq, err := c.initNSRequest(ctx, auth, "") if err != nil { return err } From 0e03378b4188b969d75833efcb6fd219a319679e Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Thu, 21 Mar 2024 14:20:27 +0100 Subject: [PATCH 13/26] Rebuilt eos-grpc Go binding, including Role.App --- pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go | 550 ++++++++++++----------- pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto | 383 ++++++++-------- pkg/eosclient/eosgrpc/eosgrpc.go | 2 +- 3 files changed, 492 insertions(+), 443 deletions(-) diff --git a/pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go b/pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go index d57d0b2bbd..065b675d2e 100644 --- a/pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go +++ b/pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go @@ -1198,6 +1198,7 @@ type RoleId struct { Gid uint64 `protobuf:"varint,2,opt,name=gid,proto3" json:"gid,omitempty"` Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` Groupname string `protobuf:"bytes,4,opt,name=groupname,proto3" json:"groupname,omitempty"` + App string `protobuf:"bytes,5,opt,name=app,proto3" json:"app,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1256,6 +1257,13 @@ func (m *RoleId) GetGroupname() string { return "" } +func (m *RoleId) GetApp() string { + if m != nil { + return m.App + } + return "" +} + type MDId struct { Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` Id uint64 `protobuf:"fixed64,2,opt,name=id,proto3" json:"id,omitempty"` @@ -2875,6 +2883,10 @@ func (m *NSRequest_RecycleRequest_PurgeDate) GetDay() int32 { type NSRequest_RecycleRequest_ListFlags struct { Maxentries int32 `protobuf:"varint,1,opt,name=maxentries,proto3" json:"maxentries,omitempty"` + Year int32 `protobuf:"varint,2,opt,name=year,proto3" json:"year,omitempty"` + Month int32 `protobuf:"varint,3,opt,name=month,proto3" json:"month,omitempty"` + Day int32 `protobuf:"varint,4,opt,name=day,proto3" json:"day,omitempty"` + Index int32 `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2912,6 +2924,34 @@ func (m *NSRequest_RecycleRequest_ListFlags) GetMaxentries() int32 { return 0 } +func (m *NSRequest_RecycleRequest_ListFlags) GetYear() int32 { + if m != nil { + return m.Year + } + return 0 +} + +func (m *NSRequest_RecycleRequest_ListFlags) GetMonth() int32 { + if m != nil { + return m.Month + } + return 0 +} + +func (m *NSRequest_RecycleRequest_ListFlags) GetDay() int32 { + if m != nil { + return m.Day + } + return 0 +} + +func (m *NSRequest_RecycleRequest_ListFlags) GetIndex() int32 { + if m != nil { + return m.Index + } + return 0 +} + type NSRequest_SetXAttrRequest struct { Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Xattrs map[string][]byte `protobuf:"bytes,2,rep,name=xattrs,proto3" json:"xattrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` @@ -4623,260 +4663,262 @@ func init() { } var fileDescriptor_979aee4989bceb08 = []byte{ - // 4040 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x3a, 0x4d, 0x77, 0xdb, 0xc6, - 0x76, 0x22, 0x09, 0x52, 0xc4, 0x25, 0x29, 0x31, 0xb0, 0x9b, 0x30, 0x8c, 0x1d, 0x2b, 0x74, 0x9c, - 0x67, 0x3b, 0xb1, 0x1c, 0xbb, 0x4d, 0x9d, 0xc4, 0x2f, 0x4d, 0x69, 0x89, 0x92, 0x99, 0x88, 0xa4, - 0x32, 0xa4, 0x7c, 0xec, 0x6e, 0x78, 0x60, 0x60, 0x44, 0xe1, 0x98, 0x00, 0xf8, 0x00, 0xd0, 0xb6, - 0xb2, 0x6c, 0xbb, 0xe9, 0x3b, 0xa7, 0xbb, 0xb7, 0x7b, 0xbb, 0x9e, 0xb6, 0x9b, 0xee, 0xbb, 0xe8, - 0xaa, 0xbb, 0xbe, 0xf3, 0x16, 0x5d, 0x74, 0xd3, 0x5d, 0xff, 0x40, 0xfb, 0x23, 0x7a, 0xee, 0x9d, - 0x01, 0x30, 0x90, 0x48, 0x51, 0x79, 0x79, 0x1b, 0x9c, 0x99, 0x3b, 0xf7, 0xde, 0x99, 0xb9, 0x73, - 0x3f, 0x67, 0x00, 0x3a, 0x9b, 0x59, 0xdb, 0xb3, 0xc0, 0x8f, 0x7c, 0x63, 0x9d, 0xfb, 0xe1, 0x76, - 0x30, 0xb3, 0x5a, 0x6d, 0xa8, 0x1c, 0x3a, 0xde, 0x84, 0xf1, 0x5f, 0xcd, 0x79, 0x18, 0x19, 0x0d, - 0x58, 0x37, 0xe7, 0xd1, 0xc9, 0x2b, 0x7e, 0xda, 0xc8, 0x6d, 0xe5, 0x6e, 0xeb, 0x2c, 0xee, 0xe2, - 0x88, 0xcb, 0xc3, 0xd0, 0x9c, 0xf0, 0x46, 0x7e, 0x2b, 0x77, 0xbb, 0xca, 0xe2, 0x6e, 0xeb, 0x16, - 0xe8, 0x82, 0xc5, 0x6c, 0x9a, 0x41, 0xcb, 0x65, 0xd1, 0x7e, 0x9d, 0x83, 0x77, 0x77, 0x7c, 0x2f, - 0x32, 0x1d, 0x8f, 0x07, 0x5d, 0x2f, 0xe4, 0x41, 0x14, 0xcf, 0xfa, 0x08, 0x74, 0x2b, 0x1e, 0x69, - 0xe4, 0xb6, 0x0a, 0xb7, 0x2b, 0x0f, 0xdf, 0xdf, 0x96, 0x2b, 0xdc, 0x4e, 0x68, 0x7a, 0xf6, 0x21, - 0xae, 0x9d, 0xa5, 0xb8, 0xea, 0x72, 0xf3, 0xd9, 0xe5, 0x5e, 0x07, 0x70, 0xbc, 0x13, 0x1e, 0x38, - 0xd1, 0xd8, 0xb5, 0x1b, 0x85, 0xad, 0xdc, 0xed, 0x32, 0xd3, 0x25, 0xa4, 0x67, 0xb7, 0x5e, 0xc0, - 0x3b, 0x7b, 0xce, 0x94, 0x67, 0x97, 0x71, 0x17, 0x8a, 0xc7, 0xce, 0x94, 0x87, 0x72, 0x09, 0x57, - 0x93, 0x25, 0x20, 0x6a, 0x3c, 0xbb, 0x40, 0x59, 0x3e, 0x73, 0xeb, 0x31, 0x54, 0x62, 0xb6, 0xe7, - 0x04, 0x52, 0x40, 0x44, 0xd9, 0x35, 0x0c, 0xd0, 0x02, 0x1e, 0x59, 0x8d, 0xfc, 0x56, 0xe1, 0x76, - 0x8d, 0x51, 0xbb, 0x75, 0x0f, 0xb4, 0x91, 0xe3, 0x72, 0xa3, 0x0e, 0x85, 0x90, 0x5b, 0x24, 0x42, - 0x8d, 0x61, 0xd3, 0xb8, 0x02, 0x45, 0x6f, 0x8c, 0xb0, 0x3c, 0xc1, 0x34, 0x6f, 0xc8, 0xad, 0xd6, - 0x9f, 0x41, 0x79, 0xe7, 0x84, 0x5b, 0xaf, 0xc2, 0xb9, 0x6b, 0x5c, 0x85, 0xe2, 0x6b, 0x73, 0x3a, - 0x8f, 0xe5, 0x2e, 0x3a, 0x38, 0x49, 0x74, 0x3a, 0xe3, 0x72, 0x91, 0xd4, 0x6e, 0xfd, 0x87, 0x06, - 0x15, 0x65, 0x4b, 0xc6, 0x06, 0xe4, 0x1d, 0x5b, 0xce, 0x95, 0x77, 0x6c, 0xe3, 0x3d, 0x58, 0x47, - 0x11, 0x8f, 0x1d, 0x5b, 0x4e, 0x56, 0xc2, 0x6e, 0xd7, 0xc6, 0x55, 0xcd, 0x1d, 0x21, 0x4d, 0x8d, - 0x61, 0x13, 0x21, 0x13, 0xc7, 0x6e, 0x68, 0x02, 0x32, 0x71, 0x6c, 0x9c, 0x30, 0x74, 0x7e, 0xe4, - 0x8d, 0xa2, 0x58, 0x26, 0xb6, 0x8d, 0x0f, 0x40, 0x9f, 0x9a, 0xa7, 0xfe, 0x9c, 0x58, 0x96, 0xb6, - 0x72, 0xb7, 0x6b, 0xac, 0x2c, 0x00, 0x5d, 0x1b, 0xd7, 0x7d, 0x3c, 0x35, 0x27, 0x61, 0x63, 0x9d, - 0x06, 0x44, 0x07, 0xd9, 0x78, 0xa6, 0xcb, 0x1b, 0x65, 0xda, 0x0c, 0xb5, 0x89, 0x8d, 0xe3, 0xbd, - 0x1a, 0xd3, 0x80, 0x4e, 0x03, 0x65, 0x04, 0xf4, 0x71, 0xf0, 0x26, 0x14, 0xad, 0xc8, 0x71, 0x79, - 0x03, 0xb6, 0x72, 0xb7, 0x2b, 0x0f, 0x6b, 0xc9, 0xe1, 0xa1, 0x3c, 0x99, 0x18, 0x43, 0x24, 0x97, - 0x90, 0x2a, 0x0b, 0x91, 0x68, 0xcc, 0xb8, 0x07, 0x65, 0x4b, 0x0a, 0xb5, 0x51, 0x25, 0xbc, 0x77, - 0x52, 0x65, 0x94, 0x03, 0x2c, 0x41, 0x31, 0xae, 0x81, 0x3e, 0xf5, 0x2d, 0x33, 0x72, 0x7c, 0x2f, - 0x6c, 0xd4, 0xe8, 0x2c, 0x53, 0x80, 0x71, 0x07, 0xea, 0x73, 0x8f, 0x56, 0x9d, 0x22, 0x6d, 0x10, - 0xd2, 0xa6, 0x80, 0x1f, 0x24, 0xa8, 0x5f, 0x42, 0xe9, 0xad, 0x19, 0x45, 0x41, 0xd8, 0xd8, 0x24, - 0xfd, 0xdb, 0x5a, 0xa4, 0x7f, 0xdb, 0xcf, 0x09, 0xa5, 0xe3, 0x45, 0xc1, 0x29, 0x93, 0xf8, 0x28, - 0xac, 0x99, 0x19, 0x9d, 0x34, 0xea, 0x42, 0x58, 0xd8, 0x46, 0x18, 0x8f, 0xcc, 0x49, 0xe3, 0x1d, - 0x71, 0xf0, 0xd8, 0x46, 0x51, 0x3b, 0x9e, 0x6f, 0xf3, 0x86, 0x41, 0x87, 0x23, 0x3a, 0xcd, 0xaf, - 0xa0, 0xa2, 0x30, 0xc5, 0x23, 0x4d, 0xcd, 0x1f, 0x9b, 0xa9, 0x66, 0xe5, 0x15, 0xcd, 0xfa, 0x3a, - 0xff, 0x65, 0xae, 0xf5, 0x5b, 0x0d, 0xea, 0x67, 0xed, 0xf3, 0x9c, 0x3a, 0x7d, 0x00, 0xfa, 0xcc, - 0x0c, 0xb8, 0xaa, 0x50, 0x65, 0x01, 0xb8, 0xa4, 0x4a, 0x7d, 0x00, 0x7a, 0x14, 0x70, 0x3e, 0x26, - 0xbd, 0x42, 0xf5, 0x29, 0xb0, 0x32, 0x02, 0x86, 0xa8, 0x5b, 0x06, 0x68, 0x2e, 0x6e, 0xa9, 0x48, - 0xda, 0x43, 0xed, 0x9f, 0xa0, 0x52, 0x89, 0xd6, 0xe8, 0x97, 0xd1, 0x1a, 0xb8, 0x40, 0x6b, 0x6e, - 0x42, 0x31, 0xbc, 0x40, 0xb5, 0x68, 0xcc, 0xf8, 0x26, 0x39, 0xe2, 0x2a, 0x1d, 0xf1, 0xad, 0xa5, - 0x5e, 0xee, 0xc2, 0x73, 0xae, 0x2d, 0x38, 0xe7, 0x8d, 0x45, 0xe7, 0xbc, 0xa9, 0x9c, 0x33, 0x49, - 0x85, 0xdc, 0x5b, 0x5d, 0x40, 0x85, 0x23, 0xfb, 0x10, 0x20, 0xf1, 0xa7, 0x21, 0x69, 0x8b, 0xc6, - 0x14, 0xc8, 0xcf, 0xd1, 0x8e, 0xff, 0x2c, 0x00, 0xfc, 0x30, 0xf7, 0x23, 0x53, 0xe8, 0x45, 0xbc, - 0xfa, 0x5c, 0x76, 0xf5, 0x74, 0x26, 0xd2, 0x3d, 0xd1, 0x99, 0x7c, 0x22, 0x5d, 0x16, 0xea, 0xc4, - 0xc6, 0x43, 0x23, 0x11, 0xd1, 0x0f, 0x47, 0x83, 0x51, 0x7b, 0xf4, 0xe2, 0xb0, 0x23, 0xdc, 0x18, - 0x1a, 0xde, 0x3c, 0xe4, 0xf6, 0xcb, 0xd3, 0x88, 0x87, 0x52, 0x5d, 0x52, 0x80, 0x71, 0x17, 0xea, - 0xd8, 0x99, 0xfa, 0x13, 0xc7, 0x32, 0xa7, 0x02, 0x49, 0xf8, 0xa4, 0x73, 0xf0, 0x98, 0x93, 0x90, - 0x4e, 0x29, 0xe5, 0x24, 0x24, 0xd4, 0x84, 0xb2, 0x6b, 0xbe, 0x15, 0x1c, 0xd6, 0x85, 0xfa, 0xc6, - 0x7d, 0xe3, 0x36, 0x6c, 0xba, 0xe6, 0xdb, 0xcc, 0x24, 0x65, 0x42, 0x39, 0x0b, 0x96, 0x5c, 0xc4, - 0x14, 0x7a, 0xc2, 0x45, 0xcc, 0xf0, 0x39, 0x5c, 0x99, 0xf1, 0xc0, 0xe2, 0x5e, 0x64, 0x4e, 0x78, - 0xba, 0x27, 0x54, 0xb7, 0x3c, 0x5b, 0x34, 0x74, 0x9e, 0x42, 0x30, 0xae, 0x2c, 0xa2, 0x10, 0x73, - 0x6c, 0x41, 0x25, 0x8c, 0xcc, 0x68, 0x1e, 0x0a, 0xde, 0x55, 0x12, 0xb8, 0x0a, 0x4a, 0x31, 0x04, - 0xaf, 0x9a, 0x8a, 0x41, 0xa0, 0xd6, 0x31, 0x94, 0x98, 0x3f, 0xe5, 0xa9, 0xd9, 0xe6, 0xce, 0x99, - 0x6d, 0x3e, 0x35, 0xdb, 0x26, 0x94, 0xe7, 0x21, 0x0f, 0xe8, 0x7c, 0x0b, 0xc4, 0x2c, 0xe9, 0xa3, - 0xc4, 0x27, 0x81, 0x3f, 0x9f, 0xd1, 0xa0, 0x46, 0x83, 0x29, 0xa0, 0x35, 0x06, 0xad, 0xb7, 0xdb, - 0xb5, 0x17, 0x6a, 0x8c, 0xf0, 0x2e, 0x38, 0x4d, 0x89, 0xbc, 0x4b, 0x1d, 0x0a, 0x8e, 0xe7, 0xd3, - 0x04, 0x25, 0x86, 0x4d, 0xe3, 0x23, 0xa9, 0x3f, 0x1a, 0xe9, 0x8f, 0x62, 0x88, 0x89, 0xea, 0xb4, - 0xbe, 0x85, 0xe2, 0x81, 0xe3, 0x3a, 0x11, 0xce, 0xf0, 0x23, 0x0f, 0x7c, 0x9a, 0xa1, 0xcc, 0xa8, - 0x8d, 0x1c, 0x5d, 0xc7, 0x8b, 0x77, 0xe2, 0x3a, 0x1e, 0x41, 0xcc, 0xb7, 0xb1, 0x93, 0x72, 0xcd, - 0xb7, 0xad, 0x7f, 0x2e, 0x41, 0xa5, 0xb7, 0x3b, 0xe4, 0x53, 0x6e, 0xa1, 0xf3, 0x36, 0xde, 0x85, - 0x52, 0x48, 0x1d, 0xc9, 0x49, 0xf6, 0x8c, 0x8f, 0x63, 0xff, 0x92, 0x27, 0xaf, 0xb0, 0x91, 0x2c, - 0x86, 0xa6, 0x8f, 0x1d, 0xcc, 0xc7, 0xb1, 0x83, 0x29, 0x2c, 0xc6, 0x72, 0x63, 0x2c, 0xe1, 0x61, - 0xb4, 0xc5, 0x58, 0xc2, 0xc5, 0xb4, 0x94, 0xf8, 0x7b, 0x1e, 0x49, 0xc4, 0xe3, 0xbb, 0x40, 0xfe, - 0x33, 0xf1, 0xa7, 0xe7, 0xf1, 0x92, 0x71, 0xc4, 0xb5, 0x4e, 0x9c, 0xa9, 0x1d, 0x70, 0x8f, 0xb4, - 0x7f, 0x01, 0x6e, 0x3c, 0x6e, 0x7c, 0xa6, 0x86, 0xc2, 0xf2, 0x42, 0x64, 0x25, 0x34, 0x7e, 0x03, - 0x86, 0x08, 0x81, 0xdc, 0x56, 0x82, 0xa3, 0xbe, 0x90, 0xec, 0x9d, 0x18, 0x33, 0x0d, 0x97, 0x4d, - 0x90, 0x39, 0x84, 0x63, 0x93, 0xa5, 0x68, 0x2c, 0xe9, 0xa7, 0x01, 0xa0, 0x22, 0x5d, 0x1d, 0x05, - 0x80, 0x06, 0xac, 0x87, 0xa7, 0x2e, 0xf2, 0x21, 0xf5, 0x2f, 0xb3, 0xb8, 0x9b, 0x09, 0xf9, 0xb5, - 0xd5, 0x21, 0xff, 0x2a, 0x14, 0xfd, 0x37, 0x98, 0xab, 0x6e, 0x88, 0xf8, 0x42, 0x1d, 0x84, 0x92, - 0x0a, 0x93, 0xd7, 0xad, 0x31, 0xd1, 0xc1, 0x44, 0x94, 0x86, 0xc7, 0x81, 0xef, 0x47, 0xe4, 0x7a, - 0xcb, 0x4c, 0x27, 0x08, 0xf3, 0xfd, 0x08, 0x87, 0x09, 0x4f, 0x0c, 0xbf, 0x23, 0x86, 0x09, 0x42, - 0xc3, 0xbf, 0x80, 0xcd, 0x80, 0x4f, 0xf8, 0xdb, 0xd9, 0x18, 0x2d, 0x90, 0xac, 0xc5, 0x20, 0x63, - 0xd8, 0x10, 0xe0, 0x3d, 0x09, 0x35, 0x6e, 0x81, 0x84, 0x8c, 0x6d, 0x47, 0x98, 0xdc, 0x15, 0xc2, - 0xab, 0x09, 0xe8, 0xae, 0x00, 0x1a, 0x5f, 0x40, 0x91, 0x62, 0x49, 0xe3, 0x2a, 0xc5, 0x9f, 0x1b, - 0xc9, 0x2e, 0x15, 0x65, 0x16, 0xa1, 0x47, 0x44, 0x1e, 0x81, 0xdd, 0xfc, 0x12, 0x20, 0x05, 0xfe, - 0xa4, 0x18, 0xf0, 0xef, 0x39, 0xd0, 0x7b, 0xbb, 0x71, 0x86, 0x1d, 0x9b, 0x66, 0x6e, 0xa9, 0x69, - 0x1a, 0xd7, 0x13, 0xfb, 0x56, 0x83, 0x28, 0xba, 0x03, 0x32, 0x77, 0x25, 0xef, 0x2e, 0x64, 0x33, - 0xfe, 0x9b, 0xa0, 0x05, 0xfe, 0x34, 0xb6, 0x8e, 0xcd, 0x84, 0x54, 0x78, 0x2c, 0x46, 0x83, 0xc6, - 0x43, 0xd0, 0xc3, 0x78, 0x9f, 0xd2, 0x44, 0xae, 0x2e, 0x92, 0x01, 0x4b, 0xd1, 0x5a, 0x7f, 0x9b, - 0x03, 0xc0, 0x2d, 0x84, 0x33, 0xdf, 0x0b, 0xf9, 0x65, 0xf6, 0xf0, 0x09, 0x14, 0x8e, 0xdd, 0x78, - 0x13, 0x8b, 0xcb, 0x08, 0x44, 0x30, 0x3e, 0x85, 0x82, 0x25, 0xab, 0x93, 0x0b, 0x2b, 0x1e, 0xc4, - 0x6a, 0xfd, 0x4f, 0x0e, 0xb3, 0x76, 0xcf, 0xfe, 0xe3, 0xc9, 0x32, 0x96, 0x58, 0xe1, 0x22, 0x89, - 0x29, 0x02, 0xd7, 0xb2, 0x02, 0x17, 0x11, 0xcd, 0xe6, 0xb3, 0xe8, 0x44, 0x46, 0xd6, 0xa4, 0x9f, - 0x95, 0x73, 0xe9, 0x72, 0x72, 0xde, 0x07, 0x7d, 0x78, 0x62, 0x06, 0xbc, 0x3d, 0x17, 0x89, 0x01, - 0x56, 0xaa, 0x52, 0xc9, 0xa8, 0xbd, 0x30, 0x59, 0x30, 0x40, 0x3b, 0xf1, 0xc3, 0x48, 0x2a, 0x03, - 0xb5, 0x5b, 0xbf, 0xce, 0x03, 0x10, 0x27, 0x91, 0x77, 0x7c, 0x08, 0x30, 0xe3, 0x81, 0xeb, 0x84, - 0x21, 0x2e, 0x46, 0x30, 0x54, 0x20, 0xb8, 0x43, 0xfe, 0x76, 0xe6, 0x04, 0x3c, 0x94, 0x3e, 0x3f, - 0xee, 0xa6, 0x76, 0x2e, 0xb8, 0x9f, 0xb5, 0x73, 0x21, 0x0f, 0x69, 0xe7, 0x1f, 0x02, 0x4c, 0xb8, - 0xc7, 0x03, 0x33, 0x51, 0x2d, 0x8d, 0x29, 0x90, 0x24, 0x96, 0x95, 0xe4, 0x86, 0x30, 0x96, 0x5d, - 0x03, 0xdd, 0x9c, 0x4e, 0xfd, 0x37, 0xe8, 0x6c, 0xc9, 0xb9, 0x96, 0x59, 0x0a, 0xc0, 0x98, 0xf2, - 0x3a, 0xf2, 0x5f, 0x71, 0x8f, 0x5c, 0xa9, 0xce, 0x64, 0xcf, 0xf8, 0x0c, 0xd6, 0xfd, 0xc0, 0x99, - 0x38, 0xe4, 0x2c, 0xd1, 0x8a, 0xd3, 0x14, 0x29, 0x91, 0x1f, 0x8b, 0x51, 0x5a, 0x7f, 0x97, 0x93, - 0xc2, 0x18, 0x11, 0xf1, 0x1d, 0x28, 0x0a, 0x9e, 0x39, 0x3a, 0x94, 0x2b, 0x59, 0x52, 0x59, 0xe2, - 0x8a, 0x79, 0xae, 0x81, 0x1e, 0x3a, 0x13, 0xcf, 0x8c, 0xe6, 0x41, 0x6c, 0xd8, 0x29, 0x00, 0xf7, - 0x1b, 0xf2, 0xc0, 0x31, 0xa7, 0xce, 0x8f, 0x5c, 0xa8, 0x70, 0x95, 0x29, 0x10, 0xaa, 0x03, 0x39, - 0x17, 0x79, 0x7c, 0x91, 0x51, 0xbb, 0xf5, 0xd7, 0x37, 0x40, 0xef, 0x0f, 0x57, 0xdf, 0x35, 0xc4, - 0x8a, 0x99, 0xbf, 0x48, 0x31, 0x1f, 0x41, 0xd1, 0x7d, 0x65, 0x3b, 0x41, 0xe3, 0x4f, 0x08, 0x2b, - 0x75, 0x65, 0xc9, 0x0c, 0xdb, 0x3d, 0x1c, 0x97, 0x9d, 0xa7, 0x6b, 0x4c, 0xe0, 0x23, 0x61, 0xe0, - 0x22, 0xe1, 0xbb, 0x4b, 0x09, 0x99, 0x9b, 0x25, 0x24, 0x7c, 0x24, 0x8c, 0xfc, 0xb9, 0x75, 0xd2, - 0x78, 0x6f, 0x29, 0xe1, 0x08, 0xc7, 0x15, 0x42, 0xc2, 0x37, 0xbe, 0x86, 0x92, 0x88, 0x5f, 0x8d, - 0x06, 0x51, 0x6e, 0x2d, 0xa0, 0x3c, 0x22, 0x84, 0x94, 0x54, 0x52, 0x18, 0xdb, 0x90, 0x0f, 0xdc, - 0xc6, 0xfb, 0x44, 0x77, 0x6d, 0xe1, 0x52, 0x53, 0x9a, 0x7c, 0xe0, 0xe2, 0x5c, 0x81, 0x08, 0x14, - 0xcd, 0xa5, 0x73, 0x31, 0x42, 0x50, 0xe6, 0x12, 0x14, 0xc6, 0x37, 0x69, 0x80, 0xfc, 0x80, 0x88, - 0x3f, 0x5a, 0x40, 0x3c, 0x14, 0x18, 0x29, 0x75, 0x12, 0x45, 0xbf, 0x81, 0xf5, 0xd7, 0x3c, 0x20, - 0x2b, 0xbb, 0xb6, 0x94, 0xfc, 0x99, 0xc0, 0x50, 0xc8, 0x25, 0x0d, 0x92, 0x07, 0xdc, 0x3a, 0xb5, - 0xa6, 0xbc, 0x71, 0x7d, 0x29, 0x39, 0x13, 0x18, 0x0a, 0xb9, 0xa4, 0x31, 0xbe, 0x8e, 0x43, 0xdb, - 0x87, 0x44, 0xdc, 0x5a, 0xb4, 0x74, 0x1e, 0x3d, 0x6f, 0x47, 0x91, 0x7a, 0xb2, 0x44, 0x82, 0x27, - 0x6b, 0x9d, 0xf8, 0x6f, 0xbc, 0xc6, 0x8d, 0xa5, 0x27, 0xbb, 0x83, 0xe3, 0x0a, 0x21, 0xe1, 0x0b, - 0x42, 0xd7, 0xb7, 0x1b, 0x5b, 0x17, 0x10, 0xba, 0xbe, 0x9d, 0x21, 0x74, 0x7d, 0xdb, 0x78, 0x00, - 0x05, 0xd3, 0x9a, 0x36, 0x3e, 0x22, 0xb2, 0xeb, 0x0b, 0xc8, 0xda, 0xd6, 0x34, 0x25, 0x42, 0x5c, - 0xa1, 0x7e, 0x68, 0xba, 0xad, 0x0b, 0xd4, 0xef, 0x15, 0xf7, 0x32, 0xea, 0x87, 0x86, 0xfc, 0x08, - 0x8a, 0xbf, 0xc2, 0x32, 0xac, 0x71, 0x73, 0x29, 0x21, 0x95, 0x69, 0x0a, 0x21, 0xe1, 0x23, 0x61, - 0x88, 0x6e, 0xa1, 0xf1, 0xf1, 0x52, 0x42, 0x72, 0x1b, 0x0a, 0x21, 0xe1, 0x37, 0xc7, 0x50, 0x55, - 0x6d, 0x4f, 0x06, 0xa2, 0xdc, 0xb2, 0x40, 0x74, 0x0d, 0xf4, 0x80, 0x5b, 0xf3, 0x20, 0x74, 0x5e, - 0x0b, 0xa3, 0x2f, 0xb3, 0x14, 0x90, 0x54, 0xf8, 0x05, 0xaa, 0xfc, 0xa9, 0xdd, 0xbc, 0x07, 0x55, - 0xd5, 0x46, 0x57, 0x4c, 0x80, 0xe8, 0xaa, 0x65, 0xae, 0x42, 0x3f, 0x80, 0x5a, 0xc6, 0x1c, 0x2f, - 0xb1, 0x7e, 0xcf, 0x8f, 0x75, 0x57, 0xde, 0x35, 0x26, 0x80, 0xe6, 0x31, 0xe8, 0x89, 0x91, 0xfe, - 0x3c, 0x49, 0x5c, 0x3c, 0xcf, 0x1e, 0xd4, 0x32, 0x86, 0xbd, 0x6a, 0xae, 0x77, 0xa1, 0x14, 0x99, - 0xc1, 0x84, 0x47, 0xd2, 0xb9, 0xcb, 0x5e, 0x73, 0x1f, 0x36, 0xb2, 0x36, 0xfe, 0x87, 0x32, 0xfa, - 0xbf, 0x1c, 0x6c, 0x64, 0xcd, 0x7d, 0x15, 0xa7, 0x6f, 0x45, 0x42, 0x94, 0xa7, 0x94, 0xe6, 0xde, - 0x4a, 0xef, 0xb1, 0xfd, 0xac, 0xc3, 0x86, 0xdd, 0x41, 0x7f, 0xbc, 0xd3, 0xdb, 0xa5, 0x24, 0x09, - 0xa3, 0x92, 0x6b, 0xbe, 0x8d, 0xbd, 0x50, 0x81, 0x62, 0x8f, 0x02, 0xc1, 0x1a, 0x77, 0x12, 0x98, - 0x2f, 0x63, 0x04, 0x11, 0xc1, 0x55, 0x50, 0xeb, 0x4b, 0xa8, 0x28, 0x5c, 0x0d, 0x80, 0xd2, 0x0e, - 0xeb, 0xb4, 0x47, 0x9d, 0xfa, 0x9a, 0xa1, 0x43, 0xf1, 0xf0, 0x88, 0xed, 0x77, 0xea, 0x39, 0xa3, - 0x0c, 0xda, 0x41, 0x77, 0x38, 0xaa, 0xe7, 0xb1, 0xb5, 0xcf, 0xda, 0x4f, 0xea, 0x85, 0xe6, 0xef, - 0x35, 0xd8, 0xc8, 0xba, 0xa7, 0x05, 0x99, 0xf2, 0xca, 0x1d, 0x66, 0x39, 0x6c, 0xb3, 0xce, 0xce, - 0x8b, 0x9d, 0x83, 0x4e, 0xba, 0xc3, 0x43, 0xa8, 0x04, 0x3c, 0x8c, 0xfc, 0x80, 0x63, 0x51, 0x23, - 0x73, 0xb7, 0xed, 0x4b, 0x30, 0x12, 0x44, 0x7b, 0x58, 0x09, 0x31, 0x95, 0x85, 0xd1, 0x05, 0x7d, - 0x36, 0x0f, 0x26, 0xdc, 0x36, 0xa3, 0x38, 0x7b, 0xfe, 0x74, 0x35, 0xbf, 0x43, 0x24, 0xd9, 0x35, - 0x23, 0xce, 0x52, 0x6a, 0x63, 0x1f, 0xca, 0x53, 0x27, 0x8c, 0x68, 0x65, 0xc5, 0xcb, 0x72, 0x3a, - 0x70, 0xc2, 0x48, 0x2c, 0x2b, 0x21, 0x6e, 0x3e, 0x87, 0xaa, 0xba, 0x60, 0x2a, 0xe8, 0xfc, 0xc0, - 0xe2, 0xb2, 0xbc, 0x16, 0x1d, 0x54, 0x3c, 0xf7, 0x15, 0x65, 0x55, 0xc2, 0x54, 0x64, 0x0f, 0x33, - 0x53, 0x79, 0x9c, 0xa1, 0x34, 0x93, 0xa4, 0xdf, 0xdc, 0x07, 0x3d, 0x59, 0x3a, 0xba, 0x96, 0x53, - 0x6e, 0x06, 0xc4, 0xb5, 0xc8, 0xa8, 0x8d, 0x53, 0xb9, 0xbe, 0x27, 0x79, 0x16, 0x99, 0xe8, 0xe0, - 0x49, 0xda, 0xe6, 0xa9, 0xd4, 0x28, 0x6c, 0x36, 0x3f, 0x05, 0x3d, 0x59, 0xb9, 0xd4, 0x3b, 0xee, - 0x45, 0x81, 0x43, 0xef, 0x07, 0xb1, 0xde, 0x49, 0x48, 0xeb, 0x3e, 0x54, 0x94, 0x93, 0x34, 0x2a, - 0xb0, 0xce, 0x3a, 0xc3, 0xd1, 0x80, 0x2d, 0x53, 0xab, 0xe6, 0xdf, 0xe7, 0x61, 0xf3, 0x4c, 0xb8, - 0x5a, 0x65, 0x3c, 0x7b, 0xc9, 0xe5, 0x62, 0x9e, 0xd2, 0xc2, 0xed, 0xd5, 0x11, 0x70, 0xe1, 0x2d, - 0x63, 0xc6, 0x07, 0x15, 0xce, 0xfa, 0xa0, 0x16, 0x54, 0x5f, 0xf1, 0xd3, 0x30, 0xf2, 0x6d, 0x3e, - 0xe5, 0xa4, 0x30, 0x85, 0xdb, 0x3a, 0xcb, 0xc0, 0xf0, 0x5c, 0xac, 0x80, 0xa3, 0x3a, 0x15, 0xc5, - 0xb9, 0x88, 0xde, 0xcf, 0xb8, 0x4b, 0x6c, 0x8e, 0xa0, 0xaa, 0x46, 0xe0, 0x55, 0xb2, 0xb8, 0x15, - 0x67, 0xee, 0x4b, 0x52, 0x48, 0x31, 0xda, 0x6c, 0x23, 0xd7, 0x34, 0x3c, 0xaf, 0xe2, 0x1a, 0x47, - 0xa2, 0xbc, 0x12, 0x89, 0x7e, 0x97, 0x07, 0x48, 0x63, 0xf5, 0x2a, 0x0e, 0x8f, 0x55, 0xf3, 0xbf, - 0x73, 0x61, 0xd8, 0xdf, 0x6e, 0xef, 0x1c, 0x8c, 0x77, 0x06, 0xbd, 0x5e, 0xbb, 0x2f, 0x4d, 0xff, - 0xe2, 0x83, 0xf9, 0x3a, 0x73, 0xed, 0xf5, 0xc9, 0x6a, 0xde, 0x4a, 0xa1, 0x68, 0x80, 0x16, 0xcc, - 0xa7, 0xe2, 0xb8, 0x74, 0x46, 0x6d, 0x34, 0xa2, 0x99, 0x1f, 0x3a, 0x49, 0x05, 0x57, 0x63, 0x49, - 0xbf, 0x75, 0x0f, 0x2a, 0xca, 0xea, 0x50, 0x6d, 0xfb, 0x83, 0x3e, 0xea, 0x32, 0x40, 0xa9, 0x37, - 0xd8, 0xed, 0xee, 0xbd, 0x50, 0x95, 0xb9, 0x75, 0x0b, 0xca, 0xf1, 0x84, 0x46, 0x15, 0xca, 0x47, - 0xc3, 0x0e, 0x1b, 0xb7, 0x77, 0x0e, 0xea, 0x6b, 0x68, 0x08, 0xc3, 0x17, 0x43, 0xea, 0xe4, 0x9a, - 0x5f, 0x61, 0x94, 0x4e, 0x13, 0x98, 0x15, 0xb5, 0x8a, 0x40, 0x15, 0x18, 0xcd, 0xdf, 0xe5, 0xa0, - 0xaa, 0xe6, 0x30, 0x0b, 0xaf, 0x0e, 0x6f, 0x28, 0xe5, 0xf0, 0x39, 0x8d, 0xc0, 0xd3, 0xd9, 0x82, - 0xbc, 0x3f, 0x93, 0xf7, 0xce, 0xf5, 0xec, 0xbd, 0xf3, 0xe0, 0x90, 0xe5, 0xfd, 0x59, 0xe6, 0x16, - 0x57, 0x3b, 0x73, 0x8b, 0xab, 0xde, 0x13, 0x17, 0xcf, 0xdc, 0x13, 0xdf, 0x81, 0x22, 0xba, 0x82, - 0x53, 0x92, 0xe4, 0x86, 0xb2, 0x15, 0x62, 0xde, 0xe9, 0x8f, 0xd8, 0x0b, 0x26, 0x30, 0x9a, 0xff, - 0xa5, 0x41, 0x55, 0xcd, 0xaa, 0x8c, 0xaf, 0x20, 0x3f, 0x0d, 0xa5, 0x0c, 0x7e, 0xb1, 0x22, 0x05, - 0xdb, 0x3e, 0x08, 0xa9, 0x8b, 0xc5, 0xc0, 0x34, 0x34, 0xfe, 0x82, 0x36, 0x24, 0x76, 0xfc, 0xd9, - 0x2a, 0xd2, 0xc1, 0x0c, 0x6b, 0x55, 0x9e, 0xd0, 0xfb, 0xb3, 0xe6, 0xbf, 0xe6, 0x60, 0x5d, 0x72, - 0x34, 0x06, 0xa0, 0xfb, 0xf3, 0xe8, 0xd8, 0x0f, 0x5c, 0x33, 0x92, 0x97, 0x0e, 0x0f, 0x2e, 0xb9, - 0x9a, 0xed, 0xc1, 0x3c, 0xda, 0x23, 0x42, 0x96, 0xf2, 0xa0, 0xfa, 0x32, 0xb9, 0x23, 0x10, 0x35, - 0xbd, 0x72, 0x1b, 0xf0, 0x4b, 0xd0, 0x13, 0x2a, 0x45, 0xc1, 0x36, 0x00, 0x7a, 0x83, 0x7e, 0x77, - 0x34, 0x60, 0xdd, 0xfe, 0x7e, 0x3d, 0x87, 0x0a, 0x84, 0x4a, 0x86, 0x1d, 0x8a, 0xc5, 0xdf, 0x0d, - 0x07, 0xfd, 0x7a, 0xa1, 0xf9, 0x37, 0x79, 0xa8, 0xaa, 0xfb, 0x31, 0xbe, 0x25, 0x49, 0x88, 0x65, - 0xdf, 0xff, 0x29, 0x92, 0xd8, 0x1e, 0xcc, 0xe8, 0xe4, 0xaf, 0xc6, 0xb9, 0xb0, 0x58, 0xa9, 0xe8, - 0xa0, 0x0b, 0xc3, 0x34, 0x5e, 0xdc, 0x0f, 0x50, 0x96, 0x1e, 0x2b, 0x9e, 0xa6, 0xd4, 0xf9, 0x06, - 0x68, 0xf3, 0x90, 0x07, 0xb1, 0x79, 0x61, 0x3b, 0xbd, 0x45, 0x28, 0x29, 0xb7, 0x08, 0xad, 0x03, - 0xc8, 0x0f, 0x66, 0x99, 0xa4, 0x03, 0xa0, 0xc4, 0x3a, 0xbd, 0xc1, 0x33, 0x0c, 0x0f, 0x3a, 0x14, - 0x87, 0x4f, 0xdb, 0xac, 0x53, 0xcf, 0xe3, 0xbe, 0x8f, 0xfa, 0xa2, 0x53, 0x40, 0x9c, 0xf6, 0xce, - 0x4e, 0x67, 0x38, 0xac, 0x6b, 0x8a, 0x05, 0x16, 0x9f, 0x94, 0xa1, 0x14, 0xce, 0x5f, 0x5a, 0xae, - 0xfd, 0x44, 0x87, 0x75, 0xcb, 0x77, 0x5d, 0xd3, 0xb3, 0x5b, 0xff, 0x58, 0x05, 0xc0, 0x7d, 0xcb, - 0xeb, 0xac, 0x47, 0x50, 0xe4, 0x41, 0xe0, 0x07, 0x52, 0xc1, 0xb2, 0x35, 0x97, 0xc0, 0xd9, 0xee, - 0x20, 0x42, 0xdc, 0x63, 0x02, 0x5f, 0xad, 0xf6, 0x84, 0x82, 0xdd, 0x5c, 0x44, 0x9a, 0x24, 0x6c, - 0x92, 0x78, 0x51, 0xb5, 0x57, 0x58, 0x4e, 0x9e, 0xa4, 0x0a, 0x31, 0x79, 0x5c, 0xed, 0xc9, 0xfa, - 0x49, 0x5b, 0x50, 0x98, 0x48, 0x52, 0xf2, 0x76, 0x92, 0x2c, 0xae, 0x9f, 0x44, 0x19, 0x54, 0x5c, - 0xbe, 0x53, 0xe9, 0x43, 0xe2, 0x9d, 0x9e, 0x29, 0x83, 0x4a, 0xcb, 0x09, 0xa5, 0xfe, 0xc4, 0x84, - 0xa2, 0x0c, 0xfa, 0x02, 0x6a, 0x19, 0xd1, 0xa1, 0x22, 0x58, 0x18, 0x40, 0x72, 0x22, 0x80, 0x60, - 0x9b, 0x1e, 0x17, 0xc2, 0x89, 0x54, 0x2b, 0x6c, 0x36, 0xff, 0x3b, 0x07, 0x9b, 0x67, 0xe4, 0x76, - 0x39, 0x4a, 0xe3, 0xfb, 0x4c, 0xe2, 0x83, 0x49, 0xc0, 0xfd, 0x4b, 0x1c, 0x4a, 0xdc, 0xef, 0x7a, - 0xc7, 0xbe, 0x92, 0x29, 0xfd, 0x00, 0x15, 0x65, 0x60, 0x55, 0x64, 0x4b, 0x1e, 0x49, 0xf3, 0xcb, - 0x1f, 0x49, 0x9b, 0xbf, 0x2d, 0xc0, 0xe6, 0x99, 0x23, 0xbd, 0xfc, 0xce, 0xe4, 0xd1, 0x5f, 0xb8, - 0xb3, 0x33, 0xcc, 0xe3, 0xbe, 0xd8, 0x59, 0xcc, 0xa0, 0xf9, 0x9b, 0x3c, 0x54, 0x94, 0x91, 0x3f, - 0x4e, 0x32, 0x81, 0x12, 0xb0, 0x95, 0x57, 0x9c, 0xb3, 0x12, 0xa0, 0xb1, 0xe4, 0xf7, 0x08, 0x4d, - 0xf9, 0x3d, 0xe2, 0x50, 0x46, 0xee, 0x22, 0x79, 0xa7, 0x5f, 0xfe, 0xc4, 0x7d, 0x6d, 0xef, 0x76, - 0x0e, 0x3a, 0xa3, 0xee, 0xa0, 0xaf, 0xc4, 0x73, 0x99, 0x59, 0x95, 0x92, 0xcc, 0xaa, 0xd5, 0x82, - 0xaa, 0x8a, 0x87, 0xae, 0x72, 0xaf, 0x7b, 0x80, 0x0e, 0xa6, 0x0c, 0xda, 0x88, 0x75, 0x3a, 0xf5, - 0x5c, 0x73, 0x1f, 0x2a, 0x8a, 0xd1, 0x5c, 0xf2, 0x60, 0xe2, 0xd4, 0xa1, 0x90, 0xa6, 0x0e, 0xcd, - 0x13, 0xa8, 0x65, 0x0c, 0xe9, 0x92, 0xac, 0x1e, 0x80, 0x4e, 0x06, 0xe7, 0x89, 0x6a, 0xbf, 0x90, - 0x89, 0xf9, 0xe9, 0x43, 0x32, 0x4b, 0xb1, 0x9a, 0xa1, 0xbc, 0x33, 0xa6, 0x63, 0x8c, 0xef, 0x87, - 0x73, 0xd9, 0xfb, 0x61, 0x7a, 0x59, 0x91, 0x77, 0xc6, 0xd8, 0x5e, 0xb4, 0xe4, 0xf8, 0x41, 0x53, - 0x4b, 0x1f, 0x34, 0x1b, 0xb0, 0xee, 0x91, 0x19, 0xdb, 0x32, 0x9a, 0xc7, 0xdd, 0xe6, 0x63, 0xa8, - 0x88, 0x8b, 0x56, 0xcb, 0xe2, 0x61, 0xb8, 0x70, 0xda, 0x06, 0xac, 0x4f, 0x02, 0xd3, 0x8b, 0xb8, - 0x2d, 0x4b, 0x93, 0xb8, 0xdb, 0xfc, 0xa7, 0x1c, 0xd4, 0x32, 0xce, 0xe2, 0x92, 0xc2, 0xf9, 0x02, - 0x4a, 0x34, 0x7d, 0xac, 0xfe, 0xd7, 0x97, 0x7a, 0x21, 0x52, 0x76, 0x89, 0x6c, 0x3c, 0x82, 0x92, - 0x49, 0xcb, 0xa4, 0x44, 0x7d, 0x89, 0xab, 0x54, 0x76, 0xc3, 0x24, 0x7a, 0xeb, 0x0e, 0xd4, 0xfa, - 0xe1, 0x30, 0x32, 0xa3, 0x95, 0xd7, 0xb5, 0xad, 0x7f, 0x29, 0xc0, 0x46, 0x8c, 0x7b, 0xc1, 0x9e, - 0x0c, 0xd0, 0x78, 0xba, 0x29, 0x6a, 0x53, 0x54, 0x8d, 0xb0, 0x50, 0x90, 0x37, 0xec, 0xd4, 0xc1, - 0xfa, 0xc1, 0x53, 0x73, 0x2c, 0xd9, 0xc3, 0xea, 0xdd, 0x53, 0x7e, 0x56, 0x10, 0xc7, 0xa2, 0x82, - 0x8c, 0x0f, 0x40, 0x7f, 0xe9, 0xfb, 0xd1, 0x98, 0xec, 0x50, 0xbc, 0xe4, 0x97, 0x11, 0x40, 0x3f, - 0x55, 0xdd, 0x80, 0x8a, 0x35, 0x0f, 0xe8, 0x4f, 0x94, 0x63, 0xc7, 0x96, 0x6f, 0xf9, 0x20, 0x41, - 0x7b, 0x8e, 0xad, 0x22, 0x58, 0x8e, 0x2d, 0x5f, 0xf2, 0x63, 0x84, 0x1d, 0x81, 0xe0, 0x72, 0x77, - 0xfc, 0xda, 0x09, 0xa2, 0xb9, 0x39, 0x95, 0xef, 0xf8, 0xe0, 0x72, 0xf7, 0x99, 0x80, 0x18, 0x1f, - 0x41, 0x15, 0x11, 0x02, 0x1e, 0x3a, 0x36, 0xf7, 0x22, 0xf9, 0x30, 0x89, 0x44, 0x4c, 0x82, 0x70, - 0x89, 0x88, 0x22, 0x22, 0x4a, 0x45, 0xe6, 0x89, 0xdc, 0x15, 0x69, 0xca, 0x75, 0x40, 0x6e, 0xe3, - 0x49, 0xe0, 0xbf, 0x89, 0x4e, 0xe8, 0x95, 0x52, 0x63, 0x88, 0xbe, 0x4f, 0x00, 0x3c, 0x83, 0xe8, - 0x24, 0xe0, 0xa6, 0x2d, 0x9e, 0xe7, 0x35, 0x16, 0x77, 0x51, 0x61, 0x8e, 0xed, 0x90, 0x1e, 0x24, - 0x35, 0x86, 0x4d, 0x14, 0xe2, 0x7c, 0x46, 0x72, 0x10, 0x7f, 0x81, 0xc8, 0x5e, 0xeb, 0xdf, 0x0a, - 0x50, 0xeb, 0x99, 0x9e, 0x33, 0x4d, 0x72, 0xe5, 0x6f, 0xa1, 0x1a, 0x88, 0xe6, 0x58, 0x79, 0x51, - 0x4a, 0x2f, 0x9b, 0x7b, 0xed, 0x7e, 0xf7, 0xa0, 0x3d, 0x66, 0x9d, 0x1f, 0x8e, 0x3a, 0xc3, 0x91, - 0xa8, 0x1b, 0x2a, 0x92, 0x62, 0x84, 0xee, 0xe6, 0x7d, 0x28, 0xa3, 0x2e, 0x8c, 0xcf, 0xfc, 0x0d, - 0xf7, 0xbd, 0x78, 0x24, 0xa2, 0x3f, 0x0e, 0x2d, 0x3f, 0xce, 0x92, 0x92, 0x3e, 0x6e, 0x96, 0xa4, - 0x30, 0x56, 0xff, 0x02, 0x20, 0x08, 0xfd, 0xd1, 0xb5, 0x05, 0x15, 0x9b, 0x87, 0x56, 0xe0, 0xcc, - 0x92, 0x27, 0x15, 0x9d, 0xa9, 0x20, 0x9c, 0x57, 0x30, 0x90, 0xbf, 0x95, 0xe9, 0x6c, 0x9d, 0xfa, - 0x5d, 0xdb, 0xf8, 0x18, 0x36, 0xc4, 0x90, 0x78, 0x5d, 0x95, 0xc7, 0xad, 0xb3, 0x2a, 0x41, 0xf7, - 0x11, 0x28, 0xfe, 0x3d, 0x13, 0x29, 0x41, 0x59, 0xd4, 0xfa, 0x22, 0xde, 0x37, 0x60, 0x9d, 0x0a, - 0x56, 0x3f, 0xa0, 0x13, 0xd6, 0x59, 0xdc, 0x45, 0x99, 0x72, 0x91, 0xb5, 0x81, 0x78, 0x92, 0x11, - 0x3d, 0x3c, 0x76, 0xd3, 0x76, 0x1d, 0x6f, 0x2c, 0x47, 0x2b, 0x62, 0xad, 0x04, 0xeb, 0x24, 0xef, - 0xc0, 0x62, 0x41, 0xf4, 0x5c, 0x55, 0x55, 0x36, 0xfb, 0xd4, 0x0f, 0x23, 0xe3, 0x56, 0xbc, 0xde, - 0xf8, 0x25, 0x5c, 0xfe, 0x7f, 0x51, 0x23, 0x68, 0xfc, 0xea, 0xdd, 0xfa, 0x7d, 0x0e, 0x36, 0xe2, - 0xc3, 0x93, 0xa6, 0x26, 0x5d, 0x45, 0x2e, 0xe3, 0x92, 0xad, 0xb8, 0x4c, 0x2d, 0x4a, 0xe3, 0xbb, - 0x0e, 0x10, 0xf9, 0x91, 0x39, 0x1d, 0xcf, 0x43, 0xf9, 0x5c, 0x53, 0x60, 0x3a, 0x41, 0x8e, 0x42, - 0x8e, 0x21, 0x6e, 0x43, 0x0c, 0x5b, 0xe6, 0xcc, 0xb4, 0x9c, 0x48, 0x3c, 0xf6, 0x15, 0x58, 0x8d, - 0xa0, 0x3b, 0x12, 0x68, 0x7c, 0x02, 0x9b, 0x1e, 0x7f, 0x23, 0x74, 0x77, 0x9c, 0x26, 0x53, 0x05, - 0x56, 0xf3, 0xf8, 0x1b, 0xd2, 0x60, 0x72, 0xd3, 0x28, 0xfd, 0x14, 0x4f, 0x79, 0xf6, 0xaa, 0xc6, - 0x68, 0x87, 0x66, 0x74, 0x72, 0xf7, 0xcf, 0x41, 0x3b, 0x13, 0x8b, 0x6a, 0xa0, 0xef, 0x0c, 0xfa, - 0xa3, 0x76, 0xb7, 0xdf, 0x61, 0x0b, 0x92, 0xfb, 0xe1, 0xa8, 0x3d, 0xaa, 0x17, 0xee, 0xde, 0x03, - 0x3d, 0xf9, 0x17, 0x08, 0xc1, 0x58, 0x4f, 0x8a, 0x7b, 0x94, 0x7d, 0x36, 0x38, 0x3a, 0x14, 0xd9, - 0xf1, 0x21, 0x1b, 0x7c, 0xd7, 0xd9, 0x41, 0xf4, 0xfb, 0xb0, 0x2e, 0x4b, 0x38, 0x63, 0x1d, 0x0a, - 0xfb, 0x9d, 0x51, 0x7d, 0x0d, 0x1b, 0xc3, 0xce, 0xa8, 0x9e, 0x33, 0x4a, 0x90, 0x67, 0xbd, 0x7a, - 0x9e, 0xd2, 0xec, 0x5e, 0x7f, 0xb0, 0xdb, 0x21, 0xfe, 0x90, 0x96, 0x65, 0xd9, 0xe2, 0xf6, 0xd9, - 0xe0, 0xe0, 0xa8, 0x27, 0x53, 0xf1, 0x2e, 0xa1, 0xe7, 0xef, 0xfe, 0x26, 0x07, 0x57, 0x16, 0x98, - 0x88, 0x51, 0x87, 0xaa, 0xc8, 0xe2, 0xc7, 0x22, 0x4f, 0x5f, 0x43, 0x08, 0x05, 0xe1, 0x18, 0x92, - 0x43, 0x48, 0xe7, 0xf9, 0xa8, 0xd3, 0xdf, 0x1d, 0xc7, 0x89, 0x7d, 0x1d, 0xaa, 0xc3, 0xa7, 0xac, - 0xdb, 0xff, 0x7e, 0x1c, 0x67, 0xf7, 0x57, 0x60, 0xb3, 0xd7, 0xee, 0xb7, 0xf7, 0x3b, 0xe3, 0xce, - 0x73, 0x29, 0x0d, 0x8d, 0xca, 0xe8, 0xbe, 0x00, 0xd7, 0x8b, 0x86, 0x01, 0x1b, 0xfb, 0x9d, 0xd1, - 0x78, 0xa7, 0x7d, 0xd8, 0xde, 0xe9, 0x8e, 0xba, 0x9d, 0x61, 0xbd, 0xf4, 0xf0, 0x7f, 0x0b, 0x50, - 0xe8, 0xf8, 0xa1, 0xf1, 0x10, 0xb4, 0x43, 0xc7, 0x9b, 0x18, 0xe9, 0xfb, 0xab, 0xf2, 0xc3, 0x6f, - 0xd3, 0x38, 0x03, 0x9d, 0x4d, 0x4f, 0x5b, 0x6b, 0xc6, 0x03, 0xc8, 0xf7, 0x76, 0x0d, 0x43, 0x49, - 0x85, 0x62, 0xfc, 0x2b, 0x19, 0x98, 0x50, 0xc1, 0xd6, 0xda, 0xe7, 0x39, 0xe3, 0x0b, 0xd0, 0xf6, - 0x1c, 0xcf, 0x36, 0xd4, 0xe7, 0xee, 0xe4, 0xb1, 0x7a, 0x39, 0xd9, 0x63, 0x28, 0x89, 0xd0, 0x61, - 0xbc, 0x9b, 0x46, 0x26, 0x35, 0xee, 0x34, 0xdf, 0x3b, 0x07, 0x8f, 0xc9, 0x8d, 0xef, 0x60, 0xf3, - 0xcc, 0x1f, 0xc5, 0xc6, 0x8d, 0xf3, 0xaf, 0xe8, 0x99, 0x9f, 0x7c, 0x9b, 0xe9, 0xfa, 0x94, 0xbf, - 0x74, 0x5b, 0x6b, 0xc6, 0x5f, 0x02, 0xa4, 0x7f, 0x04, 0x1b, 0xcd, 0xcc, 0xa3, 0xfd, 0xe5, 0x38, - 0x3c, 0x00, 0xad, 0xf3, 0x96, 0x5b, 0x8a, 0xd8, 0x92, 0xf2, 0x52, 0xd9, 0x7f, 0x1a, 0x76, 0x5b, - 0x6b, 0xc6, 0x53, 0xb8, 0x22, 0xac, 0x79, 0xc8, 0x83, 0xd7, 0x3c, 0xb9, 0xe8, 0x4b, 0x45, 0x91, - 0x71, 0xd4, 0x8a, 0x28, 0xb2, 0x3e, 0xa0, 0xb5, 0xf6, 0xe4, 0x08, 0x36, 0x1d, 0x7f, 0x7b, 0x82, - 0x63, 0x12, 0xe7, 0x49, 0xb9, 0xe3, 0x87, 0x94, 0x30, 0x1d, 0xe6, 0xfe, 0xea, 0xf3, 0x89, 0x13, - 0x9d, 0xcc, 0x5f, 0x6e, 0x5b, 0xbe, 0x7b, 0xdf, 0xe2, 0x81, 0x77, 0x8f, 0xfb, 0xe1, 0x7d, 0xc4, - 0xbe, 0x47, 0xde, 0xf8, 0x3e, 0x7d, 0x5f, 0xce, 0x8f, 0x1f, 0x73, 0x3f, 0x1c, 0x23, 0xfc, 0x1f, - 0xf2, 0x85, 0xce, 0x60, 0xf8, 0xb2, 0x44, 0x03, 0x7f, 0xfa, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, - 0x8f, 0xfd, 0x31, 0xde, 0x3b, 0x2e, 0x00, 0x00, + // 4076 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x3a, 0x4d, 0x73, 0x1b, 0x47, + 0x76, 0x04, 0x30, 0x00, 0x31, 0x0f, 0x00, 0x09, 0xb5, 0x14, 0x2d, 0x0c, 0x49, 0x16, 0x3d, 0xb2, + 0xbc, 0x92, 0xd6, 0x82, 0x2c, 0x25, 0x8e, 0x6c, 0x6b, 0x1d, 0x07, 0x22, 0x41, 0x0a, 0x36, 0x01, + 0xd0, 0x0d, 0x50, 0x25, 0xe5, 0x82, 0x1a, 0xcd, 0x34, 0xc1, 0x29, 0x61, 0x66, 0xb0, 0x33, 0x03, + 0x89, 0x74, 0x55, 0x4e, 0xc9, 0x25, 0x5b, 0x95, 0xdb, 0xde, 0x36, 0xa7, 0x54, 0x92, 0x4b, 0xee, + 0x39, 0xe4, 0x94, 0x5b, 0xb6, 0x72, 0xc8, 0x21, 0x95, 0xaa, 0xdc, 0xf2, 0x07, 0x92, 0x1f, 0x91, + 0xea, 0xd7, 0x3d, 0x33, 0x3d, 0x24, 0x40, 0xd0, 0xf1, 0x5e, 0xa6, 0xba, 0x5f, 0xbf, 0xf7, 0xba, + 0xfb, 0xf5, 0xfb, 0xec, 0x1e, 0xd0, 0xe9, 0xcc, 0x6a, 0xcd, 0x02, 0x3f, 0xf2, 0xc9, 0x3a, 0xf3, + 0xc3, 0x56, 0x30, 0xb3, 0x8c, 0x36, 0x54, 0x0e, 0x1c, 0x6f, 0x42, 0xd9, 0xaf, 0xe6, 0x2c, 0x8c, + 0x48, 0x03, 0xd6, 0xcd, 0x79, 0x74, 0xfc, 0x96, 0x9d, 0x36, 0x72, 0x5b, 0xb9, 0x7b, 0x3a, 0x8d, + 0xbb, 0x7c, 0xc4, 0x65, 0x61, 0x68, 0x4e, 0x58, 0x23, 0xbf, 0x95, 0xbb, 0x57, 0xa5, 0x71, 0xd7, + 0xb8, 0x0b, 0xba, 0x60, 0x31, 0x9b, 0x66, 0xd0, 0x72, 0x59, 0xb4, 0x5f, 0xe7, 0xe0, 0xfa, 0xb6, + 0xef, 0x45, 0xa6, 0xe3, 0xb1, 0xa0, 0xeb, 0x85, 0x2c, 0x88, 0xe2, 0x59, 0x9f, 0x82, 0x6e, 0xc5, + 0x23, 0x8d, 0xdc, 0x56, 0xe1, 0x5e, 0xe5, 0xc9, 0x07, 0x2d, 0xb9, 0xc2, 0x56, 0x42, 0xd3, 0xb3, + 0x0f, 0xf8, 0xda, 0x69, 0x8a, 0xab, 0x2e, 0x37, 0x9f, 0x5d, 0xee, 0x2d, 0x00, 0xc7, 0x3b, 0x66, + 0x81, 0x13, 0x8d, 0x5d, 0xbb, 0x51, 0xd8, 0xca, 0xdd, 0x2b, 0x53, 0x5d, 0x42, 0x7a, 0xb6, 0xf1, + 0x1a, 0xae, 0xec, 0x3a, 0x53, 0x96, 0x5d, 0xc6, 0x03, 0x28, 0x1e, 0x39, 0x53, 0x16, 0xca, 0x25, + 0x5c, 0x4b, 0x96, 0xc0, 0x51, 0xe3, 0xd9, 0x05, 0xca, 0xf2, 0x99, 0x8d, 0x67, 0x50, 0x89, 0xd9, + 0x9e, 0x13, 0x48, 0x81, 0x23, 0xca, 0x2e, 0x21, 0xa0, 0x05, 0x2c, 0xb2, 0x1a, 0xf9, 0xad, 0xc2, + 0xbd, 0x1a, 0xc5, 0xb6, 0xf1, 0x10, 0xb4, 0x91, 0xe3, 0x32, 0x52, 0x87, 0x42, 0xc8, 0x2c, 0x14, + 0xa1, 0x46, 0x79, 0x93, 0x5c, 0x85, 0xa2, 0x37, 0xe6, 0xb0, 0x3c, 0xc2, 0x34, 0x6f, 0xc8, 0x2c, + 0xe3, 0x8f, 0xa0, 0xbc, 0x7d, 0xcc, 0xac, 0xb7, 0xe1, 0xdc, 0x25, 0xd7, 0xa0, 0xf8, 0xce, 0x9c, + 0xce, 0x63, 0xb9, 0x8b, 0x0e, 0x9f, 0x24, 0x3a, 0x9d, 0x31, 0xb9, 0x48, 0x6c, 0x1b, 0xff, 0xaa, + 0x41, 0x45, 0xd9, 0x12, 0xd9, 0x80, 0xbc, 0x63, 0xcb, 0xb9, 0xf2, 0x8e, 0x4d, 0x7e, 0x06, 0xeb, + 0x5c, 0xc4, 0x63, 0xc7, 0x96, 0x93, 0x95, 0x78, 0xb7, 0x6b, 0xf3, 0x55, 0xcd, 0x1d, 0x21, 0x4d, + 0x8d, 0xf2, 0x26, 0x87, 0x4c, 0x1c, 0xbb, 0xa1, 0x09, 0xc8, 0xc4, 0xb1, 0xf9, 0x84, 0xa1, 0xf3, + 0x03, 0x6b, 0x14, 0xc5, 0x32, 0x79, 0x9b, 0xdc, 0x00, 0x7d, 0x6a, 0x9e, 0xfa, 0x73, 0x64, 0x59, + 0xda, 0xca, 0xdd, 0xab, 0xd1, 0xb2, 0x00, 0x74, 0x6d, 0xbe, 0xee, 0xa3, 0xa9, 0x39, 0x09, 0x1b, + 0xeb, 0x38, 0x20, 0x3a, 0x9c, 0x8d, 0x67, 0xba, 0xac, 0x51, 0xc6, 0xcd, 0x60, 0x1b, 0xd9, 0x38, + 0xde, 0xdb, 0x31, 0x0e, 0xe8, 0x38, 0x50, 0xe6, 0x80, 0x3e, 0x1f, 0xbc, 0x03, 0x45, 0x2b, 0x72, + 0x5c, 0xd6, 0x80, 0xad, 0xdc, 0xbd, 0xca, 0x93, 0x5a, 0x72, 0x78, 0x5c, 0x9e, 0x54, 0x8c, 0x71, + 0x24, 0x17, 0x91, 0x2a, 0x0b, 0x91, 0x70, 0x8c, 0x3c, 0x84, 0xb2, 0x25, 0x85, 0xda, 0xa8, 0x22, + 0xde, 0x95, 0x54, 0x19, 0xe5, 0x00, 0x4d, 0x50, 0xc8, 0x4d, 0xd0, 0xa7, 0xbe, 0x65, 0x46, 0x8e, + 0xef, 0x85, 0x8d, 0x1a, 0x9e, 0x65, 0x0a, 0x20, 0xf7, 0xa1, 0x3e, 0xf7, 0x70, 0xd5, 0x29, 0xd2, + 0x06, 0x22, 0x6d, 0x0a, 0xf8, 0x7e, 0x82, 0xfa, 0x05, 0x94, 0x4e, 0xcc, 0x28, 0x0a, 0xc2, 0xc6, + 0x26, 0xea, 0xdf, 0xd6, 0x22, 0xfd, 0x6b, 0xbd, 0x42, 0x94, 0x8e, 0x17, 0x05, 0xa7, 0x54, 0xe2, + 0x73, 0x61, 0xcd, 0xcc, 0xe8, 0xb8, 0x51, 0x17, 0xc2, 0xe2, 0x6d, 0x0e, 0x63, 0x91, 0x39, 0x69, + 0x5c, 0x11, 0x07, 0xcf, 0xdb, 0x5c, 0xd4, 0x8e, 0xe7, 0xdb, 0xac, 0x41, 0xf0, 0x70, 0x44, 0xa7, + 0xf9, 0x25, 0x54, 0x14, 0xa6, 0xfc, 0x48, 0x53, 0xf3, 0xe7, 0xcd, 0x54, 0xb3, 0xf2, 0x8a, 0x66, + 0x7d, 0x95, 0xff, 0x22, 0x67, 0xfc, 0x56, 0x83, 0xfa, 0x59, 0xfb, 0x3c, 0xa7, 0x4e, 0x37, 0x40, + 0x9f, 0x99, 0x01, 0x53, 0x15, 0xaa, 0x2c, 0x00, 0x97, 0x54, 0xa9, 0x1b, 0xa0, 0x47, 0x01, 0x63, + 0x63, 0xd4, 0x2b, 0xae, 0x3e, 0x05, 0x5a, 0xe6, 0x80, 0x21, 0xd7, 0x2d, 0x02, 0x9a, 0xcb, 0xb7, + 0x54, 0x44, 0xed, 0xc1, 0xf6, 0x8f, 0x50, 0xa9, 0x44, 0x6b, 0xf4, 0xcb, 0x68, 0x0d, 0x5c, 0xa0, + 0x35, 0x77, 0xa0, 0x18, 0x5e, 0xa0, 0x5a, 0x38, 0x46, 0xbe, 0x4e, 0x8e, 0xb8, 0x8a, 0x47, 0x7c, + 0x77, 0xa9, 0x97, 0xbb, 0xf0, 0x9c, 0x6b, 0x0b, 0xce, 0x79, 0x63, 0xd1, 0x39, 0x6f, 0x2a, 0xe7, + 0x8c, 0x52, 0x41, 0xf7, 0x56, 0x17, 0x50, 0xe1, 0xc8, 0x3e, 0x04, 0x48, 0xfc, 0x69, 0x88, 0xda, + 0xa2, 0x51, 0x05, 0xf2, 0x53, 0xb4, 0xe3, 0xdf, 0x0b, 0x00, 0xdf, 0xcf, 0xfd, 0xc8, 0x14, 0x7a, + 0x11, 0xaf, 0x3e, 0x97, 0x5d, 0x3d, 0x9e, 0x89, 0x74, 0x4f, 0x78, 0x26, 0x9f, 0x48, 0x97, 0xc5, + 0x75, 0x62, 0xe3, 0x09, 0x49, 0x44, 0xf4, 0xfd, 0xe1, 0x60, 0xd4, 0x1e, 0xbd, 0x3e, 0xe8, 0x08, + 0x37, 0xc6, 0x0d, 0x6f, 0x1e, 0x32, 0xfb, 0xcd, 0x69, 0xc4, 0x42, 0xa9, 0x2e, 0x29, 0x80, 0x3c, + 0x80, 0x3a, 0xef, 0x4c, 0xfd, 0x89, 0x63, 0x99, 0x53, 0x81, 0x24, 0x7c, 0xd2, 0x39, 0x78, 0xcc, + 0x49, 0x48, 0xa7, 0x94, 0x72, 0x12, 0x12, 0x6a, 0x42, 0xd9, 0x35, 0x4f, 0x04, 0x87, 0x75, 0xa1, + 0xbe, 0x71, 0x9f, 0xdc, 0x83, 0x4d, 0xd7, 0x3c, 0xc9, 0x4c, 0x52, 0x46, 0x94, 0xb3, 0x60, 0xc9, + 0x45, 0x4c, 0xa1, 0x27, 0x5c, 0xc4, 0x0c, 0x9f, 0xc1, 0xd5, 0x19, 0x0b, 0x2c, 0xe6, 0x45, 0xe6, + 0x84, 0xa5, 0x7b, 0xe2, 0xea, 0x96, 0xa7, 0x8b, 0x86, 0xce, 0x53, 0x08, 0xc6, 0x95, 0x45, 0x14, + 0x62, 0x8e, 0x2d, 0xa8, 0x84, 0x91, 0x19, 0xcd, 0x43, 0xc1, 0xbb, 0x8a, 0x02, 0x57, 0x41, 0x29, + 0x86, 0xe0, 0x55, 0x53, 0x31, 0x10, 0x64, 0x9c, 0x40, 0x89, 0xfa, 0x53, 0x96, 0x9a, 0x6d, 0xee, + 0x9c, 0xd9, 0xe6, 0x53, 0xb3, 0x6d, 0x42, 0x79, 0x1e, 0xb2, 0x00, 0xcf, 0xb7, 0x80, 0xcc, 0x92, + 0x3e, 0x97, 0xf8, 0x24, 0xf0, 0xe7, 0x33, 0x1c, 0xd4, 0x70, 0x30, 0x05, 0x70, 0x5e, 0xe6, 0x6c, + 0x86, 0xc7, 0xa5, 0x53, 0xde, 0x34, 0xc6, 0xa0, 0xf5, 0x76, 0xba, 0xf6, 0x42, 0x1d, 0x12, 0xfe, + 0x86, 0x4f, 0x5c, 0x42, 0x7f, 0x53, 0x87, 0x82, 0xe3, 0xf9, 0x38, 0x65, 0x89, 0xf2, 0x26, 0xf9, + 0x48, 0x6a, 0x94, 0x86, 0x1a, 0xa5, 0x98, 0x66, 0xa2, 0x4c, 0xc6, 0x37, 0x50, 0xdc, 0x77, 0x5c, + 0x27, 0xe2, 0x33, 0xfc, 0xc0, 0x02, 0x1f, 0x67, 0x28, 0x53, 0x6c, 0x73, 0x8e, 0xae, 0xe3, 0xc5, + 0x7b, 0x73, 0x1d, 0x0f, 0x21, 0xe6, 0x49, 0xec, 0xb6, 0x5c, 0xf3, 0xc4, 0xf8, 0x87, 0x12, 0x54, + 0x7a, 0x3b, 0x43, 0x36, 0x65, 0x16, 0x77, 0xe7, 0xe4, 0x3a, 0x94, 0x42, 0xec, 0x48, 0x4e, 0xb2, + 0x47, 0x3e, 0x8e, 0x3d, 0x4e, 0x1e, 0xfd, 0xc4, 0x46, 0xb2, 0x18, 0x9c, 0x3e, 0x76, 0x39, 0x1f, + 0xc7, 0x2e, 0xa7, 0xb0, 0x18, 0xcb, 0x8d, 0xb1, 0x84, 0xcf, 0xd1, 0x16, 0x63, 0x09, 0xa7, 0x63, + 0x28, 0x11, 0xf9, 0x3c, 0x92, 0x88, 0xd0, 0x0f, 0x00, 0x3d, 0x6a, 0xe2, 0x61, 0xcf, 0xe3, 0x25, + 0xe3, 0x1c, 0xd7, 0x3a, 0x76, 0xa6, 0x76, 0xc0, 0x3c, 0xb4, 0x87, 0x05, 0xb8, 0xf1, 0x38, 0xf9, + 0x54, 0x0d, 0x8e, 0xe5, 0x85, 0xc8, 0x4a, 0xb0, 0xfc, 0x1a, 0x88, 0x08, 0x8a, 0xcc, 0x56, 0xc2, + 0xa5, 0xbe, 0x90, 0xec, 0x4a, 0x8c, 0x99, 0x06, 0xd0, 0x26, 0xc8, 0xac, 0xc2, 0xb1, 0xd1, 0x76, + 0x34, 0x9a, 0xf4, 0xd3, 0x90, 0x50, 0x91, 0xce, 0x0f, 0x43, 0x42, 0x03, 0xd6, 0xc3, 0x53, 0x97, + 0xf3, 0x41, 0x83, 0x28, 0xd3, 0xb8, 0x9b, 0x49, 0x02, 0x6a, 0xab, 0x93, 0x80, 0x6b, 0x50, 0xf4, + 0xdf, 0xf3, 0xec, 0x75, 0x43, 0x44, 0x1c, 0xec, 0x70, 0x28, 0x2a, 0x35, 0xfa, 0xe1, 0x1a, 0x15, + 0x1d, 0x9e, 0x9a, 0xe2, 0xf0, 0x38, 0xf0, 0xfd, 0x08, 0x9d, 0x71, 0x99, 0xea, 0x08, 0xa1, 0xbe, + 0x1f, 0xf1, 0x61, 0xc4, 0x13, 0xc3, 0x57, 0xc4, 0x30, 0x42, 0x70, 0xf8, 0xe7, 0xb0, 0x19, 0xb0, + 0x09, 0x3b, 0x99, 0x8d, 0xb9, 0x4d, 0xa2, 0xfd, 0x10, 0x34, 0x86, 0x0d, 0x01, 0xde, 0x95, 0x50, + 0x72, 0x17, 0x24, 0x64, 0x6c, 0x3b, 0xc2, 0x08, 0xaf, 0x22, 0x5e, 0x4d, 0x40, 0x77, 0x04, 0x90, + 0x7c, 0x0e, 0x45, 0x8c, 0x2e, 0x8d, 0x6b, 0x18, 0x91, 0x6e, 0x27, 0xbb, 0x54, 0x94, 0x59, 0x04, + 0x23, 0x11, 0x8b, 0x04, 0x76, 0xf3, 0x0b, 0x80, 0x14, 0xf8, 0xa3, 0xa2, 0xc2, 0xbf, 0xe4, 0x40, + 0xef, 0xed, 0xc4, 0x39, 0x77, 0x6c, 0x9a, 0xb9, 0xa5, 0xa6, 0x49, 0x6e, 0x25, 0xf6, 0xad, 0x86, + 0x55, 0xee, 0x0e, 0xd0, 0xdc, 0x95, 0x4c, 0xbc, 0x90, 0xad, 0x01, 0xee, 0x80, 0x16, 0xf8, 0xd3, + 0xd8, 0x3a, 0x36, 0x13, 0x52, 0xe1, 0xc3, 0x28, 0x0e, 0x92, 0x27, 0xa0, 0x87, 0xf1, 0x3e, 0xa5, + 0x89, 0x5c, 0x5b, 0x24, 0x03, 0x9a, 0xa2, 0x19, 0x7f, 0x99, 0x03, 0xe0, 0x5b, 0x08, 0x67, 0xbe, + 0x17, 0xb2, 0xcb, 0xec, 0xe1, 0x13, 0x28, 0x1c, 0xb9, 0xf1, 0x26, 0x16, 0x17, 0x16, 0x1c, 0x81, + 0xfc, 0x02, 0x0a, 0x96, 0xac, 0x57, 0x2e, 0xac, 0x81, 0x38, 0x96, 0xf1, 0xdf, 0x39, 0x9e, 0xc7, + 0x7b, 0xf6, 0xef, 0x4f, 0x96, 0xb1, 0xc4, 0x0a, 0x17, 0x49, 0x4c, 0x11, 0xb8, 0x96, 0x15, 0xb8, + 0x88, 0x71, 0x36, 0x9b, 0x45, 0xc7, 0x32, 0xd6, 0x26, 0xfd, 0xac, 0x9c, 0x4b, 0x97, 0x93, 0xf3, + 0x1e, 0xe8, 0xc3, 0x63, 0x33, 0x60, 0xed, 0xb9, 0x48, 0x15, 0x78, 0xed, 0x2a, 0x95, 0x0c, 0xdb, + 0x0b, 0xd3, 0x07, 0x02, 0xda, 0xb1, 0x1f, 0x46, 0x52, 0x19, 0xb0, 0x6d, 0xfc, 0x3a, 0x0f, 0x80, + 0x9c, 0x44, 0x26, 0xf2, 0x21, 0xc0, 0x8c, 0x05, 0xae, 0x13, 0x86, 0x7c, 0x31, 0x82, 0xa1, 0x02, + 0xe1, 0x3b, 0x64, 0x27, 0x33, 0x27, 0x60, 0xa1, 0xf4, 0xf9, 0x71, 0x37, 0xb5, 0x73, 0xc1, 0xfd, + 0xac, 0x9d, 0x0b, 0x79, 0x48, 0x3b, 0xff, 0x10, 0x60, 0xc2, 0x3c, 0x16, 0x98, 0x89, 0x6a, 0x69, + 0x54, 0x81, 0x24, 0xb1, 0xac, 0x24, 0x37, 0xc4, 0x63, 0xd9, 0x4d, 0xd0, 0xcd, 0xe9, 0xd4, 0x7f, + 0xcf, 0x9d, 0x2d, 0x3a, 0xd7, 0x32, 0x4d, 0x01, 0x3c, 0xa6, 0xbc, 0x8b, 0xfc, 0xb7, 0xcc, 0x43, + 0x57, 0xaa, 0x53, 0xd9, 0x23, 0x9f, 0xc2, 0xba, 0x1f, 0x38, 0x13, 0x07, 0x9d, 0x25, 0xb7, 0xe2, + 0x34, 0x69, 0x4a, 0xe4, 0x47, 0x63, 0x14, 0xe3, 0xaf, 0x72, 0x52, 0x18, 0x23, 0x24, 0xbe, 0x0f, + 0x45, 0xc1, 0x33, 0x87, 0x87, 0x72, 0x35, 0x4b, 0x2a, 0x8b, 0x5e, 0x31, 0xcf, 0x4d, 0xd0, 0x43, + 0x67, 0xe2, 0x99, 0xd1, 0x3c, 0x88, 0x0d, 0x3b, 0x05, 0xf0, 0xfd, 0x86, 0x2c, 0x70, 0xcc, 0xa9, + 0xf3, 0x03, 0x13, 0x2a, 0x5c, 0xa5, 0x0a, 0x04, 0x2b, 0x43, 0xc6, 0x44, 0x66, 0x5f, 0xa4, 0xd8, + 0x36, 0xfe, 0xf3, 0x36, 0xe8, 0xfd, 0xe1, 0xea, 0xdb, 0x87, 0x58, 0x31, 0xf3, 0x17, 0x29, 0xe6, + 0x53, 0x28, 0xba, 0x6f, 0x6d, 0x27, 0x68, 0xfc, 0x01, 0x62, 0xa5, 0xae, 0x2c, 0x99, 0xa1, 0xd5, + 0xe3, 0xe3, 0xb2, 0xf3, 0x62, 0x8d, 0x0a, 0x7c, 0x4e, 0x18, 0xb8, 0x9c, 0xf0, 0xfa, 0x52, 0x42, + 0xea, 0x66, 0x09, 0x11, 0x9f, 0x13, 0x46, 0xfe, 0xdc, 0x3a, 0x6e, 0xfc, 0x6c, 0x29, 0xe1, 0x88, + 0x8f, 0x2b, 0x84, 0x88, 0x4f, 0xbe, 0x82, 0x92, 0x88, 0x5f, 0x8d, 0x06, 0x52, 0x6e, 0x2d, 0xa0, + 0x3c, 0x44, 0x84, 0x94, 0x54, 0x52, 0x90, 0x16, 0xe4, 0x03, 0xb7, 0xf1, 0x01, 0xd2, 0xdd, 0x5c, + 0xb8, 0xd4, 0x94, 0x26, 0x1f, 0xb8, 0x7c, 0xae, 0x40, 0x04, 0x8a, 0xe6, 0xd2, 0xb9, 0x28, 0x22, + 0x28, 0x73, 0x09, 0x0a, 0xf2, 0x75, 0x1a, 0x20, 0x6f, 0x20, 0xf1, 0x47, 0x0b, 0x88, 0x87, 0x02, + 0x23, 0xa5, 0x4e, 0xa2, 0xe8, 0xd7, 0xb0, 0xfe, 0x8e, 0x05, 0x68, 0x65, 0x37, 0x97, 0x92, 0xbf, + 0x14, 0x18, 0x0a, 0xb9, 0xa4, 0xe1, 0xe4, 0x01, 0xb3, 0x4e, 0xad, 0x29, 0x6b, 0xdc, 0x5a, 0x4a, + 0x4e, 0x05, 0x86, 0x42, 0x2e, 0x69, 0xc8, 0x57, 0x71, 0x68, 0xfb, 0x10, 0x89, 0x8d, 0x45, 0x4b, + 0x67, 0xd1, 0xab, 0x76, 0x14, 0xa9, 0x27, 0x8b, 0x24, 0xfc, 0x64, 0xad, 0x63, 0xff, 0xbd, 0xd7, + 0xb8, 0xbd, 0xf4, 0x64, 0xb7, 0xf9, 0xb8, 0x42, 0x88, 0xf8, 0x82, 0xd0, 0xf5, 0xed, 0xc6, 0xd6, + 0x05, 0x84, 0xae, 0x6f, 0x67, 0x08, 0x5d, 0xdf, 0x26, 0x8f, 0xa1, 0x60, 0x5a, 0xd3, 0xc6, 0x47, + 0x48, 0x76, 0x6b, 0x01, 0x59, 0xdb, 0x9a, 0xa6, 0x44, 0x1c, 0x57, 0xa8, 0x1f, 0x37, 0x5d, 0xe3, + 0x02, 0xf5, 0x7b, 0xcb, 0xbc, 0x8c, 0xfa, 0x71, 0x43, 0x7e, 0x0a, 0xc5, 0x5f, 0xf1, 0xc2, 0xac, + 0x71, 0x67, 0x29, 0x21, 0x16, 0x6e, 0x0a, 0x21, 0xe2, 0x73, 0xc2, 0x90, 0xbb, 0x85, 0xc6, 0xc7, + 0x4b, 0x09, 0xd1, 0x6d, 0x28, 0x84, 0x88, 0xdf, 0x1c, 0x43, 0x55, 0xb5, 0x3d, 0x19, 0x88, 0x72, + 0xcb, 0x02, 0xd1, 0x4d, 0xd0, 0x03, 0x66, 0xcd, 0x83, 0xd0, 0x79, 0x27, 0x8c, 0xbe, 0x4c, 0x53, + 0x40, 0x52, 0xf3, 0x17, 0xf0, 0x2e, 0x00, 0xdb, 0xcd, 0x87, 0x50, 0x55, 0x6d, 0x74, 0xc5, 0x04, + 0x1c, 0x5d, 0xb5, 0xcc, 0x55, 0xe8, 0xfb, 0x50, 0xcb, 0x98, 0xe3, 0x25, 0xd6, 0xef, 0xf9, 0xb1, + 0xee, 0xca, 0xdb, 0xc7, 0x04, 0xd0, 0x3c, 0x02, 0x3d, 0x31, 0xd2, 0x9f, 0x26, 0x89, 0x8b, 0xe7, + 0xd9, 0x85, 0x5a, 0xc6, 0xb0, 0x57, 0xcd, 0x75, 0x1d, 0x4a, 0x91, 0x19, 0x4c, 0x58, 0x24, 0x9d, + 0xbb, 0xec, 0x35, 0xf7, 0x60, 0x23, 0x6b, 0xe3, 0xff, 0x5f, 0x46, 0xff, 0x9b, 0x83, 0x8d, 0xac, + 0xb9, 0xaf, 0xe2, 0xf4, 0x8d, 0x48, 0x88, 0xf2, 0x98, 0xd2, 0x3c, 0x5c, 0xe9, 0x3d, 0x5a, 0x2f, + 0x3b, 0x74, 0xd8, 0x1d, 0xf4, 0xc7, 0xdb, 0xbd, 0x1d, 0x4c, 0x92, 0x78, 0x54, 0x72, 0xcd, 0x93, + 0xd8, 0x0b, 0x15, 0x30, 0xf6, 0x28, 0x10, 0x5e, 0xf5, 0x4e, 0x02, 0xf3, 0x4d, 0x8c, 0x20, 0x22, + 0xb8, 0x0a, 0x32, 0xbe, 0x80, 0x8a, 0xc2, 0x95, 0x00, 0x94, 0xb6, 0x69, 0xa7, 0x3d, 0xea, 0xd4, + 0xd7, 0x88, 0x0e, 0xc5, 0x83, 0x43, 0xba, 0xd7, 0xa9, 0xe7, 0x48, 0x19, 0xb4, 0xfd, 0xee, 0x70, + 0x54, 0xcf, 0xf3, 0xd6, 0x1e, 0x6d, 0x3f, 0xaf, 0x17, 0x9a, 0x7f, 0x53, 0x84, 0x8d, 0xac, 0x7b, + 0x5a, 0x90, 0x29, 0xaf, 0xdc, 0x61, 0x96, 0x43, 0x8b, 0x76, 0xb6, 0x5f, 0x6f, 0xef, 0x77, 0xd2, + 0x1d, 0x1e, 0x40, 0x25, 0x60, 0x61, 0xe4, 0x07, 0x8c, 0x17, 0x35, 0x32, 0x77, 0x6b, 0x5d, 0x82, + 0x91, 0x20, 0xda, 0xe5, 0x95, 0x10, 0x55, 0x59, 0x90, 0x2e, 0xe8, 0xb3, 0x79, 0x30, 0x61, 0xb6, + 0x19, 0xc5, 0xd9, 0xf3, 0x2f, 0x56, 0xf3, 0x3b, 0xe0, 0x24, 0x3b, 0x66, 0xc4, 0x68, 0x4a, 0x4d, + 0xf6, 0xa0, 0x3c, 0x75, 0xc2, 0x08, 0x57, 0x56, 0xbc, 0x2c, 0xa7, 0x7d, 0x27, 0x8c, 0xc4, 0xb2, + 0x12, 0xe2, 0xe6, 0x2b, 0xa8, 0xaa, 0x0b, 0xc6, 0x82, 0xce, 0x0f, 0x2c, 0x26, 0xcb, 0x6b, 0xd1, + 0xe1, 0x8a, 0xe7, 0xbe, 0xc5, 0xac, 0x4a, 0x98, 0x8a, 0xec, 0xf1, 0xcc, 0x54, 0x1e, 0x67, 0x28, + 0xcd, 0x24, 0xe9, 0x37, 0xf7, 0x40, 0x4f, 0x96, 0xce, 0x5d, 0xcb, 0x29, 0x33, 0x03, 0xe4, 0x5a, + 0xa4, 0xd8, 0xe6, 0x53, 0xb9, 0xbe, 0x27, 0x79, 0x16, 0xa9, 0xe8, 0xf0, 0x93, 0xb4, 0xcd, 0x53, + 0xa9, 0x51, 0xbc, 0xd9, 0xfc, 0x73, 0xd0, 0x93, 0x95, 0x4b, 0xbd, 0x63, 0x5e, 0x14, 0x38, 0xf8, + 0xa2, 0x10, 0xeb, 0x9d, 0x84, 0x24, 0x13, 0xe5, 0x17, 0x4d, 0x54, 0x58, 0x30, 0x91, 0x96, 0x4c, + 0x24, 0xee, 0xf7, 0x6c, 0x76, 0x82, 0x12, 0x2d, 0x52, 0xd1, 0x31, 0x1e, 0x41, 0x45, 0xd1, 0x0d, + 0x52, 0x81, 0x75, 0xda, 0x19, 0x8e, 0x06, 0x74, 0x99, 0xa2, 0x36, 0xff, 0x3a, 0x0f, 0x9b, 0x67, + 0x02, 0xe0, 0x2a, 0x73, 0xdc, 0x4d, 0x2e, 0x30, 0xf3, 0x98, 0x68, 0xb6, 0x56, 0xc7, 0xd4, 0x85, + 0x37, 0x99, 0x19, 0xaf, 0x56, 0x38, 0xeb, 0xd5, 0x0c, 0xa8, 0xbe, 0x65, 0xa7, 0x61, 0xe4, 0xdb, + 0x6c, 0xca, 0x50, 0x05, 0x0b, 0xf7, 0x74, 0x9a, 0x81, 0xf1, 0x93, 0xb6, 0x02, 0xc6, 0x15, 0xb4, + 0x28, 0x4e, 0x5a, 0xf4, 0x7e, 0xc2, 0x7d, 0x65, 0x73, 0x04, 0x55, 0x35, 0xa6, 0xaf, 0x92, 0xc5, + 0xdd, 0xb8, 0x16, 0x58, 0x92, 0x94, 0x8a, 0xd1, 0x66, 0x9b, 0x73, 0x4d, 0x03, 0xfe, 0x2a, 0xae, + 0x71, 0x6c, 0xcb, 0x2b, 0xb1, 0xed, 0x77, 0x79, 0x80, 0x34, 0xfa, 0xaf, 0xe2, 0xf0, 0x4c, 0x75, + 0x28, 0xf7, 0x2f, 0x4c, 0x24, 0x5a, 0xed, 0xed, 0xfd, 0xf1, 0xf6, 0xa0, 0xd7, 0x6b, 0xf7, 0xa5, + 0x33, 0xb9, 0xf8, 0x60, 0xbe, 0xca, 0x5c, 0xa4, 0x7d, 0xb2, 0x9a, 0xb7, 0x52, 0x7a, 0x12, 0xd0, + 0x82, 0xf9, 0x94, 0xc9, 0x5b, 0x3d, 0x6c, 0x73, 0xb3, 0x9c, 0xf9, 0xa1, 0x93, 0xd4, 0x84, 0x35, + 0x9a, 0xf4, 0x8d, 0x87, 0x50, 0x51, 0x56, 0xc7, 0xd5, 0xb6, 0x3f, 0xe8, 0x73, 0x5d, 0x06, 0x28, + 0xf5, 0x06, 0x3b, 0xdd, 0xdd, 0xd7, 0xaa, 0x32, 0x1b, 0x77, 0xa1, 0x1c, 0x4f, 0x48, 0xaa, 0x50, + 0x3e, 0x1c, 0x76, 0xe8, 0xb8, 0xbd, 0xbd, 0x5f, 0x5f, 0xe3, 0x86, 0x30, 0x7c, 0x3d, 0xc4, 0x4e, + 0xae, 0xf9, 0x25, 0x8f, 0xfb, 0x69, 0x4a, 0xb4, 0xa2, 0xfa, 0x11, 0xa8, 0x02, 0xa3, 0xf9, 0xbb, + 0x1c, 0x54, 0xd5, 0xac, 0x68, 0xe1, 0x65, 0xe4, 0x6d, 0xa5, 0xc0, 0x3e, 0xa7, 0x11, 0xfc, 0x74, + 0xb6, 0x20, 0xef, 0xcf, 0xe4, 0xdd, 0x76, 0x3d, 0x7b, 0xb7, 0x3d, 0x38, 0xa0, 0x79, 0x7f, 0x96, + 0xb9, 0x29, 0xd6, 0xce, 0xdc, 0x14, 0xab, 0x77, 0xd1, 0xc5, 0x33, 0x77, 0xd1, 0xf7, 0xa1, 0xc8, + 0x9d, 0xcb, 0x29, 0x4a, 0x72, 0x43, 0xd9, 0x0a, 0x32, 0xef, 0xf4, 0x47, 0xf4, 0x35, 0x15, 0x18, + 0xcd, 0xff, 0xd0, 0xa0, 0xaa, 0xe6, 0x69, 0xe4, 0x4b, 0xc8, 0x4f, 0x43, 0x29, 0x83, 0x9f, 0xaf, + 0x48, 0xea, 0x5a, 0xfb, 0x21, 0x76, 0x79, 0x79, 0x31, 0x0d, 0xc9, 0x9f, 0xe0, 0x86, 0xc4, 0x8e, + 0x3f, 0x5d, 0x45, 0x3a, 0x98, 0xf1, 0xea, 0x97, 0x25, 0xf4, 0xfe, 0xac, 0xf9, 0x4f, 0x39, 0x58, + 0x97, 0x1c, 0xc9, 0x00, 0x74, 0x7f, 0x1e, 0x1d, 0xf9, 0x81, 0x6b, 0x46, 0xf2, 0x1a, 0xe3, 0xf1, + 0x25, 0x57, 0xd3, 0x1a, 0xcc, 0xa3, 0x5d, 0x24, 0xa4, 0x29, 0x0f, 0xac, 0x58, 0x93, 0x5b, 0x07, + 0x71, 0x4b, 0xa0, 0xdc, 0x2f, 0xfc, 0x12, 0xf4, 0x84, 0x4a, 0x51, 0xb0, 0x0d, 0x80, 0xde, 0xa0, + 0xdf, 0x1d, 0x0d, 0x68, 0xb7, 0xbf, 0x57, 0xcf, 0x71, 0x05, 0xe2, 0x4a, 0xc6, 0x3b, 0x18, 0xdd, + 0xbf, 0x1d, 0x0e, 0xfa, 0xf5, 0x42, 0xf3, 0x2f, 0xf2, 0x50, 0x55, 0xf7, 0x43, 0xbe, 0x41, 0x49, + 0x88, 0x65, 0x3f, 0xfa, 0x31, 0x92, 0x68, 0x0d, 0x66, 0x78, 0xf2, 0xd7, 0xe2, 0xec, 0x5a, 0xac, + 0x54, 0x74, 0xf0, 0x36, 0xdc, 0x9a, 0xca, 0x1b, 0x07, 0xcc, 0xfb, 0x63, 0xc5, 0xd3, 0x94, 0x9b, + 0x03, 0x02, 0xda, 0x3c, 0x64, 0x41, 0x6c, 0x5e, 0xbc, 0x9d, 0xde, 0x4b, 0x94, 0x94, 0x7b, 0x09, + 0x63, 0x1f, 0xf2, 0x83, 0x59, 0x26, 0x8d, 0x01, 0x28, 0xd1, 0x4e, 0x6f, 0xf0, 0x92, 0x87, 0x07, + 0x1d, 0x8a, 0xc3, 0x17, 0x6d, 0xda, 0xa9, 0xe7, 0xf9, 0xbe, 0x0f, 0xfb, 0xa2, 0x53, 0xe0, 0x38, + 0xed, 0xed, 0xed, 0xce, 0x70, 0x58, 0xd7, 0x14, 0x0b, 0x2c, 0x3e, 0x2f, 0x43, 0x29, 0x9c, 0xbf, + 0xb1, 0x5c, 0xfb, 0xb9, 0x0e, 0xeb, 0x96, 0xef, 0xba, 0xa6, 0x67, 0x1b, 0x7f, 0x57, 0x05, 0xe0, + 0xfb, 0x96, 0x17, 0x64, 0x4f, 0xa1, 0xc8, 0x82, 0xc0, 0x0f, 0xa4, 0x82, 0x65, 0xab, 0x38, 0x81, + 0xd3, 0xea, 0x70, 0x84, 0xb8, 0x47, 0x05, 0xbe, 0x5a, 0x3f, 0x0a, 0x05, 0xbb, 0xb3, 0x88, 0x34, + 0x49, 0x01, 0x25, 0xf1, 0xa2, 0xfa, 0xb1, 0xb0, 0x9c, 0x3c, 0x49, 0x3e, 0x62, 0xf2, 0xb8, 0x7e, + 0x94, 0x15, 0x99, 0xb6, 0xa0, 0xd4, 0x91, 0xa4, 0xe8, 0xed, 0x24, 0x59, 0x5c, 0x91, 0x89, 0xc2, + 0xaa, 0xb8, 0x7c, 0xa7, 0xd2, 0x87, 0xc4, 0x3b, 0x3d, 0x53, 0x58, 0x95, 0x96, 0x13, 0x4a, 0xfd, + 0x89, 0x09, 0x45, 0x61, 0xf5, 0x39, 0xd4, 0x32, 0xa2, 0xe3, 0x8a, 0x60, 0xf1, 0x00, 0x92, 0x13, + 0x01, 0x84, 0xb7, 0xf1, 0xb9, 0x22, 0x9c, 0x48, 0xb5, 0xe2, 0xcd, 0xe6, 0x7f, 0xe5, 0x60, 0xf3, + 0x8c, 0xdc, 0x2e, 0x47, 0x49, 0xbe, 0xcb, 0xa4, 0x52, 0x3c, 0x09, 0x78, 0x74, 0x89, 0x43, 0x89, + 0xfb, 0x5d, 0xef, 0xc8, 0x57, 0x72, 0xaf, 0xef, 0xa1, 0xa2, 0x0c, 0xac, 0x8a, 0x6c, 0xc9, 0x43, + 0x6c, 0x7e, 0xf9, 0x43, 0x6c, 0xf3, 0xb7, 0x05, 0xd8, 0x3c, 0x73, 0xa4, 0x97, 0xdf, 0x99, 0x3c, + 0xfa, 0x0b, 0x77, 0x76, 0x86, 0x79, 0xdc, 0x17, 0x3b, 0x8b, 0x19, 0x34, 0x7f, 0x93, 0x87, 0x8a, + 0x32, 0xf2, 0xfb, 0x49, 0x26, 0xb8, 0x04, 0x6c, 0xe5, 0x5d, 0xe8, 0xac, 0x04, 0x70, 0x2c, 0xf9, + 0x05, 0x43, 0x53, 0x7e, 0xc1, 0x38, 0x90, 0x91, 0xbb, 0x88, 0xde, 0xe9, 0x97, 0x3f, 0x72, 0x5f, + 0xad, 0x9d, 0xce, 0x7e, 0x67, 0xd4, 0x1d, 0xf4, 0x95, 0x78, 0x2e, 0x33, 0xab, 0x52, 0x92, 0x59, + 0x19, 0x06, 0x54, 0x55, 0x3c, 0xee, 0x2a, 0x77, 0xbb, 0xfb, 0xdc, 0xc1, 0x94, 0x41, 0x1b, 0xd1, + 0x4e, 0xa7, 0x9e, 0x6b, 0xee, 0x41, 0x45, 0x31, 0x9a, 0x4b, 0x1e, 0x4c, 0x9c, 0x3a, 0x14, 0xd2, + 0xd4, 0xa1, 0x79, 0x0c, 0xb5, 0x8c, 0x21, 0x5d, 0x92, 0xd5, 0x63, 0xd0, 0xd1, 0xe0, 0x3c, 0x71, + 0x7f, 0x50, 0xc8, 0xc4, 0xfc, 0xf4, 0xb1, 0x9a, 0xa6, 0x58, 0xcd, 0x50, 0xde, 0x42, 0xe3, 0x31, + 0xc6, 0x37, 0xce, 0xb9, 0xec, 0x8d, 0x33, 0xbe, 0xd5, 0xc8, 0x5b, 0x68, 0xde, 0x5e, 0xb4, 0xe4, + 0xf8, 0xd1, 0x54, 0x4b, 0x1f, 0x4d, 0x1b, 0xb0, 0xee, 0xa1, 0x19, 0xdb, 0x32, 0x9a, 0xc7, 0xdd, + 0xe6, 0x33, 0xa8, 0x88, 0xab, 0x5b, 0xcb, 0x62, 0x61, 0xb8, 0x70, 0xda, 0x06, 0xac, 0x4f, 0x02, + 0xd3, 0x8b, 0x98, 0x2d, 0x8b, 0x9d, 0xb8, 0xdb, 0xfc, 0xfb, 0x1c, 0xd4, 0x32, 0xce, 0xe2, 0x92, + 0xc2, 0xf9, 0x1c, 0x4a, 0x38, 0x7d, 0xac, 0xfe, 0xb7, 0x96, 0x7a, 0x21, 0x54, 0x76, 0x89, 0x4c, + 0x9e, 0x42, 0xc9, 0xc4, 0x65, 0x62, 0xa2, 0xbe, 0xc4, 0x55, 0x2a, 0xbb, 0xa1, 0x12, 0xdd, 0xb8, + 0x0f, 0xb5, 0x7e, 0x38, 0x8c, 0xcc, 0x68, 0xe5, 0x05, 0xb0, 0xf1, 0x8f, 0x05, 0xd8, 0x88, 0x71, + 0x2f, 0xd8, 0x13, 0x01, 0x8d, 0xa5, 0x9b, 0xc2, 0x36, 0x46, 0xd5, 0x88, 0x17, 0x0a, 0xf2, 0xce, + 0x1e, 0x3b, 0xbc, 0x7e, 0xf0, 0xd4, 0x1c, 0x4b, 0xf6, 0xc8, 0x16, 0x54, 0x3c, 0xe5, 0x87, 0x08, + 0x71, 0x2c, 0x2a, 0x88, 0xdc, 0x00, 0xfd, 0x8d, 0xef, 0x47, 0x63, 0xb4, 0x43, 0xf1, 0xb7, 0x40, + 0x99, 0x03, 0xf0, 0xc7, 0xad, 0xdb, 0x50, 0xb1, 0xe6, 0x01, 0xfe, 0xed, 0x72, 0xe4, 0xd8, 0xf2, + 0x7f, 0x01, 0x90, 0xa0, 0x5d, 0xc7, 0x56, 0x11, 0x2c, 0xc7, 0x96, 0x7f, 0x0b, 0xc4, 0x08, 0xdb, + 0x02, 0xc1, 0x65, 0xee, 0xf8, 0x9d, 0x13, 0x44, 0x73, 0x73, 0x2a, 0xff, 0x15, 0x00, 0x97, 0xb9, + 0x2f, 0x05, 0x84, 0x7c, 0x04, 0x55, 0x8e, 0x10, 0xb0, 0xd0, 0xb1, 0x99, 0x17, 0xc9, 0xa7, 0x4e, + 0x4e, 0x44, 0x25, 0x88, 0x2f, 0x91, 0xa3, 0x88, 0x88, 0x52, 0x91, 0x79, 0x22, 0x73, 0x45, 0x9a, + 0x72, 0x0b, 0x38, 0xb7, 0xf1, 0x24, 0xf0, 0xdf, 0x47, 0xc7, 0xf8, 0xee, 0xa9, 0x51, 0x8e, 0xbe, + 0x87, 0x00, 0x7e, 0x06, 0xd1, 0x71, 0xc0, 0x4c, 0x5b, 0xfc, 0x02, 0xa0, 0xd1, 0xb8, 0xcb, 0x15, + 0xe6, 0xc8, 0x0e, 0xf1, 0x89, 0x53, 0xa3, 0xbc, 0xc9, 0x85, 0x38, 0x9f, 0xa1, 0x1c, 0xc4, 0x9f, + 0x26, 0xb2, 0x67, 0xfc, 0x73, 0x01, 0x6a, 0x3d, 0xd3, 0x73, 0xa6, 0x49, 0xae, 0xfc, 0x0d, 0x54, + 0x03, 0xd1, 0x1c, 0x2b, 0x6f, 0x54, 0xe9, 0xf5, 0x75, 0xaf, 0xdd, 0xef, 0xee, 0xb7, 0xc7, 0xb4, + 0xf3, 0xfd, 0x61, 0x67, 0x38, 0x12, 0x75, 0x43, 0x45, 0x52, 0x8c, 0xb8, 0xbb, 0xf9, 0x00, 0xca, + 0x5c, 0x17, 0xc6, 0x67, 0xfe, 0xb8, 0xfb, 0x4e, 0x3c, 0x3b, 0xe1, 0x5f, 0x8d, 0x96, 0x1f, 0x67, + 0x49, 0x49, 0x9f, 0x6f, 0x16, 0xa5, 0x30, 0x56, 0xff, 0x34, 0x40, 0x08, 0xfe, 0x35, 0xb6, 0x05, + 0x15, 0x9b, 0x85, 0x56, 0xe0, 0xcc, 0x92, 0x47, 0x1a, 0x9d, 0xaa, 0x20, 0x3e, 0xaf, 0x60, 0x20, + 0x7f, 0x5d, 0xd3, 0xe9, 0x3a, 0xf6, 0xbb, 0x36, 0xf9, 0x18, 0x36, 0xc4, 0x90, 0x78, 0xaf, 0x95, + 0xc7, 0xad, 0xd3, 0x2a, 0x42, 0xf7, 0x38, 0x50, 0xfc, 0xdf, 0x26, 0x52, 0x82, 0xb2, 0x28, 0xd6, + 0x45, 0xbc, 0x6f, 0xc0, 0x3a, 0x16, 0xac, 0x7e, 0x80, 0x27, 0xac, 0xd3, 0xb8, 0xcb, 0x65, 0xca, + 0x44, 0xd6, 0x06, 0xe2, 0x91, 0x47, 0xf4, 0xf8, 0xb1, 0x9b, 0xb6, 0xeb, 0x78, 0x63, 0x39, 0x5a, + 0x11, 0x6b, 0x45, 0x58, 0x27, 0x79, 0x59, 0x16, 0x0b, 0xc2, 0x07, 0xb0, 0xaa, 0xb2, 0xd9, 0x17, + 0x7e, 0x18, 0x91, 0xbb, 0xf1, 0x7a, 0xe3, 0xb7, 0x75, 0xf9, 0x8f, 0x47, 0x0d, 0xa1, 0xf1, 0x3b, + 0xba, 0xf1, 0x6f, 0x39, 0xd8, 0x88, 0x0f, 0x4f, 0x9a, 0x9a, 0x74, 0x15, 0xb9, 0x8c, 0x4b, 0xb6, + 0xe2, 0x32, 0xb5, 0x28, 0x8d, 0xef, 0x16, 0x40, 0xe4, 0x47, 0xe6, 0x74, 0x3c, 0x0f, 0xe5, 0x03, + 0x50, 0x81, 0xea, 0x08, 0x39, 0x0c, 0x19, 0x0f, 0x71, 0x1b, 0x62, 0xd8, 0x32, 0x67, 0xa6, 0xe5, + 0x44, 0xe2, 0x4a, 0xa3, 0x40, 0x6b, 0x08, 0xdd, 0x96, 0x40, 0xf2, 0x09, 0x6c, 0x7a, 0xec, 0xbd, + 0xd0, 0xdd, 0x71, 0x9a, 0x4c, 0x15, 0x68, 0xcd, 0x63, 0xef, 0x51, 0x83, 0xd1, 0x4d, 0x73, 0xe9, + 0xa7, 0x78, 0xca, 0x43, 0x5a, 0x35, 0x46, 0x3b, 0x30, 0xa3, 0xe3, 0x07, 0x7f, 0x0c, 0xda, 0x99, + 0x58, 0x54, 0x03, 0x7d, 0x7b, 0xd0, 0x1f, 0xb5, 0xbb, 0xfd, 0x0e, 0x5d, 0x90, 0xdc, 0x0f, 0x47, + 0xed, 0x51, 0xbd, 0xf0, 0xe0, 0x21, 0xe8, 0xc9, 0xff, 0x46, 0x1c, 0xcc, 0xeb, 0x49, 0x71, 0x8f, + 0xb2, 0x47, 0x07, 0x87, 0x07, 0x22, 0x3b, 0x3e, 0xa0, 0x83, 0x6f, 0x3b, 0xdb, 0x1c, 0xfd, 0x11, + 0xac, 0xcb, 0x12, 0x8e, 0xac, 0x43, 0x61, 0xaf, 0x33, 0xaa, 0xaf, 0xf1, 0xc6, 0xb0, 0x33, 0xaa, + 0xe7, 0x48, 0x09, 0xf2, 0xb4, 0x57, 0xcf, 0x63, 0x9a, 0xdd, 0xeb, 0x0f, 0x76, 0x3a, 0xc8, 0x1f, + 0xd2, 0xb2, 0x2c, 0x5b, 0xdc, 0xbe, 0x1c, 0xec, 0x1f, 0xf6, 0x64, 0x2a, 0xde, 0x45, 0xf4, 0xfc, + 0x83, 0xdf, 0xe4, 0xe0, 0xea, 0x02, 0x13, 0x21, 0x75, 0xa8, 0x8a, 0x2c, 0x7e, 0x2c, 0xf2, 0xf4, + 0x35, 0x0e, 0xc1, 0x20, 0x1c, 0x43, 0x72, 0x1c, 0xd2, 0x79, 0x35, 0xea, 0xf4, 0x77, 0xc6, 0x71, + 0x62, 0x5f, 0x87, 0xea, 0xf0, 0x05, 0xed, 0xf6, 0xbf, 0x1b, 0xc7, 0xd9, 0xfd, 0x55, 0xd8, 0xec, + 0xb5, 0xfb, 0xed, 0xbd, 0xce, 0xb8, 0xf3, 0x4a, 0x4a, 0x43, 0xc3, 0x32, 0xba, 0x2f, 0xc0, 0xf5, + 0x22, 0x21, 0xb0, 0xb1, 0xd7, 0x19, 0x8d, 0xb7, 0xdb, 0x07, 0xed, 0xed, 0xee, 0xa8, 0xdb, 0x19, + 0xd6, 0x4b, 0x4f, 0xfe, 0xa7, 0x00, 0x85, 0x8e, 0x1f, 0x92, 0x27, 0xa0, 0x1d, 0x38, 0xde, 0x84, + 0xa4, 0x2f, 0xba, 0xca, 0x4f, 0xc5, 0x4d, 0x72, 0x06, 0x3a, 0x9b, 0x9e, 0x1a, 0x6b, 0xe4, 0x31, + 0xe4, 0x7b, 0x3b, 0x84, 0x28, 0xa9, 0x50, 0x8c, 0x7f, 0x35, 0x03, 0x13, 0x2a, 0x68, 0xac, 0x7d, + 0x96, 0x23, 0x9f, 0x83, 0xb6, 0xeb, 0x78, 0x36, 0x51, 0x1f, 0xd0, 0x93, 0xe7, 0xef, 0xe5, 0x64, + 0xcf, 0xa0, 0x24, 0x42, 0x07, 0xb9, 0x9e, 0x46, 0x26, 0x35, 0xee, 0x34, 0x7f, 0x76, 0x0e, 0x1e, + 0x93, 0x93, 0x6f, 0x61, 0xf3, 0xcc, 0x5f, 0xcb, 0xe4, 0xf6, 0xf9, 0x77, 0xf9, 0xcc, 0x8f, 0xc4, + 0xcd, 0x74, 0x7d, 0xca, 0x9f, 0xc0, 0xc6, 0x1a, 0xf9, 0x53, 0x80, 0xf4, 0xaf, 0x63, 0xd2, 0xcc, + 0xfc, 0x06, 0x70, 0x39, 0x0e, 0x8f, 0x41, 0xeb, 0x9c, 0x30, 0x4b, 0x11, 0x5b, 0x52, 0x5e, 0x2a, + 0xfb, 0x4f, 0xc3, 0xae, 0xb1, 0x46, 0x5e, 0xc0, 0x55, 0x61, 0xcd, 0x43, 0x16, 0xbc, 0x63, 0xc9, + 0x45, 0x5f, 0x2a, 0x8a, 0x8c, 0xa3, 0x56, 0x44, 0x91, 0xf5, 0x01, 0xc6, 0xda, 0xf3, 0x43, 0xd8, + 0x74, 0xfc, 0xd6, 0x84, 0x8f, 0x49, 0x9c, 0xe7, 0xe5, 0x8e, 0x1f, 0x62, 0xc2, 0x74, 0x90, 0xfb, + 0xb3, 0xcf, 0x26, 0x4e, 0x74, 0x3c, 0x7f, 0xd3, 0xb2, 0x7c, 0xf7, 0x91, 0xc5, 0x02, 0xef, 0x21, + 0xf3, 0xc3, 0x47, 0x1c, 0xfb, 0x21, 0x7a, 0xe3, 0x47, 0xf8, 0x7d, 0x33, 0x3f, 0x7a, 0xc6, 0xfc, + 0x70, 0xcc, 0xe1, 0x7f, 0x9b, 0x2f, 0x74, 0x06, 0xc3, 0x37, 0x25, 0x1c, 0xf8, 0xc3, 0xff, 0x0b, + 0x00, 0x00, 0xff, 0xff, 0xb0, 0x42, 0x10, 0xe2, 0x9f, 0x2e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto b/pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto index 97c68bdaa5..7e94c164c3 100644 --- a/pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto +++ b/pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto @@ -1,24 +1,23 @@ // @project The CERN Tape Archive (CTA) // @brief CTA-EOS gRPC API for CASTOR-EOS migration // @copyright Copyright 2019 CERN -// @license This program is free software: you can redistribute it and/or -// modify -// it under the terms of the GNU General Public License as -// published by the Free Software Foundation, either version 3 -// of the License, or (at your option) any later version. +// @license This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. // -// This program is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied -// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the GNU General Public License for more -// details. +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. // -// You should have received a copy of the GNU General Public -// License along with this program. If not, see -// . +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + // NOTE: Compile for Go with: -// protoc ./eos_grpc.proto --go_out=plugins=grpc:. +// protoc ./Rpc.proto --go_out=plugins=grpc:. +// protoc --go_out=. ./Rpc.proto syntax = "proto3"; @@ -30,36 +29,37 @@ option java_outer_classname = "EosProto"; option objc_class_prefix = "EOS"; option go_package = "github.com/cern-eos/grpc-proto/protobuf;eos_grpc"; + service Eos { // Replies to a ping - rpc Ping(PingRequest) returns (PingReply) {} + rpc Ping (PingRequest) returns (PingReply) {} // --------------------------------------------------------------------- // NAMESPACE // --------------------------------------------------------------------- - // Replies to MD requests with a stream - rpc MD(MDRequest) returns (stream MDResponse) {} + // Replies to MD requests with a stream + rpc MD (MDRequest) returns (stream MDResponse) {} // Replies to Find requests with a stream - rpc Find(FindRequest) returns (stream MDResponse) {} + rpc Find (FindRequest) returns (stream MDResponse) {} // Replies to a NsStat operation - rpc NsStat(NsStatRequest) returns (NsStatResponse) {} + rpc NsStat (NsStatRequest) returns (NsStatResponse) {} // Replies to an insert - rpc ContainerInsert(ContainerInsertRequest) returns (InsertReply) {} - rpc FileInsert(FileInsertRequest) returns (InsertReply) {} + rpc ContainerInsert (ContainerInsertRequest) returns (InsertReply) {} + rpc FileInsert (FileInsertRequest) returns (InsertReply) {} // Replies to a NsRequest operation - rpc Exec(NSRequest) returns (NSResponse) {} + rpc Exec (NSRequest) returns (NSResponse) {} // --------------------------------------------------------------------- // OPENSTACK // --------------------------------------------------------------------- // Manila Driver - rpc ManilaServerRequest(ManilaRequest) returns (ManilaResponse) {} + rpc ManilaServerRequest (ManilaRequest) returns (ManilaResponse) {} } message PingRequest { @@ -67,7 +67,9 @@ message PingRequest { bytes message = 2; } -message PingReply { bytes message = 1; } +message PingReply { + bytes message = 1; +} // --------------------------------------------------------------------- // NAMESPACE @@ -111,7 +113,7 @@ message FileMdProto { bytes link_name = 9; Time ctime = 10; // change time Time mtime = 11; // modification time - Checksum checksum = 12; + Checksum checksum =12; repeated uint32 locations = 13; repeated uint32 unlink_locations = 14; map xattrs = 15; @@ -136,57 +138,40 @@ message ContainerMdProto { bytes path = 13; string etag = 14; uint64 inode = 15; + uint64 files = 16; + uint64 containers = 17; } -enum TYPE { - FILE = 0; - CONTAINER = 1; - LISTING = 2; - STAT = 3; -} - -enum QUOTATYPE { - USER = 0; - GROUP = 2; - PROJECT = 3; -} - -enum QUOTAOP { - GET = 0; - SET = 1; - RM = 2; - RMNODE = 3; -} - -enum QUOTAENTRY { - NONE = 0; - VOLUME = 1; - INODE = 2; -} - -message QuotaProto { - bytes path = 1; // quota node path - string name = 2; // associated name for the given type - QUOTATYPE type = 3; // user,group,project or all quota - uint64 usedbytes = 4; // bytes used physical - uint64 usedlogicalbytes = 5; // bytes used logical - uint64 usedfiles = 6; // number of files used - uint64 maxbytes = 7; // maximum number of bytes (volume quota) - uint64 maxlogicalbytes = - 8; // maximum number of logical bytes (logical volume quota) - uint64 maxfiles = 9; // maximum number of files (inode quota) - float percentageusedbytes = - 10; // percentage of volume quota used from 0 to 100 +enum TYPE { FILE = 0; CONTAINER = 1; LISTING = 2; STAT = 3;} + +enum QUOTATYPE { USER = 0; GROUP = 2; PROJECT = 3;} + +enum QUOTAOP { GET = 0; SET = 1; RM = 2; RMNODE = 3;} + +enum QUOTAENTRY { NONE = 0; VOLUME = 1; INODE = 2;} + +message QuotaProto { + bytes path = 1; // quota node path + string name = 2; // associated name for the given type + QUOTATYPE type = 3; // user,group,project or all quota + uint64 usedbytes = 4; // bytes used physical + uint64 usedlogicalbytes = 5; // bytes used logical + uint64 usedfiles = 6; // number of files used + uint64 maxbytes = 7; // maximum number of bytes (volume quota) + uint64 maxlogicalbytes = 8; // maximum number of logical bytes (logical volume quota) + uint64 maxfiles = 9; // maximum number of files (inode quota) + float percentageusedbytes = 10; // percentage of volume quota used from 0 to 100 float percentageusedfiles = 11; // percentag of inode quota used from 0 to 100 - string statusbytes = 12; // status string for volume quota ok,warning,exceeded - string statusfiles = 13; // status string for inode quota ok,warning,exceeded + string statusbytes = 12; // status string for volume quota ok,warning,exceeded + string statusfiles = 13; // status string for inode quota ok,warning,exceeded } - + message RoleId { uint64 uid = 1; uint64 gid = 2; string username = 3; string groupname = 4; + string app = 5; } message MDId { @@ -242,25 +227,26 @@ message MDResponse { message FindRequest { TYPE type = 1; MDId id = 2; - RoleId role = 3; + RoleId role = 3; string authkey = 4; uint64 maxdepth = 5; MDSelection selection = 6; } message ShareAuth { - string prot = 1; - string name = 2; - string host = 3; + string prot = 1; + string name = 2; + string host = 3; } + message ShareProto { string permission = 1; - uint64 expires = 2; - string owner = 3; - string group = 4; + uint64 expires = 2; + string owner = 3; + string group = 4; uint64 generation = 5; - string path = 6; + string path = 6; bool allowtree = 7; string vtoken = 8; repeated ShareAuth origins = 9; @@ -279,10 +265,14 @@ message NSRequest { bool recursive = 2; int64 mode = 3; } - - message RmdirRequest { MDId id = 1; } - - message TouchRequest { MDId id = 1; } + + message RmdirRequest { + MDId id = 1; + } + + message TouchRequest { + MDId id = 1; + } message UnlinkRequest { MDId id = 1; @@ -307,24 +297,25 @@ message NSRequest { message VersionRequest { enum VERSION_CMD { - CREATE = 0; - PURGE = 1; - LIST = 2; - GRAB = 3; - } - MDId id = 1; - VERSION_CMD cmd = 2; - int32 maxversion = 3; - string grabversion = 4; + CREATE= 0; + PURGE = 1; + LIST = 2; + GRAB = 3; + } + MDId id = 1; + VERSION_CMD cmd = 2; + int32 maxversion = 3; + string grabversion = 4; } message RecycleRequest { - string key = 1; + string key = 1; enum RECYCLE_CMD { RESTORE = 0; PURGE = 1; LIST = 2; } + RECYCLE_CMD cmd = 2; message RestoreFlags { @@ -339,8 +330,17 @@ message NSRequest { int32 day = 3; } + message ListFlags { + int32 maxentries = 1; + int32 year = 2; + int32 month = 3; + int32 day = 4; + int32 index = 5; + } + RestoreFlags restoreflag = 3; PurgeDate purgedate = 4; + ListFlags listflag = 5; } message SetXAttrRequest { @@ -353,7 +353,7 @@ message NSRequest { message ChownRequest { MDId id = 1; - RoleId owner = 2; + RoleId owner = 2; } message ChmodRequest { @@ -365,7 +365,7 @@ message NSRequest { enum ACL_COMMAND { NONE = 0; MODIFY = 1; - LIST = 2; + LIST = 2; } enum ACL_TYPE { @@ -377,38 +377,40 @@ message NSRequest { ACL_COMMAND cmd = 2; bool recursive = 3; ACL_TYPE type = 4; - string rule = 5; + string rule = 5; uint32 position = 6; } - message TokenRequest { ShareToken token = 1; } + message TokenRequest { + ShareToken token = 1; + } message QuotaRequest { bytes path = 1; RoleId id = 2; - QUOTAOP op = 3; // get or set, rm or rmnode - uint64 maxfiles = 4; // maximum number of bytes (volume quota) for setting - uint64 maxbytes = 5; // maximum number of bytes (volume quota) for setting + QUOTAOP op = 3; // get or set, rm or rmnode + uint64 maxfiles = 4; // maximum number of bytes (volume quota) for setting + uint64 maxbytes = 5; // maximum number of bytes (volume quota) for setting QUOTAENTRY entry = 6; // select volume or inode entry for deletion } message ShareRequest { message LsShare { enum OutFormat { - NONE = 0; // - MONITORING = 1; // [-m] - LISTING = 2; // [-l] - JSON = 3; // [grpc] + NONE = 0; // + MONITORING = 1; // [-m] + LISTING = 2; // [-l] + JSON = 3; // [grpc] } - OutFormat outformat = 1; // - string selection = 2; // + OutFormat outformat = 1; // + string selection = 2; // } message OperateShare { enum Op { CREATE = 0; REMOVE = 1; - SHARE = 2; + SHARE = 2; UNSHARE = 3; ACCESS = 4; MODIFY = 5; @@ -422,7 +424,7 @@ message NSRequest { } oneof subcmd { - LsShare ls = 1; + LsShare ls = 1; OperateShare op = 2; } } @@ -432,70 +434,69 @@ message NSRequest { // Actual request data object oneof command { - MkdirRequest mkdir = 21; - RmdirRequest rmdir = 22; - TouchRequest touch = 23; - UnlinkRequest unlink = 24; - RmRequest rm = 25; - RenameRequest rename = 26; - SymlinkRequest symlink = 27; - VersionRequest version = 28; - RecycleRequest recycle = 29; - SetXAttrRequest xattr = 30; - ChownRequest chown = 31; - ChmodRequest chmod = 32; - AclRequest acl = 33; - TokenRequest token = 34; - QuotaRequest quota = 35; - ShareRequest share = 36; + MkdirRequest mkdir = 21; + RmdirRequest rmdir = 22; + TouchRequest touch = 23; + UnlinkRequest unlink = 24; + RmRequest rm = 25; + RenameRequest rename = 26; + SymlinkRequest symlink = 27; + VersionRequest version = 28; + RecycleRequest recycle = 29; + SetXAttrRequest xattr = 30; + ChownRequest chown = 31; + ChmodRequest chmod = 32; + AclRequest acl = 33; + TokenRequest token = 34; + QuotaRequest quota = 35; + ShareRequest share = 36; } } + + message NSResponse { message ErrorResponse { int64 code = 1; - string msg = 2; + string msg = 2; } message VersionResponse { message VersionInfo { - MDId id = 1; - Time mtime = 2; + MDId id = 1; + Time mtime = 2; } int64 code = 1; - string msg = 2; + string msg = 2; repeated VersionInfo versions = 3; } message RecycleResponse { int64 code = 1; - string msg = 2; - + string msg = 2; + message RecycleInfo { - enum DELETIONTYPE { - FILE = 0; - TREE = 1; - } - MDId id = 1; + enum DELETIONTYPE { FILE = 0; TREE = 1; } + MDId id = 1; RoleId owner = 2; - Time dtime = 3; + Time dtime = 3; uint64 size = 4; DELETIONTYPE type = 5; string key = 6; - } - + } + repeated RecycleInfo recycles = 3; } message AclResponse { int64 code = 1; - string msg = 2; + string msg = 2; string rule = 3; } message QuotaResponse { - int64 code = 1; - string msg = 2; + int64 code = 1; + string msg = 2; repeated QuotaProto quotanode = 3; } @@ -514,20 +515,22 @@ message NSResponse { message ShareResponse { int64 code = 1; - string msg = 2; + string msg = 2; repeated ShareInfo shares = 3; repeated ShareAccess access = 4; } - ErrorResponse error = 1; - VersionResponse version = 2; - RecycleResponse recycle = 3; - AclResponse acl = 4; - QuotaResponse quota = 5; - ShareResponse share = 6; + ErrorResponse error = 1; + VersionResponse version = 2; + RecycleResponse recycle = 3; + AclResponse acl = 4; + QuotaResponse quota = 5; + ShareResponse share = 6; } -message NsStatRequest { string authkey = 1; } +message NsStatRequest { + string authkey = 1; +} message NsStatResponse { int64 code = 1; @@ -552,53 +555,57 @@ message NsStatResponse { // --------------------------------------------------------------------- enum MANILA_REQUEST_TYPE { - CREATE_SHARE = 0; - DELETE_SHARE = 1; - EXTEND_SHARE = 2; - SHRINK_SHARE = 3; - MANAGE_EXISTING = 4; - UNMANAGE = 5; - GET_CAPACITIES = 6; - /* EXTRA FUNCTIONS NOT IMPLEMENTED */ - /* - CREATE_SNAPSHOT = 7; - DELETE_SNAPSHOT = 8; - CREATE_SHARE_FROM_SNAPSHOT = 9; - ENSURE_SHARE = 10; - ALLOW_ACCESS = 11; - DENY_ACCESS = 12; - GET_SHARE_STATS = 13; - DO_SETUP = 14; - SETUP_SERVER = 15; - TEARDOWN_SERVER = 16; - GET_NETWORK_ALLOCATIONS_NUMBER = 17; - VERIFY_SHARE_SERVER_HANDLING = 18; - CREATE_SHARE_GROUP = 19; - DELETE_SHARE_GROUP = 20; - */ + CREATE_SHARE = 0; + DELETE_SHARE = 1; + EXTEND_SHARE = 2; + SHRINK_SHARE = 3; + MANAGE_EXISTING = 4; + UNMANAGE = 5; + GET_CAPACITIES = 6; +/* EXTRA FUNCTIONS NOT IMPLEMENTED */ + /* + CREATE_SNAPSHOT = 7; + DELETE_SNAPSHOT = 8; + CREATE_SHARE_FROM_SNAPSHOT = 9; + ENSURE_SHARE = 10; + ALLOW_ACCESS = 11; + DENY_ACCESS = 12; + GET_SHARE_STATS = 13; + DO_SETUP = 14; + SETUP_SERVER = 15; + TEARDOWN_SERVER = 16; + GET_NETWORK_ALLOCATIONS_NUMBER = 17; + VERIFY_SHARE_SERVER_HANDLING = 18; + CREATE_SHARE_GROUP = 19; + DELETE_SHARE_GROUP = 20; + */ + } message ManilaRequest { - MANILA_REQUEST_TYPE request_type = 1; - string auth_key = 2; - string protocol = 3; - string share_name = 4; - string description = 5; - string share_id = 6; - string share_group_id = 7; - int32 quota = 8; - string creator = 9; - string egroup = 10; - string admin_egroup = 11; - string share_host = 12; - string share_location = 13; + MANILA_REQUEST_TYPE request_type = 1; + string auth_key = 2; + string protocol = 3; + string share_name = 4; + string description = 5; + string share_id = 6; + string share_group_id = 7; + int32 quota = 8; + string creator = 9; + string egroup = 10; + string admin_egroup = 11; + string share_host = 12; + string share_location = 13; } message ManilaResponse { - string msg = 1; // for generic messages - int32 code = 2; // < 1 is an error -- > 1 is OK - int64 total_used = 3; - int64 total_capacity = 4; - int64 new_share_quota = 5; - string new_share_path = 6; + string msg = 1; //for generic messages + int32 code = 2; // < 1 is an error -- > 1 is OK + int64 total_used = 3; + int64 total_capacity = 4; + int64 new_share_quota = 5; + string new_share_path = 6; + } + + diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 84cc71b3a1..71ca182c66 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -224,7 +224,7 @@ func (c *Client) initNSRequest(ctx context.Context, auth eosclient.Authorization rq.Role.Uid = uidInt rq.Role.Gid = gidInt if app != "" { - rq.Role.Groupname = app // FIXME this is going to be rq.Role.App once the GRPC interface is updated + rq.Role.App = app } rq.Authkey = c.opt.Authkey From 22178cbd55ee9600351d5e61b6de626e0639cd7c Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Fri, 9 Aug 2024 09:50:45 +0200 Subject: [PATCH 14/26] Removed eos-grpc bindings, they are now imported from a dedicated repo --- go.mod | 1 + go.sum | 2 + pkg/eosclient/eosgrpc/eos_grpc/README.protoc | 10 - pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go | 5323 ------------------ pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto | 611 -- pkg/eosclient/eosgrpc/eosgrpc.go | 2 +- 6 files changed, 4 insertions(+), 5945 deletions(-) delete mode 100644 pkg/eosclient/eosgrpc/eos_grpc/README.protoc delete mode 100644 pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go delete mode 100644 pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto diff --git a/go.mod b/go.mod index 4a26493062..9f87d088bd 100644 --- a/go.mod +++ b/go.mod @@ -72,6 +72,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bmizerany/pat v0.0.0-20210406213842-e4b6760bdd6f // indirect + github.com/cern-eos/go-eosgrpc v0.0.0-20240812132646-f105d2304f38 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/go.sum b/go.sum index 78ba809f8d..df4c32ac7d 100644 --- a/go.sum +++ b/go.sum @@ -848,6 +848,8 @@ github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/ceph/go-ceph v0.26.0 h1:LZoATo25ZH5aeL5t85BwIbrNLKCDfcDM+e0qV0cmwHY= github.com/ceph/go-ceph v0.26.0/go.mod h1:ISxb295GszZwtLPkeWi+L2uLYBVsqbsh0M104jZMOX4= +github.com/cern-eos/go-eosgrpc v0.0.0-20240812132646-f105d2304f38 h1:+81ss4Vut1khzEhl7ximWF/V+EadspY47V4JrQkwlI4= +github.com/cern-eos/go-eosgrpc v0.0.0-20240812132646-f105d2304f38/go.mod h1:ZiIzbg4sDO2MwYlspcnauUR2dfwZHUzxker+HP9k+20= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= diff --git a/pkg/eosclient/eosgrpc/eos_grpc/README.protoc b/pkg/eosclient/eosgrpc/eos_grpc/README.protoc deleted file mode 100644 index daaaa67ef7..0000000000 --- a/pkg/eosclient/eosgrpc/eos_grpc/README.protoc +++ /dev/null @@ -1,10 +0,0 @@ -To compile the eos binding into go code: - -protoc --go_out=. ./Rpc.proto -protoc ./Rpc.proto --go_out=plugins=grpc:. - - -NOTE: we have to do this here in order to be sure that a compatible protoc compiler is used. -Having a CI somewhere compiling this does NOT guarantee that the same golang and protoc will be used, -and this has created lots of problems in the past - diff --git a/pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go b/pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go deleted file mode 100644 index 065b675d2e..0000000000 --- a/pkg/eosclient/eosgrpc/eos_grpc/Rpc.pb.go +++ /dev/null @@ -1,5323 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: Rpc.proto - -package eos_grpc - -import ( - context "context" - fmt "fmt" - proto "github.com/golang/protobuf/proto" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -type TYPE int32 - -const ( - TYPE_FILE TYPE = 0 - TYPE_CONTAINER TYPE = 1 - TYPE_LISTING TYPE = 2 - TYPE_STAT TYPE = 3 -) - -var TYPE_name = map[int32]string{ - 0: "FILE", - 1: "CONTAINER", - 2: "LISTING", - 3: "STAT", -} - -var TYPE_value = map[string]int32{ - "FILE": 0, - "CONTAINER": 1, - "LISTING": 2, - "STAT": 3, -} - -func (x TYPE) String() string { - return proto.EnumName(TYPE_name, int32(x)) -} - -func (TYPE) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{0} -} - -type QUOTATYPE int32 - -const ( - QUOTATYPE_USER QUOTATYPE = 0 - QUOTATYPE_GROUP QUOTATYPE = 2 - QUOTATYPE_PROJECT QUOTATYPE = 3 -) - -var QUOTATYPE_name = map[int32]string{ - 0: "USER", - 2: "GROUP", - 3: "PROJECT", -} - -var QUOTATYPE_value = map[string]int32{ - "USER": 0, - "GROUP": 2, - "PROJECT": 3, -} - -func (x QUOTATYPE) String() string { - return proto.EnumName(QUOTATYPE_name, int32(x)) -} - -func (QUOTATYPE) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{1} -} - -type QUOTAOP int32 - -const ( - QUOTAOP_GET QUOTAOP = 0 - QUOTAOP_SET QUOTAOP = 1 - QUOTAOP_RM QUOTAOP = 2 - QUOTAOP_RMNODE QUOTAOP = 3 -) - -var QUOTAOP_name = map[int32]string{ - 0: "GET", - 1: "SET", - 2: "RM", - 3: "RMNODE", -} - -var QUOTAOP_value = map[string]int32{ - "GET": 0, - "SET": 1, - "RM": 2, - "RMNODE": 3, -} - -func (x QUOTAOP) String() string { - return proto.EnumName(QUOTAOP_name, int32(x)) -} - -func (QUOTAOP) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{2} -} - -type QUOTAENTRY int32 - -const ( - QUOTAENTRY_NONE QUOTAENTRY = 0 - QUOTAENTRY_VOLUME QUOTAENTRY = 1 - QUOTAENTRY_INODE QUOTAENTRY = 2 -) - -var QUOTAENTRY_name = map[int32]string{ - 0: "NONE", - 1: "VOLUME", - 2: "INODE", -} - -var QUOTAENTRY_value = map[string]int32{ - "NONE": 0, - "VOLUME": 1, - "INODE": 2, -} - -func (x QUOTAENTRY) String() string { - return proto.EnumName(QUOTAENTRY_name, int32(x)) -} - -func (QUOTAENTRY) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{3} -} - -type MANILA_REQUEST_TYPE int32 - -const ( - MANILA_REQUEST_TYPE_CREATE_SHARE MANILA_REQUEST_TYPE = 0 - MANILA_REQUEST_TYPE_DELETE_SHARE MANILA_REQUEST_TYPE = 1 - MANILA_REQUEST_TYPE_EXTEND_SHARE MANILA_REQUEST_TYPE = 2 - MANILA_REQUEST_TYPE_SHRINK_SHARE MANILA_REQUEST_TYPE = 3 - MANILA_REQUEST_TYPE_MANAGE_EXISTING MANILA_REQUEST_TYPE = 4 - MANILA_REQUEST_TYPE_UNMANAGE MANILA_REQUEST_TYPE = 5 - MANILA_REQUEST_TYPE_GET_CAPACITIES MANILA_REQUEST_TYPE = 6 -) - -var MANILA_REQUEST_TYPE_name = map[int32]string{ - 0: "CREATE_SHARE", - 1: "DELETE_SHARE", - 2: "EXTEND_SHARE", - 3: "SHRINK_SHARE", - 4: "MANAGE_EXISTING", - 5: "UNMANAGE", - 6: "GET_CAPACITIES", -} - -var MANILA_REQUEST_TYPE_value = map[string]int32{ - "CREATE_SHARE": 0, - "DELETE_SHARE": 1, - "EXTEND_SHARE": 2, - "SHRINK_SHARE": 3, - "MANAGE_EXISTING": 4, - "UNMANAGE": 5, - "GET_CAPACITIES": 6, -} - -func (x MANILA_REQUEST_TYPE) String() string { - return proto.EnumName(MANILA_REQUEST_TYPE_name, int32(x)) -} - -func (MANILA_REQUEST_TYPE) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{4} -} - -type NSRequest_VersionRequest_VERSION_CMD int32 - -const ( - NSRequest_VersionRequest_CREATE NSRequest_VersionRequest_VERSION_CMD = 0 - NSRequest_VersionRequest_PURGE NSRequest_VersionRequest_VERSION_CMD = 1 - NSRequest_VersionRequest_LIST NSRequest_VersionRequest_VERSION_CMD = 2 - NSRequest_VersionRequest_GRAB NSRequest_VersionRequest_VERSION_CMD = 3 -) - -var NSRequest_VersionRequest_VERSION_CMD_name = map[int32]string{ - 0: "CREATE", - 1: "PURGE", - 2: "LIST", - 3: "GRAB", -} - -var NSRequest_VersionRequest_VERSION_CMD_value = map[string]int32{ - "CREATE": 0, - "PURGE": 1, - "LIST": 2, - "GRAB": 3, -} - -func (x NSRequest_VersionRequest_VERSION_CMD) String() string { - return proto.EnumName(NSRequest_VersionRequest_VERSION_CMD_name, int32(x)) -} - -func (NSRequest_VersionRequest_VERSION_CMD) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 7, 0} -} - -type NSRequest_RecycleRequest_RECYCLE_CMD int32 - -const ( - NSRequest_RecycleRequest_RESTORE NSRequest_RecycleRequest_RECYCLE_CMD = 0 - NSRequest_RecycleRequest_PURGE NSRequest_RecycleRequest_RECYCLE_CMD = 1 - NSRequest_RecycleRequest_LIST NSRequest_RecycleRequest_RECYCLE_CMD = 2 -) - -var NSRequest_RecycleRequest_RECYCLE_CMD_name = map[int32]string{ - 0: "RESTORE", - 1: "PURGE", - 2: "LIST", -} - -var NSRequest_RecycleRequest_RECYCLE_CMD_value = map[string]int32{ - "RESTORE": 0, - "PURGE": 1, - "LIST": 2, -} - -func (x NSRequest_RecycleRequest_RECYCLE_CMD) String() string { - return proto.EnumName(NSRequest_RecycleRequest_RECYCLE_CMD_name, int32(x)) -} - -func (NSRequest_RecycleRequest_RECYCLE_CMD) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 8, 0} -} - -type NSRequest_AclRequest_ACL_COMMAND int32 - -const ( - NSRequest_AclRequest_NONE NSRequest_AclRequest_ACL_COMMAND = 0 - NSRequest_AclRequest_MODIFY NSRequest_AclRequest_ACL_COMMAND = 1 - NSRequest_AclRequest_LIST NSRequest_AclRequest_ACL_COMMAND = 2 -) - -var NSRequest_AclRequest_ACL_COMMAND_name = map[int32]string{ - 0: "NONE", - 1: "MODIFY", - 2: "LIST", -} - -var NSRequest_AclRequest_ACL_COMMAND_value = map[string]int32{ - "NONE": 0, - "MODIFY": 1, - "LIST": 2, -} - -func (x NSRequest_AclRequest_ACL_COMMAND) String() string { - return proto.EnumName(NSRequest_AclRequest_ACL_COMMAND_name, int32(x)) -} - -func (NSRequest_AclRequest_ACL_COMMAND) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 12, 0} -} - -type NSRequest_AclRequest_ACL_TYPE int32 - -const ( - NSRequest_AclRequest_USER_ACL NSRequest_AclRequest_ACL_TYPE = 0 - NSRequest_AclRequest_SYS_ACL NSRequest_AclRequest_ACL_TYPE = 1 -) - -var NSRequest_AclRequest_ACL_TYPE_name = map[int32]string{ - 0: "USER_ACL", - 1: "SYS_ACL", -} - -var NSRequest_AclRequest_ACL_TYPE_value = map[string]int32{ - "USER_ACL": 0, - "SYS_ACL": 1, -} - -func (x NSRequest_AclRequest_ACL_TYPE) String() string { - return proto.EnumName(NSRequest_AclRequest_ACL_TYPE_name, int32(x)) -} - -func (NSRequest_AclRequest_ACL_TYPE) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 12, 1} -} - -type NSRequest_ShareRequest_LsShare_OutFormat int32 - -const ( - NSRequest_ShareRequest_LsShare_NONE NSRequest_ShareRequest_LsShare_OutFormat = 0 - NSRequest_ShareRequest_LsShare_MONITORING NSRequest_ShareRequest_LsShare_OutFormat = 1 - NSRequest_ShareRequest_LsShare_LISTING NSRequest_ShareRequest_LsShare_OutFormat = 2 - NSRequest_ShareRequest_LsShare_JSON NSRequest_ShareRequest_LsShare_OutFormat = 3 -) - -var NSRequest_ShareRequest_LsShare_OutFormat_name = map[int32]string{ - 0: "NONE", - 1: "MONITORING", - 2: "LISTING", - 3: "JSON", -} - -var NSRequest_ShareRequest_LsShare_OutFormat_value = map[string]int32{ - "NONE": 0, - "MONITORING": 1, - "LISTING": 2, - "JSON": 3, -} - -func (x NSRequest_ShareRequest_LsShare_OutFormat) String() string { - return proto.EnumName(NSRequest_ShareRequest_LsShare_OutFormat_name, int32(x)) -} - -func (NSRequest_ShareRequest_LsShare_OutFormat) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 15, 0, 0} -} - -type NSRequest_ShareRequest_OperateShare_Op int32 - -const ( - NSRequest_ShareRequest_OperateShare_CREATE NSRequest_ShareRequest_OperateShare_Op = 0 - NSRequest_ShareRequest_OperateShare_REMOVE NSRequest_ShareRequest_OperateShare_Op = 1 - NSRequest_ShareRequest_OperateShare_SHARE NSRequest_ShareRequest_OperateShare_Op = 2 - NSRequest_ShareRequest_OperateShare_UNSHARE NSRequest_ShareRequest_OperateShare_Op = 3 - NSRequest_ShareRequest_OperateShare_ACCESS NSRequest_ShareRequest_OperateShare_Op = 4 - NSRequest_ShareRequest_OperateShare_MODIFY NSRequest_ShareRequest_OperateShare_Op = 5 -) - -var NSRequest_ShareRequest_OperateShare_Op_name = map[int32]string{ - 0: "CREATE", - 1: "REMOVE", - 2: "SHARE", - 3: "UNSHARE", - 4: "ACCESS", - 5: "MODIFY", -} - -var NSRequest_ShareRequest_OperateShare_Op_value = map[string]int32{ - "CREATE": 0, - "REMOVE": 1, - "SHARE": 2, - "UNSHARE": 3, - "ACCESS": 4, - "MODIFY": 5, -} - -func (x NSRequest_ShareRequest_OperateShare_Op) String() string { - return proto.EnumName(NSRequest_ShareRequest_OperateShare_Op_name, int32(x)) -} - -func (NSRequest_ShareRequest_OperateShare_Op) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 15, 1, 0} -} - -type NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE int32 - -const ( - NSResponse_RecycleResponse_RecycleInfo_FILE NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE = 0 - NSResponse_RecycleResponse_RecycleInfo_TREE NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE = 1 -) - -var NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE_name = map[int32]string{ - 0: "FILE", - 1: "TREE", -} - -var NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE_value = map[string]int32{ - "FILE": 0, - "TREE": 1, -} - -func (x NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE) String() string { - return proto.EnumName(NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE_name, int32(x)) -} - -func (NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 2, 0, 0} -} - -type PingRequest struct { - Authkey string `protobuf:"bytes,1,opt,name=authkey,proto3" json:"authkey,omitempty"` - Message []byte `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PingRequest) Reset() { *m = PingRequest{} } -func (m *PingRequest) String() string { return proto.CompactTextString(m) } -func (*PingRequest) ProtoMessage() {} -func (*PingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{0} -} - -func (m *PingRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PingRequest.Unmarshal(m, b) -} -func (m *PingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PingRequest.Marshal(b, m, deterministic) -} -func (m *PingRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PingRequest.Merge(m, src) -} -func (m *PingRequest) XXX_Size() int { - return xxx_messageInfo_PingRequest.Size(m) -} -func (m *PingRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PingRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_PingRequest proto.InternalMessageInfo - -func (m *PingRequest) GetAuthkey() string { - if m != nil { - return m.Authkey - } - return "" -} - -func (m *PingRequest) GetMessage() []byte { - if m != nil { - return m.Message - } - return nil -} - -type PingReply struct { - Message []byte `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PingReply) Reset() { *m = PingReply{} } -func (m *PingReply) String() string { return proto.CompactTextString(m) } -func (*PingReply) ProtoMessage() {} -func (*PingReply) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{1} -} - -func (m *PingReply) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PingReply.Unmarshal(m, b) -} -func (m *PingReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PingReply.Marshal(b, m, deterministic) -} -func (m *PingReply) XXX_Merge(src proto.Message) { - xxx_messageInfo_PingReply.Merge(m, src) -} -func (m *PingReply) XXX_Size() int { - return xxx_messageInfo_PingReply.Size(m) -} -func (m *PingReply) XXX_DiscardUnknown() { - xxx_messageInfo_PingReply.DiscardUnknown(m) -} - -var xxx_messageInfo_PingReply proto.InternalMessageInfo - -func (m *PingReply) GetMessage() []byte { - if m != nil { - return m.Message - } - return nil -} - -type ContainerInsertRequest struct { - Container []*ContainerMdProto `protobuf:"bytes,1,rep,name=container,proto3" json:"container,omitempty"` - Authkey string `protobuf:"bytes,2,opt,name=authkey,proto3" json:"authkey,omitempty"` - InheritMd bool `protobuf:"varint,3,opt,name=inherit_md,json=inheritMd,proto3" json:"inherit_md,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ContainerInsertRequest) Reset() { *m = ContainerInsertRequest{} } -func (m *ContainerInsertRequest) String() string { return proto.CompactTextString(m) } -func (*ContainerInsertRequest) ProtoMessage() {} -func (*ContainerInsertRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{2} -} - -func (m *ContainerInsertRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContainerInsertRequest.Unmarshal(m, b) -} -func (m *ContainerInsertRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContainerInsertRequest.Marshal(b, m, deterministic) -} -func (m *ContainerInsertRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContainerInsertRequest.Merge(m, src) -} -func (m *ContainerInsertRequest) XXX_Size() int { - return xxx_messageInfo_ContainerInsertRequest.Size(m) -} -func (m *ContainerInsertRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ContainerInsertRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ContainerInsertRequest proto.InternalMessageInfo - -func (m *ContainerInsertRequest) GetContainer() []*ContainerMdProto { - if m != nil { - return m.Container - } - return nil -} - -func (m *ContainerInsertRequest) GetAuthkey() string { - if m != nil { - return m.Authkey - } - return "" -} - -func (m *ContainerInsertRequest) GetInheritMd() bool { - if m != nil { - return m.InheritMd - } - return false -} - -type FileInsertRequest struct { - Files []*FileMdProto `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` - Authkey string `protobuf:"bytes,2,opt,name=authkey,proto3" json:"authkey,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FileInsertRequest) Reset() { *m = FileInsertRequest{} } -func (m *FileInsertRequest) String() string { return proto.CompactTextString(m) } -func (*FileInsertRequest) ProtoMessage() {} -func (*FileInsertRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{3} -} - -func (m *FileInsertRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FileInsertRequest.Unmarshal(m, b) -} -func (m *FileInsertRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FileInsertRequest.Marshal(b, m, deterministic) -} -func (m *FileInsertRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileInsertRequest.Merge(m, src) -} -func (m *FileInsertRequest) XXX_Size() int { - return xxx_messageInfo_FileInsertRequest.Size(m) -} -func (m *FileInsertRequest) XXX_DiscardUnknown() { - xxx_messageInfo_FileInsertRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_FileInsertRequest proto.InternalMessageInfo - -func (m *FileInsertRequest) GetFiles() []*FileMdProto { - if m != nil { - return m.Files - } - return nil -} - -func (m *FileInsertRequest) GetAuthkey() string { - if m != nil { - return m.Authkey - } - return "" -} - -type InsertReply struct { - Message []string `protobuf:"bytes,1,rep,name=message,proto3" json:"message,omitempty"` - Retc []uint32 `protobuf:"varint,2,rep,packed,name=retc,proto3" json:"retc,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *InsertReply) Reset() { *m = InsertReply{} } -func (m *InsertReply) String() string { return proto.CompactTextString(m) } -func (*InsertReply) ProtoMessage() {} -func (*InsertReply) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{4} -} - -func (m *InsertReply) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_InsertReply.Unmarshal(m, b) -} -func (m *InsertReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_InsertReply.Marshal(b, m, deterministic) -} -func (m *InsertReply) XXX_Merge(src proto.Message) { - xxx_messageInfo_InsertReply.Merge(m, src) -} -func (m *InsertReply) XXX_Size() int { - return xxx_messageInfo_InsertReply.Size(m) -} -func (m *InsertReply) XXX_DiscardUnknown() { - xxx_messageInfo_InsertReply.DiscardUnknown(m) -} - -var xxx_messageInfo_InsertReply proto.InternalMessageInfo - -func (m *InsertReply) GetMessage() []string { - if m != nil { - return m.Message - } - return nil -} - -func (m *InsertReply) GetRetc() []uint32 { - if m != nil { - return m.Retc - } - return nil -} - -type Time struct { - Sec uint64 `protobuf:"varint,1,opt,name=sec,proto3" json:"sec,omitempty"` - NSec uint64 `protobuf:"varint,2,opt,name=n_sec,json=nSec,proto3" json:"n_sec,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Time) Reset() { *m = Time{} } -func (m *Time) String() string { return proto.CompactTextString(m) } -func (*Time) ProtoMessage() {} -func (*Time) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{5} -} - -func (m *Time) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Time.Unmarshal(m, b) -} -func (m *Time) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Time.Marshal(b, m, deterministic) -} -func (m *Time) XXX_Merge(src proto.Message) { - xxx_messageInfo_Time.Merge(m, src) -} -func (m *Time) XXX_Size() int { - return xxx_messageInfo_Time.Size(m) -} -func (m *Time) XXX_DiscardUnknown() { - xxx_messageInfo_Time.DiscardUnknown(m) -} - -var xxx_messageInfo_Time proto.InternalMessageInfo - -func (m *Time) GetSec() uint64 { - if m != nil { - return m.Sec - } - return 0 -} - -func (m *Time) GetNSec() uint64 { - if m != nil { - return m.NSec - } - return 0 -} - -type Checksum struct { - Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Checksum) Reset() { *m = Checksum{} } -func (m *Checksum) String() string { return proto.CompactTextString(m) } -func (*Checksum) ProtoMessage() {} -func (*Checksum) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{6} -} - -func (m *Checksum) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Checksum.Unmarshal(m, b) -} -func (m *Checksum) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Checksum.Marshal(b, m, deterministic) -} -func (m *Checksum) XXX_Merge(src proto.Message) { - xxx_messageInfo_Checksum.Merge(m, src) -} -func (m *Checksum) XXX_Size() int { - return xxx_messageInfo_Checksum.Size(m) -} -func (m *Checksum) XXX_DiscardUnknown() { - xxx_messageInfo_Checksum.DiscardUnknown(m) -} - -var xxx_messageInfo_Checksum proto.InternalMessageInfo - -func (m *Checksum) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func (m *Checksum) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -type FileMdProto struct { - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - ContId uint64 `protobuf:"varint,2,opt,name=cont_id,json=contId,proto3" json:"cont_id,omitempty"` - Uid uint64 `protobuf:"varint,3,opt,name=uid,proto3" json:"uid,omitempty"` - Gid uint64 `protobuf:"varint,4,opt,name=gid,proto3" json:"gid,omitempty"` - Size uint64 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` - LayoutId uint32 `protobuf:"varint,6,opt,name=layout_id,json=layoutId,proto3" json:"layout_id,omitempty"` - Flags uint32 `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"` - Name []byte `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"` - LinkName []byte `protobuf:"bytes,9,opt,name=link_name,json=linkName,proto3" json:"link_name,omitempty"` - Ctime *Time `protobuf:"bytes,10,opt,name=ctime,proto3" json:"ctime,omitempty"` - Mtime *Time `protobuf:"bytes,11,opt,name=mtime,proto3" json:"mtime,omitempty"` - Checksum *Checksum `protobuf:"bytes,12,opt,name=checksum,proto3" json:"checksum,omitempty"` - Locations []uint32 `protobuf:"varint,13,rep,packed,name=locations,proto3" json:"locations,omitempty"` - UnlinkLocations []uint32 `protobuf:"varint,14,rep,packed,name=unlink_locations,json=unlinkLocations,proto3" json:"unlink_locations,omitempty"` - Xattrs map[string][]byte `protobuf:"bytes,15,rep,name=xattrs,proto3" json:"xattrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Path []byte `protobuf:"bytes,16,opt,name=path,proto3" json:"path,omitempty"` - Etag string `protobuf:"bytes,17,opt,name=etag,proto3" json:"etag,omitempty"` - Inode uint64 `protobuf:"varint,18,opt,name=inode,proto3" json:"inode,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FileMdProto) Reset() { *m = FileMdProto{} } -func (m *FileMdProto) String() string { return proto.CompactTextString(m) } -func (*FileMdProto) ProtoMessage() {} -func (*FileMdProto) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{7} -} - -func (m *FileMdProto) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FileMdProto.Unmarshal(m, b) -} -func (m *FileMdProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FileMdProto.Marshal(b, m, deterministic) -} -func (m *FileMdProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileMdProto.Merge(m, src) -} -func (m *FileMdProto) XXX_Size() int { - return xxx_messageInfo_FileMdProto.Size(m) -} -func (m *FileMdProto) XXX_DiscardUnknown() { - xxx_messageInfo_FileMdProto.DiscardUnknown(m) -} - -var xxx_messageInfo_FileMdProto proto.InternalMessageInfo - -func (m *FileMdProto) GetId() uint64 { - if m != nil { - return m.Id - } - return 0 -} - -func (m *FileMdProto) GetContId() uint64 { - if m != nil { - return m.ContId - } - return 0 -} - -func (m *FileMdProto) GetUid() uint64 { - if m != nil { - return m.Uid - } - return 0 -} - -func (m *FileMdProto) GetGid() uint64 { - if m != nil { - return m.Gid - } - return 0 -} - -func (m *FileMdProto) GetSize() uint64 { - if m != nil { - return m.Size - } - return 0 -} - -func (m *FileMdProto) GetLayoutId() uint32 { - if m != nil { - return m.LayoutId - } - return 0 -} - -func (m *FileMdProto) GetFlags() uint32 { - if m != nil { - return m.Flags - } - return 0 -} - -func (m *FileMdProto) GetName() []byte { - if m != nil { - return m.Name - } - return nil -} - -func (m *FileMdProto) GetLinkName() []byte { - if m != nil { - return m.LinkName - } - return nil -} - -func (m *FileMdProto) GetCtime() *Time { - if m != nil { - return m.Ctime - } - return nil -} - -func (m *FileMdProto) GetMtime() *Time { - if m != nil { - return m.Mtime - } - return nil -} - -func (m *FileMdProto) GetChecksum() *Checksum { - if m != nil { - return m.Checksum - } - return nil -} - -func (m *FileMdProto) GetLocations() []uint32 { - if m != nil { - return m.Locations - } - return nil -} - -func (m *FileMdProto) GetUnlinkLocations() []uint32 { - if m != nil { - return m.UnlinkLocations - } - return nil -} - -func (m *FileMdProto) GetXattrs() map[string][]byte { - if m != nil { - return m.Xattrs - } - return nil -} - -func (m *FileMdProto) GetPath() []byte { - if m != nil { - return m.Path - } - return nil -} - -func (m *FileMdProto) GetEtag() string { - if m != nil { - return m.Etag - } - return "" -} - -func (m *FileMdProto) GetInode() uint64 { - if m != nil { - return m.Inode - } - return 0 -} - -type ContainerMdProto struct { - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - ParentId uint64 `protobuf:"varint,2,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` - Uid uint64 `protobuf:"varint,3,opt,name=uid,proto3" json:"uid,omitempty"` - Gid uint64 `protobuf:"varint,4,opt,name=gid,proto3" json:"gid,omitempty"` - TreeSize int64 `protobuf:"varint,6,opt,name=tree_size,json=treeSize,proto3" json:"tree_size,omitempty"` - Mode uint32 `protobuf:"varint,5,opt,name=mode,proto3" json:"mode,omitempty"` - Flags uint32 `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"` - Name []byte `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"` - Ctime *Time `protobuf:"bytes,9,opt,name=ctime,proto3" json:"ctime,omitempty"` - Mtime *Time `protobuf:"bytes,10,opt,name=mtime,proto3" json:"mtime,omitempty"` - Stime *Time `protobuf:"bytes,11,opt,name=stime,proto3" json:"stime,omitempty"` - Xattrs map[string][]byte `protobuf:"bytes,12,rep,name=xattrs,proto3" json:"xattrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Path []byte `protobuf:"bytes,13,opt,name=path,proto3" json:"path,omitempty"` - Etag string `protobuf:"bytes,14,opt,name=etag,proto3" json:"etag,omitempty"` - Inode uint64 `protobuf:"varint,15,opt,name=inode,proto3" json:"inode,omitempty"` - Files uint64 `protobuf:"varint,16,opt,name=files,proto3" json:"files,omitempty"` - Containers uint64 `protobuf:"varint,17,opt,name=containers,proto3" json:"containers,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ContainerMdProto) Reset() { *m = ContainerMdProto{} } -func (m *ContainerMdProto) String() string { return proto.CompactTextString(m) } -func (*ContainerMdProto) ProtoMessage() {} -func (*ContainerMdProto) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{8} -} - -func (m *ContainerMdProto) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContainerMdProto.Unmarshal(m, b) -} -func (m *ContainerMdProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContainerMdProto.Marshal(b, m, deterministic) -} -func (m *ContainerMdProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContainerMdProto.Merge(m, src) -} -func (m *ContainerMdProto) XXX_Size() int { - return xxx_messageInfo_ContainerMdProto.Size(m) -} -func (m *ContainerMdProto) XXX_DiscardUnknown() { - xxx_messageInfo_ContainerMdProto.DiscardUnknown(m) -} - -var xxx_messageInfo_ContainerMdProto proto.InternalMessageInfo - -func (m *ContainerMdProto) GetId() uint64 { - if m != nil { - return m.Id - } - return 0 -} - -func (m *ContainerMdProto) GetParentId() uint64 { - if m != nil { - return m.ParentId - } - return 0 -} - -func (m *ContainerMdProto) GetUid() uint64 { - if m != nil { - return m.Uid - } - return 0 -} - -func (m *ContainerMdProto) GetGid() uint64 { - if m != nil { - return m.Gid - } - return 0 -} - -func (m *ContainerMdProto) GetTreeSize() int64 { - if m != nil { - return m.TreeSize - } - return 0 -} - -func (m *ContainerMdProto) GetMode() uint32 { - if m != nil { - return m.Mode - } - return 0 -} - -func (m *ContainerMdProto) GetFlags() uint32 { - if m != nil { - return m.Flags - } - return 0 -} - -func (m *ContainerMdProto) GetName() []byte { - if m != nil { - return m.Name - } - return nil -} - -func (m *ContainerMdProto) GetCtime() *Time { - if m != nil { - return m.Ctime - } - return nil -} - -func (m *ContainerMdProto) GetMtime() *Time { - if m != nil { - return m.Mtime - } - return nil -} - -func (m *ContainerMdProto) GetStime() *Time { - if m != nil { - return m.Stime - } - return nil -} - -func (m *ContainerMdProto) GetXattrs() map[string][]byte { - if m != nil { - return m.Xattrs - } - return nil -} - -func (m *ContainerMdProto) GetPath() []byte { - if m != nil { - return m.Path - } - return nil -} - -func (m *ContainerMdProto) GetEtag() string { - if m != nil { - return m.Etag - } - return "" -} - -func (m *ContainerMdProto) GetInode() uint64 { - if m != nil { - return m.Inode - } - return 0 -} - -func (m *ContainerMdProto) GetFiles() uint64 { - if m != nil { - return m.Files - } - return 0 -} - -func (m *ContainerMdProto) GetContainers() uint64 { - if m != nil { - return m.Containers - } - return 0 -} - -type QuotaProto struct { - Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Type QUOTATYPE `protobuf:"varint,3,opt,name=type,proto3,enum=eos.rpc.QUOTATYPE" json:"type,omitempty"` - Usedbytes uint64 `protobuf:"varint,4,opt,name=usedbytes,proto3" json:"usedbytes,omitempty"` - Usedlogicalbytes uint64 `protobuf:"varint,5,opt,name=usedlogicalbytes,proto3" json:"usedlogicalbytes,omitempty"` - Usedfiles uint64 `protobuf:"varint,6,opt,name=usedfiles,proto3" json:"usedfiles,omitempty"` - Maxbytes uint64 `protobuf:"varint,7,opt,name=maxbytes,proto3" json:"maxbytes,omitempty"` - Maxlogicalbytes uint64 `protobuf:"varint,8,opt,name=maxlogicalbytes,proto3" json:"maxlogicalbytes,omitempty"` - Maxfiles uint64 `protobuf:"varint,9,opt,name=maxfiles,proto3" json:"maxfiles,omitempty"` - Percentageusedbytes float32 `protobuf:"fixed32,10,opt,name=percentageusedbytes,proto3" json:"percentageusedbytes,omitempty"` - Percentageusedfiles float32 `protobuf:"fixed32,11,opt,name=percentageusedfiles,proto3" json:"percentageusedfiles,omitempty"` - Statusbytes string `protobuf:"bytes,12,opt,name=statusbytes,proto3" json:"statusbytes,omitempty"` - Statusfiles string `protobuf:"bytes,13,opt,name=statusfiles,proto3" json:"statusfiles,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *QuotaProto) Reset() { *m = QuotaProto{} } -func (m *QuotaProto) String() string { return proto.CompactTextString(m) } -func (*QuotaProto) ProtoMessage() {} -func (*QuotaProto) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{9} -} - -func (m *QuotaProto) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_QuotaProto.Unmarshal(m, b) -} -func (m *QuotaProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_QuotaProto.Marshal(b, m, deterministic) -} -func (m *QuotaProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_QuotaProto.Merge(m, src) -} -func (m *QuotaProto) XXX_Size() int { - return xxx_messageInfo_QuotaProto.Size(m) -} -func (m *QuotaProto) XXX_DiscardUnknown() { - xxx_messageInfo_QuotaProto.DiscardUnknown(m) -} - -var xxx_messageInfo_QuotaProto proto.InternalMessageInfo - -func (m *QuotaProto) GetPath() []byte { - if m != nil { - return m.Path - } - return nil -} - -func (m *QuotaProto) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *QuotaProto) GetType() QUOTATYPE { - if m != nil { - return m.Type - } - return QUOTATYPE_USER -} - -func (m *QuotaProto) GetUsedbytes() uint64 { - if m != nil { - return m.Usedbytes - } - return 0 -} - -func (m *QuotaProto) GetUsedlogicalbytes() uint64 { - if m != nil { - return m.Usedlogicalbytes - } - return 0 -} - -func (m *QuotaProto) GetUsedfiles() uint64 { - if m != nil { - return m.Usedfiles - } - return 0 -} - -func (m *QuotaProto) GetMaxbytes() uint64 { - if m != nil { - return m.Maxbytes - } - return 0 -} - -func (m *QuotaProto) GetMaxlogicalbytes() uint64 { - if m != nil { - return m.Maxlogicalbytes - } - return 0 -} - -func (m *QuotaProto) GetMaxfiles() uint64 { - if m != nil { - return m.Maxfiles - } - return 0 -} - -func (m *QuotaProto) GetPercentageusedbytes() float32 { - if m != nil { - return m.Percentageusedbytes - } - return 0 -} - -func (m *QuotaProto) GetPercentageusedfiles() float32 { - if m != nil { - return m.Percentageusedfiles - } - return 0 -} - -func (m *QuotaProto) GetStatusbytes() string { - if m != nil { - return m.Statusbytes - } - return "" -} - -func (m *QuotaProto) GetStatusfiles() string { - if m != nil { - return m.Statusfiles - } - return "" -} - -type RoleId struct { - Uid uint64 `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"` - Gid uint64 `protobuf:"varint,2,opt,name=gid,proto3" json:"gid,omitempty"` - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - Groupname string `protobuf:"bytes,4,opt,name=groupname,proto3" json:"groupname,omitempty"` - App string `protobuf:"bytes,5,opt,name=app,proto3" json:"app,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *RoleId) Reset() { *m = RoleId{} } -func (m *RoleId) String() string { return proto.CompactTextString(m) } -func (*RoleId) ProtoMessage() {} -func (*RoleId) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{10} -} - -func (m *RoleId) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RoleId.Unmarshal(m, b) -} -func (m *RoleId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RoleId.Marshal(b, m, deterministic) -} -func (m *RoleId) XXX_Merge(src proto.Message) { - xxx_messageInfo_RoleId.Merge(m, src) -} -func (m *RoleId) XXX_Size() int { - return xxx_messageInfo_RoleId.Size(m) -} -func (m *RoleId) XXX_DiscardUnknown() { - xxx_messageInfo_RoleId.DiscardUnknown(m) -} - -var xxx_messageInfo_RoleId proto.InternalMessageInfo - -func (m *RoleId) GetUid() uint64 { - if m != nil { - return m.Uid - } - return 0 -} - -func (m *RoleId) GetGid() uint64 { - if m != nil { - return m.Gid - } - return 0 -} - -func (m *RoleId) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *RoleId) GetGroupname() string { - if m != nil { - return m.Groupname - } - return "" -} - -func (m *RoleId) GetApp() string { - if m != nil { - return m.App - } - return "" -} - -type MDId struct { - Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Id uint64 `protobuf:"fixed64,2,opt,name=id,proto3" json:"id,omitempty"` - Ino uint64 `protobuf:"fixed64,3,opt,name=ino,proto3" json:"ino,omitempty"` - Type TYPE `protobuf:"varint,4,opt,name=type,proto3,enum=eos.rpc.TYPE" json:"type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MDId) Reset() { *m = MDId{} } -func (m *MDId) String() string { return proto.CompactTextString(m) } -func (*MDId) ProtoMessage() {} -func (*MDId) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{11} -} - -func (m *MDId) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MDId.Unmarshal(m, b) -} -func (m *MDId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MDId.Marshal(b, m, deterministic) -} -func (m *MDId) XXX_Merge(src proto.Message) { - xxx_messageInfo_MDId.Merge(m, src) -} -func (m *MDId) XXX_Size() int { - return xxx_messageInfo_MDId.Size(m) -} -func (m *MDId) XXX_DiscardUnknown() { - xxx_messageInfo_MDId.DiscardUnknown(m) -} - -var xxx_messageInfo_MDId proto.InternalMessageInfo - -func (m *MDId) GetPath() []byte { - if m != nil { - return m.Path - } - return nil -} - -func (m *MDId) GetId() uint64 { - if m != nil { - return m.Id - } - return 0 -} - -func (m *MDId) GetIno() uint64 { - if m != nil { - return m.Ino - } - return 0 -} - -func (m *MDId) GetType() TYPE { - if m != nil { - return m.Type - } - return TYPE_FILE -} - -type Limit struct { - Zero bool `protobuf:"varint,1,opt,name=zero,proto3" json:"zero,omitempty"` - Min uint64 `protobuf:"varint,2,opt,name=min,proto3" json:"min,omitempty"` - Max uint64 `protobuf:"varint,3,opt,name=max,proto3" json:"max,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Limit) Reset() { *m = Limit{} } -func (m *Limit) String() string { return proto.CompactTextString(m) } -func (*Limit) ProtoMessage() {} -func (*Limit) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{12} -} - -func (m *Limit) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Limit.Unmarshal(m, b) -} -func (m *Limit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Limit.Marshal(b, m, deterministic) -} -func (m *Limit) XXX_Merge(src proto.Message) { - xxx_messageInfo_Limit.Merge(m, src) -} -func (m *Limit) XXX_Size() int { - return xxx_messageInfo_Limit.Size(m) -} -func (m *Limit) XXX_DiscardUnknown() { - xxx_messageInfo_Limit.DiscardUnknown(m) -} - -var xxx_messageInfo_Limit proto.InternalMessageInfo - -func (m *Limit) GetZero() bool { - if m != nil { - return m.Zero - } - return false -} - -func (m *Limit) GetMin() uint64 { - if m != nil { - return m.Min - } - return 0 -} - -func (m *Limit) GetMax() uint64 { - if m != nil { - return m.Max - } - return 0 -} - -type MDSelection struct { - Select bool `protobuf:"varint,1,opt,name=select,proto3" json:"select,omitempty"` - Ctime *Limit `protobuf:"bytes,2,opt,name=ctime,proto3" json:"ctime,omitempty"` - Mtime *Limit `protobuf:"bytes,3,opt,name=mtime,proto3" json:"mtime,omitempty"` - Stime *Limit `protobuf:"bytes,4,opt,name=stime,proto3" json:"stime,omitempty"` - Size *Limit `protobuf:"bytes,5,opt,name=size,proto3" json:"size,omitempty"` - Treesize *Limit `protobuf:"bytes,6,opt,name=treesize,proto3" json:"treesize,omitempty"` - Children *Limit `protobuf:"bytes,7,opt,name=children,proto3" json:"children,omitempty"` - Locations *Limit `protobuf:"bytes,8,opt,name=locations,proto3" json:"locations,omitempty"` - UnlinkedLocations *Limit `protobuf:"bytes,9,opt,name=unlinked_locations,json=unlinkedLocations,proto3" json:"unlinked_locations,omitempty"` - Layoutid uint64 `protobuf:"varint,10,opt,name=layoutid,proto3" json:"layoutid,omitempty"` - Flags uint64 `protobuf:"varint,11,opt,name=flags,proto3" json:"flags,omitempty"` - Symlink bool `protobuf:"varint,12,opt,name=symlink,proto3" json:"symlink,omitempty"` - Checksum *Checksum `protobuf:"bytes,13,opt,name=checksum,proto3" json:"checksum,omitempty"` - Owner uint32 `protobuf:"varint,14,opt,name=owner,proto3" json:"owner,omitempty"` - Group uint32 `protobuf:"varint,15,opt,name=group,proto3" json:"group,omitempty"` - OwnerRoot bool `protobuf:"varint,16,opt,name=owner_root,json=ownerRoot,proto3" json:"owner_root,omitempty"` - GroupRoot bool `protobuf:"varint,17,opt,name=group_root,json=groupRoot,proto3" json:"group_root,omitempty"` - RegexpFilename []byte `protobuf:"bytes,18,opt,name=regexp_filename,json=regexpFilename,proto3" json:"regexp_filename,omitempty"` - RegexpDirname []byte `protobuf:"bytes,19,opt,name=regexp_dirname,json=regexpDirname,proto3" json:"regexp_dirname,omitempty"` - Xattr map[string][]byte `protobuf:"bytes,20,rep,name=xattr,proto3" json:"xattr,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MDSelection) Reset() { *m = MDSelection{} } -func (m *MDSelection) String() string { return proto.CompactTextString(m) } -func (*MDSelection) ProtoMessage() {} -func (*MDSelection) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{13} -} - -func (m *MDSelection) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MDSelection.Unmarshal(m, b) -} -func (m *MDSelection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MDSelection.Marshal(b, m, deterministic) -} -func (m *MDSelection) XXX_Merge(src proto.Message) { - xxx_messageInfo_MDSelection.Merge(m, src) -} -func (m *MDSelection) XXX_Size() int { - return xxx_messageInfo_MDSelection.Size(m) -} -func (m *MDSelection) XXX_DiscardUnknown() { - xxx_messageInfo_MDSelection.DiscardUnknown(m) -} - -var xxx_messageInfo_MDSelection proto.InternalMessageInfo - -func (m *MDSelection) GetSelect() bool { - if m != nil { - return m.Select - } - return false -} - -func (m *MDSelection) GetCtime() *Limit { - if m != nil { - return m.Ctime - } - return nil -} - -func (m *MDSelection) GetMtime() *Limit { - if m != nil { - return m.Mtime - } - return nil -} - -func (m *MDSelection) GetStime() *Limit { - if m != nil { - return m.Stime - } - return nil -} - -func (m *MDSelection) GetSize() *Limit { - if m != nil { - return m.Size - } - return nil -} - -func (m *MDSelection) GetTreesize() *Limit { - if m != nil { - return m.Treesize - } - return nil -} - -func (m *MDSelection) GetChildren() *Limit { - if m != nil { - return m.Children - } - return nil -} - -func (m *MDSelection) GetLocations() *Limit { - if m != nil { - return m.Locations - } - return nil -} - -func (m *MDSelection) GetUnlinkedLocations() *Limit { - if m != nil { - return m.UnlinkedLocations - } - return nil -} - -func (m *MDSelection) GetLayoutid() uint64 { - if m != nil { - return m.Layoutid - } - return 0 -} - -func (m *MDSelection) GetFlags() uint64 { - if m != nil { - return m.Flags - } - return 0 -} - -func (m *MDSelection) GetSymlink() bool { - if m != nil { - return m.Symlink - } - return false -} - -func (m *MDSelection) GetChecksum() *Checksum { - if m != nil { - return m.Checksum - } - return nil -} - -func (m *MDSelection) GetOwner() uint32 { - if m != nil { - return m.Owner - } - return 0 -} - -func (m *MDSelection) GetGroup() uint32 { - if m != nil { - return m.Group - } - return 0 -} - -func (m *MDSelection) GetOwnerRoot() bool { - if m != nil { - return m.OwnerRoot - } - return false -} - -func (m *MDSelection) GetGroupRoot() bool { - if m != nil { - return m.GroupRoot - } - return false -} - -func (m *MDSelection) GetRegexpFilename() []byte { - if m != nil { - return m.RegexpFilename - } - return nil -} - -func (m *MDSelection) GetRegexpDirname() []byte { - if m != nil { - return m.RegexpDirname - } - return nil -} - -func (m *MDSelection) GetXattr() map[string][]byte { - if m != nil { - return m.Xattr - } - return nil -} - -type MDRequest struct { - Type TYPE `protobuf:"varint,1,opt,name=type,proto3,enum=eos.rpc.TYPE" json:"type,omitempty"` - Id *MDId `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Authkey string `protobuf:"bytes,3,opt,name=authkey,proto3" json:"authkey,omitempty"` - Role *RoleId `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"` - Selection *MDSelection `protobuf:"bytes,5,opt,name=selection,proto3" json:"selection,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MDRequest) Reset() { *m = MDRequest{} } -func (m *MDRequest) String() string { return proto.CompactTextString(m) } -func (*MDRequest) ProtoMessage() {} -func (*MDRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{14} -} - -func (m *MDRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MDRequest.Unmarshal(m, b) -} -func (m *MDRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MDRequest.Marshal(b, m, deterministic) -} -func (m *MDRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MDRequest.Merge(m, src) -} -func (m *MDRequest) XXX_Size() int { - return xxx_messageInfo_MDRequest.Size(m) -} -func (m *MDRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MDRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_MDRequest proto.InternalMessageInfo - -func (m *MDRequest) GetType() TYPE { - if m != nil { - return m.Type - } - return TYPE_FILE -} - -func (m *MDRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *MDRequest) GetAuthkey() string { - if m != nil { - return m.Authkey - } - return "" -} - -func (m *MDRequest) GetRole() *RoleId { - if m != nil { - return m.Role - } - return nil -} - -func (m *MDRequest) GetSelection() *MDSelection { - if m != nil { - return m.Selection - } - return nil -} - -type MDResponse struct { - Type TYPE `protobuf:"varint,1,opt,name=type,proto3,enum=eos.rpc.TYPE" json:"type,omitempty"` - Fmd *FileMdProto `protobuf:"bytes,2,opt,name=fmd,proto3" json:"fmd,omitempty"` - Cmd *ContainerMdProto `protobuf:"bytes,3,opt,name=cmd,proto3" json:"cmd,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MDResponse) Reset() { *m = MDResponse{} } -func (m *MDResponse) String() string { return proto.CompactTextString(m) } -func (*MDResponse) ProtoMessage() {} -func (*MDResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{15} -} - -func (m *MDResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MDResponse.Unmarshal(m, b) -} -func (m *MDResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MDResponse.Marshal(b, m, deterministic) -} -func (m *MDResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MDResponse.Merge(m, src) -} -func (m *MDResponse) XXX_Size() int { - return xxx_messageInfo_MDResponse.Size(m) -} -func (m *MDResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MDResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MDResponse proto.InternalMessageInfo - -func (m *MDResponse) GetType() TYPE { - if m != nil { - return m.Type - } - return TYPE_FILE -} - -func (m *MDResponse) GetFmd() *FileMdProto { - if m != nil { - return m.Fmd - } - return nil -} - -func (m *MDResponse) GetCmd() *ContainerMdProto { - if m != nil { - return m.Cmd - } - return nil -} - -type FindRequest struct { - Type TYPE `protobuf:"varint,1,opt,name=type,proto3,enum=eos.rpc.TYPE" json:"type,omitempty"` - Id *MDId `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Role *RoleId `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"` - Authkey string `protobuf:"bytes,4,opt,name=authkey,proto3" json:"authkey,omitempty"` - Maxdepth uint64 `protobuf:"varint,5,opt,name=maxdepth,proto3" json:"maxdepth,omitempty"` - Selection *MDSelection `protobuf:"bytes,6,opt,name=selection,proto3" json:"selection,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FindRequest) Reset() { *m = FindRequest{} } -func (m *FindRequest) String() string { return proto.CompactTextString(m) } -func (*FindRequest) ProtoMessage() {} -func (*FindRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{16} -} - -func (m *FindRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FindRequest.Unmarshal(m, b) -} -func (m *FindRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FindRequest.Marshal(b, m, deterministic) -} -func (m *FindRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_FindRequest.Merge(m, src) -} -func (m *FindRequest) XXX_Size() int { - return xxx_messageInfo_FindRequest.Size(m) -} -func (m *FindRequest) XXX_DiscardUnknown() { - xxx_messageInfo_FindRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_FindRequest proto.InternalMessageInfo - -func (m *FindRequest) GetType() TYPE { - if m != nil { - return m.Type - } - return TYPE_FILE -} - -func (m *FindRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *FindRequest) GetRole() *RoleId { - if m != nil { - return m.Role - } - return nil -} - -func (m *FindRequest) GetAuthkey() string { - if m != nil { - return m.Authkey - } - return "" -} - -func (m *FindRequest) GetMaxdepth() uint64 { - if m != nil { - return m.Maxdepth - } - return 0 -} - -func (m *FindRequest) GetSelection() *MDSelection { - if m != nil { - return m.Selection - } - return nil -} - -type ShareAuth struct { - Prot string `protobuf:"bytes,1,opt,name=prot,proto3" json:"prot,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Host string `protobuf:"bytes,3,opt,name=host,proto3" json:"host,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ShareAuth) Reset() { *m = ShareAuth{} } -func (m *ShareAuth) String() string { return proto.CompactTextString(m) } -func (*ShareAuth) ProtoMessage() {} -func (*ShareAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{17} -} - -func (m *ShareAuth) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ShareAuth.Unmarshal(m, b) -} -func (m *ShareAuth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ShareAuth.Marshal(b, m, deterministic) -} -func (m *ShareAuth) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShareAuth.Merge(m, src) -} -func (m *ShareAuth) XXX_Size() int { - return xxx_messageInfo_ShareAuth.Size(m) -} -func (m *ShareAuth) XXX_DiscardUnknown() { - xxx_messageInfo_ShareAuth.DiscardUnknown(m) -} - -var xxx_messageInfo_ShareAuth proto.InternalMessageInfo - -func (m *ShareAuth) GetProt() string { - if m != nil { - return m.Prot - } - return "" -} - -func (m *ShareAuth) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ShareAuth) GetHost() string { - if m != nil { - return m.Host - } - return "" -} - -type ShareProto struct { - Permission string `protobuf:"bytes,1,opt,name=permission,proto3" json:"permission,omitempty"` - Expires uint64 `protobuf:"varint,2,opt,name=expires,proto3" json:"expires,omitempty"` - Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` - Group string `protobuf:"bytes,4,opt,name=group,proto3" json:"group,omitempty"` - Generation uint64 `protobuf:"varint,5,opt,name=generation,proto3" json:"generation,omitempty"` - Path string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"` - Allowtree bool `protobuf:"varint,7,opt,name=allowtree,proto3" json:"allowtree,omitempty"` - Vtoken string `protobuf:"bytes,8,opt,name=vtoken,proto3" json:"vtoken,omitempty"` - Origins []*ShareAuth `protobuf:"bytes,9,rep,name=origins,proto3" json:"origins,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ShareProto) Reset() { *m = ShareProto{} } -func (m *ShareProto) String() string { return proto.CompactTextString(m) } -func (*ShareProto) ProtoMessage() {} -func (*ShareProto) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{18} -} - -func (m *ShareProto) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ShareProto.Unmarshal(m, b) -} -func (m *ShareProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ShareProto.Marshal(b, m, deterministic) -} -func (m *ShareProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShareProto.Merge(m, src) -} -func (m *ShareProto) XXX_Size() int { - return xxx_messageInfo_ShareProto.Size(m) -} -func (m *ShareProto) XXX_DiscardUnknown() { - xxx_messageInfo_ShareProto.DiscardUnknown(m) -} - -var xxx_messageInfo_ShareProto proto.InternalMessageInfo - -func (m *ShareProto) GetPermission() string { - if m != nil { - return m.Permission - } - return "" -} - -func (m *ShareProto) GetExpires() uint64 { - if m != nil { - return m.Expires - } - return 0 -} - -func (m *ShareProto) GetOwner() string { - if m != nil { - return m.Owner - } - return "" -} - -func (m *ShareProto) GetGroup() string { - if m != nil { - return m.Group - } - return "" -} - -func (m *ShareProto) GetGeneration() uint64 { - if m != nil { - return m.Generation - } - return 0 -} - -func (m *ShareProto) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *ShareProto) GetAllowtree() bool { - if m != nil { - return m.Allowtree - } - return false -} - -func (m *ShareProto) GetVtoken() string { - if m != nil { - return m.Vtoken - } - return "" -} - -func (m *ShareProto) GetOrigins() []*ShareAuth { - if m != nil { - return m.Origins - } - return nil -} - -type ShareToken struct { - Token *ShareProto `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` - Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - Serialized []byte `protobuf:"bytes,3,opt,name=serialized,proto3" json:"serialized,omitempty"` - Seed int32 `protobuf:"varint,4,opt,name=seed,proto3" json:"seed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ShareToken) Reset() { *m = ShareToken{} } -func (m *ShareToken) String() string { return proto.CompactTextString(m) } -func (*ShareToken) ProtoMessage() {} -func (*ShareToken) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{19} -} - -func (m *ShareToken) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ShareToken.Unmarshal(m, b) -} -func (m *ShareToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ShareToken.Marshal(b, m, deterministic) -} -func (m *ShareToken) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShareToken.Merge(m, src) -} -func (m *ShareToken) XXX_Size() int { - return xxx_messageInfo_ShareToken.Size(m) -} -func (m *ShareToken) XXX_DiscardUnknown() { - xxx_messageInfo_ShareToken.DiscardUnknown(m) -} - -var xxx_messageInfo_ShareToken proto.InternalMessageInfo - -func (m *ShareToken) GetToken() *ShareProto { - if m != nil { - return m.Token - } - return nil -} - -func (m *ShareToken) GetSignature() []byte { - if m != nil { - return m.Signature - } - return nil -} - -func (m *ShareToken) GetSerialized() []byte { - if m != nil { - return m.Serialized - } - return nil -} - -func (m *ShareToken) GetSeed() int32 { - if m != nil { - return m.Seed - } - return 0 -} - -type NSRequest struct { - Authkey string `protobuf:"bytes,1,opt,name=authkey,proto3" json:"authkey,omitempty"` - Role *RoleId `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` - // Actual request data object - // - // Types that are valid to be assigned to Command: - // - // *NSRequest_Mkdir - // *NSRequest_Rmdir - // *NSRequest_Touch - // *NSRequest_Unlink - // *NSRequest_Rm - // *NSRequest_Rename - // *NSRequest_Symlink - // *NSRequest_Version - // *NSRequest_Recycle - // *NSRequest_Xattr - // *NSRequest_Chown - // *NSRequest_Chmod - // *NSRequest_Acl - // *NSRequest_Token - // *NSRequest_Quota - // *NSRequest_Share - Command isNSRequest_Command `protobuf_oneof:"command"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest) Reset() { *m = NSRequest{} } -func (m *NSRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest) ProtoMessage() {} -func (*NSRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20} -} - -func (m *NSRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest.Unmarshal(m, b) -} -func (m *NSRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest.Merge(m, src) -} -func (m *NSRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest.Size(m) -} -func (m *NSRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest proto.InternalMessageInfo - -func (m *NSRequest) GetAuthkey() string { - if m != nil { - return m.Authkey - } - return "" -} - -func (m *NSRequest) GetRole() *RoleId { - if m != nil { - return m.Role - } - return nil -} - -type isNSRequest_Command interface { - isNSRequest_Command() -} - -type NSRequest_Mkdir struct { - Mkdir *NSRequest_MkdirRequest `protobuf:"bytes,21,opt,name=mkdir,proto3,oneof"` -} - -type NSRequest_Rmdir struct { - Rmdir *NSRequest_RmdirRequest `protobuf:"bytes,22,opt,name=rmdir,proto3,oneof"` -} - -type NSRequest_Touch struct { - Touch *NSRequest_TouchRequest `protobuf:"bytes,23,opt,name=touch,proto3,oneof"` -} - -type NSRequest_Unlink struct { - Unlink *NSRequest_UnlinkRequest `protobuf:"bytes,24,opt,name=unlink,proto3,oneof"` -} - -type NSRequest_Rm struct { - Rm *NSRequest_RmRequest `protobuf:"bytes,25,opt,name=rm,proto3,oneof"` -} - -type NSRequest_Rename struct { - Rename *NSRequest_RenameRequest `protobuf:"bytes,26,opt,name=rename,proto3,oneof"` -} - -type NSRequest_Symlink struct { - Symlink *NSRequest_SymlinkRequest `protobuf:"bytes,27,opt,name=symlink,proto3,oneof"` -} - -type NSRequest_Version struct { - Version *NSRequest_VersionRequest `protobuf:"bytes,28,opt,name=version,proto3,oneof"` -} - -type NSRequest_Recycle struct { - Recycle *NSRequest_RecycleRequest `protobuf:"bytes,29,opt,name=recycle,proto3,oneof"` -} - -type NSRequest_Xattr struct { - Xattr *NSRequest_SetXAttrRequest `protobuf:"bytes,30,opt,name=xattr,proto3,oneof"` -} - -type NSRequest_Chown struct { - Chown *NSRequest_ChownRequest `protobuf:"bytes,31,opt,name=chown,proto3,oneof"` -} - -type NSRequest_Chmod struct { - Chmod *NSRequest_ChmodRequest `protobuf:"bytes,32,opt,name=chmod,proto3,oneof"` -} - -type NSRequest_Acl struct { - Acl *NSRequest_AclRequest `protobuf:"bytes,33,opt,name=acl,proto3,oneof"` -} - -type NSRequest_Token struct { - Token *NSRequest_TokenRequest `protobuf:"bytes,34,opt,name=token,proto3,oneof"` -} - -type NSRequest_Quota struct { - Quota *NSRequest_QuotaRequest `protobuf:"bytes,35,opt,name=quota,proto3,oneof"` -} - -type NSRequest_Share struct { - Share *NSRequest_ShareRequest `protobuf:"bytes,36,opt,name=share,proto3,oneof"` -} - -func (*NSRequest_Mkdir) isNSRequest_Command() {} - -func (*NSRequest_Rmdir) isNSRequest_Command() {} - -func (*NSRequest_Touch) isNSRequest_Command() {} - -func (*NSRequest_Unlink) isNSRequest_Command() {} - -func (*NSRequest_Rm) isNSRequest_Command() {} - -func (*NSRequest_Rename) isNSRequest_Command() {} - -func (*NSRequest_Symlink) isNSRequest_Command() {} - -func (*NSRequest_Version) isNSRequest_Command() {} - -func (*NSRequest_Recycle) isNSRequest_Command() {} - -func (*NSRequest_Xattr) isNSRequest_Command() {} - -func (*NSRequest_Chown) isNSRequest_Command() {} - -func (*NSRequest_Chmod) isNSRequest_Command() {} - -func (*NSRequest_Acl) isNSRequest_Command() {} - -func (*NSRequest_Token) isNSRequest_Command() {} - -func (*NSRequest_Quota) isNSRequest_Command() {} - -func (*NSRequest_Share) isNSRequest_Command() {} - -func (m *NSRequest) GetCommand() isNSRequest_Command { - if m != nil { - return m.Command - } - return nil -} - -func (m *NSRequest) GetMkdir() *NSRequest_MkdirRequest { - if x, ok := m.GetCommand().(*NSRequest_Mkdir); ok { - return x.Mkdir - } - return nil -} - -func (m *NSRequest) GetRmdir() *NSRequest_RmdirRequest { - if x, ok := m.GetCommand().(*NSRequest_Rmdir); ok { - return x.Rmdir - } - return nil -} - -func (m *NSRequest) GetTouch() *NSRequest_TouchRequest { - if x, ok := m.GetCommand().(*NSRequest_Touch); ok { - return x.Touch - } - return nil -} - -func (m *NSRequest) GetUnlink() *NSRequest_UnlinkRequest { - if x, ok := m.GetCommand().(*NSRequest_Unlink); ok { - return x.Unlink - } - return nil -} - -func (m *NSRequest) GetRm() *NSRequest_RmRequest { - if x, ok := m.GetCommand().(*NSRequest_Rm); ok { - return x.Rm - } - return nil -} - -func (m *NSRequest) GetRename() *NSRequest_RenameRequest { - if x, ok := m.GetCommand().(*NSRequest_Rename); ok { - return x.Rename - } - return nil -} - -func (m *NSRequest) GetSymlink() *NSRequest_SymlinkRequest { - if x, ok := m.GetCommand().(*NSRequest_Symlink); ok { - return x.Symlink - } - return nil -} - -func (m *NSRequest) GetVersion() *NSRequest_VersionRequest { - if x, ok := m.GetCommand().(*NSRequest_Version); ok { - return x.Version - } - return nil -} - -func (m *NSRequest) GetRecycle() *NSRequest_RecycleRequest { - if x, ok := m.GetCommand().(*NSRequest_Recycle); ok { - return x.Recycle - } - return nil -} - -func (m *NSRequest) GetXattr() *NSRequest_SetXAttrRequest { - if x, ok := m.GetCommand().(*NSRequest_Xattr); ok { - return x.Xattr - } - return nil -} - -func (m *NSRequest) GetChown() *NSRequest_ChownRequest { - if x, ok := m.GetCommand().(*NSRequest_Chown); ok { - return x.Chown - } - return nil -} - -func (m *NSRequest) GetChmod() *NSRequest_ChmodRequest { - if x, ok := m.GetCommand().(*NSRequest_Chmod); ok { - return x.Chmod - } - return nil -} - -func (m *NSRequest) GetAcl() *NSRequest_AclRequest { - if x, ok := m.GetCommand().(*NSRequest_Acl); ok { - return x.Acl - } - return nil -} - -func (m *NSRequest) GetToken() *NSRequest_TokenRequest { - if x, ok := m.GetCommand().(*NSRequest_Token); ok { - return x.Token - } - return nil -} - -func (m *NSRequest) GetQuota() *NSRequest_QuotaRequest { - if x, ok := m.GetCommand().(*NSRequest_Quota); ok { - return x.Quota - } - return nil -} - -func (m *NSRequest) GetShare() *NSRequest_ShareRequest { - if x, ok := m.GetCommand().(*NSRequest_Share); ok { - return x.Share - } - return nil -} - -// XXX_OneofWrappers is for the internal use of the proto package. -func (*NSRequest) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*NSRequest_Mkdir)(nil), - (*NSRequest_Rmdir)(nil), - (*NSRequest_Touch)(nil), - (*NSRequest_Unlink)(nil), - (*NSRequest_Rm)(nil), - (*NSRequest_Rename)(nil), - (*NSRequest_Symlink)(nil), - (*NSRequest_Version)(nil), - (*NSRequest_Recycle)(nil), - (*NSRequest_Xattr)(nil), - (*NSRequest_Chown)(nil), - (*NSRequest_Chmod)(nil), - (*NSRequest_Acl)(nil), - (*NSRequest_Token)(nil), - (*NSRequest_Quota)(nil), - (*NSRequest_Share)(nil), - } -} - -type NSRequest_MkdirRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty"` - Mode int64 `protobuf:"varint,3,opt,name=mode,proto3" json:"mode,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_MkdirRequest) Reset() { *m = NSRequest_MkdirRequest{} } -func (m *NSRequest_MkdirRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_MkdirRequest) ProtoMessage() {} -func (*NSRequest_MkdirRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 0} -} - -func (m *NSRequest_MkdirRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_MkdirRequest.Unmarshal(m, b) -} -func (m *NSRequest_MkdirRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_MkdirRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_MkdirRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_MkdirRequest.Merge(m, src) -} -func (m *NSRequest_MkdirRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_MkdirRequest.Size(m) -} -func (m *NSRequest_MkdirRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_MkdirRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_MkdirRequest proto.InternalMessageInfo - -func (m *NSRequest_MkdirRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_MkdirRequest) GetRecursive() bool { - if m != nil { - return m.Recursive - } - return false -} - -func (m *NSRequest_MkdirRequest) GetMode() int64 { - if m != nil { - return m.Mode - } - return 0 -} - -type NSRequest_RmdirRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_RmdirRequest) Reset() { *m = NSRequest_RmdirRequest{} } -func (m *NSRequest_RmdirRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_RmdirRequest) ProtoMessage() {} -func (*NSRequest_RmdirRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 1} -} - -func (m *NSRequest_RmdirRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_RmdirRequest.Unmarshal(m, b) -} -func (m *NSRequest_RmdirRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_RmdirRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_RmdirRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_RmdirRequest.Merge(m, src) -} -func (m *NSRequest_RmdirRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_RmdirRequest.Size(m) -} -func (m *NSRequest_RmdirRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_RmdirRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_RmdirRequest proto.InternalMessageInfo - -func (m *NSRequest_RmdirRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -type NSRequest_TouchRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_TouchRequest) Reset() { *m = NSRequest_TouchRequest{} } -func (m *NSRequest_TouchRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_TouchRequest) ProtoMessage() {} -func (*NSRequest_TouchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 2} -} - -func (m *NSRequest_TouchRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_TouchRequest.Unmarshal(m, b) -} -func (m *NSRequest_TouchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_TouchRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_TouchRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_TouchRequest.Merge(m, src) -} -func (m *NSRequest_TouchRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_TouchRequest.Size(m) -} -func (m *NSRequest_TouchRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_TouchRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_TouchRequest proto.InternalMessageInfo - -func (m *NSRequest_TouchRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -type NSRequest_UnlinkRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Norecycle bool `protobuf:"varint,3,opt,name=norecycle,proto3" json:"norecycle,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_UnlinkRequest) Reset() { *m = NSRequest_UnlinkRequest{} } -func (m *NSRequest_UnlinkRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_UnlinkRequest) ProtoMessage() {} -func (*NSRequest_UnlinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 3} -} - -func (m *NSRequest_UnlinkRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_UnlinkRequest.Unmarshal(m, b) -} -func (m *NSRequest_UnlinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_UnlinkRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_UnlinkRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_UnlinkRequest.Merge(m, src) -} -func (m *NSRequest_UnlinkRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_UnlinkRequest.Size(m) -} -func (m *NSRequest_UnlinkRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_UnlinkRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_UnlinkRequest proto.InternalMessageInfo - -func (m *NSRequest_UnlinkRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_UnlinkRequest) GetNorecycle() bool { - if m != nil { - return m.Norecycle - } - return false -} - -type NSRequest_RmRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty"` - Norecycle bool `protobuf:"varint,3,opt,name=norecycle,proto3" json:"norecycle,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_RmRequest) Reset() { *m = NSRequest_RmRequest{} } -func (m *NSRequest_RmRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_RmRequest) ProtoMessage() {} -func (*NSRequest_RmRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 4} -} - -func (m *NSRequest_RmRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_RmRequest.Unmarshal(m, b) -} -func (m *NSRequest_RmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_RmRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_RmRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_RmRequest.Merge(m, src) -} -func (m *NSRequest_RmRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_RmRequest.Size(m) -} -func (m *NSRequest_RmRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_RmRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_RmRequest proto.InternalMessageInfo - -func (m *NSRequest_RmRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_RmRequest) GetRecursive() bool { - if m != nil { - return m.Recursive - } - return false -} - -func (m *NSRequest_RmRequest) GetNorecycle() bool { - if m != nil { - return m.Norecycle - } - return false -} - -type NSRequest_RenameRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Target []byte `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_RenameRequest) Reset() { *m = NSRequest_RenameRequest{} } -func (m *NSRequest_RenameRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_RenameRequest) ProtoMessage() {} -func (*NSRequest_RenameRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 5} -} - -func (m *NSRequest_RenameRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_RenameRequest.Unmarshal(m, b) -} -func (m *NSRequest_RenameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_RenameRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_RenameRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_RenameRequest.Merge(m, src) -} -func (m *NSRequest_RenameRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_RenameRequest.Size(m) -} -func (m *NSRequest_RenameRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_RenameRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_RenameRequest proto.InternalMessageInfo - -func (m *NSRequest_RenameRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_RenameRequest) GetTarget() []byte { - if m != nil { - return m.Target - } - return nil -} - -type NSRequest_SymlinkRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Target []byte `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_SymlinkRequest) Reset() { *m = NSRequest_SymlinkRequest{} } -func (m *NSRequest_SymlinkRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_SymlinkRequest) ProtoMessage() {} -func (*NSRequest_SymlinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 6} -} - -func (m *NSRequest_SymlinkRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_SymlinkRequest.Unmarshal(m, b) -} -func (m *NSRequest_SymlinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_SymlinkRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_SymlinkRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_SymlinkRequest.Merge(m, src) -} -func (m *NSRequest_SymlinkRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_SymlinkRequest.Size(m) -} -func (m *NSRequest_SymlinkRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_SymlinkRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_SymlinkRequest proto.InternalMessageInfo - -func (m *NSRequest_SymlinkRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_SymlinkRequest) GetTarget() []byte { - if m != nil { - return m.Target - } - return nil -} - -type NSRequest_VersionRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Cmd NSRequest_VersionRequest_VERSION_CMD `protobuf:"varint,2,opt,name=cmd,proto3,enum=eos.rpc.NSRequest_VersionRequest_VERSION_CMD" json:"cmd,omitempty"` - Maxversion int32 `protobuf:"varint,3,opt,name=maxversion,proto3" json:"maxversion,omitempty"` - Grabversion string `protobuf:"bytes,4,opt,name=grabversion,proto3" json:"grabversion,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_VersionRequest) Reset() { *m = NSRequest_VersionRequest{} } -func (m *NSRequest_VersionRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_VersionRequest) ProtoMessage() {} -func (*NSRequest_VersionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 7} -} - -func (m *NSRequest_VersionRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_VersionRequest.Unmarshal(m, b) -} -func (m *NSRequest_VersionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_VersionRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_VersionRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_VersionRequest.Merge(m, src) -} -func (m *NSRequest_VersionRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_VersionRequest.Size(m) -} -func (m *NSRequest_VersionRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_VersionRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_VersionRequest proto.InternalMessageInfo - -func (m *NSRequest_VersionRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_VersionRequest) GetCmd() NSRequest_VersionRequest_VERSION_CMD { - if m != nil { - return m.Cmd - } - return NSRequest_VersionRequest_CREATE -} - -func (m *NSRequest_VersionRequest) GetMaxversion() int32 { - if m != nil { - return m.Maxversion - } - return 0 -} - -func (m *NSRequest_VersionRequest) GetGrabversion() string { - if m != nil { - return m.Grabversion - } - return "" -} - -type NSRequest_RecycleRequest struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Cmd NSRequest_RecycleRequest_RECYCLE_CMD `protobuf:"varint,2,opt,name=cmd,proto3,enum=eos.rpc.NSRequest_RecycleRequest_RECYCLE_CMD" json:"cmd,omitempty"` - Restoreflag *NSRequest_RecycleRequest_RestoreFlags `protobuf:"bytes,3,opt,name=restoreflag,proto3" json:"restoreflag,omitempty"` - Purgedate *NSRequest_RecycleRequest_PurgeDate `protobuf:"bytes,4,opt,name=purgedate,proto3" json:"purgedate,omitempty"` - Listflag *NSRequest_RecycleRequest_ListFlags `protobuf:"bytes,5,opt,name=listflag,proto3" json:"listflag,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_RecycleRequest) Reset() { *m = NSRequest_RecycleRequest{} } -func (m *NSRequest_RecycleRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_RecycleRequest) ProtoMessage() {} -func (*NSRequest_RecycleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 8} -} - -func (m *NSRequest_RecycleRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_RecycleRequest.Unmarshal(m, b) -} -func (m *NSRequest_RecycleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_RecycleRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_RecycleRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_RecycleRequest.Merge(m, src) -} -func (m *NSRequest_RecycleRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_RecycleRequest.Size(m) -} -func (m *NSRequest_RecycleRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_RecycleRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_RecycleRequest proto.InternalMessageInfo - -func (m *NSRequest_RecycleRequest) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *NSRequest_RecycleRequest) GetCmd() NSRequest_RecycleRequest_RECYCLE_CMD { - if m != nil { - return m.Cmd - } - return NSRequest_RecycleRequest_RESTORE -} - -func (m *NSRequest_RecycleRequest) GetRestoreflag() *NSRequest_RecycleRequest_RestoreFlags { - if m != nil { - return m.Restoreflag - } - return nil -} - -func (m *NSRequest_RecycleRequest) GetPurgedate() *NSRequest_RecycleRequest_PurgeDate { - if m != nil { - return m.Purgedate - } - return nil -} - -func (m *NSRequest_RecycleRequest) GetListflag() *NSRequest_RecycleRequest_ListFlags { - if m != nil { - return m.Listflag - } - return nil -} - -type NSRequest_RecycleRequest_RestoreFlags struct { - Force bool `protobuf:"varint,1,opt,name=force,proto3" json:"force,omitempty"` - Mkpath bool `protobuf:"varint,2,opt,name=mkpath,proto3" json:"mkpath,omitempty"` - Versions bool `protobuf:"varint,3,opt,name=versions,proto3" json:"versions,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_RecycleRequest_RestoreFlags) Reset() { *m = NSRequest_RecycleRequest_RestoreFlags{} } -func (m *NSRequest_RecycleRequest_RestoreFlags) String() string { return proto.CompactTextString(m) } -func (*NSRequest_RecycleRequest_RestoreFlags) ProtoMessage() {} -func (*NSRequest_RecycleRequest_RestoreFlags) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 8, 0} -} - -func (m *NSRequest_RecycleRequest_RestoreFlags) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_RecycleRequest_RestoreFlags.Unmarshal(m, b) -} -func (m *NSRequest_RecycleRequest_RestoreFlags) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_RecycleRequest_RestoreFlags.Marshal(b, m, deterministic) -} -func (m *NSRequest_RecycleRequest_RestoreFlags) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_RecycleRequest_RestoreFlags.Merge(m, src) -} -func (m *NSRequest_RecycleRequest_RestoreFlags) XXX_Size() int { - return xxx_messageInfo_NSRequest_RecycleRequest_RestoreFlags.Size(m) -} -func (m *NSRequest_RecycleRequest_RestoreFlags) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_RecycleRequest_RestoreFlags.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_RecycleRequest_RestoreFlags proto.InternalMessageInfo - -func (m *NSRequest_RecycleRequest_RestoreFlags) GetForce() bool { - if m != nil { - return m.Force - } - return false -} - -func (m *NSRequest_RecycleRequest_RestoreFlags) GetMkpath() bool { - if m != nil { - return m.Mkpath - } - return false -} - -func (m *NSRequest_RecycleRequest_RestoreFlags) GetVersions() bool { - if m != nil { - return m.Versions - } - return false -} - -type NSRequest_RecycleRequest_PurgeDate struct { - Year int32 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"` - Month int32 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"` - Day int32 `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_RecycleRequest_PurgeDate) Reset() { *m = NSRequest_RecycleRequest_PurgeDate{} } -func (m *NSRequest_RecycleRequest_PurgeDate) String() string { return proto.CompactTextString(m) } -func (*NSRequest_RecycleRequest_PurgeDate) ProtoMessage() {} -func (*NSRequest_RecycleRequest_PurgeDate) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 8, 1} -} - -func (m *NSRequest_RecycleRequest_PurgeDate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_RecycleRequest_PurgeDate.Unmarshal(m, b) -} -func (m *NSRequest_RecycleRequest_PurgeDate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_RecycleRequest_PurgeDate.Marshal(b, m, deterministic) -} -func (m *NSRequest_RecycleRequest_PurgeDate) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_RecycleRequest_PurgeDate.Merge(m, src) -} -func (m *NSRequest_RecycleRequest_PurgeDate) XXX_Size() int { - return xxx_messageInfo_NSRequest_RecycleRequest_PurgeDate.Size(m) -} -func (m *NSRequest_RecycleRequest_PurgeDate) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_RecycleRequest_PurgeDate.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_RecycleRequest_PurgeDate proto.InternalMessageInfo - -func (m *NSRequest_RecycleRequest_PurgeDate) GetYear() int32 { - if m != nil { - return m.Year - } - return 0 -} - -func (m *NSRequest_RecycleRequest_PurgeDate) GetMonth() int32 { - if m != nil { - return m.Month - } - return 0 -} - -func (m *NSRequest_RecycleRequest_PurgeDate) GetDay() int32 { - if m != nil { - return m.Day - } - return 0 -} - -type NSRequest_RecycleRequest_ListFlags struct { - Maxentries int32 `protobuf:"varint,1,opt,name=maxentries,proto3" json:"maxentries,omitempty"` - Year int32 `protobuf:"varint,2,opt,name=year,proto3" json:"year,omitempty"` - Month int32 `protobuf:"varint,3,opt,name=month,proto3" json:"month,omitempty"` - Day int32 `protobuf:"varint,4,opt,name=day,proto3" json:"day,omitempty"` - Index int32 `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_RecycleRequest_ListFlags) Reset() { *m = NSRequest_RecycleRequest_ListFlags{} } -func (m *NSRequest_RecycleRequest_ListFlags) String() string { return proto.CompactTextString(m) } -func (*NSRequest_RecycleRequest_ListFlags) ProtoMessage() {} -func (*NSRequest_RecycleRequest_ListFlags) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 8, 2} -} - -func (m *NSRequest_RecycleRequest_ListFlags) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_RecycleRequest_ListFlags.Unmarshal(m, b) -} -func (m *NSRequest_RecycleRequest_ListFlags) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_RecycleRequest_ListFlags.Marshal(b, m, deterministic) -} -func (m *NSRequest_RecycleRequest_ListFlags) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_RecycleRequest_ListFlags.Merge(m, src) -} -func (m *NSRequest_RecycleRequest_ListFlags) XXX_Size() int { - return xxx_messageInfo_NSRequest_RecycleRequest_ListFlags.Size(m) -} -func (m *NSRequest_RecycleRequest_ListFlags) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_RecycleRequest_ListFlags.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_RecycleRequest_ListFlags proto.InternalMessageInfo - -func (m *NSRequest_RecycleRequest_ListFlags) GetMaxentries() int32 { - if m != nil { - return m.Maxentries - } - return 0 -} - -func (m *NSRequest_RecycleRequest_ListFlags) GetYear() int32 { - if m != nil { - return m.Year - } - return 0 -} - -func (m *NSRequest_RecycleRequest_ListFlags) GetMonth() int32 { - if m != nil { - return m.Month - } - return 0 -} - -func (m *NSRequest_RecycleRequest_ListFlags) GetDay() int32 { - if m != nil { - return m.Day - } - return 0 -} - -func (m *NSRequest_RecycleRequest_ListFlags) GetIndex() int32 { - if m != nil { - return m.Index - } - return 0 -} - -type NSRequest_SetXAttrRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Xattrs map[string][]byte `protobuf:"bytes,2,rep,name=xattrs,proto3" json:"xattrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Recursive bool `protobuf:"varint,3,opt,name=recursive,proto3" json:"recursive,omitempty"` - Keystodelete []string `protobuf:"bytes,4,rep,name=keystodelete,proto3" json:"keystodelete,omitempty"` - Create bool `protobuf:"varint,5,opt,name=create,proto3" json:"create,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_SetXAttrRequest) Reset() { *m = NSRequest_SetXAttrRequest{} } -func (m *NSRequest_SetXAttrRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_SetXAttrRequest) ProtoMessage() {} -func (*NSRequest_SetXAttrRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 9} -} - -func (m *NSRequest_SetXAttrRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_SetXAttrRequest.Unmarshal(m, b) -} -func (m *NSRequest_SetXAttrRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_SetXAttrRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_SetXAttrRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_SetXAttrRequest.Merge(m, src) -} -func (m *NSRequest_SetXAttrRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_SetXAttrRequest.Size(m) -} -func (m *NSRequest_SetXAttrRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_SetXAttrRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_SetXAttrRequest proto.InternalMessageInfo - -func (m *NSRequest_SetXAttrRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_SetXAttrRequest) GetXattrs() map[string][]byte { - if m != nil { - return m.Xattrs - } - return nil -} - -func (m *NSRequest_SetXAttrRequest) GetRecursive() bool { - if m != nil { - return m.Recursive - } - return false -} - -func (m *NSRequest_SetXAttrRequest) GetKeystodelete() []string { - if m != nil { - return m.Keystodelete - } - return nil -} - -func (m *NSRequest_SetXAttrRequest) GetCreate() bool { - if m != nil { - return m.Create - } - return false -} - -type NSRequest_ChownRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Owner *RoleId `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_ChownRequest) Reset() { *m = NSRequest_ChownRequest{} } -func (m *NSRequest_ChownRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_ChownRequest) ProtoMessage() {} -func (*NSRequest_ChownRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 10} -} - -func (m *NSRequest_ChownRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_ChownRequest.Unmarshal(m, b) -} -func (m *NSRequest_ChownRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_ChownRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_ChownRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_ChownRequest.Merge(m, src) -} -func (m *NSRequest_ChownRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_ChownRequest.Size(m) -} -func (m *NSRequest_ChownRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_ChownRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_ChownRequest proto.InternalMessageInfo - -func (m *NSRequest_ChownRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_ChownRequest) GetOwner() *RoleId { - if m != nil { - return m.Owner - } - return nil -} - -type NSRequest_ChmodRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Mode int64 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_ChmodRequest) Reset() { *m = NSRequest_ChmodRequest{} } -func (m *NSRequest_ChmodRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_ChmodRequest) ProtoMessage() {} -func (*NSRequest_ChmodRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 11} -} - -func (m *NSRequest_ChmodRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_ChmodRequest.Unmarshal(m, b) -} -func (m *NSRequest_ChmodRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_ChmodRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_ChmodRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_ChmodRequest.Merge(m, src) -} -func (m *NSRequest_ChmodRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_ChmodRequest.Size(m) -} -func (m *NSRequest_ChmodRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_ChmodRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_ChmodRequest proto.InternalMessageInfo - -func (m *NSRequest_ChmodRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_ChmodRequest) GetMode() int64 { - if m != nil { - return m.Mode - } - return 0 -} - -type NSRequest_AclRequest struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Cmd NSRequest_AclRequest_ACL_COMMAND `protobuf:"varint,2,opt,name=cmd,proto3,enum=eos.rpc.NSRequest_AclRequest_ACL_COMMAND" json:"cmd,omitempty"` - Recursive bool `protobuf:"varint,3,opt,name=recursive,proto3" json:"recursive,omitempty"` - Type NSRequest_AclRequest_ACL_TYPE `protobuf:"varint,4,opt,name=type,proto3,enum=eos.rpc.NSRequest_AclRequest_ACL_TYPE" json:"type,omitempty"` - Rule string `protobuf:"bytes,5,opt,name=rule,proto3" json:"rule,omitempty"` - Position uint32 `protobuf:"varint,6,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_AclRequest) Reset() { *m = NSRequest_AclRequest{} } -func (m *NSRequest_AclRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_AclRequest) ProtoMessage() {} -func (*NSRequest_AclRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 12} -} - -func (m *NSRequest_AclRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_AclRequest.Unmarshal(m, b) -} -func (m *NSRequest_AclRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_AclRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_AclRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_AclRequest.Merge(m, src) -} -func (m *NSRequest_AclRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_AclRequest.Size(m) -} -func (m *NSRequest_AclRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_AclRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_AclRequest proto.InternalMessageInfo - -func (m *NSRequest_AclRequest) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_AclRequest) GetCmd() NSRequest_AclRequest_ACL_COMMAND { - if m != nil { - return m.Cmd - } - return NSRequest_AclRequest_NONE -} - -func (m *NSRequest_AclRequest) GetRecursive() bool { - if m != nil { - return m.Recursive - } - return false -} - -func (m *NSRequest_AclRequest) GetType() NSRequest_AclRequest_ACL_TYPE { - if m != nil { - return m.Type - } - return NSRequest_AclRequest_USER_ACL -} - -func (m *NSRequest_AclRequest) GetRule() string { - if m != nil { - return m.Rule - } - return "" -} - -func (m *NSRequest_AclRequest) GetPosition() uint32 { - if m != nil { - return m.Position - } - return 0 -} - -type NSRequest_TokenRequest struct { - Token *ShareToken `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_TokenRequest) Reset() { *m = NSRequest_TokenRequest{} } -func (m *NSRequest_TokenRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_TokenRequest) ProtoMessage() {} -func (*NSRequest_TokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 13} -} - -func (m *NSRequest_TokenRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_TokenRequest.Unmarshal(m, b) -} -func (m *NSRequest_TokenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_TokenRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_TokenRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_TokenRequest.Merge(m, src) -} -func (m *NSRequest_TokenRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_TokenRequest.Size(m) -} -func (m *NSRequest_TokenRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_TokenRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_TokenRequest proto.InternalMessageInfo - -func (m *NSRequest_TokenRequest) GetToken() *ShareToken { - if m != nil { - return m.Token - } - return nil -} - -type NSRequest_QuotaRequest struct { - Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Id *RoleId `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Op QUOTAOP `protobuf:"varint,3,opt,name=op,proto3,enum=eos.rpc.QUOTAOP" json:"op,omitempty"` - Maxfiles uint64 `protobuf:"varint,4,opt,name=maxfiles,proto3" json:"maxfiles,omitempty"` - Maxbytes uint64 `protobuf:"varint,5,opt,name=maxbytes,proto3" json:"maxbytes,omitempty"` - Entry QUOTAENTRY `protobuf:"varint,6,opt,name=entry,proto3,enum=eos.rpc.QUOTAENTRY" json:"entry,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_QuotaRequest) Reset() { *m = NSRequest_QuotaRequest{} } -func (m *NSRequest_QuotaRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_QuotaRequest) ProtoMessage() {} -func (*NSRequest_QuotaRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 14} -} - -func (m *NSRequest_QuotaRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_QuotaRequest.Unmarshal(m, b) -} -func (m *NSRequest_QuotaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_QuotaRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_QuotaRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_QuotaRequest.Merge(m, src) -} -func (m *NSRequest_QuotaRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_QuotaRequest.Size(m) -} -func (m *NSRequest_QuotaRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_QuotaRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_QuotaRequest proto.InternalMessageInfo - -func (m *NSRequest_QuotaRequest) GetPath() []byte { - if m != nil { - return m.Path - } - return nil -} - -func (m *NSRequest_QuotaRequest) GetId() *RoleId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSRequest_QuotaRequest) GetOp() QUOTAOP { - if m != nil { - return m.Op - } - return QUOTAOP_GET -} - -func (m *NSRequest_QuotaRequest) GetMaxfiles() uint64 { - if m != nil { - return m.Maxfiles - } - return 0 -} - -func (m *NSRequest_QuotaRequest) GetMaxbytes() uint64 { - if m != nil { - return m.Maxbytes - } - return 0 -} - -func (m *NSRequest_QuotaRequest) GetEntry() QUOTAENTRY { - if m != nil { - return m.Entry - } - return QUOTAENTRY_NONE -} - -type NSRequest_ShareRequest struct { - // Types that are valid to be assigned to Subcmd: - // - // *NSRequest_ShareRequest_Ls - // *NSRequest_ShareRequest_Op - Subcmd isNSRequest_ShareRequest_Subcmd `protobuf_oneof:"subcmd"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_ShareRequest) Reset() { *m = NSRequest_ShareRequest{} } -func (m *NSRequest_ShareRequest) String() string { return proto.CompactTextString(m) } -func (*NSRequest_ShareRequest) ProtoMessage() {} -func (*NSRequest_ShareRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 15} -} - -func (m *NSRequest_ShareRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_ShareRequest.Unmarshal(m, b) -} -func (m *NSRequest_ShareRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_ShareRequest.Marshal(b, m, deterministic) -} -func (m *NSRequest_ShareRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_ShareRequest.Merge(m, src) -} -func (m *NSRequest_ShareRequest) XXX_Size() int { - return xxx_messageInfo_NSRequest_ShareRequest.Size(m) -} -func (m *NSRequest_ShareRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_ShareRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_ShareRequest proto.InternalMessageInfo - -type isNSRequest_ShareRequest_Subcmd interface { - isNSRequest_ShareRequest_Subcmd() -} - -type NSRequest_ShareRequest_Ls struct { - Ls *NSRequest_ShareRequest_LsShare `protobuf:"bytes,1,opt,name=ls,proto3,oneof"` -} - -type NSRequest_ShareRequest_Op struct { - Op *NSRequest_ShareRequest_OperateShare `protobuf:"bytes,2,opt,name=op,proto3,oneof"` -} - -func (*NSRequest_ShareRequest_Ls) isNSRequest_ShareRequest_Subcmd() {} - -func (*NSRequest_ShareRequest_Op) isNSRequest_ShareRequest_Subcmd() {} - -func (m *NSRequest_ShareRequest) GetSubcmd() isNSRequest_ShareRequest_Subcmd { - if m != nil { - return m.Subcmd - } - return nil -} - -func (m *NSRequest_ShareRequest) GetLs() *NSRequest_ShareRequest_LsShare { - if x, ok := m.GetSubcmd().(*NSRequest_ShareRequest_Ls); ok { - return x.Ls - } - return nil -} - -func (m *NSRequest_ShareRequest) GetOp() *NSRequest_ShareRequest_OperateShare { - if x, ok := m.GetSubcmd().(*NSRequest_ShareRequest_Op); ok { - return x.Op - } - return nil -} - -// XXX_OneofWrappers is for the internal use of the proto package. -func (*NSRequest_ShareRequest) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*NSRequest_ShareRequest_Ls)(nil), - (*NSRequest_ShareRequest_Op)(nil), - } -} - -type NSRequest_ShareRequest_LsShare struct { - Outformat NSRequest_ShareRequest_LsShare_OutFormat `protobuf:"varint,1,opt,name=outformat,proto3,enum=eos.rpc.NSRequest_ShareRequest_LsShare_OutFormat" json:"outformat,omitempty"` - Selection string `protobuf:"bytes,2,opt,name=selection,proto3" json:"selection,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_ShareRequest_LsShare) Reset() { *m = NSRequest_ShareRequest_LsShare{} } -func (m *NSRequest_ShareRequest_LsShare) String() string { return proto.CompactTextString(m) } -func (*NSRequest_ShareRequest_LsShare) ProtoMessage() {} -func (*NSRequest_ShareRequest_LsShare) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 15, 0} -} - -func (m *NSRequest_ShareRequest_LsShare) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_ShareRequest_LsShare.Unmarshal(m, b) -} -func (m *NSRequest_ShareRequest_LsShare) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_ShareRequest_LsShare.Marshal(b, m, deterministic) -} -func (m *NSRequest_ShareRequest_LsShare) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_ShareRequest_LsShare.Merge(m, src) -} -func (m *NSRequest_ShareRequest_LsShare) XXX_Size() int { - return xxx_messageInfo_NSRequest_ShareRequest_LsShare.Size(m) -} -func (m *NSRequest_ShareRequest_LsShare) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_ShareRequest_LsShare.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_ShareRequest_LsShare proto.InternalMessageInfo - -func (m *NSRequest_ShareRequest_LsShare) GetOutformat() NSRequest_ShareRequest_LsShare_OutFormat { - if m != nil { - return m.Outformat - } - return NSRequest_ShareRequest_LsShare_NONE -} - -func (m *NSRequest_ShareRequest_LsShare) GetSelection() string { - if m != nil { - return m.Selection - } - return "" -} - -type NSRequest_ShareRequest_OperateShare struct { - Op NSRequest_ShareRequest_OperateShare_Op `protobuf:"varint,1,opt,name=op,proto3,enum=eos.rpc.NSRequest_ShareRequest_OperateShare_Op" json:"op,omitempty"` - Share string `protobuf:"bytes,2,opt,name=share,proto3" json:"share,omitempty"` - Acl string `protobuf:"bytes,3,opt,name=acl,proto3" json:"acl,omitempty"` - Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"` - User string `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"` - Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSRequest_ShareRequest_OperateShare) Reset() { *m = NSRequest_ShareRequest_OperateShare{} } -func (m *NSRequest_ShareRequest_OperateShare) String() string { return proto.CompactTextString(m) } -func (*NSRequest_ShareRequest_OperateShare) ProtoMessage() {} -func (*NSRequest_ShareRequest_OperateShare) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{20, 15, 1} -} - -func (m *NSRequest_ShareRequest_OperateShare) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSRequest_ShareRequest_OperateShare.Unmarshal(m, b) -} -func (m *NSRequest_ShareRequest_OperateShare) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSRequest_ShareRequest_OperateShare.Marshal(b, m, deterministic) -} -func (m *NSRequest_ShareRequest_OperateShare) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSRequest_ShareRequest_OperateShare.Merge(m, src) -} -func (m *NSRequest_ShareRequest_OperateShare) XXX_Size() int { - return xxx_messageInfo_NSRequest_ShareRequest_OperateShare.Size(m) -} -func (m *NSRequest_ShareRequest_OperateShare) XXX_DiscardUnknown() { - xxx_messageInfo_NSRequest_ShareRequest_OperateShare.DiscardUnknown(m) -} - -var xxx_messageInfo_NSRequest_ShareRequest_OperateShare proto.InternalMessageInfo - -func (m *NSRequest_ShareRequest_OperateShare) GetOp() NSRequest_ShareRequest_OperateShare_Op { - if m != nil { - return m.Op - } - return NSRequest_ShareRequest_OperateShare_CREATE -} - -func (m *NSRequest_ShareRequest_OperateShare) GetShare() string { - if m != nil { - return m.Share - } - return "" -} - -func (m *NSRequest_ShareRequest_OperateShare) GetAcl() string { - if m != nil { - return m.Acl - } - return "" -} - -func (m *NSRequest_ShareRequest_OperateShare) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *NSRequest_ShareRequest_OperateShare) GetUser() string { - if m != nil { - return m.User - } - return "" -} - -func (m *NSRequest_ShareRequest_OperateShare) GetGroup() string { - if m != nil { - return m.Group - } - return "" -} - -type NSResponse struct { - Error *NSResponse_ErrorResponse `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` - Version *NSResponse_VersionResponse `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Recycle *NSResponse_RecycleResponse `protobuf:"bytes,3,opt,name=recycle,proto3" json:"recycle,omitempty"` - Acl *NSResponse_AclResponse `protobuf:"bytes,4,opt,name=acl,proto3" json:"acl,omitempty"` - Quota *NSResponse_QuotaResponse `protobuf:"bytes,5,opt,name=quota,proto3" json:"quota,omitempty"` - Share *NSResponse_ShareResponse `protobuf:"bytes,6,opt,name=share,proto3" json:"share,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse) Reset() { *m = NSResponse{} } -func (m *NSResponse) String() string { return proto.CompactTextString(m) } -func (*NSResponse) ProtoMessage() {} -func (*NSResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21} -} - -func (m *NSResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse.Unmarshal(m, b) -} -func (m *NSResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse.Marshal(b, m, deterministic) -} -func (m *NSResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse.Merge(m, src) -} -func (m *NSResponse) XXX_Size() int { - return xxx_messageInfo_NSResponse.Size(m) -} -func (m *NSResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse proto.InternalMessageInfo - -func (m *NSResponse) GetError() *NSResponse_ErrorResponse { - if m != nil { - return m.Error - } - return nil -} - -func (m *NSResponse) GetVersion() *NSResponse_VersionResponse { - if m != nil { - return m.Version - } - return nil -} - -func (m *NSResponse) GetRecycle() *NSResponse_RecycleResponse { - if m != nil { - return m.Recycle - } - return nil -} - -func (m *NSResponse) GetAcl() *NSResponse_AclResponse { - if m != nil { - return m.Acl - } - return nil -} - -func (m *NSResponse) GetQuota() *NSResponse_QuotaResponse { - if m != nil { - return m.Quota - } - return nil -} - -func (m *NSResponse) GetShare() *NSResponse_ShareResponse { - if m != nil { - return m.Share - } - return nil -} - -type NSResponse_ErrorResponse struct { - Code int64 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_ErrorResponse) Reset() { *m = NSResponse_ErrorResponse{} } -func (m *NSResponse_ErrorResponse) String() string { return proto.CompactTextString(m) } -func (*NSResponse_ErrorResponse) ProtoMessage() {} -func (*NSResponse_ErrorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 0} -} - -func (m *NSResponse_ErrorResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_ErrorResponse.Unmarshal(m, b) -} -func (m *NSResponse_ErrorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_ErrorResponse.Marshal(b, m, deterministic) -} -func (m *NSResponse_ErrorResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_ErrorResponse.Merge(m, src) -} -func (m *NSResponse_ErrorResponse) XXX_Size() int { - return xxx_messageInfo_NSResponse_ErrorResponse.Size(m) -} -func (m *NSResponse_ErrorResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_ErrorResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_ErrorResponse proto.InternalMessageInfo - -func (m *NSResponse_ErrorResponse) GetCode() int64 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *NSResponse_ErrorResponse) GetMsg() string { - if m != nil { - return m.Msg - } - return "" -} - -type NSResponse_VersionResponse struct { - Code int64 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - Versions []*NSResponse_VersionResponse_VersionInfo `protobuf:"bytes,3,rep,name=versions,proto3" json:"versions,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_VersionResponse) Reset() { *m = NSResponse_VersionResponse{} } -func (m *NSResponse_VersionResponse) String() string { return proto.CompactTextString(m) } -func (*NSResponse_VersionResponse) ProtoMessage() {} -func (*NSResponse_VersionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 1} -} - -func (m *NSResponse_VersionResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_VersionResponse.Unmarshal(m, b) -} -func (m *NSResponse_VersionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_VersionResponse.Marshal(b, m, deterministic) -} -func (m *NSResponse_VersionResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_VersionResponse.Merge(m, src) -} -func (m *NSResponse_VersionResponse) XXX_Size() int { - return xxx_messageInfo_NSResponse_VersionResponse.Size(m) -} -func (m *NSResponse_VersionResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_VersionResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_VersionResponse proto.InternalMessageInfo - -func (m *NSResponse_VersionResponse) GetCode() int64 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *NSResponse_VersionResponse) GetMsg() string { - if m != nil { - return m.Msg - } - return "" -} - -func (m *NSResponse_VersionResponse) GetVersions() []*NSResponse_VersionResponse_VersionInfo { - if m != nil { - return m.Versions - } - return nil -} - -type NSResponse_VersionResponse_VersionInfo struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Mtime *Time `protobuf:"bytes,2,opt,name=mtime,proto3" json:"mtime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_VersionResponse_VersionInfo) Reset() { - *m = NSResponse_VersionResponse_VersionInfo{} -} -func (m *NSResponse_VersionResponse_VersionInfo) String() string { return proto.CompactTextString(m) } -func (*NSResponse_VersionResponse_VersionInfo) ProtoMessage() {} -func (*NSResponse_VersionResponse_VersionInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 1, 0} -} - -func (m *NSResponse_VersionResponse_VersionInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_VersionResponse_VersionInfo.Unmarshal(m, b) -} -func (m *NSResponse_VersionResponse_VersionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_VersionResponse_VersionInfo.Marshal(b, m, deterministic) -} -func (m *NSResponse_VersionResponse_VersionInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_VersionResponse_VersionInfo.Merge(m, src) -} -func (m *NSResponse_VersionResponse_VersionInfo) XXX_Size() int { - return xxx_messageInfo_NSResponse_VersionResponse_VersionInfo.Size(m) -} -func (m *NSResponse_VersionResponse_VersionInfo) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_VersionResponse_VersionInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_VersionResponse_VersionInfo proto.InternalMessageInfo - -func (m *NSResponse_VersionResponse_VersionInfo) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSResponse_VersionResponse_VersionInfo) GetMtime() *Time { - if m != nil { - return m.Mtime - } - return nil -} - -type NSResponse_RecycleResponse struct { - Code int64 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - Recycles []*NSResponse_RecycleResponse_RecycleInfo `protobuf:"bytes,3,rep,name=recycles,proto3" json:"recycles,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_RecycleResponse) Reset() { *m = NSResponse_RecycleResponse{} } -func (m *NSResponse_RecycleResponse) String() string { return proto.CompactTextString(m) } -func (*NSResponse_RecycleResponse) ProtoMessage() {} -func (*NSResponse_RecycleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 2} -} - -func (m *NSResponse_RecycleResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_RecycleResponse.Unmarshal(m, b) -} -func (m *NSResponse_RecycleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_RecycleResponse.Marshal(b, m, deterministic) -} -func (m *NSResponse_RecycleResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_RecycleResponse.Merge(m, src) -} -func (m *NSResponse_RecycleResponse) XXX_Size() int { - return xxx_messageInfo_NSResponse_RecycleResponse.Size(m) -} -func (m *NSResponse_RecycleResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_RecycleResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_RecycleResponse proto.InternalMessageInfo - -func (m *NSResponse_RecycleResponse) GetCode() int64 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *NSResponse_RecycleResponse) GetMsg() string { - if m != nil { - return m.Msg - } - return "" -} - -func (m *NSResponse_RecycleResponse) GetRecycles() []*NSResponse_RecycleResponse_RecycleInfo { - if m != nil { - return m.Recycles - } - return nil -} - -type NSResponse_RecycleResponse_RecycleInfo struct { - Id *MDId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Owner *RoleId `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` - Dtime *Time `protobuf:"bytes,3,opt,name=dtime,proto3" json:"dtime,omitempty"` - Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` - Type NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE `protobuf:"varint,5,opt,name=type,proto3,enum=eos.rpc.NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE" json:"type,omitempty"` - Key string `protobuf:"bytes,6,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_RecycleResponse_RecycleInfo) Reset() { - *m = NSResponse_RecycleResponse_RecycleInfo{} -} -func (m *NSResponse_RecycleResponse_RecycleInfo) String() string { return proto.CompactTextString(m) } -func (*NSResponse_RecycleResponse_RecycleInfo) ProtoMessage() {} -func (*NSResponse_RecycleResponse_RecycleInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 2, 0} -} - -func (m *NSResponse_RecycleResponse_RecycleInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_RecycleResponse_RecycleInfo.Unmarshal(m, b) -} -func (m *NSResponse_RecycleResponse_RecycleInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_RecycleResponse_RecycleInfo.Marshal(b, m, deterministic) -} -func (m *NSResponse_RecycleResponse_RecycleInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_RecycleResponse_RecycleInfo.Merge(m, src) -} -func (m *NSResponse_RecycleResponse_RecycleInfo) XXX_Size() int { - return xxx_messageInfo_NSResponse_RecycleResponse_RecycleInfo.Size(m) -} -func (m *NSResponse_RecycleResponse_RecycleInfo) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_RecycleResponse_RecycleInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_RecycleResponse_RecycleInfo proto.InternalMessageInfo - -func (m *NSResponse_RecycleResponse_RecycleInfo) GetId() *MDId { - if m != nil { - return m.Id - } - return nil -} - -func (m *NSResponse_RecycleResponse_RecycleInfo) GetOwner() *RoleId { - if m != nil { - return m.Owner - } - return nil -} - -func (m *NSResponse_RecycleResponse_RecycleInfo) GetDtime() *Time { - if m != nil { - return m.Dtime - } - return nil -} - -func (m *NSResponse_RecycleResponse_RecycleInfo) GetSize() uint64 { - if m != nil { - return m.Size - } - return 0 -} - -func (m *NSResponse_RecycleResponse_RecycleInfo) GetType() NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE { - if m != nil { - return m.Type - } - return NSResponse_RecycleResponse_RecycleInfo_FILE -} - -func (m *NSResponse_RecycleResponse_RecycleInfo) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -type NSResponse_AclResponse struct { - Code int64 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - Rule string `protobuf:"bytes,3,opt,name=rule,proto3" json:"rule,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_AclResponse) Reset() { *m = NSResponse_AclResponse{} } -func (m *NSResponse_AclResponse) String() string { return proto.CompactTextString(m) } -func (*NSResponse_AclResponse) ProtoMessage() {} -func (*NSResponse_AclResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 3} -} - -func (m *NSResponse_AclResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_AclResponse.Unmarshal(m, b) -} -func (m *NSResponse_AclResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_AclResponse.Marshal(b, m, deterministic) -} -func (m *NSResponse_AclResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_AclResponse.Merge(m, src) -} -func (m *NSResponse_AclResponse) XXX_Size() int { - return xxx_messageInfo_NSResponse_AclResponse.Size(m) -} -func (m *NSResponse_AclResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_AclResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_AclResponse proto.InternalMessageInfo - -func (m *NSResponse_AclResponse) GetCode() int64 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *NSResponse_AclResponse) GetMsg() string { - if m != nil { - return m.Msg - } - return "" -} - -func (m *NSResponse_AclResponse) GetRule() string { - if m != nil { - return m.Rule - } - return "" -} - -type NSResponse_QuotaResponse struct { - Code int64 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - Quotanode []*QuotaProto `protobuf:"bytes,3,rep,name=quotanode,proto3" json:"quotanode,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_QuotaResponse) Reset() { *m = NSResponse_QuotaResponse{} } -func (m *NSResponse_QuotaResponse) String() string { return proto.CompactTextString(m) } -func (*NSResponse_QuotaResponse) ProtoMessage() {} -func (*NSResponse_QuotaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 4} -} - -func (m *NSResponse_QuotaResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_QuotaResponse.Unmarshal(m, b) -} -func (m *NSResponse_QuotaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_QuotaResponse.Marshal(b, m, deterministic) -} -func (m *NSResponse_QuotaResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_QuotaResponse.Merge(m, src) -} -func (m *NSResponse_QuotaResponse) XXX_Size() int { - return xxx_messageInfo_NSResponse_QuotaResponse.Size(m) -} -func (m *NSResponse_QuotaResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_QuotaResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_QuotaResponse proto.InternalMessageInfo - -func (m *NSResponse_QuotaResponse) GetCode() int64 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *NSResponse_QuotaResponse) GetMsg() string { - if m != nil { - return m.Msg - } - return "" -} - -func (m *NSResponse_QuotaResponse) GetQuotanode() []*QuotaProto { - if m != nil { - return m.Quotanode - } - return nil -} - -type NSResponse_ShareInfo struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Root string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"` - Rule string `protobuf:"bytes,3,opt,name=rule,proto3" json:"rule,omitempty"` - Uid uint64 `protobuf:"varint,4,opt,name=uid,proto3" json:"uid,omitempty"` - Nshared uint64 `protobuf:"varint,5,opt,name=nshared,proto3" json:"nshared,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_ShareInfo) Reset() { *m = NSResponse_ShareInfo{} } -func (m *NSResponse_ShareInfo) String() string { return proto.CompactTextString(m) } -func (*NSResponse_ShareInfo) ProtoMessage() {} -func (*NSResponse_ShareInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 5} -} - -func (m *NSResponse_ShareInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_ShareInfo.Unmarshal(m, b) -} -func (m *NSResponse_ShareInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_ShareInfo.Marshal(b, m, deterministic) -} -func (m *NSResponse_ShareInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_ShareInfo.Merge(m, src) -} -func (m *NSResponse_ShareInfo) XXX_Size() int { - return xxx_messageInfo_NSResponse_ShareInfo.Size(m) -} -func (m *NSResponse_ShareInfo) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_ShareInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_ShareInfo proto.InternalMessageInfo - -func (m *NSResponse_ShareInfo) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *NSResponse_ShareInfo) GetRoot() string { - if m != nil { - return m.Root - } - return "" -} - -func (m *NSResponse_ShareInfo) GetRule() string { - if m != nil { - return m.Rule - } - return "" -} - -func (m *NSResponse_ShareInfo) GetUid() uint64 { - if m != nil { - return m.Uid - } - return 0 -} - -func (m *NSResponse_ShareInfo) GetNshared() uint64 { - if m != nil { - return m.Nshared - } - return 0 -} - -type NSResponse_ShareAccess struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Granted bool `protobuf:"varint,2,opt,name=granted,proto3" json:"granted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_ShareAccess) Reset() { *m = NSResponse_ShareAccess{} } -func (m *NSResponse_ShareAccess) String() string { return proto.CompactTextString(m) } -func (*NSResponse_ShareAccess) ProtoMessage() {} -func (*NSResponse_ShareAccess) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 6} -} - -func (m *NSResponse_ShareAccess) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_ShareAccess.Unmarshal(m, b) -} -func (m *NSResponse_ShareAccess) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_ShareAccess.Marshal(b, m, deterministic) -} -func (m *NSResponse_ShareAccess) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_ShareAccess.Merge(m, src) -} -func (m *NSResponse_ShareAccess) XXX_Size() int { - return xxx_messageInfo_NSResponse_ShareAccess.Size(m) -} -func (m *NSResponse_ShareAccess) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_ShareAccess.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_ShareAccess proto.InternalMessageInfo - -func (m *NSResponse_ShareAccess) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *NSResponse_ShareAccess) GetGranted() bool { - if m != nil { - return m.Granted - } - return false -} - -type NSResponse_ShareResponse struct { - Code int64 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - Shares []*NSResponse_ShareInfo `protobuf:"bytes,3,rep,name=shares,proto3" json:"shares,omitempty"` - Access []*NSResponse_ShareAccess `protobuf:"bytes,4,rep,name=access,proto3" json:"access,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NSResponse_ShareResponse) Reset() { *m = NSResponse_ShareResponse{} } -func (m *NSResponse_ShareResponse) String() string { return proto.CompactTextString(m) } -func (*NSResponse_ShareResponse) ProtoMessage() {} -func (*NSResponse_ShareResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{21, 7} -} - -func (m *NSResponse_ShareResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NSResponse_ShareResponse.Unmarshal(m, b) -} -func (m *NSResponse_ShareResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NSResponse_ShareResponse.Marshal(b, m, deterministic) -} -func (m *NSResponse_ShareResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NSResponse_ShareResponse.Merge(m, src) -} -func (m *NSResponse_ShareResponse) XXX_Size() int { - return xxx_messageInfo_NSResponse_ShareResponse.Size(m) -} -func (m *NSResponse_ShareResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NSResponse_ShareResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NSResponse_ShareResponse proto.InternalMessageInfo - -func (m *NSResponse_ShareResponse) GetCode() int64 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *NSResponse_ShareResponse) GetMsg() string { - if m != nil { - return m.Msg - } - return "" -} - -func (m *NSResponse_ShareResponse) GetShares() []*NSResponse_ShareInfo { - if m != nil { - return m.Shares - } - return nil -} - -func (m *NSResponse_ShareResponse) GetAccess() []*NSResponse_ShareAccess { - if m != nil { - return m.Access - } - return nil -} - -type NsStatRequest struct { - Authkey string `protobuf:"bytes,1,opt,name=authkey,proto3" json:"authkey,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NsStatRequest) Reset() { *m = NsStatRequest{} } -func (m *NsStatRequest) String() string { return proto.CompactTextString(m) } -func (*NsStatRequest) ProtoMessage() {} -func (*NsStatRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{22} -} - -func (m *NsStatRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NsStatRequest.Unmarshal(m, b) -} -func (m *NsStatRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NsStatRequest.Marshal(b, m, deterministic) -} -func (m *NsStatRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NsStatRequest.Merge(m, src) -} -func (m *NsStatRequest) XXX_Size() int { - return xxx_messageInfo_NsStatRequest.Size(m) -} -func (m *NsStatRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NsStatRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_NsStatRequest proto.InternalMessageInfo - -func (m *NsStatRequest) GetAuthkey() string { - if m != nil { - return m.Authkey - } - return "" -} - -type NsStatResponse struct { - Code int64 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Emsg string `protobuf:"bytes,2,opt,name=emsg,proto3" json:"emsg,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - Nfiles uint64 `protobuf:"varint,4,opt,name=nfiles,proto3" json:"nfiles,omitempty"` - Ncontainers uint64 `protobuf:"varint,5,opt,name=ncontainers,proto3" json:"ncontainers,omitempty"` - BootTime uint64 `protobuf:"varint,6,opt,name=boot_time,json=bootTime,proto3" json:"boot_time,omitempty"` - CurrentFid uint64 `protobuf:"varint,7,opt,name=current_fid,json=currentFid,proto3" json:"current_fid,omitempty"` - CurrentCid uint64 `protobuf:"varint,8,opt,name=current_cid,json=currentCid,proto3" json:"current_cid,omitempty"` - MemVirtual uint64 `protobuf:"varint,9,opt,name=mem_virtual,json=memVirtual,proto3" json:"mem_virtual,omitempty"` - MemResident uint64 `protobuf:"varint,10,opt,name=mem_resident,json=memResident,proto3" json:"mem_resident,omitempty"` - MemShare uint64 `protobuf:"varint,11,opt,name=mem_share,json=memShare,proto3" json:"mem_share,omitempty"` - MemGrowth uint64 `protobuf:"varint,12,opt,name=mem_growth,json=memGrowth,proto3" json:"mem_growth,omitempty"` - Threads uint64 `protobuf:"varint,13,opt,name=threads,proto3" json:"threads,omitempty"` - Fds uint64 `protobuf:"varint,14,opt,name=fds,proto3" json:"fds,omitempty"` - Uptime uint64 `protobuf:"varint,15,opt,name=uptime,proto3" json:"uptime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NsStatResponse) Reset() { *m = NsStatResponse{} } -func (m *NsStatResponse) String() string { return proto.CompactTextString(m) } -func (*NsStatResponse) ProtoMessage() {} -func (*NsStatResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{23} -} - -func (m *NsStatResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NsStatResponse.Unmarshal(m, b) -} -func (m *NsStatResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NsStatResponse.Marshal(b, m, deterministic) -} -func (m *NsStatResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NsStatResponse.Merge(m, src) -} -func (m *NsStatResponse) XXX_Size() int { - return xxx_messageInfo_NsStatResponse.Size(m) -} -func (m *NsStatResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NsStatResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_NsStatResponse proto.InternalMessageInfo - -func (m *NsStatResponse) GetCode() int64 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *NsStatResponse) GetEmsg() string { - if m != nil { - return m.Emsg - } - return "" -} - -func (m *NsStatResponse) GetState() string { - if m != nil { - return m.State - } - return "" -} - -func (m *NsStatResponse) GetNfiles() uint64 { - if m != nil { - return m.Nfiles - } - return 0 -} - -func (m *NsStatResponse) GetNcontainers() uint64 { - if m != nil { - return m.Ncontainers - } - return 0 -} - -func (m *NsStatResponse) GetBootTime() uint64 { - if m != nil { - return m.BootTime - } - return 0 -} - -func (m *NsStatResponse) GetCurrentFid() uint64 { - if m != nil { - return m.CurrentFid - } - return 0 -} - -func (m *NsStatResponse) GetCurrentCid() uint64 { - if m != nil { - return m.CurrentCid - } - return 0 -} - -func (m *NsStatResponse) GetMemVirtual() uint64 { - if m != nil { - return m.MemVirtual - } - return 0 -} - -func (m *NsStatResponse) GetMemResident() uint64 { - if m != nil { - return m.MemResident - } - return 0 -} - -func (m *NsStatResponse) GetMemShare() uint64 { - if m != nil { - return m.MemShare - } - return 0 -} - -func (m *NsStatResponse) GetMemGrowth() uint64 { - if m != nil { - return m.MemGrowth - } - return 0 -} - -func (m *NsStatResponse) GetThreads() uint64 { - if m != nil { - return m.Threads - } - return 0 -} - -func (m *NsStatResponse) GetFds() uint64 { - if m != nil { - return m.Fds - } - return 0 -} - -func (m *NsStatResponse) GetUptime() uint64 { - if m != nil { - return m.Uptime - } - return 0 -} - -type ManilaRequest struct { - RequestType MANILA_REQUEST_TYPE `protobuf:"varint,1,opt,name=request_type,json=requestType,proto3,enum=eos.rpc.MANILA_REQUEST_TYPE" json:"request_type,omitempty"` - AuthKey string `protobuf:"bytes,2,opt,name=auth_key,json=authKey,proto3" json:"auth_key,omitempty"` - Protocol string `protobuf:"bytes,3,opt,name=protocol,proto3" json:"protocol,omitempty"` - ShareName string `protobuf:"bytes,4,opt,name=share_name,json=shareName,proto3" json:"share_name,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - ShareId string `protobuf:"bytes,6,opt,name=share_id,json=shareId,proto3" json:"share_id,omitempty"` - ShareGroupId string `protobuf:"bytes,7,opt,name=share_group_id,json=shareGroupId,proto3" json:"share_group_id,omitempty"` - Quota int32 `protobuf:"varint,8,opt,name=quota,proto3" json:"quota,omitempty"` - Creator string `protobuf:"bytes,9,opt,name=creator,proto3" json:"creator,omitempty"` - Egroup string `protobuf:"bytes,10,opt,name=egroup,proto3" json:"egroup,omitempty"` - AdminEgroup string `protobuf:"bytes,11,opt,name=admin_egroup,json=adminEgroup,proto3" json:"admin_egroup,omitempty"` - ShareHost string `protobuf:"bytes,12,opt,name=share_host,json=shareHost,proto3" json:"share_host,omitempty"` - ShareLocation string `protobuf:"bytes,13,opt,name=share_location,json=shareLocation,proto3" json:"share_location,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ManilaRequest) Reset() { *m = ManilaRequest{} } -func (m *ManilaRequest) String() string { return proto.CompactTextString(m) } -func (*ManilaRequest) ProtoMessage() {} -func (*ManilaRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{24} -} - -func (m *ManilaRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManilaRequest.Unmarshal(m, b) -} -func (m *ManilaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ManilaRequest.Marshal(b, m, deterministic) -} -func (m *ManilaRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ManilaRequest.Merge(m, src) -} -func (m *ManilaRequest) XXX_Size() int { - return xxx_messageInfo_ManilaRequest.Size(m) -} -func (m *ManilaRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ManilaRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ManilaRequest proto.InternalMessageInfo - -func (m *ManilaRequest) GetRequestType() MANILA_REQUEST_TYPE { - if m != nil { - return m.RequestType - } - return MANILA_REQUEST_TYPE_CREATE_SHARE -} - -func (m *ManilaRequest) GetAuthKey() string { - if m != nil { - return m.AuthKey - } - return "" -} - -func (m *ManilaRequest) GetProtocol() string { - if m != nil { - return m.Protocol - } - return "" -} - -func (m *ManilaRequest) GetShareName() string { - if m != nil { - return m.ShareName - } - return "" -} - -func (m *ManilaRequest) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *ManilaRequest) GetShareId() string { - if m != nil { - return m.ShareId - } - return "" -} - -func (m *ManilaRequest) GetShareGroupId() string { - if m != nil { - return m.ShareGroupId - } - return "" -} - -func (m *ManilaRequest) GetQuota() int32 { - if m != nil { - return m.Quota - } - return 0 -} - -func (m *ManilaRequest) GetCreator() string { - if m != nil { - return m.Creator - } - return "" -} - -func (m *ManilaRequest) GetEgroup() string { - if m != nil { - return m.Egroup - } - return "" -} - -func (m *ManilaRequest) GetAdminEgroup() string { - if m != nil { - return m.AdminEgroup - } - return "" -} - -func (m *ManilaRequest) GetShareHost() string { - if m != nil { - return m.ShareHost - } - return "" -} - -func (m *ManilaRequest) GetShareLocation() string { - if m != nil { - return m.ShareLocation - } - return "" -} - -type ManilaResponse struct { - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` - Code int32 `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"` - TotalUsed int64 `protobuf:"varint,3,opt,name=total_used,json=totalUsed,proto3" json:"total_used,omitempty"` - TotalCapacity int64 `protobuf:"varint,4,opt,name=total_capacity,json=totalCapacity,proto3" json:"total_capacity,omitempty"` - NewShareQuota int64 `protobuf:"varint,5,opt,name=new_share_quota,json=newShareQuota,proto3" json:"new_share_quota,omitempty"` - NewSharePath string `protobuf:"bytes,6,opt,name=new_share_path,json=newSharePath,proto3" json:"new_share_path,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ManilaResponse) Reset() { *m = ManilaResponse{} } -func (m *ManilaResponse) String() string { return proto.CompactTextString(m) } -func (*ManilaResponse) ProtoMessage() {} -func (*ManilaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_979aee4989bceb08, []int{25} -} - -func (m *ManilaResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManilaResponse.Unmarshal(m, b) -} -func (m *ManilaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ManilaResponse.Marshal(b, m, deterministic) -} -func (m *ManilaResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ManilaResponse.Merge(m, src) -} -func (m *ManilaResponse) XXX_Size() int { - return xxx_messageInfo_ManilaResponse.Size(m) -} -func (m *ManilaResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ManilaResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ManilaResponse proto.InternalMessageInfo - -func (m *ManilaResponse) GetMsg() string { - if m != nil { - return m.Msg - } - return "" -} - -func (m *ManilaResponse) GetCode() int32 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *ManilaResponse) GetTotalUsed() int64 { - if m != nil { - return m.TotalUsed - } - return 0 -} - -func (m *ManilaResponse) GetTotalCapacity() int64 { - if m != nil { - return m.TotalCapacity - } - return 0 -} - -func (m *ManilaResponse) GetNewShareQuota() int64 { - if m != nil { - return m.NewShareQuota - } - return 0 -} - -func (m *ManilaResponse) GetNewSharePath() string { - if m != nil { - return m.NewSharePath - } - return "" -} - -func init() { - proto.RegisterEnum("eos.rpc.TYPE", TYPE_name, TYPE_value) - proto.RegisterEnum("eos.rpc.QUOTATYPE", QUOTATYPE_name, QUOTATYPE_value) - proto.RegisterEnum("eos.rpc.QUOTAOP", QUOTAOP_name, QUOTAOP_value) - proto.RegisterEnum("eos.rpc.QUOTAENTRY", QUOTAENTRY_name, QUOTAENTRY_value) - proto.RegisterEnum("eos.rpc.MANILA_REQUEST_TYPE", MANILA_REQUEST_TYPE_name, MANILA_REQUEST_TYPE_value) - proto.RegisterEnum("eos.rpc.NSRequest_VersionRequest_VERSION_CMD", NSRequest_VersionRequest_VERSION_CMD_name, NSRequest_VersionRequest_VERSION_CMD_value) - proto.RegisterEnum("eos.rpc.NSRequest_RecycleRequest_RECYCLE_CMD", NSRequest_RecycleRequest_RECYCLE_CMD_name, NSRequest_RecycleRequest_RECYCLE_CMD_value) - proto.RegisterEnum("eos.rpc.NSRequest_AclRequest_ACL_COMMAND", NSRequest_AclRequest_ACL_COMMAND_name, NSRequest_AclRequest_ACL_COMMAND_value) - proto.RegisterEnum("eos.rpc.NSRequest_AclRequest_ACL_TYPE", NSRequest_AclRequest_ACL_TYPE_name, NSRequest_AclRequest_ACL_TYPE_value) - proto.RegisterEnum("eos.rpc.NSRequest_ShareRequest_LsShare_OutFormat", NSRequest_ShareRequest_LsShare_OutFormat_name, NSRequest_ShareRequest_LsShare_OutFormat_value) - proto.RegisterEnum("eos.rpc.NSRequest_ShareRequest_OperateShare_Op", NSRequest_ShareRequest_OperateShare_Op_name, NSRequest_ShareRequest_OperateShare_Op_value) - proto.RegisterEnum("eos.rpc.NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE", NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE_name, NSResponse_RecycleResponse_RecycleInfo_DELETIONTYPE_value) - proto.RegisterType((*PingRequest)(nil), "eos.rpc.PingRequest") - proto.RegisterType((*PingReply)(nil), "eos.rpc.PingReply") - proto.RegisterType((*ContainerInsertRequest)(nil), "eos.rpc.ContainerInsertRequest") - proto.RegisterType((*FileInsertRequest)(nil), "eos.rpc.FileInsertRequest") - proto.RegisterType((*InsertReply)(nil), "eos.rpc.InsertReply") - proto.RegisterType((*Time)(nil), "eos.rpc.Time") - proto.RegisterType((*Checksum)(nil), "eos.rpc.Checksum") - proto.RegisterType((*FileMdProto)(nil), "eos.rpc.FileMdProto") - proto.RegisterMapType((map[string][]byte)(nil), "eos.rpc.FileMdProto.XattrsEntry") - proto.RegisterType((*ContainerMdProto)(nil), "eos.rpc.ContainerMdProto") - proto.RegisterMapType((map[string][]byte)(nil), "eos.rpc.ContainerMdProto.XattrsEntry") - proto.RegisterType((*QuotaProto)(nil), "eos.rpc.QuotaProto") - proto.RegisterType((*RoleId)(nil), "eos.rpc.RoleId") - proto.RegisterType((*MDId)(nil), "eos.rpc.MDId") - proto.RegisterType((*Limit)(nil), "eos.rpc.Limit") - proto.RegisterType((*MDSelection)(nil), "eos.rpc.MDSelection") - proto.RegisterMapType((map[string][]byte)(nil), "eos.rpc.MDSelection.XattrEntry") - proto.RegisterType((*MDRequest)(nil), "eos.rpc.MDRequest") - proto.RegisterType((*MDResponse)(nil), "eos.rpc.MDResponse") - proto.RegisterType((*FindRequest)(nil), "eos.rpc.FindRequest") - proto.RegisterType((*ShareAuth)(nil), "eos.rpc.ShareAuth") - proto.RegisterType((*ShareProto)(nil), "eos.rpc.ShareProto") - proto.RegisterType((*ShareToken)(nil), "eos.rpc.ShareToken") - proto.RegisterType((*NSRequest)(nil), "eos.rpc.NSRequest") - proto.RegisterType((*NSRequest_MkdirRequest)(nil), "eos.rpc.NSRequest.MkdirRequest") - proto.RegisterType((*NSRequest_RmdirRequest)(nil), "eos.rpc.NSRequest.RmdirRequest") - proto.RegisterType((*NSRequest_TouchRequest)(nil), "eos.rpc.NSRequest.TouchRequest") - proto.RegisterType((*NSRequest_UnlinkRequest)(nil), "eos.rpc.NSRequest.UnlinkRequest") - proto.RegisterType((*NSRequest_RmRequest)(nil), "eos.rpc.NSRequest.RmRequest") - proto.RegisterType((*NSRequest_RenameRequest)(nil), "eos.rpc.NSRequest.RenameRequest") - proto.RegisterType((*NSRequest_SymlinkRequest)(nil), "eos.rpc.NSRequest.SymlinkRequest") - proto.RegisterType((*NSRequest_VersionRequest)(nil), "eos.rpc.NSRequest.VersionRequest") - proto.RegisterType((*NSRequest_RecycleRequest)(nil), "eos.rpc.NSRequest.RecycleRequest") - proto.RegisterType((*NSRequest_RecycleRequest_RestoreFlags)(nil), "eos.rpc.NSRequest.RecycleRequest.RestoreFlags") - proto.RegisterType((*NSRequest_RecycleRequest_PurgeDate)(nil), "eos.rpc.NSRequest.RecycleRequest.PurgeDate") - proto.RegisterType((*NSRequest_RecycleRequest_ListFlags)(nil), "eos.rpc.NSRequest.RecycleRequest.ListFlags") - proto.RegisterType((*NSRequest_SetXAttrRequest)(nil), "eos.rpc.NSRequest.SetXAttrRequest") - proto.RegisterMapType((map[string][]byte)(nil), "eos.rpc.NSRequest.SetXAttrRequest.XattrsEntry") - proto.RegisterType((*NSRequest_ChownRequest)(nil), "eos.rpc.NSRequest.ChownRequest") - proto.RegisterType((*NSRequest_ChmodRequest)(nil), "eos.rpc.NSRequest.ChmodRequest") - proto.RegisterType((*NSRequest_AclRequest)(nil), "eos.rpc.NSRequest.AclRequest") - proto.RegisterType((*NSRequest_TokenRequest)(nil), "eos.rpc.NSRequest.TokenRequest") - proto.RegisterType((*NSRequest_QuotaRequest)(nil), "eos.rpc.NSRequest.QuotaRequest") - proto.RegisterType((*NSRequest_ShareRequest)(nil), "eos.rpc.NSRequest.ShareRequest") - proto.RegisterType((*NSRequest_ShareRequest_LsShare)(nil), "eos.rpc.NSRequest.ShareRequest.LsShare") - proto.RegisterType((*NSRequest_ShareRequest_OperateShare)(nil), "eos.rpc.NSRequest.ShareRequest.OperateShare") - proto.RegisterType((*NSResponse)(nil), "eos.rpc.NSResponse") - proto.RegisterType((*NSResponse_ErrorResponse)(nil), "eos.rpc.NSResponse.ErrorResponse") - proto.RegisterType((*NSResponse_VersionResponse)(nil), "eos.rpc.NSResponse.VersionResponse") - proto.RegisterType((*NSResponse_VersionResponse_VersionInfo)(nil), "eos.rpc.NSResponse.VersionResponse.VersionInfo") - proto.RegisterType((*NSResponse_RecycleResponse)(nil), "eos.rpc.NSResponse.RecycleResponse") - proto.RegisterType((*NSResponse_RecycleResponse_RecycleInfo)(nil), "eos.rpc.NSResponse.RecycleResponse.RecycleInfo") - proto.RegisterType((*NSResponse_AclResponse)(nil), "eos.rpc.NSResponse.AclResponse") - proto.RegisterType((*NSResponse_QuotaResponse)(nil), "eos.rpc.NSResponse.QuotaResponse") - proto.RegisterType((*NSResponse_ShareInfo)(nil), "eos.rpc.NSResponse.ShareInfo") - proto.RegisterType((*NSResponse_ShareAccess)(nil), "eos.rpc.NSResponse.ShareAccess") - proto.RegisterType((*NSResponse_ShareResponse)(nil), "eos.rpc.NSResponse.ShareResponse") - proto.RegisterType((*NsStatRequest)(nil), "eos.rpc.NsStatRequest") - proto.RegisterType((*NsStatResponse)(nil), "eos.rpc.NsStatResponse") - proto.RegisterType((*ManilaRequest)(nil), "eos.rpc.ManilaRequest") - proto.RegisterType((*ManilaResponse)(nil), "eos.rpc.ManilaResponse") -} - -func init() { - proto.RegisterFile("Rpc.proto", fileDescriptor_979aee4989bceb08) -} - -var fileDescriptor_979aee4989bceb08 = []byte{ - // 4076 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x3a, 0x4d, 0x73, 0x1b, 0x47, - 0x76, 0x04, 0x30, 0x00, 0x31, 0x0f, 0x00, 0x09, 0xb5, 0x14, 0x2d, 0x0c, 0x49, 0x16, 0x3d, 0xb2, - 0xbc, 0x92, 0xd6, 0x82, 0x2c, 0x25, 0x8e, 0x6c, 0x6b, 0x1d, 0x07, 0x22, 0x41, 0x0a, 0x36, 0x01, - 0xd0, 0x0d, 0x50, 0x25, 0xe5, 0x82, 0x1a, 0xcd, 0x34, 0xc1, 0x29, 0x61, 0x66, 0xb0, 0x33, 0x03, - 0x89, 0x74, 0x55, 0x4e, 0xc9, 0x25, 0x5b, 0x95, 0xdb, 0xde, 0x36, 0xa7, 0x54, 0x92, 0x4b, 0xee, - 0x39, 0xe4, 0x94, 0x5b, 0xb6, 0x72, 0xc8, 0x21, 0x95, 0xaa, 0xdc, 0xf2, 0x07, 0x92, 0x1f, 0x91, - 0xea, 0xd7, 0x3d, 0x33, 0x3d, 0x24, 0x40, 0xd0, 0xf1, 0x5e, 0xa6, 0xba, 0x5f, 0xbf, 0xf7, 0xba, - 0xfb, 0xf5, 0xfb, 0xec, 0x1e, 0xd0, 0xe9, 0xcc, 0x6a, 0xcd, 0x02, 0x3f, 0xf2, 0xc9, 0x3a, 0xf3, - 0xc3, 0x56, 0x30, 0xb3, 0x8c, 0x36, 0x54, 0x0e, 0x1c, 0x6f, 0x42, 0xd9, 0xaf, 0xe6, 0x2c, 0x8c, - 0x48, 0x03, 0xd6, 0xcd, 0x79, 0x74, 0xfc, 0x96, 0x9d, 0x36, 0x72, 0x5b, 0xb9, 0x7b, 0x3a, 0x8d, - 0xbb, 0x7c, 0xc4, 0x65, 0x61, 0x68, 0x4e, 0x58, 0x23, 0xbf, 0x95, 0xbb, 0x57, 0xa5, 0x71, 0xd7, - 0xb8, 0x0b, 0xba, 0x60, 0x31, 0x9b, 0x66, 0xd0, 0x72, 0x59, 0xb4, 0x5f, 0xe7, 0xe0, 0xfa, 0xb6, - 0xef, 0x45, 0xa6, 0xe3, 0xb1, 0xa0, 0xeb, 0x85, 0x2c, 0x88, 0xe2, 0x59, 0x9f, 0x82, 0x6e, 0xc5, - 0x23, 0x8d, 0xdc, 0x56, 0xe1, 0x5e, 0xe5, 0xc9, 0x07, 0x2d, 0xb9, 0xc2, 0x56, 0x42, 0xd3, 0xb3, - 0x0f, 0xf8, 0xda, 0x69, 0x8a, 0xab, 0x2e, 0x37, 0x9f, 0x5d, 0xee, 0x2d, 0x00, 0xc7, 0x3b, 0x66, - 0x81, 0x13, 0x8d, 0x5d, 0xbb, 0x51, 0xd8, 0xca, 0xdd, 0x2b, 0x53, 0x5d, 0x42, 0x7a, 0xb6, 0xf1, - 0x1a, 0xae, 0xec, 0x3a, 0x53, 0x96, 0x5d, 0xc6, 0x03, 0x28, 0x1e, 0x39, 0x53, 0x16, 0xca, 0x25, - 0x5c, 0x4b, 0x96, 0xc0, 0x51, 0xe3, 0xd9, 0x05, 0xca, 0xf2, 0x99, 0x8d, 0x67, 0x50, 0x89, 0xd9, - 0x9e, 0x13, 0x48, 0x81, 0x23, 0xca, 0x2e, 0x21, 0xa0, 0x05, 0x2c, 0xb2, 0x1a, 0xf9, 0xad, 0xc2, - 0xbd, 0x1a, 0xc5, 0xb6, 0xf1, 0x10, 0xb4, 0x91, 0xe3, 0x32, 0x52, 0x87, 0x42, 0xc8, 0x2c, 0x14, - 0xa1, 0x46, 0x79, 0x93, 0x5c, 0x85, 0xa2, 0x37, 0xe6, 0xb0, 0x3c, 0xc2, 0x34, 0x6f, 0xc8, 0x2c, - 0xe3, 0x8f, 0xa0, 0xbc, 0x7d, 0xcc, 0xac, 0xb7, 0xe1, 0xdc, 0x25, 0xd7, 0xa0, 0xf8, 0xce, 0x9c, - 0xce, 0x63, 0xb9, 0x8b, 0x0e, 0x9f, 0x24, 0x3a, 0x9d, 0x31, 0xb9, 0x48, 0x6c, 0x1b, 0xff, 0xaa, - 0x41, 0x45, 0xd9, 0x12, 0xd9, 0x80, 0xbc, 0x63, 0xcb, 0xb9, 0xf2, 0x8e, 0x4d, 0x7e, 0x06, 0xeb, - 0x5c, 0xc4, 0x63, 0xc7, 0x96, 0x93, 0x95, 0x78, 0xb7, 0x6b, 0xf3, 0x55, 0xcd, 0x1d, 0x21, 0x4d, - 0x8d, 0xf2, 0x26, 0x87, 0x4c, 0x1c, 0xbb, 0xa1, 0x09, 0xc8, 0xc4, 0xb1, 0xf9, 0x84, 0xa1, 0xf3, - 0x03, 0x6b, 0x14, 0xc5, 0x32, 0x79, 0x9b, 0xdc, 0x00, 0x7d, 0x6a, 0x9e, 0xfa, 0x73, 0x64, 0x59, - 0xda, 0xca, 0xdd, 0xab, 0xd1, 0xb2, 0x00, 0x74, 0x6d, 0xbe, 0xee, 0xa3, 0xa9, 0x39, 0x09, 0x1b, - 0xeb, 0x38, 0x20, 0x3a, 0x9c, 0x8d, 0x67, 0xba, 0xac, 0x51, 0xc6, 0xcd, 0x60, 0x1b, 0xd9, 0x38, - 0xde, 0xdb, 0x31, 0x0e, 0xe8, 0x38, 0x50, 0xe6, 0x80, 0x3e, 0x1f, 0xbc, 0x03, 0x45, 0x2b, 0x72, - 0x5c, 0xd6, 0x80, 0xad, 0xdc, 0xbd, 0xca, 0x93, 0x5a, 0x72, 0x78, 0x5c, 0x9e, 0x54, 0x8c, 0x71, - 0x24, 0x17, 0x91, 0x2a, 0x0b, 0x91, 0x70, 0x8c, 0x3c, 0x84, 0xb2, 0x25, 0x85, 0xda, 0xa8, 0x22, - 0xde, 0x95, 0x54, 0x19, 0xe5, 0x00, 0x4d, 0x50, 0xc8, 0x4d, 0xd0, 0xa7, 0xbe, 0x65, 0x46, 0x8e, - 0xef, 0x85, 0x8d, 0x1a, 0x9e, 0x65, 0x0a, 0x20, 0xf7, 0xa1, 0x3e, 0xf7, 0x70, 0xd5, 0x29, 0xd2, - 0x06, 0x22, 0x6d, 0x0a, 0xf8, 0x7e, 0x82, 0xfa, 0x05, 0x94, 0x4e, 0xcc, 0x28, 0x0a, 0xc2, 0xc6, - 0x26, 0xea, 0xdf, 0xd6, 0x22, 0xfd, 0x6b, 0xbd, 0x42, 0x94, 0x8e, 0x17, 0x05, 0xa7, 0x54, 0xe2, - 0x73, 0x61, 0xcd, 0xcc, 0xe8, 0xb8, 0x51, 0x17, 0xc2, 0xe2, 0x6d, 0x0e, 0x63, 0x91, 0x39, 0x69, - 0x5c, 0x11, 0x07, 0xcf, 0xdb, 0x5c, 0xd4, 0x8e, 0xe7, 0xdb, 0xac, 0x41, 0xf0, 0x70, 0x44, 0xa7, - 0xf9, 0x25, 0x54, 0x14, 0xa6, 0xfc, 0x48, 0x53, 0xf3, 0xe7, 0xcd, 0x54, 0xb3, 0xf2, 0x8a, 0x66, - 0x7d, 0x95, 0xff, 0x22, 0x67, 0xfc, 0x56, 0x83, 0xfa, 0x59, 0xfb, 0x3c, 0xa7, 0x4e, 0x37, 0x40, - 0x9f, 0x99, 0x01, 0x53, 0x15, 0xaa, 0x2c, 0x00, 0x97, 0x54, 0xa9, 0x1b, 0xa0, 0x47, 0x01, 0x63, - 0x63, 0xd4, 0x2b, 0xae, 0x3e, 0x05, 0x5a, 0xe6, 0x80, 0x21, 0xd7, 0x2d, 0x02, 0x9a, 0xcb, 0xb7, - 0x54, 0x44, 0xed, 0xc1, 0xf6, 0x8f, 0x50, 0xa9, 0x44, 0x6b, 0xf4, 0xcb, 0x68, 0x0d, 0x5c, 0xa0, - 0x35, 0x77, 0xa0, 0x18, 0x5e, 0xa0, 0x5a, 0x38, 0x46, 0xbe, 0x4e, 0x8e, 0xb8, 0x8a, 0x47, 0x7c, - 0x77, 0xa9, 0x97, 0xbb, 0xf0, 0x9c, 0x6b, 0x0b, 0xce, 0x79, 0x63, 0xd1, 0x39, 0x6f, 0x2a, 0xe7, - 0x8c, 0x52, 0x41, 0xf7, 0x56, 0x17, 0x50, 0xe1, 0xc8, 0x3e, 0x04, 0x48, 0xfc, 0x69, 0x88, 0xda, - 0xa2, 0x51, 0x05, 0xf2, 0x53, 0xb4, 0xe3, 0xdf, 0x0b, 0x00, 0xdf, 0xcf, 0xfd, 0xc8, 0x14, 0x7a, - 0x11, 0xaf, 0x3e, 0x97, 0x5d, 0x3d, 0x9e, 0x89, 0x74, 0x4f, 0x78, 0x26, 0x9f, 0x48, 0x97, 0xc5, - 0x75, 0x62, 0xe3, 0x09, 0x49, 0x44, 0xf4, 0xfd, 0xe1, 0x60, 0xd4, 0x1e, 0xbd, 0x3e, 0xe8, 0x08, - 0x37, 0xc6, 0x0d, 0x6f, 0x1e, 0x32, 0xfb, 0xcd, 0x69, 0xc4, 0x42, 0xa9, 0x2e, 0x29, 0x80, 0x3c, - 0x80, 0x3a, 0xef, 0x4c, 0xfd, 0x89, 0x63, 0x99, 0x53, 0x81, 0x24, 0x7c, 0xd2, 0x39, 0x78, 0xcc, - 0x49, 0x48, 0xa7, 0x94, 0x72, 0x12, 0x12, 0x6a, 0x42, 0xd9, 0x35, 0x4f, 0x04, 0x87, 0x75, 0xa1, - 0xbe, 0x71, 0x9f, 0xdc, 0x83, 0x4d, 0xd7, 0x3c, 0xc9, 0x4c, 0x52, 0x46, 0x94, 0xb3, 0x60, 0xc9, - 0x45, 0x4c, 0xa1, 0x27, 0x5c, 0xc4, 0x0c, 0x9f, 0xc1, 0xd5, 0x19, 0x0b, 0x2c, 0xe6, 0x45, 0xe6, - 0x84, 0xa5, 0x7b, 0xe2, 0xea, 0x96, 0xa7, 0x8b, 0x86, 0xce, 0x53, 0x08, 0xc6, 0x95, 0x45, 0x14, - 0x62, 0x8e, 0x2d, 0xa8, 0x84, 0x91, 0x19, 0xcd, 0x43, 0xc1, 0xbb, 0x8a, 0x02, 0x57, 0x41, 0x29, - 0x86, 0xe0, 0x55, 0x53, 0x31, 0x10, 0x64, 0x9c, 0x40, 0x89, 0xfa, 0x53, 0x96, 0x9a, 0x6d, 0xee, - 0x9c, 0xd9, 0xe6, 0x53, 0xb3, 0x6d, 0x42, 0x79, 0x1e, 0xb2, 0x00, 0xcf, 0xb7, 0x80, 0xcc, 0x92, - 0x3e, 0x97, 0xf8, 0x24, 0xf0, 0xe7, 0x33, 0x1c, 0xd4, 0x70, 0x30, 0x05, 0x70, 0x5e, 0xe6, 0x6c, - 0x86, 0xc7, 0xa5, 0x53, 0xde, 0x34, 0xc6, 0xa0, 0xf5, 0x76, 0xba, 0xf6, 0x42, 0x1d, 0x12, 0xfe, - 0x86, 0x4f, 0x5c, 0x42, 0x7f, 0x53, 0x87, 0x82, 0xe3, 0xf9, 0x38, 0x65, 0x89, 0xf2, 0x26, 0xf9, - 0x48, 0x6a, 0x94, 0x86, 0x1a, 0xa5, 0x98, 0x66, 0xa2, 0x4c, 0xc6, 0x37, 0x50, 0xdc, 0x77, 0x5c, - 0x27, 0xe2, 0x33, 0xfc, 0xc0, 0x02, 0x1f, 0x67, 0x28, 0x53, 0x6c, 0x73, 0x8e, 0xae, 0xe3, 0xc5, - 0x7b, 0x73, 0x1d, 0x0f, 0x21, 0xe6, 0x49, 0xec, 0xb6, 0x5c, 0xf3, 0xc4, 0xf8, 0x87, 0x12, 0x54, - 0x7a, 0x3b, 0x43, 0x36, 0x65, 0x16, 0x77, 0xe7, 0xe4, 0x3a, 0x94, 0x42, 0xec, 0x48, 0x4e, 0xb2, - 0x47, 0x3e, 0x8e, 0x3d, 0x4e, 0x1e, 0xfd, 0xc4, 0x46, 0xb2, 0x18, 0x9c, 0x3e, 0x76, 0x39, 0x1f, - 0xc7, 0x2e, 0xa7, 0xb0, 0x18, 0xcb, 0x8d, 0xb1, 0x84, 0xcf, 0xd1, 0x16, 0x63, 0x09, 0xa7, 0x63, - 0x28, 0x11, 0xf9, 0x3c, 0x92, 0x88, 0xd0, 0x0f, 0x00, 0x3d, 0x6a, 0xe2, 0x61, 0xcf, 0xe3, 0x25, - 0xe3, 0x1c, 0xd7, 0x3a, 0x76, 0xa6, 0x76, 0xc0, 0x3c, 0xb4, 0x87, 0x05, 0xb8, 0xf1, 0x38, 0xf9, - 0x54, 0x0d, 0x8e, 0xe5, 0x85, 0xc8, 0x4a, 0xb0, 0xfc, 0x1a, 0x88, 0x08, 0x8a, 0xcc, 0x56, 0xc2, - 0xa5, 0xbe, 0x90, 0xec, 0x4a, 0x8c, 0x99, 0x06, 0xd0, 0x26, 0xc8, 0xac, 0xc2, 0xb1, 0xd1, 0x76, - 0x34, 0x9a, 0xf4, 0xd3, 0x90, 0x50, 0x91, 0xce, 0x0f, 0x43, 0x42, 0x03, 0xd6, 0xc3, 0x53, 0x97, - 0xf3, 0x41, 0x83, 0x28, 0xd3, 0xb8, 0x9b, 0x49, 0x02, 0x6a, 0xab, 0x93, 0x80, 0x6b, 0x50, 0xf4, - 0xdf, 0xf3, 0xec, 0x75, 0x43, 0x44, 0x1c, 0xec, 0x70, 0x28, 0x2a, 0x35, 0xfa, 0xe1, 0x1a, 0x15, - 0x1d, 0x9e, 0x9a, 0xe2, 0xf0, 0x38, 0xf0, 0xfd, 0x08, 0x9d, 0x71, 0x99, 0xea, 0x08, 0xa1, 0xbe, - 0x1f, 0xf1, 0x61, 0xc4, 0x13, 0xc3, 0x57, 0xc4, 0x30, 0x42, 0x70, 0xf8, 0xe7, 0xb0, 0x19, 0xb0, - 0x09, 0x3b, 0x99, 0x8d, 0xb9, 0x4d, 0xa2, 0xfd, 0x10, 0x34, 0x86, 0x0d, 0x01, 0xde, 0x95, 0x50, - 0x72, 0x17, 0x24, 0x64, 0x6c, 0x3b, 0xc2, 0x08, 0xaf, 0x22, 0x5e, 0x4d, 0x40, 0x77, 0x04, 0x90, - 0x7c, 0x0e, 0x45, 0x8c, 0x2e, 0x8d, 0x6b, 0x18, 0x91, 0x6e, 0x27, 0xbb, 0x54, 0x94, 0x59, 0x04, - 0x23, 0x11, 0x8b, 0x04, 0x76, 0xf3, 0x0b, 0x80, 0x14, 0xf8, 0xa3, 0xa2, 0xc2, 0xbf, 0xe4, 0x40, - 0xef, 0xed, 0xc4, 0x39, 0x77, 0x6c, 0x9a, 0xb9, 0xa5, 0xa6, 0x49, 0x6e, 0x25, 0xf6, 0xad, 0x86, - 0x55, 0xee, 0x0e, 0xd0, 0xdc, 0x95, 0x4c, 0xbc, 0x90, 0xad, 0x01, 0xee, 0x80, 0x16, 0xf8, 0xd3, - 0xd8, 0x3a, 0x36, 0x13, 0x52, 0xe1, 0xc3, 0x28, 0x0e, 0x92, 0x27, 0xa0, 0x87, 0xf1, 0x3e, 0xa5, - 0x89, 0x5c, 0x5b, 0x24, 0x03, 0x9a, 0xa2, 0x19, 0x7f, 0x99, 0x03, 0xe0, 0x5b, 0x08, 0x67, 0xbe, - 0x17, 0xb2, 0xcb, 0xec, 0xe1, 0x13, 0x28, 0x1c, 0xb9, 0xf1, 0x26, 0x16, 0x17, 0x16, 0x1c, 0x81, - 0xfc, 0x02, 0x0a, 0x96, 0xac, 0x57, 0x2e, 0xac, 0x81, 0x38, 0x96, 0xf1, 0xdf, 0x39, 0x9e, 0xc7, - 0x7b, 0xf6, 0xef, 0x4f, 0x96, 0xb1, 0xc4, 0x0a, 0x17, 0x49, 0x4c, 0x11, 0xb8, 0x96, 0x15, 0xb8, - 0x88, 0x71, 0x36, 0x9b, 0x45, 0xc7, 0x32, 0xd6, 0x26, 0xfd, 0xac, 0x9c, 0x4b, 0x97, 0x93, 0xf3, - 0x1e, 0xe8, 0xc3, 0x63, 0x33, 0x60, 0xed, 0xb9, 0x48, 0x15, 0x78, 0xed, 0x2a, 0x95, 0x0c, 0xdb, - 0x0b, 0xd3, 0x07, 0x02, 0xda, 0xb1, 0x1f, 0x46, 0x52, 0x19, 0xb0, 0x6d, 0xfc, 0x3a, 0x0f, 0x80, - 0x9c, 0x44, 0x26, 0xf2, 0x21, 0xc0, 0x8c, 0x05, 0xae, 0x13, 0x86, 0x7c, 0x31, 0x82, 0xa1, 0x02, - 0xe1, 0x3b, 0x64, 0x27, 0x33, 0x27, 0x60, 0xa1, 0xf4, 0xf9, 0x71, 0x37, 0xb5, 0x73, 0xc1, 0xfd, - 0xac, 0x9d, 0x0b, 0x79, 0x48, 0x3b, 0xff, 0x10, 0x60, 0xc2, 0x3c, 0x16, 0x98, 0x89, 0x6a, 0x69, - 0x54, 0x81, 0x24, 0xb1, 0xac, 0x24, 0x37, 0xc4, 0x63, 0xd9, 0x4d, 0xd0, 0xcd, 0xe9, 0xd4, 0x7f, - 0xcf, 0x9d, 0x2d, 0x3a, 0xd7, 0x32, 0x4d, 0x01, 0x3c, 0xa6, 0xbc, 0x8b, 0xfc, 0xb7, 0xcc, 0x43, - 0x57, 0xaa, 0x53, 0xd9, 0x23, 0x9f, 0xc2, 0xba, 0x1f, 0x38, 0x13, 0x07, 0x9d, 0x25, 0xb7, 0xe2, - 0x34, 0x69, 0x4a, 0xe4, 0x47, 0x63, 0x14, 0xe3, 0xaf, 0x72, 0x52, 0x18, 0x23, 0x24, 0xbe, 0x0f, - 0x45, 0xc1, 0x33, 0x87, 0x87, 0x72, 0x35, 0x4b, 0x2a, 0x8b, 0x5e, 0x31, 0xcf, 0x4d, 0xd0, 0x43, - 0x67, 0xe2, 0x99, 0xd1, 0x3c, 0x88, 0x0d, 0x3b, 0x05, 0xf0, 0xfd, 0x86, 0x2c, 0x70, 0xcc, 0xa9, - 0xf3, 0x03, 0x13, 0x2a, 0x5c, 0xa5, 0x0a, 0x04, 0x2b, 0x43, 0xc6, 0x44, 0x66, 0x5f, 0xa4, 0xd8, - 0x36, 0xfe, 0xf3, 0x36, 0xe8, 0xfd, 0xe1, 0xea, 0xdb, 0x87, 0x58, 0x31, 0xf3, 0x17, 0x29, 0xe6, - 0x53, 0x28, 0xba, 0x6f, 0x6d, 0x27, 0x68, 0xfc, 0x01, 0x62, 0xa5, 0xae, 0x2c, 0x99, 0xa1, 0xd5, - 0xe3, 0xe3, 0xb2, 0xf3, 0x62, 0x8d, 0x0a, 0x7c, 0x4e, 0x18, 0xb8, 0x9c, 0xf0, 0xfa, 0x52, 0x42, - 0xea, 0x66, 0x09, 0x11, 0x9f, 0x13, 0x46, 0xfe, 0xdc, 0x3a, 0x6e, 0xfc, 0x6c, 0x29, 0xe1, 0x88, - 0x8f, 0x2b, 0x84, 0x88, 0x4f, 0xbe, 0x82, 0x92, 0x88, 0x5f, 0x8d, 0x06, 0x52, 0x6e, 0x2d, 0xa0, - 0x3c, 0x44, 0x84, 0x94, 0x54, 0x52, 0x90, 0x16, 0xe4, 0x03, 0xb7, 0xf1, 0x01, 0xd2, 0xdd, 0x5c, - 0xb8, 0xd4, 0x94, 0x26, 0x1f, 0xb8, 0x7c, 0xae, 0x40, 0x04, 0x8a, 0xe6, 0xd2, 0xb9, 0x28, 0x22, - 0x28, 0x73, 0x09, 0x0a, 0xf2, 0x75, 0x1a, 0x20, 0x6f, 0x20, 0xf1, 0x47, 0x0b, 0x88, 0x87, 0x02, - 0x23, 0xa5, 0x4e, 0xa2, 0xe8, 0xd7, 0xb0, 0xfe, 0x8e, 0x05, 0x68, 0x65, 0x37, 0x97, 0x92, 0xbf, - 0x14, 0x18, 0x0a, 0xb9, 0xa4, 0xe1, 0xe4, 0x01, 0xb3, 0x4e, 0xad, 0x29, 0x6b, 0xdc, 0x5a, 0x4a, - 0x4e, 0x05, 0x86, 0x42, 0x2e, 0x69, 0xc8, 0x57, 0x71, 0x68, 0xfb, 0x10, 0x89, 0x8d, 0x45, 0x4b, - 0x67, 0xd1, 0xab, 0x76, 0x14, 0xa9, 0x27, 0x8b, 0x24, 0xfc, 0x64, 0xad, 0x63, 0xff, 0xbd, 0xd7, - 0xb8, 0xbd, 0xf4, 0x64, 0xb7, 0xf9, 0xb8, 0x42, 0x88, 0xf8, 0x82, 0xd0, 0xf5, 0xed, 0xc6, 0xd6, - 0x05, 0x84, 0xae, 0x6f, 0x67, 0x08, 0x5d, 0xdf, 0x26, 0x8f, 0xa1, 0x60, 0x5a, 0xd3, 0xc6, 0x47, - 0x48, 0x76, 0x6b, 0x01, 0x59, 0xdb, 0x9a, 0xa6, 0x44, 0x1c, 0x57, 0xa8, 0x1f, 0x37, 0x5d, 0xe3, - 0x02, 0xf5, 0x7b, 0xcb, 0xbc, 0x8c, 0xfa, 0x71, 0x43, 0x7e, 0x0a, 0xc5, 0x5f, 0xf1, 0xc2, 0xac, - 0x71, 0x67, 0x29, 0x21, 0x16, 0x6e, 0x0a, 0x21, 0xe2, 0x73, 0xc2, 0x90, 0xbb, 0x85, 0xc6, 0xc7, - 0x4b, 0x09, 0xd1, 0x6d, 0x28, 0x84, 0x88, 0xdf, 0x1c, 0x43, 0x55, 0xb5, 0x3d, 0x19, 0x88, 0x72, - 0xcb, 0x02, 0xd1, 0x4d, 0xd0, 0x03, 0x66, 0xcd, 0x83, 0xd0, 0x79, 0x27, 0x8c, 0xbe, 0x4c, 0x53, - 0x40, 0x52, 0xf3, 0x17, 0xf0, 0x2e, 0x00, 0xdb, 0xcd, 0x87, 0x50, 0x55, 0x6d, 0x74, 0xc5, 0x04, - 0x1c, 0x5d, 0xb5, 0xcc, 0x55, 0xe8, 0xfb, 0x50, 0xcb, 0x98, 0xe3, 0x25, 0xd6, 0xef, 0xf9, 0xb1, - 0xee, 0xca, 0xdb, 0xc7, 0x04, 0xd0, 0x3c, 0x02, 0x3d, 0x31, 0xd2, 0x9f, 0x26, 0x89, 0x8b, 0xe7, - 0xd9, 0x85, 0x5a, 0xc6, 0xb0, 0x57, 0xcd, 0x75, 0x1d, 0x4a, 0x91, 0x19, 0x4c, 0x58, 0x24, 0x9d, - 0xbb, 0xec, 0x35, 0xf7, 0x60, 0x23, 0x6b, 0xe3, 0xff, 0x5f, 0x46, 0xff, 0x9b, 0x83, 0x8d, 0xac, - 0xb9, 0xaf, 0xe2, 0xf4, 0x8d, 0x48, 0x88, 0xf2, 0x98, 0xd2, 0x3c, 0x5c, 0xe9, 0x3d, 0x5a, 0x2f, - 0x3b, 0x74, 0xd8, 0x1d, 0xf4, 0xc7, 0xdb, 0xbd, 0x1d, 0x4c, 0x92, 0x78, 0x54, 0x72, 0xcd, 0x93, - 0xd8, 0x0b, 0x15, 0x30, 0xf6, 0x28, 0x10, 0x5e, 0xf5, 0x4e, 0x02, 0xf3, 0x4d, 0x8c, 0x20, 0x22, - 0xb8, 0x0a, 0x32, 0xbe, 0x80, 0x8a, 0xc2, 0x95, 0x00, 0x94, 0xb6, 0x69, 0xa7, 0x3d, 0xea, 0xd4, - 0xd7, 0x88, 0x0e, 0xc5, 0x83, 0x43, 0xba, 0xd7, 0xa9, 0xe7, 0x48, 0x19, 0xb4, 0xfd, 0xee, 0x70, - 0x54, 0xcf, 0xf3, 0xd6, 0x1e, 0x6d, 0x3f, 0xaf, 0x17, 0x9a, 0x7f, 0x53, 0x84, 0x8d, 0xac, 0x7b, - 0x5a, 0x90, 0x29, 0xaf, 0xdc, 0x61, 0x96, 0x43, 0x8b, 0x76, 0xb6, 0x5f, 0x6f, 0xef, 0x77, 0xd2, - 0x1d, 0x1e, 0x40, 0x25, 0x60, 0x61, 0xe4, 0x07, 0x8c, 0x17, 0x35, 0x32, 0x77, 0x6b, 0x5d, 0x82, - 0x91, 0x20, 0xda, 0xe5, 0x95, 0x10, 0x55, 0x59, 0x90, 0x2e, 0xe8, 0xb3, 0x79, 0x30, 0x61, 0xb6, - 0x19, 0xc5, 0xd9, 0xf3, 0x2f, 0x56, 0xf3, 0x3b, 0xe0, 0x24, 0x3b, 0x66, 0xc4, 0x68, 0x4a, 0x4d, - 0xf6, 0xa0, 0x3c, 0x75, 0xc2, 0x08, 0x57, 0x56, 0xbc, 0x2c, 0xa7, 0x7d, 0x27, 0x8c, 0xc4, 0xb2, - 0x12, 0xe2, 0xe6, 0x2b, 0xa8, 0xaa, 0x0b, 0xc6, 0x82, 0xce, 0x0f, 0x2c, 0x26, 0xcb, 0x6b, 0xd1, - 0xe1, 0x8a, 0xe7, 0xbe, 0xc5, 0xac, 0x4a, 0x98, 0x8a, 0xec, 0xf1, 0xcc, 0x54, 0x1e, 0x67, 0x28, - 0xcd, 0x24, 0xe9, 0x37, 0xf7, 0x40, 0x4f, 0x96, 0xce, 0x5d, 0xcb, 0x29, 0x33, 0x03, 0xe4, 0x5a, - 0xa4, 0xd8, 0xe6, 0x53, 0xb9, 0xbe, 0x27, 0x79, 0x16, 0xa9, 0xe8, 0xf0, 0x93, 0xb4, 0xcd, 0x53, - 0xa9, 0x51, 0xbc, 0xd9, 0xfc, 0x73, 0xd0, 0x93, 0x95, 0x4b, 0xbd, 0x63, 0x5e, 0x14, 0x38, 0xf8, - 0xa2, 0x10, 0xeb, 0x9d, 0x84, 0x24, 0x13, 0xe5, 0x17, 0x4d, 0x54, 0x58, 0x30, 0x91, 0x96, 0x4c, - 0x24, 0xee, 0xf7, 0x6c, 0x76, 0x82, 0x12, 0x2d, 0x52, 0xd1, 0x31, 0x1e, 0x41, 0x45, 0xd1, 0x0d, - 0x52, 0x81, 0x75, 0xda, 0x19, 0x8e, 0x06, 0x74, 0x99, 0xa2, 0x36, 0xff, 0x3a, 0x0f, 0x9b, 0x67, - 0x02, 0xe0, 0x2a, 0x73, 0xdc, 0x4d, 0x2e, 0x30, 0xf3, 0x98, 0x68, 0xb6, 0x56, 0xc7, 0xd4, 0x85, - 0x37, 0x99, 0x19, 0xaf, 0x56, 0x38, 0xeb, 0xd5, 0x0c, 0xa8, 0xbe, 0x65, 0xa7, 0x61, 0xe4, 0xdb, - 0x6c, 0xca, 0x50, 0x05, 0x0b, 0xf7, 0x74, 0x9a, 0x81, 0xf1, 0x93, 0xb6, 0x02, 0xc6, 0x15, 0xb4, - 0x28, 0x4e, 0x5a, 0xf4, 0x7e, 0xc2, 0x7d, 0x65, 0x73, 0x04, 0x55, 0x35, 0xa6, 0xaf, 0x92, 0xc5, - 0xdd, 0xb8, 0x16, 0x58, 0x92, 0x94, 0x8a, 0xd1, 0x66, 0x9b, 0x73, 0x4d, 0x03, 0xfe, 0x2a, 0xae, - 0x71, 0x6c, 0xcb, 0x2b, 0xb1, 0xed, 0x77, 0x79, 0x80, 0x34, 0xfa, 0xaf, 0xe2, 0xf0, 0x4c, 0x75, - 0x28, 0xf7, 0x2f, 0x4c, 0x24, 0x5a, 0xed, 0xed, 0xfd, 0xf1, 0xf6, 0xa0, 0xd7, 0x6b, 0xf7, 0xa5, - 0x33, 0xb9, 0xf8, 0x60, 0xbe, 0xca, 0x5c, 0xa4, 0x7d, 0xb2, 0x9a, 0xb7, 0x52, 0x7a, 0x12, 0xd0, - 0x82, 0xf9, 0x94, 0xc9, 0x5b, 0x3d, 0x6c, 0x73, 0xb3, 0x9c, 0xf9, 0xa1, 0x93, 0xd4, 0x84, 0x35, - 0x9a, 0xf4, 0x8d, 0x87, 0x50, 0x51, 0x56, 0xc7, 0xd5, 0xb6, 0x3f, 0xe8, 0x73, 0x5d, 0x06, 0x28, - 0xf5, 0x06, 0x3b, 0xdd, 0xdd, 0xd7, 0xaa, 0x32, 0x1b, 0x77, 0xa1, 0x1c, 0x4f, 0x48, 0xaa, 0x50, - 0x3e, 0x1c, 0x76, 0xe8, 0xb8, 0xbd, 0xbd, 0x5f, 0x5f, 0xe3, 0x86, 0x30, 0x7c, 0x3d, 0xc4, 0x4e, - 0xae, 0xf9, 0x25, 0x8f, 0xfb, 0x69, 0x4a, 0xb4, 0xa2, 0xfa, 0x11, 0xa8, 0x02, 0xa3, 0xf9, 0xbb, - 0x1c, 0x54, 0xd5, 0xac, 0x68, 0xe1, 0x65, 0xe4, 0x6d, 0xa5, 0xc0, 0x3e, 0xa7, 0x11, 0xfc, 0x74, - 0xb6, 0x20, 0xef, 0xcf, 0xe4, 0xdd, 0x76, 0x3d, 0x7b, 0xb7, 0x3d, 0x38, 0xa0, 0x79, 0x7f, 0x96, - 0xb9, 0x29, 0xd6, 0xce, 0xdc, 0x14, 0xab, 0x77, 0xd1, 0xc5, 0x33, 0x77, 0xd1, 0xf7, 0xa1, 0xc8, - 0x9d, 0xcb, 0x29, 0x4a, 0x72, 0x43, 0xd9, 0x0a, 0x32, 0xef, 0xf4, 0x47, 0xf4, 0x35, 0x15, 0x18, - 0xcd, 0xff, 0xd0, 0xa0, 0xaa, 0xe6, 0x69, 0xe4, 0x4b, 0xc8, 0x4f, 0x43, 0x29, 0x83, 0x9f, 0xaf, - 0x48, 0xea, 0x5a, 0xfb, 0x21, 0x76, 0x79, 0x79, 0x31, 0x0d, 0xc9, 0x9f, 0xe0, 0x86, 0xc4, 0x8e, - 0x3f, 0x5d, 0x45, 0x3a, 0x98, 0xf1, 0xea, 0x97, 0x25, 0xf4, 0xfe, 0xac, 0xf9, 0x4f, 0x39, 0x58, - 0x97, 0x1c, 0xc9, 0x00, 0x74, 0x7f, 0x1e, 0x1d, 0xf9, 0x81, 0x6b, 0x46, 0xf2, 0x1a, 0xe3, 0xf1, - 0x25, 0x57, 0xd3, 0x1a, 0xcc, 0xa3, 0x5d, 0x24, 0xa4, 0x29, 0x0f, 0xac, 0x58, 0x93, 0x5b, 0x07, - 0x71, 0x4b, 0xa0, 0xdc, 0x2f, 0xfc, 0x12, 0xf4, 0x84, 0x4a, 0x51, 0xb0, 0x0d, 0x80, 0xde, 0xa0, - 0xdf, 0x1d, 0x0d, 0x68, 0xb7, 0xbf, 0x57, 0xcf, 0x71, 0x05, 0xe2, 0x4a, 0xc6, 0x3b, 0x18, 0xdd, - 0xbf, 0x1d, 0x0e, 0xfa, 0xf5, 0x42, 0xf3, 0x2f, 0xf2, 0x50, 0x55, 0xf7, 0x43, 0xbe, 0x41, 0x49, - 0x88, 0x65, 0x3f, 0xfa, 0x31, 0x92, 0x68, 0x0d, 0x66, 0x78, 0xf2, 0xd7, 0xe2, 0xec, 0x5a, 0xac, - 0x54, 0x74, 0xf0, 0x36, 0xdc, 0x9a, 0xca, 0x1b, 0x07, 0xcc, 0xfb, 0x63, 0xc5, 0xd3, 0x94, 0x9b, - 0x03, 0x02, 0xda, 0x3c, 0x64, 0x41, 0x6c, 0x5e, 0xbc, 0x9d, 0xde, 0x4b, 0x94, 0x94, 0x7b, 0x09, - 0x63, 0x1f, 0xf2, 0x83, 0x59, 0x26, 0x8d, 0x01, 0x28, 0xd1, 0x4e, 0x6f, 0xf0, 0x92, 0x87, 0x07, - 0x1d, 0x8a, 0xc3, 0x17, 0x6d, 0xda, 0xa9, 0xe7, 0xf9, 0xbe, 0x0f, 0xfb, 0xa2, 0x53, 0xe0, 0x38, - 0xed, 0xed, 0xed, 0xce, 0x70, 0x58, 0xd7, 0x14, 0x0b, 0x2c, 0x3e, 0x2f, 0x43, 0x29, 0x9c, 0xbf, - 0xb1, 0x5c, 0xfb, 0xb9, 0x0e, 0xeb, 0x96, 0xef, 0xba, 0xa6, 0x67, 0x1b, 0x7f, 0x57, 0x05, 0xe0, - 0xfb, 0x96, 0x17, 0x64, 0x4f, 0xa1, 0xc8, 0x82, 0xc0, 0x0f, 0xa4, 0x82, 0x65, 0xab, 0x38, 0x81, - 0xd3, 0xea, 0x70, 0x84, 0xb8, 0x47, 0x05, 0xbe, 0x5a, 0x3f, 0x0a, 0x05, 0xbb, 0xb3, 0x88, 0x34, - 0x49, 0x01, 0x25, 0xf1, 0xa2, 0xfa, 0xb1, 0xb0, 0x9c, 0x3c, 0x49, 0x3e, 0x62, 0xf2, 0xb8, 0x7e, - 0x94, 0x15, 0x99, 0xb6, 0xa0, 0xd4, 0x91, 0xa4, 0xe8, 0xed, 0x24, 0x59, 0x5c, 0x91, 0x89, 0xc2, - 0xaa, 0xb8, 0x7c, 0xa7, 0xd2, 0x87, 0xc4, 0x3b, 0x3d, 0x53, 0x58, 0x95, 0x96, 0x13, 0x4a, 0xfd, - 0x89, 0x09, 0x45, 0x61, 0xf5, 0x39, 0xd4, 0x32, 0xa2, 0xe3, 0x8a, 0x60, 0xf1, 0x00, 0x92, 0x13, - 0x01, 0x84, 0xb7, 0xf1, 0xb9, 0x22, 0x9c, 0x48, 0xb5, 0xe2, 0xcd, 0xe6, 0x7f, 0xe5, 0x60, 0xf3, - 0x8c, 0xdc, 0x2e, 0x47, 0x49, 0xbe, 0xcb, 0xa4, 0x52, 0x3c, 0x09, 0x78, 0x74, 0x89, 0x43, 0x89, - 0xfb, 0x5d, 0xef, 0xc8, 0x57, 0x72, 0xaf, 0xef, 0xa1, 0xa2, 0x0c, 0xac, 0x8a, 0x6c, 0xc9, 0x43, - 0x6c, 0x7e, 0xf9, 0x43, 0x6c, 0xf3, 0xb7, 0x05, 0xd8, 0x3c, 0x73, 0xa4, 0x97, 0xdf, 0x99, 0x3c, - 0xfa, 0x0b, 0x77, 0x76, 0x86, 0x79, 0xdc, 0x17, 0x3b, 0x8b, 0x19, 0x34, 0x7f, 0x93, 0x87, 0x8a, - 0x32, 0xf2, 0xfb, 0x49, 0x26, 0xb8, 0x04, 0x6c, 0xe5, 0x5d, 0xe8, 0xac, 0x04, 0x70, 0x2c, 0xf9, - 0x05, 0x43, 0x53, 0x7e, 0xc1, 0x38, 0x90, 0x91, 0xbb, 0x88, 0xde, 0xe9, 0x97, 0x3f, 0x72, 0x5f, - 0xad, 0x9d, 0xce, 0x7e, 0x67, 0xd4, 0x1d, 0xf4, 0x95, 0x78, 0x2e, 0x33, 0xab, 0x52, 0x92, 0x59, - 0x19, 0x06, 0x54, 0x55, 0x3c, 0xee, 0x2a, 0x77, 0xbb, 0xfb, 0xdc, 0xc1, 0x94, 0x41, 0x1b, 0xd1, - 0x4e, 0xa7, 0x9e, 0x6b, 0xee, 0x41, 0x45, 0x31, 0x9a, 0x4b, 0x1e, 0x4c, 0x9c, 0x3a, 0x14, 0xd2, - 0xd4, 0xa1, 0x79, 0x0c, 0xb5, 0x8c, 0x21, 0x5d, 0x92, 0xd5, 0x63, 0xd0, 0xd1, 0xe0, 0x3c, 0x71, - 0x7f, 0x50, 0xc8, 0xc4, 0xfc, 0xf4, 0xb1, 0x9a, 0xa6, 0x58, 0xcd, 0x50, 0xde, 0x42, 0xe3, 0x31, - 0xc6, 0x37, 0xce, 0xb9, 0xec, 0x8d, 0x33, 0xbe, 0xd5, 0xc8, 0x5b, 0x68, 0xde, 0x5e, 0xb4, 0xe4, - 0xf8, 0xd1, 0x54, 0x4b, 0x1f, 0x4d, 0x1b, 0xb0, 0xee, 0xa1, 0x19, 0xdb, 0x32, 0x9a, 0xc7, 0xdd, - 0xe6, 0x33, 0xa8, 0x88, 0xab, 0x5b, 0xcb, 0x62, 0x61, 0xb8, 0x70, 0xda, 0x06, 0xac, 0x4f, 0x02, - 0xd3, 0x8b, 0x98, 0x2d, 0x8b, 0x9d, 0xb8, 0xdb, 0xfc, 0xfb, 0x1c, 0xd4, 0x32, 0xce, 0xe2, 0x92, - 0xc2, 0xf9, 0x1c, 0x4a, 0x38, 0x7d, 0xac, 0xfe, 0xb7, 0x96, 0x7a, 0x21, 0x54, 0x76, 0x89, 0x4c, - 0x9e, 0x42, 0xc9, 0xc4, 0x65, 0x62, 0xa2, 0xbe, 0xc4, 0x55, 0x2a, 0xbb, 0xa1, 0x12, 0xdd, 0xb8, - 0x0f, 0xb5, 0x7e, 0x38, 0x8c, 0xcc, 0x68, 0xe5, 0x05, 0xb0, 0xf1, 0x8f, 0x05, 0xd8, 0x88, 0x71, - 0x2f, 0xd8, 0x13, 0x01, 0x8d, 0xa5, 0x9b, 0xc2, 0x36, 0x46, 0xd5, 0x88, 0x17, 0x0a, 0xf2, 0xce, - 0x1e, 0x3b, 0xbc, 0x7e, 0xf0, 0xd4, 0x1c, 0x4b, 0xf6, 0xc8, 0x16, 0x54, 0x3c, 0xe5, 0x87, 0x08, - 0x71, 0x2c, 0x2a, 0x88, 0xdc, 0x00, 0xfd, 0x8d, 0xef, 0x47, 0x63, 0xb4, 0x43, 0xf1, 0xb7, 0x40, - 0x99, 0x03, 0xf0, 0xc7, 0xad, 0xdb, 0x50, 0xb1, 0xe6, 0x01, 0xfe, 0xed, 0x72, 0xe4, 0xd8, 0xf2, - 0x7f, 0x01, 0x90, 0xa0, 0x5d, 0xc7, 0x56, 0x11, 0x2c, 0xc7, 0x96, 0x7f, 0x0b, 0xc4, 0x08, 0xdb, - 0x02, 0xc1, 0x65, 0xee, 0xf8, 0x9d, 0x13, 0x44, 0x73, 0x73, 0x2a, 0xff, 0x15, 0x00, 0x97, 0xb9, - 0x2f, 0x05, 0x84, 0x7c, 0x04, 0x55, 0x8e, 0x10, 0xb0, 0xd0, 0xb1, 0x99, 0x17, 0xc9, 0xa7, 0x4e, - 0x4e, 0x44, 0x25, 0x88, 0x2f, 0x91, 0xa3, 0x88, 0x88, 0x52, 0x91, 0x79, 0x22, 0x73, 0x45, 0x9a, - 0x72, 0x0b, 0x38, 0xb7, 0xf1, 0x24, 0xf0, 0xdf, 0x47, 0xc7, 0xf8, 0xee, 0xa9, 0x51, 0x8e, 0xbe, - 0x87, 0x00, 0x7e, 0x06, 0xd1, 0x71, 0xc0, 0x4c, 0x5b, 0xfc, 0x02, 0xa0, 0xd1, 0xb8, 0xcb, 0x15, - 0xe6, 0xc8, 0x0e, 0xf1, 0x89, 0x53, 0xa3, 0xbc, 0xc9, 0x85, 0x38, 0x9f, 0xa1, 0x1c, 0xc4, 0x9f, - 0x26, 0xb2, 0x67, 0xfc, 0x73, 0x01, 0x6a, 0x3d, 0xd3, 0x73, 0xa6, 0x49, 0xae, 0xfc, 0x0d, 0x54, - 0x03, 0xd1, 0x1c, 0x2b, 0x6f, 0x54, 0xe9, 0xf5, 0x75, 0xaf, 0xdd, 0xef, 0xee, 0xb7, 0xc7, 0xb4, - 0xf3, 0xfd, 0x61, 0x67, 0x38, 0x12, 0x75, 0x43, 0x45, 0x52, 0x8c, 0xb8, 0xbb, 0xf9, 0x00, 0xca, - 0x5c, 0x17, 0xc6, 0x67, 0xfe, 0xb8, 0xfb, 0x4e, 0x3c, 0x3b, 0xe1, 0x5f, 0x8d, 0x96, 0x1f, 0x67, - 0x49, 0x49, 0x9f, 0x6f, 0x16, 0xa5, 0x30, 0x56, 0xff, 0x34, 0x40, 0x08, 0xfe, 0x35, 0xb6, 0x05, - 0x15, 0x9b, 0x85, 0x56, 0xe0, 0xcc, 0x92, 0x47, 0x1a, 0x9d, 0xaa, 0x20, 0x3e, 0xaf, 0x60, 0x20, - 0x7f, 0x5d, 0xd3, 0xe9, 0x3a, 0xf6, 0xbb, 0x36, 0xf9, 0x18, 0x36, 0xc4, 0x90, 0x78, 0xaf, 0x95, - 0xc7, 0xad, 0xd3, 0x2a, 0x42, 0xf7, 0x38, 0x50, 0xfc, 0xdf, 0x26, 0x52, 0x82, 0xb2, 0x28, 0xd6, - 0x45, 0xbc, 0x6f, 0xc0, 0x3a, 0x16, 0xac, 0x7e, 0x80, 0x27, 0xac, 0xd3, 0xb8, 0xcb, 0x65, 0xca, - 0x44, 0xd6, 0x06, 0xe2, 0x91, 0x47, 0xf4, 0xf8, 0xb1, 0x9b, 0xb6, 0xeb, 0x78, 0x63, 0x39, 0x5a, - 0x11, 0x6b, 0x45, 0x58, 0x27, 0x79, 0x59, 0x16, 0x0b, 0xc2, 0x07, 0xb0, 0xaa, 0xb2, 0xd9, 0x17, - 0x7e, 0x18, 0x91, 0xbb, 0xf1, 0x7a, 0xe3, 0xb7, 0x75, 0xf9, 0x8f, 0x47, 0x0d, 0xa1, 0xf1, 0x3b, - 0xba, 0xf1, 0x6f, 0x39, 0xd8, 0x88, 0x0f, 0x4f, 0x9a, 0x9a, 0x74, 0x15, 0xb9, 0x8c, 0x4b, 0xb6, - 0xe2, 0x32, 0xb5, 0x28, 0x8d, 0xef, 0x16, 0x40, 0xe4, 0x47, 0xe6, 0x74, 0x3c, 0x0f, 0xe5, 0x03, - 0x50, 0x81, 0xea, 0x08, 0x39, 0x0c, 0x19, 0x0f, 0x71, 0x1b, 0x62, 0xd8, 0x32, 0x67, 0xa6, 0xe5, - 0x44, 0xe2, 0x4a, 0xa3, 0x40, 0x6b, 0x08, 0xdd, 0x96, 0x40, 0xf2, 0x09, 0x6c, 0x7a, 0xec, 0xbd, - 0xd0, 0xdd, 0x71, 0x9a, 0x4c, 0x15, 0x68, 0xcd, 0x63, 0xef, 0x51, 0x83, 0xd1, 0x4d, 0x73, 0xe9, - 0xa7, 0x78, 0xca, 0x43, 0x5a, 0x35, 0x46, 0x3b, 0x30, 0xa3, 0xe3, 0x07, 0x7f, 0x0c, 0xda, 0x99, - 0x58, 0x54, 0x03, 0x7d, 0x7b, 0xd0, 0x1f, 0xb5, 0xbb, 0xfd, 0x0e, 0x5d, 0x90, 0xdc, 0x0f, 0x47, - 0xed, 0x51, 0xbd, 0xf0, 0xe0, 0x21, 0xe8, 0xc9, 0xff, 0x46, 0x1c, 0xcc, 0xeb, 0x49, 0x71, 0x8f, - 0xb2, 0x47, 0x07, 0x87, 0x07, 0x22, 0x3b, 0x3e, 0xa0, 0x83, 0x6f, 0x3b, 0xdb, 0x1c, 0xfd, 0x11, - 0xac, 0xcb, 0x12, 0x8e, 0xac, 0x43, 0x61, 0xaf, 0x33, 0xaa, 0xaf, 0xf1, 0xc6, 0xb0, 0x33, 0xaa, - 0xe7, 0x48, 0x09, 0xf2, 0xb4, 0x57, 0xcf, 0x63, 0x9a, 0xdd, 0xeb, 0x0f, 0x76, 0x3a, 0xc8, 0x1f, - 0xd2, 0xb2, 0x2c, 0x5b, 0xdc, 0xbe, 0x1c, 0xec, 0x1f, 0xf6, 0x64, 0x2a, 0xde, 0x45, 0xf4, 0xfc, - 0x83, 0xdf, 0xe4, 0xe0, 0xea, 0x02, 0x13, 0x21, 0x75, 0xa8, 0x8a, 0x2c, 0x7e, 0x2c, 0xf2, 0xf4, - 0x35, 0x0e, 0xc1, 0x20, 0x1c, 0x43, 0x72, 0x1c, 0xd2, 0x79, 0x35, 0xea, 0xf4, 0x77, 0xc6, 0x71, - 0x62, 0x5f, 0x87, 0xea, 0xf0, 0x05, 0xed, 0xf6, 0xbf, 0x1b, 0xc7, 0xd9, 0xfd, 0x55, 0xd8, 0xec, - 0xb5, 0xfb, 0xed, 0xbd, 0xce, 0xb8, 0xf3, 0x4a, 0x4a, 0x43, 0xc3, 0x32, 0xba, 0x2f, 0xc0, 0xf5, - 0x22, 0x21, 0xb0, 0xb1, 0xd7, 0x19, 0x8d, 0xb7, 0xdb, 0x07, 0xed, 0xed, 0xee, 0xa8, 0xdb, 0x19, - 0xd6, 0x4b, 0x4f, 0xfe, 0xa7, 0x00, 0x85, 0x8e, 0x1f, 0x92, 0x27, 0xa0, 0x1d, 0x38, 0xde, 0x84, - 0xa4, 0x2f, 0xba, 0xca, 0x4f, 0xc5, 0x4d, 0x72, 0x06, 0x3a, 0x9b, 0x9e, 0x1a, 0x6b, 0xe4, 0x31, - 0xe4, 0x7b, 0x3b, 0x84, 0x28, 0xa9, 0x50, 0x8c, 0x7f, 0x35, 0x03, 0x13, 0x2a, 0x68, 0xac, 0x7d, - 0x96, 0x23, 0x9f, 0x83, 0xb6, 0xeb, 0x78, 0x36, 0x51, 0x1f, 0xd0, 0x93, 0xe7, 0xef, 0xe5, 0x64, - 0xcf, 0xa0, 0x24, 0x42, 0x07, 0xb9, 0x9e, 0x46, 0x26, 0x35, 0xee, 0x34, 0x7f, 0x76, 0x0e, 0x1e, - 0x93, 0x93, 0x6f, 0x61, 0xf3, 0xcc, 0x5f, 0xcb, 0xe4, 0xf6, 0xf9, 0x77, 0xf9, 0xcc, 0x8f, 0xc4, - 0xcd, 0x74, 0x7d, 0xca, 0x9f, 0xc0, 0xc6, 0x1a, 0xf9, 0x53, 0x80, 0xf4, 0xaf, 0x63, 0xd2, 0xcc, - 0xfc, 0x06, 0x70, 0x39, 0x0e, 0x8f, 0x41, 0xeb, 0x9c, 0x30, 0x4b, 0x11, 0x5b, 0x52, 0x5e, 0x2a, - 0xfb, 0x4f, 0xc3, 0xae, 0xb1, 0x46, 0x5e, 0xc0, 0x55, 0x61, 0xcd, 0x43, 0x16, 0xbc, 0x63, 0xc9, - 0x45, 0x5f, 0x2a, 0x8a, 0x8c, 0xa3, 0x56, 0x44, 0x91, 0xf5, 0x01, 0xc6, 0xda, 0xf3, 0x43, 0xd8, - 0x74, 0xfc, 0xd6, 0x84, 0x8f, 0x49, 0x9c, 0xe7, 0xe5, 0x8e, 0x1f, 0x62, 0xc2, 0x74, 0x90, 0xfb, - 0xb3, 0xcf, 0x26, 0x4e, 0x74, 0x3c, 0x7f, 0xd3, 0xb2, 0x7c, 0xf7, 0x91, 0xc5, 0x02, 0xef, 0x21, - 0xf3, 0xc3, 0x47, 0x1c, 0xfb, 0x21, 0x7a, 0xe3, 0x47, 0xf8, 0x7d, 0x33, 0x3f, 0x7a, 0xc6, 0xfc, - 0x70, 0xcc, 0xe1, 0x7f, 0x9b, 0x2f, 0x74, 0x06, 0xc3, 0x37, 0x25, 0x1c, 0xf8, 0xc3, 0xff, 0x0b, - 0x00, 0x00, 0xff, 0xff, 0xb0, 0x42, 0x10, 0xe2, 0x9f, 0x2e, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// EosClient is the client API for Eos service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EosClient interface { - // Replies to a ping - Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingReply, error) - // Replies to MD requests with a stream - MD(ctx context.Context, in *MDRequest, opts ...grpc.CallOption) (Eos_MDClient, error) - // Replies to Find requests with a stream - Find(ctx context.Context, in *FindRequest, opts ...grpc.CallOption) (Eos_FindClient, error) - // Replies to a NsStat operation - NsStat(ctx context.Context, in *NsStatRequest, opts ...grpc.CallOption) (*NsStatResponse, error) - // Replies to an insert - ContainerInsert(ctx context.Context, in *ContainerInsertRequest, opts ...grpc.CallOption) (*InsertReply, error) - FileInsert(ctx context.Context, in *FileInsertRequest, opts ...grpc.CallOption) (*InsertReply, error) - // Replies to a NsRequest operation - Exec(ctx context.Context, in *NSRequest, opts ...grpc.CallOption) (*NSResponse, error) - // Manila Driver - ManilaServerRequest(ctx context.Context, in *ManilaRequest, opts ...grpc.CallOption) (*ManilaResponse, error) -} - -type eosClient struct { - cc grpc.ClientConnInterface -} - -func NewEosClient(cc grpc.ClientConnInterface) EosClient { - return &eosClient{cc} -} - -func (c *eosClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingReply, error) { - out := new(PingReply) - err := c.cc.Invoke(ctx, "/eos.rpc.Eos/Ping", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *eosClient) MD(ctx context.Context, in *MDRequest, opts ...grpc.CallOption) (Eos_MDClient, error) { - stream, err := c.cc.NewStream(ctx, &_Eos_serviceDesc.Streams[0], "/eos.rpc.Eos/MD", opts...) - if err != nil { - return nil, err - } - x := &eosMDClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Eos_MDClient interface { - Recv() (*MDResponse, error) - grpc.ClientStream -} - -type eosMDClient struct { - grpc.ClientStream -} - -func (x *eosMDClient) Recv() (*MDResponse, error) { - m := new(MDResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *eosClient) Find(ctx context.Context, in *FindRequest, opts ...grpc.CallOption) (Eos_FindClient, error) { - stream, err := c.cc.NewStream(ctx, &_Eos_serviceDesc.Streams[1], "/eos.rpc.Eos/Find", opts...) - if err != nil { - return nil, err - } - x := &eosFindClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Eos_FindClient interface { - Recv() (*MDResponse, error) - grpc.ClientStream -} - -type eosFindClient struct { - grpc.ClientStream -} - -func (x *eosFindClient) Recv() (*MDResponse, error) { - m := new(MDResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *eosClient) NsStat(ctx context.Context, in *NsStatRequest, opts ...grpc.CallOption) (*NsStatResponse, error) { - out := new(NsStatResponse) - err := c.cc.Invoke(ctx, "/eos.rpc.Eos/NsStat", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *eosClient) ContainerInsert(ctx context.Context, in *ContainerInsertRequest, opts ...grpc.CallOption) (*InsertReply, error) { - out := new(InsertReply) - err := c.cc.Invoke(ctx, "/eos.rpc.Eos/ContainerInsert", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *eosClient) FileInsert(ctx context.Context, in *FileInsertRequest, opts ...grpc.CallOption) (*InsertReply, error) { - out := new(InsertReply) - err := c.cc.Invoke(ctx, "/eos.rpc.Eos/FileInsert", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *eosClient) Exec(ctx context.Context, in *NSRequest, opts ...grpc.CallOption) (*NSResponse, error) { - out := new(NSResponse) - err := c.cc.Invoke(ctx, "/eos.rpc.Eos/Exec", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *eosClient) ManilaServerRequest(ctx context.Context, in *ManilaRequest, opts ...grpc.CallOption) (*ManilaResponse, error) { - out := new(ManilaResponse) - err := c.cc.Invoke(ctx, "/eos.rpc.Eos/ManilaServerRequest", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// EosServer is the server API for Eos service. -type EosServer interface { - // Replies to a ping - Ping(context.Context, *PingRequest) (*PingReply, error) - // Replies to MD requests with a stream - MD(*MDRequest, Eos_MDServer) error - // Replies to Find requests with a stream - Find(*FindRequest, Eos_FindServer) error - // Replies to a NsStat operation - NsStat(context.Context, *NsStatRequest) (*NsStatResponse, error) - // Replies to an insert - ContainerInsert(context.Context, *ContainerInsertRequest) (*InsertReply, error) - FileInsert(context.Context, *FileInsertRequest) (*InsertReply, error) - // Replies to a NsRequest operation - Exec(context.Context, *NSRequest) (*NSResponse, error) - // Manila Driver - ManilaServerRequest(context.Context, *ManilaRequest) (*ManilaResponse, error) -} - -// UnimplementedEosServer can be embedded to have forward compatible implementations. -type UnimplementedEosServer struct { -} - -func (*UnimplementedEosServer) Ping(ctx context.Context, req *PingRequest) (*PingReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") -} -func (*UnimplementedEosServer) MD(req *MDRequest, srv Eos_MDServer) error { - return status.Errorf(codes.Unimplemented, "method MD not implemented") -} -func (*UnimplementedEosServer) Find(req *FindRequest, srv Eos_FindServer) error { - return status.Errorf(codes.Unimplemented, "method Find not implemented") -} -func (*UnimplementedEosServer) NsStat(ctx context.Context, req *NsStatRequest) (*NsStatResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method NsStat not implemented") -} -func (*UnimplementedEosServer) ContainerInsert(ctx context.Context, req *ContainerInsertRequest) (*InsertReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method ContainerInsert not implemented") -} -func (*UnimplementedEosServer) FileInsert(ctx context.Context, req *FileInsertRequest) (*InsertReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method FileInsert not implemented") -} -func (*UnimplementedEosServer) Exec(ctx context.Context, req *NSRequest) (*NSResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Exec not implemented") -} -func (*UnimplementedEosServer) ManilaServerRequest(ctx context.Context, req *ManilaRequest) (*ManilaResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ManilaServerRequest not implemented") -} - -func RegisterEosServer(s *grpc.Server, srv EosServer) { - s.RegisterService(&_Eos_serviceDesc, srv) -} - -func _Eos_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PingRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EosServer).Ping(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/eos.rpc.Eos/Ping", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EosServer).Ping(ctx, req.(*PingRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Eos_MD_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(MDRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(EosServer).MD(m, &eosMDServer{stream}) -} - -type Eos_MDServer interface { - Send(*MDResponse) error - grpc.ServerStream -} - -type eosMDServer struct { - grpc.ServerStream -} - -func (x *eosMDServer) Send(m *MDResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Eos_Find_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(FindRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(EosServer).Find(m, &eosFindServer{stream}) -} - -type Eos_FindServer interface { - Send(*MDResponse) error - grpc.ServerStream -} - -type eosFindServer struct { - grpc.ServerStream -} - -func (x *eosFindServer) Send(m *MDResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Eos_NsStat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(NsStatRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EosServer).NsStat(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/eos.rpc.Eos/NsStat", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EosServer).NsStat(ctx, req.(*NsStatRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Eos_ContainerInsert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ContainerInsertRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EosServer).ContainerInsert(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/eos.rpc.Eos/ContainerInsert", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EosServer).ContainerInsert(ctx, req.(*ContainerInsertRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Eos_FileInsert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(FileInsertRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EosServer).FileInsert(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/eos.rpc.Eos/FileInsert", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EosServer).FileInsert(ctx, req.(*FileInsertRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Eos_Exec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(NSRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EosServer).Exec(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/eos.rpc.Eos/Exec", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EosServer).Exec(ctx, req.(*NSRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Eos_ManilaServerRequest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ManilaRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EosServer).ManilaServerRequest(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/eos.rpc.Eos/ManilaServerRequest", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EosServer).ManilaServerRequest(ctx, req.(*ManilaRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Eos_serviceDesc = grpc.ServiceDesc{ - ServiceName: "eos.rpc.Eos", - HandlerType: (*EosServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Ping", - Handler: _Eos_Ping_Handler, - }, - { - MethodName: "NsStat", - Handler: _Eos_NsStat_Handler, - }, - { - MethodName: "ContainerInsert", - Handler: _Eos_ContainerInsert_Handler, - }, - { - MethodName: "FileInsert", - Handler: _Eos_FileInsert_Handler, - }, - { - MethodName: "Exec", - Handler: _Eos_Exec_Handler, - }, - { - MethodName: "ManilaServerRequest", - Handler: _Eos_ManilaServerRequest_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "MD", - Handler: _Eos_MD_Handler, - ServerStreams: true, - }, - { - StreamName: "Find", - Handler: _Eos_Find_Handler, - ServerStreams: true, - }, - }, - Metadata: "Rpc.proto", -} diff --git a/pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto b/pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto deleted file mode 100644 index 7e94c164c3..0000000000 --- a/pkg/eosclient/eosgrpc/eos_grpc/Rpc.proto +++ /dev/null @@ -1,611 +0,0 @@ -// @project The CERN Tape Archive (CTA) -// @brief CTA-EOS gRPC API for CASTOR-EOS migration -// @copyright Copyright 2019 CERN -// @license This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - - -// NOTE: Compile for Go with: -// protoc ./Rpc.proto --go_out=plugins=grpc:. -// protoc --go_out=. ./Rpc.proto - -syntax = "proto3"; - -package eos.rpc; - -option java_multiple_files = true; -option java_package = "io.grpc.eos.rpc"; -option java_outer_classname = "EosProto"; -option objc_class_prefix = "EOS"; -option go_package = "github.com/cern-eos/grpc-proto/protobuf;eos_grpc"; - - -service Eos { - // Replies to a ping - rpc Ping (PingRequest) returns (PingReply) {} - - // --------------------------------------------------------------------- - // NAMESPACE - // --------------------------------------------------------------------- - - // Replies to MD requests with a stream - rpc MD (MDRequest) returns (stream MDResponse) {} - - // Replies to Find requests with a stream - rpc Find (FindRequest) returns (stream MDResponse) {} - - // Replies to a NsStat operation - rpc NsStat (NsStatRequest) returns (NsStatResponse) {} - - // Replies to an insert - rpc ContainerInsert (ContainerInsertRequest) returns (InsertReply) {} - rpc FileInsert (FileInsertRequest) returns (InsertReply) {} - - // Replies to a NsRequest operation - rpc Exec (NSRequest) returns (NSResponse) {} - - // --------------------------------------------------------------------- - // OPENSTACK - // --------------------------------------------------------------------- - - // Manila Driver - rpc ManilaServerRequest (ManilaRequest) returns (ManilaResponse) {} -} - -message PingRequest { - string authkey = 1; - bytes message = 2; -} - -message PingReply { - bytes message = 1; -} - -// --------------------------------------------------------------------- -// NAMESPACE -// --------------------------------------------------------------------- - -message ContainerInsertRequest { - repeated ContainerMdProto container = 1; - string authkey = 2; - bool inherit_md = 3; -} - -message FileInsertRequest { - repeated FileMdProto files = 1; - string authkey = 2; -} - -message InsertReply { - repeated string message = 1; - repeated uint32 retc = 2; -} - -message Time { - uint64 sec = 1; - uint64 n_sec = 2; -} - -message Checksum { - bytes value = 1; - string type = 2; -} - -message FileMdProto { - uint64 id = 1; - uint64 cont_id = 2; - uint64 uid = 3; - uint64 gid = 4; - uint64 size = 5; - uint32 layout_id = 6; - uint32 flags = 7; - bytes name = 8; - bytes link_name = 9; - Time ctime = 10; // change time - Time mtime = 11; // modification time - Checksum checksum =12; - repeated uint32 locations = 13; - repeated uint32 unlink_locations = 14; - map xattrs = 15; - bytes path = 16; - string etag = 17; - uint64 inode = 18; -} - -message ContainerMdProto { - uint64 id = 1; - uint64 parent_id = 2; - uint64 uid = 3; - uint64 gid = 4; - int64 tree_size = 6; - uint32 mode = 5; - uint32 flags = 7; - bytes name = 8; - Time ctime = 9; // change time - Time mtime = 10; // modification time - Time stime = 11; // sync time - map xattrs = 12; - bytes path = 13; - string etag = 14; - uint64 inode = 15; - uint64 files = 16; - uint64 containers = 17; -} - -enum TYPE { FILE = 0; CONTAINER = 1; LISTING = 2; STAT = 3;} - -enum QUOTATYPE { USER = 0; GROUP = 2; PROJECT = 3;} - -enum QUOTAOP { GET = 0; SET = 1; RM = 2; RMNODE = 3;} - -enum QUOTAENTRY { NONE = 0; VOLUME = 1; INODE = 2;} - -message QuotaProto { - bytes path = 1; // quota node path - string name = 2; // associated name for the given type - QUOTATYPE type = 3; // user,group,project or all quota - uint64 usedbytes = 4; // bytes used physical - uint64 usedlogicalbytes = 5; // bytes used logical - uint64 usedfiles = 6; // number of files used - uint64 maxbytes = 7; // maximum number of bytes (volume quota) - uint64 maxlogicalbytes = 8; // maximum number of logical bytes (logical volume quota) - uint64 maxfiles = 9; // maximum number of files (inode quota) - float percentageusedbytes = 10; // percentage of volume quota used from 0 to 100 - float percentageusedfiles = 11; // percentag of inode quota used from 0 to 100 - string statusbytes = 12; // status string for volume quota ok,warning,exceeded - string statusfiles = 13; // status string for inode quota ok,warning,exceeded -} - -message RoleId { - uint64 uid = 1; - uint64 gid = 2; - string username = 3; - string groupname = 4; - string app = 5; -} - -message MDId { - bytes path = 1; - fixed64 id = 2; - fixed64 ino = 3; - TYPE type = 4; -} - -message Limit { - bool zero = 1; - uint64 min = 2; - uint64 max = 3; -} - -message MDSelection { - bool select = 1; - Limit ctime = 2; - Limit mtime = 3; - Limit stime = 4; - Limit size = 5; - Limit treesize = 6; - Limit children = 7; - Limit locations = 8; - Limit unlinked_locations = 9; - uint64 layoutid = 10; - uint64 flags = 11; - bool symlink = 12; - Checksum checksum = 13; - uint32 owner = 14; - uint32 group = 15; - bool owner_root = 16; - bool group_root = 17; - bytes regexp_filename = 18; - bytes regexp_dirname = 19; - map xattr = 20; -} - -message MDRequest { - TYPE type = 1; - MDId id = 2; - string authkey = 3; - RoleId role = 4; - MDSelection selection = 5; -} - -message MDResponse { - TYPE type = 1; - FileMdProto fmd = 2; - ContainerMdProto cmd = 3; -} - -message FindRequest { - TYPE type = 1; - MDId id = 2; - RoleId role = 3; - string authkey = 4; - uint64 maxdepth = 5; - MDSelection selection = 6; -} - -message ShareAuth { - string prot = 1; - string name = 2; - string host = 3; -} - - -message ShareProto { - string permission = 1; - uint64 expires = 2; - string owner = 3; - string group = 4; - uint64 generation = 5; - string path = 6; - bool allowtree = 7; - string vtoken = 8; - repeated ShareAuth origins = 9; -} - -message ShareToken { - ShareProto token = 1; - bytes signature = 2; - bytes serialized = 3; - int32 seed = 4; -} - -message NSRequest { - message MkdirRequest { - MDId id = 1; - bool recursive = 2; - int64 mode = 3; - } - - message RmdirRequest { - MDId id = 1; - } - - message TouchRequest { - MDId id = 1; - } - - message UnlinkRequest { - MDId id = 1; - bool norecycle = 3; - } - - message RmRequest { - MDId id = 1; - bool recursive = 2; - bool norecycle = 3; - } - - message RenameRequest { - MDId id = 1; - bytes target = 2; - } - - message SymlinkRequest { - MDId id = 1; - bytes target = 2; - } - - message VersionRequest { - enum VERSION_CMD { - CREATE= 0; - PURGE = 1; - LIST = 2; - GRAB = 3; - } - MDId id = 1; - VERSION_CMD cmd = 2; - int32 maxversion = 3; - string grabversion = 4; - } - - message RecycleRequest { - string key = 1; - enum RECYCLE_CMD { - RESTORE = 0; - PURGE = 1; - LIST = 2; - } - - RECYCLE_CMD cmd = 2; - - message RestoreFlags { - bool force = 1; - bool mkpath = 2; - bool versions = 3; - } - - message PurgeDate { - int32 year = 1; - int32 month = 2; - int32 day = 3; - } - - message ListFlags { - int32 maxentries = 1; - int32 year = 2; - int32 month = 3; - int32 day = 4; - int32 index = 5; - } - - RestoreFlags restoreflag = 3; - PurgeDate purgedate = 4; - ListFlags listflag = 5; - } - - message SetXAttrRequest { - MDId id = 1; - map xattrs = 2; - bool recursive = 3; - repeated string keystodelete = 4; - bool create = 5; - } - - message ChownRequest { - MDId id = 1; - RoleId owner = 2; - } - - message ChmodRequest { - MDId id = 1; - int64 mode = 2; - } - - message AclRequest { - enum ACL_COMMAND { - NONE = 0; - MODIFY = 1; - LIST = 2; - } - - enum ACL_TYPE { - USER_ACL = 0; - SYS_ACL = 1; - } - - MDId id = 1; - ACL_COMMAND cmd = 2; - bool recursive = 3; - ACL_TYPE type = 4; - string rule = 5; - uint32 position = 6; - } - - message TokenRequest { - ShareToken token = 1; - } - - message QuotaRequest { - bytes path = 1; - RoleId id = 2; - QUOTAOP op = 3; // get or set, rm or rmnode - uint64 maxfiles = 4; // maximum number of bytes (volume quota) for setting - uint64 maxbytes = 5; // maximum number of bytes (volume quota) for setting - QUOTAENTRY entry = 6; // select volume or inode entry for deletion - } - - message ShareRequest { - message LsShare { - enum OutFormat { - NONE = 0; // - MONITORING = 1; // [-m] - LISTING = 2; // [-l] - JSON = 3; // [grpc] - } - OutFormat outformat = 1; // - string selection = 2; // - } - - message OperateShare { - enum Op { - CREATE = 0; - REMOVE = 1; - SHARE = 2; - UNSHARE = 3; - ACCESS = 4; - MODIFY = 5; - } - Op op = 1; - string share = 2; - string acl = 3; - string path = 4; - string user = 5; - string group = 6; - } - - oneof subcmd { - LsShare ls = 1; - OperateShare op = 2; - } - } - - string authkey = 1; - RoleId role = 2; - - // Actual request data object - oneof command { - MkdirRequest mkdir = 21; - RmdirRequest rmdir = 22; - TouchRequest touch = 23; - UnlinkRequest unlink = 24; - RmRequest rm = 25; - RenameRequest rename = 26; - SymlinkRequest symlink = 27; - VersionRequest version = 28; - RecycleRequest recycle = 29; - SetXAttrRequest xattr = 30; - ChownRequest chown = 31; - ChmodRequest chmod = 32; - AclRequest acl = 33; - TokenRequest token = 34; - QuotaRequest quota = 35; - ShareRequest share = 36; - } -} - - - -message NSResponse { - message ErrorResponse { - int64 code = 1; - string msg = 2; - } - - message VersionResponse { - message VersionInfo { - MDId id = 1; - Time mtime = 2; - } - int64 code = 1; - string msg = 2; - repeated VersionInfo versions = 3; - } - - message RecycleResponse { - int64 code = 1; - string msg = 2; - - message RecycleInfo { - enum DELETIONTYPE { FILE = 0; TREE = 1; } - MDId id = 1; - RoleId owner = 2; - Time dtime = 3; - uint64 size = 4; - DELETIONTYPE type = 5; - string key = 6; - } - - repeated RecycleInfo recycles = 3; - } - - message AclResponse { - int64 code = 1; - string msg = 2; - string rule = 3; - } - - message QuotaResponse { - int64 code = 1; - string msg = 2; - repeated QuotaProto quotanode = 3; - } - - message ShareInfo { - string name = 1; - string root = 2; - string rule = 3; - uint64 uid = 4; - uint64 nshared = 5; - } - - message ShareAccess { - string name = 1; - bool granted = 2; - } - - message ShareResponse { - int64 code = 1; - string msg = 2; - repeated ShareInfo shares = 3; - repeated ShareAccess access = 4; - } - - ErrorResponse error = 1; - VersionResponse version = 2; - RecycleResponse recycle = 3; - AclResponse acl = 4; - QuotaResponse quota = 5; - ShareResponse share = 6; -} - -message NsStatRequest { - string authkey = 1; -} - -message NsStatResponse { - int64 code = 1; - string emsg = 2; - string state = 3; - uint64 nfiles = 4; - uint64 ncontainers = 5; - uint64 boot_time = 6; - uint64 current_fid = 7; - uint64 current_cid = 8; - uint64 mem_virtual = 9; - uint64 mem_resident = 10; - uint64 mem_share = 11; - uint64 mem_growth = 12; - uint64 threads = 13; - uint64 fds = 14; - uint64 uptime = 15; -} - -// --------------------------------------------------------------------- -// OPENSTACK -// --------------------------------------------------------------------- - -enum MANILA_REQUEST_TYPE { - CREATE_SHARE = 0; - DELETE_SHARE = 1; - EXTEND_SHARE = 2; - SHRINK_SHARE = 3; - MANAGE_EXISTING = 4; - UNMANAGE = 5; - GET_CAPACITIES = 6; -/* EXTRA FUNCTIONS NOT IMPLEMENTED */ - /* - CREATE_SNAPSHOT = 7; - DELETE_SNAPSHOT = 8; - CREATE_SHARE_FROM_SNAPSHOT = 9; - ENSURE_SHARE = 10; - ALLOW_ACCESS = 11; - DENY_ACCESS = 12; - GET_SHARE_STATS = 13; - DO_SETUP = 14; - SETUP_SERVER = 15; - TEARDOWN_SERVER = 16; - GET_NETWORK_ALLOCATIONS_NUMBER = 17; - VERIFY_SHARE_SERVER_HANDLING = 18; - CREATE_SHARE_GROUP = 19; - DELETE_SHARE_GROUP = 20; - */ - -} - -message ManilaRequest { - MANILA_REQUEST_TYPE request_type = 1; - string auth_key = 2; - string protocol = 3; - string share_name = 4; - string description = 5; - string share_id = 6; - string share_group_id = 7; - int32 quota = 8; - string creator = 9; - string egroup = 10; - string admin_egroup = 11; - string share_host = 12; - string share_location = 13; -} - -message ManilaResponse { - string msg = 1; //for generic messages - int32 code = 2; // < 1 is an error -- > 1 is OK - int64 total_used = 3; - int64 total_capacity = 4; - int64 new_share_quota = 5; - string new_share_path = 6; - -} - - diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 71ca182c66..48bab1a66e 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -39,7 +39,7 @@ import ( userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1" "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/eosclient" - erpc "github.com/cs3org/reva/pkg/eosclient/eosgrpc/eos_grpc" + erpc "github.com/cern-eos/go-eosgrpc" "github.com/cs3org/reva/pkg/errtypes" "github.com/cs3org/reva/pkg/storage/utils/acl" "github.com/google/uuid" From 846f64bb6cbb0d90d4fd4cc9eec54986df7d155e Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Tue, 13 Aug 2024 15:07:28 +0200 Subject: [PATCH 15/26] Introduced a "Conflict" error type and used it where appropriate --- pkg/eosclient/eosbinary/eosbinary.go | 2 +- pkg/eosclient/eosgrpc/eoshttp.go | 2 +- pkg/errtypes/errtypes.go | 8 ++++++++ pkg/rhttp/datatx/manager/simple/simple.go | 2 +- pkg/rhttp/datatx/manager/spaces/spaces.go | 2 +- pkg/storage/utils/eosfs/eosfs.go | 2 +- 6 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index b53223ad1d..be6471b67e 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -205,7 +205,7 @@ func (c *Client) executeXRDCopy(ctx context.Context, cmdArgs []string) (string, // check for lock mismatch error if strings.Contains(errBuf.String(), "file has a valid extended attribute lock") { - err = errtypes.BadRequest("eosclient: lock mismatch") + err = errtypes.Conflict("eosclient: lock mismatch") } args := fmt.Sprintf("%s", cmd.Args) diff --git a/pkg/eosclient/eosgrpc/eoshttp.go b/pkg/eosclient/eosgrpc/eoshttp.go index 7de32f5cf3..f7bb9b20b0 100644 --- a/pkg/eosclient/eosgrpc/eoshttp.go +++ b/pkg/eosclient/eosgrpc/eoshttp.go @@ -229,7 +229,7 @@ func (c *EOSHTTPClient) getRespError(rsp *http.Response, err error) error { case http.StatusNotFound: return errtypes.NotFound(rspdesc(rsp)) case http.StatusConflict: - return errtypes.BadRequest(rspdesc(rsp)) + return errtypes.Conflict(rspdesc(rsp)) } return errtypes.InternalError("Err from EOS: " + rspdesc(rsp)) diff --git a/pkg/errtypes/errtypes.go b/pkg/errtypes/errtypes.go index 119bc7f8a9..f67f7a452e 100644 --- a/pkg/errtypes/errtypes.go +++ b/pkg/errtypes/errtypes.go @@ -94,6 +94,14 @@ func (e BadRequest) Error() string { return "error: bad request: " + string(e) } // IsBadRequest implements the IsBadRequest interface. func (e BadRequest) IsBadRequest() {} +// Conflict is the error to use when the server found a conflict when processing the request (e.g. with an existing lock). +type Conflict string + +func (e Conflict) Error() string { return "error: conflict: " + string(e) } + +// IsConflict implements the IsConflict interface. +func (e Conflict) IsConflict() {} + // ChecksumMismatch is the error to use when the sent hash does not match the calculated hash. type ChecksumMismatch string diff --git a/pkg/rhttp/datatx/manager/simple/simple.go b/pkg/rhttp/datatx/manager/simple/simple.go index b1b489a676..a776ba3f7b 100644 --- a/pkg/rhttp/datatx/manager/simple/simple.go +++ b/pkg/rhttp/datatx/manager/simple/simple.go @@ -100,7 +100,7 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { w.WriteHeader(http.StatusUnauthorized) case errtypes.InsufficientStorage: w.WriteHeader(http.StatusInsufficientStorage) - case errtypes.BadRequest: + case errtypes.Conflict: w.WriteHeader(http.StatusConflict) default: sublog.Error().Err(v).Msg("error uploading file") diff --git a/pkg/rhttp/datatx/manager/spaces/spaces.go b/pkg/rhttp/datatx/manager/spaces/spaces.go index 4f95b47f10..ee87211026 100644 --- a/pkg/rhttp/datatx/manager/spaces/spaces.go +++ b/pkg/rhttp/datatx/manager/spaces/spaces.go @@ -121,7 +121,7 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { w.WriteHeader(http.StatusUnauthorized) case errtypes.InsufficientStorage: w.WriteHeader(http.StatusInsufficientStorage) - case errtypes.BadRequest: + case errtypes.Conflict: w.WriteHeader(http.StatusConflict) default: sublog.Error().Err(v).Msg("error uploading file") diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index 8ad26d3feb..64894a2f8a 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -717,7 +717,7 @@ func (fs *eosfs) setLock(ctx context.Context, lock *provider.Lock, path string) }, false, false, path, encodeAppName(lock.AppName)) switch { case errors.Is(err, eosclient.FileIsLockedError): - return errtypes.BadRequest("resource already locked") + return errtypes.Conflict("resource already locked") case err != nil: return errors.Wrap(err, "eosfs: error setting eos lock") } From c5a6266f89bee76dac9980a24d507ce4cb02f569 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Tue, 13 Aug 2024 15:08:00 +0200 Subject: [PATCH 16/26] Added logging --- pkg/storage/utils/eosfs/eosfs.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index 64894a2f8a..dc2d53ea03 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -2291,8 +2291,12 @@ func (fs *eosfs) convert(ctx context.Context, eosFileInfo *eosclient.FileInfo) ( }, } if eosFileInfo.Attrs[eosLockKey] != "" { - // populate the lock, fail silently if unable to decode - if l, _ := decodeLock(eosFileInfo.Attrs[lockPayloadKey], eosFileInfo.Attrs[eosLockKey]); l != nil { + // populate the lock if decodable, log failure (but move on) if not + l, err := decodeLock(eosFileInfo.Attrs[lockPayloadKey], eosFileInfo.Attrs[eosLockKey]) + if err != nil { + sublog := appctx.GetLogger(ctx).With().Logger() + sublog.Warn().Interface("xattrs", eosFileInfo.Attrs).Msg("could not decode lock, leaving empty") + } else { info.Lock = l } } From 305c9fa1d48dbd208ddaedc6e5bdfa69e4a9c523 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Tue, 13 Aug 2024 16:27:40 +0200 Subject: [PATCH 17/26] Refactored handling of the eos "app" tagging, and made method WriteFile private as only used by eosbinary.go --- pkg/eosclient/eosbinary/eosbinary.go | 4 ++-- pkg/eosclient/eosclient.go | 1 - pkg/eosclient/eosgrpc/eosgrpc.go | 16 +--------------- pkg/eosclient/eosgrpc/eoshttp.go | 2 ++ pkg/storage/utils/eosfs/eosfs.go | 27 +++++++++++++++------------ pkg/storage/utils/eosfs/upload.go | 5 ++--- 6 files changed, 22 insertions(+), 33 deletions(-) diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index be6471b67e..10189b7daf 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -736,11 +736,11 @@ func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path s if err != nil { return err } - return c.WriteFile(ctx, auth, path, fd.Name(), app) + return c.writeFile(ctx, auth, path, fd.Name(), app) } // WriteFile writes an existing file to the mgm. -func (c *Client) WriteFile(ctx context.Context, auth eosclient.Authorization, path, source, app string) error { +func (c *Client) writeFile(ctx context.Context, auth eosclient.Authorization, path, source, app string) error { xrdPath := fmt.Sprintf("%s//%s", c.opt.URL, path) args := []string{"--nopbar", "--silent", "-f", source, xrdPath} diff --git a/pkg/eosclient/eosclient.go b/pkg/eosclient/eosclient.go index bde1f16d07..bbbf31a428 100644 --- a/pkg/eosclient/eosclient.go +++ b/pkg/eosclient/eosclient.go @@ -52,7 +52,6 @@ type EOSClient interface { List(ctx context.Context, auth Authorization, path string) ([]*FileInfo, error) Read(ctx context.Context, auth Authorization, path string) (io.ReadCloser, error) Write(ctx context.Context, auth Authorization, path string, stream io.ReadCloser, app string) error - WriteFile(ctx context.Context, auth Authorization, path, source, app string) error ListDeletedEntries(ctx context.Context, auth Authorization, maxentries int, from, to time.Time) ([]*DeletedEntry, error) RestoreDeletedEntry(ctx context.Context, auth Authorization, key string) error PurgeDeletedEntries(ctx context.Context, auth Authorization) error diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 48bab1a66e..23cb88f56a 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -36,10 +36,10 @@ import ( "syscall" "time" + erpc "github.com/cern-eos/go-eosgrpc" userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1" "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/eosclient" - erpc "github.com/cern-eos/go-eosgrpc" "github.com/cs3org/reva/pkg/errtypes" "github.com/cs3org/reva/pkg/storage/utils/acl" "github.com/google/uuid" @@ -1361,20 +1361,6 @@ func (c *Client) Write(ctx context.Context, auth eosclient.Authorization, path s } return c.httpcl.PUTFile(ctx, u.Username, auth, path, stream, length, app) - - // return c.httpcl.PUTFile(ctx, remoteuser, auth, urlpathng, stream) - // return c.WriteFile(ctx, uid, gid, path, fd.Name()) -} - -// WriteFile writes an existing file to the mgm. Old xrdcp utility. -func (c *Client) WriteFile(ctx context.Context, auth eosclient.Authorization, path, source, app string) error { - log := appctx.GetLogger(ctx) - log.Info().Str("func", "WriteFile").Str("uid,gid", auth.Role.UID+","+auth.Role.GID).Str("path", path).Str("source", source).Msg("") - - xrdPath := fmt.Sprintf("%s//%s", c.opt.URL, path) - cmd := exec.CommandContext(ctx, c.opt.XrdcopyBinary, "--nopbar", "--silent", "-f", source, xrdPath, fmt.Sprintf("-ODeos.ruid=%s&eos.rgid=%s", auth.Role.UID, auth.Role.GID)) - _, _, err := c.execute(ctx, cmd) - return err } // ListDeletedEntries returns a list of the deleted entries. diff --git a/pkg/eosclient/eosgrpc/eoshttp.go b/pkg/eosclient/eosgrpc/eoshttp.go index f7bb9b20b0..ee1aa3aacf 100644 --- a/pkg/eosclient/eosgrpc/eoshttp.go +++ b/pkg/eosclient/eosgrpc/eoshttp.go @@ -283,6 +283,8 @@ func (c *EOSHTTPClient) GETFile(ctx context.Context, remoteuser string, auth eos log.Error().Str("func", "GETFile").Str("url", finalurl).Str("err", err.Error()).Msg("can't create request") return nil, err } + // similar to eosbinary.go::Read() + req.Header.Set("app", "reva_eosclient::read") ntries := 0 nredirs := 0 diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index dc2d53ea03..50c5af028b 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -594,6 +594,14 @@ func (fs *eosfs) UnsetArbitraryMetadata(ctx context.Context, ref *provider.Refer return nil } +func (fs *eosfs) EncodeAppName(a string) string { + // this function returns the string to be used as EOS "app" tag, both in uploads and when handling locks; + // note that the GET (and PUT) operations in eosbinary.go and eoshttp.go use a `reva_eosclient::read` + // (resp. `write`) tag when no locks are involved. + r := strings.NewReplacer(" ", "_") + return "reva_eosclient::app_" + strings.ToLower(r.Replace(a)) +} + func (fs *eosfs) getLockPayloads(ctx context.Context, path string) (string, string, error) { // sys attributes want root auth, buddy rootauth, err := fs.getRootAuth(ctx) @@ -663,7 +671,7 @@ func (fs *eosfs) getLock(ctx context.Context, user *userpb.User, path string, re if time.Unix(int64(l.Expiration.Seconds), 0).Before(time.Now()) { // the lock expired - if err := fs.removeLockAttrs(ctx, path, encodeAppName(l.AppName)); err != nil { + if err := fs.removeLockAttrs(ctx, path, fs.EncodeAppName(l.AppName)); err != nil { return nil, err } return nil, errtypes.NotFound("lock not found for ref") @@ -704,7 +712,7 @@ func (fs *eosfs) setLock(ctx context.Context, lock *provider.Lock, path string) return err } - encodedLock, eosLock, err := encodeLock(lock) + encodedLock, eosLock, err := fs.encodeLock(lock) if err != nil { return errors.Wrap(err, "eosfs: error encoding lock") } @@ -714,7 +722,7 @@ func (fs *eosfs) setLock(ctx context.Context, lock *provider.Lock, path string) Type: SystemAttr, Key: eosLockKey, Val: eosLock, - }, false, false, path, encodeAppName(lock.AppName)) + }, false, false, path, fs.EncodeAppName(lock.AppName)) switch { case errors.Is(err, eosclient.FileIsLockedError): return errtypes.Conflict("resource already locked") @@ -727,7 +735,7 @@ func (fs *eosfs) setLock(ctx context.Context, lock *provider.Lock, path string) Type: SystemAttr, Key: lockPayloadKey, Val: encodedLock, - }, false, false, path, encodeAppName(lock.AppName)) + }, false, false, path, fs.EncodeAppName(lock.AppName)) if err != nil { return errors.Wrap(err, "eosfs: error setting lock payload") } @@ -822,12 +830,7 @@ func (fs *eosfs) userHasReadAccess(ctx context.Context, user *userpb.User, ref * return resInfo.PermissionSet.InitiateFileDownload, nil } -func encodeAppName(a string) string { - r := strings.NewReplacer(" ", "_") - return "reva_" + strings.ToLower(r.Replace(a)) -} - -func encodeLock(l *provider.Lock) (string, string, error) { +func (fs *eosfs) encodeLock(l *provider.Lock) (string, string, error) { data, err := json.Marshal(l) if err != nil { return "", "", err @@ -835,7 +838,7 @@ func encodeLock(l *provider.Lock) (string, string, error) { var a string if l.AppName != "" { // cf. upload implementation - a = encodeAppName(l.AppName) + a = fs.EncodeAppName(l.AppName) } else { a = "*" } @@ -976,7 +979,7 @@ func (fs *eosfs) Unlock(ctx context.Context, ref *provider.Reference, lock *prov } path = fs.wrap(ctx, path) - return fs.removeLockAttrs(ctx, path, encodeAppName(lock.AppName)) + return fs.removeLockAttrs(ctx, path, fs.EncodeAppName(lock.AppName)) } func (fs *eosfs) AddGrant(ctx context.Context, ref *provider.Reference, g *provider.Grant) error { diff --git a/pkg/storage/utils/eosfs/upload.go b/pkg/storage/utils/eosfs/upload.go index 0213dd78cb..8059ed5e18 100644 --- a/pkg/storage/utils/eosfs/upload.go +++ b/pkg/storage/utils/eosfs/upload.go @@ -23,7 +23,6 @@ import ( "io" "os" "path" - "strings" provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" "github.com/cs3org/reva/pkg/errtypes" @@ -81,8 +80,8 @@ func (fs *eosfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadC if app == "" { app = "reva_eosclient::write" } else { - r := strings.NewReplacer(" ", "_") - app = "reva_" + strings.ToLower(r.Replace(app)) + // if we have a lock context, the app for EOS must match the lock holder + app = fs.EncodeAppName(app) } return fs.c.Write(ctx, auth, fn, r, app) } From 6cafefe4a90d01ce3fce02ea6f5f27c125a4212f Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 14 Aug 2024 10:34:40 +0200 Subject: [PATCH 18/26] Sanitize input --- pkg/ocm/storage/outcoming/ocm.go | 3 +++ pkg/storage/utils/eosfs/upload.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/pkg/ocm/storage/outcoming/ocm.go b/pkg/ocm/storage/outcoming/ocm.go index 28fd9a5c5c..b771106f2d 100644 --- a/pkg/ocm/storage/outcoming/ocm.go +++ b/pkg/ocm/storage/outcoming/ocm.go @@ -402,6 +402,9 @@ func (d *driver) Upload(ctx context.Context, ref *provider.Reference, content io if err != nil { return err } + if metadata == nil { + metadata = map[string]string{} + } return d.unwrappedOpFromShareCreator(ctx, share, rel, func(ctx context.Context, newRef *provider.Reference) error { initRes, err := d.gateway.InitiateFileUpload(ctx, &provider.InitiateFileUploadRequest{ diff --git a/pkg/storage/utils/eosfs/upload.go b/pkg/storage/utils/eosfs/upload.go index 8059ed5e18..fb46c2699d 100644 --- a/pkg/storage/utils/eosfs/upload.go +++ b/pkg/storage/utils/eosfs/upload.go @@ -76,6 +76,9 @@ func (fs *eosfs) Upload(ctx context.Context, ref *provider.Reference, r io.ReadC return err } + if metadata == nil { + metadata = map[string]string{} + } app := metadata["lockholder"] if app == "" { app = "reva_eosclient::write" From c324fb4ac0f075f8cf7ce5c9c45b64e33d1b34cd Mon Sep 17 00:00:00 2001 From: Mahdi Baghbani Date: Mon, 5 Aug 2024 11:03:21 +0330 Subject: [PATCH 19/26] OCM: Fix open driver (#4790) * ocm: fixed domain not having a protocol scheme * changelog * changelog * fix possible bug due to uppercase and lowercase string in domain * lint: add space after // in comments * Instead of modifying domain, use a new var endpoint --- changelog/unreleased/fix-ocm-open-driver.md | 8 ++++++++ pkg/ocm/provider/authorizer/open/open.go | 9 ++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 changelog/unreleased/fix-ocm-open-driver.md diff --git a/changelog/unreleased/fix-ocm-open-driver.md b/changelog/unreleased/fix-ocm-open-driver.md new file mode 100644 index 0000000000..d8341bce25 --- /dev/null +++ b/changelog/unreleased/fix-ocm-open-driver.md @@ -0,0 +1,8 @@ +Bugfix: ocm: fixed domain not having a protocol scheme + +This PR fixes a bug in the OCM open driver that causes it to be unable to probe +OCM services at the remote server due to the domain having an unsupported +protocol scheme. in this case domain doesn't have a scheme and the changes in +this PR add a scheme to the domain before doing the probe. + +https://github.com/cs3org/reva/pull/4790 diff --git a/pkg/ocm/provider/authorizer/open/open.go b/pkg/ocm/provider/authorizer/open/open.go index d0af08efb6..bad5a6a41b 100644 --- a/pkg/ocm/provider/authorizer/open/open.go +++ b/pkg/ocm/provider/authorizer/open/open.go @@ -67,9 +67,16 @@ func (a *authorizer) GetInfoByDomain(ctx context.Context, domain string) (*ocmpr } } + var endpoint string + if !strings.HasPrefix(domain, "http://") && !strings.HasPrefix(domain, "https://") { + endpoint = "https://" + domain + } else { + endpoint = domain + } + // not yet known: try to discover the remote OCM endpoint ocmClient := client.NewClient(time.Duration(10)*time.Second, true) - ocmCaps, err := ocmClient.Discover(ctx, domain) + ocmCaps, err := ocmClient.Discover(ctx, endpoint) if err != nil { return nil, errors.Wrap(err, "error probing OCM services at remote server") } From 9df8ce7b9778e3b50465a907d8d6475f3c08c618 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Mon, 5 Aug 2024 14:46:21 +0200 Subject: [PATCH 20/26] [docs-only] updated examples following #4791 --- examples/cernbox/cernbox.toml | 4 +++- examples/sciencemesh/sciencemesh.toml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/cernbox/cernbox.toml b/examples/cernbox/cernbox.toml index 3f7b47b30d..819cabb688 100644 --- a/examples/cernbox/cernbox.toml +++ b/examples/cernbox/cernbox.toml @@ -280,8 +280,10 @@ sender_mail = "sciencemesh@{{ vars.provider_domain }}" smtp_server = "smtp.{{ vars.provider_domain }}" smtp_port = 25 -[http.services.wellknown.ocmprovider] +[http.services.wellknown] address = ":443" + +[http.services.wellknown.ocmprovider] ocm_prefix = "ocm" provider = "Reva for CERNBox" endpoint = "{{ vars.external_reva_endpoint }}" diff --git a/examples/sciencemesh/sciencemesh.toml b/examples/sciencemesh/sciencemesh.toml index d9fc44bfa9..8867db8dbd 100644 --- a/examples/sciencemesh/sciencemesh.toml +++ b/examples/sciencemesh/sciencemesh.toml @@ -253,8 +253,10 @@ sender_mail = "sciencemesh@{{ vars.provider_domain }}" smtp_server = "smtp.{{ vars.provider_domain }}" smtp_port = 25 -[http.services.wellknown.ocmprovider] +[http.services.wellknown] address = ":443" + +[http.services.wellknown.ocmprovider] ocm_prefix = "ocm" provider = "Reva for ownCloud/Nextcloud" endpoint = "{{ vars.external_reva_endpoint }}" From f09623976bb578151a4f902ae2f1b5972191ed6c Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Mon, 5 Aug 2024 19:49:28 +0200 Subject: [PATCH 21/26] [CI] removed workaround in Ceph docker image to attempt to fix the build --- docker/Dockerfile.revad-ceph | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docker/Dockerfile.revad-ceph b/docker/Dockerfile.revad-ceph index ff895eed59..9aacd9e8ea 100644 --- a/docker/Dockerfile.revad-ceph +++ b/docker/Dockerfile.revad-ceph @@ -20,10 +20,6 @@ FROM quay.io/ceph/ceph:v18 RUN mkdir -p /etc/selinux/config -# this is a workaround as the Ceph docker image is still based on CentOS 8 Stream, which is EOL -RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* -RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* - RUN dnf update --exclude=ceph-iscsi,chrony -y && dnf install -y \ git \ gcc \ From cd49e3a3de59814597753b112a934cfc8cdf9767 Mon Sep 17 00:00:00 2001 From: Hugo Labrador Date: Wed, 7 Aug 2024 18:43:49 +0200 Subject: [PATCH 22/26] tests: bump openldap and deprecate HOSTNAME variable (#4801) --- tests/docker/docker-compose.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index 334955260b..5f40f17d61 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -170,13 +170,12 @@ services: storage-local-2: condition: service_healthy ldap: - image: osixia/openldap:1.3.0 + image: osixia/openldap:1.5.0 environment: LDAP_DOMAIN: owncloud.com LDAP_ORGANISATION: ownCloud LDAP_ADMIN_PASSWORD: admin LDAP_TLS_VERIFY_CLIENT: never - HOSTNAME: ldap healthcheck: test: ldapsearch -x -h localhost -b dc=owncloud,dc=com -D "cn=admin,dc=owncloud,dc=com" -w admin interval: 5s From 62d3211660c8c3d87e509549d48191831b806bb5 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 7 Aug 2024 19:08:19 +0200 Subject: [PATCH 23/26] [build-only] Ceph docker: skip a package that fails to install --- docker/Dockerfile.revad-ceph | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile.revad-ceph b/docker/Dockerfile.revad-ceph index 9aacd9e8ea..8bf20206b7 100644 --- a/docker/Dockerfile.revad-ceph +++ b/docker/Dockerfile.revad-ceph @@ -20,7 +20,7 @@ FROM quay.io/ceph/ceph:v18 RUN mkdir -p /etc/selinux/config -RUN dnf update --exclude=ceph-iscsi,chrony -y && dnf install -y \ +RUN dnf update --exclude=ceph-iscsi,chrony,selinux-policy-targeted -y && dnf install -y \ git \ gcc \ make \ From 09573bda061b3a9f8ae644de4ad49bfc3a2e8191 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Wed, 7 Aug 2024 19:10:50 +0200 Subject: [PATCH 24/26] [build-only] ceph build: fix the CI --- docker/Dockerfile.revad-ceph | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker/Dockerfile.revad-ceph b/docker/Dockerfile.revad-ceph index 8bf20206b7..4d18a193ba 100644 --- a/docker/Dockerfile.revad-ceph +++ b/docker/Dockerfile.revad-ceph @@ -18,9 +18,7 @@ FROM quay.io/ceph/ceph:v18 -RUN mkdir -p /etc/selinux/config - -RUN dnf update --exclude=ceph-iscsi,chrony,selinux-policy-targeted -y && dnf install -y \ +RUN dnf update --exclude=ceph-iscsi -y && dnf install -y \ git \ gcc \ make \ From df40863f1ece01a5c5ef402818204e43f7bbb400 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Fri, 30 Aug 2024 15:36:55 +0200 Subject: [PATCH 25/26] Fixed one more return code --- internal/grpc/services/storageprovider/storageprovider.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/grpc/services/storageprovider/storageprovider.go b/internal/grpc/services/storageprovider/storageprovider.go index ad97acc374..fe90c334b4 100644 --- a/internal/grpc/services/storageprovider/storageprovider.go +++ b/internal/grpc/services/storageprovider/storageprovider.go @@ -287,7 +287,7 @@ func (s *service) SetLock(ctx context.Context, req *provider.SetLockRequest) (*p st = status.NewNotFound(ctx, "resource not found when setting lock") case errtypes.PermissionDenied: st = status.NewPermissionDenied(ctx, err, "permission denied") - case errtypes.BadRequest: + case errtypes.Conflict: st = status.NewFailedPrecondition(ctx, err, "reference already locked") default: st = status.NewInternal(ctx, err, "error setting lock: "+req.Ref.String()) From 5cec20fa61e4c869ecd35c7a0a763d96b33a5aa3 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Fri, 30 Aug 2024 15:40:31 +0200 Subject: [PATCH 26/26] Removed dead code --- pkg/eosclient/eosgrpc/eosgrpc.go | 51 -------------------------------- 1 file changed, 51 deletions(-) diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 23cb88f56a..2793cb5e3d 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -23,17 +23,14 @@ package eosgrpc import ( - "bytes" "context" "encoding/hex" "fmt" "io" "os" - "os/exec" "path" "strconv" "strings" - "syscall" "time" erpc "github.com/cern-eos/go-eosgrpc" @@ -1665,51 +1662,3 @@ func (c *Client) grpcMDResponseToFileInfo(ctx context.Context, st *erpc.MDRespon } return fi, nil } - -// exec executes the command and returns the stdout, stderr and return code. -func (c *Client) execute(ctx context.Context, cmd *exec.Cmd) (string, string, error) { - log := appctx.GetLogger(ctx) - - outBuf := &bytes.Buffer{} - errBuf := &bytes.Buffer{} - cmd.Stdout = outBuf - cmd.Stderr = errBuf - cmd.Env = []string{ - "EOS_MGM_URL=" + c.opt.URL, - } - - if c.opt.UseKeytab { - cmd.Env = append(cmd.Env, "XrdSecPROTOCOL="+c.opt.SecProtocol) - cmd.Env = append(cmd.Env, "XrdSecSSSKT="+c.opt.Keytab) - } - - err := cmd.Run() - - var exitStatus int - if exiterr, ok := err.(*exec.ExitError); ok { - // The program has exited with an exit code != 0 - // This works on both Unix and Windows. Although package - // syscall is generally platform dependent, WaitStatus is - // defined for both Unix and Windows and in both cases has - // an ExitStatus() method with the same signature. - if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { - exitStatus = status.ExitStatus() - switch exitStatus { - case 0: - err = nil - case 2: - err = errtypes.NotFound(errBuf.String()) - } - } - } - - args := fmt.Sprintf("%s", cmd.Args) - env := fmt.Sprintf("%s", cmd.Env) - log.Info().Str("args", args).Str("env", env).Int("exit", exitStatus).Msg("eos cmd") - - if err != nil && exitStatus != 2 { // don't wrap the errtypes.NotFoundError - err = errors.Wrap(err, "eosclient: error while executing command") - } - - return outBuf.String(), errBuf.String(), err -}