in linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/operator/once/OnceOperBuilder.java [35:169]
public JobOper build(CliCtx ctx) {
OnceJobDesc desc = new OnceJobDesc();
Map<String, Object> confMap = ctx.getVarAccess().getVar(Map.class, CliKeys.JOB_PARAM_CONF);
Map<String, Object> runtimeMap =
ctx.getVarAccess().getVar(Map.class, CliKeys.JOB_PARAM_RUNTIME);
Map<String, Object> varMap = ctx.getVarAccess().getVar(Map.class, CliKeys.JOB_PARAM_VAR);
Map<String, Object> labelMap = ctx.getVarAccess().getVar(Map.class, CliKeys.JOB_LABEL);
Map<String, Object> sourceMap = ctx.getVarAccess().getVar(Map.class, CliKeys.JOB_SOURCE);
Map<String, Object> executionMap = ctx.getVarAccess().getVar(Map.class, CliKeys.JOB_EXEC);
Map<String, Object> jobContentMap = ctx.getVarAccess().getVar(Map.class, CliKeys.JOB_CONTENT);
confMap = confMap == null ? new HashMap<>() : confMap;
runtimeMap = runtimeMap == null ? new HashMap<>() : runtimeMap;
varMap = varMap == null ? new HashMap<>() : varMap;
labelMap = labelMap == null ? new HashMap<>() : labelMap;
sourceMap = sourceMap == null ? new HashMap<>() : sourceMap;
executionMap = executionMap == null ? new HashMap<>() : executionMap;
jobContentMap = jobContentMap == null ? new HashMap<>() : jobContentMap;
confMap = KeyParser.removePrefixForKeysInMap(confMap);
runtimeMap = KeyParser.removePrefixForKeysInMap(runtimeMap);
labelMap = KeyParser.removePrefixForKeysInMap(labelMap);
sourceMap = KeyParser.removePrefixForKeysInMap(sourceMap);
executionMap = KeyParser.removePrefixForKeysInMap(executionMap);
jobContentMap = KeyParser.removePrefixForKeysInMap(jobContentMap);
for (String key : ctx.getVarAccess().getAllVarKeys()) {
Object val = ctx.getVarAccess().getVar(Object.class, key);
if (!(val instanceof Map) && val != null) {
// note that we allow it to overwrite existing values in map
if (StringUtils.startsWithIgnoreCase(key, CliKeys.JOB_PARAM_CONF)) {
KeyParser.removePrefixAndPutValToMap(confMap, key, val, CliKeys.JOB_PARAM_CONF);
} else if (StringUtils.startsWithIgnoreCase(key, CliKeys.JOB_PARAM_VAR)) {
KeyParser.removePrefixAndPutValToMap(varMap, key, val, CliKeys.JOB_PARAM_VAR);
} else if (StringUtils.startsWithIgnoreCase(key, CliKeys.JOB_PARAM_RUNTIME)) {
KeyParser.removePrefixAndPutValToMap(runtimeMap, key, val, CliKeys.JOB_PARAM_RUNTIME);
} else if (StringUtils.startsWithIgnoreCase(key, CliKeys.JOB_EXEC)) {
KeyParser.removePrefixAndPutValToMap(executionMap, key, val, CliKeys.JOB_EXEC);
} else if (StringUtils.startsWithIgnoreCase(key, CliKeys.JOB_LABEL)) {
KeyParser.removePrefixAndPutValToMap(labelMap, key, val, CliKeys.JOB_LABEL);
} else if (StringUtils.startsWithIgnoreCase(key, CliKeys.JOB_SOURCE)) {
KeyParser.removePrefixAndPutValToMap(sourceMap, key, val, CliKeys.JOB_SOURCE);
} else if (StringUtils.startsWithIgnoreCase(key, CliKeys.JOB_CONTENT)) {
KeyParser.removePrefixAndPutValToMap(jobContentMap, key, val, CliKeys.JOB_CONTENT);
} else if (StringUtils.startsWithIgnoreCase(key, CliKeys.LINKIS_CLIENT_COMMON)) {
// do nothing
} else {
// confMap.put(key, stdVarAccess.getVar(Object.class, key));
}
}
}
Boolean isAsync =
ctx.getVarAccess().getVarOrDefault(Boolean.class, CliKeys.LINKIS_CLIENT_ASYNC_OPT, false);
String creator;
if (!isAsync) {
creator =
ctx.getVarAccess()
.getVarOrDefault(
String.class, CliKeys.JOB_COMMON_CREATOR, CliConstants.JOB_CREATOR_DEFAULT);
} else {
creator =
ctx.getVarAccess()
.getVarOrDefault(
String.class, CliKeys.JOB_COMMON_CREATOR, CliConstants.JOB_CREATOR_ASYNC_DEFAULT);
}
String code = ctx.getVarAccess().getVar(String.class, CliKeys.JOB_EXEC_CODE);
String engineType = ctx.getVarAccess().getVar(String.class, CliKeys.JOB_LABEL_ENGINE_TYPE);
String runType = ctx.getVarAccess().getVar(String.class, CliKeys.JOB_LABEL_CODE_TYPE);
String scriptPath =
ctx.getVarAccess()
.getVarOrDefault(String.class, CliKeys.JOB_SOURCE_SCRIPT_PATH, "LinkisCli");
String osUser = System.getProperty(CliKeys.LINUX_USER_KEY);
String[] adminUsers = StringUtils.split(CliKeys.ADMIN_USERS, ',');
Set<String> adminSet = new HashSet<>();
for (String admin : adminUsers) {
adminSet.add(admin);
}
String submitUsr = CliUtils.getSubmitUser(ctx.getVarAccess(), osUser, adminSet);
String proxyUsr = CliUtils.getProxyUser(ctx.getVarAccess(), submitUsr, adminSet);
String enableExecuteOnce =
ctx.getVarAccess().getVarOrDefault(String.class, CliKeys.JOB_LABEL_EXECUTEONCE, "true");
// default executeOnce-mode
if (Boolean.parseBoolean(enableExecuteOnce)) {
labelMap.put(LinkisKeys.KEY_EXECUTEONCE, "");
} else {
labelMap.remove(LinkisKeys.KEY_EXECUTEONCE);
}
String codePath = ctx.getVarAccess().getVar(String.class, CliKeys.JOB_COMMON_CODE_PATH);
Object extraArgsObj = ctx.getVarAccess().getVar(Object.class, CliKeys.JOB_EXTRA_ARGUMENTS);
if (extraArgsObj != null
&& extraArgsObj instanceof String[]
&& StringUtils.isBlank(code)
&& StringUtils.isBlank(codePath)) {
String[] extraArgs = (String[]) extraArgsObj;
codePath = extraArgs[0];
if (extraArgs.length > 1) {
runtimeMap.put(
LinkisKeys.EXTRA_ARGUMENTS, Arrays.copyOfRange(extraArgs, 1, extraArgs.length));
}
}
if (StringUtils.isBlank(code) && StringUtils.isNotBlank(codePath)) {
code = CliUtils.readFile(codePath);
}
executionMap.put(LinkisKeys.KEY_CODE, code);
labelMap.put(LinkisKeys.KEY_ENGINETYPE, engineType);
labelMap.put(LinkisKeys.KEY_CODETYPE, runType);
labelMap.put(LinkisKeys.KEY_USER_CREATOR, proxyUsr + "-" + creator);
sourceMap.put(LinkisKeys.KEY_SCRIPT_PATH, scriptPath);
runtimeMap.put(LinkisKeys.KEY_HIVE_RESULT_DISPLAY_TBALE, true);
desc.setVarAccess(ctx.getVarAccess());
desc.setCreator(creator);
desc.setParamConfMap(confMap);
desc.setParamRunTimeMap(runtimeMap);
desc.setParamVarsMap(varMap);
desc.setLabelMap(labelMap);
desc.setSourceMap(sourceMap);
desc.setExecutionMap(executionMap);
desc.setSubmitUser(submitUsr);
desc.setProxyUser(proxyUsr);
desc.setJobContentMap(jobContentMap);
OnceJobOper onceJobOper = new OnceJobOper();
onceJobOper.init(desc);
return onceJobOper;
}