/** * Attach an iso */ @Override public AttachAnswer attachIso(AttachCommand cmd) { LOGGER.debug("execute attachIso: "+ cmd.getClass()); String vmName = cmd.getVmName(); DiskTO disk = cmd.getDisk(); return attachDetach(cmd, vmName, disk, true); } /**
/** * Attach a volume */ @Override public AttachAnswer attachVolume(AttachCommand cmd) { LOGGER.debug("execute attachVolume: "+ cmd.getClass()); String vmName = cmd.getVmName(); DiskTO disk = cmd.getDisk(); return attachDetach(cmd, vmName, disk, true); } /**
/** * Attach disks * @param cmd * @return */ public Answer execute(AttachCommand cmd) { LOGGER.debug("execute: "+ cmd.getClass()); String vmName = cmd.getVmName(); DiskTO disk = cmd.getDisk(); return attachDetach(cmd, vmName, disk, true); }
protected Answer execute(AttachCommand cmd) { DiskTO disk = cmd.getDisk(); if (disk.getType() == Volume.Type.ISO) { return processor.attachIso(cmd); } else { return processor.attachVolume(cmd); } }
@Override public AttachAnswer attachIso(final AttachCommand cmd) { final DiskTO disk = cmd.getDisk(); final DataTO data = disk.getData(); final DataStoreTO store = data.getDataStore();
@Override public AttachAnswer attachVolume(final AttachCommand cmd) { final DiskTO disk = cmd.getDisk(); final DataTO data = disk.getData(); try {
@Override public Answer attachVolume(final AttachCommand 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); storagePoolMgr.connectPhysicalDisk(primaryStore.getPoolType(), primaryStore.getUuid(), vol.getPath(), disk.getDetails()); final KVMPhysicalDisk phyDisk = storagePoolMgr.getPhysicalDisk(primaryStore.getPoolType(), primaryStore.getUuid(), vol.getPath()); attachOrDetachDisk(conn, true, vmName, phyDisk, disk.getDiskSeq().intValue(), serial, vol.getBytesReadRate(), vol.getBytesWriteRate(), vol.getIopsReadRate(), vol.getIopsWriteRate()); return new AttachAnswer(disk); } catch (final LibvirtException e) { s_logger.debug("Failed to attach volume: " + vol.getPath() + ", due to ", e); storagePoolMgr.disconnectPhysicalDisk(primaryStore.getPoolType(), primaryStore.getUuid(), vol.getPath()); return new AttachAnswer(e.toString()); } catch (final InternalErrorException e) { s_logger.debug("Failed to attach volume: " + vol.getPath() + ", due to ", e); return new AttachAnswer(e.toString()); } }
@Override public Answer attachIso(final AttachCommand 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(), true); } 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); }