@Override public void start(LongJobVO job, ReturnValueCompletion<APIEvent> completion) { UpdateClusterOSMsg msg = JSONObjectUtil.toObject(job.getJobData(), UpdateClusterOSMsg.class); bus.makeLocalServiceId(msg, ClusterConstant.SERVICE_ID); bus.send(msg, new CloudBusCallBack(completion) { @Override public void run(MessageReply reply) { UpdateClusterOSReply rly = reply.castReply(); if (reply.isSuccess()) { job.setJobResult(JSONObjectUtil.toJsonString(rly.getResults())); dbf.update(job); completion.success(null); } else { completion.fail(reply.getError()); } } }); }
@Override public void start(LongJobVO job, ReturnValueCompletion<APIEvent> completion) { CreateRootVolumeTemplateFromRootVolumeMsg msg = JSONObjectUtil.toObject(job.getJobData(), CreateRootVolumeTemplateFromRootVolumeMsg.class); bus.makeLocalServiceId(msg, ImageConstant.SERVICE_ID); bus.send(msg, new CloudBusCallBack(null) { @Override public void run(MessageReply reply) { if (reply.isSuccess()) { CreateRootVolumeTemplateFromRootVolumeReply r = reply.castReply(); APICreateRootVolumeTemplateFromRootVolumeEvent evt = new APICreateRootVolumeTemplateFromRootVolumeEvent(ThreadContext.get(Constants.THREAD_CONTEXT_API)); auditResourceUuid = r.getInventory().getUuid(); evt.setInventory(r.getInventory()); completion.success(evt); } else { auditResourceUuid = msg.getResourceUuid(); completion.fail(reply.getError()); } } }); }
@Override public void start(LongJobVO job, ReturnValueCompletion<APIEvent> completion) { CreateDataVolumeTemplateFromVolumeMsg msg = JSONObjectUtil.toObject(job.getJobData(), CreateDataVolumeTemplateFromVolumeMsg.class); bus.makeLocalServiceId(msg, ImageConstant.SERVICE_ID); bus.send(msg, new CloudBusCallBack(completion) { @Override public void run(MessageReply reply) { if (reply.isSuccess()) { CreateDataVolumeTemplateFromVolumeReply r = reply.castReply(); APICreateDataVolumeTemplateFromVolumeEvent evt = new APICreateDataVolumeTemplateFromVolumeEvent(ThreadContext.get(Constants.THREAD_CONTEXT_API)); auditResourceUuid = r.getInventory().getUuid(); evt.setInventory(r.getInventory()); completion.success(evt); } else { auditResourceUuid = msg.getResourceUuid(); completion.fail(reply.getError()); } } }); }
@Override public void start(LongJobVO job, ReturnValueCompletion<APIEvent> completion) { AddImageMsg msg = JSONObjectUtil.toObject(job.getJobData(), AddImageMsg.class); bus.makeLocalServiceId(msg, ImageConstant.SERVICE_ID); bus.send(msg, new CloudBusCallBack(completion) { @Override public void run(MessageReply reply) { if (reply.isSuccess()) { AddImageReply r = reply.castReply(); APIAddImageEvent evt = new APIAddImageEvent(ThreadContext.get(Constants.THREAD_CONTEXT_API)); auditResourceUuid = r.getInventory().getUuid(); evt.setInventory(r.getInventory()); completion.success(evt); } else { auditResourceUuid = msg.getResourceUuid(); completion.fail(reply.getError()); } } }); }
@Override public void start(LongJobVO job, ReturnValueCompletion<APIEvent> completion) { MigrateVmInnerMsg msg = JSONObjectUtil.toObject(job.getJobData(), MigrateVmInnerMsg.class); bus.makeLocalServiceId(msg, VmInstanceConstant.SERVICE_ID); bus.send(msg, new CloudBusCallBack(completion) { @Override public void run(MessageReply reply) { if (reply.isSuccess()) { MigrateVmInnerReply r = reply.castReply(); APIMigrateVmEvent evt = new APIMigrateVmEvent(ThreadContext.get(Constants.THREAD_CONTEXT_API)); auditResourceUuid = r.getInventory().getUuid(); evt.setInventory(r.getInventory()); completion.success(evt); } else { auditResourceUuid = msg.getVmInstanceUuid(); completion.fail(reply.getError()); } } }); }
@Override public void start(LongJobVO job, ReturnValueCompletion<APIEvent> completion) { DeleteVolumeSnapshotMsg msg = new DeleteVolumeSnapshotMsg(); APIDeleteVolumeSnapshotMsg apiMessage = JSONObjectUtil.toObject(job.getJobData(), APIDeleteVolumeSnapshotMsg.class); msg.setApiMessage(apiMessage); msg.setTreeUuid(apiMessage.getTreeUuid()); msg.setVolumeUuid(apiMessage.getSnapshotUuid()); msg.setSnapshotUuid(apiMessage.getSnapshotUuid()); bus.makeLocalServiceId(msg, VolumeSnapshotConstant.SERVICE_ID); bus.send(msg, new CloudBusCallBack(completion) { @Override public void run(MessageReply reply) { if (reply.isSuccess()) { completion.success(null); } else { completion.fail(reply.getError()); } } }); }
@Override public void start(LongJobVO job, ReturnValueCompletion<APIEvent> completion) { RevertVolumeSnapshotMsg msg = new RevertVolumeSnapshotMsg(); APIRevertVolumeFromSnapshotMsg apiMessage = JSONObjectUtil.toObject(job.getJobData(), APIRevertVolumeFromSnapshotMsg.class); msg.setApiMessage(apiMessage); msg.setSnapshotUuid(apiMessage.getSnapshotUuid()); msg.setVolumeUuid(apiMessage.getVolumeUuid()); msg.setTreeUuid(apiMessage.getTreeUuid()); bus.makeLocalServiceId(msg, VolumeSnapshotConstant.SERVICE_ID); bus.send(msg, new CloudBusCallBack(completion) { @Override public void run(MessageReply reply) { auditResourceUuid = msg.getVolumeUuid(); if (reply.isSuccess()) { APIRevertVolumeFromSnapshotEvent evt = new APIRevertVolumeFromSnapshotEvent(ThreadContext.get(Constants.THREAD_CONTEXT_API)); completion.success(evt); } else { completion.fail(reply.getError()); } } }); }
private void validate(APIRerunLongJobMsg msg) { LongJobVO vo = Q.New(LongJobVO.class) .eq(LongJobVO_.uuid, msg.getUuid()) .find(); LongJobState state = vo.getState(); if (state != LongJobState.Succeeded && state != LongJobState.Canceled && state != LongJobState.Failed) { throw new ApiMessageInterceptionException(argerr("rerun longjob only when it's succeeded, canceled, or failed")); } Class<APIMessage> apiClass = apiMsgOfLongJob.get(vo.getJobName()); APIMessage jobMsg = JSONObjectUtil.toObject(vo.getJobData(), apiClass); jobMsg.setSession(msg.getSession()); try { apiMediator.getProcesser().process(jobMsg); // may throw ApiMessageInterceptionException } catch (StopRoutingException e) { APISubmitLongJobEvent evt = new APISubmitLongJobEvent(msg.getId()); evt.setInventory(LongJobInventory.valueOf(vo)); evt.setNeedAudit(false); bus.publish(evt); throw e; } dbf.updateAndRefresh(vo); }
public LongJobInventory(LongJobVO vo) { this.setUuid(vo.getUuid()); this.setName(vo.getName()); this.setState(vo.getState()); this.setApiId(vo.getApiId()); this.setJobData(vo.getJobData()); this.setJobResult(vo.getJobResult()); this.setJobName(vo.getJobName()); this.setCreateDate(vo.getCreateDate()); this.setLastOpDate(vo.getLastOpDate()); this.setExecuteTime(vo.getExecuteTime()); this.setDescription(vo.getDescription()); this.setTargetResourceUuid(vo.getTargetResourceUuid()); this.setManagementNodeUuid(vo.getManagementNodeUuid()); }
private void handle(APIRerunLongJobMsg msg) { APIRerunLongJobEvent evt = new APIRerunLongJobEvent(msg.getId()); SubmitLongJobMsg smsg = new SubmitLongJobMsg(); LongJobVO job = dbf.findByUuid(msg.getUuid(), LongJobVO.class); smsg.setJobUuid(job.getUuid()); smsg.setDescription(job.getDescription()); smsg.setJobData(job.getJobData()); smsg.setJobName(job.getJobName()); smsg.setName(job.getName()); smsg.setTargetResourceUuid(job.getTargetResourceUuid()); smsg.setResourceUuid(job.getUuid()); smsg.setSystemTags(msg.getSystemTags()); smsg.setUserTags(msg.getUserTags()); smsg.setAccountUuid(msg.getSession().getAccountUuid()); bus.makeLocalServiceId(smsg, LongJobConstants.SERVICE_ID); bus.send(smsg, new CloudBusCallBack(msg) { @Override public void run(MessageReply rly) { SubmitLongJobReply reply = rly.castReply(); evt.setInventory(reply.getInventory()); bus.publish(evt); } }); }