Daniel Erez has uploaded a new change for review. Change subject: webadmin: cinder integration ......................................................................
webadmin: cinder integration WIP. Will be divided to separate patches. This patch includes: * SystemTree - openstack icon for volume provider - SystemTreeItemCell - add OPENSTACK_VOLUME to relevant switch. * add cinder to Enums properties - Updating Enums.java/Enums.properties. * adding cinder entities to Common.gwt.xml - Adding relevant business entities to Common.gwt.xml * StorageDomainStatus - OpenStack icon - Openstack icon for all relevant domains in Status column. * support openstack volume provider * Storage main-tab - relevant tabs for Cinder domains - Storage main-tab - display relevant sub-tabs for cinder domains * Disks tabs - add Cinder disks table - Disks main-tab / VMs -> Disks sub-tab: added a new table for Cinder disks. * Add disk dialog - support Cinder disks Change-Id: Ied68cb17829a211a808e2a217e35162e495f054d Signed-off-by: Daniel Erez <[email protected]> --- 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/renderer/StorageDomainFreeSpaceRenderer.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageDomainsColumn.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewRadioGroup.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/vm/BaseVmDiskListModelTable.java M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.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/EditDiskModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewDiskModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainSharedStatusColumn.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainStatusColumn.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java 22 files changed, 266 insertions(+), 119 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/59/35359/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 68da609..11a8fb0 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 @@ -1293,6 +1293,10 @@ @DefaultStringValue("External (Direct LUN)") String externalDisk(); + @DefaultStringValue("Cinder") + String cinderDisk(); + + @DefaultStringValue("LUNs > Targets") String storageIscsiPopupLunToTargetsTabLabel(); @@ -1409,6 +1413,9 @@ @DefaultStringValue("Direct LUN") String lunDisksLabel(); + @DefaultStringValue("Cinder") + String cinderDisksLabel(); + @DefaultStringValue("Current") String currentQuota(); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/StorageDomainFreeSpaceRenderer.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/StorageDomainFreeSpaceRenderer.java index bd171eb..7948a36 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/StorageDomainFreeSpaceRenderer.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/renderer/StorageDomainFreeSpaceRenderer.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.common.widget.renderer; import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.ui.common.CommonApplicationMessages; import com.google.gwt.core.client.GWT; @@ -15,7 +16,7 @@ return ""; //$NON-NLS-1$ } - if (storageDomain.getAvailableDiskSize() == null) { + if (storageDomain.getAvailableDiskSize() == null || storageDomain.getStorageType() == StorageType.CINDER) { // 'getAvailableDiskSize' may return null when there's a connectivity issue with the storage domain return storageDomain.getStorageName(); } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageDomainsColumn.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageDomainsColumn.java index 855d703..a5858ed 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageDomainsColumn.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StorageDomainsColumn.java @@ -19,7 +19,7 @@ @Override public String getValue(Disk object) { - if (object.getDiskStorageType() != DiskStorageType.IMAGE) { + if (object.getDiskStorageType() != DiskStorageType.IMAGE && object.getDiskStorageType() != DiskStorageType.CINDER) { return CONSTANTS.empty(); } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java index 5cef61f..72eb0cc 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewColumns.java @@ -133,25 +133,6 @@ } }; - public static final ImageResourceColumn<Disk> lunDiskColumn = new ImageResourceColumn<Disk>() { - @Override - public ImageResource getValue(Disk object) { - setTitle(object.getDiskStorageType() == DiskStorageType.LUN ? getDefaultTitle() : null); - return object.getDiskStorageType() == DiskStorageType.LUN ? - resources.externalDiskIcon() : null; - } - - @Override - public String getDefaultTitle() { - return constants.lunDisksLabel(); - } - - @Override - public ImageResource getDefaultImage() { - return resources.externalDiskIcon(); - } - }; - public static final ImageResourceColumn<Disk> diskContainersIconColumn = new ImageResourceColumn<Disk>() { @Override public ImageResource getValue(Disk object) { @@ -201,9 +182,12 @@ DiskSizeColumn<Disk> column = new DiskSizeColumn<Disk>() { @Override protected Long getRawValue(Disk object) { - return object.getDiskStorageType() == DiskStorageType.IMAGE ? - ((DiskImage) object).getSize() : - (long) (((LunDisk) object).getLun().getDeviceSize() * Math.pow(1024, 3)); + switch (object.getDiskStorageType()) { + case LUN: + return (long) (((LunDisk) object).getLun().getDeviceSize() * Math.pow(1024, 3)); + default: + return object.getSize(); + } } }; @@ -246,11 +230,23 @@ return makeSortable(column, sortBy); } + public static final TextColumnWithTooltip<Disk> getDiskStorageTypeColumn(String sortBy) { + TextColumnWithTooltip<Disk> column = new EnumColumn<Disk, DiskStorageType>() { + @Override + protected DiskStorageType getRawValue(Disk object) { + return object.getDiskStorageType(); + } + }; + + return makeSortable(column, sortBy); + } + public static final TextColumnWithTooltip<Disk> getDateCreatedColumn(String sortBy) { TextColumnWithTooltip<Disk> column = new FullDateTimeColumn<Disk>() { @Override protected Date getRawValue(Disk object) { - return object.getDiskStorageType() == DiskStorageType.IMAGE ? + return object.getDiskStorageType() == DiskStorageType.IMAGE || + object.getDiskStorageType() == DiskStorageType.CINDER ? ((DiskImage) object).getCreationDate() : null; } }; @@ -262,7 +258,8 @@ TextColumnWithTooltip<Disk> column = new EnumColumn<Disk, ImageStatus>() { @Override protected ImageStatus getRawValue(Disk object) { - return object.getDiskStorageType() == DiskStorageType.IMAGE ? + return object.getDiskStorageType() == DiskStorageType.IMAGE || + object.getDiskStorageType() == DiskStorageType.CINDER ? ((DiskImage) object).getImageStatus() : null; } }; diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewRadioGroup.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewRadioGroup.java index 10c05f0..0813af8 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewRadioGroup.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/disks/DisksViewRadioGroup.java @@ -18,6 +18,7 @@ RadioButton allButton; RadioButton imagesButton; RadioButton lunsButton; + RadioButton cinderButton; public DisksViewRadioGroup() { initWidget(getRadioGroupPanel()); @@ -27,10 +28,12 @@ allButton = new RadioButton("diskTypeView"); //$NON-NLS-1$ imagesButton = new RadioButton("diskTypeView"); //$NON-NLS-1$ lunsButton = new RadioButton("diskTypeView"); //$NON-NLS-1$ + cinderButton = new RadioButton("diskTypeView"); //$NON-NLS-1$ allButton.getElement().getStyle().setMarginRight(20, Unit.PX); imagesButton.getElement().getStyle().setMarginRight(20, Unit.PX); lunsButton.getElement().getStyle().setMarginRight(20, Unit.PX); + cinderButton.getElement().getStyle().setMarginRight(20, Unit.PX); FlowPanel buttonsPanel = new FlowPanel(); buttonsPanel.getElement().getStyle().setProperty("marginLeft", "auto"); //$NON-NLS-1$ //$NON-NLS-2$ @@ -38,6 +41,7 @@ buttonsPanel.add(allButton); buttonsPanel.add(imagesButton); buttonsPanel.add(lunsButton); + buttonsPanel.add(cinderButton); setDiskStorageType(null); localize(constants); @@ -49,12 +53,14 @@ allButton.addClickHandler(clickHandler); imagesButton.addClickHandler(clickHandler); lunsButton.addClickHandler(clickHandler); + cinderButton.addClickHandler(clickHandler); } void localize(CommonApplicationConstants constants) { allButton.setText(constants.allDisksLabel()); imagesButton.setText(constants.imageDisksLabel()); lunsButton.setText(constants.lunDisksLabel()); + cinderButton.setText(constants.cinderDisksLabel()); } public RadioButton getAllButton() { @@ -69,15 +75,21 @@ return lunsButton; } + public RadioButton getCinderButton() { + return cinderButton; + } + public DiskStorageType getDiskStorageType() { return imagesButton.getValue() ? DiskStorageType.IMAGE : - lunsButton.getValue() ? DiskStorageType.LUN : null; + lunsButton.getValue() ? DiskStorageType.LUN : + cinderButton.getValue() ? DiskStorageType.CINDER : null; } public void setDiskStorageType(DiskStorageType diskStorageType) { allButton.setValue(diskStorageType == null); imagesButton.setValue(diskStorageType == DiskStorageType.IMAGE); lunsButton.setValue(diskStorageType == DiskStorageType.LUN); + cinderButton.setValue(diskStorageType == DiskStorageType.CINDER); } } 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 48f265f..d4120d4 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 @@ -352,6 +352,18 @@ } }); + diskTypePanel.addRadioButton( + constants.cinderDisk(), + !disk.getIsNew() && disk.getDisk().getDiskStorageType() == DiskStorageType.CINDER, + disk.getIsNew(), + new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + disk.getDiskStorageType().setEntity(DiskStorageType.CINDER); + revealDiskPanel(disk); + } + }); + storageModel = new StorageModel(new NewEditStorageModelBehavior()); // Create IscsiStorageModel diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/BaseVmDiskListModelTable.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/BaseVmDiskListModelTable.java index ca99e53..5b3bc4f 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/BaseVmDiskListModelTable.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/BaseVmDiskListModelTable.java @@ -35,6 +35,7 @@ private static TextColumnWithTooltip<Disk> lunVendorIdColumn; private static TextColumnWithTooltip<Disk> lunProductIdColumn; private static TextColumnWithTooltip<Disk> interfaceColumn; + private static TextColumnWithTooltip<Disk> typeColumn; private static TextColumnWithTooltip<Disk> descriptionColumn; public BaseVmDiskListModelTable( @@ -82,6 +83,7 @@ boolean all = disksViewRadioGroup.getAllButton().getValue(); boolean images = disksViewRadioGroup.getImagesButton().getValue(); boolean luns = disksViewRadioGroup.getLunsButton().getValue(); + boolean cinder = disksViewRadioGroup.getCinderButton().getValue(); getTable().getSelectionModel().clear(); getModel().getDiskViewType().setEntity(disksViewRadioGroup.getDiskStorageType()); @@ -89,29 +91,25 @@ getModel().search(); getTable().ensureColumnPresent( - DisksViewColumns.diskStatusColumn, constants.empty(), all || images || luns, "30px"); //$NON-NLS-1$ + DisksViewColumns.diskStatusColumn, constants.empty(), all || images || luns || cinder, "30px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - aliasColumn, constants.aliasDisk(), all || images || luns, "120px"); //$NON-NLS-1$ + aliasColumn, constants.aliasDisk(), all || images || luns || cinder, "120px"); //$NON-NLS-1$ getTable().ensureColumnPresent( DisksViewColumns.bootableDiskColumn, - DisksViewColumns.bootableDiskColumn.getHeaderHtml(), all || images || luns, "30px"); //$NON-NLS-1$ + DisksViewColumns.bootableDiskColumn.getHeaderHtml(), all || images || luns || cinder, "30px"); //$NON-NLS-1$ getTable().ensureColumnPresent( DisksViewColumns.shareableDiskColumn, - DisksViewColumns.shareableDiskColumn.getHeaderHtml(), all || images || luns, "30px"); //$NON-NLS-1$ + DisksViewColumns.shareableDiskColumn.getHeaderHtml(), all || images || luns || cinder, "30px"); //$NON-NLS-1$ getTable().ensureColumnPresent( DisksViewColumns.readOnlyDiskColumn, - DisksViewColumns.readOnlyDiskColumn.getHeaderHtml(), all || images || luns, "30px"); //$NON-NLS-1$ + DisksViewColumns.readOnlyDiskColumn.getHeaderHtml(), all || images || luns || cinder, "30px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - DisksViewColumns.lunDiskColumn, - DisksViewColumns.lunDiskColumn.getHeaderHtml(), all, "30px"); //$NON-NLS-1$ - - getTable().ensureColumnPresent( - sizeColumn, constants.provisionedSizeDisk(), all || images || luns, "110px"); //$NON-NLS-1$ + sizeColumn, constants.provisionedSizeDisk(), all || images || luns || cinder, "110px"); //$NON-NLS-1$ getTable().ensureColumnPresent( actualSizeColumn, constants.sizeDisk(), images, "110px"); //$NON-NLS-1$ @@ -120,13 +118,13 @@ allocationColumn, constants.allocationDisk(), images, "125px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - DisksViewColumns.storageDomainsColumn, constants.storageDomainDisk(), images, "125px"); //$NON-NLS-1$ + DisksViewColumns.storageDomainsColumn, constants.storageDomainDisk(), images || cinder, "125px"); //$NON-NLS-1$ getTable().ensureColumnPresent( DisksViewColumns.storageTypeColumn, constants.storageTypeDisk(), images, "100px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - dateCreatedColumn, constants.creationDateDisk(), images, "120px"); //$NON-NLS-1$ + dateCreatedColumn, constants.creationDateDisk(), images || cinder, "120px"); //$NON-NLS-1$ getTable().ensureColumnPresent( lunIdColumn, constants.lunIdSanStorage(), luns, "130px"); //$NON-NLS-1$ @@ -141,10 +139,10 @@ lunProductIdColumn, constants.productIdSanStorage(), luns, "130px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - DisksViewColumns.diskContainersColumn, constants.attachedToDisk(), all || images || luns, "110px"); //$NON-NLS-1$ + DisksViewColumns.diskContainersColumn, constants.attachedToDisk(), all || images || luns || cinder, "110px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - interfaceColumn, constants.interfaceDisk(), all || images || luns, "100px"); //$NON-NLS-1$ + interfaceColumn, constants.interfaceDisk(), all || images || luns || cinder, "100px"); //$NON-NLS-1$ getTable().ensureColumnPresent( DisksViewColumns.diskAlignmentColumn, constants.diskAlignment(), all || images || luns, "100px"); //$NON-NLS-1$ @@ -153,7 +151,10 @@ statusColumn, constants.statusDisk(), images, "80px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - descriptionColumn, constants.descriptionDisk(), all || images || luns, "90px"); //$NON-NLS-1$ + typeColumn, constants.typeDisk(), all, "100px"); //$NON-NLS-1$ + + getTable().ensureColumnPresent( + descriptionColumn, constants.descriptionDisk(), all || images || luns || cinder, "90px"); //$NON-NLS-1$ } @@ -171,6 +172,7 @@ lunVendorIdColumn = DisksViewColumns.getLunVendorIdColumn(null); lunProductIdColumn = DisksViewColumns.getLunProductIdColumn(null); interfaceColumn = DisksViewColumns.getInterfaceColumn(null); + typeColumn = DisksViewColumns.getDiskStorageTypeColumn(null); descriptionColumn = DisksViewColumns.getDescriptionColumn(null); } } diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index 190e459..92965c0 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -33,7 +33,9 @@ <include name="common/businessentities/DiskLunMapId.java" /> <include name="common/businessentities/Disk.java" /> <include name="common/businessentities/LunDisk.java" /> - <include name="common/businessentities/Image.java" /> + <include name="common/businessentities/CinderDisk.java" /> + <include name="common/businessentities/CinderConnectionInfo.java" /> + <include name="common/businessentities/Image.java" /> <include name="common/businessentities/DiskImage.java" /> <include name="common/businessentities/DiskImageBase.java" /> <include name="common/businessentities/DiskImageDynamic.java" /> @@ -55,6 +57,7 @@ <include name="common/businessentities/OpenstackNetworkPluginType.java" /> <include name="common/businessentities/DiskAlignment.java" /> <include name="common/businessentities/OpenStackImageProviderProperties.java" /> + <include name="common/businessentities/OpenStackVolumeProviderProperties.java" /> <include name="common/businessentities/VmBalloonInfo.java" /> <include name="common/businessentities/ArchitectureType.java" /> <include name="common/businessentities/IscsiBond.java" /> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java index 0799a70..554a67b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java @@ -28,6 +28,7 @@ import org.ovirt.engine.core.common.businessentities.StorageDomainType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; +import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VDSStatus; @@ -1400,6 +1401,16 @@ }); } + public final static Collection<StorageDomain> filterStorageDomainByStorageType( + Collection<StorageDomain> source, final StorageType storageType) { + return where(source, new IPredicate<StorageDomain>() { + @Override + public boolean match(StorageDomain source) { + return source.getStorageType() == storageType; + } + }); + } + public final static Collection<Provider> filterProvidersByProvidedType(Collection<Provider> source, final VdcObjectType type) { return where(source, new IPredicate<Provider>() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index ee962cd..5b5be34 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -2515,6 +2515,16 @@ Frontend.getInstance().runQuery(VdcQueryType.GetPermittedStorageDomainsByStoragePoolId, params, aQuery); } + public void getAllStorageDomains(AsyncQuery aQuery) { + aQuery.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) { + return source != null ? source : new ArrayList<StorageDomain>(); + } + }; + Frontend.getInstance().runQuery(VdcQueryType.GetAllStorageDomains, new VdcQueryParametersBase(), aQuery); + } + public void getAllDataCenterNetworks(AsyncQuery aQuery, Guid storagePoolId) { aQuery.converterCallback = new IAsyncConverter() { @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java index ad8bd9d..0757e75 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java @@ -9,6 +9,7 @@ import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.OpenStackImageProviderProperties; +import org.ovirt.engine.core.common.businessentities.OpenStackVolumeProviderProperties; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.ProviderType; import org.ovirt.engine.core.common.businessentities.TenantProviderProperties; @@ -132,9 +133,13 @@ return getType().getSelectedItem() == ProviderType.OPENSTACK_IMAGE; } + private boolean isTypeOpenStackVolume() { + return getType().getSelectedItem() == ProviderType.OPENSTACK_VOLUME; + } + private boolean isTypeTenantAware() { ProviderType type = getType().getSelectedItem(); - return type == ProviderType.OPENSTACK_NETWORK || type == ProviderType.OPENSTACK_IMAGE; + return type == ProviderType.OPENSTACK_NETWORK || type == ProviderType.OPENSTACK_IMAGE || type == ProviderType.OPENSTACK_VOLUME; } private boolean isTypeRequiresAuthentication() { @@ -150,6 +155,8 @@ return "http://localhost:9696"; //$NON-NLS-1$ case OPENSTACK_IMAGE: return "http://localhost:9292"; //$NON-NLS-1$ + case OPENSTACK_VOLUME: + return "http://localhost:8776"; //$NON-NLS-1$ case FOREMAN: default: return "http://localhost"; //$NON-NLS-1$ @@ -260,6 +267,8 @@ getNeutronAgentModel().flush(provider); } else if (isTypeOpenStackImage()) { provider.setAdditionalProperties(new OpenStackImageProviderProperties()); + } else if (isTypeOpenStackVolume()) { + provider.setAdditionalProperties(new OpenStackVolumeProviderProperties()); } boolean authenticationRequired = requiresAuthentication.getEntity(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java index fcb785a..abfa20d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java @@ -1058,8 +1058,8 @@ boolean isImageStorage = storage.getStorageDomainType() == StorageDomainType.Image || storage.getStorageDomainType() == StorageDomainType.ISO; - boolean isDataCenterAvailable = storage.getStorageType() != StorageType.GLANCE; - boolean isGeneralAvailable = storage.getStorageType() != StorageType.GLANCE; + boolean isDataCenterAvailable = !storage.getStorageType().isOpenStackDomain(); + boolean isGeneralAvailable = !storage.getStorageType().isOpenStackDomain(); boolean isRegsiterEntityListModelSelected = getActiveDetailModel() == vmRegisterListModel || getActiveDetailModel() == templateRegisterListModel; @@ -1080,7 +1080,7 @@ snapshotListModel.setIsAvailable(isDataStorage); diskProfileListModel.setIsAvailable(isDataStorage); - isoListModel.setIsAvailable(isImageStorage); + isoListModel.setIsAvailable(isImageStorage || storage.getStorageType() == StorageType.CINDER); } } 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 9e03180..7b928c2 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 @@ -1,11 +1,13 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; +import java.util.Collection; 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.CinderDisk; 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; @@ -309,6 +311,8 @@ protected abstract LunDisk getLunDisk(); + protected abstract CinderDisk getCinderDisk(); + protected abstract void setDefaultInterface(); protected abstract void updateVolumeType(StorageType storageType); @@ -347,30 +351,52 @@ } protected void updateStorageDomains(final StoragePool datacenter) { - AsyncDataProvider.getInstance().getPermittedStorageDomainsByStoragePoolId(new AsyncQuery(this, new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - DiskModel diskModel = (DiskModel) target; - ArrayList<StorageDomain> storageDomains = (ArrayList<StorageDomain>) returnValue; + switch (getDiskStorageType().getEntity()) { + case CINDER: + AsyncDataProvider.getInstance().getAllStorageDomains(new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object target, Object returnValue) { + DiskModel diskModel = (DiskModel) target; + List<StorageDomain> storageDomains = (List<StorageDomain>) Linq.filterStorageDomainByStorageType( + (Collection<StorageDomain>) returnValue, StorageType.CINDER); - ArrayList<StorageDomain> filteredStorageDomains = new ArrayList<StorageDomain>(); - for (StorageDomain a : storageDomains) - { - if (!a.getStorageDomainType().isIsoOrImportExportDomain() && a.getStatus() == StorageDomainStatus.Active) - { - filteredStorageDomains.add(a); + Collections.sort(storageDomains, new NameableComparator()); + StorageDomain storage = Linq.firstOrDefault(storageDomains); + + diskModel.getStorageDomain().setItems(storageDomains); + diskModel.getStorageDomain().setSelectedItem(storage); + + diskModel.setMessage(storage == null ? CONSTANTS.noCinderStorageDomainsInDC() : ""); } - } + }, getHash())); + break; + default: + AsyncDataProvider.getInstance().getPermittedStorageDomainsByStoragePoolId(new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object target, Object returnValue) { + DiskModel diskModel = (DiskModel) target; + ArrayList<StorageDomain> storageDomains = (ArrayList<StorageDomain>) returnValue; - Collections.sort(filteredStorageDomains, new NameableComparator()); - StorageDomain storage = Linq.firstOrDefault(filteredStorageDomains); + ArrayList<StorageDomain> filteredStorageDomains = new ArrayList<StorageDomain>(); + for (StorageDomain a : storageDomains) + { + if (!a.getStorageDomainType().isIsoOrImportExportDomain() && a.getStatus() == StorageDomainStatus.Active) + { + filteredStorageDomains.add(a); + } + } - diskModel.getStorageDomain().setItems(filteredStorageDomains); - diskModel.getStorageDomain().setSelectedItem(storage); + Collections.sort(filteredStorageDomains, new NameableComparator()); + StorageDomain storage = Linq.firstOrDefault(filteredStorageDomains); - diskModel.setMessage(storage == null ? CONSTANTS.noActiveStorageDomainsInDC() : ""); - } - }, getHash()), datacenter.getId(), ActionGroup.CREATE_DISK); + diskModel.getStorageDomain().setItems(filteredStorageDomains); + diskModel.getStorageDomain().setSelectedItem(storage); + + diskModel.setMessage(storage == null ? CONSTANTS.noActiveStorageDomainsInDC() : ""); + } + }, getHash()), datacenter.getId(), ActionGroup.CREATE_DISK); + break; + } } private void updateHosts(StoragePool datacenter) { @@ -637,10 +663,11 @@ boolean isInVm = getVm() != null; boolean isDiskImage = getDiskStorageType().getEntity() == DiskStorageType.IMAGE; boolean isLunDisk = getDiskStorageType().getEntity() == DiskStorageType.LUN; + boolean isCinderDisk = getDiskStorageType().getEntity() == DiskStorageType.CINDER; - getSize().setIsAvailable(isDiskImage); + getSize().setIsAvailable(isDiskImage || isCinderDisk); getSizeExtend().setIsAvailable(isDiskImage && !getIsNew()); - getStorageDomain().setIsAvailable(isDiskImage); + getStorageDomain().setIsAvailable(isDiskImage || isCinderDisk); getVolumeType().setIsAvailable(isDiskImage); getIsWipeAfterDelete().setIsAvailable(isDiskImage); getHost().setIsAvailable(isLunDisk); @@ -766,6 +793,20 @@ updateDirectLunDiskEnabled(datacenter); updateInterface(isInVm ? getVm().getVdsGroupCompatibilityVersion() : null); + switch (getDiskStorageType().getEntity()) { + case IMAGE: + updateStorageDomains(datacenter); + break; + case CINDER: + updateStorageDomains(null); + break; + default: + updateHosts(datacenter); + break; + } + + if (getDiskStorageType().getEntity() == DiskStorageType.IMAGE) { + } if (getDiskStorageType().getEntity() == DiskStorageType.IMAGE) { updateStorageDomains(datacenter); } @@ -847,28 +888,34 @@ } public void onSave() { - if (getDiskStorageType().getEntity() == DiskStorageType.IMAGE) { - DiskImage diskImage = getDiskImage(); - if (getQuota().getIsAvailable() && getQuota().getSelectedItem() != null) { - diskImage.setQuotaId(getQuota().getSelectedItem().getId()); - } + switch (getDiskStorageType().getEntity()) { + case LUN: + LunDisk lunDisk = getLunDisk(); + DiskInterface diskInterface = getDiskInterface().getSelectedItem(); + if (DiskInterface.VirtIO_SCSI.equals(diskInterface)) { + lunDisk.setSgio(!getIsScsiPassthrough().getEntity() ? null : + getIsSgIoUnfiltered().getEntity() ? + ScsiGenericIO.UNFILTERED : ScsiGenericIO.FILTERED); + } + setDisk(lunDisk); + break; + case CINDER: + CinderDisk cinderDisk = getCinderDisk(); + setDisk(cinderDisk); + break; + default: + DiskImage diskImage = getDiskImage(); + if (getQuota().getIsAvailable() && getQuota().getSelectedItem() != null) { + diskImage.setQuotaId(getQuota().getSelectedItem().getId()); + } - long sizeToAddInGigabytes = Long.valueOf(getSizeExtend().getEntity()); - if (sizeToAddInGigabytes > 0) { - diskImage.setSizeInGigabytes(diskImage.getSizeInGigabytes() + sizeToAddInGigabytes); - } + long sizeToAddInGigabytes = Long.valueOf(getSizeExtend().getEntity()); + if (sizeToAddInGigabytes > 0) { + diskImage.setSizeInGigabytes(diskImage.getSizeInGigabytes() + sizeToAddInGigabytes); + } - setDisk(diskImage); - } - else { - LunDisk lunDisk = getLunDisk(); - DiskInterface diskInterface = getDiskInterface().getSelectedItem(); - if (DiskInterface.VirtIO_SCSI.equals(diskInterface)) { - lunDisk.setSgio(!getIsScsiPassthrough().getEntity() ? null : - getIsSgIoUnfiltered().getEntity() ? - ScsiGenericIO.UNFILTERED : ScsiGenericIO.FILTERED); - } - setDisk(lunDisk); + setDisk(diskImage); + break; } if (getDisk().getDiskStorageType() == DiskStorageType.IMAGE) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditDiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditDiskModel.java index fd60a9e..b22f894 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditDiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditDiskModel.java @@ -3,6 +3,7 @@ import org.ovirt.engine.core.common.VdcActionUtils; import org.ovirt.engine.core.common.action.UpdateVmDiskParameters; import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.CinderDisk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.LunDisk; @@ -99,6 +100,11 @@ } @Override + protected CinderDisk getCinderDisk() { + return (CinderDisk) getDisk(); + } + + @Override public void onSave() { if (getProgress() != null || !validate()) { return; diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewDiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewDiskModel.java index 3e361e6..340754b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewDiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewDiskModel.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.action.AddDiskParameters; import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.CinderDisk; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.DiskInterface; @@ -13,6 +14,7 @@ import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.common.businessentities.StorageType; +import org.ovirt.engine.core.common.businessentities.VolumeFormat; import org.ovirt.engine.core.common.businessentities.VolumeType; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.ui.frontend.AsyncQuery; @@ -104,6 +106,11 @@ } @Override + protected CinderDisk getCinderDisk() { + return new CinderDisk(); + } + + @Override public void onSave() { if (getProgress() != null || !validate()) { return; @@ -111,24 +118,31 @@ super.onSave(); - if (getDiskStorageType().getEntity() == Disk.DiskStorageType.IMAGE) { - DiskImage diskImage = (DiskImage) getDisk(); - diskImage.setSizeInGigabytes(getSize().getEntity()); - diskImage.setVolumeType(getVolumeType().getSelectedItem()); - diskImage.setvolumeFormat(getVolumeFormat()); - } - else { - LunDisk lunDisk = (LunDisk) getDisk(); - LUNs luns = (LUNs) getSanStorageModel().getAddedLuns().get(0).getEntity(); - luns.setLunType(getStorageType().getSelectedItem()); - lunDisk.setLun(luns); + switch (getDiskStorageType().getEntity()) { + case LUN: + LunDisk lunDisk = (LunDisk) getDisk(); + LUNs luns = (LUNs) getSanStorageModel().getAddedLuns().get(0).getEntity(); + luns.setLunType(getStorageType().getSelectedItem()); + lunDisk.setLun(luns); + break; + case CINDER: + CinderDisk cinderDisk = (CinderDisk) getDisk(); + cinderDisk.setSizeInGigabytes(getSize().getEntity()); + cinderDisk.setvolumeFormat(VolumeFormat.RAW); + break; + default: + DiskImage diskImage = (DiskImage) getDisk(); + diskImage.setSizeInGigabytes(getSize().getEntity()); + diskImage.setVolumeType(getVolumeType().getSelectedItem()); + diskImage.setvolumeFormat(getVolumeFormat()); + break; } startProgress(null); AddDiskParameters parameters = new AddDiskParameters(getVmId(), getDisk()); parameters.setPlugDiskToVm(getIsPlugged().getEntity()); - if (getDiskStorageType().getEntity() == Disk.DiskStorageType.IMAGE) { + if (getDiskStorageType().getEntity() == Disk.DiskStorageType.IMAGE || getDiskStorageType().getEntity() == Disk.DiskStorageType.CINDER) { StorageDomain storageDomain = getStorageDomain().getSelectedItem(); parameters.setStorageDomainId(storageDomain.getId()); } diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java index ee17626..4f0212e 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java @@ -65,6 +65,8 @@ String StorageType___GLANCE(); + String StorageType___CINDER(); + String StorageType___UNKNOWN(); String StorageFormatType___V1(); @@ -188,6 +190,8 @@ String StorageDomainType___Image(); + String StorageDomainType___Volume(); + String VmTemplateStatus___OK(); String VmTemplateStatus___Locked(); @@ -266,6 +270,8 @@ String Disk$DiskStorageType___IMAGE(); + String Disk$DiskStorageType___CINDER(); + String RoleType___ADMIN(); String RoleType___USER(); @@ -290,6 +296,8 @@ String ProviderType___OPENSTACK_IMAGE(); + String ProviderType___OPENSTACK_VOLUME(); + // Gluster enums String GlusterVolumeType___DISTRIBUTE(); diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index fde7b44..6bf1c74 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -1461,7 +1461,10 @@ @DefaultStringValue("There are no active Storage Domains that you have permissions to create a disk on in the relevant Data Center.") String noActiveStorageDomainsInDC(); - @DefaultStringValue("The relevant Data Center is not active.") + @DefaultStringValue("There are no Cinder Storage Domains that you have permissions to create a disk on.") + String noCinderStorageDomainsInDC(); + + @DefaultStringValue("The relevant Data-Center is not active.") String relevantDCnotActive(); @DefaultStringValue("Host name can't contain blanks or special characters, must be at least one character long, and contain 'a-z', '0-9', '_' or '.' characters.") diff --git a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties index 5ba2164..1f3c802 100644 --- a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties +++ b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties @@ -30,6 +30,7 @@ StorageType___POSIXFS=POSIX compliant FS StorageType___GLUSTERFS=GlusterFS StorageType___GLANCE=OpenStack Glance +StorageType___CINDER=OpenStack Cinder StorageType___UNKNOWN=Unknown StorageFormatType___V1=V1 StorageFormatType___V2=V2 @@ -111,6 +112,7 @@ StorageDomainType___ISO=ISO StorageDomainType___ImportExport=Export StorageDomainType___Image=Image +StorageDomainType___Volume=Volume VmTemplateStatus___OK=OK VmTemplateStatus___Locked=Locked VmTemplateStatus___Illegal=Illegal @@ -166,6 +168,7 @@ ServiceType___GLUSTER_SWIFT=Gluster Swift Disk$DiskStorageType___LUN=LUN Disk$DiskStorageType___IMAGE=Image +Disk$DiskStorageType___CINDER=Cinder RoleType___ADMIN=Admin RoleType___USER=User JobExecutionStatus___STARTED=Started @@ -178,6 +181,7 @@ OpenstackNetworkPluginType___LINUX_BRIDGE=Linux Bridge OpenstackNetworkPluginType___OPEN_VSWITCH=Open vSwitch ProviderType___OPENSTACK_IMAGE=OpenStack Image +ProviderType___OPENSTACK_VOLUME=OpenStack Volume ExternalSubnet$IpVersion___IPV4=IPv4 ExternalSubnet$IpVersion___IPV6=IPv6 SerialNumberPolicy___HOST_ID=Host ID diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java index 9210115..6ff662e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java @@ -60,6 +60,7 @@ private static TextColumnWithTooltip<Disk> lunVendorIdColumn; private static TextColumnWithTooltip<Disk> lunProductIdColumn; private static TextColumnWithTooltip<Disk> qoutaColumn; + private static TextColumnWithTooltip<Disk> typeColumn; private static TextColumnWithTooltip<Disk> descriptionColumn; @Inject @@ -121,43 +122,40 @@ boolean all = disksViewRadioGroup.getAllButton().getValue(); boolean images = disksViewRadioGroup.getImagesButton().getValue(); boolean luns = disksViewRadioGroup.getLunsButton().getValue(); + boolean cinder = disksViewRadioGroup.getCinderButton().getValue(); searchByDiskViewType(disksViewRadioGroup.getDiskStorageType()); getTable().ensureColumnPresent( - aliasColumn, constants.aliasDisk(), all || images || luns, + aliasColumn, constants.aliasDisk(), all || images || luns || cinder, "120px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - idColumn, constants.idDisk(), all || images || luns, + idColumn, constants.idDisk(), all || images || luns || cinder, "120px"); //$NON-NLS-1$ getTable().ensureColumnPresent( DisksViewColumns.bootableDiskColumn, - DisksViewColumns.bootableDiskColumn.getHeaderHtml(), all || images || luns, "30px"); //$NON-NLS-1$ + DisksViewColumns.bootableDiskColumn.getHeaderHtml(), all || images || luns || cinder, "30px"); //$NON-NLS-1$ getTable().ensureColumnPresent( DisksViewColumns.shareableDiskColumn, - DisksViewColumns.shareableDiskColumn.getHeaderHtml(), all || images || luns, "30px"); //$NON-NLS-1$ + DisksViewColumns.shareableDiskColumn.getHeaderHtml(), all || images || luns || cinder, "30px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - DisksViewColumns.lunDiskColumn, - DisksViewColumns.lunDiskColumn.getHeaderHtml(), all, "30px"); //$NON-NLS-1$ - - getTable().ensureColumnPresent( - DisksViewColumns.diskContainersIconColumn, "", all || images || luns, //$NON-NLS-1$ + DisksViewColumns.diskContainersIconColumn, "", all || images || luns || cinder, //$NON-NLS-1$ "30px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - DisksViewColumns.diskContainersColumn, constants.attachedToDisk(), all || images || luns, + DisksViewColumns.diskContainersColumn, constants.attachedToDisk(), all || images || luns || cinder, "125px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - DisksViewColumns.storageDomainsColumn, constants.storageDomainsDisk(), images, + DisksViewColumns.storageDomainsColumn, constants.storageDomainsDisk(), images || cinder, "180px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - sizeColumn, constants.provisionedSizeDisk(), all || images || luns, + sizeColumn, constants.provisionedSizeDisk(), all || images || luns || cinder, "110px"); //$NON-NLS-1$ getTable().ensureColumnPresent( @@ -165,7 +163,7 @@ "130px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - dateCreatedColumn, constants.creationDateDisk(), images, + dateCreatedColumn, constants.creationDateDisk(), images || cinder, "130px"); //$NON-NLS-1$ getTable().ensureColumnPresent( @@ -192,7 +190,10 @@ qoutaColumn, constants.quotaDisk(), images && isQuotaVisible, "120px"); //$NON-NLS-1$ getTable().ensureColumnPresent( - descriptionColumn, constants.descriptionDisk(), all || images || luns, + typeColumn, constants.typeDisk(), all, "100px"); //$NON-NLS-1$ + + getTable().ensureColumnPresent( + descriptionColumn, constants.descriptionDisk(), all || images || luns || cinder, "90px"); //$NON-NLS-1$ } @@ -210,6 +211,7 @@ lunVendorIdColumn = DisksViewColumns.getLunVendorIdColumn(constants.empty()); lunProductIdColumn = DisksViewColumns.getLunProductIdColumn(constants.empty()); qoutaColumn = DisksViewColumns.getQoutaColumn(DiskConditionFieldAutoCompleter.QUOTA); + typeColumn = DisksViewColumns.getDiskStorageTypeColumn(DiskConditionFieldAutoCompleter.DISK_TYPE); descriptionColumn = DisksViewColumns.getDescriptionColumn(DiskConditionFieldAutoCompleter.DESCRIPTION); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainSharedStatusColumn.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainSharedStatusColumn.java index 8a700ea..54cb8d0 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainSharedStatusColumn.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainSharedStatusColumn.java @@ -2,7 +2,6 @@ import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainType; -import org.ovirt.engine.core.common.businessentities.StorageType; import com.google.gwt.resources.client.ImageResource; @@ -14,7 +13,7 @@ setEnumTitle(sp.getStorageDomainSharedStatus()); switch (sp.getStorageDomainSharedStatus()) { case Unattached: - if (sp.getStorageType() == StorageType.GLANCE) { + if (sp.getStorageType().isOpenStackDomain()) { return getApplicationResources().openstackImage(); } else { return getApplicationResources().tornChainImage(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainStatusColumn.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainStatusColumn.java index b74da8b..9d74460 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainStatusColumn.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/StorageDomainStatusColumn.java @@ -1,7 +1,6 @@ package org.ovirt.engine.ui.webadmin.widget.table.column; import org.ovirt.engine.core.common.businessentities.StorageDomain; -import org.ovirt.engine.core.common.businessentities.StorageType; import com.google.gwt.resources.client.ImageResource; @@ -12,7 +11,7 @@ setEnumTitle(sp.getStatus()); switch (sp.getStatus()) { case Unattached: - if (sp.getStorageType() == StorageType.GLANCE) { + if (sp.getStorageType().isOpenStackDomain()) { return getApplicationResources().openstackImage(); } else { return getApplicationResources().tornChainImage(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java index cfdaaa2..4851b9b 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java @@ -84,6 +84,7 @@ switch (((Provider) value.getEntity()).getType()) { case OPENSTACK_NETWORK: case OPENSTACK_IMAGE: + case OPENSTACK_VOLUME: imageResource = applicationResources.openstackImage(); break; case FOREMAN: -- To view, visit http://gerrit.ovirt.org/35359 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ied68cb17829a211a808e2a217e35162e495f054d Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
