public Void deleteCallback(AsyncCallbackDispatcher<SamplePrimaryDataStoreDriverImpl, Answer> callback, AsyncRpcContext<CommandResult> context) { CommandResult result = new CommandResult(); Answer answer = callback.getResult(); if (!answer.getResult()) { result.setResult(answer.getDetails()); } context.getParentCallback().complete(result); return null; }
protected Void revertSnapshotCallback(AsyncCallbackDispatcher<SnapshotServiceImpl, CommandResult> callback, RevertSnapshotContext<CommandResult> context) { CommandResult result = callback.getResult(); AsyncCallFuture<SnapshotResult> future = context.future; SnapshotResult res = null; try { if (result.isFailed()) { s_logger.debug("revert snapshot failed" + result.getResult()); res = new SnapshotResult(context.snapshot, null); res.setResult(result.getResult()); } else { res = new SnapshotResult(context.snapshot, null); } } catch (Exception e) { s_logger.debug("Failed to in revertSnapshotCallback", e); res.setResult(e.toString()); } future.complete(res); return null; }
public Void deleteTemplateCallback(AsyncCallbackDispatcher<TemplateServiceImpl, CommandResult> callback, TemplateOpContext<TemplateApiResult> context) { CommandResult result = callback.getResult(); TemplateObject vo = context.getTemplate(); if (result.isSuccess()) { vo.processEvent(Event.OperationSuccessed); } else { vo.processEvent(Event.OperationFailed); } TemplateApiResult apiResult = new TemplateApiResult(vo); apiResult.setResult(result.getResult()); apiResult.setSuccess(result.isSuccess()); context.future.complete(apiResult); return null; }
protected Void deleteAsynCallback(AsyncCallbackDispatcher<DataObjectManagerImpl, CommandResult> callback, DeleteContext<CommandResult> context) { DataObject destObj = context.obj; CommandResult res = callback.getResult(); if (res.isFailed()) { try { objectInDataStoreMgr.update(destObj, Event.OperationFailed); } catch (NoTransitionException e) { s_logger.debug("delete failed", e); } catch (ConcurrentOperationException e) { s_logger.debug("delete failed", e); } } else { try { objectInDataStoreMgr.update(destObj, Event.OperationSuccessed); } catch (NoTransitionException e) { s_logger.debug("delete failed", e); } catch (ConcurrentOperationException e) { s_logger.debug("delete failed", e); } } context.getParentCallback().complete(res); return null; }
@Override public void revertSnapshot(SnapshotInfo snapshot, SnapshotInfo snapshotOnPrimaryStore, AsyncCompletionCallback<CommandResult> callback) { SnapshotObjectTO snapshotTO = (SnapshotObjectTO)snapshot.getTO(); RevertSnapshotCommand cmd = new RevertSnapshotCommand(snapshotTO); CommandResult result = new CommandResult(); try { EndPoint ep = epSelector.select(snapshotOnPrimaryStore); if ( ep == null ){ String errMsg = "No remote endpoint to send RevertSnapshotCommand, check if host or ssvm is down?"; s_logger.error(errMsg); result.setResult(errMsg); } else { Answer answer = ep.sendMessage(cmd); if (answer != null && !answer.getResult()) { result.setResult(answer.getDetails()); } } } catch (Exception ex) { s_logger.debug("Unable to revert snapshot " + snapshot.getId(), ex); result.setResult(ex.toString()); } callback.complete(result); }
protected Void deleteSnapshotCallback(AsyncCallbackDispatcher<SnapshotServiceImpl, CommandResult> callback, DeleteSnapshotContext<CommandResult> context) { CommandResult result = callback.getResult(); AsyncCallFuture<SnapshotResult> future = context.future; SnapshotInfo snapshot = context.snapshot; SnapshotResult res = null; try { if (result.isFailed()) { s_logger.debug("delete snapshot failed" + result.getResult()); snapshot.processEvent(ObjectInDataStoreStateMachine.Event.OperationFailed); res = new SnapshotResult(context.snapshot, null); res.setResult(result.getResult()); } else { snapshot.processEvent(ObjectInDataStoreStateMachine.Event.OperationSuccessed); res = new SnapshotResult(context.snapshot, null); } } catch (Exception e) { s_logger.debug("Failed to in deleteSnapshotCallback", e); res.setResult(e.toString()); } future.complete(res); return null; }
@Override public void deleteAsync(DataStore dataStore, DataObject data, AsyncCompletionCallback<CommandResult> callback) { DeleteCommand cmd = new DeleteCommand(data.getTO()); CommandResult result = new CommandResult(); try { EndPoint ep = null; if (data.getType() == DataObjectType.VOLUME) { ep = epSelector.select(data, StorageAction.DELETEVOLUME); } else { ep = epSelector.select(data); } if (ep == null) { String errMsg = "No remote endpoint to send DeleteCommand, check if host or ssvm is down?"; s_logger.error(errMsg); result.setResult(errMsg); } else { Answer answer = ep.sendMessage(cmd); if (answer != null && !answer.getResult()) { result.setResult(answer.getDetails()); } } } catch (Exception ex) { s_logger.debug("Unable to destoy volume" + data.getId(), ex); result.setResult(ex.toString()); } callback.complete(result); }
@Override public void deleteAsync(DataStore store, DataObject data, AsyncCompletionCallback<CommandResult> callback) { String errorMessage = null; if (data.getType() == DataObjectType.VOLUME) { VolumeInfo volumeInfo = (VolumeInfo) data; long storagePoolId = store.getId(); NexentaStorAppliance appliance = getNexentaStorAppliance(storagePoolId); StoragePoolVO storagePool = _storagePoolDao.findById(storagePoolId); // _storagePoolDao.update(stoagePoolId); } else { errorMessage = String.format( "Invalid DataObjectType(%s) passed to deleteAsync", data.getType()); } CommandResult result = new CommandResult(); result.setResult(errorMessage); callback.complete(result); }
protected Void migrateVmWithVolumesCallBack(AsyncCallbackDispatcher<VolumeServiceImpl, CopyCommandResult> callback, MigrateVmWithVolumesContext<CommandResult> context) { Map<VolumeInfo, DataStore> volumeToPool = context.volumeToPool; CopyCommandResult result = callback.getResult(); AsyncCallFuture<CommandResult> future = context.future; CommandResult res = new CommandResult(); try { if (result.isFailed()) { res.setResult(result.getResult()); for (Map.Entry<VolumeInfo, DataStore> entry : volumeToPool.entrySet()) { VolumeInfo volume = entry.getKey(); volume.processEvent(Event.OperationFailed); } future.complete(res); } else { for (Map.Entry<VolumeInfo, DataStore> entry : volumeToPool.entrySet()) { VolumeInfo volume = entry.getKey(); snapshotMgr.cleanupSnapshotsByVolume(volume.getId()); volume.processEvent(Event.OperationSuccessed); } future.complete(res); } } catch (Exception e) { s_logger.error("Failed to process copy volume callback", e); res.setResult(e.toString()); future.complete(res); } return null; }
@Override public void deleteAsync(DataStore dataStore, DataObject data, AsyncCompletionCallback<CommandResult> callback) { CommandResult result = new CommandResult(); try { DeleteCommand cmd = new DeleteCommand(data.getTO()); EndPoint ep = _epSelector.select(data); Answer answer = null; if (ep == null) { String errMsg = "No remote endpoint to send command, check if host or ssvm is down?"; s_logger.error(errMsg); answer = new Answer(cmd, false, errMsg); } else { answer = ep.sendMessage(cmd); } if (answer != null && !answer.getResult()) { result.setResult(answer.getDetails()); } } catch (Exception ex) { s_logger.debug("Unable to destoy " + data.getType().toString() + ": " + data.getId(), ex); result.setResult(ex.toString()); } callback.complete(result); }
@Override public AsyncCallFuture<CommandResult> migrateVolumes(Map<VolumeInfo, DataStore> volumeMap, VirtualMachineTO vmTo, Host srcHost, Host destHost) { AsyncCallFuture<CommandResult> future = new AsyncCallFuture<CommandResult>(); CommandResult res = new CommandResult(); try { if (!snapshotMgr.canOperateOnVolume(volume)) { s_logger.debug("Snapshots are being created on a volume. Volumes cannot be migrated now."); res.setResult("Snapshots are being created on a volume. Volumes cannot be migrated now."); future.complete(res); res.setResult(e.toString()); future.complete(res);
@Override public void deleteAsync(DataStore dataStore, DataObject dataObject, AsyncCompletionCallback<CommandResult> callback) { String errMsg = null; try { if (dataObject.getType() == DataObjectType.VOLUME) { deleteVolume((VolumeInfo)dataObject, dataStore.getId()); } else if (dataObject.getType() == DataObjectType.SNAPSHOT) { deleteSnapshot((SnapshotInfo)dataObject, dataStore.getId()); } else if (dataObject.getType() == DataObjectType.TEMPLATE) { deleteTemplate((TemplateInfo)dataObject, dataStore.getId()); } else { errMsg = "Invalid DataObjectType (" + dataObject.getType() + ") passed to deleteAsync"; } } catch (Exception ex) { errMsg = ex.getMessage(); LOGGER.error(errMsg); } if (callback != null) { CommandResult result = new CommandResult(); result.setResult(errMsg); callback.complete(result); } }
@Override public void revertSnapshot(SnapshotInfo snapshot, SnapshotInfo snapshot2, AsyncCompletionCallback<CommandResult> callback) { VolumeInfo volumeInfo = snapshot.getBaseVolume(); VolumeVO volumeVO = volumeDao.findById(volumeInfo.getId()); if (volumeVO == null || volumeVO.getRemoved() != null) { String errMsg = "The volume that the snapshot belongs to no longer exists."; CommandResult commandResult = new CommandResult(); commandResult.setResult(errMsg); callback.complete(commandResult); return; } SolidFireUtil.SolidFireConnection sfConnection = SolidFireUtil.getSolidFireConnection(volumeVO.getPoolId(), storagePoolDetailsDao); long sfVolumeId = Long.parseLong(volumeInfo.getFolder()); SnapshotDetailsVO snapshotDetails = snapshotDetailsDao.findDetail(snapshot.getId(), SolidFireUtil.SNAPSHOT_ID); long sfSnapshotId = Long.parseLong(snapshotDetails.getValue()); SolidFireUtil.rollBackVolumeToSnapshot(sfConnection, sfVolumeId, sfSnapshotId); SolidFireUtil.SolidFireVolume sfVolume = SolidFireUtil.getVolume(sfConnection, sfVolumeId); updateVolumeDetails(volumeVO.getId(), sfVolume.getTotalSize(), sfVolume.getScsiNaaDeviceId()); CommandResult commandResult = new CommandResult(); callback.complete(commandResult); }
} catch (Throwable e) { e.printStackTrace(); CommandResult result2 = new CommandResult(); result2.setResult(e.toString()); callback.complete(result2); CommandResult result = new CommandResult(); result.setResult(errMsg);