public boolean isInternal() { return isFileDomain() || isBlockDomain(); }
public boolean hasRawBlock() { if (getVolumeFormat() != VolumeFormat.RAW) { return false; } for (StorageType type : getStorageTypes()) { if (type.isBlockDomain()) { return true; } } return false; }
public VolumeFormat getDiskVolumeFormat(VolumeType volumeType, StorageType storageType) { if (storageType.isFileDomain()) { return VolumeFormat.RAW; } else if (storageType.isBlockDomain()) { switch (volumeType) { case Sparse: return VolumeFormat.COW; case Preallocated: return VolumeFormat.RAW; default: return VolumeFormat.Unassigned; } } else if (storageType.isManagedBlockStorage()) { return volumeType == VolumeType.Preallocated ? VolumeFormat.RAW : VolumeFormat.Unassigned; } else { return VolumeFormat.Unassigned; } }
@Test public void testIsBlockDomain() { assertTrue(StorageType.FCP.isBlockDomain()); assertTrue(StorageType.ISCSI.isBlockDomain()); assertFalse(StorageType.NFS.isBlockDomain()); assertFalse(StorageType.LOCALFS.isBlockDomain()); assertFalse(StorageType.POSIXFS.isBlockDomain()); assertFalse(StorageType.GLUSTERFS.isBlockDomain()); assertFalse(StorageType.GLANCE.isBlockDomain()); assertFalse(StorageType.CINDER.isBlockDomain()); assertFalse(StorageType.MANAGED_BLOCK_STORAGE.isBlockDomain()); }
private void updateProblematicDisk(DiskModel diskModel) { StorageDomain storageDomain = diskModel.getStorageDomain().getSelectedItem(); if (storageDomain == null) { return; } String diskAlias = diskModel.getDisk().getDiskAlias(); if (storageDomain.getStorageType().isBlockDomain()) { if (!problematicDisksForWarning.contains(diskAlias)) { problematicDisksForWarning.add(diskAlias); } } else { problematicDisksForWarning.remove(diskAlias); } if (!problematicDisksForWarning.isEmpty()) { getDynamicWarning().setEntity(messages.moveDisksPreallocatedWarning( String.join(", ", problematicDisksForWarning))); //$NON-NLS-1$ getDynamicWarning().setIsAvailable(true); } else { getDynamicWarning().setIsAvailable(false); } }
@Inject public ImportVmFromExternalSourceModel(VmImportGeneralModel vmImportGeneralModel, VmImportDiskListModel importDiskListModel, VmImportInterfaceListModel vmImportInterfaceListModel, ClusterListModel<Void> cluster, QuotaListModel clusterQuota) { super(vmImportGeneralModel, importDiskListModel, vmImportInterfaceListModel, cluster, clusterQuota); getStorage().getSelectedItemChangedEvent().addListener((ev, sender, args) -> { @SuppressWarnings("unchecked") ListModel<StorageDomain> list = (ListModel<StorageDomain>) sender; if (list.getSelectedItem() != null && list.getSelectedItem().getStorageType().isBlockDomain() && containsKvmOrigin()) { setMessage(constants.kvmBlockDomainWraning()); } else { setMessage(""); //$NON-NLS-1$ } }); }
@Override protected void updateVolumeType(StorageType storageType) { // In case the user didn't select any specific allocation policy, it will be change according to the storage // domain type if (storageType.isManagedBlockStorage()) { getVolumeType().setSelectedItem(VolumeType.Preallocated); getVolumeType().setIsChangeable(false); } else if (!isUserSelectedVolumeType) { getVolumeType().setSelectedItem(storageType.isBlockDomain() ? VolumeType.Preallocated : VolumeType.Sparse); getVolumeType().setIsChangeable(true); } }
private boolean isEditAvailable(StorageDomain storageDomain) { if (storageDomain == null || (storageDomain.getStorageType().isCinderDomain() && !storageDomain.getStorageType() .isManagedBlockStorage())) { return false; } boolean isEditAvailable; boolean isActive = storageDomain.getStorageDomainSharedStatus() == StorageDomainSharedStatus.Active || storageDomain.getStorageDomainSharedStatus() == StorageDomainSharedStatus.Mixed; boolean isInMaintenance = storageDomain.getStatus() == StorageDomainStatus.Maintenance || storageDomain.getStatus() == StorageDomainStatus.PreparingForMaintenance; boolean isUnattached = storageDomain.getStorageDomainSharedStatus() == StorageDomainSharedStatus.Unattached || storageDomain.getStatus() == StorageDomainStatus.Detaching; boolean isInternalDomain = storageDomain.getStorageDomainType().isInternalDomain(); boolean isBlockStorage = storageDomain.getStorageType().isBlockDomain(); isEditAvailable = isActive || isBlockStorage || ((isInMaintenance || isUnattached) && isInternalDomain); return isEditAvailable; }
protected void updateWipeAfterDeleteChangeability() { if (!isVmAttachedToPool()) { getIsWipeAfterDelete().setIsChangeable( !(getDiskStorageType().getEntity() == DiskStorageType.IMAGE && getStorageDomain().getSelectedItem() != null && getStorageDomain().getSelectedItem().getStorageType().isBlockDomain() && getPassDiscard().getIsChangable() && getPassDiscard().getEntity()), constants.theUnderlyingStorageDoesNotSupportWipeAfterDeleteWhenDiscardIsEnabled()); } else { getIsWipeAfterDelete().setIsChangeable(false); } }
protected void checkDestFormatCompatibility() { for (Object item : getItems()) { VM vm = ((ImportVmData) item).getVm(); if (vm.getDiskMap() != null) { for (Map.Entry<Guid, Disk> pair : vm.getDiskMap().entrySet()) { DiskImage disk = (DiskImage) pair.getValue(); if (disk.getVolumeType() == VolumeType.Sparse && disk.getVolumeFormat() == VolumeFormat.RAW && getDiskImportData(disk.getId()) != null && getDiskImportData(disk.getId()).getSelectedStorageDomain() .getStorageType().isBlockDomain()) { ((ImportVmData) item).setWarning(ConstantsManager.getInstance().getConstants() .importSparseDiskToBlockDeviceMustCollapseSnapshots()); ((ImportVmData) item).getCollapseSnapshots().setEntity(true); ((ImportVmData) item).getCollapseSnapshots().setIsChangeable(false); ((ImportVmData) item).getCollapseSnapshots() .setChangeProhibitionReason(ConstantsManager.getInstance() .getConstants() .importSparseDiskToBlockDeviceMustCollapseSnapshots()); onPropertyChanged(new PropertyChangedEventArgs(ON_DISK_LOAD)); } } } } }
@Override public boolean validate() { StorageType storageType = getStorageDomain().getSelectedItem() == null ? StorageType.UNKNOWN : getStorageDomain().getSelectedItem().getStorageType(); IntegerValidation sizeValidation = new IntegerValidation(); if (storageType.isBlockDomain()) { Integer maxBlockDiskSize = (Integer) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigValues.MaxBlockDiskSize); sizeValidation.setMaximum(maxBlockDiskSize - getSize().getEntity()); } getSizeExtend().validateEntity(new IValidation[] { new NotEmptyValidation(), new NonNegativeLongNumberValidation(), sizeValidation }); return super.validate() && getSizeExtend().getIsValid(); }
private void updateShareableDiskEnabled() { StorageDomain storageDomain = getStorageDomain().getSelectedItem(); if (storageDomain != null && (StorageType.GLUSTERFS == storageDomain.getStorageType() || storageDomain.getStorageType().equals(StorageType.MANAGED_BLOCK_STORAGE))) { getIsShareable().setEntity(false); getIsShareable().setIsChangeable(false, constants.shareableDiskNotSupported()); } else if (getVolumeType().getSelectedItem() == VolumeType.Sparse && storageDomain != null && storageDomain.getStorageType().isBlockDomain()) { getIsShareable().setEntity(false); getIsShareable().setIsChangeable(false, constants.shareableDiskNotSupportedByConfiguration()); } else { getIsShareable().setIsChangeable(isEditEnabled(), constants.shareableDiskNotSupportedOnRunningVM()); } }
@Override public boolean validate() { if (getDiskStorageType().getEntity() == DiskStorageType.LUN && getSanStorageModelBase() != null) { getSanStorageModelBase().validate(); if (!getSanStorageModelBase().getIsValid()) { return false; } ArrayList<String> partOfSdLunsMessages = getSanStorageModelBase().getPartOfSdLunsMessages(); if (!partOfSdLunsMessages.isEmpty() && !getSanStorageModelBase().isForce()) { forceCreationWarning(partOfSdLunsMessages); return false; } } StorageType storageType = getStorageDomain().getSelectedItem() == null ? StorageType.UNKNOWN : getStorageDomain().getSelectedItem().getStorageType(); IntegerValidation sizeValidation = new IntegerValidation(); sizeValidation.setMinimum(getMinimumDiskSize()); if (storageType.isBlockDomain()) { sizeValidation.setMaximum((Integer) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigValues.MaxBlockDiskSize)); } getSize().validateEntity(new IValidation[] { new NotEmptyValidation(), sizeValidation }); getStorageDomain().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); return super.validate() && getSize().getIsValid() && getStorageDomain().getIsValid(); }
private void updatePassDiscardChangeabilityForDiskImage() { if (getStorageDomain().getSelectedItem() == null) { return; } if (getStorageDomain().getSelectedItem().getStorageType().isFileDomain()) { getPassDiscard().setIsChangeable(true); } else if (getStorageDomain().getSelectedItem().getStorageType().isBlockDomain()) { if (!getStorageDomain().getSelectedItem().getSupportsDiscard()) { getPassDiscard().setIsChangeable(false, constants.discardIsNotSupportedByUnderlyingStorage()); getPassDiscard().setEntity(false); } else { getPassDiscard().setIsChangeable(!getIsWipeAfterDelete().getEntity(), constants.theUnderlyingStorageDoesNotSupportDiscardWhenWipeAfterDeleteIsEnabled()); if (!getPassDiscard().getIsChangable()) { getPassDiscard().setEntity(false); } } } }
private void updateDiscardAfterDelete() { if (getDataCenter().getSelectedItem() != null && getAvailableStorageTypeItems().getSelectedItem() != null) { boolean isBlockDomain = getAvailableStorageTypeItems().getSelectedItem().isBlockDomain(); boolean isStorageDomainUnattached = getDataCenter().getSelectedItem().getId().equals(Guid.Empty); if (!isBlockDomain || isStorageDomainUnattached) { getDiscardAfterDelete().setIsAvailable(false); getDiscardAfterDelete().setEntity(false); return; } getDiscardAfterDelete().setIsAvailable(true); if (getDiscardAfterDelete().getIsAvailable()) { if (isNewStorage()) { getDiscardAfterDelete().setEntity(true); } else { getDiscardAfterDelete().setEntity(getStorage().getDiscardAfterDelete()); } } else { getDiscardAfterDelete().setEntity(false); } } }