public Answer execute(CreateObjectCommand cmd) { LOGGER.debug("execute: "+ cmd.getClass()); DataTO data = cmd.getData(); if (data.getObjectType() == DataObjectType.VOLUME) { return createVolume(cmd); } else if (data.getObjectType() == DataObjectType.SNAPSHOT) { return createSnapshot(cmd); } else if (data.getObjectType() == DataObjectType.TEMPLATE) { LOGGER.debug("Template object creation not supported."); } return new CreateObjectAnswer(data.getObjectType() + " object creation not supported"); } /**
public Answer createVolume(VolumeInfo volume) throws StorageUnavailableException { if (s_logger.isDebugEnabled()) { s_logger.debug("Creating volume: " + volume); } CreateObjectCommand cmd = new CreateObjectCommand(volume.getTO()); EndPoint ep = epSelector.select(volume); Answer answer = null; if (ep == null) { String errMsg = "No remote endpoint to send DeleteCommand, check if host or ssvm is down?"; s_logger.error(errMsg); answer = new Answer(cmd, false, errMsg); } else { answer = ep.sendMessage(cmd); } return answer; }
protected Answer execute(CreateObjectCommand cmd) { DataTO data = cmd.getData(); try { if (data.getObjectType() == DataObjectType.VOLUME) { return processor.createVolume(cmd); } else if (data.getObjectType() == DataObjectType.SNAPSHOT) { return processor.createSnapshot(cmd); } return new CreateObjectAnswer("not supported type"); } catch (Exception e) { s_logger.debug("Failed to create object: " + data.getObjectType() + ": " + e.toString()); return new CreateObjectAnswer(e.toString()); } }
@Override public void createAsync(DataStore dataStore, DataObject vol, AsyncCompletionCallback<CreateCmdResult> callback) { EndPoint ep = selector.select(vol); if (ep == null) { String errMsg = "No remote endpoint to send command, check if host or ssvm is down?"; s_logger.error(errMsg); throw new CloudRuntimeException(errMsg); } CreateObjectCommand createCmd = new CreateObjectCommand(null); CreateVolumeContext<CreateCmdResult> context = new CreateVolumeContext<CreateCmdResult>(callback, vol); AsyncCallbackDispatcher<SamplePrimaryDataStoreDriverImpl, Answer> caller = AsyncCallbackDispatcher.create(this); caller.setContext(context).setCallback(caller.getTarget().createAsyncCallback(null, null)); ep.sendMessageAsync(createCmd, caller); }
public Answer createVolume(CreateObjectCommand cmd) { LOGGER.debug("execute createVolume: "+ cmd.getClass()); DataTO data = cmd.getData(); VolumeObjectTO volume = (VolumeObjectTO) data; try {
CreateObjectCommand cmd = new CreateObjectCommand(snapshotTO); EndPoint ep = epSelector.select(snapshot, StorageAction.TAKESNAPSHOT); Answer answer = null;
@Override public Answer createVolume(final CreateObjectCommand cmd) { final DataTO data = cmd.getData(); final VolumeObjectTO volume = (VolumeObjectTO) data; try { final Connection conn = hypervisorResource.getConnection(); final SR poolSr = hypervisorResource.getStorageRepository(conn, data.getDataStore().getUuid()); VDI.Record vdir = new VDI.Record(); vdir.nameLabel = volume.getName(); vdir.SR = poolSr; vdir.type = Types.VdiType.USER; vdir.virtualSize = volume.getSize(); VDI vdi; vdi = VDI.create(conn, vdir); vdir = vdi.getRecord(conn); final VolumeObjectTO newVol = new VolumeObjectTO(); newVol.setName(vdir.nameLabel); newVol.setSize(vdir.virtualSize); newVol.setPath(vdir.uuid); return new CreateObjectAnswer(newVol); } catch (final Exception e) { s_logger.debug("create volume failed: " + e.toString()); return new CreateObjectAnswer(e.toString()); } }
@Override public Answer createSnapshot(final CreateObjectCommand cmd) { final Connection conn = hypervisorResource.getConnection(); final SnapshotObjectTO snapshotTO = (SnapshotObjectTO) cmd.getData(); final long snapshotId = snapshotTO.getId(); final String snapshotName = snapshotTO.getName();
@Override public Answer createVolume(final CreateObjectCommand cmd) { final VolumeObjectTO volume = (VolumeObjectTO)cmd.getData(); final PrimaryDataStoreTO primaryStore = (PrimaryDataStoreTO)volume.getDataStore(); KVMStoragePool primaryPool = null; KVMPhysicalDisk vol = null; long disksize; try { primaryPool = storagePoolMgr.getStoragePool(primaryStore.getPoolType(), primaryStore.getUuid()); disksize = volume.getSize(); PhysicalDiskFormat format; if (volume.getFormat() == null) { format = primaryPool.getDefaultFormat(); } else { format = PhysicalDiskFormat.valueOf(volume.getFormat().toString().toUpperCase()); } vol = primaryPool.createPhysicalDisk(volume.getUuid(), format, volume.getProvisioningType(), disksize); final VolumeObjectTO newVol = new VolumeObjectTO(); if(vol != null) { newVol.setPath(vol.getName()); } newVol.setSize(volume.getSize()); newVol.setFormat(ImageFormat.valueOf(format.toString().toUpperCase())); return new CreateObjectAnswer(newVol); } catch (final Exception e) { s_logger.debug("Failed to create volume: ", e); return new CreateObjectAnswer(e.toString()); } }
public Answer createSnapshot(CreateObjectCommand cmd) { LOGGER.debug("execute createSnapshot: "+ cmd.getClass()); DataTO data = cmd.getData(); Xen xen = new Xen(c); SnapshotObjectTO snap = (SnapshotObjectTO) data;
@Override public Answer createSnapshot(final CreateObjectCommand cmd) { final SnapshotObjectTO snapshotTO = (SnapshotObjectTO)cmd.getData(); final PrimaryDataStoreTO primaryStore = (PrimaryDataStoreTO)snapshotTO.getDataStore(); final VolumeObjectTO volume = snapshotTO.getVolume();