Loading escheduler-api/src/main/java/cn/escheduler/api/controller/ResourcesController.java +2 −2 Original line number Diff line number Diff line Loading @@ -195,9 +195,9 @@ public class ResourcesController extends BaseController{ ) { try { logger.info("login user {}, verfiy resource alias: {},resource type: {}", loginUser.getUserName(), alias); loginUser.getUserName(), alias,type); return resourceService.verifyResourceName(alias, type); return resourceService.verifyResourceName(alias,type,loginUser); } catch (Exception e) { logger.error(VERIFY_RESOURCE_BY_NAME_AND_TYPE_ERROR.getMsg(), e); return error(Status.VERIFY_RESOURCE_BY_NAME_AND_TYPE_ERROR.getCode(), Status.VERIFY_RESOURCE_BY_NAME_AND_TYPE_ERROR.getMsg()); Loading escheduler-api/src/main/java/cn/escheduler/api/enums/Status.java +1 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ public enum Status { RESOURCE_SUFFIX_FORBID_CHANGE(20008, "resource suffix not allowed to be modified"), UDF_RESOURCE_SUFFIX_NOT_JAR(20009, "UDF resource suffix name must be jar"), HDFS_COPY_FAIL(20009, "hdfs copy {0} -> {1} fail"), RESOURCE_FILE_EXIST(20010, "resource file {0} already exists in hdfs,please delete it or change name!"), Loading escheduler-api/src/main/java/cn/escheduler/api/service/ResourcesService.java +52 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,41 @@ public class ResourcesService extends BaseService { return result; } /** * verify resource by name and type * @param name * @param type * @param loginUser * @return */ public Result verifyResourceName(String name, ResourceType type,User loginUser) { Result result = new Result(); putMsg(result, Status.SUCCESS); Resource resource = resourcesMapper.queryResourceByNameAndType(name, type.ordinal()); if (resource != null) { logger.error("resource type:{} name:{} has exist, can't create again.", type, name); putMsg(result, Status.RESOURCE_EXIST); } else { // query tenant String tenantCode = tenantMapper.queryById(loginUser.getTenantId()).getTenantCode(); try { String hdfsFilename = getHdfsFileName(type,tenantCode,name); if(HadoopUtils.getInstance().exists(hdfsFilename)){ logger.error("resource type:{} name:{} has exist in hdfs {}, can't create again.", type, name,hdfsFilename); putMsg(result, Status.RESOURCE_FILE_EXIST,hdfsFilename); } } catch (Exception e) { logger.error(e.getMessage(),e); putMsg(result,Status.HDFS_OPERATION_ERROR); } } return result; } /** * verify resource by name and type * Loading Loading @@ -815,6 +850,23 @@ public class ResourcesService extends BaseService { return hdfsFileName; } /** * get hdfs file name * * @param resourceType * @param tenantCode * @param hdfsFileName * @return */ private String getHdfsFileName(ResourceType resourceType, String tenantCode, String hdfsFileName) { if (resourceType.equals(ResourceType.FILE)) { hdfsFileName = HadoopUtils.getHdfsFilename(tenantCode, hdfsFileName); } else if (resourceType.equals(ResourceType.UDF)) { hdfsFileName = HadoopUtils.getHdfsUdfFilename(tenantCode, hdfsFileName); } return hdfsFileName; } /** * get authorized resource list * Loading escheduler-server/src/main/java/cn/escheduler/server/worker/task/sql/SqlTask.java +2 −16 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package cn.escheduler.server.worker.task.sql; import cn.escheduler.alert.utils.MailUtils; import cn.escheduler.api.enums.Status; import cn.escheduler.common.Constants; import cn.escheduler.common.enums.DbType; import cn.escheduler.common.enums.ShowType; Loading Loading @@ -197,7 +196,7 @@ public class SqlTask extends AbstractTask { } // special characters need to be escaped, ${} needs to be escaped String rgex = "'?\\$\\{(.*?)\\}'?"; String rgex = "['\"]*\\$\\{(.*?)\\}['\"]*"; setSqlParamsMap(sql,rgex,sqlParamsMap,paramsMap); // replace the ${} of the SQL statement with the Placeholder Loading Loading @@ -328,6 +327,7 @@ public class SqlTask extends AbstractTask { ParameterUtils.setInParameter(key,stmt,prop.getType(),prop.getValue()); } } logger.info("prepare statement replace sql:{}",stmt.toString()); return stmt; } Loading Loading @@ -417,19 +417,5 @@ public class SqlTask extends AbstractTask { logPrint.append(sqlParamsMap.get(i).getValue()+"("+sqlParamsMap.get(i).getType()+")"); } logger.info(logPrint.toString()); //direct print style Pattern pattern = Pattern.compile(rgex); Matcher m = pattern.matcher(content); int index = 1; StringBuffer sb = new StringBuffer("replaced sql , direct:"); while (m.find()) { m.appendReplacement(sb, sqlParamsMap.get(index).getValue()); index ++; } m.appendTail(sb); logger.info(sb.toString()); } } Loading
escheduler-api/src/main/java/cn/escheduler/api/controller/ResourcesController.java +2 −2 Original line number Diff line number Diff line Loading @@ -195,9 +195,9 @@ public class ResourcesController extends BaseController{ ) { try { logger.info("login user {}, verfiy resource alias: {},resource type: {}", loginUser.getUserName(), alias); loginUser.getUserName(), alias,type); return resourceService.verifyResourceName(alias, type); return resourceService.verifyResourceName(alias,type,loginUser); } catch (Exception e) { logger.error(VERIFY_RESOURCE_BY_NAME_AND_TYPE_ERROR.getMsg(), e); return error(Status.VERIFY_RESOURCE_BY_NAME_AND_TYPE_ERROR.getCode(), Status.VERIFY_RESOURCE_BY_NAME_AND_TYPE_ERROR.getMsg()); Loading
escheduler-api/src/main/java/cn/escheduler/api/enums/Status.java +1 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ public enum Status { RESOURCE_SUFFIX_FORBID_CHANGE(20008, "resource suffix not allowed to be modified"), UDF_RESOURCE_SUFFIX_NOT_JAR(20009, "UDF resource suffix name must be jar"), HDFS_COPY_FAIL(20009, "hdfs copy {0} -> {1} fail"), RESOURCE_FILE_EXIST(20010, "resource file {0} already exists in hdfs,please delete it or change name!"), Loading
escheduler-api/src/main/java/cn/escheduler/api/service/ResourcesService.java +52 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,41 @@ public class ResourcesService extends BaseService { return result; } /** * verify resource by name and type * @param name * @param type * @param loginUser * @return */ public Result verifyResourceName(String name, ResourceType type,User loginUser) { Result result = new Result(); putMsg(result, Status.SUCCESS); Resource resource = resourcesMapper.queryResourceByNameAndType(name, type.ordinal()); if (resource != null) { logger.error("resource type:{} name:{} has exist, can't create again.", type, name); putMsg(result, Status.RESOURCE_EXIST); } else { // query tenant String tenantCode = tenantMapper.queryById(loginUser.getTenantId()).getTenantCode(); try { String hdfsFilename = getHdfsFileName(type,tenantCode,name); if(HadoopUtils.getInstance().exists(hdfsFilename)){ logger.error("resource type:{} name:{} has exist in hdfs {}, can't create again.", type, name,hdfsFilename); putMsg(result, Status.RESOURCE_FILE_EXIST,hdfsFilename); } } catch (Exception e) { logger.error(e.getMessage(),e); putMsg(result,Status.HDFS_OPERATION_ERROR); } } return result; } /** * verify resource by name and type * Loading Loading @@ -815,6 +850,23 @@ public class ResourcesService extends BaseService { return hdfsFileName; } /** * get hdfs file name * * @param resourceType * @param tenantCode * @param hdfsFileName * @return */ private String getHdfsFileName(ResourceType resourceType, String tenantCode, String hdfsFileName) { if (resourceType.equals(ResourceType.FILE)) { hdfsFileName = HadoopUtils.getHdfsFilename(tenantCode, hdfsFileName); } else if (resourceType.equals(ResourceType.UDF)) { hdfsFileName = HadoopUtils.getHdfsUdfFilename(tenantCode, hdfsFileName); } return hdfsFileName; } /** * get authorized resource list * Loading
escheduler-server/src/main/java/cn/escheduler/server/worker/task/sql/SqlTask.java +2 −16 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package cn.escheduler.server.worker.task.sql; import cn.escheduler.alert.utils.MailUtils; import cn.escheduler.api.enums.Status; import cn.escheduler.common.Constants; import cn.escheduler.common.enums.DbType; import cn.escheduler.common.enums.ShowType; Loading Loading @@ -197,7 +196,7 @@ public class SqlTask extends AbstractTask { } // special characters need to be escaped, ${} needs to be escaped String rgex = "'?\\$\\{(.*?)\\}'?"; String rgex = "['\"]*\\$\\{(.*?)\\}['\"]*"; setSqlParamsMap(sql,rgex,sqlParamsMap,paramsMap); // replace the ${} of the SQL statement with the Placeholder Loading Loading @@ -328,6 +327,7 @@ public class SqlTask extends AbstractTask { ParameterUtils.setInParameter(key,stmt,prop.getType(),prop.getValue()); } } logger.info("prepare statement replace sql:{}",stmt.toString()); return stmt; } Loading Loading @@ -417,19 +417,5 @@ public class SqlTask extends AbstractTask { logPrint.append(sqlParamsMap.get(i).getValue()+"("+sqlParamsMap.get(i).getType()+")"); } logger.info(logPrint.toString()); //direct print style Pattern pattern = Pattern.compile(rgex); Matcher m = pattern.matcher(content); int index = 1; StringBuffer sb = new StringBuffer("replaced sql , direct:"); while (m.find()) { m.appendReplacement(sb, sqlParamsMap.get(index).getValue()); index ++; } m.appendTail(sb); logger.info(sb.toString()); } }