int index = 0; for (final DiskTO disk : vmSpec.getDisks()) { if (Volume.Type.ISO.equals(disk.getType())) { disks.add(0, disk); } else {
s_logger.debug("Checking suitable pools for volume (Id, Type): (" + toBeCreated.getId() + "," + toBeCreated.getVolumeType().name() + ")");
@Override public long getVMSnapshotSizeByPool(long poolId) { SearchCriteria<SumCount> sc = TotalVMSnapshotSizeByPoolSearch.create(); sc.setParameters("poolId", poolId); sc.setParameters("state", State.Destroy); sc.setParameters("vType", Volume.Type.ROOT.toString()); List<SumCount> results = customSearch(sc, null); if (results != null) { return results.get(0).sum; } else { return 0; } }
if (!diskOffering.isCustomized() && !volume.getVolumeType().equals(Volume.Type.ROOT)) { throw new InvalidParameterValueException("To change a volume's size without providing a new disk offering, its current disk offering must be " + "customizable or it must be a root volume (if providing a disk offering, make sure it is different from the current disk offering)."); if (!volume.getVolumeType().equals(Volume.Type.ROOT) && (diskOffering.isCustomizedIops() == null || !diskOffering.isCustomizedIops())) { throw new InvalidParameterValueException("The current disk offering does not support customization of the 'Min IOPS' parameter."); if (!volume.getVolumeType().equals(Volume.Type.ROOT) && (diskOffering.isCustomizedIops() == null || !diskOffering.isCustomizedIops())) { throw new InvalidParameterValueException("The current disk offering does not support customization of the 'Max IOPS' parameter."); if (!volume.getSize().equals(newSize) && !volume.getVolumeType().equals(Volume.Type.DATADISK)) { throw new InvalidParameterValueException("Only data volumes can be resized via a new disk offering."); if (volume.getVolumeType().equals(Volume.Type.ROOT) && userVm.getPowerState() != VirtualMachine.PowerState.PowerOff && hypervisorType == HypervisorType.VMware) { s_logger.error(" For ROOT volume resize VM should be in Power Off state."); throw new InvalidParameterValueException("VM current state is : " + userVm.getPowerState() + ". But VM should be in " + VirtualMachine.PowerState.PowerOff + " state.");
userVmResponse.setRootDeviceId(userVm.getVolumeDeviceId()); if (userVm.getVolumeType() != null) { userVmResponse.setRootDeviceType(userVm.getVolumeType().toString());
if (!liveMigrateVolume && vol.volumeType.equals(Volume.Type.ROOT)) { Long hostId = vm.getHostId() != null ? vm.getHostId() : vm.getLastHostId(); HostVO host = _hostDao.findById(hostId);
snapshotResponse.setVolumeId(volume.getUuid()); snapshotResponse.setVolumeName(volume.getName()); snapshotResponse.setVolumeType(volume.getVolumeType().name()); snapshotResponse.setVirtualSize(volume.getSize()); DataCenter zone = ApiDBUtils.findZoneById(volume.getDataCenterId());
if (type.equals(Type.ROOT)) { vol.setDeviceId(0l); if (!vm.getType().equals(VirtualMachine.Type.User)) {
storageBuf.append(vol.getId()); storageBuf.append("|"); storageBuf.append(vol.getVolumeType().name()); storageBuf.append("-->Pool("); storageBuf.append(_storage.get(vol).getId());
if (volume.getVolumeType().equals(Volume.Type.ROOT)) { UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), Volume.class.getName(), volume.getUuid(), volume.isDisplayVolume());
} else if (type.equals(Type.ROOT)) { vol.setDeviceId(0l); } else {
if (volume.getVolumeType().equals(Volume.Type.ROOT)) {
private boolean checkHypervisorCompatibility(HypervisorType hyperType, Volume.Type volType, Storage.StoragePoolType poolType){ if(HypervisorType.LXC.equals(hyperType)){ if(Volume.Type.ROOT.equals(volType)){ //LXC ROOT disks supports NFS and local storage pools only if(!(Storage.StoragePoolType.NetworkFilesystem.equals(poolType) || Storage.StoragePoolType.Filesystem.equals(poolType)) ){ s_logger.debug("StoragePool does not support LXC ROOT disk, skipping this pool"); return false; } } else if (Volume.Type.DATADISK.equals(volType)){ //LXC DATA disks supports RBD storage pool only if(!Storage.StoragePoolType.RBD.equals(poolType)){ s_logger.debug("StoragePool does not support LXC DATA disk, skipping this pool"); return false; } } } return true; } }
@Override public void doInTransactionWithoutResult(TransactionStatus status) { for (VolumeVO vol : volumesForVm) { if (vol.getVolumeType().equals(Type.ROOT)) { // Destroy volume if not already destroyed boolean volumeAlreadyDestroyed = (vol.getState() == Volume.State.Destroy || vol.getState() == Volume.State.Expunged || vol.getState() == Volume.State.Expunging); if (!volumeAlreadyDestroyed) { volService.destroyVolume(vol.getId()); } else { s_logger.debug("Skipping destroy for the volume " + vol + " as its in state " + vol.getState().toString()); } toBeExpunged.add(vol); } else { if (s_logger.isDebugEnabled()) { s_logger.debug("Detaching " + vol); } _volsDao.detachVolume(vol.getId()); } } } });
public VDI prepareManagedDisk(final Connection conn, final DiskTO disk, final long vmId, final String vmName) throws Exception { final Map<String, String> details = disk.getDetails(); if (details == null) { return null; } final boolean isManaged = new Boolean(details.get(DiskTO.MANAGED)).booleanValue(); if (!isManaged) { return null; } final String iqn = details.get(DiskTO.IQN); final Set<SR> srNameLabels = SR.getByNameLabel(conn, iqn); if (srNameLabels.size() != 0) { return null; } final String vdiNameLabel = Volume.Type.ROOT.equals(disk.getType()) ? ("ROOT-" + vmId) : (vmName + "-DATA"); return prepareManagedStorage(conn, details, null, vdiNameLabel); }
@Override public List<VolumeVO> findByPoolId(long poolId) { SearchCriteria<VolumeVO> sc = AllFieldsSearch.create(); sc.setParameters("poolId", poolId); sc.setParameters("notDestroyed", Volume.State.Destroy); sc.setParameters("vType", Volume.Type.ROOT.toString()); return listBy(sc); }
private void validateVolumes(List<VolumeVO> volumes) { for (VolumeVO volume : volumes) { if (!(volume.getVolumeType() == Volume.Type.ROOT || volume.getVolumeType() == Volume.Type.DATADISK)) { throw new InvalidParameterValueException("Please specify volume of type " + Volume.Type.DATADISK.toString() + " or " + Volume.Type.ROOT.toString()); } } }