Search in sources :

Example 6 with IKerberos

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);
}
Also used : DataSourceTypeEnum(com.dtstack.taier.common.enums.DataSourceTypeEnum) JSONObject(com.alibaba.fastjson.JSONObject) SftpException(com.jcraft.jsch.SftpException) DtCenterDefException(com.dtstack.taier.common.exception.DtCenterDefException) JSONObject(com.alibaba.fastjson.JSONObject) IKerberos(com.dtstack.dtcenter.loader.client.IKerberos)

Aggregations

JSONObject (com.alibaba.fastjson.JSONObject)6 IKerberos (com.dtstack.dtcenter.loader.client.IKerberos)6 DataSourceTypeEnum (com.dtstack.taier.common.enums.DataSourceTypeEnum)5 DtCenterDefException (com.dtstack.taier.common.exception.DtCenterDefException)4 IOException (java.io.IOException)4 PubSvcDefineException (com.dtstack.taier.common.exception.PubSvcDefineException)3 RdosDefineException (com.dtstack.taier.common.exception.RdosDefineException)3 SftpException (com.jcraft.jsch.SftpException)3 HashMap (java.util.HashMap)2 ISourceDTO (com.dtstack.dtcenter.loader.dto.source.ISourceDTO)1 DsInfo (com.dtstack.taier.dao.domain.DsInfo)1 LinkedHashMap (java.util.LinkedHashMap)1