use of com.dtstack.taier.common.enums.DictType in project Taier by DTStack.
the class ConsoleComponentService method updateComponentKerberosFile.
/**
* 解压kerberos文件到本地 并上传至sftp
* * @param clusterId
*
* @param addComponent
* @param remoteDir
* @param resource
* @return
*/
private String updateComponentKerberosFile(Long clusterId, Component addComponent, SftpFileManage sftpFileManage, String remoteDir, Resource resource, String principals, String principal) {
File keyTabFile = null;
File krb5ConfFile = null;
String remoteDirKerberos = remoteDir + File.separator + KERBEROS;
if (resource != null) {
// kerberos认证文件 远程删除 kerberos下的文件
LOGGER.info("updateComponentKerberosFile remote path:{}", remoteDirKerberos);
// 删除本地文件夹
String kerberosPath = this.getLocalKerberosPath(clusterId, addComponent.getComponentTypeCode());
try {
FileUtils.deleteDirectory(new File(kerberosPath));
} catch (IOException e) {
LOGGER.error("delete old kerberos directory {} error", kerberosPath, e);
}
// 解压到本地
List<File> files = ZipUtil.upzipFile(resource.getUploadedFileName(), kerberosPath);
if (CollectionUtils.isEmpty(files)) {
throw new RdosDefineException("Hadoop-Kerberos file decompression error");
}
keyTabFile = files.stream().filter(f -> f.getName().endsWith(KEYTAB_SUFFIX)).findFirst().orElse(null);
krb5ConfFile = files.stream().filter(f -> f.getName().equalsIgnoreCase(KRB5_CONF)).findFirst().orElse(null);
if (keyTabFile == null) {
throw new RdosDefineException("There must be a keytab file in the zip file of the uploaded Hadoop-Kerberos file, please add the keytab file");
}
LOGGER.info("fileKeyTab Unzip fileName:{}", keyTabFile.getAbsolutePath());
if (krb5ConfFile == null) {
throw new RdosDefineException("There must be a krb5.conf file in the zip file of the uploaded Hadoop-Kerberos file, please add the krb5.conf file");
}
LOGGER.info("conf Unzip fileName:{}", krb5ConfFile.getAbsolutePath());
// 获取principal
List<PrincipalName> principalLists = this.getPrincipal(keyTabFile);
principal = parsePrincipal(principal, principalLists);
if (StringUtils.isEmpty(principals)) {
List<String> principalNames = new ArrayList<>();
for (PrincipalName principalName : principalLists) {
principalNames.add(principalName.getName());
}
principals = StringUtils.join(principalNames, ",");
}
// 删除sftp原来kerberos 的文件夹
sftpFileManage.deleteDir(remoteDirKerberos);
// 上传kerberos解压后的文件
for (File file : files) {
LOGGER.info("upload sftp file:{}", file.getAbsolutePath());
sftpFileManage.uploadFile(remoteDirKerberos, file.getPath());
}
}
String versionName = addComponent.getVersionName();
String componentVersion = "";
if (StringUtils.isNotBlank(versionName) && ComponentVersionUtil.isMultiVersionComponent(addComponent.getComponentTypeCode())) {
//
DictType dictType = null;
if (EComponentType.SPARK.getTypeCode().equals(addComponent.getComponentTypeCode())) {
dictType = DictType.SPARK_VERSION;
} else if (EComponentType.FLINK.getTypeCode().equals(addComponent.getComponentTypeCode())) {
dictType = DictType.FLINK_VERSION;
}
if (null != dictType) {
Dict dict = scheduleDictService.getByNameAndValue(dictType.getType(), versionName, null, null);
if (null != dict) {
componentVersion = dict.getDictValue();
}
}
}
// 更新数据库kerberos信息
KerberosConfig kerberosConfig = consoleKerberosMapper.getByComponentType(clusterId, addComponent.getComponentTypeCode(), componentVersion);
boolean isFirstOpenKerberos = false;
if (Objects.isNull(kerberosConfig)) {
kerberosConfig = new KerberosConfig();
kerberosConfig.setComponentVersion(componentVersion);
isFirstOpenKerberos = true;
}
kerberosConfig.setOpenKerberos(1);
kerberosConfig.setRemotePath(remoteDirKerberos);
kerberosConfig.setClusterId(clusterId);
kerberosConfig.setComponentType(addComponent.getComponentTypeCode());
if (keyTabFile != null) {
kerberosConfig.setName(keyTabFile.getName());
}
if (krb5ConfFile != null) {
kerberosConfig.setKrbName(krb5ConfFile.getName());
}
if (StringUtils.isNotEmpty(principal)) {
kerberosConfig.setPrincipal(principal);
}
if (StringUtils.isNotEmpty(principals)) {
kerberosConfig.setPrincipals(principals);
}
if (isFirstOpenKerberos) {
consoleKerberosMapper.insert(kerberosConfig);
} else {
consoleKerberosMapper.updateById(kerberosConfig);
}
return remoteDirKerberos;
}
use of com.dtstack.taier.common.enums.DictType in project Taier by DTStack.
the class ComponentModel method loadVersions.
private List<Dict> loadVersions(JSONObject valueObj, DictMapper mapper) {
String name = valueObj.getString(VERSION_DICTIONARY_KEY);
if (name == null) {
return Collections.emptyList();
}
DictType vdType = valueOf(name, DictType.class, VERSION_DICTIONARY_KEY);
return mapper.listDictByType(vdType.type);
}
Aggregations