private void saveTask()

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);
    }