@Override public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CreateCmdResult> callback) { CreateCmdResult result = null; try { s_logger.info("taking elastistor volume snapshot"); SnapshotObjectTO snapshotTO = (SnapshotObjectTO)snapshot.getTO(); String volumeid = snapshotTO.getVolume().getUuid(); String snapshotname = snapshotTO.getName(); Answer answer = ElastistorUtil.createElastistorVolumeSnapshot(volumeid, snapshotname); if(answer.getResult() == false){ s_logger.info("elastistor volume snapshot failed"); throw new CloudRuntimeException("elastistor volume snapshot failed"); }else{ s_logger.info("elastistor volume snapshot succesfull"); snapshotTO.setPath(answer.getDetails()); CreateObjectAnswer createObjectAnswer = new CreateObjectAnswer(snapshotTO); result = new CreateCmdResult(null, createObjectAnswer); result.setResult(null); } } catch (Throwable e) { s_logger.debug("Failed to take snapshot: " + e.getMessage()); result = new CreateCmdResult(null, null); result.setResult(e.toString()); } callback.complete(result); }
@Override public void deleteAsync(DataObject data, AsyncCompletionCallback<CommandResult> callback) { try { objectInDataStoreMgr.update(data, Event.DestroyRequested); } catch (NoTransitionException e) { s_logger.debug("destroy failed", e); CreateCmdResult res = new CreateCmdResult(null, null); callback.complete(res); } catch (ConcurrentOperationException e) { s_logger.debug("destroy failed", e); CreateCmdResult res = new CreateCmdResult(null, null); callback.complete(res); } DeleteContext<CommandResult> context = new DeleteContext<CommandResult>(callback, data); AsyncCallbackDispatcher<DataObjectManagerImpl, CommandResult> caller = AsyncCallbackDispatcher.create(this); caller.setCallback(caller.getTarget().deleteAsynCallback(null, null)).setContext(context); data.getDataStore().getDriver().deleteAsync(data.getDataStore(), data, caller); return; }
s_logger.debug("Failed to update copying state", e); CreateCmdResult res = new CreateCmdResult(null, null); res.setResult(result.getResult()); context.getParentCallback().complete(res); s_logger.debug("failed to further change state to OperationFailed", e1); CreateCmdResult res = new CreateCmdResult(null, null); res.setResult("Failed to update copying state: " + e.toString()); context.getParentCallback().complete(res); s_logger.debug("failed to further change state to OperationFailed", e1); CreateCmdResult res = new CreateCmdResult(null, null); res.setResult("Failed to update copying state: " + e.toString()); context.getParentCallback().complete(res); CreateCmdResult res = new CreateCmdResult(result.getPath(), null); context.getParentCallback().complete(res); return null;
@Override public void copyAsync(DataObject srcData, DataObject destData, AsyncCompletionCallback<CreateCmdResult> callback) { try { objectInDataStoreMgr.update(destData, ObjectInDataStoreStateMachine.Event.CopyingRequested); } catch (NoTransitionException e) { s_logger.debug("failed to change state", e); try { objectInDataStoreMgr.update(destData, ObjectInDataStoreStateMachine.Event.OperationFailed); } catch (Exception e1) { s_logger.debug("failed to further change state to OperationFailed", e1); } CreateCmdResult res = new CreateCmdResult(null, null); res.setResult("Failed to change state: " + e.toString()); callback.complete(res); } catch (ConcurrentOperationException e) { s_logger.debug("failed to change state", e); try { objectInDataStoreMgr.update(destData, ObjectInDataStoreStateMachine.Event.OperationFailed); } catch (Exception e1) { s_logger.debug("failed to further change state to OperationFailed", e1); } CreateCmdResult res = new CreateCmdResult(null, null); res.setResult("Failed to change state: " + e.toString()); callback.complete(res); } CopyContext<CreateCmdResult> anotherCall = new CopyContext<CreateCmdResult>(callback, srcData, destData); AsyncCallbackDispatcher<DataObjectManagerImpl, CopyCommandResult> caller = AsyncCallbackDispatcher.create(this); caller.setCallback(caller.getTarget().copyCallback(null, null)).setContext(anotherCall); motionSrv.copyAsync(srcData, destData, caller); }
@Override public Void createDataDiskTemplateAsync(TemplateInfo dataDiskTemplate, String path, String diskId, boolean bootable, long fileSize, AsyncCompletionCallback<CreateCmdResult> callback) { Answer answer = null; String errMsg = null; if (s_logger.isDebugEnabled()) { s_logger.debug("Create Datadisk template: " + dataDiskTemplate.getId()); } CreateDatadiskTemplateCommand cmd = new CreateDatadiskTemplateCommand(dataDiskTemplate.getTO(), path, diskId, fileSize, bootable); EndPoint ep = _defaultEpSelector.select(dataDiskTemplate.getDataStore()); if (ep == null) { 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()) { errMsg = answer.getDetails(); } CreateCmdResult result = new CreateCmdResult(null, answer); result.setResult(errMsg); callback.complete(result); return null; } }
String errMsg = null; Answer answer = null; CreateCmdResult result = new CreateCmdResult(null, null); if (data.getType() == DataObjectType.VOLUME) { try {
result = new CreateCmdResult(null, answer); if (answer != null && !answer.getResult()) { result.setResult(answer.getDetails()); } catch (Exception e) { s_logger.debug("Failed to take snapshot: " + snapshot.getId(), e); result = new CreateCmdResult(null, null); result.setResult(e.toString());
obj = objectInDataStoreMgr.findObject(data, store); if (obj == null) { CreateCmdResult result = new CreateCmdResult(null, null); result.setSuccess(false); result.setResult(e.toString()); objInStore = waitingForCreated(data, store); } catch (Exception e) { CreateCmdResult result = new CreateCmdResult(null, null); result.setSuccess(false); result.setResult(e.toString()); CreateCmdResult result = new CreateCmdResult(null, null); callback.complete(result); return; s_logger.debug("state transation failed", e1); CreateCmdResult result = new CreateCmdResult(null, null); result.setSuccess(false); result.setResult(e.toString()); s_logger.debug("state transation failed", e1); CreateCmdResult result = new CreateCmdResult(null, null); result.setSuccess(false); result.setResult(e.toString());
@Override public void resize(DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) { VolumeObject vol = (VolumeObject) data; StoragePool pool = (StoragePool) data.getDataStore(); ResizeVolumePayload resizeParameter = (ResizeVolumePayload) vol.getpayload(); ResizeVolumeCommand resizeCmd = new ResizeVolumeCommand(vol.getPath(), new StorageFilerTO(pool), vol.getSize(), resizeParameter.newSize, resizeParameter.shrinkOk, resizeParameter.instanceName); CreateCmdResult result = new CreateCmdResult(null, null); try { ResizeVolumeAnswer answer = (ResizeVolumeAnswer) storageMgr.sendToPool(pool, resizeParameter.hosts, resizeCmd); if (answer != null && answer.getResult()) { long finalSize = answer.getNewSize(); s_logger.debug("Resize: volume started at size " + vol.getSize() + " and ended at size " + finalSize); vol.setSize(finalSize); vol.update(); } else if (answer != null) { result.setResult(answer.getDetails()); } else { s_logger.debug("return a null answer, mark it as failed for unknown reason"); result.setResult("return a null answer, mark it as failed for unknown reason"); } } catch (Exception e) { s_logger.debug("sending resize command failed", e); result.setResult(e.toString()); } callback.complete(result); }
CreateCmdResult result = new CreateCmdResult(iqn, new Answer(null, errMsg == null, errMsg));
CreateCmdResult result = new CreateCmdResult(iqn, new Answer(null, errMsg == null, errMsg));
CreateCmdResult result = new CreateCmdResult(null, null);
protected Void createAsynCallback(AsyncCallbackDispatcher<DataObjectManagerImpl, CreateCmdResult> callback, CreateContext<CreateCmdResult> context) { CreateCmdResult result = callback.getResult(); DataObject objInStrore = context.objInStrore; CreateCmdResult upResult = new CreateCmdResult(null, null); if (result.isFailed()) { upResult.setResult(result.getResult());
CreateCmdResult result = new CreateCmdResult(null, null); result.setSuccess(false); result.setResult(answer.getErrorString()); CreateCmdResult result = new CreateCmdResult(null, null); caller.complete(result);
CreateCmdResult result = new CreateCmdResult(null, null); result.setSuccess(false); result.setResult(answer.getErrorString()); s_logger.error(msg); } else if (answer.getDownloadStatus() == VMTemplateStorageResourceAssoc.Status.DOWNLOADED) { CreateCmdResult result = new CreateCmdResult(null, null); caller.complete(result);
result = new CreateCmdResult(null, createObjectAnswer); LOGGER.debug(SolidFireUtil.LOG_PREFIX + "Failed to take CloudStack snapshot: " + snapshotInfo.getId(), ex); result = new CreateCmdResult(null, new CreateObjectAnswer(ex.toString()));
String errMsg = null; CreateCmdResult result = new CreateCmdResult(iqn, new Answer(null, errMsg == null, errMsg));
@Override public void createAsync(DataStore dataStore, DataObject dataObject, AsyncCompletionCallback<CreateCmdResult> callback) { String iqn = null; String errorMessage = null; if (dataObject.getType() != DataObjectType.VOLUME) { errorMessage = "Invalid DataObjectType (" + dataObject.getType() + ") passed to createAsync"; } else { VolumeInfo volumeInfo = (VolumeInfo) dataObject; long storagePoolId = dataStore.getId(); NexentaStorAppliance appliance = getNexentaStorAppliance(storagePoolId); // TODO: maybe we should use md5(volume name) as volume name NexentaStorZvol zvol = (NexentaStorZvol) appliance.createVolume(volumeInfo.getName(), volumeInfo.getSize()); iqn = zvol.getIqn(); VolumeVO volume = this._volumeDao.findById(volumeInfo.getId()); volume.set_iScsiName(iqn); volume.setFolder(zvol.getName()); volume.setPoolType(Storage.StoragePoolType.IscsiLUN); volume.setPoolId(storagePoolId); _volumeDao.update(volume.getId(), volume); StoragePoolVO storagePool = _storagePoolDao.findById(storagePoolId); long capacityBytes = storagePool.getCapacityBytes(); long usedBytes = storagePool.getUsedBytes(); usedBytes += volumeInfo.getSize(); storagePool.setUsedBytes(usedBytes > capacityBytes ? capacityBytes : usedBytes); _storagePoolDao.update(storagePoolId, storagePool); } CreateCmdResult result = new CreateCmdResult(iqn, new Answer(null, errorMessage == null, errorMessage)); result.setResult(errorMessage); callback.complete(result); }