@Override public void handle(Map data) { dbf.update(self); completion.success(); } }).error(new FlowErrorHandler(completion) {
private void fail(WorkFlowVO vo, ErrorCode err) { vo.setReason(err.toString()); vo.setState(flowState.getNextState(vo.getState(), WorkFlowStateEvent.failed)); logger.debug(String.format("workflow[%s] in chain[%s] failed because %s", vo.getName(), getName(), err)); dbf.update(vo); chainvo.setReason(err.toString()); chainvo.setState(chainStates.getNextState(chainvo.getState(), WorkFlowChainStateEvent.failed)); chainvo.setCurrentPosition(vo.getPosition()); chainvo = dbf.updateAndRefresh(chainvo); rollback(); WorkFlowContext ctx = WorkFlowContext.fromBytes(vo.getContext()); tellCallbackFailure(ctx, err); }
private void copeWithFailureHost(SecurityGroupFailureHostVO fvo) { fvo.setManagementNodeId(null); dbf.update(fvo); }
private void changeStatus(VolumeSnapshotStatus.StatusEvent event) { self.setStatus(self.getStatus().nextState(event)); dbf.update(self); }
@Override public void rollback(FlowRollback trigger, Map data) { if (data.containsKey(VmSetDefaultL3NetworkOnAttachingFlow.class)) { VmInstanceSpec spec = (VmInstanceSpec) data.get(VmInstanceConstant.Params.VmInstanceSpec.toString()); VmInstanceVO vm = dbf.findByUuid(spec.getVmInventory().getUuid(), VmInstanceVO.class); vm.setDefaultL3NetworkUuid(null); dbf.update(vm); } trigger.rollback(); } }
private void fail(String error) { ic.setState(ImageCacheState.ready); dbf.update(ic); logger.warn(String.format("failed to garbage collect image cache[id:%s, install:%s] on primary storage[uuid], because %s. Change its state back to ready and try garbage collecting it next time", ic.getId(), ic.getInstallUrl(), ic.getPrimaryStorageUuid(), error)); }
@Override public void rollback(FlowRollback chain, Map data) { final VolumeInventory volume = (VolumeInventory) data.get(VmInstanceConstant.Params.AttachingVolumeInventory.toString()); VolumeVO dvol = dbf.findByUuid(volume.getUuid(), VolumeVO.class); dvol.setDeviceId(null); dbf.update(dvol); chain.rollback(); } }
protected void fail(ErrorCode err) { assert uuid != null; unlock(); logger.debug(String.format("[GC] a job[name:%s, id:%s] failed because %s", NAME, uuid,err)); GarbageCollectorVO vo = dbf.findByUuid(uuid, GarbageCollectorVO.class); if (vo == null) { logger.warn(String.format("[GC] cannot find a job[name:%s, id:%s], assume it's deleted", NAME, uuid)); cancel(); return; } vo.setStatus(GCStatus.Idle); dbf.update(vo); }
@Override public void run(FlowTrigger trigger, Map data) { // must reload here, otherwise it will override changes created by previous flows self = dbf.reload(self); getSelf().setStatus(ApplianceVmStatus.Connected); dbf.update(self); trigger.next(); } });
@Override public void fail(ErrorCode errorCode) { prvo.setVmNicUuid(null); prvo.setGuestIp(null); dbf.update(prvo); evt.setError(errorCode); bus.publish(evt); } });
protected void updateCapacity(Long totalCapacity, Long availableCapacity) { if (totalCapacity == null || availableCapacity == null) { return; } BackupStorageVO vo = dbf.findByUuid(self.getUuid(), BackupStorageVO.class); vo.setTotalCapacity(totalCapacity); vo.setAvailableCapacity(availableCapacity); dbf.update(vo); }
@Override public void run(FlowTrigger trigger, Map data) { VmInstanceSpec spec = (VmInstanceSpec) data.get(VmInstanceConstant.Params.VmInstanceSpec.toString()); if (spec.getVmInventory().getDefaultL3NetworkUuid() != null) { trigger.next(); return; } L3NetworkInventory l3 = VmNicSpec.getL3NetworkInventoryOfSpec(spec.getL3Networks()).get(0); VmInstanceVO vm = dbf.findByUuid(spec.getVmInventory().getUuid(), VmInstanceVO.class); vm.setDefaultL3NetworkUuid(l3.getUuid()); dbf.update(vm); data.put(VmSetDefaultL3NetworkOnAttachingFlow.class, true); trigger.next(); }
protected void rollbackFlow(WorkFlowVO vo) { AsyncWorkFlow flow = flows.get(vo.getPosition()); WorkFlowContext ctx = WorkFlowContext.fromBytes(vo.getContext()); try { flow.rollback(ctx); logger.debug(String.format("Successfully rolled back AsyncWorkFlow[%s] in chain[%s]", flow.getName(), getName())); } catch (Throwable t) { logger.warn(String.format("Unhandled exception happend while rolling back AsyncWorkFlow[%s] in chain[%s]", flow.getName(), getName()), t); } vo.setState(flowState.getNextState(vo.getState(), WorkFlowStateEvent.rollbackDone)); dbf.update(vo); }
protected void rollbackFlow(WorkFlowVO vo) { WorkFlow flow = flows.get(vo.getPosition()); WorkFlowContext ctx = WorkFlowContext.fromBytes(vo.getContext()); try { flow.rollback(ctx); logger.debug(String.format("Successfully rolled back workflow[%s] in chain[%s]", flow.getName(), getName())); } catch (Throwable t) { logger.warn(String.format("Unhandled exception happend while rolling back workflow[%s] in chain[%s]", flow.getName(), getName()), t); } vo.setState(flowState.getNextState(vo.getState(), WorkFlowStateEvent.rollbackDone)); dbf.update(vo); }
@Override public void handle(Map data) { targetVmCdRomVO.setIsoUuid(null); targetVmCdRomVO.setIsoInstallPath(null); dbf.update(targetVmCdRomVO); new IsoOperator().syncVmIsoSystemTag(self.getUuid()); completion.success(); } }).error(new FlowErrorHandler(completion) {
private void finish() { CollectionUtils.safeForEach(pluginRgty.getExtensionList(VolumeSnapshotAfterDeleteExtensionPoint.class), new ForEachFunction<VolumeSnapshotAfterDeleteExtensionPoint>() { @Override public void run(VolumeSnapshotAfterDeleteExtensionPoint arg) { arg.volumeSnapshotAfterDeleteExtensionPoint(sp); } }); VolumeSnapshotPrimaryStorageDeletionReply dreply = new VolumeSnapshotPrimaryStorageDeletionReply(); self.setPrimaryStorageInstallPath(null); self.setPrimaryStorageUuid(null); dbf.update(self); bus.reply(msg, dreply); }
@Override public void success() { logger.debug(String.format("successfully released vip[uuid:%s, name:%s, ip:%s] on service[%s]", self.getUuid(), self.getName(), self.getIp(), self.getServiceProvider())); VipUseForList useForList = new VipUseForList(self.getUseFor()); self.setUseFor(null); clearPeerL3Network(); self.setServiceProvider(null); dbf.update(self); completion.success(); }
@Override public void run(List<MessageReply> replies) { // if ChangeImage, resume rootVolumeUuid if (spec.getCurrentVmOperation() == VmInstanceConstant.VmOperation.ChangeImage) { VmInstanceVO vm = dbf.findByUuid(spec.getVmInventory().getUuid(), VmInstanceVO.class); vm.setRootVolumeUuid(spec.getVmInventory().getRootVolumeUuid()); dbf.update(vm); } chain.rollback(); } });
@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()); } } });
private void handle(APIUpdateCephPrimaryStoragePoolMsg msg) { APIUpdateCephPrimaryStoragePoolEvent evt = new APIUpdateCephPrimaryStoragePoolEvent(msg.getId()); CephPrimaryStoragePoolVO vo = dbf.findByUuid(msg.getUuid(), CephPrimaryStoragePoolVO.class); if (msg.getAliasName() != null) { vo.setAliasName(msg.getAliasName()); } if (msg.getDescription() != null) { vo.setDescription(msg.getDescription()); } dbf.update(vo); evt.setInventory(CephPrimaryStoragePoolInventory.valueOf(vo)); bus.publish(evt); }