/** * Detach an iso */ @Override public AttachAnswer dettachIso(DettachCommand cmd) { LOGGER.debug("execute dettachIso: "+ cmd.getClass()); String vmName = cmd.getVmName(); DiskTO disk = cmd.getDisk(); return attachDetach(cmd, vmName, disk, false); }
/** * Detach a volume */ @Override public AttachAnswer dettachVolume(DettachCommand cmd) { LOGGER.debug("execute dettachVolume: "+ cmd.getClass()); String vmName = cmd.getVmName(); DiskTO disk = cmd.getDisk(); return attachDetach(cmd, vmName, disk, false); }
/** * Detach disks, calls a middle man which calls attachDetach for volumes. * @param cmd * @return */ public Answer execute(DettachCommand cmd) { LOGGER.debug("execute: "+ cmd.getClass()); String vmName = cmd.getVmName(); DiskTO disk = cmd.getDisk(); return attachDetach(cmd, vmName, disk, false); } }
protected Answer execute(DettachCommand cmd) { DiskTO disk = cmd.getDisk(); if (disk.getType() == Volume.Type.ISO) { return processor.dettachIso(cmd); } else { return processor.dettachVolume(cmd); } } }
@Override public Answer dettachVolume(final DettachCommand cmd) { final DiskTO disk = cmd.getDisk(); final VolumeObjectTO vol = (VolumeObjectTO)disk.getData(); final PrimaryDataStoreTO primaryStore = (PrimaryDataStoreTO)vol.getDataStore(); final String vmName = cmd.getVmName(); final String serial = resource.diskUuidToSerial(vol.getUuid()); try { final Connect conn = LibvirtConnection.getConnectionByVmName(vmName); final KVMPhysicalDisk phyDisk = storagePoolMgr.getPhysicalDisk(primaryStore.getPoolType(), primaryStore.getUuid(), vol.getPath()); attachOrDetachDisk(conn, false, vmName, phyDisk, disk.getDiskSeq().intValue(), serial, vol.getBytesReadRate(), vol.getBytesWriteRate(), vol.getIopsReadRate(), vol.getIopsWriteRate()); storagePoolMgr.disconnectPhysicalDisk(primaryStore.getPoolType(), primaryStore.getUuid(), vol.getPath()); return new DettachAnswer(disk); } catch (final LibvirtException e) { s_logger.debug("Failed to detach volume: " + vol.getPath() + ", due to ", e); return new DettachAnswer(e.toString()); } catch (final InternalErrorException e) { s_logger.debug("Failed to detach volume: " + vol.getPath() + ", due to ", e); return new DettachAnswer(e.toString()); } }
@Override public Answer dettachIso(final DettachCommand cmd) { final DiskTO disk = cmd.getDisk(); final DataTO data = disk.getData(); final DataStoreTO store = data.getDataStore();
@Override public Answer dettachVolume(final DettachCommand cmd) { final DiskTO disk = cmd.getDisk(); final DataTO data = disk.getData();
@Override public Answer dettachIso(final DettachCommand cmd) { final DiskTO disk = cmd.getDisk(); final TemplateObjectTO isoTO = (TemplateObjectTO)disk.getData(); final DataStoreTO store = isoTO.getDataStore(); try { String dataStoreUrl = getDataStoreUrlFromStore(store); final Connect conn = LibvirtConnection.getConnectionByVmName(cmd.getVmName()); attachOrDetachISO(conn, cmd.getVmName(), dataStoreUrl + File.separator + isoTO.getPath(), false); } catch (final LibvirtException e) { return new Answer(cmd, false, e.toString()); } catch (final URISyntaxException e) { return new Answer(cmd, false, e.toString()); } catch (final InternalErrorException e) { return new Answer(cmd, false, e.toString()); } catch (final InvalidParameterValueException e) { return new Answer(cmd, false, e.toString()); } return new Answer(cmd); }