1/**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19// All to do with the Master.  Includes schema management since these
20// changes are run by the Master process.
21
22option java_package = "org.apache.hadoop.hbase.protobuf.generated";
23option java_outer_classname = "MasterProtos";
24option java_generic_services = true;
25option java_generate_equals_and_hash = true;
26option optimize_for = SPEED;
27
28import "HBase.proto";
29import "Client.proto";
30import "ClusterStatus.proto";
31import "ErrorHandling.proto";
32import "Procedure.proto";
33import "Quota.proto";
34
35/* Column-level protobufs */
36
37message AddColumnRequest {
38  required TableName table_name = 1;
39  required ColumnFamilySchema column_families = 2;
40  optional uint64 nonce_group = 3 [default = 0];
41  optional uint64 nonce = 4 [default = 0];
42}
43
44message AddColumnResponse {
45}
46
47message DeleteColumnRequest {
48  required TableName table_name = 1;
49  required bytes column_name = 2;
50  optional uint64 nonce_group = 3 [default = 0];
51  optional uint64 nonce = 4 [default = 0];
52}
53
54message DeleteColumnResponse {
55}
56
57message ModifyColumnRequest {
58  required TableName table_name = 1;
59  required ColumnFamilySchema column_families = 2;
60  optional uint64 nonce_group = 3 [default = 0];
61  optional uint64 nonce = 4 [default = 0];
62}
63
64message ModifyColumnResponse {
65}
66
67/* Region-level Protos */
68
69message MoveRegionRequest {
70  required RegionSpecifier region = 1;
71  optional ServerName dest_server_name = 2;
72}
73
74message MoveRegionResponse {
75}
76
77/**
78 * Dispatch merging the specified regions.
79 */
80message DispatchMergingRegionsRequest {
81  required RegionSpecifier region_a = 1;
82  required RegionSpecifier region_b = 2;
83  optional bool forcible = 3 [default = false];
84}
85
86message DispatchMergingRegionsResponse {
87}
88
89message AssignRegionRequest {
90  required RegionSpecifier region = 1;
91}
92
93message AssignRegionResponse {
94}
95
96message UnassignRegionRequest {
97  required RegionSpecifier region = 1;
98  optional bool force = 2 [default = false];
99}
100
101message UnassignRegionResponse {
102}
103
104message OfflineRegionRequest {
105  required RegionSpecifier region = 1;
106}
107
108message OfflineRegionResponse {
109}
110
111/* Table-level protobufs */
112
113message CreateTableRequest {
114  required TableSchema table_schema = 1;
115  repeated bytes split_keys = 2;
116  optional uint64 nonce_group = 3 [default = 0];
117  optional uint64 nonce = 4 [default = 0];
118}
119
120message CreateTableResponse {
121  optional uint64 proc_id = 1;
122}
123
124message DeleteTableRequest {
125  required TableName table_name = 1;
126  optional uint64 nonce_group = 2 [default = 0];
127  optional uint64 nonce = 3 [default = 0];
128}
129
130message DeleteTableResponse {
131  optional uint64 proc_id = 1;
132}
133
134message TruncateTableRequest {
135  required TableName tableName = 1;
136  optional bool preserveSplits = 2 [default = false];
137  optional uint64 nonce_group = 3 [default = 0];
138  optional uint64 nonce = 4 [default = 0];
139}
140
141message TruncateTableResponse {
142}
143
144message EnableTableRequest {
145  required TableName table_name = 1;
146  optional uint64 nonce_group = 2 [default = 0];
147  optional uint64 nonce = 3 [default = 0];
148}
149
150message EnableTableResponse {
151  optional uint64 proc_id = 1;
152}
153
154message DisableTableRequest {
155  required TableName table_name = 1;
156  optional uint64 nonce_group = 2 [default = 0];
157  optional uint64 nonce = 3 [default = 0];
158}
159
160message DisableTableResponse {
161  optional uint64 proc_id = 1;
162}
163
164message ModifyTableRequest {
165  required TableName table_name = 1;
166  required TableSchema table_schema = 2;
167  optional uint64 nonce_group = 3 [default = 0];
168  optional uint64 nonce = 4 [default = 0];
169}
170
171message ModifyTableResponse {
172}
173
174/* Namespace-level protobufs */
175
176message CreateNamespaceRequest {
177  required NamespaceDescriptor namespaceDescriptor = 1;
178}
179
180message CreateNamespaceResponse {
181}
182
183message DeleteNamespaceRequest {
184  required string namespaceName = 1;
185}
186
187message DeleteNamespaceResponse {
188}
189
190message ModifyNamespaceRequest {
191  required NamespaceDescriptor namespaceDescriptor = 1;
192}
193
194message ModifyNamespaceResponse {
195}
196
197message GetNamespaceDescriptorRequest {
198  required string namespaceName = 1;
199}
200
201message GetNamespaceDescriptorResponse {
202  required NamespaceDescriptor namespaceDescriptor = 1;
203}
204
205message ListNamespaceDescriptorsRequest {
206}
207
208message ListNamespaceDescriptorsResponse {
209  repeated NamespaceDescriptor namespaceDescriptor = 1;
210}
211
212message ListTableDescriptorsByNamespaceRequest {
213  required string namespaceName = 1;
214}
215
216message ListTableDescriptorsByNamespaceResponse {
217  repeated TableSchema tableSchema = 1;
218}
219
220message ListTableNamesByNamespaceRequest {
221  required string namespaceName = 1;
222}
223
224message ListTableNamesByNamespaceResponse {
225  repeated TableName tableName = 1;
226}
227
228/* Cluster-level protobufs */
229
230
231message ShutdownRequest {
232}
233
234message ShutdownResponse {
235}
236
237message StopMasterRequest {
238}
239
240message StopMasterResponse {
241}
242
243message BalanceRequest {
244}
245
246message BalanceResponse {
247  required bool balancer_ran = 1;
248}
249
250message SetBalancerRunningRequest {
251  required bool on = 1;
252  optional bool synchronous = 2;
253}
254
255message SetBalancerRunningResponse {
256  optional bool prev_balance_value = 1;
257}
258
259message IsBalancerEnabledRequest {
260}
261
262message IsBalancerEnabledResponse {
263  required bool enabled = 1;
264}
265
266message NormalizeRequest {
267}
268
269message NormalizeResponse {
270  required bool normalizer_ran = 1;
271}
272
273message SetNormalizerRunningRequest {
274  required bool on = 1;
275}
276
277message SetNormalizerRunningResponse {
278  optional bool prev_normalizer_value = 1;
279}
280
281message IsNormalizerEnabledRequest {
282}
283
284message IsNormalizerEnabledResponse {
285  required bool enabled = 1;
286}
287
288message RunCatalogScanRequest {
289}
290
291message RunCatalogScanResponse {
292  optional int32 scan_result = 1;
293}
294
295message EnableCatalogJanitorRequest {
296  required bool enable = 1;
297}
298
299message EnableCatalogJanitorResponse {
300  optional bool prev_value = 1;
301}
302
303message IsCatalogJanitorEnabledRequest {
304}
305
306message IsCatalogJanitorEnabledResponse {
307  required bool value = 1;
308}
309
310message SnapshotRequest {
311	required SnapshotDescription snapshot = 1;
312}
313
314message SnapshotResponse {
315	required int64 expected_timeout = 1;
316}
317
318message GetCompletedSnapshotsRequest {
319}
320
321message GetCompletedSnapshotsResponse {
322	repeated SnapshotDescription snapshots = 1;
323}
324
325message DeleteSnapshotRequest {
326	required SnapshotDescription snapshot = 1;
327}
328
329message DeleteSnapshotResponse {
330}
331
332message RestoreSnapshotRequest {
333  required SnapshotDescription snapshot = 1;
334}
335
336message RestoreSnapshotResponse {
337}
338
339/* if you don't send the snapshot, then you will get it back
340 * in the response (if the snapshot is done) so you can check the snapshot
341 */
342message IsSnapshotDoneRequest {
343	optional SnapshotDescription snapshot = 1;
344}
345
346message IsSnapshotDoneResponse {
347	optional bool done = 1 [default = false];
348	optional SnapshotDescription snapshot = 2;
349}
350
351message IsRestoreSnapshotDoneRequest {
352  optional SnapshotDescription snapshot = 1;
353}
354
355message IsRestoreSnapshotDoneResponse {
356  optional bool done = 1 [default = false];
357}
358
359message GetSchemaAlterStatusRequest {
360  required TableName table_name = 1;
361}
362
363message GetSchemaAlterStatusResponse {
364  optional uint32 yet_to_update_regions = 1;
365  optional uint32 total_regions = 2;
366}
367
368message GetTableDescriptorsRequest {
369  repeated TableName table_names = 1;
370  optional string regex = 2;
371  optional bool include_sys_tables = 3 [default=false];
372  optional string namespace = 4;
373}
374
375message GetTableDescriptorsResponse {
376  repeated TableSchema table_schema = 1;
377}
378
379message GetTableNamesRequest {
380  optional string regex = 1;
381  optional bool include_sys_tables = 2 [default=false];
382  optional string namespace = 3;
383}
384
385message GetTableNamesResponse {
386  repeated TableName table_names = 1;
387}
388
389message GetClusterStatusRequest {
390}
391
392message GetClusterStatusResponse {
393  required ClusterStatus cluster_status = 1;
394}
395
396message IsMasterRunningRequest {
397}
398
399message IsMasterRunningResponse {
400  required bool is_master_running = 1;
401}
402
403message ExecProcedureRequest {
404  required ProcedureDescription procedure = 1;
405}
406
407message ExecProcedureResponse {
408  optional int64 expected_timeout = 1;
409  optional bytes return_data = 2;
410}
411
412message IsProcedureDoneRequest {
413  optional ProcedureDescription procedure = 1;
414}
415
416message IsProcedureDoneResponse {
417  optional bool done = 1 [default = false];
418  optional ProcedureDescription snapshot = 2;
419}
420
421message GetProcedureResultRequest {
422  required uint64 proc_id = 1;
423}
424
425message GetProcedureResultResponse {
426  enum State {
427    NOT_FOUND = 0;
428    RUNNING = 1;
429    FINISHED = 2;
430  }
431
432  required State state = 1;
433  optional uint64 start_time = 2;
434  optional uint64 last_update = 3;
435  optional bytes result = 4;
436  optional ForeignExceptionMessage exception = 5;
437}
438
439message AbortProcedureRequest {
440  required uint64 proc_id = 1;
441  optional bool mayInterruptIfRunning = 2 [default = true];
442}
443
444message AbortProcedureResponse {
445  required bool is_procedure_aborted = 1;
446}
447
448message ListProceduresRequest {
449}
450
451message ListProceduresResponse {
452  repeated Procedure procedure = 1;
453}
454
455message SetQuotaRequest {
456  optional string user_name = 1;
457  optional string user_group = 2;
458  optional string namespace = 3;
459  optional TableName table_name = 4;
460
461  optional bool remove_all = 5;
462  optional bool bypass_globals = 6;
463  optional ThrottleRequest throttle = 7;
464}
465
466message SetQuotaResponse {
467}
468
469message MajorCompactionTimestampRequest {
470  required TableName table_name = 1;
471}
472
473message MajorCompactionTimestampForRegionRequest {
474  required RegionSpecifier region = 1;
475}
476
477message MajorCompactionTimestampResponse {
478  required int64 compaction_timestamp = 1;
479}
480
481message SecurityCapabilitiesRequest {
482}
483
484message SecurityCapabilitiesResponse {
485  enum Capability {
486    SIMPLE_AUTHENTICATION = 0;
487    SECURE_AUTHENTICATION = 1;
488    AUTHORIZATION = 2;
489    CELL_AUTHORIZATION = 3;
490    CELL_VISIBILITY = 4;
491  }
492
493  repeated Capability capabilities = 1;
494}
495
496service MasterService {
497  /** Used by the client to get the number of regions that have received the updated schema */
498  rpc GetSchemaAlterStatus(GetSchemaAlterStatusRequest)
499    returns(GetSchemaAlterStatusResponse);
500
501  /** Get list of TableDescriptors for requested tables. */
502  rpc GetTableDescriptors(GetTableDescriptorsRequest)
503    returns(GetTableDescriptorsResponse);
504
505  /** Get the list of table names. */
506  rpc GetTableNames(GetTableNamesRequest)
507    returns(GetTableNamesResponse);
508
509  /** Return cluster status. */
510  rpc GetClusterStatus(GetClusterStatusRequest)
511    returns(GetClusterStatusResponse);
512
513  /** return true if master is available */
514  rpc IsMasterRunning(IsMasterRunningRequest) returns(IsMasterRunningResponse);
515
516  /** Adds a column to the specified table. */
517  rpc AddColumn(AddColumnRequest)
518    returns(AddColumnResponse);
519
520  /** Deletes a column from the specified table. Table must be disabled. */
521  rpc DeleteColumn(DeleteColumnRequest)
522    returns(DeleteColumnResponse);
523
524  /** Modifies an existing column on the specified table. */
525  rpc ModifyColumn(ModifyColumnRequest)
526    returns(ModifyColumnResponse);
527
528  /** Move the region region to the destination server. */
529  rpc MoveRegion(MoveRegionRequest)
530    returns(MoveRegionResponse);
531
532 /** Master dispatch merging the regions */
533  rpc DispatchMergingRegions(DispatchMergingRegionsRequest)
534    returns(DispatchMergingRegionsResponse);
535
536  /** Assign a region to a server chosen at random. */
537  rpc AssignRegion(AssignRegionRequest)
538    returns(AssignRegionResponse);
539
540  /**
541   * Unassign a region from current hosting regionserver.  Region will then be
542   * assigned to a regionserver chosen at random.  Region could be reassigned
543   * back to the same server.  Use MoveRegion if you want
544   * to control the region movement.
545   */
546  rpc UnassignRegion(UnassignRegionRequest)
547    returns(UnassignRegionResponse);
548
549  /**
550   * Offline a region from the assignment manager's in-memory state.  The
551   * region should be in a closed state and there will be no attempt to
552   * automatically reassign the region as in unassign.   This is a special
553   * method, and should only be used by experts or hbck.
554   */
555  rpc OfflineRegion(OfflineRegionRequest)
556    returns(OfflineRegionResponse);
557
558  /** Deletes a table */
559  rpc DeleteTable(DeleteTableRequest)
560    returns(DeleteTableResponse);
561
562  /** Truncate a table */
563  rpc truncateTable(TruncateTableRequest)
564    returns(TruncateTableResponse);
565
566  /** Puts the table on-line (only needed if table has been previously taken offline) */
567  rpc EnableTable(EnableTableRequest)
568    returns(EnableTableResponse);
569
570  /** Take table offline */
571  rpc DisableTable(DisableTableRequest)
572    returns(DisableTableResponse);
573
574  /** Modify a table's metadata */
575  rpc ModifyTable(ModifyTableRequest)
576    returns(ModifyTableResponse);
577
578  /** Creates a new table asynchronously */
579  rpc CreateTable(CreateTableRequest)
580    returns(CreateTableResponse);
581
582    /** Shutdown an HBase cluster. */
583  rpc Shutdown(ShutdownRequest)
584    returns(ShutdownResponse);
585
586  /** Stop HBase Master only.  Does not shutdown the cluster. */
587  rpc StopMaster(StopMasterRequest)
588    returns(StopMasterResponse);
589
590  /**
591   * Run the balancer.  Will run the balancer and if regions to move, it will
592   * go ahead and do the reassignments.  Can NOT run for various reasons.
593   * Check logs.
594   */
595  rpc Balance(BalanceRequest)
596    returns(BalanceResponse);
597
598  /**
599   * Turn the load balancer on or off.
600   * If synchronous is true, it waits until current balance() call, if outstanding, to return.
601   */
602  rpc SetBalancerRunning(SetBalancerRunningRequest)
603    returns(SetBalancerRunningResponse);
604
605  /**
606   * Query whether the Region Balancer is running.
607   */
608  rpc IsBalancerEnabled(IsBalancerEnabledRequest)
609    returns(IsBalancerEnabledResponse);
610
611  /**
612   * Run region normalizer. Can NOT run for various reasons. Check logs.
613   */
614  rpc Normalize(NormalizeRequest)
615  returns(NormalizeResponse);
616
617  /**
618   * Turn region normalizer on or off.
619   */
620  rpc SetNormalizerRunning(SetNormalizerRunningRequest)
621  returns(SetNormalizerRunningResponse);
622
623  /**
624   * Query whether region normalizer is enabled.
625   */
626  rpc IsNormalizerEnabled(IsNormalizerEnabledRequest)
627  returns(IsNormalizerEnabledResponse);
628
629  /** Get a run of the catalog janitor */
630  rpc RunCatalogScan(RunCatalogScanRequest)
631     returns(RunCatalogScanResponse);
632
633  /**
634   * Enable the catalog janitor on or off.
635   */
636  rpc EnableCatalogJanitor(EnableCatalogJanitorRequest)
637     returns(EnableCatalogJanitorResponse);
638
639  /**
640   * Query whether the catalog janitor is enabled.
641   */
642  rpc IsCatalogJanitorEnabled(IsCatalogJanitorEnabledRequest)
643     returns(IsCatalogJanitorEnabledResponse);
644
645  /**
646   * Call a master coprocessor endpoint
647   */
648  rpc ExecMasterService(CoprocessorServiceRequest)
649    returns(CoprocessorServiceResponse);
650
651  /**
652   * Create a snapshot for the given table.
653   */
654  rpc Snapshot(SnapshotRequest) returns(SnapshotResponse);
655
656  /**
657   * Get completed snapshots.
658   * Returns a list of snapshot descriptors for completed snapshots
659   */
660  rpc GetCompletedSnapshots(GetCompletedSnapshotsRequest) returns(GetCompletedSnapshotsResponse);
661
662  /**
663   * Delete an existing snapshot. This method can also be used to clean up an aborted snapshot.
664   */
665  rpc DeleteSnapshot(DeleteSnapshotRequest) returns(DeleteSnapshotResponse);
666
667  /**
668   * Determine if the snapshot is done yet.
669   */
670  rpc IsSnapshotDone(IsSnapshotDoneRequest) returns(IsSnapshotDoneResponse);
671
672  /**
673   * Restore a snapshot
674   */
675  rpc RestoreSnapshot(RestoreSnapshotRequest) returns(RestoreSnapshotResponse);
676
677  /**
678   * Determine if the snapshot restore is done yet.
679   */
680  rpc IsRestoreSnapshotDone(IsRestoreSnapshotDoneRequest) returns(IsRestoreSnapshotDoneResponse);
681
682  /**
683   * Execute a distributed procedure.
684   */
685  rpc ExecProcedure(ExecProcedureRequest) returns(ExecProcedureResponse);
686
687  /**
688   * Execute a distributed procedure with return data.
689   */
690  rpc ExecProcedureWithRet(ExecProcedureRequest) returns(ExecProcedureResponse);
691
692  /**
693   * Determine if the procedure is done yet.
694   */
695  rpc IsProcedureDone(IsProcedureDoneRequest) returns(IsProcedureDoneResponse);
696
697  /** return true if master is available */
698  /** rpc IsMasterRunning(IsMasterRunningRequest) returns(IsMasterRunningResponse); */
699
700  /** Modify a namespace's metadata */
701  rpc ModifyNamespace(ModifyNamespaceRequest)
702    returns(ModifyNamespaceResponse);
703
704  /** Creates a new namespace synchronously */
705  rpc CreateNamespace(CreateNamespaceRequest)
706    returns(CreateNamespaceResponse);
707
708  /** Deletes namespace synchronously */
709  rpc DeleteNamespace(DeleteNamespaceRequest)
710    returns(DeleteNamespaceResponse);
711
712  /** Get a namespace descriptor by name */
713  rpc GetNamespaceDescriptor(GetNamespaceDescriptorRequest)
714    returns(GetNamespaceDescriptorResponse);
715
716  /** returns a list of namespaces */
717  rpc ListNamespaceDescriptors(ListNamespaceDescriptorsRequest)
718    returns(ListNamespaceDescriptorsResponse);
719
720  /** returns a list of tables for a given namespace*/
721  rpc ListTableDescriptorsByNamespace(ListTableDescriptorsByNamespaceRequest)
722    returns(ListTableDescriptorsByNamespaceResponse);
723
724  /** returns a list of tables for a given namespace*/
725  rpc ListTableNamesByNamespace(ListTableNamesByNamespaceRequest)
726    returns(ListTableNamesByNamespaceResponse);
727
728  /** Apply the new quota settings */
729  rpc SetQuota(SetQuotaRequest) returns(SetQuotaResponse);
730
731  /** Returns the timestamp of the last major compaction */
732  rpc getLastMajorCompactionTimestamp(MajorCompactionTimestampRequest)
733    returns(MajorCompactionTimestampResponse);
734
735  /** Returns the timestamp of the last major compaction */
736  rpc getLastMajorCompactionTimestampForRegion(MajorCompactionTimestampForRegionRequest)
737    returns(MajorCompactionTimestampResponse);
738
739  rpc getProcedureResult(GetProcedureResultRequest)
740    returns(GetProcedureResultResponse);
741
742  /** Returns the security capabilities in effect on the cluster */
743  rpc getSecurityCapabilities(SecurityCapabilitiesRequest)
744    returns(SecurityCapabilitiesResponse);
745
746  /** Abort a procedure */
747  rpc AbortProcedure(AbortProcedureRequest)
748    returns(AbortProcedureResponse);
749
750  /** returns a list of procedures */
751  rpc ListProcedures(ListProceduresRequest)
752    returns(ListProceduresResponse);
753}
754