public static HBaseMetadataService newInstance(Configuration hbaseConfig,
SecurityContext securityContext, Subject subject, Component hbaseMaster,
Collection<ComponentProcess> hbaseMasterProcesses)
throws IOException, EntityNotFoundException {
if (SecurityUtil.isKerberosAuthenticated(securityContext)) {
UserGroupInformation.setConfiguration(hbaseConfig);
final UserGroupInformation ugiFromSubject = UserGroupInformation.getUGIFromSubject(subject);
final UserGroupInformation proxyUserForImpersonation = UserGroupInformation
.createProxyUser(securityContext.getUserPrincipal().getName(), ugiFromSubject);
final User user = User.create(proxyUserForImpersonation);
return new HBaseMetadataService(ConnectionFactory.createConnection(hbaseConfig, user)
.getAdmin(), securityContext, subject, user, hbaseMaster, hbaseMasterProcesses);
} else {
return new HBaseMetadataService(ConnectionFactory.createConnection(hbaseConfig).getAdmin(),
securityContext, subject, null, hbaseMaster, hbaseMasterProcesses);
}
}