use of com.dtstack.dtcenter.loader.client.IKerberos in project Taier by DTStack.
the class KerberosService method prepareKerberosConfig.
/**
* 预处理Kerberos配置
*/
public void prepareKerberosConfig(DsInfoBO dsInfoBO) {
if (dsInfoBO.getKerberosConfig() == null) {
return;
}
try {
// 获取kerberos本地路径
String localKerberosConf = getLocalKerberosPath(dsInfoBO.getId());
downloadKerberosFromSftp(dsInfoBO.getIsMeta(), dsInfoBO.getId(), DataSourceUtils.getDataSourceJson(dsInfoBO.getDataJson()), localKerberosConf, dsInfoBO.getTenantId());
} catch (SftpException e) {
throw new DtCenterDefException(String.format("获取kerberos认证文件失败,Caused by: %s", e.getMessage()), e);
}
String localKerberosPath = getLocalKerberosPath(dsInfoBO.getId());
JSONObject dataJson = dsInfoBO.getData();
// principal 键
String principal = dataJson.getString(FormNames.PRINCIPAL);
Map<String, Object> kerberosConfig = dsInfoBO.getKerberosConfig();
if (Strings.isNotBlank(principal)) {
kerberosConfig.put(HadoopConfTool.PRINCIPAL, principal);
}
// Hbase master kerberos Principal
String hbaseMasterPrincipal = dataJson.getString(FormNames.HBASE_MASTER_PRINCIPAL);
if (Strings.isNotBlank(hbaseMasterPrincipal)) {
kerberosConfig.put(HadoopConfTool.HBASE_MASTER_PRINCIPAL, hbaseMasterPrincipal);
}
// Hbase region kerberos Principal
String hbasePrincipal = dataJson.getString(FormNames.HBASE_REGION_PRINCIPAL);
if (Strings.isNotBlank(hbasePrincipal)) {
kerberosConfig.put(HadoopConfTool.HBASE_REGION_PRINCIPAL, hbasePrincipal);
}
DataSourceTypeEnum typeEnum = DataSourceTypeEnum.typeVersionOf(dsInfoBO.getDataType(), dsInfoBO.getDataVersion());
IKerberos kerberos = ClientCache.getKerberos(typeEnum.getVal());
kerberos.prepareKerberosForConnect(kerberosConfig, localKerberosPath);
dsInfoBO.setKerberosConfig(kerberosConfig);
}
Aggregations