1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.protobuf;
19
20 import java.io.IOException;
21 import java.util.List;
22
23 import com.google.protobuf.HBaseZeroCopyByteString;
24 import org.apache.hadoop.classification.InterfaceAudience;
25 import org.apache.hadoop.hbase.CellScannable;
26 import org.apache.hadoop.hbase.HConstants;
27 import org.apache.hadoop.hbase.TableName;
28 import org.apache.hadoop.hbase.DoNotRetryIOException;
29 import org.apache.hadoop.hbase.HColumnDescriptor;
30 import org.apache.hadoop.hbase.HRegionInfo;
31 import org.apache.hadoop.hbase.HTableDescriptor;
32 import org.apache.hadoop.hbase.ServerName;
33 import org.apache.hadoop.hbase.client.Action;
34 import org.apache.hadoop.hbase.client.Append;
35 import org.apache.hadoop.hbase.client.Delete;
36 import org.apache.hadoop.hbase.client.Durability;
37 import org.apache.hadoop.hbase.client.Get;
38 import org.apache.hadoop.hbase.client.Increment;
39 import org.apache.hadoop.hbase.client.Mutation;
40 import org.apache.hadoop.hbase.client.Put;
41 import org.apache.hadoop.hbase.client.Row;
42 import org.apache.hadoop.hbase.client.RowMutations;
43 import org.apache.hadoop.hbase.client.Scan;
44 import org.apache.hadoop.hbase.exceptions.DeserializationException;
45 import org.apache.hadoop.hbase.filter.ByteArrayComparable;
46 import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos;
47 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest;
48 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactRegionRequest;
49 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.FlushRegionRequest;
50 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetOnlineRegionRequest;
51 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoRequest;
52 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetServerInfoRequest;
53 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetStoreFileRequest;
54 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.MergeRegionsRequest;
55 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest;
56 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest.RegionOpenInfo;
57 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.RollWALWriterRequest;
58 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.SplitRegionRequest;
59 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.StopServerRequest;
60 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest;
61 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest.RegionUpdateInfo;
62 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;
63 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.BulkLoadHFileRequest;
64 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.BulkLoadHFileRequest.FamilyPath;
65 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.Column;
66 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.Condition;
67 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.GetRequest;
68 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutateRequest;
69 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto;
70 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.ColumnValue;
71 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.ColumnValue.QualifierValue;
72 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.MutationType;
73 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.RegionAction;
74 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.ScanRequest;
75 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.CompareType;
76 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;
77 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;
78 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.AddColumnRequest;
79 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.AssignRegionRequest;
80 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.BalanceRequest;
81 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.CreateTableRequest;
82 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.DeleteColumnRequest;
83 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.DeleteTableRequest;
84 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.DisableTableRequest;
85 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.DispatchMergingRegionsRequest;
86 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.EnableCatalogJanitorRequest;
87 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.EnableTableRequest;
88 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetClusterStatusRequest;
89 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetSchemaAlterStatusRequest;
90 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetTableDescriptorsRequest;
91 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest;
92 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsMasterRunningRequest;
93 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyColumnRequest;
94 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableRequest;
95 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.MoveRegionRequest;
96 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.OfflineRegionRequest;
97 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.RunCatalogScanRequest;
98 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.SetBalancerRunningRequest;
99 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.UnassignRegionRequest;
100 import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.GetLastFlushedSequenceIdRequest;
101 import org.apache.hadoop.hbase.util.Bytes;
102 import org.apache.hadoop.hbase.util.Pair;
103 import org.apache.hadoop.hbase.util.Triple;
104
105 import com.google.protobuf.ByteString;
106
107
108
109
110
111 @InterfaceAudience.Private
112 public final class RequestConverter {
113
114 private RequestConverter() {
115 }
116
117
118
119
120
121
122
123
124
125
126
127
128
129 public static GetRequest buildGetRowOrBeforeRequest(
130 final byte[] regionName, final byte[] row, final byte[] family) {
131 GetRequest.Builder builder = GetRequest.newBuilder();
132 RegionSpecifier region = buildRegionSpecifier(
133 RegionSpecifierType.REGION_NAME, regionName);
134 builder.setRegion(region);
135
136 Column.Builder columnBuilder = Column.newBuilder();
137 columnBuilder.setFamily(HBaseZeroCopyByteString.wrap(family));
138 ClientProtos.Get.Builder getBuilder =
139 ClientProtos.Get.newBuilder();
140 getBuilder.setRow(HBaseZeroCopyByteString.wrap(row));
141 getBuilder.addColumn(columnBuilder.build());
142 getBuilder.setClosestRowBefore(true);
143 builder.setGet(getBuilder.build());
144 return builder.build();
145 }
146
147
148
149
150
151
152
153
154
155 public static GetRequest buildGetRequest(final byte[] regionName,
156 final Get get) throws IOException {
157 GetRequest.Builder builder = GetRequest.newBuilder();
158 RegionSpecifier region = buildRegionSpecifier(
159 RegionSpecifierType.REGION_NAME, regionName);
160 builder.setRegion(region);
161 builder.setGet(ProtobufUtil.toGet(get));
162 return builder.build();
163 }
164
165
166
167
168
169
170
171
172
173
174
175
176 public static MutateRequest buildIncrementRequest(
177 final byte[] regionName, final byte[] row, final byte[] family, final byte[] qualifier,
178 final long amount, final Durability durability, long nonceGroup, long nonce) {
179 MutateRequest.Builder builder = MutateRequest.newBuilder();
180 RegionSpecifier region = buildRegionSpecifier(
181 RegionSpecifierType.REGION_NAME, regionName);
182 builder.setRegion(region);
183
184 MutationProto.Builder mutateBuilder = MutationProto.newBuilder();
185 mutateBuilder.setRow(HBaseZeroCopyByteString.wrap(row));
186 mutateBuilder.setMutateType(MutationType.INCREMENT);
187 mutateBuilder.setDurability(ProtobufUtil.toDurability(durability));
188 ColumnValue.Builder columnBuilder = ColumnValue.newBuilder();
189 columnBuilder.setFamily(HBaseZeroCopyByteString.wrap(family));
190 QualifierValue.Builder valueBuilder = QualifierValue.newBuilder();
191 valueBuilder.setValue(HBaseZeroCopyByteString.wrap(Bytes.toBytes(amount)));
192 valueBuilder.setQualifier(HBaseZeroCopyByteString.wrap(qualifier));
193 columnBuilder.addQualifierValue(valueBuilder.build());
194 mutateBuilder.addColumnValue(columnBuilder.build());
195 if (nonce != HConstants.NO_NONCE) {
196 mutateBuilder.setNonce(nonce);
197 }
198 builder.setMutation(mutateBuilder.build());
199 if (nonceGroup != HConstants.NO_NONCE) {
200 builder.setNonceGroup(nonceGroup);
201 }
202 return builder.build();
203 }
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218 public static MutateRequest buildMutateRequest(
219 final byte[] regionName, final byte[] row, final byte[] family,
220 final byte [] qualifier, final ByteArrayComparable comparator,
221 final CompareType compareType, final Put put) throws IOException {
222 MutateRequest.Builder builder = MutateRequest.newBuilder();
223 RegionSpecifier region = buildRegionSpecifier(
224 RegionSpecifierType.REGION_NAME, regionName);
225 builder.setRegion(region);
226 Condition condition = buildCondition(
227 row, family, qualifier, comparator, compareType);
228 builder.setMutation(ProtobufUtil.toMutation(MutationType.PUT, put, MutationProto.newBuilder()));
229 builder.setCondition(condition);
230 return builder.build();
231 }
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246 public static MutateRequest buildMutateRequest(
247 final byte[] regionName, final byte[] row, final byte[] family,
248 final byte [] qualifier, final ByteArrayComparable comparator,
249 final CompareType compareType, final Delete delete) throws IOException {
250 MutateRequest.Builder builder = MutateRequest.newBuilder();
251 RegionSpecifier region = buildRegionSpecifier(
252 RegionSpecifierType.REGION_NAME, regionName);
253 builder.setRegion(region);
254 Condition condition = buildCondition(
255 row, family, qualifier, comparator, compareType);
256 builder.setMutation(ProtobufUtil.toMutation(MutationType.DELETE, delete,
257 MutationProto.newBuilder()));
258 builder.setCondition(condition);
259 return builder.build();
260 }
261
262
263
264
265
266
267
268
269
270 public static MutateRequest buildMutateRequest(
271 final byte[] regionName, final Put put) throws IOException {
272 MutateRequest.Builder builder = MutateRequest.newBuilder();
273 RegionSpecifier region = buildRegionSpecifier(
274 RegionSpecifierType.REGION_NAME, regionName);
275 builder.setRegion(region);
276 builder.setMutation(ProtobufUtil.toMutation(MutationType.PUT, put, MutationProto.newBuilder()));
277 return builder.build();
278 }
279
280
281
282
283
284
285
286
287
288 public static MutateRequest buildMutateRequest(final byte[] regionName,
289 final Append append, long nonceGroup, long nonce) throws IOException {
290 MutateRequest.Builder builder = MutateRequest.newBuilder();
291 RegionSpecifier region = buildRegionSpecifier(
292 RegionSpecifierType.REGION_NAME, regionName);
293 builder.setRegion(region);
294 if (nonce != HConstants.NO_NONCE && nonceGroup != HConstants.NO_NONCE) {
295 builder.setNonceGroup(nonceGroup);
296 }
297 builder.setMutation(ProtobufUtil.toMutation(MutationType.APPEND, append,
298 MutationProto.newBuilder(), nonce));
299 return builder.build();
300 }
301
302
303
304
305
306
307
308
309 public static MutateRequest buildMutateRequest(final byte[] regionName,
310 final Increment increment, final long nonceGroup, final long nonce) {
311 MutateRequest.Builder builder = MutateRequest.newBuilder();
312 RegionSpecifier region = buildRegionSpecifier(
313 RegionSpecifierType.REGION_NAME, regionName);
314 builder.setRegion(region);
315 if (nonce != HConstants.NO_NONCE && nonceGroup != HConstants.NO_NONCE) {
316 builder.setNonceGroup(nonceGroup);
317 }
318 builder.setMutation(ProtobufUtil.toMutation(increment, MutationProto.newBuilder(), nonce));
319 return builder.build();
320 }
321
322
323
324
325
326
327
328
329
330 public static MutateRequest buildMutateRequest(
331 final byte[] regionName, final Delete delete) throws IOException {
332 MutateRequest.Builder builder = MutateRequest.newBuilder();
333 RegionSpecifier region = buildRegionSpecifier(
334 RegionSpecifierType.REGION_NAME, regionName);
335 builder.setRegion(region);
336 builder.setMutation(ProtobufUtil.toMutation(MutationType.DELETE, delete,
337 MutationProto.newBuilder()));
338 return builder.build();
339 }
340
341
342
343
344
345
346
347
348
349
350 public static RegionAction.Builder buildRegionAction(final byte [] regionName,
351 final RowMutations rowMutations)
352 throws IOException {
353 RegionAction.Builder builder =
354 getRegionActionBuilderWithRegion(RegionAction.newBuilder(), regionName);
355 ClientProtos.Action.Builder actionBuilder = ClientProtos.Action.newBuilder();
356 MutationProto.Builder mutationBuilder = MutationProto.newBuilder();
357 for (Mutation mutation: rowMutations.getMutations()) {
358 MutationType mutateType = null;
359 if (mutation instanceof Put) {
360 mutateType = MutationType.PUT;
361 } else if (mutation instanceof Delete) {
362 mutateType = MutationType.DELETE;
363 } else {
364 throw new DoNotRetryIOException("RowMutations supports only put and delete, not " +
365 mutation.getClass().getName());
366 }
367 mutationBuilder.clear();
368 MutationProto mp = ProtobufUtil.toMutation(mutateType, mutation, mutationBuilder);
369 actionBuilder.clear();
370 actionBuilder.setMutation(mp);
371 builder.addAction(actionBuilder.build());
372 }
373 return builder;
374 }
375
376
377
378
379
380
381
382
383
384
385
386
387 public static RegionAction.Builder buildNoDataRegionAction(final byte[] regionName,
388 final RowMutations rowMutations, final List<CellScannable> cells,
389 final RegionAction.Builder regionActionBuilder,
390 final ClientProtos.Action.Builder actionBuilder,
391 final MutationProto.Builder mutationBuilder)
392 throws IOException {
393 for (Mutation mutation: rowMutations.getMutations()) {
394 MutationType type = null;
395 if (mutation instanceof Put) {
396 type = MutationType.PUT;
397 } else if (mutation instanceof Delete) {
398 type = MutationType.DELETE;
399 } else {
400 throw new DoNotRetryIOException("RowMutations supports only put and delete, not " +
401 mutation.getClass().getName());
402 }
403 mutationBuilder.clear();
404 MutationProto mp = ProtobufUtil.toMutationNoData(type, mutation, mutationBuilder);
405 cells.add(mutation);
406 actionBuilder.clear();
407 regionActionBuilder.addAction(actionBuilder.setMutation(mp).build());
408 }
409 return regionActionBuilder;
410 }
411
412 private static RegionAction.Builder getRegionActionBuilderWithRegion(
413 final RegionAction.Builder regionActionBuilder, final byte [] regionName) {
414 RegionSpecifier region = buildRegionSpecifier(RegionSpecifierType.REGION_NAME, regionName);
415 regionActionBuilder.setRegion(region);
416 return regionActionBuilder;
417 }
418
419
420
421
422
423
424
425
426
427
428
429 public static ScanRequest buildScanRequest(final byte[] regionName,
430 final Scan scan, final int numberOfRows,
431 final boolean closeScanner) throws IOException {
432 ScanRequest.Builder builder = ScanRequest.newBuilder();
433 RegionSpecifier region = buildRegionSpecifier(
434 RegionSpecifierType.REGION_NAME, regionName);
435 builder.setNumberOfRows(numberOfRows);
436 builder.setCloseScanner(closeScanner);
437 builder.setRegion(region);
438 builder.setScan(ProtobufUtil.toScan(scan));
439 return builder.build();
440 }
441
442
443
444
445
446
447
448
449
450 public static ScanRequest buildScanRequest(final long scannerId,
451 final int numberOfRows, final boolean closeScanner) {
452 ScanRequest.Builder builder = ScanRequest.newBuilder();
453 builder.setNumberOfRows(numberOfRows);
454 builder.setCloseScanner(closeScanner);
455 builder.setScannerId(scannerId);
456 return builder.build();
457 }
458
459
460
461
462
463
464
465
466
467
468 public static ScanRequest buildScanRequest(final long scannerId, final int numberOfRows,
469 final boolean closeScanner, final long nextCallSeq) {
470 ScanRequest.Builder builder = ScanRequest.newBuilder();
471 builder.setNumberOfRows(numberOfRows);
472 builder.setCloseScanner(closeScanner);
473 builder.setScannerId(scannerId);
474 builder.setNextCallSeq(nextCallSeq);
475 return builder.build();
476 }
477
478
479
480
481
482
483
484
485
486 public static BulkLoadHFileRequest buildBulkLoadHFileRequest(
487 final List<Pair<byte[], String>> familyPaths,
488 final byte[] regionName, boolean assignSeqNum) {
489 BulkLoadHFileRequest.Builder builder = BulkLoadHFileRequest.newBuilder();
490 RegionSpecifier region = buildRegionSpecifier(
491 RegionSpecifierType.REGION_NAME, regionName);
492 builder.setRegion(region);
493 FamilyPath.Builder familyPathBuilder = FamilyPath.newBuilder();
494 for (Pair<byte[], String> familyPath: familyPaths) {
495 familyPathBuilder.setFamily(HBaseZeroCopyByteString.wrap(familyPath.getFirst()));
496 familyPathBuilder.setPath(familyPath.getSecond());
497 builder.addFamilyPath(familyPathBuilder.build());
498 }
499 builder.setAssignSeqNum(assignSeqNum);
500 return builder.build();
501 }
502
503
504
505
506
507
508
509
510
511
512 public static <R> RegionAction.Builder buildRegionAction(final byte[] regionName,
513 final List<Action<R>> actions, final RegionAction.Builder regionActionBuilder,
514 final ClientProtos.Action.Builder actionBuilder,
515 final MutationProto.Builder mutationBuilder) throws IOException {
516 for (Action<R> action: actions) {
517 Row row = action.getAction();
518 actionBuilder.clear();
519 actionBuilder.setIndex(action.getOriginalIndex());
520 mutationBuilder.clear();
521 if (row instanceof Get) {
522 Get g = (Get)row;
523 regionActionBuilder.addAction(actionBuilder.setGet(ProtobufUtil.toGet(g)));
524 } else if (row instanceof Put) {
525 regionActionBuilder.addAction(actionBuilder.
526 setMutation(ProtobufUtil.toMutation(MutationType.PUT, (Put)row, mutationBuilder)));
527 } else if (row instanceof Delete) {
528 regionActionBuilder.addAction(actionBuilder.
529 setMutation(ProtobufUtil.toMutation(MutationType.DELETE, (Delete)row, mutationBuilder)));
530 } else if (row instanceof Append) {
531 regionActionBuilder.addAction(actionBuilder.setMutation(ProtobufUtil.toMutation(
532 MutationType.APPEND, (Append)row, mutationBuilder, action.getNonce())));
533 } else if (row instanceof Increment) {
534 regionActionBuilder.addAction(actionBuilder.setMutation(
535 ProtobufUtil.toMutation((Increment)row, mutationBuilder, action.getNonce())));
536 } else if (row instanceof RowMutations) {
537 throw new UnsupportedOperationException("No RowMutations in multi calls; use mutateRow");
538 } else {
539 throw new DoNotRetryIOException("Multi doesn't support " + row.getClass().getName());
540 }
541 }
542 return regionActionBuilder;
543 }
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561 public static <R> RegionAction.Builder buildNoDataRegionAction(final byte[] regionName,
562 final List<Action<R>> actions, final List<CellScannable> cells,
563 final RegionAction.Builder regionActionBuilder,
564 final ClientProtos.Action.Builder actionBuilder,
565 final MutationProto.Builder mutationBuilder) throws IOException {
566 RegionAction.Builder builder = getRegionActionBuilderWithRegion(
567 RegionAction.newBuilder(), regionName);
568 for (Action<R> action: actions) {
569 Row row = action.getAction();
570 actionBuilder.clear();
571 actionBuilder.setIndex(action.getOriginalIndex());
572 mutationBuilder.clear();
573 if (row instanceof Get) {
574 Get g = (Get)row;
575 builder.addAction(actionBuilder.setGet(ProtobufUtil.toGet(g)));
576 } else if (row instanceof Put) {
577 Put p = (Put)row;
578 cells.add(p);
579 builder.addAction(actionBuilder.
580 setMutation(ProtobufUtil.toMutationNoData(MutationType.PUT, p, mutationBuilder)));
581 } else if (row instanceof Delete) {
582 Delete d = (Delete)row;
583 int size = d.size();
584
585
586
587
588
589 if (size > 0) {
590 cells.add(d);
591 builder.addAction(actionBuilder.
592 setMutation(ProtobufUtil.toMutationNoData(MutationType.DELETE, d, mutationBuilder)));
593 } else {
594 builder.addAction(actionBuilder.
595 setMutation(ProtobufUtil.toMutation(MutationType.DELETE, d, mutationBuilder)));
596 }
597 } else if (row instanceof Append) {
598 Append a = (Append)row;
599 cells.add(a);
600 builder.addAction(actionBuilder.setMutation(ProtobufUtil.toMutationNoData(
601 MutationType.APPEND, a, mutationBuilder, action.getNonce())));
602 } else if (row instanceof Increment) {
603 Increment i = (Increment)row;
604 cells.add(i);
605 builder.addAction(actionBuilder.setMutation(ProtobufUtil.toMutationNoData(
606 MutationType.INCREMENT, i, mutationBuilder, action.getNonce())));
607 } else if (row instanceof RowMutations) {
608 continue;
609 } else {
610 throw new DoNotRetryIOException("Multi doesn't support " + row.getClass().getName());
611 }
612 }
613 return builder;
614 }
615
616
617
618
619
620
621
622
623
624
625 public static GetRegionInfoRequest
626 buildGetRegionInfoRequest(final byte[] regionName) {
627 return buildGetRegionInfoRequest(regionName, false);
628 }
629
630
631
632
633
634
635
636
637 public static GetRegionInfoRequest
638 buildGetRegionInfoRequest(final byte[] regionName,
639 final boolean includeCompactionState) {
640 GetRegionInfoRequest.Builder builder = GetRegionInfoRequest.newBuilder();
641 RegionSpecifier region = buildRegionSpecifier(
642 RegionSpecifierType.REGION_NAME, regionName);
643 builder.setRegion(region);
644 if (includeCompactionState) {
645 builder.setCompactionState(includeCompactionState);
646 }
647 return builder.build();
648 }
649
650
651
652
653
654
655
656
657 public static GetStoreFileRequest
658 buildGetStoreFileRequest(final byte[] regionName, final byte[] family) {
659 GetStoreFileRequest.Builder builder = GetStoreFileRequest.newBuilder();
660 RegionSpecifier region = buildRegionSpecifier(
661 RegionSpecifierType.REGION_NAME, regionName);
662 builder.setRegion(region);
663 builder.addFamily(HBaseZeroCopyByteString.wrap(family));
664 return builder.build();
665 }
666
667
668
669
670
671
672 public static GetOnlineRegionRequest buildGetOnlineRegionRequest() {
673 return GetOnlineRegionRequest.newBuilder().build();
674 }
675
676
677
678
679
680
681
682 public static FlushRegionRequest
683 buildFlushRegionRequest(final byte[] regionName) {
684 FlushRegionRequest.Builder builder = FlushRegionRequest.newBuilder();
685 RegionSpecifier region = buildRegionSpecifier(
686 RegionSpecifierType.REGION_NAME, regionName);
687 builder.setRegion(region);
688 return builder.build();
689 }
690
691
692
693
694
695
696
697 public static OpenRegionRequest
698 buildOpenRegionRequest(final List<Triple<HRegionInfo, Integer,
699 List<ServerName>>> regionOpenInfos) {
700 OpenRegionRequest.Builder builder = OpenRegionRequest.newBuilder();
701 for (Triple<HRegionInfo, Integer, List<ServerName>> regionOpenInfo: regionOpenInfos) {
702 Integer second = regionOpenInfo.getSecond();
703 int versionOfOfflineNode = second == null ? -1 : second.intValue();
704 builder.addOpenInfo(buildRegionOpenInfo(
705 regionOpenInfo.getFirst(), versionOfOfflineNode, regionOpenInfo.getThird()));
706 }
707 return builder.build();
708 }
709
710
711
712
713
714
715
716
717
718 public static OpenRegionRequest buildOpenRegionRequest(
719 final HRegionInfo region, final int versionOfOfflineNode, List<ServerName> favoredNodes) {
720 OpenRegionRequest.Builder builder = OpenRegionRequest.newBuilder();
721 builder.addOpenInfo(buildRegionOpenInfo(region, versionOfOfflineNode, favoredNodes));
722 return builder.build();
723 }
724
725
726
727
728
729
730 public static UpdateFavoredNodesRequest buildUpdateFavoredNodesRequest(
731 final List<Pair<HRegionInfo, List<ServerName>>> updateRegionInfos) {
732 UpdateFavoredNodesRequest.Builder ubuilder = UpdateFavoredNodesRequest.newBuilder();
733 for (Pair<HRegionInfo, List<ServerName>> pair : updateRegionInfos) {
734 RegionUpdateInfo.Builder builder = RegionUpdateInfo.newBuilder();
735 builder.setRegion(HRegionInfo.convert(pair.getFirst()));
736 for (ServerName server : pair.getSecond()) {
737 builder.addFavoredNodes(ProtobufUtil.toServerName(server));
738 }
739 ubuilder.addUpdateInfo(builder.build());
740 }
741 return ubuilder.build();
742 }
743
744
745
746
747
748
749
750
751 public static CloseRegionRequest buildCloseRegionRequest(
752 final byte[] regionName, final boolean transitionInZK) {
753 CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
754 RegionSpecifier region = buildRegionSpecifier(
755 RegionSpecifierType.REGION_NAME, regionName);
756 builder.setRegion(region);
757 builder.setTransitionInZK(transitionInZK);
758 return builder.build();
759 }
760
761 public static CloseRegionRequest buildCloseRegionRequest(
762 final byte[] regionName, final int versionOfClosingNode,
763 ServerName destinationServer, final boolean transitionInZK) {
764 CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
765 RegionSpecifier region = buildRegionSpecifier(
766 RegionSpecifierType.REGION_NAME, regionName);
767 builder.setRegion(region);
768 builder.setVersionOfClosingNode(versionOfClosingNode);
769 builder.setTransitionInZK(transitionInZK);
770 if (destinationServer != null){
771 builder.setDestinationServer(ProtobufUtil.toServerName( destinationServer) );
772 }
773 return builder.build();
774 }
775
776
777
778
779
780
781
782
783 public static CloseRegionRequest
784 buildCloseRegionRequest(final String encodedRegionName,
785 final boolean transitionInZK) {
786 CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
787 RegionSpecifier region = buildRegionSpecifier(
788 RegionSpecifierType.ENCODED_REGION_NAME,
789 Bytes.toBytes(encodedRegionName));
790 builder.setRegion(region);
791 builder.setTransitionInZK(transitionInZK);
792 return builder.build();
793 }
794
795
796
797
798
799
800
801
802 public static SplitRegionRequest buildSplitRegionRequest(
803 final byte[] regionName, final byte[] splitPoint) {
804 SplitRegionRequest.Builder builder = SplitRegionRequest.newBuilder();
805 RegionSpecifier region = buildRegionSpecifier(
806 RegionSpecifierType.REGION_NAME, regionName);
807 builder.setRegion(region);
808 if (splitPoint != null) {
809 builder.setSplitPoint(HBaseZeroCopyByteString.wrap(splitPoint));
810 }
811 return builder.build();
812 }
813
814
815
816
817
818
819
820
821 public static MergeRegionsRequest buildMergeRegionsRequest(
822 final byte[] regionA, final byte[] regionB, final boolean forcible) {
823 MergeRegionsRequest.Builder builder = MergeRegionsRequest.newBuilder();
824 RegionSpecifier regionASpecifier = buildRegionSpecifier(
825 RegionSpecifierType.REGION_NAME, regionA);
826 RegionSpecifier regionBSpecifier = buildRegionSpecifier(
827 RegionSpecifierType.REGION_NAME, regionB);
828 builder.setRegionA(regionASpecifier);
829 builder.setRegionB(regionBSpecifier);
830 builder.setForcible(forcible);
831 return builder.build();
832 }
833
834
835
836
837
838
839
840
841 public static CompactRegionRequest buildCompactRegionRequest(
842 final byte[] regionName, final boolean major, final byte [] family) {
843 CompactRegionRequest.Builder builder = CompactRegionRequest.newBuilder();
844 RegionSpecifier region = buildRegionSpecifier(
845 RegionSpecifierType.REGION_NAME, regionName);
846 builder.setRegion(region);
847 builder.setMajor(major);
848 if (family != null) {
849 builder.setFamily(HBaseZeroCopyByteString.wrap(family));
850 }
851 return builder.build();
852 }
853
854
855
856
857 private static RollWALWriterRequest ROLL_WAL_WRITER_REQUEST =
858 RollWALWriterRequest.newBuilder().build();
859
860
861
862
863
864
865 public static RollWALWriterRequest buildRollWALWriterRequest() {
866 return ROLL_WAL_WRITER_REQUEST;
867 }
868
869
870
871
872 private static GetServerInfoRequest GET_SERVER_INFO_REQUEST =
873 GetServerInfoRequest.newBuilder().build();
874
875
876
877
878
879
880 public static GetServerInfoRequest buildGetServerInfoRequest() {
881 return GET_SERVER_INFO_REQUEST;
882 }
883
884
885
886
887
888
889
890 public static StopServerRequest buildStopServerRequest(final String reason) {
891 StopServerRequest.Builder builder = StopServerRequest.newBuilder();
892 builder.setReason(reason);
893 return builder.build();
894 }
895
896
897
898
899
900
901
902
903
904
905 public static RegionSpecifier buildRegionSpecifier(
906 final RegionSpecifierType type, final byte[] value) {
907 RegionSpecifier.Builder regionBuilder = RegionSpecifier.newBuilder();
908 regionBuilder.setValue(HBaseZeroCopyByteString.wrap(value));
909 regionBuilder.setType(type);
910 return regionBuilder.build();
911 }
912
913
914
915
916
917
918
919
920
921
922
923
924 private static Condition buildCondition(final byte[] row,
925 final byte[] family, final byte [] qualifier,
926 final ByteArrayComparable comparator,
927 final CompareType compareType) throws IOException {
928 Condition.Builder builder = Condition.newBuilder();
929 builder.setRow(HBaseZeroCopyByteString.wrap(row));
930 builder.setFamily(HBaseZeroCopyByteString.wrap(family));
931 builder.setQualifier(HBaseZeroCopyByteString.wrap(qualifier));
932 builder.setComparator(ProtobufUtil.toComparator(comparator));
933 builder.setCompareType(compareType);
934 return builder.build();
935 }
936
937
938
939
940
941
942
943
944 public static AddColumnRequest buildAddColumnRequest(
945 final TableName tableName, final HColumnDescriptor column) {
946 AddColumnRequest.Builder builder = AddColumnRequest.newBuilder();
947 builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
948 builder.setColumnFamilies(column.convert());
949 return builder.build();
950 }
951
952
953
954
955
956
957
958
959 public static DeleteColumnRequest buildDeleteColumnRequest(
960 final TableName tableName, final byte [] columnName) {
961 DeleteColumnRequest.Builder builder = DeleteColumnRequest.newBuilder();
962 builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
963 builder.setColumnName(HBaseZeroCopyByteString.wrap(columnName));
964 return builder.build();
965 }
966
967
968
969
970
971
972
973
974 public static ModifyColumnRequest buildModifyColumnRequest(
975 final TableName tableName, final HColumnDescriptor column) {
976 ModifyColumnRequest.Builder builder = ModifyColumnRequest.newBuilder();
977 builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
978 builder.setColumnFamilies(column.convert());
979 return builder.build();
980 }
981
982
983
984
985
986
987
988
989
990 public static MoveRegionRequest buildMoveRegionRequest(
991 final byte [] encodedRegionName, final byte [] destServerName) throws
992 DeserializationException {
993 MoveRegionRequest.Builder builder = MoveRegionRequest.newBuilder();
994 builder.setRegion(
995 buildRegionSpecifier(RegionSpecifierType.ENCODED_REGION_NAME,encodedRegionName));
996 if (destServerName != null) {
997 builder.setDestServerName(
998 ProtobufUtil.toServerName(ServerName.valueOf(Bytes.toString(destServerName))));
999 }
1000 return builder.build();
1001 }
1002
1003 public static DispatchMergingRegionsRequest buildDispatchMergingRegionsRequest(
1004 final byte[] encodedNameOfRegionA, final byte[] encodedNameOfRegionB,
1005 final boolean forcible) throws DeserializationException {
1006 DispatchMergingRegionsRequest.Builder builder = DispatchMergingRegionsRequest.newBuilder();
1007 builder.setRegionA(buildRegionSpecifier(
1008 RegionSpecifierType.ENCODED_REGION_NAME, encodedNameOfRegionA));
1009 builder.setRegionB(buildRegionSpecifier(
1010 RegionSpecifierType.ENCODED_REGION_NAME, encodedNameOfRegionB));
1011 builder.setForcible(forcible);
1012 return builder.build();
1013 }
1014
1015
1016
1017
1018
1019
1020
1021 public static AssignRegionRequest buildAssignRegionRequest(final byte [] regionName) {
1022 AssignRegionRequest.Builder builder = AssignRegionRequest.newBuilder();
1023 builder.setRegion(buildRegionSpecifier(RegionSpecifierType.REGION_NAME,regionName));
1024 return builder.build();
1025 }
1026
1027
1028
1029
1030
1031
1032
1033
1034 public static UnassignRegionRequest buildUnassignRegionRequest(
1035 final byte [] regionName, final boolean force) {
1036 UnassignRegionRequest.Builder builder = UnassignRegionRequest.newBuilder();
1037 builder.setRegion(buildRegionSpecifier(RegionSpecifierType.REGION_NAME,regionName));
1038 builder.setForce(force);
1039 return builder.build();
1040 }
1041
1042
1043
1044
1045
1046
1047
1048 public static OfflineRegionRequest buildOfflineRegionRequest(final byte [] regionName) {
1049 OfflineRegionRequest.Builder builder = OfflineRegionRequest.newBuilder();
1050 builder.setRegion(buildRegionSpecifier(RegionSpecifierType.REGION_NAME,regionName));
1051 return builder.build();
1052 }
1053
1054
1055
1056
1057
1058
1059
1060 public static DeleteTableRequest buildDeleteTableRequest(final TableName tableName) {
1061 DeleteTableRequest.Builder builder = DeleteTableRequest.newBuilder();
1062 builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
1063 return builder.build();
1064 }
1065
1066
1067
1068
1069
1070
1071
1072 public static EnableTableRequest buildEnableTableRequest(final TableName tableName) {
1073 EnableTableRequest.Builder builder = EnableTableRequest.newBuilder();
1074 builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
1075 return builder.build();
1076 }
1077
1078
1079
1080
1081
1082
1083
1084 public static DisableTableRequest buildDisableTableRequest(final TableName tableName) {
1085 DisableTableRequest.Builder builder = DisableTableRequest.newBuilder();
1086 builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
1087 return builder.build();
1088 }
1089
1090
1091
1092
1093
1094
1095
1096
1097 public static CreateTableRequest buildCreateTableRequest(
1098 final HTableDescriptor hTableDesc, final byte [][] splitKeys) {
1099 CreateTableRequest.Builder builder = CreateTableRequest.newBuilder();
1100 builder.setTableSchema(hTableDesc.convert());
1101 if (splitKeys != null) {
1102 for (byte [] splitKey : splitKeys) {
1103 builder.addSplitKeys(HBaseZeroCopyByteString.wrap(splitKey));
1104 }
1105 }
1106 return builder.build();
1107 }
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117 public static ModifyTableRequest buildModifyTableRequest(
1118 final TableName tableName, final HTableDescriptor hTableDesc) {
1119 ModifyTableRequest.Builder builder = ModifyTableRequest.newBuilder();
1120 builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
1121 builder.setTableSchema(hTableDesc.convert());
1122 return builder.build();
1123 }
1124
1125
1126
1127
1128
1129
1130
1131 public static GetSchemaAlterStatusRequest buildGetSchemaAlterStatusRequest(
1132 final TableName tableName) {
1133 GetSchemaAlterStatusRequest.Builder builder = GetSchemaAlterStatusRequest.newBuilder();
1134 builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
1135 return builder.build();
1136 }
1137
1138
1139
1140
1141
1142
1143
1144 public static GetTableDescriptorsRequest buildGetTableDescriptorsRequest(
1145 final List<TableName> tableNames) {
1146 GetTableDescriptorsRequest.Builder builder = GetTableDescriptorsRequest.newBuilder();
1147 if (tableNames != null) {
1148 for (TableName tableName : tableNames) {
1149 builder.addTableNames(ProtobufUtil.toProtoTableName(tableName));
1150 }
1151 }
1152 return builder.build();
1153 }
1154
1155
1156
1157
1158
1159
1160
1161 public static GetTableDescriptorsRequest buildGetTableDescriptorsRequest(
1162 final TableName tableName) {
1163 return GetTableDescriptorsRequest.newBuilder()
1164 .addTableNames(ProtobufUtil.toProtoTableName(tableName))
1165 .build();
1166 }
1167
1168
1169
1170
1171
1172
1173 public static IsMasterRunningRequest buildIsMasterRunningRequest() {
1174 return IsMasterRunningRequest.newBuilder().build();
1175 }
1176
1177
1178
1179
1180
1181
1182 public static BalanceRequest buildBalanceRequest() {
1183 return BalanceRequest.newBuilder().build();
1184 }
1185
1186
1187
1188
1189
1190
1191
1192
1193 public static SetBalancerRunningRequest buildSetBalancerRunningRequest(boolean on, boolean synchronous) {
1194 return SetBalancerRunningRequest.newBuilder().setOn(on).setSynchronous(synchronous).build();
1195 }
1196
1197
1198
1199
1200 private static final GetClusterStatusRequest GET_CLUSTER_STATUS_REQUEST =
1201 GetClusterStatusRequest.newBuilder().build();
1202
1203
1204
1205
1206
1207
1208 public static GetClusterStatusRequest buildGetClusterStatusRequest() {
1209 return GET_CLUSTER_STATUS_REQUEST;
1210 }
1211
1212
1213
1214
1215 private static final RunCatalogScanRequest CATALOG_SCAN_REQUEST =
1216 RunCatalogScanRequest.newBuilder().build();
1217
1218
1219
1220
1221
1222 public static RunCatalogScanRequest buildCatalogScanRequest() {
1223 return CATALOG_SCAN_REQUEST;
1224 }
1225
1226
1227
1228
1229
1230 public static EnableCatalogJanitorRequest buildEnableCatalogJanitorRequest(boolean enable) {
1231 return EnableCatalogJanitorRequest.newBuilder().setEnable(enable).build();
1232 }
1233
1234
1235
1236
1237 private static final IsCatalogJanitorEnabledRequest IS_CATALOG_JANITOR_ENABLED_REQUEST =
1238 IsCatalogJanitorEnabledRequest.newBuilder().build();
1239
1240
1241
1242
1243
1244 public static IsCatalogJanitorEnabledRequest buildIsCatalogJanitorEnabledRequest() {
1245 return IS_CATALOG_JANITOR_ENABLED_REQUEST;
1246 }
1247
1248
1249
1250
1251
1252
1253 public static GetLastFlushedSequenceIdRequest buildGetLastFlushedSequenceIdRequest(
1254 byte[] regionName) {
1255 return GetLastFlushedSequenceIdRequest.newBuilder().setRegionName(
1256 HBaseZeroCopyByteString.wrap(regionName)).build();
1257 }
1258
1259
1260
1261
1262
1263
1264
1265
1266 public static AccessControlProtos.GrantRequest buildGrantRequest(
1267 String username, AccessControlProtos.Permission.Action... actions) {
1268 AccessControlProtos.Permission.Builder ret =
1269 AccessControlProtos.Permission.newBuilder();
1270 AccessControlProtos.GlobalPermission.Builder permissionBuilder =
1271 AccessControlProtos.GlobalPermission.newBuilder();
1272 for (AccessControlProtos.Permission.Action a : actions) {
1273 permissionBuilder.addAction(a);
1274 }
1275 ret.setType(AccessControlProtos.Permission.Type.Global)
1276 .setGlobalPermission(permissionBuilder);
1277 return AccessControlProtos.GrantRequest.newBuilder()
1278 .setUserPermission(
1279 AccessControlProtos.UserPermission.newBuilder()
1280 .setUser(ByteString.copyFromUtf8(username))
1281 .setPermission(ret)
1282 ).build();
1283 }
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295 public static AccessControlProtos.GrantRequest buildGrantRequest(
1296 String username, TableName tableName, byte[] family, byte[] qualifier,
1297 AccessControlProtos.Permission.Action... actions) {
1298 AccessControlProtos.Permission.Builder ret =
1299 AccessControlProtos.Permission.newBuilder();
1300 AccessControlProtos.TablePermission.Builder permissionBuilder =
1301 AccessControlProtos.TablePermission.newBuilder();
1302 for (AccessControlProtos.Permission.Action a : actions) {
1303 permissionBuilder.addAction(a);
1304 }
1305 if (tableName == null) {
1306 throw new NullPointerException("TableName cannot be null");
1307 }
1308 permissionBuilder.setTableName(ProtobufUtil.toProtoTableName(tableName));
1309
1310 if (family != null) {
1311 permissionBuilder.setFamily(HBaseZeroCopyByteString.wrap(family));
1312 }
1313 if (qualifier != null) {
1314 permissionBuilder.setQualifier(HBaseZeroCopyByteString.wrap(qualifier));
1315 }
1316 ret.setType(AccessControlProtos.Permission.Type.Table)
1317 .setTablePermission(permissionBuilder);
1318 return AccessControlProtos.GrantRequest.newBuilder()
1319 .setUserPermission(
1320 AccessControlProtos.UserPermission.newBuilder()
1321 .setUser(ByteString.copyFromUtf8(username))
1322 .setPermission(ret)
1323 ).build();
1324 }
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334 public static AccessControlProtos.GrantRequest buildGrantRequest(
1335 String username, String namespace,
1336 AccessControlProtos.Permission.Action... actions) {
1337 AccessControlProtos.Permission.Builder ret =
1338 AccessControlProtos.Permission.newBuilder();
1339 AccessControlProtos.NamespacePermission.Builder permissionBuilder =
1340 AccessControlProtos.NamespacePermission.newBuilder();
1341 for (AccessControlProtos.Permission.Action a : actions) {
1342 permissionBuilder.addAction(a);
1343 }
1344 if (namespace != null) {
1345 permissionBuilder.setNamespaceName(ByteString.copyFromUtf8(namespace));
1346 }
1347 ret.setType(AccessControlProtos.Permission.Type.Namespace)
1348 .setNamespacePermission(permissionBuilder);
1349 return AccessControlProtos.GrantRequest.newBuilder()
1350 .setUserPermission(
1351 AccessControlProtos.UserPermission.newBuilder()
1352 .setUser(ByteString.copyFromUtf8(username))
1353 .setPermission(ret)
1354 ).build();
1355 }
1356
1357
1358
1359
1360
1361
1362
1363
1364 public static AccessControlProtos.RevokeRequest buildRevokeRequest(
1365 String username, AccessControlProtos.Permission.Action... actions) {
1366 AccessControlProtos.Permission.Builder ret =
1367 AccessControlProtos.Permission.newBuilder();
1368 AccessControlProtos.GlobalPermission.Builder permissionBuilder =
1369 AccessControlProtos.GlobalPermission.newBuilder();
1370 for (AccessControlProtos.Permission.Action a : actions) {
1371 permissionBuilder.addAction(a);
1372 }
1373 ret.setType(AccessControlProtos.Permission.Type.Global)
1374 .setGlobalPermission(permissionBuilder);
1375 return AccessControlProtos.RevokeRequest.newBuilder()
1376 .setUserPermission(
1377 AccessControlProtos.UserPermission.newBuilder()
1378 .setUser(ByteString.copyFromUtf8(username))
1379 .setPermission(ret)
1380 ).build();
1381 }
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393 public static AccessControlProtos.RevokeRequest buildRevokeRequest(
1394 String username, TableName tableName, byte[] family, byte[] qualifier,
1395 AccessControlProtos.Permission.Action... actions) {
1396 AccessControlProtos.Permission.Builder ret =
1397 AccessControlProtos.Permission.newBuilder();
1398 AccessControlProtos.TablePermission.Builder permissionBuilder =
1399 AccessControlProtos.TablePermission.newBuilder();
1400 for (AccessControlProtos.Permission.Action a : actions) {
1401 permissionBuilder.addAction(a);
1402 }
1403 if (tableName != null) {
1404 permissionBuilder.setTableName(ProtobufUtil.toProtoTableName(tableName));
1405 }
1406 if (family != null) {
1407 permissionBuilder.setFamily(HBaseZeroCopyByteString.wrap(family));
1408 }
1409 if (qualifier != null) {
1410 permissionBuilder.setQualifier(HBaseZeroCopyByteString.wrap(qualifier));
1411 }
1412 ret.setType(AccessControlProtos.Permission.Type.Table)
1413 .setTablePermission(permissionBuilder);
1414 return AccessControlProtos.RevokeRequest.newBuilder()
1415 .setUserPermission(
1416 AccessControlProtos.UserPermission.newBuilder()
1417 .setUser(ByteString.copyFromUtf8(username))
1418 .setPermission(ret)
1419 ).build();
1420 }
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430 public static AccessControlProtos.RevokeRequest buildRevokeRequest(
1431 String username, String namespace,
1432 AccessControlProtos.Permission.Action... actions) {
1433 AccessControlProtos.Permission.Builder ret =
1434 AccessControlProtos.Permission.newBuilder();
1435 AccessControlProtos.NamespacePermission.Builder permissionBuilder =
1436 AccessControlProtos.NamespacePermission.newBuilder();
1437 for (AccessControlProtos.Permission.Action a : actions) {
1438 permissionBuilder.addAction(a);
1439 }
1440 if (namespace != null) {
1441 permissionBuilder.setNamespaceName(ByteString.copyFromUtf8(namespace));
1442 }
1443 ret.setType(AccessControlProtos.Permission.Type.Namespace)
1444 .setNamespacePermission(permissionBuilder);
1445 return AccessControlProtos.RevokeRequest.newBuilder()
1446 .setUserPermission(
1447 AccessControlProtos.UserPermission.newBuilder()
1448 .setUser(ByteString.copyFromUtf8(username))
1449 .setPermission(ret)
1450 ).build();
1451 }
1452
1453
1454
1455
1456 private static RegionOpenInfo buildRegionOpenInfo(
1457 final HRegionInfo region, final int versionOfOfflineNode,
1458 final List<ServerName> favoredNodes) {
1459 RegionOpenInfo.Builder builder = RegionOpenInfo.newBuilder();
1460 builder.setRegion(HRegionInfo.convert(region));
1461 if (versionOfOfflineNode >= 0) {
1462 builder.setVersionOfOfflineNode(versionOfOfflineNode);
1463 }
1464 if (favoredNodes != null) {
1465 for (ServerName server : favoredNodes) {
1466 builder.addFavoredNodes(ProtobufUtil.toServerName(server));
1467 }
1468 }
1469 return builder.build();
1470 }
1471 }