You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by el...@apache.org on 2021/04/03 08:32:02 UTC
[ozone-go] 01/01: Initial commit.
This is an automated email from the ASF dual-hosted git repository.
elek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone-go.git
commit 958c91b5ee3527ee4d494458ed2e1862d2576ce3
Author: Elek Márton <el...@apache.org>
AuthorDate: Sat Apr 3 00:09:11 2021 +0200
Initial commit.
Moving initial version from the poc branch, based on the
discussion at: https://lists.apache.org/thread.html/r4fc84fa8299ad9d4d9c2dbb54b974ee3d3222d0f9238a47b014ad154%40%3Cdev.ozone.apache.org%3E
---
.asf.yaml | 30 +
.github/workflows/build.yaml | 52 +
.gitignore | 8 +
LICENSE | 202 +
NOTICE.txt | 5 +
README.md | 59 +
api/bucket.go | 31 +
api/common/types.go | 41 +
api/datanode/datanode.go | 261 +
api/datanode/ratis.go | 103 +
api/datanode/standalone.go | 45 +
api/go.mod | 32 +
api/go.sum | 112 +
api/key.go | 204 +
api/om/bucket.go | 105 +
api/om/om.go | 215 +
api/om/volume.go | 99 +
api/ozone.go | 31 +
api/ozone_test.go | 68 +
api/proto/common/Security.pb.go | 745 ++
api/proto/datanode/DatanodeClientProtocol.pb.go | 4876 +++++++++
api/proto/hdds/hdds.pb.go | 2452 +++++
api/proto/ozone/OmClientProtocol.pb.go | 12561 ++++++++++++++++++++++
api/proto/ratis/raft.pb.go | 4733 ++++++++
api/proto/ratis/ratis-grpc.pb.go | 766 ++
api/volume.go | 30 +
cli/build.sh | 22 +
cli/go.mod | 26 +
cli/go.sum | 113 +
cli/main.go | 238 +
codegen.sh | 51 +
fuse/build.sh | 22 +
fuse/go.mod | 28 +
fuse/go.sum | 128 +
fuse/ozone-fuse/file.go | 147 +
fuse/ozone-fuse/main.go | 156 +
lib/build.sh | 23 +
lib/go.mod | 22 +
lib/go.sum | 96 +
lib/lib.go | 71 +
license-check.sh | 27 +
python/test.py | 27 +
42 files changed, 29063 insertions(+)
diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000..984ae2a
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+github:
+ description: "Apache Ozone go client and fuse driver (experimental)"
+ homepage: https://ozone.apache.org
+ labels:
+ - ozone
+ - go
+ - fuse
+ enabled_merge_buttons:
+ squash: true
+ merge: false
+ rebase: false
+notifications:
+ commits: commits@ozone.apache.org
+ issues: issues@ozone.apache.org
+ pullrequests: issues@ozone.apache.org
+ jira_options: link label worklog
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
new file mode 100644
index 0000000..e7953f1
--- /dev/null
+++ b/.github/workflows/build.yaml
@@ -0,0 +1,52 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+name: build-branch
+on:
+ - pull_request
+ - push
+jobs:
+ cli:
+ runs-on: ubuntu-18.04
+ steps:
+ - name: Checkout project
+ uses: actions/checkout@v2
+ - name: Set up Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: 1.15
+ - name: Run a full build
+ run: cli/build.sh
+ fuse:
+ runs-on: ubuntu-18.04
+ steps:
+ - name: Checkout project
+ uses: actions/checkout@v2
+ - name: Set up Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: 1.15
+ - name: Run a full build
+ run: fuse/build.sh
+ library:
+ runs-on: ubuntu-18.04
+ steps:
+ - name: Checkout project
+ uses: actions/checkout@v2
+ - name: Set up Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: 1.15
+ - name: Run a full build
+ run: lib/build.sh
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6cadd37
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+.idea
+vendor
+ozone.so
+ozone.h
+lib/lib
+lib/lib.h
+cli/ozone-go
+fuse/ozone-fuse/ozone-fuse
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/NOTICE.txt b/NOTICE.txt
new file mode 100644
index 0000000..82b2385
--- /dev/null
+++ b/NOTICE.txt
@@ -0,0 +1,5 @@
+Apache Ozone
+Copyright 2020-2021 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6394f20
--- /dev/null
+++ b/README.md
@@ -0,0 +1,59 @@
+# Go client for Apache Ozone
+
+This repository contains an experimental, **proof-of-concept** Golang client for Apache Ozone.
+
+It's not ready yet for using in production / non-production.
+
+The repository contains the following sub-modules
+
+ * api: the location for the generic golang api for Apache Ozone
+ * cli: standalone executable tool for main operations (similar to the original `ozone sh`)
+ * lib: proof-of-concept shared C library
+ * python: example python script uses the shared C library
+ * HA failovoer is missing
+
+Status:
+
+ * api
+ * main OM metadata operations worked well, but not all the fields are implemented
+ * data read / write are implemented on some level but needs further work
+ * security can be supported by the used Hadoop RPC implementation, but not tested
+ * fuse
+ * first working POC, files are successfully listed and files can be read
+ * write is not implemented at all
+ * requires major work
+ * shared lib / python: very basic example, poc
+
+## Testing with cli:
+
+```
+cd cli
+./build.sh
+./ozone-go --om localhost volume create vol1
+```
+
+Or you can install it:
+
+```
+cd cli
+go install
+ozone -om 127.0.0.1 volume create vol1
+```
+
+## Testing Fuse file system
+
+```
+cd fuse
+./build.sh
+./ozone-fuse/ozone-fuse --om localhost --volume vol1 --bucket bucket1 /tmp/bucket1
+```
+
+## Testing the python binding
+
+Create the shared library:
+
+```
+go build -o ozone.so -buildmode=c-shared lib/lib.go
+```
+
+Modify parameters of `python/test.py` (om address) and run it.
diff --git a/api/bucket.go b/api/bucket.go
new file mode 100644
index 0000000..1a08370
--- /dev/null
+++ b/api/bucket.go
@@ -0,0 +1,31 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package api
+
+import "github.com/apache/ozone-go/api/common"
+
+func (ozoneClient *OzoneClient) CreateBucket(volume string, bucket string) error {
+ return ozoneClient.OmClient.CreateBucket(volume, bucket)
+}
+
+func (ozoneClient *OzoneClient) GetBucket(volume string, bucket string) (common.Bucket, error) {
+ return ozoneClient.OmClient.GetBucket(volume, bucket)
+}
+
+func (ozoneClient *OzoneClient) ListBucket(volume string) ([]common.Bucket, error) {
+ return ozoneClient.OmClient.ListBucket(volume)
+
+}
\ No newline at end of file
diff --git a/api/common/types.go b/api/common/types.go
new file mode 100644
index 0000000..5d6bc28
--- /dev/null
+++ b/api/common/types.go
@@ -0,0 +1,41 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package common
+
+type ReplicationType int
+
+const (
+ RATIS ReplicationType = 1
+ STANDALONE ReplicationType = 2
+)
+
+type Volume struct {
+ Name string
+ Owner string
+}
+
+type Key struct {
+ Name string
+ BucketName string
+ VolumeName string
+ Replication ReplicationType
+ Size uint64
+}
+
+type Bucket struct {
+ Name string
+ VolumeName string
+}
diff --git a/api/datanode/datanode.go b/api/datanode/datanode.go
new file mode 100644
index 0000000..24746a2
--- /dev/null
+++ b/api/datanode/datanode.go
@@ -0,0 +1,261 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package datanode
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ dnapi "github.com/apache/ozone-go/api/proto/datanode"
+ "github.com/apache/ozone-go/api/proto/hdds"
+ "github.com/apache/ozone-go/api/proto/ratis"
+ "google.golang.org/grpc"
+ "io"
+ "strconv"
+)
+
+type ChunkInfo struct {
+ Name string
+ Offset uint64
+ Len uint64
+}
+
+type DatanodeClient struct {
+ ratisClient *ratis.RaftClientProtocolService_UnorderedClient
+ ratisReceiver chan ratis.RaftClientReplyProto
+ standaloneClient *dnapi.XceiverClientProtocolService_SendClient
+ standaloneReceiver chan dnapi.ContainerCommandResponseProto
+
+ ctx context.Context
+ datanodes []*hdds.DatanodeDetailsProto
+ currentDatanode hdds.DatanodeDetailsProto
+ grpcConnection *grpc.ClientConn
+ pipelineId *hdds.PipelineID
+ memberIndex int
+}
+
+func (dn *DatanodeClient) GetCurrentDnUUid() *string {
+ uid := dn.currentDatanode.GetUuid()
+ return &uid
+}
+
+func (dnClient *DatanodeClient) connectToNext() error {
+ if dnClient.grpcConnection != nil {
+ dnClient.grpcConnection.Close()
+ }
+ dnClient.memberIndex = dnClient.memberIndex + 1
+ if dnClient.memberIndex == len(dnClient.datanodes) {
+ dnClient.memberIndex = 0
+ }
+ selectedDatanode := dnClient.datanodes[dnClient.memberIndex]
+ dnClient.currentDatanode = *selectedDatanode
+
+ standalonePort := 0
+ for _, port := range dnClient.currentDatanode.Ports {
+ if *port.Name == "STANDALONE" {
+ standalonePort = int(*port.Value)
+ }
+ }
+
+ address := *dnClient.currentDatanode.IpAddress + ":" + strconv.Itoa(standalonePort)
+ println("Connecting to the " + address)
+ conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock())
+ if err != nil {
+ return err
+ }
+
+ dnClient.ratisReceiver = make(chan ratis.RaftClientReplyProto)
+ dnClient.standaloneReceiver = make(chan dnapi.ContainerCommandResponseProto)
+
+ client, err := dnapi.NewXceiverClientProtocolServiceClient(conn).Send(dnClient.ctx)
+ dnClient.standaloneClient = &client
+ //
+ //client, err := ratis.NewRaftClientProtocolServiceClient(conn).Unordered(dnClient.ctx)
+ //if err != nil {
+ // panic(err)
+ //}
+ //dnClient.ratisClient = &client
+ //go dnClient.RaftReceiver()
+ go dnClient.StandaloneReceive()
+ return nil
+}
+
+func CreateDatanodeClient(pipeline *hdds.Pipeline) (*DatanodeClient, error) {
+ dnClient := &DatanodeClient{
+ ctx: context.Background(),
+ pipelineId: pipeline.Id,
+ datanodes: pipeline.Members,
+ memberIndex: -1,
+ }
+ err := dnClient.connectToNext()
+ if err != nil {
+ return nil, err
+ }
+ return dnClient, nil
+}
+func (dnClient *DatanodeClient) RaftReceiver() {
+ for {
+ proto, err := (*dnClient.ratisClient).Recv()
+ if err == io.EOF {
+ return
+ }
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ dnClient.ratisReceiver <- *proto
+ }
+}
+
+func (dnClient *DatanodeClient) CreateAndWriteChunk(id *dnapi.DatanodeBlockID, blockOffset uint64, buffer []byte, length uint64) (dnapi.ChunkInfo, error) {
+ bpc := uint32(12)
+ checksumType := dnapi.ChecksumType_NONE
+ checksumDataProto := dnapi.ChecksumData{
+ Type: &checksumType,
+ BytesPerChecksum: &bpc,
+ }
+ chunkName := fmt.Sprintf("chunk_%d", blockOffset)
+ chunkInfoProto := dnapi.ChunkInfo{
+ ChunkName: &chunkName,
+ Offset: &blockOffset,
+ Len: &length,
+ ChecksumData: &checksumDataProto,
+ }
+ return dnClient.WriteChunk(id, chunkInfoProto, buffer[0:length])
+}
+
+func (dnClient *DatanodeClient) WriteChunk(id *dnapi.DatanodeBlockID, info dnapi.ChunkInfo, data []byte) (dnapi.ChunkInfo, error) {
+
+ req := dnapi.WriteChunkRequestProto{
+ BlockID: id,
+ ChunkData: &info,
+ Data: data,
+ }
+ commandType := dnapi.Type_WriteChunk
+ uuid := dnClient.currentDatanode.GetUuid()
+ proto := dnapi.ContainerCommandRequestProto{
+ CmdType: &commandType,
+ WriteChunk: &req,
+ ContainerID: id.ContainerID,
+ DatanodeUuid: &uuid,
+ }
+
+ _, err := dnClient.sendDatanodeCommand(proto)
+ if err != nil {
+ return info, err
+ }
+ return info, nil
+}
+
+func (dnClient *DatanodeClient) ReadChunk(id *dnapi.DatanodeBlockID, info ChunkInfo) ([]byte, error) {
+ result := make([]byte, 0)
+
+ bpc := uint32(12)
+ checksumType := dnapi.ChecksumType_NONE
+ checksumDataProto := dnapi.ChecksumData{
+ Type: &checksumType,
+ BytesPerChecksum: &bpc,
+ }
+ chunkInfoProto := dnapi.ChunkInfo{
+ ChunkName: &info.Name,
+ Offset: &info.Offset,
+ Len: &info.Len,
+ ChecksumData: &checksumDataProto,
+ }
+ req := dnapi.ReadChunkRequestProto{
+ BlockID: id,
+ ChunkData: &chunkInfoProto,
+ }
+ commandType := dnapi.Type_ReadChunk
+ uuid := dnClient.currentDatanode.GetUuid()
+ proto := dnapi.ContainerCommandRequestProto{
+ CmdType: &commandType,
+ ReadChunk: &req,
+ ContainerID: id.ContainerID,
+ DatanodeUuid: &uuid,
+ }
+
+ resp, err := dnClient.sendDatanodeCommand(proto)
+ if err != nil {
+ return result, err
+ }
+ if resp.GetResult() != dnapi.Result_SUCCESS {
+ return nil, errors.New(resp.GetResult().String() + " " + resp.GetMessage())
+ }
+ return resp.GetReadChunk().Data, nil
+}
+
+func (dnClient *DatanodeClient) PutBlock(id *dnapi.DatanodeBlockID, chunks []*dnapi.ChunkInfo) error {
+
+ flags := int64(0)
+ req := dnapi.PutBlockRequestProto{
+ BlockData: &dnapi.BlockData{
+ BlockID: id,
+ Flags: &flags,
+ Metadata: make([]*dnapi.KeyValue, 0),
+ Chunks: chunks,
+ },
+ }
+ commandType := dnapi.Type_PutBlock
+ proto := dnapi.ContainerCommandRequestProto{
+ CmdType: &commandType,
+ PutBlock: &req,
+ ContainerID: id.ContainerID,
+ DatanodeUuid: dnClient.GetCurrentDnUUid(),
+ }
+
+ _, err := dnClient.sendDatanodeCommand(proto)
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+func (dnClient *DatanodeClient) GetBlock(id *dnapi.DatanodeBlockID) ([]ChunkInfo, error) {
+ result := make([]ChunkInfo, 0)
+
+ req := dnapi.GetBlockRequestProto{
+ BlockID: id,
+ }
+ commandType := dnapi.Type_GetBlock
+ proto := dnapi.ContainerCommandRequestProto{
+ CmdType: &commandType,
+ GetBlock: &req,
+ ContainerID: id.ContainerID,
+ DatanodeUuid: dnClient.GetCurrentDnUUid(),
+ }
+
+ resp, err := dnClient.sendDatanodeCommand(proto)
+ if err != nil {
+ return result, err
+ }
+ for _, chunkInfo := range resp.GetGetBlock().GetBlockData().Chunks {
+ result = append(result, ChunkInfo{
+ Name: chunkInfo.GetChunkName(),
+ Offset: chunkInfo.GetOffset(),
+ Len: chunkInfo.GetLen(),
+ })
+ }
+ return result, nil
+}
+
+func (dnClient *DatanodeClient) sendDatanodeCommand(proto dnapi.ContainerCommandRequestProto) (dnapi.ContainerCommandResponseProto, error) {
+ return dnClient.sendStandaloneDatanodeCommand(proto)
+}
+
+func (dn *DatanodeClient) Close() {
+ (*dn.standaloneClient).CloseSend()
+}
diff --git a/api/datanode/ratis.go b/api/datanode/ratis.go
new file mode 100644
index 0000000..2c626eb
--- /dev/null
+++ b/api/datanode/ratis.go
@@ -0,0 +1,103 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package datanode
+
+import (
+ "encoding/binary"
+ "github.com/apache/ozone-go/api/proto/datanode"
+ "github.com/apache/ozone-go/api/proto/ratis"
+ protobuf "github.com/golang/protobuf/proto"
+)
+
+func (dnClient *DatanodeClient) sendRatisDatanodeCommand(proto datanode.ContainerCommandRequestProto) (datanode.ContainerCommandResponseProto, error) {
+ group := ratis.RaftGroupIdProto{
+ Id: make([]byte, 0), //TODO
+ }
+ request := ratis.RaftRpcRequestProto{
+ RequestorId: []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},
+ ReplyId: []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},
+ RaftGroupId: &group,
+ CallId: 12,
+ }
+ bytes, err := protobuf.Marshal(&proto)
+ if err != nil {
+ return datanode.ContainerCommandResponseProto{}, err
+ }
+
+ lengthHeader := make([]byte, 4)
+ binary.BigEndian.PutUint32(lengthHeader, uint32(len(bytes)))
+
+ message := ratis.ClientMessageEntryProto{
+ Content: append(lengthHeader, bytes...),
+ }
+ readRequestType := ratis.ReadRequestTypeProto{}
+ readType := ratis.RaftClientRequestProto_Read{
+ Read: &readRequestType,
+ }
+ raft := ratis.RaftClientRequestProto{
+ RpcRequest: &request,
+ Message: &message,
+ Type: &readType,
+ }
+ resp, err := dnClient.sendRatisMessage(raft)
+ if err != nil {
+ return datanode.ContainerCommandResponseProto{}, err
+ }
+
+ containerResponse := datanode.ContainerCommandResponseProto{}
+ err = protobuf.Unmarshal(resp.Message.Content, &containerResponse)
+ if err != nil {
+ return containerResponse, err
+ }
+ return containerResponse, nil
+}
+func (dnClient *DatanodeClient) sendRatisMessage(request ratis.RaftClientRequestProto) (ratis.RaftClientReplyProto, error) {
+ resp, err := dnClient.sendRatisMessageToServer(request)
+ if err != nil {
+ return ratis.RaftClientReplyProto{}, err
+ }
+ if resp.GetNotLeaderException() != nil {
+ err = dnClient.connectToNext()
+ if err != nil {
+ return ratis.RaftClientReplyProto{}, err
+ }
+ resp, err = dnClient.sendRatisMessageToServer(request)
+ if err != nil {
+ return ratis.RaftClientReplyProto{}, err
+ }
+ }
+ if resp.GetNotLeaderException() != nil {
+ err = dnClient.connectToNext()
+ if err != nil {
+ return ratis.RaftClientReplyProto{}, err
+ }
+ resp, err = dnClient.sendRatisMessageToServer(request)
+ if err != nil {
+ return ratis.RaftClientReplyProto{}, err
+ }
+ }
+ return resp, nil
+}
+
+func (dnClient *DatanodeClient) sendRatisMessageToServer(request ratis.RaftClientRequestProto) (ratis.RaftClientReplyProto, error) {
+
+ err := (*dnClient.ratisClient).Send(&request)
+ if err != nil {
+ return ratis.RaftClientReplyProto{}, err
+ }
+ resp := <-dnClient.ratisReceiver
+ return resp, err
+}
diff --git a/api/datanode/standalone.go b/api/datanode/standalone.go
new file mode 100644
index 0000000..b9feb69
--- /dev/null
+++ b/api/datanode/standalone.go
@@ -0,0 +1,45 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package datanode
+
+import (
+ "fmt"
+ dnapi "github.com/apache/ozone-go/api/proto/datanode"
+ "io"
+)
+
+func (dnClient *DatanodeClient) sendStandaloneDatanodeCommand(proto dnapi.ContainerCommandRequestProto) (dnapi.ContainerCommandResponseProto, error) {
+ err := (*dnClient.standaloneClient).Send(&proto)
+ if err != nil {
+ return dnapi.ContainerCommandResponseProto{}, err
+ }
+ resp := <-dnClient.standaloneReceiver
+ return resp, err
+}
+
+func (dnClient *DatanodeClient) StandaloneReceive() {
+ for {
+ proto, err := (*dnClient.standaloneClient).Recv()
+ if err == io.EOF {
+ return
+ }
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ dnClient.standaloneReceiver <- *proto
+ }
+}
diff --git a/api/go.mod b/api/go.mod
new file mode 100644
index 0000000..5d6e1ec
--- /dev/null
+++ b/api/go.mod
@@ -0,0 +1,32 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+module github.com/apache/ozone-go/api
+
+go 1.13
+
+require (
+ github.com/golang/protobuf v1.4.3
+ github.com/hortonworks/gohadoop v0.0.0-20180913181356-4e92e1475b38
+ github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d
+ github.com/stretchr/testify v1.7.0
+ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
+ golang.org/x/sys v0.0.0-20210313202042-bd2e13477e9c // indirect
+ golang.org/x/text v0.3.5 // indirect
+ google.golang.org/genproto v0.0.0-20210312152112-fc591d9ea70f // indirect
+ google.golang.org/grpc v1.36.0
+ google.golang.org/protobuf v1.25.0
+)
diff --git a/api/go.sum b/api/go.sum
new file mode 100644
index 0000000..b3fbbb1
--- /dev/null
+++ b/api/go.sum
@@ -0,0 +1,112 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/hortonworks/gohadoop v0.0.0-20180913181356-4e92e1475b38 h1:Fksvn6jtn0B8nE74Y/6hqcX1DJC3/1jPQQhb61EmWsw=
+github.com/hortonworks/gohadoop v0.0.0-20180913181356-4e92e1475b38/go.mod h1:Vs/bWYFXkega47bl5bp3dkBRDEv3s2kvJaNUoONM86c=
+github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ=
+github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210313202042-bd2e13477e9c h1:coiPEfMv+ThsjULRDygLrJVlNE1gDdL2g65s0LhV2os=
+golang.org/x/sys v0.0.0-20210313202042-bd2e13477e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20210312152112-fc591d9ea70f h1:YRBxgxUW6GFi+AKsn8WGA9k1SZohK+gGuEqdeT5aoNQ=
+google.golang.org/genproto v0.0.0-20210312152112-fc591d9ea70f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As=
+google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/api/key.go b/api/key.go
new file mode 100644
index 0000000..a6c7399
--- /dev/null
+++ b/api/key.go
@@ -0,0 +1,204 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package api
+
+import (
+ "errors"
+ "github.com/apache/ozone-go/api/common"
+ "github.com/apache/ozone-go/api/datanode"
+ dnproto "github.com/apache/ozone-go/api/proto/datanode"
+ "github.com/apache/ozone-go/api/proto/hdds"
+ omproto "github.com/apache/ozone-go/api/proto/ozone"
+ "io"
+)
+
+func (ozoneClient *OzoneClient) ListKeys(volume string, bucket string) ([]common.Key, error) {
+
+ keys, err := ozoneClient.OmClient.ListKeys(volume, bucket)
+ if err != nil {
+ return make([]common.Key, 0), err
+ }
+
+ ret := make([]common.Key, 0)
+ for _, r := range keys {
+ ret = append(ret, KeyFromProto(r))
+ }
+ return ret, nil
+
+}
+
+func (ozoneClient *OzoneClient) ListKeysPrefix(volume string, bucket string, prefix string) ([]common.Key, error) {
+ keys, err := ozoneClient.OmClient.ListKeysPrefix(volume, bucket, prefix)
+ if err != nil {
+ return make([]common.Key, 0), err
+ }
+
+ ret := make([]common.Key, 0)
+ for _, r := range keys {
+ ret = append(ret, KeyFromProto(r))
+ }
+ return ret, nil
+
+}
+
+func (ozoneClient *OzoneClient) InfoKey(volume string, bucket string, key string) (common.Key, error) {
+ k, err := ozoneClient.OmClient.GetKey(volume, bucket, key)
+ return KeyFromProto(k), err
+}
+
+func (ozoneClient *OzoneClient) GetKey(volume string, bucket string, key string, destination io.Writer) (common.Key, error) {
+ keyInfo, err := ozoneClient.OmClient.GetKey(volume, bucket, key)
+
+ if err != nil {
+ return common.Key{}, err
+ }
+
+ if len(keyInfo.KeyLocationList) == 0 {
+ return common.Key{}, errors.New("Get key returned with zero key location version " + volume + "/" + bucket + "/" + key)
+ }
+
+ if len(keyInfo.KeyLocationList[0].KeyLocations) == 0 {
+ return common.Key{}, errors.New("Key location doesn't have any datanode for key " + volume + "/" + bucket + "/" + key)
+ }
+ for _, location := range keyInfo.KeyLocationList[0].KeyLocations {
+ pipeline := location.Pipeline
+
+ dnBlockId := ConvertBlockId(location.BlockID)
+ dnClient, err := datanode.CreateDatanodeClient(pipeline)
+ chunks, err := dnClient.GetBlock(dnBlockId)
+ if err != nil {
+ return common.Key{}, err
+ }
+ for _, chunk := range chunks {
+ data, err := dnClient.ReadChunk(dnBlockId, chunk)
+ if err != nil {
+ return common.Key{}, err
+ }
+ destination.Write(data)
+ }
+ dnClient.Close()
+ }
+ return common.Key{}, nil
+}
+
+func ConvertBlockId(bid *hdds.BlockID) *dnproto.DatanodeBlockID {
+ id := dnproto.DatanodeBlockID{
+ ContainerID: bid.ContainerBlockID.ContainerID,
+ LocalID: bid.ContainerBlockID.LocalID,
+ }
+ return &id
+}
+
+func (ozoneClient *OzoneClient) PutKey(volume string, bucket string, key string, source io.Reader) (common.Key, error) {
+ createKey, err := ozoneClient.OmClient.CreateKey(volume, bucket, key)
+ if err != nil {
+ return common.Key{}, err
+ }
+
+ keyInfo := createKey.KeyInfo
+ location := keyInfo.KeyLocationList[0].KeyLocations[0]
+ pipeline := location.Pipeline
+
+ dnClient, err := datanode.CreateDatanodeClient(pipeline)
+ if err != nil {
+ return common.Key{}, err
+ }
+
+ chunkSize := 4096
+ buffer := make([]byte, chunkSize)
+
+ chunks := make([]*dnproto.ChunkInfo, 0)
+ keySize := uint64(0)
+
+ locations := make([]*omproto.KeyLocation, 0)
+
+ blockId := ConvertBlockId(location.BlockID)
+ eof := false
+
+ for ; ; {
+ blockOffset := uint64(0)
+ for i := 0; i < 64; i++ {
+ count, err := source.Read(buffer)
+ if err == io.EOF {
+ eof = true
+ } else if err != nil {
+ return common.Key{}, err
+ }
+ if count > 0 {
+ chunk, err := dnClient.CreateAndWriteChunk(blockId, blockOffset, buffer[0:count], uint64(count))
+ if err != nil {
+ return common.Key{}, err
+ }
+ blockOffset += uint64(count)
+ keySize += uint64(count)
+ chunks = append(chunks, &chunk)
+ }
+ if eof {
+ break
+ }
+ }
+
+ err = dnClient.PutBlock(blockId, chunks)
+ if err != nil {
+ return common.Key{}, err
+ }
+ if eof {
+ break
+ }
+
+ //get new block and reset counters
+
+ nextBlockResponse, err := ozoneClient.OmClient.AllocateBlock(volume, bucket, key, createKey.ID)
+ if err != nil {
+ return common.Key{}, err
+ }
+
+ dnClient.Close()
+ location = nextBlockResponse.KeyLocation
+ pipeline = location.Pipeline
+ dnClient, err = datanode.CreateDatanodeClient(pipeline)
+ if err != nil {
+ return common.Key{}, err
+ }
+ blockId = ConvertBlockId(location.BlockID)
+ blockOffset = 0
+ chunks = make([]*dnproto.ChunkInfo, 0)
+
+ }
+ zero := uint64(0)
+ locations = append(locations, &omproto.KeyLocation{
+ BlockID: location.BlockID,
+ Pipeline: location.Pipeline,
+ Length: &keySize,
+ Offset: &zero,
+ })
+
+ ozoneClient.OmClient.CommitKey(volume, bucket, key, createKey.ID, locations, keySize)
+ return common.Key{}, nil
+}
+
+func KeyFromProto(keyProto *omproto.KeyInfo) common.Key {
+ replicationType := common.ReplicationType(*keyProto.Type)
+
+ result := common.Key{
+ Name: *keyProto.KeyName,
+ Replication: replicationType,
+ VolumeName: *keyProto.VolumeName,
+ BucketName: *keyProto.BucketName,
+ Size: *keyProto.DataSize,
+ }
+ return result
+}
diff --git a/api/om/bucket.go b/api/om/bucket.go
new file mode 100644
index 0000000..fb6b843
--- /dev/null
+++ b/api/om/bucket.go
@@ -0,0 +1,105 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package om
+
+import (
+ "github.com/apache/ozone-go/api/common"
+ ozone_proto "github.com/apache/ozone-go/api/proto/ozone"
+)
+
+func (om *OmClient) CreateBucket(volume string, bucket string) error {
+ isVersionEnabled := false
+ storageType := ozone_proto.StorageTypeProto_DISK
+ bucketInfo := ozone_proto.BucketInfo{
+ BucketName: &bucket,
+ VolumeName: &volume,
+ IsVersionEnabled: &isVersionEnabled,
+ StorageType: &storageType,
+
+ }
+ req := ozone_proto.CreateBucketRequest{
+ BucketInfo: &bucketInfo,
+ }
+
+ cmdType := ozone_proto.Type_CreateBucket
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &cmdType,
+ CreateBucketRequest: &req,
+ ClientId: &om.clientId,
+ }
+
+ _, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+func (om *OmClient) GetBucket(volume string, bucket string) (common.Bucket, error) {
+ req := ozone_proto.InfoBucketRequest{
+ VolumeName: &volume,
+ BucketName: &bucket,
+ }
+
+ cmdType := ozone_proto.Type_InfoBucket
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &cmdType,
+ InfoBucketRequest: &req,
+ ClientId: &om.clientId,
+ }
+
+ resp, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return common.Bucket{}, err
+ }
+ b := common.Bucket{
+ Name: *resp.InfoBucketResponse.BucketInfo.BucketName,
+ VolumeName: *resp.InfoBucketResponse.BucketInfo.VolumeName,
+ }
+ return b, nil
+}
+
+func (om *OmClient) ListBucket(volume string) ([]common.Bucket, error) {
+ res := make([]common.Bucket, 0)
+
+ req := ozone_proto.ListBucketsRequest{
+ VolumeName: &volume,
+ StartKey: ptr(""),
+ Count: ptri(100),
+ }
+
+ cmdType := ozone_proto.Type_ListBuckets
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &cmdType,
+ ListBucketsRequest: &req,
+ ClientId: &om.clientId,
+ }
+
+ resp, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return res, err
+ }
+ for _, b := range resp.ListBucketsResponse.BucketInfo {
+ cb := common.Bucket{
+ Name: *b.BucketName,
+ VolumeName: *b.VolumeName,
+ }
+ res = append(res, cb)
+ }
+ return res, nil
+}
+
+
diff --git a/api/om/om.go b/api/om/om.go
new file mode 100644
index 0000000..41ce98e
--- /dev/null
+++ b/api/om/om.go
@@ -0,0 +1,215 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package om
+
+import (
+ "errors"
+ "github.com/apache/ozone-go/api/common"
+ "github.com/apache/ozone-go/api/proto/hdds"
+ ozone_proto "github.com/apache/ozone-go/api/proto/ozone"
+ "github.com/hortonworks/gohadoop"
+ hadoop_ipc_client "github.com/hortonworks/gohadoop/hadoop_common/ipc/client"
+ uuid "github.com/nu7hatch/gouuid"
+ "net"
+ "strconv"
+ "sync"
+)
+
+var OM_PROTOCOL = "org.apache.hadoop.ozone.om.protocol.OzoneManagerProtocol"
+
+type OmClient struct {
+ OmHost string
+ client *hadoop_ipc_client.Client
+ clientId string
+ mu sync.Mutex
+}
+
+func CreateOmClient(omhost string) OmClient {
+ clientId, _ := uuid.NewV4()
+ ugi, _ := gohadoop.CreateSimpleUGIProto()
+ c := &hadoop_ipc_client.Client{
+ ClientId: clientId,
+ Ugi: ugi,
+ ServerAddress: net.JoinHostPort(omhost, strconv.Itoa(9862))}
+
+ return OmClient{
+ OmHost: omhost,
+ client: c,
+ }
+}
+
+func (om *OmClient) GetKey(volume string, bucket string, key string) (*ozone_proto.KeyInfo, error) {
+
+ keyArgs := &ozone_proto.KeyArgs{
+ VolumeName: &volume,
+ BucketName: &bucket,
+ KeyName: &key,
+ }
+ req := ozone_proto.LookupKeyRequest{
+ KeyArgs: keyArgs,
+ }
+
+ requestType := ozone_proto.Type_LookupKey
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &requestType,
+ LookupKeyRequest: &req,
+ ClientId: &om.clientId,
+ }
+
+ resp, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return nil, err
+ }
+ keyProto := resp.GetLookupKeyResponse().GetKeyInfo()
+ println(keyProto)
+ return keyProto, nil
+}
+
+func (om *OmClient) ListKeys(volume string, bucket string) ([]*ozone_proto.KeyInfo, error) {
+ return om.ListKeysPrefix(volume, bucket, "")
+
+}
+
+func (om *OmClient) AllocateBlock(volume string, bucket string, key string, clientID *uint64) (*ozone_proto.AllocateBlockResponse,error) {
+ req := ozone_proto.AllocateBlockRequest{
+ KeyArgs: &ozone_proto.KeyArgs{
+ VolumeName: &volume,
+ BucketName: &bucket,
+ KeyName: &key,
+ },
+ ClientID: clientID,
+ }
+
+ msgType := ozone_proto.Type_AllocateBlock
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &msgType,
+ AllocateBlockRequest: &req,
+ ClientId: &om.clientId,
+ }
+ resp, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return nil, err
+ }
+ return resp.AllocateBlockResponse, nil
+}
+
+func (om *OmClient) CreateKey(volume string, bucket string, key string) (*ozone_proto.CreateKeyResponse, error) {
+ req := ozone_proto.CreateKeyRequest{
+ KeyArgs: &ozone_proto.KeyArgs{
+ VolumeName: &volume,
+ BucketName: &bucket,
+ KeyName: &key,
+ },
+ }
+
+ createKeys := ozone_proto.Type_CreateKey
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &createKeys,
+ CreateKeyRequest: &req,
+ ClientId: &om.clientId,
+ }
+ resp, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return nil, err
+ }
+ return resp.CreateKeyResponse, nil
+}
+
+func (om *OmClient) CommitKey(volume string, bucket string, key string, id *uint64, keyLocations []*ozone_proto.KeyLocation, size uint64) (common.Key, error) {
+ one := hdds.ReplicationFactor_ONE
+ standalone := hdds.ReplicationType_STAND_ALONE
+ req := ozone_proto.CommitKeyRequest{
+ KeyArgs: &ozone_proto.KeyArgs{
+ VolumeName: &volume,
+ BucketName: &bucket,
+ KeyName: &key,
+ KeyLocations: keyLocations,
+ DataSize: &size,
+ Factor: &one,
+ Type: &standalone,
+ },
+ ClientID: id,
+ }
+
+ messageType := ozone_proto.Type_CommitKey
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &messageType,
+ CommitKeyRequest: &req,
+ ClientId: &om.clientId,
+ }
+ _, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return common.Key{}, err
+ }
+
+ return common.Key{}, nil
+}
+
+func (om *OmClient) ListKeysPrefix(volume string, bucket string, prefix string) ([]*ozone_proto.KeyInfo, error) {
+
+ req := ozone_proto.ListKeysRequest{
+ VolumeName: &volume,
+ BucketName: &bucket,
+ Prefix: ptr(prefix),
+ Count: ptri(1000),
+ }
+
+ listKeys := ozone_proto.Type_ListKeys
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &listKeys,
+ ListKeysRequest: &req,
+ ClientId: &om.clientId,
+ }
+
+ resp, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return nil, err
+ }
+
+ return resp.GetListKeysResponse().GetKeyInfo(), nil
+}
+
+func getRpcPort(ports []*hdds.Port) uint32 {
+ for _, port := range ports {
+ if port.GetName() == "RATIS" {
+ return port.GetValue()
+ }
+ }
+ return 0
+}
+
+func ptri(i int32) *int32 {
+ return &i
+}
+
+func ptr(s string) *string {
+ return &s
+}
+
+func (om *OmClient) submitRequest(request *ozone_proto.OMRequest, ) (*ozone_proto.OMResponse, error) {
+ wrapperResponse := ozone_proto.OMResponse{}
+ om.mu.Lock()
+ err := om.client.Call(gohadoop.GetCalleeRPCRequestHeaderProto(&OM_PROTOCOL), request, &wrapperResponse)
+ om.mu.Unlock()
+ if err != nil {
+ return nil, err
+ }
+ if *wrapperResponse.Status != ozone_proto.Status_OK {
+ return nil, errors.New("Error on calling OM " + wrapperResponse.Status.String() + " " + *wrapperResponse.Message)
+ }
+ return &wrapperResponse, nil
+}
+
diff --git a/api/om/volume.go b/api/om/volume.go
new file mode 100644
index 0000000..43fa85d
--- /dev/null
+++ b/api/om/volume.go
@@ -0,0 +1,99 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package om
+
+import (
+ "github.com/apache/ozone-go/api/common"
+ ozone_proto "github.com/apache/ozone-go/api/proto/ozone"
+)
+
+func (om *OmClient) ListVolumes() ([]common.Volume, error) {
+ scope := ozone_proto.ListVolumeRequest_VOLUMES_BY_USER
+ req := ozone_proto.ListVolumeRequest{
+ Scope: &scope,
+ UserName: ptr("hadoop"),
+ Prefix: ptr(""),
+ }
+
+ listKeys := ozone_proto.Type_ListVolume
+ clientId := "goClient"
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &listKeys,
+ ListVolumeRequest: &req,
+ ClientId: &clientId,
+ }
+
+ volumes := make([]common.Volume, 0)
+ resp, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return nil, err
+ }
+ for _, volProto := range resp.GetListVolumeResponse().GetVolumeInfo() {
+ volumes = append(volumes, common.Volume{Name: *volProto.Volume})
+ }
+ return volumes, nil
+}
+
+func (om *OmClient) CreateVolume(name string) error {
+ onegig := uint64(1024 * 1024 * 1024)
+ volumeInfo := ozone_proto.VolumeInfo{
+ AdminName: ptr("hadoop"),
+ OwnerName: ptr("hadoop"),
+ Volume: ptr(name),
+ QuotaInBytes: &onegig,
+ }
+ req := ozone_proto.CreateVolumeRequest{
+ VolumeInfo: &volumeInfo,
+ }
+
+ cmdType := ozone_proto.Type_CreateVolume
+ clientId := "goClient"
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &cmdType,
+ CreateVolumeRequest: &req,
+ ClientId: &clientId,
+ }
+
+ _, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+func (om *OmClient) GetVolume(name string) (common.Volume, error) {
+ req := ozone_proto.InfoVolumeRequest{
+ VolumeName: &name,
+ }
+
+ cmdType := ozone_proto.Type_InfoVolume
+ wrapperRequest := ozone_proto.OMRequest{
+ CmdType: &cmdType,
+ InfoVolumeRequest: &req,
+ ClientId: &om.clientId,
+ }
+
+ resp, err := om.submitRequest(&wrapperRequest)
+ if err != nil {
+ return common.Volume{}, err
+ }
+
+ vol := common.Volume{}
+ vol.Name = *resp.InfoVolumeResponse.VolumeInfo.Volume
+ vol.Owner = *resp.InfoVolumeResponse.VolumeInfo.OwnerName
+
+ return vol, nil
+}
diff --git a/api/ozone.go b/api/ozone.go
new file mode 100644
index 0000000..937e644
--- /dev/null
+++ b/api/ozone.go
@@ -0,0 +1,31 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package api
+
+import (
+ "github.com/apache/ozone-go/api/om"
+)
+
+type OzoneClient struct {
+ OmClient *om.OmClient
+}
+
+func CreateOzoneClient(omhost string) *OzoneClient {
+ client := om.CreateOmClient(omhost)
+ return &OzoneClient{
+ OmClient: &client,
+ }
+}
diff --git a/api/ozone_test.go b/api/ozone_test.go
new file mode 100644
index 0000000..17d1688
--- /dev/null
+++ b/api/ozone_test.go
@@ -0,0 +1,68 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package api
+
+import (
+ "fmt"
+ "math/rand"
+ "testing"
+ "time"
+)
+import "github.com/stretchr/testify/assert"
+
+func randomName(prefix string) string {
+ seq := rand.New(rand.NewSource(time.Now().Unix())).Int31()
+ return prefix + fmt.Sprintf("%d", seq)
+}
+
+func TestOzoneClientVolumeCreateGet(t *testing.T) {
+ client := CreateOzoneClient("localhost")
+
+ volumeName := randomName("vol")
+ err := client.CreateVolume(volumeName)
+ assert.Nil(t, err)
+
+ vol, err := client.GetVolume(volumeName)
+ assert.Nil(t, err)
+
+ assert.Equal(t, volumeName, vol.Name)
+}
+
+func TestOzoneClientBucketCreateGet(t *testing.T) {
+
+ client := CreateOzoneClient("localhost")
+
+ //volumeName := "vol1"
+ volumeName := randomName("vol")
+ bucketName := randomName("bucket")
+
+ err := client.CreateVolume(volumeName)
+ assert.Nil(t, err)
+
+ time.Sleep(4 * time.Second)
+
+
+
+
+ err = client.CreateBucket(volumeName, bucketName)
+ assert.Nil(t, err)
+
+ bucket, err := client.GetBucket(volumeName, bucketName)
+ assert.Nil(t, err)
+
+ assert.Equal(t, bucketName, bucket.Name)
+ assert.Equal(t, volumeName, bucket.VolumeName)
+}
diff --git a/api/proto/common/Security.pb.go b/api/proto/common/Security.pb.go
new file mode 100644
index 0000000..f907fa2
--- /dev/null
+++ b/api/proto/common/Security.pb.go
@@ -0,0 +1,745 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.24.0
+// protoc v3.15.6
+// source: Security.proto
+
+package common
+
+import (
+ proto "github.com/golang/protobuf/proto"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
+
+//*
+// Security token identifier
+type TokenProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Identifier []byte `protobuf:"bytes,1,req,name=identifier" json:"identifier,omitempty"`
+ Password []byte `protobuf:"bytes,2,req,name=password" json:"password,omitempty"`
+ Kind *string `protobuf:"bytes,3,req,name=kind" json:"kind,omitempty"`
+ Service *string `protobuf:"bytes,4,req,name=service" json:"service,omitempty"`
+}
+
+func (x *TokenProto) Reset() {
+ *x = TokenProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TokenProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TokenProto) ProtoMessage() {}
+
+func (x *TokenProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TokenProto.ProtoReflect.Descriptor instead.
+func (*TokenProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *TokenProto) GetIdentifier() []byte {
+ if x != nil {
+ return x.Identifier
+ }
+ return nil
+}
+
+func (x *TokenProto) GetPassword() []byte {
+ if x != nil {
+ return x.Password
+ }
+ return nil
+}
+
+func (x *TokenProto) GetKind() string {
+ if x != nil && x.Kind != nil {
+ return *x.Kind
+ }
+ return ""
+}
+
+func (x *TokenProto) GetService() string {
+ if x != nil && x.Service != nil {
+ return *x.Service
+ }
+ return ""
+}
+
+type CredentialsKVProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Alias *string `protobuf:"bytes,1,req,name=alias" json:"alias,omitempty"`
+ Token *TokenProto `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
+ Secret []byte `protobuf:"bytes,3,opt,name=secret" json:"secret,omitempty"`
+}
+
+func (x *CredentialsKVProto) Reset() {
+ *x = CredentialsKVProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CredentialsKVProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CredentialsKVProto) ProtoMessage() {}
+
+func (x *CredentialsKVProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CredentialsKVProto.ProtoReflect.Descriptor instead.
+func (*CredentialsKVProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *CredentialsKVProto) GetAlias() string {
+ if x != nil && x.Alias != nil {
+ return *x.Alias
+ }
+ return ""
+}
+
+func (x *CredentialsKVProto) GetToken() *TokenProto {
+ if x != nil {
+ return x.Token
+ }
+ return nil
+}
+
+func (x *CredentialsKVProto) GetSecret() []byte {
+ if x != nil {
+ return x.Secret
+ }
+ return nil
+}
+
+type CredentialsProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Tokens []*CredentialsKVProto `protobuf:"bytes,1,rep,name=tokens" json:"tokens,omitempty"`
+ Secrets []*CredentialsKVProto `protobuf:"bytes,2,rep,name=secrets" json:"secrets,omitempty"`
+}
+
+func (x *CredentialsProto) Reset() {
+ *x = CredentialsProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CredentialsProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CredentialsProto) ProtoMessage() {}
+
+func (x *CredentialsProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CredentialsProto.ProtoReflect.Descriptor instead.
+func (*CredentialsProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *CredentialsProto) GetTokens() []*CredentialsKVProto {
+ if x != nil {
+ return x.Tokens
+ }
+ return nil
+}
+
+func (x *CredentialsProto) GetSecrets() []*CredentialsKVProto {
+ if x != nil {
+ return x.Secrets
+ }
+ return nil
+}
+
+type GetDelegationTokenRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Renewer *string `protobuf:"bytes,1,req,name=renewer" json:"renewer,omitempty"`
+}
+
+func (x *GetDelegationTokenRequestProto) Reset() {
+ *x = GetDelegationTokenRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetDelegationTokenRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDelegationTokenRequestProto) ProtoMessage() {}
+
+func (x *GetDelegationTokenRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetDelegationTokenRequestProto.ProtoReflect.Descriptor instead.
+func (*GetDelegationTokenRequestProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *GetDelegationTokenRequestProto) GetRenewer() string {
+ if x != nil && x.Renewer != nil {
+ return *x.Renewer
+ }
+ return ""
+}
+
+type GetDelegationTokenResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Token *TokenProto `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
+}
+
+func (x *GetDelegationTokenResponseProto) Reset() {
+ *x = GetDelegationTokenResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetDelegationTokenResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDelegationTokenResponseProto) ProtoMessage() {}
+
+func (x *GetDelegationTokenResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetDelegationTokenResponseProto.ProtoReflect.Descriptor instead.
+func (*GetDelegationTokenResponseProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *GetDelegationTokenResponseProto) GetToken() *TokenProto {
+ if x != nil {
+ return x.Token
+ }
+ return nil
+}
+
+type RenewDelegationTokenRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Token *TokenProto `protobuf:"bytes,1,req,name=token" json:"token,omitempty"`
+}
+
+func (x *RenewDelegationTokenRequestProto) Reset() {
+ *x = RenewDelegationTokenRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RenewDelegationTokenRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RenewDelegationTokenRequestProto) ProtoMessage() {}
+
+func (x *RenewDelegationTokenRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RenewDelegationTokenRequestProto.ProtoReflect.Descriptor instead.
+func (*RenewDelegationTokenRequestProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *RenewDelegationTokenRequestProto) GetToken() *TokenProto {
+ if x != nil {
+ return x.Token
+ }
+ return nil
+}
+
+type RenewDelegationTokenResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NewExpiryTime *uint64 `protobuf:"varint,1,req,name=newExpiryTime" json:"newExpiryTime,omitempty"`
+}
+
+func (x *RenewDelegationTokenResponseProto) Reset() {
+ *x = RenewDelegationTokenResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RenewDelegationTokenResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RenewDelegationTokenResponseProto) ProtoMessage() {}
+
+func (x *RenewDelegationTokenResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RenewDelegationTokenResponseProto.ProtoReflect.Descriptor instead.
+func (*RenewDelegationTokenResponseProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *RenewDelegationTokenResponseProto) GetNewExpiryTime() uint64 {
+ if x != nil && x.NewExpiryTime != nil {
+ return *x.NewExpiryTime
+ }
+ return 0
+}
+
+type CancelDelegationTokenRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Token *TokenProto `protobuf:"bytes,1,req,name=token" json:"token,omitempty"`
+}
+
+func (x *CancelDelegationTokenRequestProto) Reset() {
+ *x = CancelDelegationTokenRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CancelDelegationTokenRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CancelDelegationTokenRequestProto) ProtoMessage() {}
+
+func (x *CancelDelegationTokenRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CancelDelegationTokenRequestProto.ProtoReflect.Descriptor instead.
+func (*CancelDelegationTokenRequestProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *CancelDelegationTokenRequestProto) GetToken() *TokenProto {
+ if x != nil {
+ return x.Token
+ }
+ return nil
+}
+
+type CancelDelegationTokenResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *CancelDelegationTokenResponseProto) Reset() {
+ *x = CancelDelegationTokenResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_Security_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CancelDelegationTokenResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CancelDelegationTokenResponseProto) ProtoMessage() {}
+
+func (x *CancelDelegationTokenResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_Security_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CancelDelegationTokenResponseProto.ProtoReflect.Descriptor instead.
+func (*CancelDelegationTokenResponseProto) Descriptor() ([]byte, []int) {
+ return file_Security_proto_rawDescGZIP(), []int{8}
+}
+
+var File_Security_proto protoreflect.FileDescriptor
+
+var file_Security_proto_rawDesc = []byte{
+ 0x0a, 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x12, 0x0d, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22,
+ 0x76, 0x0a, 0x0a, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28,
+ 0x0c, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x1a, 0x0a,
+ 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52,
+ 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a,
+ 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52, 0x07,
+ 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x73, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4b, 0x56, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x0a,
+ 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c,
+ 0x69, 0x61, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x74,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x8a, 0x01, 0x0a,
+ 0x10, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x12, 0x39, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4b, 0x56, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x07,
+ 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,
+ 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x72,
+ 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4b, 0x56, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x3a, 0x0a, 0x1e, 0x47, 0x65, 0x74,
+ 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x72,
+ 0x65, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65,
+ 0x6e, 0x65, 0x77, 0x65, 0x72, 0x22, 0x52, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x65,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x53, 0x0a, 0x20, 0x52, 0x65, 0x6e,
+ 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2f, 0x0a,
+ 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68,
+ 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x49,
+ 0x0a, 0x21, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79,
+ 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x45,
+ 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x21, 0x43, 0x61, 0x6e,
+ 0x63, 0x65, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2f,
+ 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
+ 0x24, 0x0a, 0x22, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x6b, 0x0a, 0x26, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61,
+ 0x63, 0x68, 0x65, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x6f, 0x7a, 0x6f, 0x6e, 0x65,
+ 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42,
+ 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x5a,
+ 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63,
+ 0x68, 0x65, 0x2f, 0x6f, 0x7a, 0x6f, 0x6e, 0x65, 0x2d, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0xa0,
+ 0x01, 0x01,
+}
+
+var (
+ file_Security_proto_rawDescOnce sync.Once
+ file_Security_proto_rawDescData = file_Security_proto_rawDesc
+)
+
+func file_Security_proto_rawDescGZIP() []byte {
+ file_Security_proto_rawDescOnce.Do(func() {
+ file_Security_proto_rawDescData = protoimpl.X.CompressGZIP(file_Security_proto_rawDescData)
+ })
+ return file_Security_proto_rawDescData
+}
+
+var file_Security_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_Security_proto_goTypes = []interface{}{
+ (*TokenProto)(nil), // 0: hadoop.common.TokenProto
+ (*CredentialsKVProto)(nil), // 1: hadoop.common.CredentialsKVProto
+ (*CredentialsProto)(nil), // 2: hadoop.common.CredentialsProto
+ (*GetDelegationTokenRequestProto)(nil), // 3: hadoop.common.GetDelegationTokenRequestProto
+ (*GetDelegationTokenResponseProto)(nil), // 4: hadoop.common.GetDelegationTokenResponseProto
+ (*RenewDelegationTokenRequestProto)(nil), // 5: hadoop.common.RenewDelegationTokenRequestProto
+ (*RenewDelegationTokenResponseProto)(nil), // 6: hadoop.common.RenewDelegationTokenResponseProto
+ (*CancelDelegationTokenRequestProto)(nil), // 7: hadoop.common.CancelDelegationTokenRequestProto
+ (*CancelDelegationTokenResponseProto)(nil), // 8: hadoop.common.CancelDelegationTokenResponseProto
+}
+var file_Security_proto_depIdxs = []int32{
+ 0, // 0: hadoop.common.CredentialsKVProto.token:type_name -> hadoop.common.TokenProto
+ 1, // 1: hadoop.common.CredentialsProto.tokens:type_name -> hadoop.common.CredentialsKVProto
+ 1, // 2: hadoop.common.CredentialsProto.secrets:type_name -> hadoop.common.CredentialsKVProto
+ 0, // 3: hadoop.common.GetDelegationTokenResponseProto.token:type_name -> hadoop.common.TokenProto
+ 0, // 4: hadoop.common.RenewDelegationTokenRequestProto.token:type_name -> hadoop.common.TokenProto
+ 0, // 5: hadoop.common.CancelDelegationTokenRequestProto.token:type_name -> hadoop.common.TokenProto
+ 6, // [6:6] is the sub-list for method output_type
+ 6, // [6:6] is the sub-list for method input_type
+ 6, // [6:6] is the sub-list for extension type_name
+ 6, // [6:6] is the sub-list for extension extendee
+ 0, // [0:6] is the sub-list for field type_name
+}
+
+func init() { file_Security_proto_init() }
+func file_Security_proto_init() {
+ if File_Security_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_Security_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TokenProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_Security_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CredentialsKVProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_Security_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CredentialsProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_Security_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetDelegationTokenRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_Security_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetDelegationTokenResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_Security_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RenewDelegationTokenRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_Security_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RenewDelegationTokenResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_Security_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CancelDelegationTokenRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_Security_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CancelDelegationTokenResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_Security_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 9,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_Security_proto_goTypes,
+ DependencyIndexes: file_Security_proto_depIdxs,
+ MessageInfos: file_Security_proto_msgTypes,
+ }.Build()
+ File_Security_proto = out.File
+ file_Security_proto_rawDesc = nil
+ file_Security_proto_goTypes = nil
+ file_Security_proto_depIdxs = nil
+}
diff --git a/api/proto/datanode/DatanodeClientProtocol.pb.go b/api/proto/datanode/DatanodeClientProtocol.pb.go
new file mode 100644
index 0000000..7008fd5
--- /dev/null
+++ b/api/proto/datanode/DatanodeClientProtocol.pb.go
@@ -0,0 +1,4876 @@
+//*
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//*
+// These .proto interfaces are private and Unstable.
+// Please see http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/InterfaceClassification.html
+// for what changes are allowed for a *Unstable* .proto interface.
+
+// This file contains protocol buffers that are used to transfer data
+// to and from the datanode.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.24.0
+// protoc v3.15.6
+// source: DatanodeClientProtocol.proto
+
+package datanode
+
+import (
+ context "context"
+ proto "github.com/golang/protobuf/proto"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
+
+type Type int32
+
+const (
+ Type_CreateContainer Type = 1
+ Type_ReadContainer Type = 2
+ Type_UpdateContainer Type = 3
+ Type_DeleteContainer Type = 4
+ Type_ListContainer Type = 5
+ Type_PutBlock Type = 6
+ Type_GetBlock Type = 7
+ Type_DeleteBlock Type = 8
+ Type_ListBlock Type = 9
+ Type_ReadChunk Type = 10
+ Type_DeleteChunk Type = 11
+ Type_WriteChunk Type = 12
+ Type_ListChunk Type = 13
+ Type_CompactChunk Type = 14
+ //* Combines Block and Chunk Operation into Single RPC.
+ Type_PutSmallFile Type = 15
+ Type_GetSmallFile Type = 16
+ Type_CloseContainer Type = 17
+ Type_GetCommittedBlockLength Type = 18
+)
+
+// Enum value maps for Type.
+var (
+ Type_name = map[int32]string{
+ 1: "CreateContainer",
+ 2: "ReadContainer",
+ 3: "UpdateContainer",
+ 4: "DeleteContainer",
+ 5: "ListContainer",
+ 6: "PutBlock",
+ 7: "GetBlock",
+ 8: "DeleteBlock",
+ 9: "ListBlock",
+ 10: "ReadChunk",
+ 11: "DeleteChunk",
+ 12: "WriteChunk",
+ 13: "ListChunk",
+ 14: "CompactChunk",
+ 15: "PutSmallFile",
+ 16: "GetSmallFile",
+ 17: "CloseContainer",
+ 18: "GetCommittedBlockLength",
+ }
+ Type_value = map[string]int32{
+ "CreateContainer": 1,
+ "ReadContainer": 2,
+ "UpdateContainer": 3,
+ "DeleteContainer": 4,
+ "ListContainer": 5,
+ "PutBlock": 6,
+ "GetBlock": 7,
+ "DeleteBlock": 8,
+ "ListBlock": 9,
+ "ReadChunk": 10,
+ "DeleteChunk": 11,
+ "WriteChunk": 12,
+ "ListChunk": 13,
+ "CompactChunk": 14,
+ "PutSmallFile": 15,
+ "GetSmallFile": 16,
+ "CloseContainer": 17,
+ "GetCommittedBlockLength": 18,
+ }
+)
+
+func (x Type) Enum() *Type {
+ p := new(Type)
+ *p = x
+ return p
+}
+
+func (x Type) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Type) Descriptor() protoreflect.EnumDescriptor {
+ return file_DatanodeClientProtocol_proto_enumTypes[0].Descriptor()
+}
+
+func (Type) Type() protoreflect.EnumType {
+ return &file_DatanodeClientProtocol_proto_enumTypes[0]
+}
+
+func (x Type) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *Type) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = Type(num)
+ return nil
+}
+
+// Deprecated: Use Type.Descriptor instead.
+func (Type) EnumDescriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{0}
+}
+
+type Result int32
+
+const (
+ Result_SUCCESS Result = 1
+ Result_UNSUPPORTED_REQUEST Result = 2
+ Result_MALFORMED_REQUEST Result = 3
+ Result_CONTAINER_INTERNAL_ERROR Result = 4
+ Result_INVALID_CONFIG Result = 5
+ Result_INVALID_FILE_HASH_FOUND Result = 6
+ Result_CONTAINER_EXISTS Result = 7
+ Result_NO_SUCH_ALGORITHM Result = 8
+ Result_CONTAINER_NOT_FOUND Result = 9
+ Result_IO_EXCEPTION Result = 10
+ Result_UNABLE_TO_READ_METADATA_DB Result = 11
+ Result_NO_SUCH_BLOCK Result = 12
+ Result_OVERWRITE_FLAG_REQUIRED Result = 13
+ Result_UNABLE_TO_FIND_DATA_DIR Result = 14
+ Result_INVALID_WRITE_SIZE Result = 15
+ Result_CHECKSUM_MISMATCH Result = 16
+ Result_UNABLE_TO_FIND_CHUNK Result = 17
+ Result_PROTOC_DECODING_ERROR Result = 18
+ Result_INVALID_ARGUMENT Result = 19
+ Result_PUT_SMALL_FILE_ERROR Result = 20
+ Result_GET_SMALL_FILE_ERROR Result = 21
+ Result_CLOSED_CONTAINER_IO Result = 22
+ Result_ERROR_IN_COMPACT_DB Result = 24
+ Result_UNCLOSED_CONTAINER_IO Result = 25
+ Result_DELETE_ON_OPEN_CONTAINER Result = 26
+ Result_CLOSED_CONTAINER_RETRY Result = 27
+ Result_INVALID_CONTAINER_STATE Result = 28
+ Result_DISK_OUT_OF_SPACE Result = 29
+ Result_CONTAINER_ALREADY_EXISTS Result = 30
+ Result_CONTAINER_METADATA_ERROR Result = 31
+ Result_CONTAINER_FILES_CREATE_ERROR Result = 32
+ Result_CONTAINER_CHECKSUM_ERROR Result = 33
+ Result_UNKNOWN_CONTAINER_TYPE Result = 34
+ Result_BLOCK_NOT_COMMITTED Result = 35
+ Result_CONTAINER_UNHEALTHY Result = 36
+ Result_UNKNOWN_BCSID Result = 37
+ Result_BCSID_MISMATCH Result = 38
+ Result_CONTAINER_NOT_OPEN Result = 39
+ Result_CONTAINER_MISSING Result = 40
+ Result_BLOCK_TOKEN_VERIFICATION_FAILED Result = 41
+ Result_ERROR_IN_DB_SYNC Result = 42
+)
+
+// Enum value maps for Result.
+var (
+ Result_name = map[int32]string{
+ 1: "SUCCESS",
+ 2: "UNSUPPORTED_REQUEST",
+ 3: "MALFORMED_REQUEST",
+ 4: "CONTAINER_INTERNAL_ERROR",
+ 5: "INVALID_CONFIG",
+ 6: "INVALID_FILE_HASH_FOUND",
+ 7: "CONTAINER_EXISTS",
+ 8: "NO_SUCH_ALGORITHM",
+ 9: "CONTAINER_NOT_FOUND",
+ 10: "IO_EXCEPTION",
+ 11: "UNABLE_TO_READ_METADATA_DB",
+ 12: "NO_SUCH_BLOCK",
+ 13: "OVERWRITE_FLAG_REQUIRED",
+ 14: "UNABLE_TO_FIND_DATA_DIR",
+ 15: "INVALID_WRITE_SIZE",
+ 16: "CHECKSUM_MISMATCH",
+ 17: "UNABLE_TO_FIND_CHUNK",
+ 18: "PROTOC_DECODING_ERROR",
+ 19: "INVALID_ARGUMENT",
+ 20: "PUT_SMALL_FILE_ERROR",
+ 21: "GET_SMALL_FILE_ERROR",
+ 22: "CLOSED_CONTAINER_IO",
+ 24: "ERROR_IN_COMPACT_DB",
+ 25: "UNCLOSED_CONTAINER_IO",
+ 26: "DELETE_ON_OPEN_CONTAINER",
+ 27: "CLOSED_CONTAINER_RETRY",
+ 28: "INVALID_CONTAINER_STATE",
+ 29: "DISK_OUT_OF_SPACE",
+ 30: "CONTAINER_ALREADY_EXISTS",
+ 31: "CONTAINER_METADATA_ERROR",
+ 32: "CONTAINER_FILES_CREATE_ERROR",
+ 33: "CONTAINER_CHECKSUM_ERROR",
+ 34: "UNKNOWN_CONTAINER_TYPE",
+ 35: "BLOCK_NOT_COMMITTED",
+ 36: "CONTAINER_UNHEALTHY",
+ 37: "UNKNOWN_BCSID",
+ 38: "BCSID_MISMATCH",
+ 39: "CONTAINER_NOT_OPEN",
+ 40: "CONTAINER_MISSING",
+ 41: "BLOCK_TOKEN_VERIFICATION_FAILED",
+ 42: "ERROR_IN_DB_SYNC",
+ }
+ Result_value = map[string]int32{
+ "SUCCESS": 1,
+ "UNSUPPORTED_REQUEST": 2,
+ "MALFORMED_REQUEST": 3,
+ "CONTAINER_INTERNAL_ERROR": 4,
+ "INVALID_CONFIG": 5,
+ "INVALID_FILE_HASH_FOUND": 6,
+ "CONTAINER_EXISTS": 7,
+ "NO_SUCH_ALGORITHM": 8,
+ "CONTAINER_NOT_FOUND": 9,
+ "IO_EXCEPTION": 10,
+ "UNABLE_TO_READ_METADATA_DB": 11,
+ "NO_SUCH_BLOCK": 12,
+ "OVERWRITE_FLAG_REQUIRED": 13,
+ "UNABLE_TO_FIND_DATA_DIR": 14,
+ "INVALID_WRITE_SIZE": 15,
+ "CHECKSUM_MISMATCH": 16,
+ "UNABLE_TO_FIND_CHUNK": 17,
+ "PROTOC_DECODING_ERROR": 18,
+ "INVALID_ARGUMENT": 19,
+ "PUT_SMALL_FILE_ERROR": 20,
+ "GET_SMALL_FILE_ERROR": 21,
+ "CLOSED_CONTAINER_IO": 22,
+ "ERROR_IN_COMPACT_DB": 24,
+ "UNCLOSED_CONTAINER_IO": 25,
+ "DELETE_ON_OPEN_CONTAINER": 26,
+ "CLOSED_CONTAINER_RETRY": 27,
+ "INVALID_CONTAINER_STATE": 28,
+ "DISK_OUT_OF_SPACE": 29,
+ "CONTAINER_ALREADY_EXISTS": 30,
+ "CONTAINER_METADATA_ERROR": 31,
+ "CONTAINER_FILES_CREATE_ERROR": 32,
+ "CONTAINER_CHECKSUM_ERROR": 33,
+ "UNKNOWN_CONTAINER_TYPE": 34,
+ "BLOCK_NOT_COMMITTED": 35,
+ "CONTAINER_UNHEALTHY": 36,
+ "UNKNOWN_BCSID": 37,
+ "BCSID_MISMATCH": 38,
+ "CONTAINER_NOT_OPEN": 39,
+ "CONTAINER_MISSING": 40,
+ "BLOCK_TOKEN_VERIFICATION_FAILED": 41,
+ "ERROR_IN_DB_SYNC": 42,
+ }
+)
+
+func (x Result) Enum() *Result {
+ p := new(Result)
+ *p = x
+ return p
+}
+
+func (x Result) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Result) Descriptor() protoreflect.EnumDescriptor {
+ return file_DatanodeClientProtocol_proto_enumTypes[1].Descriptor()
+}
+
+func (Result) Type() protoreflect.EnumType {
+ return &file_DatanodeClientProtocol_proto_enumTypes[1]
+}
+
+func (x Result) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *Result) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = Result(num)
+ return nil
+}
+
+// Deprecated: Use Result.Descriptor instead.
+func (Result) EnumDescriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{1}
+}
+
+type ContainerType int32
+
+const (
+ ContainerType_KeyValueContainer ContainerType = 1
+)
+
+// Enum value maps for ContainerType.
+var (
+ ContainerType_name = map[int32]string{
+ 1: "KeyValueContainer",
+ }
+ ContainerType_value = map[string]int32{
+ "KeyValueContainer": 1,
+ }
+)
+
+func (x ContainerType) Enum() *ContainerType {
+ p := new(ContainerType)
+ *p = x
+ return p
+}
+
+func (x ContainerType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ContainerType) Descriptor() protoreflect.EnumDescriptor {
+ return file_DatanodeClientProtocol_proto_enumTypes[2].Descriptor()
+}
+
+func (ContainerType) Type() protoreflect.EnumType {
+ return &file_DatanodeClientProtocol_proto_enumTypes[2]
+}
+
+func (x ContainerType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *ContainerType) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = ContainerType(num)
+ return nil
+}
+
+// Deprecated: Use ContainerType.Descriptor instead.
+func (ContainerType) EnumDescriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{2}
+}
+
+type ChecksumType int32
+
+const (
+ ChecksumType_NONE ChecksumType = 1
+ ChecksumType_CRC32 ChecksumType = 2
+ ChecksumType_CRC32C ChecksumType = 3
+ ChecksumType_SHA256 ChecksumType = 4
+ ChecksumType_MD5 ChecksumType = 5
+)
+
+// Enum value maps for ChecksumType.
+var (
+ ChecksumType_name = map[int32]string{
+ 1: "NONE",
+ 2: "CRC32",
+ 3: "CRC32C",
+ 4: "SHA256",
+ 5: "MD5",
+ }
+ ChecksumType_value = map[string]int32{
+ "NONE": 1,
+ "CRC32": 2,
+ "CRC32C": 3,
+ "SHA256": 4,
+ "MD5": 5,
+ }
+)
+
+func (x ChecksumType) Enum() *ChecksumType {
+ p := new(ChecksumType)
+ *p = x
+ return p
+}
+
+func (x ChecksumType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ChecksumType) Descriptor() protoreflect.EnumDescriptor {
+ return file_DatanodeClientProtocol_proto_enumTypes[3].Descriptor()
+}
+
+func (ChecksumType) Type() protoreflect.EnumType {
+ return &file_DatanodeClientProtocol_proto_enumTypes[3]
+}
+
+func (x ChecksumType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *ChecksumType) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = ChecksumType(num)
+ return nil
+}
+
+// Deprecated: Use ChecksumType.Descriptor instead.
+func (ChecksumType) EnumDescriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{3}
+}
+
+type ContainerDataProto_State int32
+
+const (
+ ContainerDataProto_OPEN ContainerDataProto_State = 1
+ ContainerDataProto_CLOSING ContainerDataProto_State = 2
+ ContainerDataProto_QUASI_CLOSED ContainerDataProto_State = 3
+ ContainerDataProto_CLOSED ContainerDataProto_State = 4
+ ContainerDataProto_UNHEALTHY ContainerDataProto_State = 5
+ ContainerDataProto_INVALID ContainerDataProto_State = 6
+ ContainerDataProto_DELETED ContainerDataProto_State = 7
+)
+
+// Enum value maps for ContainerDataProto_State.
+var (
+ ContainerDataProto_State_name = map[int32]string{
+ 1: "OPEN",
+ 2: "CLOSING",
+ 3: "QUASI_CLOSED",
+ 4: "CLOSED",
+ 5: "UNHEALTHY",
+ 6: "INVALID",
+ 7: "DELETED",
+ }
+ ContainerDataProto_State_value = map[string]int32{
+ "OPEN": 1,
+ "CLOSING": 2,
+ "QUASI_CLOSED": 3,
+ "CLOSED": 4,
+ "UNHEALTHY": 5,
+ "INVALID": 6,
+ "DELETED": 7,
+ }
+)
+
+func (x ContainerDataProto_State) Enum() *ContainerDataProto_State {
+ p := new(ContainerDataProto_State)
+ *p = x
+ return p
+}
+
+func (x ContainerDataProto_State) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ContainerDataProto_State) Descriptor() protoreflect.EnumDescriptor {
+ return file_DatanodeClientProtocol_proto_enumTypes[4].Descriptor()
+}
+
+func (ContainerDataProto_State) Type() protoreflect.EnumType {
+ return &file_DatanodeClientProtocol_proto_enumTypes[4]
+}
+
+func (x ContainerDataProto_State) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *ContainerDataProto_State) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = ContainerDataProto_State(num)
+ return nil
+}
+
+// Deprecated: Use ContainerDataProto_State.Descriptor instead.
+func (ContainerDataProto_State) EnumDescriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{4, 0}
+}
+
+//*
+// Block ID that uniquely identify a block in Datanode.
+type DatanodeBlockID struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerID *int64 `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
+ LocalID *int64 `protobuf:"varint,2,req,name=localID" json:"localID,omitempty"`
+ BlockCommitSequenceId *uint64 `protobuf:"varint,3,opt,name=blockCommitSequenceId,def=0" json:"blockCommitSequenceId,omitempty"`
+}
+
+// Default values for DatanodeBlockID fields.
+const (
+ Default_DatanodeBlockID_BlockCommitSequenceId = uint64(0)
+)
+
+func (x *DatanodeBlockID) Reset() {
+ *x = DatanodeBlockID{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DatanodeBlockID) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DatanodeBlockID) ProtoMessage() {}
+
+func (x *DatanodeBlockID) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DatanodeBlockID.ProtoReflect.Descriptor instead.
+func (*DatanodeBlockID) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *DatanodeBlockID) GetContainerID() int64 {
+ if x != nil && x.ContainerID != nil {
+ return *x.ContainerID
+ }
+ return 0
+}
+
+func (x *DatanodeBlockID) GetLocalID() int64 {
+ if x != nil && x.LocalID != nil {
+ return *x.LocalID
+ }
+ return 0
+}
+
+func (x *DatanodeBlockID) GetBlockCommitSequenceId() uint64 {
+ if x != nil && x.BlockCommitSequenceId != nil {
+ return *x.BlockCommitSequenceId
+ }
+ return Default_DatanodeBlockID_BlockCommitSequenceId
+}
+
+type KeyValue struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Key *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
+ Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
+}
+
+func (x *KeyValue) Reset() {
+ *x = KeyValue{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KeyValue) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KeyValue) ProtoMessage() {}
+
+func (x *KeyValue) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.
+func (*KeyValue) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *KeyValue) GetKey() string {
+ if x != nil && x.Key != nil {
+ return *x.Key
+ }
+ return ""
+}
+
+func (x *KeyValue) GetValue() string {
+ if x != nil && x.Value != nil {
+ return *x.Value
+ }
+ return ""
+}
+
+type ContainerCommandRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CmdType *Type `protobuf:"varint,1,req,name=cmdType,enum=hadoop.hdds.datanode.Type" json:"cmdType,omitempty"` // Type of the command
+ // A string that identifies this command, we generate Trace ID in Ozone
+ // frontend and this allows us to trace that command all over ozone.
+ TraceID *string `protobuf:"bytes,2,opt,name=traceID" json:"traceID,omitempty"`
+ ContainerID *int64 `protobuf:"varint,3,req,name=containerID" json:"containerID,omitempty"`
+ DatanodeUuid *string `protobuf:"bytes,4,req,name=datanodeUuid" json:"datanodeUuid,omitempty"`
+ PipelineID *string `protobuf:"bytes,5,opt,name=pipelineID" json:"pipelineID,omitempty"`
+ // One of the following command is available when the corresponding
+ // cmdType is set. At the protocol level we allow only
+ // one command in each packet.
+ // TODO : Upgrade to Protobuf 2.6 or later.
+ CreateContainer *CreateContainerRequestProto `protobuf:"bytes,6,opt,name=createContainer" json:"createContainer,omitempty"`
+ ReadContainer *ReadContainerRequestProto `protobuf:"bytes,7,opt,name=readContainer" json:"readContainer,omitempty"`
+ UpdateContainer *UpdateContainerRequestProto `protobuf:"bytes,8,opt,name=updateContainer" json:"updateContainer,omitempty"`
+ DeleteContainer *DeleteContainerRequestProto `protobuf:"bytes,9,opt,name=deleteContainer" json:"deleteContainer,omitempty"`
+ ListContainer *ListContainerRequestProto `protobuf:"bytes,10,opt,name=listContainer" json:"listContainer,omitempty"`
+ CloseContainer *CloseContainerRequestProto `protobuf:"bytes,11,opt,name=closeContainer" json:"closeContainer,omitempty"`
+ PutBlock *PutBlockRequestProto `protobuf:"bytes,12,opt,name=putBlock" json:"putBlock,omitempty"`
+ GetBlock *GetBlockRequestProto `protobuf:"bytes,13,opt,name=getBlock" json:"getBlock,omitempty"`
+ DeleteBlock *DeleteBlockRequestProto `protobuf:"bytes,14,opt,name=deleteBlock" json:"deleteBlock,omitempty"`
+ ListBlock *ListBlockRequestProto `protobuf:"bytes,15,opt,name=listBlock" json:"listBlock,omitempty"`
+ ReadChunk *ReadChunkRequestProto `protobuf:"bytes,16,opt,name=readChunk" json:"readChunk,omitempty"`
+ WriteChunk *WriteChunkRequestProto `protobuf:"bytes,17,opt,name=writeChunk" json:"writeChunk,omitempty"`
+ DeleteChunk *DeleteChunkRequestProto `protobuf:"bytes,18,opt,name=deleteChunk" json:"deleteChunk,omitempty"`
+ ListChunk *ListChunkRequestProto `protobuf:"bytes,19,opt,name=listChunk" json:"listChunk,omitempty"`
+ PutSmallFile *PutSmallFileRequestProto `protobuf:"bytes,20,opt,name=putSmallFile" json:"putSmallFile,omitempty"`
+ GetSmallFile *GetSmallFileRequestProto `protobuf:"bytes,21,opt,name=getSmallFile" json:"getSmallFile,omitempty"`
+ GetCommittedBlockLength *GetCommittedBlockLengthRequestProto `protobuf:"bytes,22,opt,name=getCommittedBlockLength" json:"getCommittedBlockLength,omitempty"`
+ EncodedToken *string `protobuf:"bytes,23,opt,name=encodedToken" json:"encodedToken,omitempty"`
+}
+
+func (x *ContainerCommandRequestProto) Reset() {
+ *x = ContainerCommandRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ContainerCommandRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContainerCommandRequestProto) ProtoMessage() {}
+
+func (x *ContainerCommandRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContainerCommandRequestProto.ProtoReflect.Descriptor instead.
+func (*ContainerCommandRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ContainerCommandRequestProto) GetCmdType() Type {
+ if x != nil && x.CmdType != nil {
+ return *x.CmdType
+ }
+ return Type_CreateContainer
+}
+
+func (x *ContainerCommandRequestProto) GetTraceID() string {
+ if x != nil && x.TraceID != nil {
+ return *x.TraceID
+ }
+ return ""
+}
+
+func (x *ContainerCommandRequestProto) GetContainerID() int64 {
+ if x != nil && x.ContainerID != nil {
+ return *x.ContainerID
+ }
+ return 0
+}
+
+func (x *ContainerCommandRequestProto) GetDatanodeUuid() string {
+ if x != nil && x.DatanodeUuid != nil {
+ return *x.DatanodeUuid
+ }
+ return ""
+}
+
+func (x *ContainerCommandRequestProto) GetPipelineID() string {
+ if x != nil && x.PipelineID != nil {
+ return *x.PipelineID
+ }
+ return ""
+}
+
+func (x *ContainerCommandRequestProto) GetCreateContainer() *CreateContainerRequestProto {
+ if x != nil {
+ return x.CreateContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetReadContainer() *ReadContainerRequestProto {
+ if x != nil {
+ return x.ReadContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetUpdateContainer() *UpdateContainerRequestProto {
+ if x != nil {
+ return x.UpdateContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetDeleteContainer() *DeleteContainerRequestProto {
+ if x != nil {
+ return x.DeleteContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetListContainer() *ListContainerRequestProto {
+ if x != nil {
+ return x.ListContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetCloseContainer() *CloseContainerRequestProto {
+ if x != nil {
+ return x.CloseContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetPutBlock() *PutBlockRequestProto {
+ if x != nil {
+ return x.PutBlock
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetGetBlock() *GetBlockRequestProto {
+ if x != nil {
+ return x.GetBlock
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetDeleteBlock() *DeleteBlockRequestProto {
+ if x != nil {
+ return x.DeleteBlock
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetListBlock() *ListBlockRequestProto {
+ if x != nil {
+ return x.ListBlock
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetReadChunk() *ReadChunkRequestProto {
+ if x != nil {
+ return x.ReadChunk
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetWriteChunk() *WriteChunkRequestProto {
+ if x != nil {
+ return x.WriteChunk
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetDeleteChunk() *DeleteChunkRequestProto {
+ if x != nil {
+ return x.DeleteChunk
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetListChunk() *ListChunkRequestProto {
+ if x != nil {
+ return x.ListChunk
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetPutSmallFile() *PutSmallFileRequestProto {
+ if x != nil {
+ return x.PutSmallFile
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetGetSmallFile() *GetSmallFileRequestProto {
+ if x != nil {
+ return x.GetSmallFile
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetGetCommittedBlockLength() *GetCommittedBlockLengthRequestProto {
+ if x != nil {
+ return x.GetCommittedBlockLength
+ }
+ return nil
+}
+
+func (x *ContainerCommandRequestProto) GetEncodedToken() string {
+ if x != nil && x.EncodedToken != nil {
+ return *x.EncodedToken
+ }
+ return ""
+}
+
+type ContainerCommandResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CmdType *Type `protobuf:"varint,1,req,name=cmdType,enum=hadoop.hdds.datanode.Type" json:"cmdType,omitempty"`
+ TraceID *string `protobuf:"bytes,2,opt,name=traceID" json:"traceID,omitempty"`
+ Result *Result `protobuf:"varint,3,req,name=result,enum=hadoop.hdds.datanode.Result" json:"result,omitempty"`
+ Message *string `protobuf:"bytes,4,opt,name=message" json:"message,omitempty"`
+ CreateContainer *CreateContainerResponseProto `protobuf:"bytes,5,opt,name=createContainer" json:"createContainer,omitempty"`
+ ReadContainer *ReadContainerResponseProto `protobuf:"bytes,6,opt,name=readContainer" json:"readContainer,omitempty"`
+ UpdateContainer *UpdateContainerResponseProto `protobuf:"bytes,7,opt,name=updateContainer" json:"updateContainer,omitempty"`
+ DeleteContainer *DeleteContainerResponseProto `protobuf:"bytes,8,opt,name=deleteContainer" json:"deleteContainer,omitempty"`
+ ListContainer *ListContainerResponseProto `protobuf:"bytes,9,opt,name=listContainer" json:"listContainer,omitempty"`
+ CloseContainer *CloseContainerResponseProto `protobuf:"bytes,10,opt,name=closeContainer" json:"closeContainer,omitempty"`
+ PutBlock *PutBlockResponseProto `protobuf:"bytes,11,opt,name=putBlock" json:"putBlock,omitempty"`
+ GetBlock *GetBlockResponseProto `protobuf:"bytes,12,opt,name=getBlock" json:"getBlock,omitempty"`
+ DeleteBlock *DeleteBlockResponseProto `protobuf:"bytes,13,opt,name=deleteBlock" json:"deleteBlock,omitempty"`
+ ListBlock *ListBlockResponseProto `protobuf:"bytes,14,opt,name=listBlock" json:"listBlock,omitempty"`
+ WriteChunk *WriteChunkResponseProto `protobuf:"bytes,15,opt,name=writeChunk" json:"writeChunk,omitempty"`
+ ReadChunk *ReadChunkResponseProto `protobuf:"bytes,16,opt,name=readChunk" json:"readChunk,omitempty"`
+ DeleteChunk *DeleteChunkResponseProto `protobuf:"bytes,17,opt,name=deleteChunk" json:"deleteChunk,omitempty"`
+ ListChunk *ListChunkResponseProto `protobuf:"bytes,18,opt,name=listChunk" json:"listChunk,omitempty"`
+ PutSmallFile *PutSmallFileResponseProto `protobuf:"bytes,19,opt,name=putSmallFile" json:"putSmallFile,omitempty"`
+ GetSmallFile *GetSmallFileResponseProto `protobuf:"bytes,20,opt,name=getSmallFile" json:"getSmallFile,omitempty"`
+ GetCommittedBlockLength *GetCommittedBlockLengthResponseProto `protobuf:"bytes,21,opt,name=getCommittedBlockLength" json:"getCommittedBlockLength,omitempty"`
+}
+
+func (x *ContainerCommandResponseProto) Reset() {
+ *x = ContainerCommandResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ContainerCommandResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContainerCommandResponseProto) ProtoMessage() {}
+
+func (x *ContainerCommandResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContainerCommandResponseProto.ProtoReflect.Descriptor instead.
+func (*ContainerCommandResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ContainerCommandResponseProto) GetCmdType() Type {
+ if x != nil && x.CmdType != nil {
+ return *x.CmdType
+ }
+ return Type_CreateContainer
+}
+
+func (x *ContainerCommandResponseProto) GetTraceID() string {
+ if x != nil && x.TraceID != nil {
+ return *x.TraceID
+ }
+ return ""
+}
+
+func (x *ContainerCommandResponseProto) GetResult() Result {
+ if x != nil && x.Result != nil {
+ return *x.Result
+ }
+ return Result_SUCCESS
+}
+
+func (x *ContainerCommandResponseProto) GetMessage() string {
+ if x != nil && x.Message != nil {
+ return *x.Message
+ }
+ return ""
+}
+
+func (x *ContainerCommandResponseProto) GetCreateContainer() *CreateContainerResponseProto {
+ if x != nil {
+ return x.CreateContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetReadContainer() *ReadContainerResponseProto {
+ if x != nil {
+ return x.ReadContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetUpdateContainer() *UpdateContainerResponseProto {
+ if x != nil {
+ return x.UpdateContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetDeleteContainer() *DeleteContainerResponseProto {
+ if x != nil {
+ return x.DeleteContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetListContainer() *ListContainerResponseProto {
+ if x != nil {
+ return x.ListContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetCloseContainer() *CloseContainerResponseProto {
+ if x != nil {
+ return x.CloseContainer
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetPutBlock() *PutBlockResponseProto {
+ if x != nil {
+ return x.PutBlock
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetGetBlock() *GetBlockResponseProto {
+ if x != nil {
+ return x.GetBlock
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetDeleteBlock() *DeleteBlockResponseProto {
+ if x != nil {
+ return x.DeleteBlock
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetListBlock() *ListBlockResponseProto {
+ if x != nil {
+ return x.ListBlock
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetWriteChunk() *WriteChunkResponseProto {
+ if x != nil {
+ return x.WriteChunk
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetReadChunk() *ReadChunkResponseProto {
+ if x != nil {
+ return x.ReadChunk
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetDeleteChunk() *DeleteChunkResponseProto {
+ if x != nil {
+ return x.DeleteChunk
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetListChunk() *ListChunkResponseProto {
+ if x != nil {
+ return x.ListChunk
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetPutSmallFile() *PutSmallFileResponseProto {
+ if x != nil {
+ return x.PutSmallFile
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetGetSmallFile() *GetSmallFileResponseProto {
+ if x != nil {
+ return x.GetSmallFile
+ }
+ return nil
+}
+
+func (x *ContainerCommandResponseProto) GetGetCommittedBlockLength() *GetCommittedBlockLengthResponseProto {
+ if x != nil {
+ return x.GetCommittedBlockLength
+ }
+ return nil
+}
+
+type ContainerDataProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerID *int64 `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
+ Metadata []*KeyValue `protobuf:"bytes,2,rep,name=metadata" json:"metadata,omitempty"`
+ ContainerPath *string `protobuf:"bytes,4,opt,name=containerPath" json:"containerPath,omitempty"`
+ BytesUsed *int64 `protobuf:"varint,6,opt,name=bytesUsed" json:"bytesUsed,omitempty"`
+ Size *int64 `protobuf:"varint,7,opt,name=size" json:"size,omitempty"`
+ BlockCount *int64 `protobuf:"varint,8,opt,name=blockCount" json:"blockCount,omitempty"`
+ State *ContainerDataProto_State `protobuf:"varint,9,opt,name=state,enum=hadoop.hdds.datanode.ContainerDataProto_State,def=1" json:"state,omitempty"`
+ ContainerType *ContainerType `protobuf:"varint,10,opt,name=containerType,enum=hadoop.hdds.datanode.ContainerType,def=1" json:"containerType,omitempty"`
+}
+
+// Default values for ContainerDataProto fields.
+const (
+ Default_ContainerDataProto_State = ContainerDataProto_OPEN
+ Default_ContainerDataProto_ContainerType = ContainerType_KeyValueContainer
+)
+
+func (x *ContainerDataProto) Reset() {
+ *x = ContainerDataProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ContainerDataProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContainerDataProto) ProtoMessage() {}
+
+func (x *ContainerDataProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContainerDataProto.ProtoReflect.Descriptor instead.
+func (*ContainerDataProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ContainerDataProto) GetContainerID() int64 {
+ if x != nil && x.ContainerID != nil {
+ return *x.ContainerID
+ }
+ return 0
+}
+
+func (x *ContainerDataProto) GetMetadata() []*KeyValue {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *ContainerDataProto) GetContainerPath() string {
+ if x != nil && x.ContainerPath != nil {
+ return *x.ContainerPath
+ }
+ return ""
+}
+
+func (x *ContainerDataProto) GetBytesUsed() int64 {
+ if x != nil && x.BytesUsed != nil {
+ return *x.BytesUsed
+ }
+ return 0
+}
+
+func (x *ContainerDataProto) GetSize() int64 {
+ if x != nil && x.Size != nil {
+ return *x.Size
+ }
+ return 0
+}
+
+func (x *ContainerDataProto) GetBlockCount() int64 {
+ if x != nil && x.BlockCount != nil {
+ return *x.BlockCount
+ }
+ return 0
+}
+
+func (x *ContainerDataProto) GetState() ContainerDataProto_State {
+ if x != nil && x.State != nil {
+ return *x.State
+ }
+ return Default_ContainerDataProto_State
+}
+
+func (x *ContainerDataProto) GetContainerType() ContainerType {
+ if x != nil && x.ContainerType != nil {
+ return *x.ContainerType
+ }
+ return Default_ContainerDataProto_ContainerType
+}
+
+type Container2BCSIDMapProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // repeated Container2BCSIDMapEntryProto container2BCSID = 1;
+ Container2BCSID map[int64]int64 `protobuf:"bytes,1,rep,name=container2BCSID" json:"container2BCSID,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+}
+
+func (x *Container2BCSIDMapProto) Reset() {
+ *x = Container2BCSIDMapProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Container2BCSIDMapProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Container2BCSIDMapProto) ProtoMessage() {}
+
+func (x *Container2BCSIDMapProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Container2BCSIDMapProto.ProtoReflect.Descriptor instead.
+func (*Container2BCSIDMapProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *Container2BCSIDMapProto) GetContainer2BCSID() map[int64]int64 {
+ if x != nil {
+ return x.Container2BCSID
+ }
+ return nil
+}
+
+// Container Messages.
+type CreateContainerRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Metadata []*KeyValue `protobuf:"bytes,2,rep,name=metadata" json:"metadata,omitempty"`
+ ContainerType *ContainerType `protobuf:"varint,3,opt,name=containerType,enum=hadoop.hdds.datanode.ContainerType,def=1" json:"containerType,omitempty"`
+}
+
+// Default values for CreateContainerRequestProto fields.
+const (
+ Default_CreateContainerRequestProto_ContainerType = ContainerType_KeyValueContainer
+)
+
+func (x *CreateContainerRequestProto) Reset() {
+ *x = CreateContainerRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateContainerRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateContainerRequestProto) ProtoMessage() {}
+
+func (x *CreateContainerRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateContainerRequestProto.ProtoReflect.Descriptor instead.
+func (*CreateContainerRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *CreateContainerRequestProto) GetMetadata() []*KeyValue {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *CreateContainerRequestProto) GetContainerType() ContainerType {
+ if x != nil && x.ContainerType != nil {
+ return *x.ContainerType
+ }
+ return Default_CreateContainerRequestProto_ContainerType
+}
+
+type CreateContainerResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *CreateContainerResponseProto) Reset() {
+ *x = CreateContainerResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateContainerResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateContainerResponseProto) ProtoMessage() {}
+
+func (x *CreateContainerResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateContainerResponseProto.ProtoReflect.Descriptor instead.
+func (*CreateContainerResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{7}
+}
+
+type ReadContainerRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *ReadContainerRequestProto) Reset() {
+ *x = ReadContainerRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ReadContainerRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReadContainerRequestProto) ProtoMessage() {}
+
+func (x *ReadContainerRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReadContainerRequestProto.ProtoReflect.Descriptor instead.
+func (*ReadContainerRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{8}
+}
+
+type ReadContainerResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerData *ContainerDataProto `protobuf:"bytes,1,opt,name=containerData" json:"containerData,omitempty"`
+}
+
+func (x *ReadContainerResponseProto) Reset() {
+ *x = ReadContainerResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ReadContainerResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReadContainerResponseProto) ProtoMessage() {}
+
+func (x *ReadContainerResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReadContainerResponseProto.ProtoReflect.Descriptor instead.
+func (*ReadContainerResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *ReadContainerResponseProto) GetContainerData() *ContainerDataProto {
+ if x != nil {
+ return x.ContainerData
+ }
+ return nil
+}
+
+type UpdateContainerRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Metadata []*KeyValue `protobuf:"bytes,2,rep,name=metadata" json:"metadata,omitempty"`
+ ForceUpdate *bool `protobuf:"varint,3,opt,name=forceUpdate,def=0" json:"forceUpdate,omitempty"`
+}
+
+// Default values for UpdateContainerRequestProto fields.
+const (
+ Default_UpdateContainerRequestProto_ForceUpdate = bool(false)
+)
+
+func (x *UpdateContainerRequestProto) Reset() {
+ *x = UpdateContainerRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateContainerRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateContainerRequestProto) ProtoMessage() {}
+
+func (x *UpdateContainerRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateContainerRequestProto.ProtoReflect.Descriptor instead.
+func (*UpdateContainerRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *UpdateContainerRequestProto) GetMetadata() []*KeyValue {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *UpdateContainerRequestProto) GetForceUpdate() bool {
+ if x != nil && x.ForceUpdate != nil {
+ return *x.ForceUpdate
+ }
+ return Default_UpdateContainerRequestProto_ForceUpdate
+}
+
+type UpdateContainerResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *UpdateContainerResponseProto) Reset() {
+ *x = UpdateContainerResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateContainerResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateContainerResponseProto) ProtoMessage() {}
+
+func (x *UpdateContainerResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateContainerResponseProto.ProtoReflect.Descriptor instead.
+func (*UpdateContainerResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{11}
+}
+
+type DeleteContainerRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ForceDelete *bool `protobuf:"varint,2,opt,name=forceDelete,def=0" json:"forceDelete,omitempty"`
+}
+
+// Default values for DeleteContainerRequestProto fields.
+const (
+ Default_DeleteContainerRequestProto_ForceDelete = bool(false)
+)
+
+func (x *DeleteContainerRequestProto) Reset() {
+ *x = DeleteContainerRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteContainerRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteContainerRequestProto) ProtoMessage() {}
+
+func (x *DeleteContainerRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteContainerRequestProto.ProtoReflect.Descriptor instead.
+func (*DeleteContainerRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *DeleteContainerRequestProto) GetForceDelete() bool {
+ if x != nil && x.ForceDelete != nil {
+ return *x.ForceDelete
+ }
+ return Default_DeleteContainerRequestProto_ForceDelete
+}
+
+type DeleteContainerResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteContainerResponseProto) Reset() {
+ *x = DeleteContainerResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteContainerResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteContainerResponseProto) ProtoMessage() {}
+
+func (x *DeleteContainerResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteContainerResponseProto.ProtoReflect.Descriptor instead.
+func (*DeleteContainerResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{13}
+}
+
+type ListContainerRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Count *uint32 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` // Max Results to return
+}
+
+func (x *ListContainerRequestProto) Reset() {
+ *x = ListContainerRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListContainerRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListContainerRequestProto) ProtoMessage() {}
+
+func (x *ListContainerRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListContainerRequestProto.ProtoReflect.Descriptor instead.
+func (*ListContainerRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *ListContainerRequestProto) GetCount() uint32 {
+ if x != nil && x.Count != nil {
+ return *x.Count
+ }
+ return 0
+}
+
+type ListContainerResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerData []*ContainerDataProto `protobuf:"bytes,1,rep,name=containerData" json:"containerData,omitempty"`
+}
+
+func (x *ListContainerResponseProto) Reset() {
+ *x = ListContainerResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListContainerResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListContainerResponseProto) ProtoMessage() {}
+
+func (x *ListContainerResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListContainerResponseProto.ProtoReflect.Descriptor instead.
+func (*ListContainerResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *ListContainerResponseProto) GetContainerData() []*ContainerDataProto {
+ if x != nil {
+ return x.ContainerData
+ }
+ return nil
+}
+
+type CloseContainerRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *CloseContainerRequestProto) Reset() {
+ *x = CloseContainerRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CloseContainerRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CloseContainerRequestProto) ProtoMessage() {}
+
+func (x *CloseContainerRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CloseContainerRequestProto.ProtoReflect.Descriptor instead.
+func (*CloseContainerRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{16}
+}
+
+type CloseContainerResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Hash *string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"`
+ ContainerID *int64 `protobuf:"varint,2,opt,name=containerID" json:"containerID,omitempty"`
+}
+
+func (x *CloseContainerResponseProto) Reset() {
+ *x = CloseContainerResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CloseContainerResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CloseContainerResponseProto) ProtoMessage() {}
+
+func (x *CloseContainerResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CloseContainerResponseProto.ProtoReflect.Descriptor instead.
+func (*CloseContainerResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *CloseContainerResponseProto) GetHash() string {
+ if x != nil && x.Hash != nil {
+ return *x.Hash
+ }
+ return ""
+}
+
+func (x *CloseContainerResponseProto) GetContainerID() int64 {
+ if x != nil && x.ContainerID != nil {
+ return *x.ContainerID
+ }
+ return 0
+}
+
+type BlockData struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+ Flags *int64 `protobuf:"varint,2,opt,name=flags" json:"flags,omitempty"` // for future use.
+ Metadata []*KeyValue `protobuf:"bytes,3,rep,name=metadata" json:"metadata,omitempty"`
+ Chunks []*ChunkInfo `protobuf:"bytes,4,rep,name=chunks" json:"chunks,omitempty"`
+ Size *int64 `protobuf:"varint,5,opt,name=size" json:"size,omitempty"`
+}
+
+func (x *BlockData) Reset() {
+ *x = BlockData{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BlockData) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BlockData) ProtoMessage() {}
+
+func (x *BlockData) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BlockData.ProtoReflect.Descriptor instead.
+func (*BlockData) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *BlockData) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+func (x *BlockData) GetFlags() int64 {
+ if x != nil && x.Flags != nil {
+ return *x.Flags
+ }
+ return 0
+}
+
+func (x *BlockData) GetMetadata() []*KeyValue {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *BlockData) GetChunks() []*ChunkInfo {
+ if x != nil {
+ return x.Chunks
+ }
+ return nil
+}
+
+func (x *BlockData) GetSize() int64 {
+ if x != nil && x.Size != nil {
+ return *x.Size
+ }
+ return 0
+}
+
+// Block Messages.
+type PutBlockRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockData *BlockData `protobuf:"bytes,1,req,name=blockData" json:"blockData,omitempty"`
+ Eof *bool `protobuf:"varint,2,opt,name=eof" json:"eof,omitempty"`
+}
+
+func (x *PutBlockRequestProto) Reset() {
+ *x = PutBlockRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[19]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PutBlockRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PutBlockRequestProto) ProtoMessage() {}
+
+func (x *PutBlockRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[19]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PutBlockRequestProto.ProtoReflect.Descriptor instead.
+func (*PutBlockRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *PutBlockRequestProto) GetBlockData() *BlockData {
+ if x != nil {
+ return x.BlockData
+ }
+ return nil
+}
+
+func (x *PutBlockRequestProto) GetEof() bool {
+ if x != nil && x.Eof != nil {
+ return *x.Eof
+ }
+ return false
+}
+
+type PutBlockResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CommittedBlockLength *GetCommittedBlockLengthResponseProto `protobuf:"bytes,1,req,name=committedBlockLength" json:"committedBlockLength,omitempty"`
+}
+
+func (x *PutBlockResponseProto) Reset() {
+ *x = PutBlockResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[20]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PutBlockResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PutBlockResponseProto) ProtoMessage() {}
+
+func (x *PutBlockResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[20]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PutBlockResponseProto.ProtoReflect.Descriptor instead.
+func (*PutBlockResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *PutBlockResponseProto) GetCommittedBlockLength() *GetCommittedBlockLengthResponseProto {
+ if x != nil {
+ return x.CommittedBlockLength
+ }
+ return nil
+}
+
+type GetBlockRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+}
+
+func (x *GetBlockRequestProto) Reset() {
+ *x = GetBlockRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[21]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetBlockRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetBlockRequestProto) ProtoMessage() {}
+
+func (x *GetBlockRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[21]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetBlockRequestProto.ProtoReflect.Descriptor instead.
+func (*GetBlockRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *GetBlockRequestProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+type GetBlockResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockData *BlockData `protobuf:"bytes,1,req,name=blockData" json:"blockData,omitempty"`
+}
+
+func (x *GetBlockResponseProto) Reset() {
+ *x = GetBlockResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[22]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetBlockResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetBlockResponseProto) ProtoMessage() {}
+
+func (x *GetBlockResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[22]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetBlockResponseProto.ProtoReflect.Descriptor instead.
+func (*GetBlockResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *GetBlockResponseProto) GetBlockData() *BlockData {
+ if x != nil {
+ return x.BlockData
+ }
+ return nil
+}
+
+type DeleteBlockRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+}
+
+func (x *DeleteBlockRequestProto) Reset() {
+ *x = DeleteBlockRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteBlockRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteBlockRequestProto) ProtoMessage() {}
+
+func (x *DeleteBlockRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[23]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteBlockRequestProto.ProtoReflect.Descriptor instead.
+func (*DeleteBlockRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *DeleteBlockRequestProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+type GetCommittedBlockLengthRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+}
+
+func (x *GetCommittedBlockLengthRequestProto) Reset() {
+ *x = GetCommittedBlockLengthRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetCommittedBlockLengthRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetCommittedBlockLengthRequestProto) ProtoMessage() {}
+
+func (x *GetCommittedBlockLengthRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetCommittedBlockLengthRequestProto.ProtoReflect.Descriptor instead.
+func (*GetCommittedBlockLengthRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *GetCommittedBlockLengthRequestProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+type GetCommittedBlockLengthResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+ BlockLength *int64 `protobuf:"varint,2,req,name=blockLength" json:"blockLength,omitempty"`
+}
+
+func (x *GetCommittedBlockLengthResponseProto) Reset() {
+ *x = GetCommittedBlockLengthResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetCommittedBlockLengthResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetCommittedBlockLengthResponseProto) ProtoMessage() {}
+
+func (x *GetCommittedBlockLengthResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetCommittedBlockLengthResponseProto.ProtoReflect.Descriptor instead.
+func (*GetCommittedBlockLengthResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *GetCommittedBlockLengthResponseProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+func (x *GetCommittedBlockLengthResponseProto) GetBlockLength() int64 {
+ if x != nil && x.BlockLength != nil {
+ return *x.BlockLength
+ }
+ return 0
+}
+
+type DeleteBlockResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteBlockResponseProto) Reset() {
+ *x = DeleteBlockResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteBlockResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteBlockResponseProto) ProtoMessage() {}
+
+func (x *DeleteBlockResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteBlockResponseProto.ProtoReflect.Descriptor instead.
+func (*DeleteBlockResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{26}
+}
+
+type ListBlockRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ StartLocalID *int64 `protobuf:"varint,2,opt,name=startLocalID" json:"startLocalID,omitempty"`
+ Count *uint32 `protobuf:"varint,3,req,name=count" json:"count,omitempty"`
+}
+
+func (x *ListBlockRequestProto) Reset() {
+ *x = ListBlockRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListBlockRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListBlockRequestProto) ProtoMessage() {}
+
+func (x *ListBlockRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[27]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListBlockRequestProto.ProtoReflect.Descriptor instead.
+func (*ListBlockRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *ListBlockRequestProto) GetStartLocalID() int64 {
+ if x != nil && x.StartLocalID != nil {
+ return *x.StartLocalID
+ }
+ return 0
+}
+
+func (x *ListBlockRequestProto) GetCount() uint32 {
+ if x != nil && x.Count != nil {
+ return *x.Count
+ }
+ return 0
+}
+
+type ListBlockResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockData []*BlockData `protobuf:"bytes,1,rep,name=blockData" json:"blockData,omitempty"`
+}
+
+func (x *ListBlockResponseProto) Reset() {
+ *x = ListBlockResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListBlockResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListBlockResponseProto) ProtoMessage() {}
+
+func (x *ListBlockResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[28]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListBlockResponseProto.ProtoReflect.Descriptor instead.
+func (*ListBlockResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *ListBlockResponseProto) GetBlockData() []*BlockData {
+ if x != nil {
+ return x.BlockData
+ }
+ return nil
+}
+
+type ChunkInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ChunkName *string `protobuf:"bytes,1,req,name=chunkName" json:"chunkName,omitempty"`
+ Offset *uint64 `protobuf:"varint,2,req,name=offset" json:"offset,omitempty"`
+ Len *uint64 `protobuf:"varint,3,req,name=len" json:"len,omitempty"`
+ Metadata []*KeyValue `protobuf:"bytes,4,rep,name=metadata" json:"metadata,omitempty"`
+ ChecksumData *ChecksumData `protobuf:"bytes,5,req,name=checksumData" json:"checksumData,omitempty"`
+}
+
+func (x *ChunkInfo) Reset() {
+ *x = ChunkInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChunkInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChunkInfo) ProtoMessage() {}
+
+func (x *ChunkInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[29]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChunkInfo.ProtoReflect.Descriptor instead.
+func (*ChunkInfo) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *ChunkInfo) GetChunkName() string {
+ if x != nil && x.ChunkName != nil {
+ return *x.ChunkName
+ }
+ return ""
+}
+
+func (x *ChunkInfo) GetOffset() uint64 {
+ if x != nil && x.Offset != nil {
+ return *x.Offset
+ }
+ return 0
+}
+
+func (x *ChunkInfo) GetLen() uint64 {
+ if x != nil && x.Len != nil {
+ return *x.Len
+ }
+ return 0
+}
+
+func (x *ChunkInfo) GetMetadata() []*KeyValue {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *ChunkInfo) GetChecksumData() *ChecksumData {
+ if x != nil {
+ return x.ChecksumData
+ }
+ return nil
+}
+
+type ChecksumData struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Type *ChecksumType `protobuf:"varint,1,req,name=type,enum=hadoop.hdds.datanode.ChecksumType" json:"type,omitempty"`
+ BytesPerChecksum *uint32 `protobuf:"varint,2,req,name=bytesPerChecksum" json:"bytesPerChecksum,omitempty"`
+ Checksums [][]byte `protobuf:"bytes,3,rep,name=checksums" json:"checksums,omitempty"`
+}
+
+func (x *ChecksumData) Reset() {
+ *x = ChecksumData{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChecksumData) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChecksumData) ProtoMessage() {}
+
+func (x *ChecksumData) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[30]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChecksumData.ProtoReflect.Descriptor instead.
+func (*ChecksumData) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *ChecksumData) GetType() ChecksumType {
+ if x != nil && x.Type != nil {
+ return *x.Type
+ }
+ return ChecksumType_NONE
+}
+
+func (x *ChecksumData) GetBytesPerChecksum() uint32 {
+ if x != nil && x.BytesPerChecksum != nil {
+ return *x.BytesPerChecksum
+ }
+ return 0
+}
+
+func (x *ChecksumData) GetChecksums() [][]byte {
+ if x != nil {
+ return x.Checksums
+ }
+ return nil
+}
+
+type WriteChunkRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+ ChunkData *ChunkInfo `protobuf:"bytes,2,req,name=chunkData" json:"chunkData,omitempty"`
+ Data []byte `protobuf:"bytes,3,opt,name=data" json:"data,omitempty"`
+}
+
+func (x *WriteChunkRequestProto) Reset() {
+ *x = WriteChunkRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WriteChunkRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WriteChunkRequestProto) ProtoMessage() {}
+
+func (x *WriteChunkRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[31]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WriteChunkRequestProto.ProtoReflect.Descriptor instead.
+func (*WriteChunkRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *WriteChunkRequestProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+func (x *WriteChunkRequestProto) GetChunkData() *ChunkInfo {
+ if x != nil {
+ return x.ChunkData
+ }
+ return nil
+}
+
+func (x *WriteChunkRequestProto) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+type WriteChunkResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *WriteChunkResponseProto) Reset() {
+ *x = WriteChunkResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[32]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WriteChunkResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WriteChunkResponseProto) ProtoMessage() {}
+
+func (x *WriteChunkResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[32]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WriteChunkResponseProto.ProtoReflect.Descriptor instead.
+func (*WriteChunkResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{32}
+}
+
+type ReadChunkRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+ ChunkData *ChunkInfo `protobuf:"bytes,2,req,name=chunkData" json:"chunkData,omitempty"`
+}
+
+func (x *ReadChunkRequestProto) Reset() {
+ *x = ReadChunkRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[33]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ReadChunkRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReadChunkRequestProto) ProtoMessage() {}
+
+func (x *ReadChunkRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[33]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReadChunkRequestProto.ProtoReflect.Descriptor instead.
+func (*ReadChunkRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *ReadChunkRequestProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+func (x *ReadChunkRequestProto) GetChunkData() *ChunkInfo {
+ if x != nil {
+ return x.ChunkData
+ }
+ return nil
+}
+
+type ReadChunkResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+ ChunkData *ChunkInfo `protobuf:"bytes,2,req,name=chunkData" json:"chunkData,omitempty"`
+ Data []byte `protobuf:"bytes,3,req,name=data" json:"data,omitempty"`
+}
+
+func (x *ReadChunkResponseProto) Reset() {
+ *x = ReadChunkResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[34]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ReadChunkResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReadChunkResponseProto) ProtoMessage() {}
+
+func (x *ReadChunkResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[34]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReadChunkResponseProto.ProtoReflect.Descriptor instead.
+func (*ReadChunkResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *ReadChunkResponseProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+func (x *ReadChunkResponseProto) GetChunkData() *ChunkInfo {
+ if x != nil {
+ return x.ChunkData
+ }
+ return nil
+}
+
+func (x *ReadChunkResponseProto) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+type DeleteChunkRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+ ChunkData *ChunkInfo `protobuf:"bytes,2,req,name=chunkData" json:"chunkData,omitempty"`
+}
+
+func (x *DeleteChunkRequestProto) Reset() {
+ *x = DeleteChunkRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[35]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteChunkRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteChunkRequestProto) ProtoMessage() {}
+
+func (x *DeleteChunkRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[35]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteChunkRequestProto.ProtoReflect.Descriptor instead.
+func (*DeleteChunkRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *DeleteChunkRequestProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+func (x *DeleteChunkRequestProto) GetChunkData() *ChunkInfo {
+ if x != nil {
+ return x.ChunkData
+ }
+ return nil
+}
+
+type DeleteChunkResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteChunkResponseProto) Reset() {
+ *x = DeleteChunkResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[36]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteChunkResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteChunkResponseProto) ProtoMessage() {}
+
+func (x *DeleteChunkResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[36]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteChunkResponseProto.ProtoReflect.Descriptor instead.
+func (*DeleteChunkResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{36}
+}
+
+type ListChunkRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
+ PrevChunkName *string `protobuf:"bytes,2,req,name=prevChunkName" json:"prevChunkName,omitempty"`
+ Count *uint32 `protobuf:"varint,3,req,name=count" json:"count,omitempty"`
+}
+
+func (x *ListChunkRequestProto) Reset() {
+ *x = ListChunkRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[37]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListChunkRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListChunkRequestProto) ProtoMessage() {}
+
+func (x *ListChunkRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[37]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListChunkRequestProto.ProtoReflect.Descriptor instead.
+func (*ListChunkRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{37}
+}
+
+func (x *ListChunkRequestProto) GetBlockID() *DatanodeBlockID {
+ if x != nil {
+ return x.BlockID
+ }
+ return nil
+}
+
+func (x *ListChunkRequestProto) GetPrevChunkName() string {
+ if x != nil && x.PrevChunkName != nil {
+ return *x.PrevChunkName
+ }
+ return ""
+}
+
+func (x *ListChunkRequestProto) GetCount() uint32 {
+ if x != nil && x.Count != nil {
+ return *x.Count
+ }
+ return 0
+}
+
+type ListChunkResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ChunkData []*ChunkInfo `protobuf:"bytes,1,rep,name=chunkData" json:"chunkData,omitempty"`
+}
+
+func (x *ListChunkResponseProto) Reset() {
+ *x = ListChunkResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[38]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListChunkResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListChunkResponseProto) ProtoMessage() {}
+
+func (x *ListChunkResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[38]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListChunkResponseProto.ProtoReflect.Descriptor instead.
+func (*ListChunkResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{38}
+}
+
+func (x *ListChunkResponseProto) GetChunkData() []*ChunkInfo {
+ if x != nil {
+ return x.ChunkData
+ }
+ return nil
+}
+
+type PutSmallFileRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Block *PutBlockRequestProto `protobuf:"bytes,1,req,name=block" json:"block,omitempty"`
+ ChunkInfo *ChunkInfo `protobuf:"bytes,2,req,name=chunkInfo" json:"chunkInfo,omitempty"`
+ Data []byte `protobuf:"bytes,3,req,name=data" json:"data,omitempty"`
+}
+
+func (x *PutSmallFileRequestProto) Reset() {
+ *x = PutSmallFileRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[39]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PutSmallFileRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PutSmallFileRequestProto) ProtoMessage() {}
+
+func (x *PutSmallFileRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[39]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PutSmallFileRequestProto.ProtoReflect.Descriptor instead.
+func (*PutSmallFileRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{39}
+}
+
+func (x *PutSmallFileRequestProto) GetBlock() *PutBlockRequestProto {
+ if x != nil {
+ return x.Block
+ }
+ return nil
+}
+
+func (x *PutSmallFileRequestProto) GetChunkInfo() *ChunkInfo {
+ if x != nil {
+ return x.ChunkInfo
+ }
+ return nil
+}
+
+func (x *PutSmallFileRequestProto) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+type PutSmallFileResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CommittedBlockLength *GetCommittedBlockLengthResponseProto `protobuf:"bytes,1,req,name=committedBlockLength" json:"committedBlockLength,omitempty"`
+}
+
+func (x *PutSmallFileResponseProto) Reset() {
+ *x = PutSmallFileResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[40]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PutSmallFileResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PutSmallFileResponseProto) ProtoMessage() {}
+
+func (x *PutSmallFileResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[40]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PutSmallFileResponseProto.ProtoReflect.Descriptor instead.
+func (*PutSmallFileResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *PutSmallFileResponseProto) GetCommittedBlockLength() *GetCommittedBlockLengthResponseProto {
+ if x != nil {
+ return x.CommittedBlockLength
+ }
+ return nil
+}
+
+type GetSmallFileRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Block *GetBlockRequestProto `protobuf:"bytes,1,req,name=block" json:"block,omitempty"`
+}
+
+func (x *GetSmallFileRequestProto) Reset() {
+ *x = GetSmallFileRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[41]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetSmallFileRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSmallFileRequestProto) ProtoMessage() {}
+
+func (x *GetSmallFileRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[41]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSmallFileRequestProto.ProtoReflect.Descriptor instead.
+func (*GetSmallFileRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{41}
+}
+
+func (x *GetSmallFileRequestProto) GetBlock() *GetBlockRequestProto {
+ if x != nil {
+ return x.Block
+ }
+ return nil
+}
+
+type GetSmallFileResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Data *ReadChunkResponseProto `protobuf:"bytes,1,req,name=data" json:"data,omitempty"`
+}
+
+func (x *GetSmallFileResponseProto) Reset() {
+ *x = GetSmallFileResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[42]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetSmallFileResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSmallFileResponseProto) ProtoMessage() {}
+
+func (x *GetSmallFileResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[42]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSmallFileResponseProto.ProtoReflect.Descriptor instead.
+func (*GetSmallFileResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{42}
+}
+
+func (x *GetSmallFileResponseProto) GetData() *ReadChunkResponseProto {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+type CopyContainerRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerID *int64 `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
+ ReadOffset *uint64 `protobuf:"varint,2,req,name=readOffset" json:"readOffset,omitempty"`
+ Len *uint64 `protobuf:"varint,3,opt,name=len" json:"len,omitempty"`
+}
+
+func (x *CopyContainerRequestProto) Reset() {
+ *x = CopyContainerRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[43]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CopyContainerRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CopyContainerRequestProto) ProtoMessage() {}
+
+func (x *CopyContainerRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[43]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CopyContainerRequestProto.ProtoReflect.Descriptor instead.
+func (*CopyContainerRequestProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{43}
+}
+
+func (x *CopyContainerRequestProto) GetContainerID() int64 {
+ if x != nil && x.ContainerID != nil {
+ return *x.ContainerID
+ }
+ return 0
+}
+
+func (x *CopyContainerRequestProto) GetReadOffset() uint64 {
+ if x != nil && x.ReadOffset != nil {
+ return *x.ReadOffset
+ }
+ return 0
+}
+
+func (x *CopyContainerRequestProto) GetLen() uint64 {
+ if x != nil && x.Len != nil {
+ return *x.Len
+ }
+ return 0
+}
+
+type CopyContainerResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerID *int64 `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
+ ReadOffset *uint64 `protobuf:"varint,2,req,name=readOffset" json:"readOffset,omitempty"`
+ Len *uint64 `protobuf:"varint,3,req,name=len" json:"len,omitempty"`
+ Eof *bool `protobuf:"varint,4,req,name=eof" json:"eof,omitempty"`
+ Data []byte `protobuf:"bytes,5,req,name=data" json:"data,omitempty"`
+ Checksum *int64 `protobuf:"varint,6,opt,name=checksum" json:"checksum,omitempty"`
+}
+
+func (x *CopyContainerResponseProto) Reset() {
+ *x = CopyContainerResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[44]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CopyContainerResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CopyContainerResponseProto) ProtoMessage() {}
+
+func (x *CopyContainerResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_DatanodeClientProtocol_proto_msgTypes[44]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CopyContainerResponseProto.ProtoReflect.Descriptor instead.
+func (*CopyContainerResponseProto) Descriptor() ([]byte, []int) {
+ return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *CopyContainerResponseProto) GetContainerID() int64 {
+ if x != nil && x.ContainerID != nil {
+ return *x.ContainerID
+ }
+ return 0
+}
+
+func (x *CopyContainerResponseProto) GetReadOffset() uint64 {
+ if x != nil && x.ReadOffset != nil {
+ return *x.ReadOffset
+ }
+ return 0
+}
+
+func (x *CopyContainerResponseProto) GetLen() uint64 {
+ if x != nil && x.Len != nil {
+ return *x.Len
+ }
+ return 0
+}
+
+func (x *CopyContainerResponseProto) GetEof() bool {
+ if x != nil && x.Eof != nil {
+ return *x.Eof
+ }
+ return false
+}
+
+func (x *CopyContainerResponseProto) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+func (x *CopyContainerResponseProto) GetChecksum() int64 {
+ if x != nil && x.Checksum != nil {
+ return *x.Checksum
+ }
+ return 0
+}
+
+var File_DatanodeClientProtocol_proto protoreflect.FileDescriptor
+
+var file_DatanodeClientProtocol_proto_rawDesc = []byte{
+ 0x0a, 0x1c, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14,
+ 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
+ 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
+ 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x6f,
+ 0x63, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x6f, 0x63,
+ 0x61, 0x6c, 0x49, 0x44, 0x12, 0x37, 0x0a, 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x04, 0x3a, 0x01, 0x30, 0x52, 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x32, 0x0a,
+ 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x22, 0x95, 0x0d, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43,
+ 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+ 0x02, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
+ 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52,
+ 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63,
+ 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65,
+ 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49,
+ 0x44, 0x18, 0x03, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
+ 0x55, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61,
+ 0x6e, 0x6f, 0x64, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x69, 0x70, 0x65,
+ 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x69,
+ 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x5b, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68,
+ 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
+ 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d, 0x72,
+ 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x0f,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x0f, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
+ 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+ 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
+ 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d,
+ 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x58, 0x0a,
+ 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x6f,
+ 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x75, 0x74, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x61, 0x64, 0x6f,
+ 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
+ 0x2e, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x70, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12,
+ 0x46, 0x0a, 0x08, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x67,
+ 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68,
+ 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
+ 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74,
+ 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b,
+ 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e,
+ 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65,
+ 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x4c,
+ 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x11, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
+ 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x43,
+ 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x4f, 0x0a, 0x0b,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
+ 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x49, 0x0a,
+ 0x09, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x2b, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64,
+ 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e,
+ 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6c,
+ 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x52, 0x0a, 0x0c, 0x70, 0x75, 0x74, 0x53,
+ 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
+ 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74,
+ 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69,
+ 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0c,
+ 0x70, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x52, 0x0a, 0x0c,
+ 0x67, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
+ 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6d, 0x61,
+ 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65,
+ 0x12, 0x73, 0x0a, 0x17, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64,
+ 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x17, 0x67, 0x65,
+ 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c,
+ 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64,
+ 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xed, 0x0c, 0x0a, 0x1d, 0x43, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x34, 0x0a, 0x07, 0x63,
+ 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x68,
+ 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
+ 0x6f, 0x64, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x06, 0x72,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x0d, 0x72, 0x65, 0x61,
+ 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x30, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64,
+ 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x12, 0x5c, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x64,
+ 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
+ 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12,
+ 0x5c, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f,
+ 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x64, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x56, 0x0a,
+ 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x09,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e,
+ 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
+ 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x12, 0x47, 0x0a, 0x08, 0x70, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
+ 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52,
+ 0x08, 0x70, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x08, 0x67, 0x65, 0x74,
+ 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x12, 0x50, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
+ 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
+ 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c,
+ 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x12, 0x4d, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x0f,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74,
+ 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12,
+ 0x4a, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x10, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
+ 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68,
+ 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x50, 0x0a, 0x0b, 0x64,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x2e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64,
+ 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68,
+ 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x4a, 0x0a,
+ 0x09, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64,
+ 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e,
+ 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09,
+ 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x53, 0x0a, 0x0c, 0x70, 0x75, 0x74,
+ 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x2f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61,
+ 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46,
+ 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x0c, 0x70, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x53,
+ 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x14,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53,
+ 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46,
+ 0x69, 0x6c, 0x65, 0x12, 0x74, 0x0a, 0x17, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+ 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x15,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43,
+ 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e,
+ 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x17, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x12, 0x43, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18,
+ 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x49, 0x44, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24,
+ 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73, 0x65,
+ 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73,
+ 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+ 0x53, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x52, 0x05, 0x73, 0x74, 0x61,
+ 0x74, 0x65, 0x12, 0x5c, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54,
+ 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x68, 0x61, 0x64, 0x6f,
+ 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
+ 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x11,
+ 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
+ 0x22, 0x65, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45,
+ 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x02,
+ 0x12, 0x10, 0x0a, 0x0c, 0x51, 0x55, 0x41, 0x53, 0x49, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44,
+ 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d,
+ 0x0a, 0x09, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x05, 0x12, 0x0b, 0x0a,
+ 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45,
+ 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x07, 0x22, 0xcb, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42, 0x43, 0x53, 0x49, 0x44, 0x4d, 0x61, 0x70, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x6c, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x32, 0x42, 0x43, 0x53, 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x68,
+ 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
+ 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42, 0x43,
+ 0x53, 0x49, 0x44, 0x4d, 0x61, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42, 0x43, 0x53, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42, 0x43, 0x53, 0x49,
+ 0x44, 0x1a, 0x42, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42,
+ 0x43, 0x53, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb7, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
+ 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4b,
+ 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x12, 0x5c, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79,
+ 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f,
+ 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x11, 0x4b,
+ 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22,
+ 0x1e, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+ 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6c, 0x0a, 0x1a,
+ 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x4e, 0x0a, 0x0d, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x28, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x82, 0x01, 0x0a, 0x1b, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68,
+ 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
+ 0x6f, 0x64, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
+ 0x73, 0x65, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22,
+ 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+ 0x46, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27,
+ 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63,
+ 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x31, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x1a, 0x4c, 0x69,
+ 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x4e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x28, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61,
+ 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x6c, 0x6f, 0x73,
+ 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x53, 0x0a, 0x1b, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x22, 0xeb, 0x01, 0x0a, 0x09,
+ 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64,
+ 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
+ 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
+ 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c,
+ 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73,
+ 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
+ 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x06,
+ 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68,
+ 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
+ 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63,
+ 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x67, 0x0a, 0x14, 0x50, 0x75, 0x74,
+ 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x12, 0x3d, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01,
+ 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61,
+ 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65,
+ 0x6f, 0x66, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x6e, 0x0a, 0x14,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x64,
+ 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
+ 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65,
+ 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x57, 0x0a, 0x14,
+ 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18,
+ 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74,
+ 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x22, 0x56, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3d,
+ 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x02, 0x28,
+ 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61,
+ 0x74, 0x61, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5a, 0x0a,
+ 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f,
+ 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
+ 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44,
+ 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x22, 0x66, 0x0a, 0x23, 0x47, 0x65, 0x74,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28,
+ 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
+ 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
+ 0x44, 0x22, 0x89, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
+ 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03,
+ 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x1a, 0x0a,
+ 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x51, 0x0a, 0x15, 0x4c, 0x69, 0x73,
+ 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c,
+ 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c,
+ 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
+ 0x03, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x57, 0x0a, 0x16,
+ 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3d, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44,
+ 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f,
+ 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
+ 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0xd7, 0x01, 0x0a, 0x09, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49,
+ 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65,
+ 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x02, 0x28,
+ 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e,
+ 0x18, 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x3a, 0x0a, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
+ 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
+ 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b,
+ 0x73, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x22, 0x2e,
+ 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
+ 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x44, 0x61, 0x74,
+ 0x61, 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x22,
+ 0x90, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61,
+ 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x22,
+ 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74,
+ 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x54, 0x79,
+ 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x79, 0x74, 0x65,
+ 0x73, 0x50, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x02,
+ 0x28, 0x0d, 0x52, 0x10, 0x62, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
+ 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75,
+ 0x6d, 0x73, 0x22, 0xac, 0x01, 0x0a, 0x16, 0x57, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e,
+ 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a,
+ 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25,
+ 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74,
+ 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x3d,
+ 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x02, 0x28,
+ 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e,
+ 0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
+ 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74,
+ 0x61, 0x22, 0x19, 0x0a, 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x01, 0x0a,
+ 0x15, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
+ 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
+ 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44,
+ 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b,
+ 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64,
+ 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
+ 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75,
+ 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0xac, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x61, 0x64, 0x43,
+ 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02,
+ 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
+ 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18,
+ 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75,
+ 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74,
+ 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52,
+ 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x99, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02,
+ 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
+ 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18,
+ 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75,
+ 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74,
+ 0x61, 0x22, 0x1a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x94, 0x01,
+ 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f,
+ 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
+ 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52,
+ 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76,
+ 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52,
+ 0x0d, 0x70, 0x72, 0x65, 0x76, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14,
+ 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x05, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x57, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e,
+ 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3d,
+ 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e,
+ 0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0xaf, 0x01,
+ 0x0a, 0x18, 0x50, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x40, 0x0a, 0x05, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x61, 0x64, 0x6f,
+ 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
+ 0x2e, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3d, 0x0a, 0x09,
+ 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32,
+ 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61,
+ 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f,
+ 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
+ 0x8b, 0x01, 0x0a, 0x19, 0x50, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x6e, 0x0a,
+ 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c,
+ 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
+ 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x5c, 0x0a,
+ 0x18, 0x47, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x40, 0x0a, 0x05, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f,
+ 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
+ 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x5d, 0x0a, 0x19, 0x47,
+ 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x40, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e,
+ 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65,
+ 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6f, 0x0a, 0x19, 0x43, 0x6f,
+ 0x70, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61,
+ 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0a, 0x72,
+ 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x22, 0xb2, 0x01, 0x0a, 0x1a,
+ 0x43, 0x6f, 0x70, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52,
+ 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a,
+ 0x72, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04,
+ 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03,
+ 0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x10,
+ 0x0a, 0x03, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x02, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6f, 0x66,
+ 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x04,
+ 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
+ 0x2a, 0xcd, 0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x01, 0x12, 0x11,
+ 0x0a, 0x0d, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10,
+ 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4c,
+ 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x05, 0x12, 0x0c,
+ 0x0a, 0x08, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08,
+ 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x4c,
+ 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65,
+ 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x72,
+ 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0c, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x69,
+ 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x6f, 0x6d,
+ 0x70, 0x61, 0x63, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x50,
+ 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x10, 0x0f, 0x12, 0x10, 0x0a,
+ 0x0c, 0x47, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x10, 0x10, 0x12,
+ 0x12, 0x0a, 0x0e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x10, 0x11, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+ 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x10, 0x12,
+ 0x2a, 0x9d, 0x08, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x53,
+ 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x4e, 0x53, 0x55,
+ 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10,
+ 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x52,
+ 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54,
+ 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45,
+ 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
+ 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e,
+ 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f,
+ 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x54, 0x41,
+ 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x07, 0x12, 0x15, 0x0a,
+ 0x11, 0x4e, 0x4f, 0x5f, 0x53, 0x55, 0x43, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54,
+ 0x48, 0x4d, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45,
+ 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x09, 0x12, 0x10, 0x0a,
+ 0x0c, 0x49, 0x4f, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12,
+ 0x1e, 0x0a, 0x1a, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x41,
+ 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x44, 0x42, 0x10, 0x0b, 0x12,
+ 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x5f, 0x53, 0x55, 0x43, 0x48, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b,
+ 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f,
+ 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x0d, 0x12,
+ 0x1b, 0x0a, 0x17, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x49, 0x4e,
+ 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x44, 0x49, 0x52, 0x10, 0x0e, 0x12, 0x16, 0x0a, 0x12,
+ 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x53, 0x49,
+ 0x5a, 0x45, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d,
+ 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x10, 0x12, 0x18, 0x0a, 0x14, 0x55,
+ 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x48,
+ 0x55, 0x4e, 0x4b, 0x10, 0x11, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x5f,
+ 0x44, 0x45, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x12,
+ 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55,
+ 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x13, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x4d,
+ 0x41, 0x4c, 0x4c, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x14,
+ 0x12, 0x18, 0x0a, 0x14, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x5f, 0x46, 0x49,
+ 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x15, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4c,
+ 0x4f, 0x53, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x49,
+ 0x4f, 0x10, 0x16, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x5f,
+ 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x43, 0x54, 0x5f, 0x44, 0x42, 0x10, 0x18, 0x12, 0x19, 0x0a, 0x15,
+ 0x55, 0x4e, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e,
+ 0x45, 0x52, 0x5f, 0x49, 0x4f, 0x10, 0x19, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x45, 0x4c, 0x45, 0x54,
+ 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49,
+ 0x4e, 0x45, 0x52, 0x10, 0x1a, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x5f,
+ 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x59, 0x10,
+ 0x1b, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x43, 0x4f, 0x4e,
+ 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x1c, 0x12, 0x15,
+ 0x0a, 0x11, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x50,
+ 0x41, 0x43, 0x45, 0x10, 0x1d, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e,
+ 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54,
+ 0x53, 0x10, 0x1e, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52,
+ 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
+ 0x1f, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x46,
+ 0x49, 0x4c, 0x45, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52,
+ 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
+ 0x21, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e,
+ 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x22, 0x12, 0x17, 0x0a,
+ 0x13, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49,
+ 0x54, 0x54, 0x45, 0x44, 0x10, 0x23, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49,
+ 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x24, 0x12,
+ 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x42, 0x43, 0x53, 0x49, 0x44,
+ 0x10, 0x25, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x43, 0x53, 0x49, 0x44, 0x5f, 0x4d, 0x49, 0x53, 0x4d,
+ 0x41, 0x54, 0x43, 0x48, 0x10, 0x26, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49,
+ 0x4e, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x27, 0x12, 0x15,
+ 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53,
+ 0x49, 0x4e, 0x47, 0x10, 0x28, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x54,
+ 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x29, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x52,
+ 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x2a,
+ 0x2a, 0x26, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x01, 0x2a, 0x44, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x73, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45,
+ 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x52, 0x43, 0x33, 0x32, 0x10, 0x02, 0x12, 0x0a, 0x0a,
+ 0x06, 0x43, 0x52, 0x43, 0x33, 0x32, 0x43, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x48, 0x41,
+ 0x32, 0x35, 0x36, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x44, 0x35, 0x10, 0x05, 0x32, 0x95,
+ 0x01, 0x0a, 0x1c, 0x58, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
+ 0x75, 0x0a, 0x04, 0x73, 0x65, 0x6e, 0x64, 0x12, 0x32, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
+ 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x32, 0x8f, 0x01, 0x0a, 0x1c, 0x49, 0x6e, 0x74, 0x72, 0x61,
+ 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
+ 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c,
+ 0x6f, 0x61, 0x64, 0x12, 0x2f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
+ 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x70, 0x79,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x30, 0x01, 0x42, 0x73, 0x0a, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
+ 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
+ 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x64, 0x61, 0x74, 0x61,
+ 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x0f, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x5a, 0x2d, 0x67, 0x69, 0x74,
+ 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x6f,
+ 0x7a, 0x6f, 0x6e, 0x65, 0x2d, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0xa0, 0x01, 0x01,
+}
+
+var (
+ file_DatanodeClientProtocol_proto_rawDescOnce sync.Once
+ file_DatanodeClientProtocol_proto_rawDescData = file_DatanodeClientProtocol_proto_rawDesc
+)
+
+func file_DatanodeClientProtocol_proto_rawDescGZIP() []byte {
+ file_DatanodeClientProtocol_proto_rawDescOnce.Do(func() {
+ file_DatanodeClientProtocol_proto_rawDescData = protoimpl.X.CompressGZIP(file_DatanodeClientProtocol_proto_rawDescData)
+ })
+ return file_DatanodeClientProtocol_proto_rawDescData
+}
+
+var file_DatanodeClientProtocol_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
+var file_DatanodeClientProtocol_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
+var file_DatanodeClientProtocol_proto_goTypes = []interface{}{
+ (Type)(0), // 0: hadoop.hdds.datanode.Type
+ (Result)(0), // 1: hadoop.hdds.datanode.Result
+ (ContainerType)(0), // 2: hadoop.hdds.datanode.ContainerType
+ (ChecksumType)(0), // 3: hadoop.hdds.datanode.ChecksumType
+ (ContainerDataProto_State)(0), // 4: hadoop.hdds.datanode.ContainerDataProto.State
+ (*DatanodeBlockID)(nil), // 5: hadoop.hdds.datanode.DatanodeBlockID
+ (*KeyValue)(nil), // 6: hadoop.hdds.datanode.KeyValue
+ (*ContainerCommandRequestProto)(nil), // 7: hadoop.hdds.datanode.ContainerCommandRequestProto
+ (*ContainerCommandResponseProto)(nil), // 8: hadoop.hdds.datanode.ContainerCommandResponseProto
+ (*ContainerDataProto)(nil), // 9: hadoop.hdds.datanode.ContainerDataProto
+ (*Container2BCSIDMapProto)(nil), // 10: hadoop.hdds.datanode.Container2BCSIDMapProto
+ (*CreateContainerRequestProto)(nil), // 11: hadoop.hdds.datanode.CreateContainerRequestProto
+ (*CreateContainerResponseProto)(nil), // 12: hadoop.hdds.datanode.CreateContainerResponseProto
+ (*ReadContainerRequestProto)(nil), // 13: hadoop.hdds.datanode.ReadContainerRequestProto
+ (*ReadContainerResponseProto)(nil), // 14: hadoop.hdds.datanode.ReadContainerResponseProto
+ (*UpdateContainerRequestProto)(nil), // 15: hadoop.hdds.datanode.UpdateContainerRequestProto
+ (*UpdateContainerResponseProto)(nil), // 16: hadoop.hdds.datanode.UpdateContainerResponseProto
+ (*DeleteContainerRequestProto)(nil), // 17: hadoop.hdds.datanode.DeleteContainerRequestProto
+ (*DeleteContainerResponseProto)(nil), // 18: hadoop.hdds.datanode.DeleteContainerResponseProto
+ (*ListContainerRequestProto)(nil), // 19: hadoop.hdds.datanode.ListContainerRequestProto
+ (*ListContainerResponseProto)(nil), // 20: hadoop.hdds.datanode.ListContainerResponseProto
+ (*CloseContainerRequestProto)(nil), // 21: hadoop.hdds.datanode.CloseContainerRequestProto
+ (*CloseContainerResponseProto)(nil), // 22: hadoop.hdds.datanode.CloseContainerResponseProto
+ (*BlockData)(nil), // 23: hadoop.hdds.datanode.BlockData
+ (*PutBlockRequestProto)(nil), // 24: hadoop.hdds.datanode.PutBlockRequestProto
+ (*PutBlockResponseProto)(nil), // 25: hadoop.hdds.datanode.PutBlockResponseProto
+ (*GetBlockRequestProto)(nil), // 26: hadoop.hdds.datanode.GetBlockRequestProto
+ (*GetBlockResponseProto)(nil), // 27: hadoop.hdds.datanode.GetBlockResponseProto
+ (*DeleteBlockRequestProto)(nil), // 28: hadoop.hdds.datanode.DeleteBlockRequestProto
+ (*GetCommittedBlockLengthRequestProto)(nil), // 29: hadoop.hdds.datanode.GetCommittedBlockLengthRequestProto
+ (*GetCommittedBlockLengthResponseProto)(nil), // 30: hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto
+ (*DeleteBlockResponseProto)(nil), // 31: hadoop.hdds.datanode.DeleteBlockResponseProto
+ (*ListBlockRequestProto)(nil), // 32: hadoop.hdds.datanode.ListBlockRequestProto
+ (*ListBlockResponseProto)(nil), // 33: hadoop.hdds.datanode.ListBlockResponseProto
+ (*ChunkInfo)(nil), // 34: hadoop.hdds.datanode.ChunkInfo
+ (*ChecksumData)(nil), // 35: hadoop.hdds.datanode.ChecksumData
+ (*WriteChunkRequestProto)(nil), // 36: hadoop.hdds.datanode.WriteChunkRequestProto
+ (*WriteChunkResponseProto)(nil), // 37: hadoop.hdds.datanode.WriteChunkResponseProto
+ (*ReadChunkRequestProto)(nil), // 38: hadoop.hdds.datanode.ReadChunkRequestProto
+ (*ReadChunkResponseProto)(nil), // 39: hadoop.hdds.datanode.ReadChunkResponseProto
+ (*DeleteChunkRequestProto)(nil), // 40: hadoop.hdds.datanode.DeleteChunkRequestProto
+ (*DeleteChunkResponseProto)(nil), // 41: hadoop.hdds.datanode.DeleteChunkResponseProto
+ (*ListChunkRequestProto)(nil), // 42: hadoop.hdds.datanode.ListChunkRequestProto
+ (*ListChunkResponseProto)(nil), // 43: hadoop.hdds.datanode.ListChunkResponseProto
+ (*PutSmallFileRequestProto)(nil), // 44: hadoop.hdds.datanode.PutSmallFileRequestProto
+ (*PutSmallFileResponseProto)(nil), // 45: hadoop.hdds.datanode.PutSmallFileResponseProto
+ (*GetSmallFileRequestProto)(nil), // 46: hadoop.hdds.datanode.GetSmallFileRequestProto
+ (*GetSmallFileResponseProto)(nil), // 47: hadoop.hdds.datanode.GetSmallFileResponseProto
+ (*CopyContainerRequestProto)(nil), // 48: hadoop.hdds.datanode.CopyContainerRequestProto
+ (*CopyContainerResponseProto)(nil), // 49: hadoop.hdds.datanode.CopyContainerResponseProto
+ nil, // 50: hadoop.hdds.datanode.Container2BCSIDMapProto.Container2BCSIDEntry
+}
+var file_DatanodeClientProtocol_proto_depIdxs = []int32{
+ 0, // 0: hadoop.hdds.datanode.ContainerCommandRequestProto.cmdType:type_name -> hadoop.hdds.datanode.Type
+ 11, // 1: hadoop.hdds.datanode.ContainerCommandRequestProto.createContainer:type_name -> hadoop.hdds.datanode.CreateContainerRequestProto
+ 13, // 2: hadoop.hdds.datanode.ContainerCommandRequestProto.readContainer:type_name -> hadoop.hdds.datanode.ReadContainerRequestProto
+ 15, // 3: hadoop.hdds.datanode.ContainerCommandRequestProto.updateContainer:type_name -> hadoop.hdds.datanode.UpdateContainerRequestProto
+ 17, // 4: hadoop.hdds.datanode.ContainerCommandRequestProto.deleteContainer:type_name -> hadoop.hdds.datanode.DeleteContainerRequestProto
+ 19, // 5: hadoop.hdds.datanode.ContainerCommandRequestProto.listContainer:type_name -> hadoop.hdds.datanode.ListContainerRequestProto
+ 21, // 6: hadoop.hdds.datanode.ContainerCommandRequestProto.closeContainer:type_name -> hadoop.hdds.datanode.CloseContainerRequestProto
+ 24, // 7: hadoop.hdds.datanode.ContainerCommandRequestProto.putBlock:type_name -> hadoop.hdds.datanode.PutBlockRequestProto
+ 26, // 8: hadoop.hdds.datanode.ContainerCommandRequestProto.getBlock:type_name -> hadoop.hdds.datanode.GetBlockRequestProto
+ 28, // 9: hadoop.hdds.datanode.ContainerCommandRequestProto.deleteBlock:type_name -> hadoop.hdds.datanode.DeleteBlockRequestProto
+ 32, // 10: hadoop.hdds.datanode.ContainerCommandRequestProto.listBlock:type_name -> hadoop.hdds.datanode.ListBlockRequestProto
+ 38, // 11: hadoop.hdds.datanode.ContainerCommandRequestProto.readChunk:type_name -> hadoop.hdds.datanode.ReadChunkRequestProto
+ 36, // 12: hadoop.hdds.datanode.ContainerCommandRequestProto.writeChunk:type_name -> hadoop.hdds.datanode.WriteChunkRequestProto
+ 40, // 13: hadoop.hdds.datanode.ContainerCommandRequestProto.deleteChunk:type_name -> hadoop.hdds.datanode.DeleteChunkRequestProto
+ 42, // 14: hadoop.hdds.datanode.ContainerCommandRequestProto.listChunk:type_name -> hadoop.hdds.datanode.ListChunkRequestProto
+ 44, // 15: hadoop.hdds.datanode.ContainerCommandRequestProto.putSmallFile:type_name -> hadoop.hdds.datanode.PutSmallFileRequestProto
+ 46, // 16: hadoop.hdds.datanode.ContainerCommandRequestProto.getSmallFile:type_name -> hadoop.hdds.datanode.GetSmallFileRequestProto
+ 29, // 17: hadoop.hdds.datanode.ContainerCommandRequestProto.getCommittedBlockLength:type_name -> hadoop.hdds.datanode.GetCommittedBlockLengthRequestProto
+ 0, // 18: hadoop.hdds.datanode.ContainerCommandResponseProto.cmdType:type_name -> hadoop.hdds.datanode.Type
+ 1, // 19: hadoop.hdds.datanode.ContainerCommandResponseProto.result:type_name -> hadoop.hdds.datanode.Result
+ 12, // 20: hadoop.hdds.datanode.ContainerCommandResponseProto.createContainer:type_name -> hadoop.hdds.datanode.CreateContainerResponseProto
+ 14, // 21: hadoop.hdds.datanode.ContainerCommandResponseProto.readContainer:type_name -> hadoop.hdds.datanode.ReadContainerResponseProto
+ 16, // 22: hadoop.hdds.datanode.ContainerCommandResponseProto.updateContainer:type_name -> hadoop.hdds.datanode.UpdateContainerResponseProto
+ 18, // 23: hadoop.hdds.datanode.ContainerCommandResponseProto.deleteContainer:type_name -> hadoop.hdds.datanode.DeleteContainerResponseProto
+ 20, // 24: hadoop.hdds.datanode.ContainerCommandResponseProto.listContainer:type_name -> hadoop.hdds.datanode.ListContainerResponseProto
+ 22, // 25: hadoop.hdds.datanode.ContainerCommandResponseProto.closeContainer:type_name -> hadoop.hdds.datanode.CloseContainerResponseProto
+ 25, // 26: hadoop.hdds.datanode.ContainerCommandResponseProto.putBlock:type_name -> hadoop.hdds.datanode.PutBlockResponseProto
+ 27, // 27: hadoop.hdds.datanode.ContainerCommandResponseProto.getBlock:type_name -> hadoop.hdds.datanode.GetBlockResponseProto
+ 31, // 28: hadoop.hdds.datanode.ContainerCommandResponseProto.deleteBlock:type_name -> hadoop.hdds.datanode.DeleteBlockResponseProto
+ 33, // 29: hadoop.hdds.datanode.ContainerCommandResponseProto.listBlock:type_name -> hadoop.hdds.datanode.ListBlockResponseProto
+ 37, // 30: hadoop.hdds.datanode.ContainerCommandResponseProto.writeChunk:type_name -> hadoop.hdds.datanode.WriteChunkResponseProto
+ 39, // 31: hadoop.hdds.datanode.ContainerCommandResponseProto.readChunk:type_name -> hadoop.hdds.datanode.ReadChunkResponseProto
+ 41, // 32: hadoop.hdds.datanode.ContainerCommandResponseProto.deleteChunk:type_name -> hadoop.hdds.datanode.DeleteChunkResponseProto
+ 43, // 33: hadoop.hdds.datanode.ContainerCommandResponseProto.listChunk:type_name -> hadoop.hdds.datanode.ListChunkResponseProto
+ 45, // 34: hadoop.hdds.datanode.ContainerCommandResponseProto.putSmallFile:type_name -> hadoop.hdds.datanode.PutSmallFileResponseProto
+ 47, // 35: hadoop.hdds.datanode.ContainerCommandResponseProto.getSmallFile:type_name -> hadoop.hdds.datanode.GetSmallFileResponseProto
+ 30, // 36: hadoop.hdds.datanode.ContainerCommandResponseProto.getCommittedBlockLength:type_name -> hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto
+ 6, // 37: hadoop.hdds.datanode.ContainerDataProto.metadata:type_name -> hadoop.hdds.datanode.KeyValue
+ 4, // 38: hadoop.hdds.datanode.ContainerDataProto.state:type_name -> hadoop.hdds.datanode.ContainerDataProto.State
+ 2, // 39: hadoop.hdds.datanode.ContainerDataProto.containerType:type_name -> hadoop.hdds.datanode.ContainerType
+ 50, // 40: hadoop.hdds.datanode.Container2BCSIDMapProto.container2BCSID:type_name -> hadoop.hdds.datanode.Container2BCSIDMapProto.Container2BCSIDEntry
+ 6, // 41: hadoop.hdds.datanode.CreateContainerRequestProto.metadata:type_name -> hadoop.hdds.datanode.KeyValue
+ 2, // 42: hadoop.hdds.datanode.CreateContainerRequestProto.containerType:type_name -> hadoop.hdds.datanode.ContainerType
+ 9, // 43: hadoop.hdds.datanode.ReadContainerResponseProto.containerData:type_name -> hadoop.hdds.datanode.ContainerDataProto
+ 6, // 44: hadoop.hdds.datanode.UpdateContainerRequestProto.metadata:type_name -> hadoop.hdds.datanode.KeyValue
+ 9, // 45: hadoop.hdds.datanode.ListContainerResponseProto.containerData:type_name -> hadoop.hdds.datanode.ContainerDataProto
+ 5, // 46: hadoop.hdds.datanode.BlockData.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 6, // 47: hadoop.hdds.datanode.BlockData.metadata:type_name -> hadoop.hdds.datanode.KeyValue
+ 34, // 48: hadoop.hdds.datanode.BlockData.chunks:type_name -> hadoop.hdds.datanode.ChunkInfo
+ 23, // 49: hadoop.hdds.datanode.PutBlockRequestProto.blockData:type_name -> hadoop.hdds.datanode.BlockData
+ 30, // 50: hadoop.hdds.datanode.PutBlockResponseProto.committedBlockLength:type_name -> hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto
+ 5, // 51: hadoop.hdds.datanode.GetBlockRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 23, // 52: hadoop.hdds.datanode.GetBlockResponseProto.blockData:type_name -> hadoop.hdds.datanode.BlockData
+ 5, // 53: hadoop.hdds.datanode.DeleteBlockRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 5, // 54: hadoop.hdds.datanode.GetCommittedBlockLengthRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 5, // 55: hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 23, // 56: hadoop.hdds.datanode.ListBlockResponseProto.blockData:type_name -> hadoop.hdds.datanode.BlockData
+ 6, // 57: hadoop.hdds.datanode.ChunkInfo.metadata:type_name -> hadoop.hdds.datanode.KeyValue
+ 35, // 58: hadoop.hdds.datanode.ChunkInfo.checksumData:type_name -> hadoop.hdds.datanode.ChecksumData
+ 3, // 59: hadoop.hdds.datanode.ChecksumData.type:type_name -> hadoop.hdds.datanode.ChecksumType
+ 5, // 60: hadoop.hdds.datanode.WriteChunkRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 34, // 61: hadoop.hdds.datanode.WriteChunkRequestProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
+ 5, // 62: hadoop.hdds.datanode.ReadChunkRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 34, // 63: hadoop.hdds.datanode.ReadChunkRequestProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
+ 5, // 64: hadoop.hdds.datanode.ReadChunkResponseProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 34, // 65: hadoop.hdds.datanode.ReadChunkResponseProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
+ 5, // 66: hadoop.hdds.datanode.DeleteChunkRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 34, // 67: hadoop.hdds.datanode.DeleteChunkRequestProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
+ 5, // 68: hadoop.hdds.datanode.ListChunkRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
+ 34, // 69: hadoop.hdds.datanode.ListChunkResponseProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
+ 24, // 70: hadoop.hdds.datanode.PutSmallFileRequestProto.block:type_name -> hadoop.hdds.datanode.PutBlockRequestProto
+ 34, // 71: hadoop.hdds.datanode.PutSmallFileRequestProto.chunkInfo:type_name -> hadoop.hdds.datanode.ChunkInfo
+ 30, // 72: hadoop.hdds.datanode.PutSmallFileResponseProto.committedBlockLength:type_name -> hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto
+ 26, // 73: hadoop.hdds.datanode.GetSmallFileRequestProto.block:type_name -> hadoop.hdds.datanode.GetBlockRequestProto
+ 39, // 74: hadoop.hdds.datanode.GetSmallFileResponseProto.data:type_name -> hadoop.hdds.datanode.ReadChunkResponseProto
+ 7, // 75: hadoop.hdds.datanode.XceiverClientProtocolService.send:input_type -> hadoop.hdds.datanode.ContainerCommandRequestProto
+ 48, // 76: hadoop.hdds.datanode.IntraDatanodeProtocolService.download:input_type -> hadoop.hdds.datanode.CopyContainerRequestProto
+ 8, // 77: hadoop.hdds.datanode.XceiverClientProtocolService.send:output_type -> hadoop.hdds.datanode.ContainerCommandResponseProto
+ 49, // 78: hadoop.hdds.datanode.IntraDatanodeProtocolService.download:output_type -> hadoop.hdds.datanode.CopyContainerResponseProto
+ 77, // [77:79] is the sub-list for method output_type
+ 75, // [75:77] is the sub-list for method input_type
+ 75, // [75:75] is the sub-list for extension type_name
+ 75, // [75:75] is the sub-list for extension extendee
+ 0, // [0:75] is the sub-list for field type_name
+}
+
+func init() { file_DatanodeClientProtocol_proto_init() }
+func file_DatanodeClientProtocol_proto_init() {
+ if File_DatanodeClientProtocol_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_DatanodeClientProtocol_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DatanodeBlockID); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KeyValue); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerCommandRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerCommandResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerDataProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Container2BCSIDMapProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateContainerRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateContainerResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReadContainerRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReadContainerResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateContainerRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateContainerResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteContainerRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteContainerResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListContainerRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListContainerResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CloseContainerRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CloseContainerResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BlockData); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PutBlockRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PutBlockResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetBlockRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetBlockResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteBlockRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetCommittedBlockLengthRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetCommittedBlockLengthResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteBlockResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListBlockRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListBlockResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChunkInfo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChecksumData); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WriteChunkRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WriteChunkResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReadChunkRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReadChunkResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteChunkRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteChunkResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListChunkRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListChunkResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PutSmallFileRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PutSmallFileResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetSmallFileRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetSmallFileResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CopyContainerRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_DatanodeClientProtocol_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CopyContainerResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_DatanodeClientProtocol_proto_rawDesc,
+ NumEnums: 5,
+ NumMessages: 46,
+ NumExtensions: 0,
+ NumServices: 2,
+ },
+ GoTypes: file_DatanodeClientProtocol_proto_goTypes,
+ DependencyIndexes: file_DatanodeClientProtocol_proto_depIdxs,
+ EnumInfos: file_DatanodeClientProtocol_proto_enumTypes,
+ MessageInfos: file_DatanodeClientProtocol_proto_msgTypes,
+ }.Build()
+ File_DatanodeClientProtocol_proto = out.File
+ file_DatanodeClientProtocol_proto_rawDesc = nil
+ file_DatanodeClientProtocol_proto_goTypes = nil
+ file_DatanodeClientProtocol_proto_depIdxs = nil
+}
+
+// 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
+
+// XceiverClientProtocolServiceClient is the client API for XceiverClientProtocolService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type XceiverClientProtocolServiceClient interface {
+ // A client-to-datanode RPC to send container commands
+ Send(ctx context.Context, opts ...grpc.CallOption) (XceiverClientProtocolService_SendClient, error)
+}
+
+type xceiverClientProtocolServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewXceiverClientProtocolServiceClient(cc grpc.ClientConnInterface) XceiverClientProtocolServiceClient {
+ return &xceiverClientProtocolServiceClient{cc}
+}
+
+func (c *xceiverClientProtocolServiceClient) Send(ctx context.Context, opts ...grpc.CallOption) (XceiverClientProtocolService_SendClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_XceiverClientProtocolService_serviceDesc.Streams[0], "/hadoop.hdds.datanode.XceiverClientProtocolService/send", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &xceiverClientProtocolServiceSendClient{stream}
+ return x, nil
+}
+
+type XceiverClientProtocolService_SendClient interface {
+ Send(*ContainerCommandRequestProto) error
+ Recv() (*ContainerCommandResponseProto, error)
+ grpc.ClientStream
+}
+
+type xceiverClientProtocolServiceSendClient struct {
+ grpc.ClientStream
+}
+
+func (x *xceiverClientProtocolServiceSendClient) Send(m *ContainerCommandRequestProto) error {
+ return x.ClientStream.SendMsg(m)
+}
+
+func (x *xceiverClientProtocolServiceSendClient) Recv() (*ContainerCommandResponseProto, error) {
+ m := new(ContainerCommandResponseProto)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+// XceiverClientProtocolServiceServer is the server API for XceiverClientProtocolService service.
+type XceiverClientProtocolServiceServer interface {
+ // A client-to-datanode RPC to send container commands
+ Send(XceiverClientProtocolService_SendServer) error
+}
+
+// UnimplementedXceiverClientProtocolServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedXceiverClientProtocolServiceServer struct {
+}
+
+func (*UnimplementedXceiverClientProtocolServiceServer) Send(XceiverClientProtocolService_SendServer) error {
+ return status.Errorf(codes.Unimplemented, "method Send not implemented")
+}
+
+func RegisterXceiverClientProtocolServiceServer(s *grpc.Server, srv XceiverClientProtocolServiceServer) {
+ s.RegisterService(&_XceiverClientProtocolService_serviceDesc, srv)
+}
+
+func _XceiverClientProtocolService_Send_Handler(srv interface{}, stream grpc.ServerStream) error {
+ return srv.(XceiverClientProtocolServiceServer).Send(&xceiverClientProtocolServiceSendServer{stream})
+}
+
+type XceiverClientProtocolService_SendServer interface {
+ Send(*ContainerCommandResponseProto) error
+ Recv() (*ContainerCommandRequestProto, error)
+ grpc.ServerStream
+}
+
+type xceiverClientProtocolServiceSendServer struct {
+ grpc.ServerStream
+}
+
+func (x *xceiverClientProtocolServiceSendServer) Send(m *ContainerCommandResponseProto) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func (x *xceiverClientProtocolServiceSendServer) Recv() (*ContainerCommandRequestProto, error) {
+ m := new(ContainerCommandRequestProto)
+ if err := x.ServerStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+var _XceiverClientProtocolService_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "hadoop.hdds.datanode.XceiverClientProtocolService",
+ HandlerType: (*XceiverClientProtocolServiceServer)(nil),
+ Methods: []grpc.MethodDesc{},
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "send",
+ Handler: _XceiverClientProtocolService_Send_Handler,
+ ServerStreams: true,
+ ClientStreams: true,
+ },
+ },
+ Metadata: "DatanodeClientProtocol.proto",
+}
+
+// IntraDatanodeProtocolServiceClient is the client API for IntraDatanodeProtocolService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type IntraDatanodeProtocolServiceClient interface {
+ // An intradatanode service to copy the raw container data between nodes
+ Download(ctx context.Context, in *CopyContainerRequestProto, opts ...grpc.CallOption) (IntraDatanodeProtocolService_DownloadClient, error)
+}
+
+type intraDatanodeProtocolServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewIntraDatanodeProtocolServiceClient(cc grpc.ClientConnInterface) IntraDatanodeProtocolServiceClient {
+ return &intraDatanodeProtocolServiceClient{cc}
+}
+
+func (c *intraDatanodeProtocolServiceClient) Download(ctx context.Context, in *CopyContainerRequestProto, opts ...grpc.CallOption) (IntraDatanodeProtocolService_DownloadClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_IntraDatanodeProtocolService_serviceDesc.Streams[0], "/hadoop.hdds.datanode.IntraDatanodeProtocolService/download", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &intraDatanodeProtocolServiceDownloadClient{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 IntraDatanodeProtocolService_DownloadClient interface {
+ Recv() (*CopyContainerResponseProto, error)
+ grpc.ClientStream
+}
+
+type intraDatanodeProtocolServiceDownloadClient struct {
+ grpc.ClientStream
+}
+
+func (x *intraDatanodeProtocolServiceDownloadClient) Recv() (*CopyContainerResponseProto, error) {
+ m := new(CopyContainerResponseProto)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+// IntraDatanodeProtocolServiceServer is the server API for IntraDatanodeProtocolService service.
+type IntraDatanodeProtocolServiceServer interface {
+ // An intradatanode service to copy the raw container data between nodes
+ Download(*CopyContainerRequestProto, IntraDatanodeProtocolService_DownloadServer) error
+}
+
+// UnimplementedIntraDatanodeProtocolServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedIntraDatanodeProtocolServiceServer struct {
+}
+
+func (*UnimplementedIntraDatanodeProtocolServiceServer) Download(*CopyContainerRequestProto, IntraDatanodeProtocolService_DownloadServer) error {
+ return status.Errorf(codes.Unimplemented, "method Download not implemented")
+}
+
+func RegisterIntraDatanodeProtocolServiceServer(s *grpc.Server, srv IntraDatanodeProtocolServiceServer) {
+ s.RegisterService(&_IntraDatanodeProtocolService_serviceDesc, srv)
+}
+
+func _IntraDatanodeProtocolService_Download_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(CopyContainerRequestProto)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(IntraDatanodeProtocolServiceServer).Download(m, &intraDatanodeProtocolServiceDownloadServer{stream})
+}
+
+type IntraDatanodeProtocolService_DownloadServer interface {
+ Send(*CopyContainerResponseProto) error
+ grpc.ServerStream
+}
+
+type intraDatanodeProtocolServiceDownloadServer struct {
+ grpc.ServerStream
+}
+
+func (x *intraDatanodeProtocolServiceDownloadServer) Send(m *CopyContainerResponseProto) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+var _IntraDatanodeProtocolService_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "hadoop.hdds.datanode.IntraDatanodeProtocolService",
+ HandlerType: (*IntraDatanodeProtocolServiceServer)(nil),
+ Methods: []grpc.MethodDesc{},
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "download",
+ Handler: _IntraDatanodeProtocolService_Download_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "DatanodeClientProtocol.proto",
+}
diff --git a/api/proto/hdds/hdds.pb.go b/api/proto/hdds/hdds.pb.go
new file mode 100644
index 0000000..32d9eb4
--- /dev/null
+++ b/api/proto/hdds/hdds.pb.go
@@ -0,0 +1,2452 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package hdds
+
+import (
+ proto "github.com/golang/protobuf/proto"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
+
+type PipelineState int32
+
+const (
+ PipelineState_PIPELINE_ALLOCATED PipelineState = 1
+ PipelineState_PIPELINE_OPEN PipelineState = 2
+ PipelineState_PIPELINE_DORMANT PipelineState = 3
+ PipelineState_PIPELINE_CLOSED PipelineState = 4
+)
+
+// Enum value maps for PipelineState.
+var (
+ PipelineState_name = map[int32]string{
+ 1: "PIPELINE_ALLOCATED",
+ 2: "PIPELINE_OPEN",
+ 3: "PIPELINE_DORMANT",
+ 4: "PIPELINE_CLOSED",
+ }
+ PipelineState_value = map[string]int32{
+ "PIPELINE_ALLOCATED": 1,
+ "PIPELINE_OPEN": 2,
+ "PIPELINE_DORMANT": 3,
+ "PIPELINE_CLOSED": 4,
+ }
+)
+
+func (x PipelineState) Enum() *PipelineState {
+ p := new(PipelineState)
+ *p = x
+ return p
+}
+
+func (x PipelineState) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (PipelineState) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[0].Descriptor()
+}
+
+func (PipelineState) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[0]
+}
+
+func (x PipelineState) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *PipelineState) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = PipelineState(num)
+ return nil
+}
+
+// Deprecated: Use PipelineState.Descriptor instead.
+func (PipelineState) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{0}
+}
+
+//*
+// Type of the node.
+type NodeType int32
+
+const (
+ NodeType_OM NodeType = 1 // Ozone Manager
+ NodeType_SCM NodeType = 2 // Storage Container Manager
+ NodeType_DATANODE NodeType = 3 // DataNode
+ NodeType_RECON NodeType = 4 // Recon
+)
+
+// Enum value maps for NodeType.
+var (
+ NodeType_name = map[int32]string{
+ 1: "OM",
+ 2: "SCM",
+ 3: "DATANODE",
+ 4: "RECON",
+ }
+ NodeType_value = map[string]int32{
+ "OM": 1,
+ "SCM": 2,
+ "DATANODE": 3,
+ "RECON": 4,
+ }
+)
+
+func (x NodeType) Enum() *NodeType {
+ p := new(NodeType)
+ *p = x
+ return p
+}
+
+func (x NodeType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (NodeType) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[1].Descriptor()
+}
+
+func (NodeType) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[1]
+}
+
+func (x NodeType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *NodeType) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = NodeType(num)
+ return nil
+}
+
+// Deprecated: Use NodeType.Descriptor instead.
+func (NodeType) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{1}
+}
+
+//*
+// Enum that represents the Node State. This is used in calls to getNodeList
+// and getNodeCount.
+type NodeState int32
+
+const (
+ NodeState_HEALTHY NodeState = 1
+ NodeState_STALE NodeState = 2
+ NodeState_DEAD NodeState = 3
+ NodeState_DECOMMISSIONING NodeState = 4
+ NodeState_DECOMMISSIONED NodeState = 5
+)
+
+// Enum value maps for NodeState.
+var (
+ NodeState_name = map[int32]string{
+ 1: "HEALTHY",
+ 2: "STALE",
+ 3: "DEAD",
+ 4: "DECOMMISSIONING",
+ 5: "DECOMMISSIONED",
+ }
+ NodeState_value = map[string]int32{
+ "HEALTHY": 1,
+ "STALE": 2,
+ "DEAD": 3,
+ "DECOMMISSIONING": 4,
+ "DECOMMISSIONED": 5,
+ }
+)
+
+func (x NodeState) Enum() *NodeState {
+ p := new(NodeState)
+ *p = x
+ return p
+}
+
+func (x NodeState) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (NodeState) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[2].Descriptor()
+}
+
+func (NodeState) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[2]
+}
+
+func (x NodeState) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *NodeState) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = NodeState(num)
+ return nil
+}
+
+// Deprecated: Use NodeState.Descriptor instead.
+func (NodeState) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{2}
+}
+
+type QueryScope int32
+
+const (
+ QueryScope_CLUSTER QueryScope = 1
+ QueryScope_POOL QueryScope = 2
+)
+
+// Enum value maps for QueryScope.
+var (
+ QueryScope_name = map[int32]string{
+ 1: "CLUSTER",
+ 2: "POOL",
+ }
+ QueryScope_value = map[string]int32{
+ "CLUSTER": 1,
+ "POOL": 2,
+ }
+)
+
+func (x QueryScope) Enum() *QueryScope {
+ p := new(QueryScope)
+ *p = x
+ return p
+}
+
+func (x QueryScope) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (QueryScope) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[3].Descriptor()
+}
+
+func (QueryScope) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[3]
+}
+
+func (x QueryScope) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *QueryScope) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = QueryScope(num)
+ return nil
+}
+
+// Deprecated: Use QueryScope.Descriptor instead.
+func (QueryScope) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{3}
+}
+
+type LifeCycleState int32
+
+const (
+ LifeCycleState_OPEN LifeCycleState = 1
+ LifeCycleState_CLOSING LifeCycleState = 2
+ LifeCycleState_QUASI_CLOSED LifeCycleState = 3
+ LifeCycleState_CLOSED LifeCycleState = 4
+ LifeCycleState_DELETING LifeCycleState = 5
+ LifeCycleState_DELETED LifeCycleState = 6 // object is deleted.
+)
+
+// Enum value maps for LifeCycleState.
+var (
+ LifeCycleState_name = map[int32]string{
+ 1: "OPEN",
+ 2: "CLOSING",
+ 3: "QUASI_CLOSED",
+ 4: "CLOSED",
+ 5: "DELETING",
+ 6: "DELETED",
+ }
+ LifeCycleState_value = map[string]int32{
+ "OPEN": 1,
+ "CLOSING": 2,
+ "QUASI_CLOSED": 3,
+ "CLOSED": 4,
+ "DELETING": 5,
+ "DELETED": 6,
+ }
+)
+
+func (x LifeCycleState) Enum() *LifeCycleState {
+ p := new(LifeCycleState)
+ *p = x
+ return p
+}
+
+func (x LifeCycleState) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (LifeCycleState) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[4].Descriptor()
+}
+
+func (LifeCycleState) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[4]
+}
+
+func (x LifeCycleState) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *LifeCycleState) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = LifeCycleState(num)
+ return nil
+}
+
+// Deprecated: Use LifeCycleState.Descriptor instead.
+func (LifeCycleState) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{4}
+}
+
+type LifeCycleEvent int32
+
+const (
+ LifeCycleEvent_FINALIZE LifeCycleEvent = 1
+ LifeCycleEvent_QUASI_CLOSE LifeCycleEvent = 2
+ LifeCycleEvent_CLOSE LifeCycleEvent = 3 // !!Event after this has not been used yet.
+ LifeCycleEvent_FORCE_CLOSE LifeCycleEvent = 4
+ LifeCycleEvent_DELETE LifeCycleEvent = 5
+ LifeCycleEvent_CLEANUP LifeCycleEvent = 6
+)
+
+// Enum value maps for LifeCycleEvent.
+var (
+ LifeCycleEvent_name = map[int32]string{
+ 1: "FINALIZE",
+ 2: "QUASI_CLOSE",
+ 3: "CLOSE",
+ 4: "FORCE_CLOSE",
+ 5: "DELETE",
+ 6: "CLEANUP",
+ }
+ LifeCycleEvent_value = map[string]int32{
+ "FINALIZE": 1,
+ "QUASI_CLOSE": 2,
+ "CLOSE": 3,
+ "FORCE_CLOSE": 4,
+ "DELETE": 5,
+ "CLEANUP": 6,
+ }
+)
+
+func (x LifeCycleEvent) Enum() *LifeCycleEvent {
+ p := new(LifeCycleEvent)
+ *p = x
+ return p
+}
+
+func (x LifeCycleEvent) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (LifeCycleEvent) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[5].Descriptor()
+}
+
+func (LifeCycleEvent) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[5]
+}
+
+func (x LifeCycleEvent) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *LifeCycleEvent) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = LifeCycleEvent(num)
+ return nil
+}
+
+// Deprecated: Use LifeCycleEvent.Descriptor instead.
+func (LifeCycleEvent) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{5}
+}
+
+type ReplicationType int32
+
+const (
+ ReplicationType_RATIS ReplicationType = 1
+ ReplicationType_STAND_ALONE ReplicationType = 2
+ ReplicationType_CHAINED ReplicationType = 3
+)
+
+// Enum value maps for ReplicationType.
+var (
+ ReplicationType_name = map[int32]string{
+ 1: "RATIS",
+ 2: "STAND_ALONE",
+ 3: "CHAINED",
+ }
+ ReplicationType_value = map[string]int32{
+ "RATIS": 1,
+ "STAND_ALONE": 2,
+ "CHAINED": 3,
+ }
+)
+
+func (x ReplicationType) Enum() *ReplicationType {
+ p := new(ReplicationType)
+ *p = x
+ return p
+}
+
+func (x ReplicationType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ReplicationType) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[6].Descriptor()
+}
+
+func (ReplicationType) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[6]
+}
+
+func (x ReplicationType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *ReplicationType) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = ReplicationType(num)
+ return nil
+}
+
+// Deprecated: Use ReplicationType.Descriptor instead.
+func (ReplicationType) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{6}
+}
+
+type ReplicationFactor int32
+
+const (
+ ReplicationFactor_ONE ReplicationFactor = 1
+ ReplicationFactor_THREE ReplicationFactor = 3
+)
+
+// Enum value maps for ReplicationFactor.
+var (
+ ReplicationFactor_name = map[int32]string{
+ 1: "ONE",
+ 3: "THREE",
+ }
+ ReplicationFactor_value = map[string]int32{
+ "ONE": 1,
+ "THREE": 3,
+ }
+)
+
+func (x ReplicationFactor) Enum() *ReplicationFactor {
+ p := new(ReplicationFactor)
+ *p = x
+ return p
+}
+
+func (x ReplicationFactor) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ReplicationFactor) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[7].Descriptor()
+}
+
+func (ReplicationFactor) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[7]
+}
+
+func (x ReplicationFactor) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *ReplicationFactor) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = ReplicationFactor(num)
+ return nil
+}
+
+// Deprecated: Use ReplicationFactor.Descriptor instead.
+func (ReplicationFactor) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{7}
+}
+
+type ScmOps int32
+
+const (
+ ScmOps_allocateBlock ScmOps = 1
+ ScmOps_keyBlocksInfoList ScmOps = 2
+ ScmOps_getScmInfo ScmOps = 3
+ ScmOps_deleteBlock ScmOps = 4
+ ScmOps_createReplicationPipeline ScmOps = 5
+ ScmOps_allocateContainer ScmOps = 6
+ ScmOps_getContainer ScmOps = 7
+ ScmOps_getContainerWithPipeline ScmOps = 8
+ ScmOps_listContainer ScmOps = 9
+ ScmOps_deleteContainer ScmOps = 10
+ ScmOps_queryNode ScmOps = 11
+)
+
+// Enum value maps for ScmOps.
+var (
+ ScmOps_name = map[int32]string{
+ 1: "allocateBlock",
+ 2: "keyBlocksInfoList",
+ 3: "getScmInfo",
+ 4: "deleteBlock",
+ 5: "createReplicationPipeline",
+ 6: "allocateContainer",
+ 7: "getContainer",
+ 8: "getContainerWithPipeline",
+ 9: "listContainer",
+ 10: "deleteContainer",
+ 11: "queryNode",
+ }
+ ScmOps_value = map[string]int32{
+ "allocateBlock": 1,
+ "keyBlocksInfoList": 2,
+ "getScmInfo": 3,
+ "deleteBlock": 4,
+ "createReplicationPipeline": 5,
+ "allocateContainer": 6,
+ "getContainer": 7,
+ "getContainerWithPipeline": 8,
+ "listContainer": 9,
+ "deleteContainer": 10,
+ "queryNode": 11,
+ }
+)
+
+func (x ScmOps) Enum() *ScmOps {
+ p := new(ScmOps)
+ *p = x
+ return p
+}
+
+func (x ScmOps) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ScmOps) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[8].Descriptor()
+}
+
+func (ScmOps) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[8]
+}
+
+func (x ScmOps) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *ScmOps) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = ScmOps(num)
+ return nil
+}
+
+// Deprecated: Use ScmOps.Descriptor instead.
+func (ScmOps) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{8}
+}
+
+//*
+// File access permissions mode.
+type BlockTokenSecretProto_AccessModeProto int32
+
+const (
+ BlockTokenSecretProto_READ BlockTokenSecretProto_AccessModeProto = 1
+ BlockTokenSecretProto_WRITE BlockTokenSecretProto_AccessModeProto = 2
+ BlockTokenSecretProto_COPY BlockTokenSecretProto_AccessModeProto = 3
+ BlockTokenSecretProto_DELETE BlockTokenSecretProto_AccessModeProto = 4
+)
+
+// Enum value maps for BlockTokenSecretProto_AccessModeProto.
+var (
+ BlockTokenSecretProto_AccessModeProto_name = map[int32]string{
+ 1: "READ",
+ 2: "WRITE",
+ 3: "COPY",
+ 4: "DELETE",
+ }
+ BlockTokenSecretProto_AccessModeProto_value = map[string]int32{
+ "READ": 1,
+ "WRITE": 2,
+ "COPY": 3,
+ "DELETE": 4,
+ }
+)
+
+func (x BlockTokenSecretProto_AccessModeProto) Enum() *BlockTokenSecretProto_AccessModeProto {
+ p := new(BlockTokenSecretProto_AccessModeProto)
+ *p = x
+ return p
+}
+
+func (x BlockTokenSecretProto_AccessModeProto) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (BlockTokenSecretProto_AccessModeProto) Descriptor() protoreflect.EnumDescriptor {
+ return file_hdds_proto_enumTypes[9].Descriptor()
+}
+
+func (BlockTokenSecretProto_AccessModeProto) Type() protoreflect.EnumType {
+ return &file_hdds_proto_enumTypes[9]
+}
+
+func (x BlockTokenSecretProto_AccessModeProto) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *BlockTokenSecretProto_AccessModeProto) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+ if err != nil {
+ return err
+ }
+ *x = BlockTokenSecretProto_AccessModeProto(num)
+ return nil
+}
+
+// Deprecated: Use BlockTokenSecretProto_AccessModeProto.Descriptor instead.
+func (BlockTokenSecretProto_AccessModeProto) EnumDescriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{15, 0}
+}
+
+type UUID struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ MostSigBits *int64 `protobuf:"varint,1,req,name=mostSigBits" json:"mostSigBits,omitempty"`
+ LeastSigBits *int64 `protobuf:"varint,2,req,name=leastSigBits" json:"leastSigBits,omitempty"`
+}
+
+func (x *UUID) Reset() {
+ *x = UUID{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UUID) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UUID) ProtoMessage() {}
+
+func (x *UUID) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UUID.ProtoReflect.Descriptor instead.
+func (*UUID) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *UUID) GetMostSigBits() int64 {
+ if x != nil && x.MostSigBits != nil {
+ return *x.MostSigBits
+ }
+ return 0
+}
+
+func (x *UUID) GetLeastSigBits() int64 {
+ if x != nil && x.LeastSigBits != nil {
+ return *x.LeastSigBits
+ }
+ return 0
+}
+
+type DatanodeDetailsProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // deprecated, please use uuid128 instead
+ Uuid *string `protobuf:"bytes,1,opt,name=uuid" json:"uuid,omitempty"` // UUID assigned to the Datanode.
+ IpAddress *string `protobuf:"bytes,2,req,name=ipAddress" json:"ipAddress,omitempty"` // IP address
+ HostName *string `protobuf:"bytes,3,req,name=hostName" json:"hostName,omitempty"` // hostname
+ Ports []*Port `protobuf:"bytes,4,rep,name=ports" json:"ports,omitempty"`
+ CertSerialId *string `protobuf:"bytes,5,opt,name=certSerialId" json:"certSerialId,omitempty"` // Certificate serial id.
+ // network name, can be Ip address or host name, depends
+ NetworkName *string `protobuf:"bytes,6,opt,name=networkName" json:"networkName,omitempty"`
+ NetworkLocation *string `protobuf:"bytes,7,opt,name=networkLocation" json:"networkLocation,omitempty"` // Network topology location
+ Version *string `protobuf:"bytes,8,opt,name=version" json:"version,omitempty"` // Datanode version
+ SetupTime *int64 `protobuf:"varint,9,opt,name=setupTime" json:"setupTime,omitempty"`
+ Revision *string `protobuf:"bytes,10,opt,name=revision" json:"revision,omitempty"`
+ BuildDate *string `protobuf:"bytes,11,opt,name=buildDate" json:"buildDate,omitempty"`
+ // TODO(runzhiwang): when uuid is gone, specify 1 as the index of uuid128 and mark as required
+ Uuid128 *UUID `protobuf:"bytes,100,opt,name=uuid128" json:"uuid128,omitempty"` // UUID with 128 bits assigned to the Datanode.
+}
+
+func (x *DatanodeDetailsProto) Reset() {
+ *x = DatanodeDetailsProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DatanodeDetailsProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DatanodeDetailsProto) ProtoMessage() {}
+
+func (x *DatanodeDetailsProto) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DatanodeDetailsProto.ProtoReflect.Descriptor instead.
+func (*DatanodeDetailsProto) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *DatanodeDetailsProto) GetUuid() string {
+ if x != nil && x.Uuid != nil {
+ return *x.Uuid
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetIpAddress() string {
+ if x != nil && x.IpAddress != nil {
+ return *x.IpAddress
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetHostName() string {
+ if x != nil && x.HostName != nil {
+ return *x.HostName
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetPorts() []*Port {
+ if x != nil {
+ return x.Ports
+ }
+ return nil
+}
+
+func (x *DatanodeDetailsProto) GetCertSerialId() string {
+ if x != nil && x.CertSerialId != nil {
+ return *x.CertSerialId
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetNetworkName() string {
+ if x != nil && x.NetworkName != nil {
+ return *x.NetworkName
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetNetworkLocation() string {
+ if x != nil && x.NetworkLocation != nil {
+ return *x.NetworkLocation
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetVersion() string {
+ if x != nil && x.Version != nil {
+ return *x.Version
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetSetupTime() int64 {
+ if x != nil && x.SetupTime != nil {
+ return *x.SetupTime
+ }
+ return 0
+}
+
+func (x *DatanodeDetailsProto) GetRevision() string {
+ if x != nil && x.Revision != nil {
+ return *x.Revision
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetBuildDate() string {
+ if x != nil && x.BuildDate != nil {
+ return *x.BuildDate
+ }
+ return ""
+}
+
+func (x *DatanodeDetailsProto) GetUuid128() *UUID {
+ if x != nil {
+ return x.Uuid128
+ }
+ return nil
+}
+
+//*
+//Proto message encapsulating information required to uniquely identify a
+//OzoneManager.
+type OzoneManagerDetailsProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uuid *string `protobuf:"bytes,1,req,name=uuid" json:"uuid,omitempty"` // UUID assigned to the OzoneManager.
+ IpAddress *string `protobuf:"bytes,2,req,name=ipAddress" json:"ipAddress,omitempty"` // IP address of OM.
+ HostName *string `protobuf:"bytes,3,req,name=hostName" json:"hostName,omitempty"` // Hostname of OM.
+ Ports []*Port `protobuf:"bytes,4,rep,name=ports" json:"ports,omitempty"`
+}
+
+func (x *OzoneManagerDetailsProto) Reset() {
+ *x = OzoneManagerDetailsProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *OzoneManagerDetailsProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OzoneManagerDetailsProto) ProtoMessage() {}
+
+func (x *OzoneManagerDetailsProto) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use OzoneManagerDetailsProto.ProtoReflect.Descriptor instead.
+func (*OzoneManagerDetailsProto) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *OzoneManagerDetailsProto) GetUuid() string {
+ if x != nil && x.Uuid != nil {
+ return *x.Uuid
+ }
+ return ""
+}
+
+func (x *OzoneManagerDetailsProto) GetIpAddress() string {
+ if x != nil && x.IpAddress != nil {
+ return *x.IpAddress
+ }
+ return ""
+}
+
+func (x *OzoneManagerDetailsProto) GetHostName() string {
+ if x != nil && x.HostName != nil {
+ return *x.HostName
+ }
+ return ""
+}
+
+func (x *OzoneManagerDetailsProto) GetPorts() []*Port {
+ if x != nil {
+ return x.Ports
+ }
+ return nil
+}
+
+type Port struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
+ Value *uint32 `protobuf:"varint,2,req,name=value" json:"value,omitempty"`
+}
+
+func (x *Port) Reset() {
+ *x = Port{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Port) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Port) ProtoMessage() {}
+
+func (x *Port) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Port.ProtoReflect.Descriptor instead.
+func (*Port) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *Port) GetName() string {
+ if x != nil && x.Name != nil {
+ return *x.Name
+ }
+ return ""
+}
+
+func (x *Port) GetValue() uint32 {
+ if x != nil && x.Value != nil {
+ return *x.Value
+ }
+ return 0
+}
+
+type PipelineID struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // deprecated, please use uuid128 instead
+ Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
+ // TODO(runzhiwang): when id is gone, specify 1 as the index of uuid128 and mark as required
+ Uuid128 *UUID `protobuf:"bytes,100,opt,name=uuid128" json:"uuid128,omitempty"`
+}
+
+func (x *PipelineID) Reset() {
+ *x = PipelineID{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PipelineID) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PipelineID) ProtoMessage() {}
+
+func (x *PipelineID) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PipelineID.ProtoReflect.Descriptor instead.
+func (*PipelineID) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *PipelineID) GetId() string {
+ if x != nil && x.Id != nil {
+ return *x.Id
+ }
+ return ""
+}
+
+func (x *PipelineID) GetUuid128() *UUID {
+ if x != nil {
+ return x.Uuid128
+ }
+ return nil
+}
+
+type Pipeline struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Members []*DatanodeDetailsProto `protobuf:"bytes,1,rep,name=members" json:"members,omitempty"`
+ // TODO: remove the state and leaderID from this class
+ State *PipelineState `protobuf:"varint,2,opt,name=state,enum=hadoop.hdds.PipelineState,def=1" json:"state,omitempty"`
+ Type *ReplicationType `protobuf:"varint,3,opt,name=type,enum=hadoop.hdds.ReplicationType,def=2" json:"type,omitempty"`
+ Factor *ReplicationFactor `protobuf:"varint,4,opt,name=factor,enum=hadoop.hdds.ReplicationFactor,def=1" json:"factor,omitempty"`
+ Id *PipelineID `protobuf:"bytes,5,req,name=id" json:"id,omitempty"`
+ LeaderID *string `protobuf:"bytes,6,opt,name=leaderID" json:"leaderID,omitempty"`
+ MemberOrders []uint32 `protobuf:"varint,7,rep,name=memberOrders" json:"memberOrders,omitempty"`
+ CreationTimeStamp *uint64 `protobuf:"varint,8,opt,name=creationTimeStamp" json:"creationTimeStamp,omitempty"`
+ // TODO(runzhiwang): when leaderID is gone, specify 6 as the index of leaderID128
+ LeaderID128 *UUID `protobuf:"bytes,100,opt,name=leaderID128" json:"leaderID128,omitempty"`
+}
+
+// Default values for Pipeline fields.
+const (
+ Default_Pipeline_State = PipelineState_PIPELINE_ALLOCATED
+ Default_Pipeline_Type = ReplicationType_STAND_ALONE
+ Default_Pipeline_Factor = ReplicationFactor_ONE
+)
+
+func (x *Pipeline) Reset() {
+ *x = Pipeline{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Pipeline) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Pipeline) ProtoMessage() {}
+
+func (x *Pipeline) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Pipeline.ProtoReflect.Descriptor instead.
+func (*Pipeline) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *Pipeline) GetMembers() []*DatanodeDetailsProto {
+ if x != nil {
+ return x.Members
+ }
+ return nil
+}
+
+func (x *Pipeline) GetState() PipelineState {
+ if x != nil && x.State != nil {
+ return *x.State
+ }
+ return Default_Pipeline_State
+}
+
+func (x *Pipeline) GetType() ReplicationType {
+ if x != nil && x.Type != nil {
+ return *x.Type
+ }
+ return Default_Pipeline_Type
+}
+
+func (x *Pipeline) GetFactor() ReplicationFactor {
+ if x != nil && x.Factor != nil {
+ return *x.Factor
+ }
+ return Default_Pipeline_Factor
+}
+
+func (x *Pipeline) GetId() *PipelineID {
+ if x != nil {
+ return x.Id
+ }
+ return nil
+}
+
+func (x *Pipeline) GetLeaderID() string {
+ if x != nil && x.LeaderID != nil {
+ return *x.LeaderID
+ }
+ return ""
+}
+
+func (x *Pipeline) GetMemberOrders() []uint32 {
+ if x != nil {
+ return x.MemberOrders
+ }
+ return nil
+}
+
+func (x *Pipeline) GetCreationTimeStamp() uint64 {
+ if x != nil && x.CreationTimeStamp != nil {
+ return *x.CreationTimeStamp
+ }
+ return 0
+}
+
+func (x *Pipeline) GetLeaderID128() *UUID {
+ if x != nil {
+ return x.LeaderID128
+ }
+ return nil
+}
+
+type KeyValue struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Key *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
+ Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
+}
+
+func (x *KeyValue) Reset() {
+ *x = KeyValue{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KeyValue) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KeyValue) ProtoMessage() {}
+
+func (x *KeyValue) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.
+func (*KeyValue) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *KeyValue) GetKey() string {
+ if x != nil && x.Key != nil {
+ return *x.Key
+ }
+ return ""
+}
+
+func (x *KeyValue) GetValue() string {
+ if x != nil && x.Value != nil {
+ return *x.Value
+ }
+ return ""
+}
+
+type Node struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeID *DatanodeDetailsProto `protobuf:"bytes,1,req,name=nodeID" json:"nodeID,omitempty"`
+ NodeStates []NodeState `protobuf:"varint,2,rep,name=nodeStates,enum=hadoop.hdds.NodeState" json:"nodeStates,omitempty"`
+}
+
+func (x *Node) Reset() {
+ *x = Node{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Node) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Node) ProtoMessage() {}
+
+func (x *Node) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Node.ProtoReflect.Descriptor instead.
+func (*Node) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *Node) GetNodeID() *DatanodeDetailsProto {
+ if x != nil {
+ return x.NodeID
+ }
+ return nil
+}
+
+func (x *Node) GetNodeStates() []NodeState {
+ if x != nil {
+ return x.NodeStates
+ }
+ return nil
+}
+
+type NodePool struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Nodes []*Node `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"`
+}
+
+func (x *NodePool) Reset() {
+ *x = NodePool{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodePool) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodePool) ProtoMessage() {}
+
+func (x *NodePool) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodePool.ProtoReflect.Descriptor instead.
+func (*NodePool) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *NodePool) GetNodes() []*Node {
+ if x != nil {
+ return x.Nodes
+ }
+ return nil
+}
+
+type ContainerInfoProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerID *int64 `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
+ State *LifeCycleState `protobuf:"varint,2,req,name=state,enum=hadoop.hdds.LifeCycleState" json:"state,omitempty"`
+ PipelineID *PipelineID `protobuf:"bytes,3,opt,name=pipelineID" json:"pipelineID,omitempty"`
+ UsedBytes *uint64 `protobuf:"varint,4,req,name=usedBytes" json:"usedBytes,omitempty"`
+ NumberOfKeys *uint64 `protobuf:"varint,5,req,name=numberOfKeys" json:"numberOfKeys,omitempty"`
+ StateEnterTime *int64 `protobuf:"varint,6,opt,name=stateEnterTime" json:"stateEnterTime,omitempty"`
+ Owner *string `protobuf:"bytes,7,req,name=owner" json:"owner,omitempty"`
+ DeleteTransactionId *int64 `protobuf:"varint,8,opt,name=deleteTransactionId" json:"deleteTransactionId,omitempty"`
+ SequenceId *int64 `protobuf:"varint,9,opt,name=sequenceId" json:"sequenceId,omitempty"`
+ ReplicationFactor *ReplicationFactor `protobuf:"varint,10,req,name=replicationFactor,enum=hadoop.hdds.ReplicationFactor" json:"replicationFactor,omitempty"`
+ ReplicationType *ReplicationType `protobuf:"varint,11,req,name=replicationType,enum=hadoop.hdds.ReplicationType" json:"replicationType,omitempty"`
+}
+
+func (x *ContainerInfoProto) Reset() {
+ *x = ContainerInfoProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ContainerInfoProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContainerInfoProto) ProtoMessage() {}
+
+func (x *ContainerInfoProto) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContainerInfoProto.ProtoReflect.Descriptor instead.
+func (*ContainerInfoProto) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *ContainerInfoProto) GetContainerID() int64 {
+ if x != nil && x.ContainerID != nil {
+ return *x.ContainerID
+ }
+ return 0
+}
+
+func (x *ContainerInfoProto) GetState() LifeCycleState {
+ if x != nil && x.State != nil {
+ return *x.State
+ }
+ return LifeCycleState_OPEN
+}
+
+func (x *ContainerInfoProto) GetPipelineID() *PipelineID {
+ if x != nil {
+ return x.PipelineID
+ }
+ return nil
+}
+
+func (x *ContainerInfoProto) GetUsedBytes() uint64 {
+ if x != nil && x.UsedBytes != nil {
+ return *x.UsedBytes
+ }
+ return 0
+}
+
+func (x *ContainerInfoProto) GetNumberOfKeys() uint64 {
+ if x != nil && x.NumberOfKeys != nil {
+ return *x.NumberOfKeys
+ }
+ return 0
+}
+
+func (x *ContainerInfoProto) GetStateEnterTime() int64 {
+ if x != nil && x.StateEnterTime != nil {
+ return *x.StateEnterTime
+ }
+ return 0
+}
+
+func (x *ContainerInfoProto) GetOwner() string {
+ if x != nil && x.Owner != nil {
+ return *x.Owner
+ }
+ return ""
+}
+
+func (x *ContainerInfoProto) GetDeleteTransactionId() int64 {
+ if x != nil && x.DeleteTransactionId != nil {
+ return *x.DeleteTransactionId
+ }
+ return 0
+}
+
+func (x *ContainerInfoProto) GetSequenceId() int64 {
+ if x != nil && x.SequenceId != nil {
+ return *x.SequenceId
+ }
+ return 0
+}
+
+func (x *ContainerInfoProto) GetReplicationFactor() ReplicationFactor {
+ if x != nil && x.ReplicationFactor != nil {
+ return *x.ReplicationFactor
+ }
+ return ReplicationFactor_ONE
+}
+
+func (x *ContainerInfoProto) GetReplicationType() ReplicationType {
+ if x != nil && x.ReplicationType != nil {
+ return *x.ReplicationType
+ }
+ return ReplicationType_RATIS
+}
+
+type ContainerWithPipeline struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerInfo *ContainerInfoProto `protobuf:"bytes,1,req,name=containerInfo" json:"containerInfo,omitempty"`
+ Pipeline *Pipeline `protobuf:"bytes,2,req,name=pipeline" json:"pipeline,omitempty"`
+}
+
+func (x *ContainerWithPipeline) Reset() {
+ *x = ContainerWithPipeline{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ContainerWithPipeline) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContainerWithPipeline) ProtoMessage() {}
+
+func (x *ContainerWithPipeline) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContainerWithPipeline.ProtoReflect.Descriptor instead.
+func (*ContainerWithPipeline) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *ContainerWithPipeline) GetContainerInfo() *ContainerInfoProto {
+ if x != nil {
+ return x.ContainerInfo
+ }
+ return nil
+}
+
+func (x *ContainerWithPipeline) GetPipeline() *Pipeline {
+ if x != nil {
+ return x.Pipeline
+ }
+ return nil
+}
+
+type GetScmInfoRequestProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TraceID *string `protobuf:"bytes,1,opt,name=traceID" json:"traceID,omitempty"`
+}
+
+func (x *GetScmInfoRequestProto) Reset() {
+ *x = GetScmInfoRequestProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetScmInfoRequestProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetScmInfoRequestProto) ProtoMessage() {}
+
+func (x *GetScmInfoRequestProto) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetScmInfoRequestProto.ProtoReflect.Descriptor instead.
+func (*GetScmInfoRequestProto) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *GetScmInfoRequestProto) GetTraceID() string {
+ if x != nil && x.TraceID != nil {
+ return *x.TraceID
+ }
+ return ""
+}
+
+type GetScmInfoResponseProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId *string `protobuf:"bytes,1,req,name=clusterId" json:"clusterId,omitempty"`
+ ScmId *string `protobuf:"bytes,2,req,name=scmId" json:"scmId,omitempty"`
+}
+
+func (x *GetScmInfoResponseProto) Reset() {
+ *x = GetScmInfoResponseProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetScmInfoResponseProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetScmInfoResponseProto) ProtoMessage() {}
+
+func (x *GetScmInfoResponseProto) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetScmInfoResponseProto.ProtoReflect.Descriptor instead.
+func (*GetScmInfoResponseProto) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *GetScmInfoResponseProto) GetClusterId() string {
+ if x != nil && x.ClusterId != nil {
+ return *x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetScmInfoResponseProto) GetScmId() string {
+ if x != nil && x.ScmId != nil {
+ return *x.ScmId
+ }
+ return ""
+}
+
+type ExcludeListProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Datanodes []string `protobuf:"bytes,1,rep,name=datanodes" json:"datanodes,omitempty"`
+ ContainerIds []int64 `protobuf:"varint,2,rep,name=containerIds" json:"containerIds,omitempty"`
+ PipelineIds []*PipelineID `protobuf:"bytes,3,rep,name=pipelineIds" json:"pipelineIds,omitempty"`
+}
+
+func (x *ExcludeListProto) Reset() {
+ *x = ExcludeListProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ExcludeListProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExcludeListProto) ProtoMessage() {}
+
+func (x *ExcludeListProto) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExcludeListProto.ProtoReflect.Descriptor instead.
+func (*ExcludeListProto) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *ExcludeListProto) GetDatanodes() []string {
+ if x != nil {
+ return x.Datanodes
+ }
+ return nil
+}
+
+func (x *ExcludeListProto) GetContainerIds() []int64 {
+ if x != nil {
+ return x.ContainerIds
+ }
+ return nil
+}
+
+func (x *ExcludeListProto) GetPipelineIds() []*PipelineID {
+ if x != nil {
+ return x.PipelineIds
+ }
+ return nil
+}
+
+//*
+// Block ID that uniquely identify a block by SCM.
+type ContainerBlockID struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerID *int64 `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
+ LocalID *int64 `protobuf:"varint,2,req,name=localID" json:"localID,omitempty"`
+}
+
+func (x *ContainerBlockID) Reset() {
+ *x = ContainerBlockID{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ContainerBlockID) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContainerBlockID) ProtoMessage() {}
+
+func (x *ContainerBlockID) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContainerBlockID.ProtoReflect.Descriptor instead.
+func (*ContainerBlockID) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *ContainerBlockID) GetContainerID() int64 {
+ if x != nil && x.ContainerID != nil {
+ return *x.ContainerID
+ }
+ return 0
+}
+
+func (x *ContainerBlockID) GetLocalID() int64 {
+ if x != nil && x.LocalID != nil {
+ return *x.LocalID
+ }
+ return 0
+}
+
+//*
+// Information for the Hdds block token.
+// When adding further fields, make sure they are optional as they would
+// otherwise not be backwards compatible.
+type BlockTokenSecretProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ OwnerId *string `protobuf:"bytes,1,req,name=ownerId" json:"ownerId,omitempty"`
+ BlockId *string `protobuf:"bytes,2,req,name=blockId" json:"blockId,omitempty"`
+ ExpiryDate *uint64 `protobuf:"varint,3,req,name=expiryDate" json:"expiryDate,omitempty"`
+ OmCertSerialId *string `protobuf:"bytes,4,req,name=omCertSerialId" json:"omCertSerialId,omitempty"`
+ Modes []BlockTokenSecretProto_AccessModeProto `protobuf:"varint,5,rep,name=modes,enum=hadoop.hdds.BlockTokenSecretProto_AccessModeProto" json:"modes,omitempty"`
+ MaxLength *uint64 `protobuf:"varint,6,req,name=maxLength" json:"maxLength,omitempty"`
+}
+
+func (x *BlockTokenSecretProto) Reset() {
+ *x = BlockTokenSecretProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BlockTokenSecretProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BlockTokenSecretProto) ProtoMessage() {}
+
+func (x *BlockTokenSecretProto) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BlockTokenSecretProto.ProtoReflect.Descriptor instead.
+func (*BlockTokenSecretProto) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *BlockTokenSecretProto) GetOwnerId() string {
+ if x != nil && x.OwnerId != nil {
+ return *x.OwnerId
+ }
+ return ""
+}
+
+func (x *BlockTokenSecretProto) GetBlockId() string {
+ if x != nil && x.BlockId != nil {
+ return *x.BlockId
+ }
+ return ""
+}
+
+func (x *BlockTokenSecretProto) GetExpiryDate() uint64 {
+ if x != nil && x.ExpiryDate != nil {
+ return *x.ExpiryDate
+ }
+ return 0
+}
+
+func (x *BlockTokenSecretProto) GetOmCertSerialId() string {
+ if x != nil && x.OmCertSerialId != nil {
+ return *x.OmCertSerialId
+ }
+ return ""
+}
+
+func (x *BlockTokenSecretProto) GetModes() []BlockTokenSecretProto_AccessModeProto {
+ if x != nil {
+ return x.Modes
+ }
+ return nil
+}
+
+func (x *BlockTokenSecretProto) GetMaxLength() uint64 {
+ if x != nil && x.MaxLength != nil {
+ return *x.MaxLength
+ }
+ return 0
+}
+
+type BlockID struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerBlockID *ContainerBlockID `protobuf:"bytes,1,req,name=containerBlockID" json:"containerBlockID,omitempty"`
+ BlockCommitSequenceId *uint64 `protobuf:"varint,2,opt,name=blockCommitSequenceId,def=0" json:"blockCommitSequenceId,omitempty"`
+}
+
+// Default values for BlockID fields.
+const (
+ Default_BlockID_BlockCommitSequenceId = uint64(0)
+)
+
+func (x *BlockID) Reset() {
+ *x = BlockID{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_hdds_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BlockID) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BlockID) ProtoMessage() {}
+
+func (x *BlockID) ProtoReflect() protoreflect.Message {
+ mi := &file_hdds_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BlockID.ProtoReflect.Descriptor instead.
+func (*BlockID) Descriptor() ([]byte, []int) {
+ return file_hdds_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *BlockID) GetContainerBlockID() *ContainerBlockID {
+ if x != nil {
+ return x.ContainerBlockID
+ }
+ return nil
+}
+
+func (x *BlockID) GetBlockCommitSequenceId() uint64 {
+ if x != nil && x.BlockCommitSequenceId != nil {
+ return *x.BlockCommitSequenceId
+ }
+ return Default_BlockID_BlockCommitSequenceId
+}
+
+var File_hdds_proto protoreflect.FileDescriptor
+
+var file_hdds_proto_rawDesc = []byte{
+ 0x0a, 0x0a, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x22, 0x4c, 0x0a, 0x04, 0x55, 0x55, 0x49,
+ 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x69, 0x67, 0x42, 0x69, 0x74, 0x73,
+ 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x69, 0x67, 0x42,
+ 0x69, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x53, 0x69, 0x67, 0x42,
+ 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x73, 0x74,
+ 0x53, 0x69, 0x67, 0x42, 0x69, 0x74, 0x73, 0x22, 0x9c, 0x03, 0x0a, 0x14, 0x44, 0x61, 0x74, 0x61,
+ 0x6e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x75, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
+ 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65,
+ 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27,
+ 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
+ 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x50, 0x6f, 0x72, 0x74,
+ 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x65, 0x72, 0x74, 0x53,
+ 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63,
+ 0x65, 0x72, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a,
+ 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c,
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x74, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x75, 0x75, 0x69,
+ 0x64, 0x31, 0x32, 0x38, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x68, 0x61, 0x64,
+ 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x07, 0x75,
+ 0x75, 0x69, 0x64, 0x31, 0x32, 0x38, 0x22, 0x91, 0x01, 0x0a, 0x18, 0x4f, 0x7a, 0x6f, 0x6e, 0x65,
+ 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28,
+ 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64,
+ 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64,
+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d,
+ 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x11, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x50,
+ 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0x30, 0x0a, 0x04, 0x50, 0x6f,
+ 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x49, 0x0a, 0x0a,
+ 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x75, 0x75,
+ 0x69, 0x64, 0x31, 0x32, 0x38, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x07,
+ 0x75, 0x75, 0x69, 0x64, 0x31, 0x32, 0x38, 0x22, 0xd5, 0x03, 0x0a, 0x08, 0x50, 0x69, 0x70, 0x65,
+ 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61,
+ 0x69, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72,
+ 0x73, 0x12, 0x44, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x1a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x50,
+ 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x12, 0x50, 0x49,
+ 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x45, 0x44,
+ 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+ 0x79, 0x70, 0x65, 0x3a, 0x0b, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x4c, 0x4f, 0x4e, 0x45,
+ 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e,
+ 0x68, 0x64, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x3a, 0x03, 0x4f, 0x4e, 0x45, 0x52, 0x06, 0x66, 0x61, 0x63,
+ 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x50, 0x69,
+ 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08,
+ 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62,
+ 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0c,
+ 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x11,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d,
+ 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x0b, 0x6c, 0x65,
+ 0x61, 0x64, 0x65, 0x72, 0x49, 0x44, 0x31, 0x32, 0x38, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x11, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x55, 0x55,
+ 0x49, 0x44, 0x52, 0x0b, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x44, 0x31, 0x32, 0x38, 0x22,
+ 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+ 0x65, 0x79, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x22, 0x79, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x6e,
+ 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f,
+ 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06,
+ 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x36, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x68, 0x61, 0x64,
+ 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61,
+ 0x74, 0x65, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x33,
+ 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x05, 0x6e, 0x6f,
+ 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x68, 0x61, 0x64, 0x6f,
+ 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f,
+ 0x64, 0x65, 0x73, 0x22, 0x8a, 0x04, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52,
+ 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x31, 0x0a, 0x05,
+ 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x43, 0x79,
+ 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12,
+ 0x37, 0x0a, 0x0a, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
+ 0x73, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x52, 0x0a, 0x70, 0x69,
+ 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x64,
+ 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x02, 0x28, 0x04, 0x52, 0x09, 0x75, 0x73, 0x65,
+ 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
+ 0x4f, 0x66, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x05, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0c, 0x6e, 0x75,
+ 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74,
+ 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x69,
+ 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x02, 0x28,
+ 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61,
+ 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65,
+ 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
+ 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x4c, 0x0a, 0x11, 0x72, 0x65,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18,
+ 0x0a, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
+ 0x64, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
+ 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x02, 0x28,
+ 0x0e, 0x32, 0x1c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52,
+ 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
+ 0x22, 0x91, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x69,
+ 0x74, 0x68, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x02, 0x28,
+ 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66,
+ 0x6f, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20,
+ 0x02, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
+ 0x73, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x70, 0x69, 0x70, 0x65,
+ 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x32, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6d, 0x49, 0x6e,
+ 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18,
+ 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x22, 0x4d, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53,
+ 0x63, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09,
+ 0x52, 0x05, 0x73, 0x63, 0x6d, 0x49, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x0a, 0x09,
+ 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x09, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03,
+ 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39,
+ 0x0a, 0x0b, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
+ 0x73, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x52, 0x0b, 0x70, 0x69,
+ 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x22, 0x4e, 0x0a, 0x10, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x20, 0x0a,
+ 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02,
+ 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12,
+ 0x18, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03,
+ 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x44, 0x22, 0xb9, 0x02, 0x0a, 0x15, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01,
+ 0x20, 0x02, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a,
+ 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x07,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72,
+ 0x79, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x78, 0x70,
+ 0x69, 0x72, 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6d, 0x43, 0x65, 0x72,
+ 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52,
+ 0x0e, 0x6f, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12,
+ 0x48, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32,
+ 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x78,
+ 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x02, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x61,
+ 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x3c, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x65, 0x73,
+ 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45,
+ 0x41, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12,
+ 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x50, 0x59, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c,
+ 0x45, 0x54, 0x45, 0x10, 0x04, 0x22, 0x8d, 0x01, 0x0a, 0x07, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
+ 0x44, 0x12, 0x49, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x37, 0x0a, 0x15,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65,
+ 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x01, 0x30, 0x52, 0x15,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65,
+ 0x6e, 0x63, 0x65, 0x49, 0x64, 0x2a, 0x65, 0x0a, 0x0d, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e,
+ 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49,
+ 0x4e, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x11,
+ 0x0a, 0x0d, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10,
+ 0x02, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x44, 0x4f,
+ 0x52, 0x4d, 0x41, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x49, 0x50, 0x45, 0x4c,
+ 0x49, 0x4e, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x34, 0x0a, 0x08,
+ 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4d, 0x10, 0x01,
+ 0x12, 0x07, 0x0a, 0x03, 0x53, 0x43, 0x4d, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54,
+ 0x41, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x43, 0x4f, 0x4e,
+ 0x10, 0x04, 0x2a, 0x56, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
+ 0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05,
+ 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x41, 0x44, 0x10,
+ 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f,
+ 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x4d,
+ 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x45, 0x44, 0x10, 0x05, 0x2a, 0x23, 0x0a, 0x0a, 0x51, 0x75,
+ 0x65, 0x72, 0x79, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x55, 0x53,
+ 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x2a,
+ 0x60, 0x0a, 0x0e, 0x4c, 0x69, 0x66, 0x65, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43,
+ 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x51, 0x55, 0x41, 0x53,
+ 0x49, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c,
+ 0x4f, 0x53, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49,
+ 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10,
+ 0x06, 0x2a, 0x64, 0x0a, 0x0e, 0x4c, 0x69, 0x66, 0x65, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x10,
+ 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x51, 0x55, 0x41, 0x53, 0x49, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45,
+ 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a,
+ 0x0b, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x04, 0x12, 0x0a,
+ 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c,
+ 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x06, 0x2a, 0x3a, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x41,
+ 0x54, 0x49, 0x53, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x5f, 0x41,
+ 0x4c, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x45,
+ 0x44, 0x10, 0x03, 0x2a, 0x27, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10,
+ 0x01, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x48, 0x52, 0x45, 0x45, 0x10, 0x03, 0x2a, 0xf0, 0x01, 0x0a,
+ 0x06, 0x53, 0x63, 0x6d, 0x4f, 0x70, 0x73, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63,
+ 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x6b, 0x65,
+ 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x10,
+ 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x53, 0x63, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10,
+ 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x10,
+ 0x05, 0x12, 0x15, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x67, 0x65,
+ 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x50, 0x69,
+ 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x64,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x0a,
+ 0x12, 0x0d, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x0b, 0x42,
+ 0x64, 0x0a, 0x25, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x68, 0x61,
+ 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x0a, 0x48, 0x64, 0x64, 0x73, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x73, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x6f, 0x7a, 0x6f, 0x6e, 0x65, 0x2d, 0x67, 0x6f,
+ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x68, 0x64, 0x64, 0x73, 0x88,
+ 0x01, 0x01, 0xa0, 0x01, 0x01,
+}
+
+var (
+ file_hdds_proto_rawDescOnce sync.Once
+ file_hdds_proto_rawDescData = file_hdds_proto_rawDesc
+)
+
+func file_hdds_proto_rawDescGZIP() []byte {
+ file_hdds_proto_rawDescOnce.Do(func() {
+ file_hdds_proto_rawDescData = protoimpl.X.CompressGZIP(file_hdds_proto_rawDescData)
+ })
+ return file_hdds_proto_rawDescData
+}
+
+var file_hdds_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
+var file_hdds_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
+var file_hdds_proto_goTypes = []interface{}{
+ (PipelineState)(0), // 0: hadoop.hdds.PipelineState
+ (NodeType)(0), // 1: hadoop.hdds.NodeType
+ (NodeState)(0), // 2: hadoop.hdds.NodeState
+ (QueryScope)(0), // 3: hadoop.hdds.QueryScope
+ (LifeCycleState)(0), // 4: hadoop.hdds.LifeCycleState
+ (LifeCycleEvent)(0), // 5: hadoop.hdds.LifeCycleEvent
+ (ReplicationType)(0), // 6: hadoop.hdds.ReplicationType
+ (ReplicationFactor)(0), // 7: hadoop.hdds.ReplicationFactor
+ (ScmOps)(0), // 8: hadoop.hdds.ScmOps
+ (BlockTokenSecretProto_AccessModeProto)(0), // 9: hadoop.hdds.BlockTokenSecretProto.AccessModeProto
+ (*UUID)(nil), // 10: hadoop.hdds.UUID
+ (*DatanodeDetailsProto)(nil), // 11: hadoop.hdds.DatanodeDetailsProto
+ (*OzoneManagerDetailsProto)(nil), // 12: hadoop.hdds.OzoneManagerDetailsProto
+ (*Port)(nil), // 13: hadoop.hdds.Port
+ (*PipelineID)(nil), // 14: hadoop.hdds.PipelineID
+ (*Pipeline)(nil), // 15: hadoop.hdds.Pipeline
+ (*KeyValue)(nil), // 16: hadoop.hdds.KeyValue
+ (*Node)(nil), // 17: hadoop.hdds.Node
+ (*NodePool)(nil), // 18: hadoop.hdds.NodePool
+ (*ContainerInfoProto)(nil), // 19: hadoop.hdds.ContainerInfoProto
+ (*ContainerWithPipeline)(nil), // 20: hadoop.hdds.ContainerWithPipeline
+ (*GetScmInfoRequestProto)(nil), // 21: hadoop.hdds.GetScmInfoRequestProto
+ (*GetScmInfoResponseProto)(nil), // 22: hadoop.hdds.GetScmInfoResponseProto
+ (*ExcludeListProto)(nil), // 23: hadoop.hdds.ExcludeListProto
+ (*ContainerBlockID)(nil), // 24: hadoop.hdds.ContainerBlockID
+ (*BlockTokenSecretProto)(nil), // 25: hadoop.hdds.BlockTokenSecretProto
+ (*BlockID)(nil), // 26: hadoop.hdds.BlockID
+}
+var file_hdds_proto_depIdxs = []int32{
+ 13, // 0: hadoop.hdds.DatanodeDetailsProto.ports:type_name -> hadoop.hdds.Port
+ 10, // 1: hadoop.hdds.DatanodeDetailsProto.uuid128:type_name -> hadoop.hdds.UUID
+ 13, // 2: hadoop.hdds.OzoneManagerDetailsProto.ports:type_name -> hadoop.hdds.Port
+ 10, // 3: hadoop.hdds.PipelineID.uuid128:type_name -> hadoop.hdds.UUID
+ 11, // 4: hadoop.hdds.Pipeline.members:type_name -> hadoop.hdds.DatanodeDetailsProto
+ 0, // 5: hadoop.hdds.Pipeline.state:type_name -> hadoop.hdds.PipelineState
+ 6, // 6: hadoop.hdds.Pipeline.type:type_name -> hadoop.hdds.ReplicationType
+ 7, // 7: hadoop.hdds.Pipeline.factor:type_name -> hadoop.hdds.ReplicationFactor
+ 14, // 8: hadoop.hdds.Pipeline.id:type_name -> hadoop.hdds.PipelineID
+ 10, // 9: hadoop.hdds.Pipeline.leaderID128:type_name -> hadoop.hdds.UUID
+ 11, // 10: hadoop.hdds.Node.nodeID:type_name -> hadoop.hdds.DatanodeDetailsProto
+ 2, // 11: hadoop.hdds.Node.nodeStates:type_name -> hadoop.hdds.NodeState
+ 17, // 12: hadoop.hdds.NodePool.nodes:type_name -> hadoop.hdds.Node
+ 4, // 13: hadoop.hdds.ContainerInfoProto.state:type_name -> hadoop.hdds.LifeCycleState
+ 14, // 14: hadoop.hdds.ContainerInfoProto.pipelineID:type_name -> hadoop.hdds.PipelineID
+ 7, // 15: hadoop.hdds.ContainerInfoProto.replicationFactor:type_name -> hadoop.hdds.ReplicationFactor
+ 6, // 16: hadoop.hdds.ContainerInfoProto.replicationType:type_name -> hadoop.hdds.ReplicationType
+ 19, // 17: hadoop.hdds.ContainerWithPipeline.containerInfo:type_name -> hadoop.hdds.ContainerInfoProto
+ 15, // 18: hadoop.hdds.ContainerWithPipeline.pipeline:type_name -> hadoop.hdds.Pipeline
+ 14, // 19: hadoop.hdds.ExcludeListProto.pipelineIds:type_name -> hadoop.hdds.PipelineID
+ 9, // 20: hadoop.hdds.BlockTokenSecretProto.modes:type_name -> hadoop.hdds.BlockTokenSecretProto.AccessModeProto
+ 24, // 21: hadoop.hdds.BlockID.containerBlockID:type_name -> hadoop.hdds.ContainerBlockID
+ 22, // [22:22] is the sub-list for method output_type
+ 22, // [22:22] is the sub-list for method input_type
+ 22, // [22:22] is the sub-list for extension type_name
+ 22, // [22:22] is the sub-list for extension extendee
+ 0, // [0:22] is the sub-list for field type_name
+}
+
+func init() { file_hdds_proto_init() }
+func file_hdds_proto_init() {
+ if File_hdds_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_hdds_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UUID); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DatanodeDetailsProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OzoneManagerDetailsProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Port); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PipelineID); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Pipeline); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KeyValue); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Node); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePool); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerInfoProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerWithPipeline); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetScmInfoRequestProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetScmInfoResponseProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ExcludeListProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerBlockID); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BlockTokenSecretProto); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_hdds_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BlockID); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_hdds_proto_rawDesc,
+ NumEnums: 10,
+ NumMessages: 17,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_hdds_proto_goTypes,
+ DependencyIndexes: file_hdds_proto_depIdxs,
+ EnumInfos: file_hdds_proto_enumTypes,
+ MessageInfos: file_hdds_proto_msgTypes,
+ }.Build()
+ File_hdds_proto = out.File
+ file_hdds_proto_rawDesc = nil
+ file_hdds_proto_goTypes = nil
+ file_hdds_proto_depIdxs = nil
+}
diff --git a/api/proto/ozone/OmClientProtocol.pb.go b/api/proto/ozone/OmClientProtocol.pb.go
new file mode 100644
index 0000000..b94db63
--- /dev/null
+++ b/api/proto/ozone/OmClientProtocol.pb.go
@@ -0,0 +1,12561 @@
+//*
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//*
+// These .proto interfaces are private and unstable.
+// Please see http://wiki.apache.org/hadoop/Compatibility
+// for what changes are allowed for a *unstable* .proto interface.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.24.0
+// protoc v3.15.6
+// source: OmClientProtocol.proto
+
+package ozone
+
+import (
... 19371 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org