Gilad Chaplik has uploaded a new change for review. Change subject: frontend: add disk profile to disk flow ......................................................................
frontend: add disk profile to disk flow Change-Id: I30047ddcb6364660df6c62355f5f48526859b2fc Signed-off-by: Gilad Chaplik <gchap...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.ui.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationView.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskGeneralModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/disk/SubTabDiskGeneralView.java 12 files changed, 193 insertions(+), 21 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/13/29813/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index b288484..a9b1d28 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -984,6 +984,9 @@ @DefaultStringValue("Target") String targetDisk(); + @DefaultStringValue("Disk Profile") + String diskProfile(); + @DefaultStringValue("Quota") String quotaDisk(); @@ -1112,6 +1115,9 @@ @DefaultStringValue("Data Center") String dcVmDiskPopup(); + @DefaultStringValue("Disk Profile") + String diskProfileVmDiskPopup(); + @DefaultStringValue("Quota") String quotaVmDiskPopup(); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java index e25c949..0b42b6b 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java @@ -13,6 +13,7 @@ import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VolumeType; +import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile; import org.ovirt.engine.core.common.utils.SizeConverter; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.ui.common.CommonApplicationConstants; @@ -124,6 +125,11 @@ @Path("storageDomain.selectedItem") @WithElementId("storageDomain") ListModelListBoxEditor<StorageDomain> storageDomainEditor; + + @UiField(provided = true) + @Path("diskProfile.selectedItem") + @WithElementId("diskProfile") + ListModelListBoxEditor<DiskProfile> diskProfileEditor; @UiField(provided = true) @Path("quota.selectedItem") @@ -268,6 +274,7 @@ storageDomainEditor.setLabel(constants.storageDomainVmDiskPopup()); hostListEditor.setLabel(constants.hostVmDiskPopup()); quotaEditor.setLabel(constants.quotaVmDiskPopup()); + diskProfileEditor.setLabel(constants.diskProfileVmDiskPopup()); interfaceEditor.setLabel(constants.interfaceVmDiskPopup()); volumeTypeEditor.setLabel(constants.allocationDisk()); storageTypeEditor.setLabel(constants.storageTypeVmDiskPopup()); @@ -291,6 +298,13 @@ @Override public String render(VDS vds) { return vds == null ? "" : vds.getName(); //$NON-NLS-1$ + } + }); + + diskProfileEditor = new ListModelListBoxEditor<DiskProfile>(new NullSafeRenderer<DiskProfile>() { + @Override + protected String renderNullSafe(DiskProfile object) { + return object.getName(); } }); @@ -799,6 +813,7 @@ volumeTypeEditor.setTabIndex(nextTabIndex++); datacenterEditor.setTabIndex(nextTabIndex++); storageDomainEditor.setTabIndex(nextTabIndex++); + diskProfileEditor.setTabIndex(nextTabIndex++); quotaEditor.setTabIndex(nextTabIndex++); hostListEditor.setTabIndex(nextTabIndex++); storageTypeEditor.setTabIndex(nextTabIndex++); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml index 159da4f..f4ef5e4 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml @@ -110,6 +110,7 @@ <e:ListModelListBoxEditor ui:field="volumeTypeEditor" addStyleNames="{style.boxEditor}"/> <e:ListModelListBoxEditor ui:field="datacenterEditor" addStyleNames="{style.boxEditor}"/> <e:ListModelListBoxEditor ui:field="storageDomainEditor" addStyleNames="{style.boxEditor}"/> + <e:ListModelListBoxEditor ui:field="diskProfileEditor" addStyleNames="{style.boxEditor}"/> <e:ListModelListBoxEditor ui:field="quotaEditor" addStyleNames="{style.boxEditor}"/> <e:ListModelListBoxEditor ui:field="hostListEditor" addStyleNames="{style.boxEditor}"/> <e:ListModelListBoxEditor ui:field="storageTypeEditor" addStyleNames="{style.boxEditor}"/> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.java index 11ae99f..a687567 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.VolumeType; +import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile; import org.ovirt.engine.core.common.utils.SizeConverter; import org.ovirt.engine.ui.common.CommonApplicationConstants; import org.ovirt.engine.ui.common.idhandler.HasElementId; @@ -79,6 +80,10 @@ ListModelListBoxEditor<StorageDomain> storageListEditor; @UiField(provided = true) + @Path(value = "diskProfile.selectedItem") + ListModelListBoxEditor<DiskProfile> diskProfileListEditor; + + @UiField(provided = true) @Path(value = "quota.selectedItem") ListModelListBoxEditor<Quota> quotaListEditor; @@ -90,6 +95,7 @@ public int setTabIndexes(int nextTabIndex) { diskAliasEditor.setTabIndex(nextTabIndex++); storageListEditor.setTabIndex(nextTabIndex++); + diskProfileListEditor.setTabIndex(nextTabIndex++); return nextTabIndex; } @@ -107,6 +113,13 @@ storageListEditor = new ListModelListBoxEditor<StorageDomain>(new StorageDomainFreeSpaceRenderer<StorageDomain>()); sourceStorageListEditor = new ListModelListBoxEditor<StorageDomain>(new StorageDomainFreeSpaceRenderer<StorageDomain>()); + + diskProfileListEditor = new ListModelListBoxEditor<DiskProfile>(new NullSafeRenderer<DiskProfile>() { + @Override + protected String renderNullSafe(DiskProfile object) { + return object.getName(); + } + }); quotaListEditor = new ListModelListBoxEditor<Quota>(new NullSafeRenderer<Quota>() { @Override @@ -126,6 +139,7 @@ updateEditorStyle(volumeTypeListEditor, editorStyle); updateEditorStyle(sourceStorageListEditor, editorStyle); updateEditorStyle(storageListEditor, editorStyle); + updateEditorStyle(diskProfileListEditor, editorStyle); updateEditorStyle(quotaListEditor, editorStyle); } @@ -178,6 +192,8 @@ ElementIdUtils.createElementId(elementId, "sourceStorageDomain")); //$NON-NLS-1$ storageListEditor.setElementId( ElementIdUtils.createElementId(elementId, "storageDomain")); //$NON-NLS-1$ + diskProfileListEditor.setElementId( + ElementIdUtils.createElementId(elementId, "diskProfile")); //$NON-NLS-1$ quotaListEditor.setElementId( ElementIdUtils.createElementId(elementId, "quota")); //$NON-NLS-1$ } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.ui.xml index 14b1e7b..361e8b4 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationItemView.ui.xml @@ -35,6 +35,7 @@ <e:ListModelListBoxEditor ui:field="volumeTypeListEditor" /> <e:ListModelListBoxEditor ui:field="sourceStorageListEditor" /> <e:ListModelListBoxEditor ui:field="storageListEditor" /> + <e:ListModelListBoxEditor ui:field="diskProfileListEditor" /> <e:ListModelListBoxEditor ui:field="quotaListEditor" /> </g:HorizontalPanel> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationView.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationView.java index aaf6d7e..d808e7f 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationView.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/DisksAllocationView.java @@ -94,6 +94,7 @@ listHeader.addColumn(new EmptyColumn(), constants.sourceDisk(), width); listHeader.addColumn(new EmptyColumn(), constants.targetDisk(), width); + listHeader.addColumn(new EmptyColumn(), constants.diskProfile(), width); if (showQuota) listHeader.addColumn(new EmptyColumn(), constants.quotaDisk(), width); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskGeneralModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskGeneralModel.java index 8969e0b..5504b13 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskGeneralModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskGeneralModel.java @@ -1,7 +1,5 @@ package org.ovirt.engine.ui.uicommonweb.models.disks; -import com.google.gwt.i18n.client.DateTimeFormat; - import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; @@ -13,6 +11,8 @@ import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; import org.ovirt.engine.ui.uicompat.external.StringUtils; + +import com.google.gwt.i18n.client.DateTimeFormat; public class DiskGeneralModel extends EntityModel { @@ -111,6 +111,22 @@ } } + private String privateDiskProfileName; + + public String getDiskProfileName() + { + return privateDiskProfileName; + } + + public void setDiskProfileName(String value) + { + if (!ObjectUtils.objectsEqual(privateDiskProfileName, value)) + { + privateDiskProfileName = value; + onPropertyChanged(new PropertyChangedEventArgs("DiskProfile Name")); //$NON-NLS-1$ + } + } + private String privateQuotaName; public String getQuotaName() @@ -205,6 +221,7 @@ if (isImage()) { DiskImage diskImage = (DiskImage) disk; + setDiskProfileName(diskImage.getDiskProfileName()); setQuotaName(StringUtils.join(diskImage.getQuotaNames(), ", ")); //$NON-NLS-1$ setQuotaAvailable(!diskImage.getQuotaEnforcementType().equals(QuotaEnforcementTypeEnum.DISABLED)); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java index fc4fc83..80243ff 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java @@ -11,6 +11,7 @@ import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.VolumeType; +import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -38,10 +39,10 @@ protected static final UIConstants constants = ConstantsManager.getInstance().getConstants(); protected static final UIMessages messages = ConstantsManager.getInstance().getMessages(); - private final IEventListener quota_storageEventListener = new IEventListener() { + private final IEventListener storageDomainEventListener = new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - updateDisksQuota(sender); + updateDisks(sender); } }; @@ -63,8 +64,8 @@ sortDisks(); for (final DiskModel diskModel : disks) { - diskModel.getStorageDomain().getSelectedItemChangedEvent().removeListener(quota_storageEventListener); - diskModel.getStorageDomain().getSelectedItemChangedEvent().addListener(quota_storageEventListener); + diskModel.getStorageDomain().getSelectedItemChangedEvent().removeListener(storageDomainEventListener); + diskModel.getStorageDomain().getSelectedItemChangedEvent().addListener(storageDomainEventListener); diskModel.getStorageDomain().getItemsChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { @@ -183,6 +184,48 @@ } } + private void updateDiskProfile(Guid storageDomainId, final ListModel<DiskProfile> isItem) { + Frontend.getInstance().runQuery(VdcQueryType.GetDiskProfilesByStorageDomainId, + new IdQueryParameters(storageDomainId), + new AsyncQuery(new INewAsyncCallback() { + + @Override + public void onSuccess(Object model, Object returnValue) { + List<DiskProfile> list = + (List<DiskProfile>) ((VdcQueryReturnValue) returnValue).getReturnValue(); + if (list != null) { + if (isItem == null) { + for (DiskModel diskModel : DisksAllocationModel.this.getDisks()) { + diskModel.getDiskProfile().setItems(list); + for (DiskProfile diskProfile : list) { + if (diskModel.getDisk() instanceof DiskImage + && + diskProfile.getId() + .equals(((DiskImage) diskModel.getDisk()).getDiskProfileId())) { + diskModel.getDiskProfile().setSelectedItem(diskProfile); + } + } + } + } else { + DiskProfile selectedDiskProfile = null; + if (isItem.getSelectedItem() != null) { + selectedDiskProfile = isItem.getSelectedItem(); + } + isItem.setItems(list); + if (selectedDiskProfile != null && list.size() > 1) { + for (DiskProfile diskProfile : list) { + if (diskProfile.getId().equals(selectedDiskProfile.getId())) { + isItem.setSelectedItem(diskProfile); + } + } + } + } + } + + } + })); + } + @Override protected void onPropertyChanged(PropertyChangedEventArgs e) { @@ -216,17 +259,18 @@ } for (DiskModel diskModel : disks) { - StorageDomain storageDomain = (StorageDomain) diskModel.getStorageDomain().getSelectedItem(); + StorageDomain storageDomain = diskModel.getStorageDomain().getSelectedItem(); DiskImage diskImage = (DiskImage) diskModel.getDisk(); diskImage.setStorageIds(new ArrayList<Guid>(Arrays.asList(storageDomain.getId()))); - diskImage.setDiskAlias((String) diskModel.getAlias().getEntity()); - + diskImage.setDiskAlias(diskModel.getAlias().getEntity()); + DiskProfile diskProfile = diskModel.getDiskProfile().getSelectedItem(); + diskImage.setDiskProfileId(diskProfile != null ? diskProfile.getId() : null); if (diskModel.getQuota().getSelectedItem() != null) { - diskImage.setQuotaId(((Quota) diskModel.getQuota().getSelectedItem()).getId()); + diskImage.setQuotaId(diskModel.getQuota().getSelectedItem().getId()); } if (diskModel.getVolumeType().getIsAvailable()) { - VolumeType volumeType = (VolumeType) diskModel.getVolumeType().getSelectedItem(); + VolumeType volumeType = diskModel.getVolumeType().getSelectedItem(); diskImage.setVolumeType(volumeType); diskImage.setvolumeFormat(AsyncDataProvider.getDiskVolumeFormat( volumeType, storageDomain.getStorageType())); @@ -244,12 +288,13 @@ } } - private void updateDisksQuota(Object sender) { + private void updateDisks(Object sender) { StorageDomain storageDomain = (StorageDomain) ((ListModel) sender).getSelectedItem(); if (storageDomain != null) { for (DiskModel innerDisk : disks) { if (innerDisk.getStorageDomain().equals(sender)) { updateQuota(storageDomain.getId(), innerDisk.getQuota()); + updateDiskProfile(storageDomain.getId(), innerDisk.getDiskProfile()); break; } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java index 74a013d..d0ba7e6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java @@ -11,13 +11,13 @@ import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; -import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.comparators.NameableComparator; +import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -200,7 +200,7 @@ // Add prohibition reasons if (sourceStorageDomains.isEmpty() || destStorageDomains.isEmpty()) { - problematicDisks.add((String) disk.getAlias().getEntity()); + problematicDisks.add(disk.getAlias().getEntity()); updateChangeability(disk, isDiskBasedOnTemplate, sourceStorageDomains.isEmpty(), destStorageDomains.isEmpty()); } @@ -319,14 +319,16 @@ ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); for (DiskModel diskModel : getDisks()) { - StorageDomain destStorageDomain = (StorageDomain) diskModel.getStorageDomain().getSelectedItem(); + StorageDomain destStorageDomain = diskModel.getStorageDomain().getSelectedItem(); StorageDomain sourceStorageDomain = - (StorageDomain) diskModel.getSourceStorageDomain().getSelectedItem(); + diskModel.getSourceStorageDomain().getSelectedItem(); Guid sourceStorageDomainGuid = sourceStorageDomain != null ? sourceStorageDomain.getId() : Guid.Empty; DiskImage disk = (DiskImage) diskModel.getDisk(); + DiskProfile diskProfile = diskModel.getDiskProfile().getSelectedItem(); + disk.setDiskProfileId(diskProfile != null ? diskProfile.getId() : null); if (diskModel.getQuota().getSelectedItem() != null) { - disk.setQuotaId(((Quota) diskModel.getQuota().getSelectedItem()).getId()); + disk.setQuotaId(diskModel.getQuota().getSelectedItem().getId()); } if (destStorageDomain == null || sourceStorageDomain == null) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java index 71086ae..be723e3 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; +import java.util.List; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.Disk; @@ -25,6 +26,7 @@ import org.ovirt.engine.core.common.businessentities.VolumeFormat; import org.ovirt.engine.core.common.businessentities.VolumeType; import org.ovirt.engine.core.common.businessentities.comparators.NameableComparator; +import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; @@ -348,7 +350,8 @@ VdcQueryType.GetStoragePoolById, VdcQueryType.GetNextAvailableDiskAliasNameByVMId, VdcQueryType.GetPermittedStorageDomainsByStoragePoolId, VdcQueryType.GetAllVdsByStoragePool, VdcQueryType.GetAllAttachableDisks, VdcQueryType.GetAllDisksByVmId, - VdcQueryType.GetAllRelevantQuotasForStorage, VdcQueryType.OsRepository }); + VdcQueryType.GetAllRelevantQuotasForStorage, VdcQueryType.OsRepository, + VdcQueryType.GetDiskProfilesByStorageDomainId }); // Create and set commands UICommand onSaveCommand = new UICommand("OnSave", this); //$NON-NLS-1$ @@ -561,6 +564,46 @@ private void setInterfaces(ArrayList<DiskInterface> diskInterfaces) { getDiskInterface().setItems(diskInterfaces); setDefaultInterface(); + } + + private void updateDiskProfiles(StoragePool selectedItem) { + StorageDomain storageDomain = getStorageDomain().getSelectedItem(); + if (storageDomain == null) { + return; + } + + Frontend.getInstance().runQuery(VdcQueryType.GetDiskProfilesByStorageDomainId, + new IdQueryParameters(storageDomain.getId()), + new AsyncQuery(this, + new INewAsyncCallback() { + @Override + public void onSuccess(Object innerModel, Object innerReturnValue) { + List<DiskProfile> diskProfiles = + ((VdcQueryReturnValue) innerReturnValue).getReturnValue(); + if (diskProfiles != null && !diskProfiles.isEmpty()) { + getDiskProfile().setItems(diskProfiles); + } + + Guid defaultProfileId = + getDisk() != null ? ((DiskImage) getDisk()).getDiskProfileId() : null; + if (defaultProfileId != null) { + for (DiskProfile profile : diskProfiles) { + if (profile.getId().equals(defaultProfileId)) { + getDiskProfile().setSelectedItem(profile); + return; + } + } + DiskProfile diskProfile = new DiskProfile(); + diskProfile.setId(defaultProfileId); + if (getDisk() != null) { + diskProfile.setName(getDiskImage().getDiskProfileName()); + } + diskProfiles.add(diskProfile); + getDiskProfile().setItems(diskProfiles); + getDiskProfile().setSelectedItem(diskProfile); + } + } + }, getHash())); } private void updateQuota(StoragePool datacenter) { @@ -779,6 +822,7 @@ updateWipeAfterDelete(selectedStorage.getStorageType()); } updateQuota(getDataCenter().getSelectedItem()); + updateDiskProfiles(getDataCenter().getSelectedItem()); } public boolean validate() { @@ -796,7 +840,10 @@ getQuota().validateSelectedItem(new IValidation[] { new NotEmptyQuotaValidation() }); } - return getAlias().getIsValid() && getDescription().getIsValid() && getQuota().getIsValid() && getDiskInterface().getIsValid(); + getDiskProfile().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); + + return getAlias().getIsValid() && getDescription().getIsValid() && getQuota().getIsValid() + && getDiskInterface().getIsValid() && getDiskProfile().getIsValid(); } protected void forceCreationWarning(ArrayList<String> usedLunsMessages) { @@ -868,6 +915,9 @@ setDisk(lunDisk); } + if (getDisk().getDiskStorageType() == DiskStorageType.IMAGE) { + ((DiskImage) getDisk()).setDiskProfileId(getDiskProfile().getSelectedItem().getId()); + } getDisk().setDiskAlias(getAlias().getEntity()); getDisk().setDiskDescription(getDescription().getEntity()); getDisk().setDiskInterface(getDiskInterface().getSelectedItem()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java index ba87d44..fad3385 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java @@ -6,6 +6,7 @@ import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VolumeType; +import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; @@ -25,6 +26,7 @@ private ListModel<DiskInterface> diskInterface; private ListModel<StorageDomain> sourceStorageDomain; private ListModel<StorageDomain> storageDomain; + private ListModel<DiskProfile> diskProfile; private ListModel<Quota> quota; private boolean pluggedToRunningVm; @@ -109,6 +111,14 @@ this.storageDomain = storageDomain; } + public ListModel<DiskProfile> getDiskProfile() { + return diskProfile; + } + + public void setDiskProfile(ListModel<DiskProfile> diskProfile) { + this.diskProfile = diskProfile; + } + public ListModel<Quota> getQuota() { return quota; } @@ -133,6 +143,7 @@ setSourceStorageDomain(new ListModel<StorageDomain>()); setDiskInterface(new ListModel<DiskInterface>()); setStorageDomain(new ListModel<StorageDomain>()); + setDiskProfile(new ListModel<DiskProfile>()); setQuota(new ListModel<Quota>()); getQuota().setIsAvailable(false); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/disk/SubTabDiskGeneralView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/disk/SubTabDiskGeneralView.java index 4cdb86c..0b18d22 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/disk/SubTabDiskGeneralView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/disk/SubTabDiskGeneralView.java @@ -35,6 +35,7 @@ TextBoxLabel description = new TextBoxLabel(); TextBoxLabel diskId = new TextBoxLabel(); TextBoxLabel lunId = new TextBoxLabel(); + TextBoxLabel diskProfileName = new TextBoxLabel(); TextBoxLabel quotaName = new TextBoxLabel(); TextBoxLabel alignment = new TextBoxLabel(); @@ -58,7 +59,7 @@ driver.initialize(this); // Build a form using the FormBuilder - formBuilder = new FormBuilder(formPanel, 1, 6); + formBuilder = new FormBuilder(formPanel, 1, 7); formBuilder.addFormItem(new FormItem(constants.aliasDisk(), alias, 0, 0)); formBuilder.addFormItem(new FormItem(constants.descriptionDisk(), description, 1, 0)); @@ -70,7 +71,13 @@ return getDetailModel().isLun(); } }); - formBuilder.addFormItem(new FormItem(constants.quota(), quotaName, 5, 0) { + formBuilder.addFormItem(new FormItem(constants.diskProfile(), diskProfileName, 5, 0) { + @Override + public boolean getIsAvailable() { + return !getDetailModel().isLun(); + } + }); + formBuilder.addFormItem(new FormItem(constants.quota(), quotaName, 6, 0) { @Override public boolean getIsAvailable() { return getDetailModel().isQuotaAvailable(); -- To view, visit http://gerrit.ovirt.org/29813 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I30047ddcb6364660df6c62355f5f48526859b2fc Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches