in src/main/java/com/aliyun/cloudops/acs/ecs/controller/OpsTaskController.java [85:128]
private void saveTask(RunCommandRequest request, RunCommandResponse response) {
CommandType commandType = CommandType.valueOf(request.getType());
RepeatMode repeatMode = RepeatMode.Once;
if (StringUtils.isNotEmpty(request.getRepeatMode())) {
repeatMode = RepeatMode.valueOf(request.getRepeatMode());
}
// 将操作记录保存到自己的数据库中 (云助手的执行记录只保存4周)
OpsTask opsTask = new OpsTask();
opsTask.setRegionId(request.getSysRegionId());
opsTask.setTaskName(request.getName());
opsTask.setCommandType(commandType);
opsTask.setCommandText(request.getCommandContent());
if (request.getParameters() != null) {
opsTask.setParameters(JSON.toJSONString(request.getParameters()));
} else {
opsTask.setParameters("{}");
}
if (request.getTimeout() != null) {
opsTask.setTimeout(request.getTimeout());
} else {
opsTask.setTimeout(60);
}
opsTask.setRepeatMode(repeatMode);
opsTask.setStatus(InvocationStatus.Pending);
opsTask.setInvokeId(response.getInvokeId());
opsTask.setInstances(request.getInstanceIds().size());
// 保存每个实例上的命令执行状态、执行结果、退出码等
List<OpsTaskItem> taskItemList = new ArrayList<>();
for (String instanceId : request.getInstanceIds()) {
OpsTaskItem opsTaskItem = new OpsTaskItem();
opsTaskItem.setRegionId(request.getSysRegionId());
opsTaskItem.setInvokeId(response.getInvokeId());
opsTaskItem.setInstanceId(instanceId);
opsTaskItem.setStatus(InvocationStatus.Pending);
opsTaskItem.setOutput("");
opsTaskItem.setErrorCode("");
opsTaskItem.setErrorInfo("");
opsTaskItem.setCreationTime(new Date());
taskItemList.add(opsTaskItem);
}
opsTask.setCreationTime(new Date());
this.taskService.saveTask(opsTask, taskItemList);
}