Idan Shaby has uploaded a new change for review.

Change subject: webadmin: override image name in import image view
......................................................................

webadmin: override image name in import image view

This patch adds the ability to edit the alias of a disk image in the
import image view.

Change-Id: Ia25b0e38e577ebe745ccbc898b5af07f35e2847b
Bug-Url: https://bugzilla.redhat.com/1196757
Signed-off-by: Idan Shaby <ish...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportRepoImageCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackImageProviderProxy.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportExportRepoImageCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportRepoImageCommandTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/storage/RepoImage.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportRepoImageModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportExportRepoImageBaseModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportRepoImageModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/RepoImageModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java
11 files changed, 118 insertions(+), 36 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/41394/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportRepoImageCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportRepoImageCommand.java
index a40a1df..c5c32e0 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportRepoImageCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportRepoImageCommand.java
@@ -149,7 +149,8 @@
 
     protected DiskImage getDiskImage() {
         if (getParameters().getDiskImage() == null) {
-            DiskImage diskImage = 
getProviderProxy().getImageAsDiskImage(getParameters().getSourceRepoImageId());
+            DiskImage diskImage = getProviderProxy().getImageAsDiskImage(
+                    getParameters().getSourceRepoImageId(), 
getParameters().getDiskAlias());
             if (diskImage != null) {
                 if (diskImage.getVolumeFormat() == VolumeFormat.RAW &&
                         getStorageDomain().getStorageType().isBlockDomain()) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackImageProviderProxy.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackImageProviderProxy.java
index f714266..954ed77 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackImageProviderProxy.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackImageProviderProxy.java
@@ -164,15 +164,15 @@
         return repoImages;
     }
 
-    public DiskImage getImageAsDiskImage(String id) {
+    public DiskImage getImageAsDiskImage(String id, String diskAlias) {
         DiskImage diskImage = new DiskImage();
         Image glanceImage = getClient().images().show(id).execute();
 
         validateContainerFormat(glanceImage);
 
-        String shortHash = glanceImage.getId().substring(0, 7);
+        diskImage.setDiskAlias(diskAlias);
 
-        diskImage.setDiskAlias("GlanceDisk-" + shortHash);
+        String shortHash = glanceImage.getId().substring(0, 7);
 
         if (glanceImage.getName() != null) {
             diskImage.setDiskDescription(glanceImage.getName() + " (" + 
shortHash + ")");
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportExportRepoImageCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportExportRepoImageCommandTest.java
index c6e6114..3fd29a8 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportExportRepoImageCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportExportRepoImageCommandTest.java
@@ -68,6 +68,8 @@
 
     private Guid diskImageGroupId;
 
+    private String diskImageAlias;
+
     private DiskImage diskImage;
 
     public Guid getRepoStorageDomainId() {
@@ -114,6 +116,10 @@
         return diskImageGroupId;
     }
 
+    public String getDiskImageAlias() {
+        return diskImageAlias;
+    }
+
     public DiskDao getDiskDao() {
         return diskDao;
     }
@@ -135,6 +141,7 @@
 
         diskImageId = Guid.newGuid();
         diskImageGroupId = Guid.newGuid();
+        diskImageAlias = new String();
 
         storagePoolId = Guid.newGuid();
         storageDomainId = Guid.newGuid();
@@ -166,7 +173,7 @@
         when(storagePoolDao.get(storagePoolId)).thenReturn(storagePool);
         when(diskDao.get(diskImageGroupId)).thenReturn(diskImage);
         when(diskImageDao.get(diskImageId)).thenReturn(diskImage);
-        
when(providerProxy.getImageAsDiskImage(repoImageId)).thenReturn(diskImage);
+        when(providerProxy.getImageAsDiskImage(repoImageId, 
diskImageAlias)).thenReturn(diskImage);
     }
 
 }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportRepoImageCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportRepoImageCommandTest.java
index 9697a3b..e16cb7b 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportRepoImageCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportRepoImageCommandTest.java
@@ -28,6 +28,7 @@
         ImportRepoImageParameters importParameters = new 
ImportRepoImageParameters();
 
         importParameters.setSourceRepoImageId(getRepoImageId());
+        importParameters.setDiskAlias(getDiskImageAlias());
         importParameters.setSourceStorageDomainId(getRepoStorageDomainId());
         importParameters.setStoragePoolId(getStoragePoolId());
         importParameters.setStorageDomainId(getStorageDomainId());
@@ -47,7 +48,7 @@
 
     @Test
     public void testCanDoActionImageDoesNotExist() {
-        
when(getProviderProxy().getImageAsDiskImage(getRepoImageId())).thenReturn(null);
+        when(getProviderProxy().getImageAsDiskImage(getRepoImageId(), 
getDiskImageAlias())).thenReturn(null);
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(cmd,
                 VdcBllMessages.ACTION_TYPE_FAILED_DISK_NOT_EXIST);
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/storage/RepoImage.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/storage/RepoImage.java
index 8a9b4d1..1ca22ca 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/storage/RepoImage.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/storage/RepoImage.java
@@ -11,6 +11,7 @@
  */
 public class RepoImage extends IVdcQueryable implements Serializable {
     private static final long serialVersionUID = 566928138057530047L;
+    private static final int SHORT_HASH_END_INDEX = 7;
     private Guid storagePoolId;
     private Guid repoDomainId;
     private String repoImageId;
@@ -99,15 +100,19 @@
      */
     public String getRepoImageTitle() {
         if (repoImageName != null) {
-            // To provide an hint about the image id and at the same time
-            // maintain the image title short we just report 7 characters
+            // To provide a hint about the image id and at the same time 
maintain
+            // the image title short we just report SHORT_HASH_END_INDEX 
characters
             // of the id (similarly to what git does with hashes).
-            return repoImageName + " (" + repoImageId.substring(0, 7) + ")";
+            return repoImageName + " (" + getShortHash() + ")";
         } else {
             return repoImageId;
         }
     }
 
+    public String getShortHash() {
+        return repoImageId.substring(0, SHORT_HASH_END_INDEX);
+    }
+
     /**
      * @param size
      *            the size to set For future use.
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportRepoImageModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportRepoImageModel.java
index fddbf34..b2a8161 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportRepoImageModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportRepoImageModel.java
@@ -76,7 +76,7 @@
     }
 
     @Override
-    public boolean showImportAsTemplateOptions() {
+    public boolean isImportModel() {
         return false;
     }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportExportRepoImageBaseModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportExportRepoImageBaseModel.java
index d438720..978a456 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportExportRepoImageBaseModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportExportRepoImageBaseModel.java
@@ -288,6 +288,6 @@
         }
     }
 
-    public abstract boolean showImportAsTemplateOptions();
+    public abstract boolean isImportModel();
 
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportRepoImageModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportRepoImageModel.java
index 0a25f14..fb3b022 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportRepoImageModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportRepoImageModel.java
@@ -41,9 +41,9 @@
     }
 
     public void setRepoImages(List<RepoImage> repoImages) {
-        ArrayList<EntityModel> entities = new ArrayList<EntityModel>();
+        ArrayList<EntityModel> entities = new ArrayList<>();
         for (RepoImage i : repoImages) {
-            entities.add(new EntityModel(i));
+            entities.add(new RepoImageModel(i));
         }
         setEntities(entities);
     }
@@ -66,7 +66,7 @@
     }
 
     @Override
-    public boolean showImportAsTemplateOptions() {
+    public boolean isImportModel() {
         return true;
     }
 
@@ -88,6 +88,7 @@
             
importParameters.setSourceStorageDomainId(sourceStorageDomain.getId());
 
             // destination
+            importParameters.setDiskAlias(((RepoImageModel) 
entity).getDiskImageAlias());
             importParameters.setStoragePoolId(((StoragePool) 
getDataCenter().getSelectedItem()).getId());
             importParameters.setStorageDomainId(((StorageDomain) 
getStorageDomain().getSelectedItem()).getId());
             importParameters.setClusterId(((StorageDomain) 
getStorageDomain().getSelectedItem()).getId());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/RepoImageModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/RepoImageModel.java
new file mode 100644
index 0000000..37e4eaf
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/RepoImageModel.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.ui.uicommonweb.models.storage;
+
+import org.ovirt.engine.core.common.businessentities.storage.RepoImage;
+import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+
+public class RepoImageModel extends EntityModel<RepoImage> {
+
+    public static final String GLANCE_DISK_ALIAS_PREFIX = "GlanceDisk-"; 
//$NON-NLS-1$
+
+    private String diskImageAlias;
+
+    public RepoImageModel(RepoImage repoImage) {
+        super(repoImage);
+    }
+
+    public String getDiskImageAlias() {
+        if (diskImageAlias == null) {
+            diskImageAlias = getGlanceDiskDefaultAlias();
+        }
+        return diskImageAlias;
+    }
+
+    public void setDiskImageAlias(String diskImageAlias) {
+        this.diskImageAlias = diskImageAlias;
+    }
+
+    public String getGlanceDiskDefaultAlias() {
+        return GLANCE_DISK_ALIAS_PREFIX + getEntity().getShortHash();
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
index fb00788..85aa1fb 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
@@ -1751,6 +1751,9 @@
     @DefaultStringValue("Type")
     String typeStorage();
 
+    @DefaultStringValue("(Click to Edit)")
+    String clickToEdit();
+
     // Storage General
     @DefaultStringValue("Size")
     String sizeStorageGeneral();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java
index 339b266..607f085 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.ui.webadmin.section.main.view.popup.storage;
 
+import com.google.gwt.cell.client.FieldUpdater;
 import org.ovirt.engine.core.common.businessentities.Quota;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
@@ -17,14 +18,17 @@
 import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor;
 import org.ovirt.engine.ui.common.widget.renderer.NameRenderer;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractDiskSizeColumn;
+import org.ovirt.engine.ui.common.widget.table.column.AbstractEditTextColumn;
 import 
org.ovirt.engine.ui.common.widget.table.column.AbstractEntityModelTextColumn;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.storage.ImportExportRepoImageBaseModel;
+import org.ovirt.engine.ui.uicommonweb.models.storage.RepoImageModel;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.IEventListener;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
 import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.ImportExportImagePopupPresenterWidget;
 
@@ -87,6 +91,8 @@
 
     private final static ApplicationConstants constants = 
AssetProvider.getConstants();
 
+    private final static ApplicationTemplates templates = 
AssetProvider.getTemplates();
+
     @Inject
     public ImportExportImagePopupView(EventBus eventBus) {
         super(eventBus);
@@ -108,6 +114,33 @@
 
         imageListPanel = new SimplePanel();
 
+        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
+        driver.initialize(this);
+    }
+
+    @Override
+    public void edit(final ImportExportRepoImageBaseModel model) {
+        driver.edit(model);
+
+        importAsTemplateEditor.setVisible(model.isImportModel());
+        clusterEditor.setVisible(model.isImportModel());
+
+        model.getPropertyChangedEvent().addListener(new 
IEventListener<PropertyChangedEventArgs>() {
+            @Override
+            public void eventRaised(Event<? extends PropertyChangedEventArgs> 
ev,
+                    Object sender,
+                    PropertyChangedEventArgs args) {
+                if ("ImportExportEntities".equals(args.propertyName) 
//$NON-NLS-1$
+                        && model.getEntities() != null) {
+                    imageList.setRowData(model.getEntities());
+                }
+            }
+        });
+
+        initTable(model);
+    }
+
+    private void initTable(ImportExportRepoImageBaseModel model) {
         imageList = new EntityModelCellTable<>(SelectionMode.NONE, true);
         imageList.addColumn(new AbstractEntityModelTextColumn<Object>() {
             @Override
@@ -120,6 +153,10 @@
                 return constants.unknown();
             }
         }, constants.fileNameIso());
+        if (model.isImportModel()) {
+            imageList.addColumn(new DiskAliasTextColumn(new 
DiskAliasFieldUpdater()),
+                    templates.sub(constants.diskSnapshotAlias(), 
constants.clickToEdit()));
+        }
         imageList.addColumn(new AbstractEntityModelTextColumn<Object>() {
             @Override
             public String getText(Object image) {
@@ -135,7 +172,7 @@
             @Override
             protected Long getRawValue(EntityModel object) {
                 if (object.getEntity() instanceof RepoImage) {
-                    return ((RepoImage) (object.getEntity())).getSize();
+                    return ((RepoImage) object.getEntity()).getSize();
                 } else if (object.getEntity() instanceof DiskImage) {
                     return ((DiskImage) 
(object.getEntity())).getSizeInGigabytes();
                 }
@@ -145,27 +182,6 @@
 
         imageList.setWidth("100%", true); //$NON-NLS-1$
         imageListPanel.setWidget(imageList);
-
-        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
-        driver.initialize(this);
-    }
-
-    @Override
-    public void edit(final ImportExportRepoImageBaseModel model) {
-        driver.edit(model);
-
-        importAsTemplateEditor.setVisible(model.showImportAsTemplateOptions());
-        clusterEditor.setVisible(model.showImportAsTemplateOptions());
-
-        model.getPropertyChangedEvent().addListener(new 
IEventListener<PropertyChangedEventArgs>() {
-            @Override
-            public void eventRaised(Event<? extends PropertyChangedEventArgs> 
ev, Object sender, PropertyChangedEventArgs args) {
-                if ("ImportExportEntities".equals(args.propertyName) 
//$NON-NLS-1$
-                        && model.getEntities() != null) {
-                    imageList.setRowData(model.getEntities());
-                }
-            }
-        });
     }
 
     @Override
@@ -182,4 +198,22 @@
         messagePanel.add(new Label(message));
     }
 
+    private static final class DiskAliasTextColumn extends 
AbstractEditTextColumn<RepoImageModel> {
+
+        private DiskAliasTextColumn(DiskAliasFieldUpdater 
diskAliasFieldUpdater) {
+            super(diskAliasFieldUpdater);
+        }
+
+        @Override
+        public String getValue(RepoImageModel repoImageModel) {
+            return repoImageModel.getDiskImageAlias();
+        }
+    }
+
+    private static final class DiskAliasFieldUpdater implements 
FieldUpdater<RepoImageModel, String> {
+        @Override
+        public void update(int i, RepoImageModel repoImageModel, String 
diskAlias) {
+            repoImageModel.setDiskImageAlias(diskAlias);
+        }
+    }
 }


-- 
To view, visit https://gerrit.ovirt.org/41394
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia25b0e38e577ebe745ccbc898b5af07f35e2847b
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Idan Shaby <ish...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to