public static APISubmitLongJobMsg __example__() { APISubmitLongJobMsg msg = new APISubmitLongJobMsg(); msg.setName("migrate-volume"); msg.setDescription("migrate volume to another Ceph primary storage"); msg.setJobName("APIPrimaryStorageMigrateVolumeMsg"); msg.setJobData("{\"volumeUuid\":\"45a53d3d93384433add8ead7616586cf\", \"dstPrimaryStorageUuid\":\"70a0618804864b3dabe8be9824c8028c\"}"); msg.setTargetResourceUuid("45a53d3d93384433add8ead7616586cf"); return msg; }
public static SubmitLongJobMsg valueOf(final APISubmitLongJobMsg msg) { SubmitLongJobMsg smsg = new SubmitLongJobMsg(); smsg.setDescription(msg.getDescription()); smsg.setJobData(msg.getJobData()); smsg.setJobName(msg.getJobName()); smsg.setName(msg.getName()); smsg.setTargetResourceUuid(msg.getTargetResourceUuid()); smsg.setResourceUuid(msg.getResourceUuid()); smsg.setSystemTags(msg.getSystemTags()); smsg.setUserTags(msg.getUserTags()); smsg.setAccountUuid(msg.getSession().getAccountUuid()); return smsg; } }
private void validate(APISubmitLongJobMsg msg) { Class<APIMessage> apiClass = apiMsgOfLongJob.get(msg.getJobName()); if (null == apiClass) { throw new ApiMessageInterceptionException(argerr("%s is not an API", msg.getJobName())); } APIMessage jobMsg = JSONObjectUtil.toObject(msg.getJobData(), apiClass); jobMsg.setSession(msg.getSession()); try { jobMsg = apiMediator.getProcesser().process(jobMsg); // may throw ApiMessageInterceptionException } catch (StopRoutingException e) { // if got stop routing exception persist a success long job and return event success LongJobVO vo = createSuccessLongJob(msg); APISubmitLongJobEvent evt = new APISubmitLongJobEvent(msg.getId()); evt.setInventory(LongJobInventory.valueOf(vo)); evt.setNeedAudit(false); bus.publish(evt); throw e; } msg.setJobData(JSONObjectUtil.toJsonString(jobMsg)); // msg may be changed during validation }
@Override public APIAuditor.Result longJobAudit(LongJob job, APIEvent rsp) { Class resourceType = job.getAuditType(); DebugUtils.Assert(resourceType != null, String.format("resourceType mustn't be null from longjob: %s", job.getClass().getSimpleName())); return new APIAuditor.Result(getResourceUuid(job), resourceType); } }
private LongJobVO createSuccessLongJob(APISubmitLongJobMsg msg) { // create LongJobVO LongJobVO vo = new LongJobVO(); if (msg.getResourceUuid() != null) { vo.setUuid(msg.getResourceUuid()); } else { vo.setUuid(Platform.getUuid()); } if (msg.getName() != null) { vo.setName(msg.getName()); } else { vo.setName(msg.getJobName()); } vo.setDescription(msg.getDescription()); vo.setApiId(ThreadContext.getImmutableContext().get(Constants.THREAD_CONTEXT_API)); vo.setJobName(msg.getJobName()); vo.setJobData(msg.getJobData()); vo.setState(LongJobState.Succeeded); vo.setJobResult(LongJobState.Succeeded.toString()); vo.setTargetResourceUuid(msg.getTargetResourceUuid()); vo.setManagementNodeUuid(Platform.getManagementServerId()); vo.setAccountUuid(msg.getSession().getAccountUuid()); vo = dbf.persistAndRefresh(vo); msg.setJobUuid(vo.getUuid()); tagMgr.createTags(msg.getSystemTags(), msg.getUserTags(), vo.getUuid(), LongJobVO.class.getSimpleName()); return vo; }