1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.master.procedure;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.apache.hadoop.hbase.classification.InterfaceAudience;
24 import org.apache.hadoop.hbase.classification.InterfaceStability;
25 import org.apache.hadoop.hbase.protobuf.generated.RPCProtos.UserInformation;
26 import org.apache.hadoop.security.UserGroupInformation;
27
28 @InterfaceAudience.Private
29 @InterfaceStability.Evolving
30 public final class MasterProcedureUtil {
31 private static final Log LOG = LogFactory.getLog(MasterProcedureUtil.class);
32
33 private MasterProcedureUtil() {}
34
35 public static UserInformation toProtoUserInfo(UserGroupInformation ugi) {
36 UserInformation.Builder userInfoPB = UserInformation.newBuilder();
37 userInfoPB.setEffectiveUser(ugi.getUserName());
38 if (ugi.getRealUser() != null) {
39 userInfoPB.setRealUser(ugi.getRealUser().getUserName());
40 }
41 return userInfoPB.build();
42 }
43
44 public static UserGroupInformation toUserInfo(UserInformation userInfoProto) {
45 if (userInfoProto.hasEffectiveUser()) {
46 String effectiveUser = userInfoProto.getEffectiveUser();
47 if (userInfoProto.hasRealUser()) {
48 String realUser = userInfoProto.getRealUser();
49 UserGroupInformation realUserUgi = UserGroupInformation.createRemoteUser(realUser);
50 return UserGroupInformation.createProxyUser(effectiveUser, realUserUgi);
51 }
52 return UserGroupInformation.createRemoteUser(effectiveUser);
53 }
54 return null;
55 }
56 }