Federico Simoncelli has uploaded a new change for review.

Change subject: [wip] frontend: add the export glance image support
......................................................................

[wip] frontend: add the export glance image support

Change-Id: If5ec1bd1de705233c3a0baf26e5f2a4c0a21645a
Signed-off-by: Federico Simoncelli <fsimo...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportImageModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java
7 files changed, 155 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/16420/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 b6a89cc..62e367d 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
@@ -648,6 +648,9 @@
     @DefaultStringValue("Scan Alignment")
     String getDiskAlignment();
 
+    @DefaultStringValue("Upload")
+    String uploadDisk();
+
     @DefaultStringValue("Data Center")
     String dataCenter();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
index aba8be2..e804e75 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
@@ -32,6 +32,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel;
 import org.ovirt.engine.ui.uicommonweb.models.quota.ChangeQuotaItemModel;
 import org.ovirt.engine.ui.uicommonweb.models.quota.ChangeQuotaModel;
+import org.ovirt.engine.ui.uicommonweb.models.storage.ExportImageModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.SanStorageModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.CopyDiskModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.AbstractDiskModel;
@@ -109,6 +110,16 @@
         privateScanAlignmentCommand = value;
     }
 
+    private UICommand uploadCommand;
+
+    public UICommand getUploadCommand() {
+        return uploadCommand;
+    }
+
+    public void setUploadCommand(UICommand uploadCommand) {
+        this.uploadCommand = uploadCommand;
+    }
+
     private UICommand privateChangeQuotaCommand;
 
     public UICommand getChangeQuotaCommand()
@@ -178,6 +189,7 @@
         setChangeQuotaCommand(new UICommand("changeQuota", this)); 
//$NON-NLS-1$
         setCopyCommand(new UICommand("Copy", this)); //$NON-NLS-1$
         setScanAlignmentCommand(new UICommand("Check Alignment", this)); 
//$NON-NLS-1$
+        setUploadCommand(new UICommand("Upload", this)); //$NON-NLS-1$
 
         updateActionAvailability();
 
@@ -318,6 +330,32 @@
                     }
                 },
                 this);
+    }
+
+    private void upload()
+    {
+        @SuppressWarnings("unchecked")
+        ArrayList<DiskImage> disks = (ArrayList<DiskImage>) getSelectedItems();
+
+        if (disks == null || getWindow() != null)
+        {
+            return;
+        }
+
+        ExportImageModel model = new ExportImageModel();
+        setWindow(model);
+
+        
model.setTitle(ConstantsManager.getInstance().getConstants().uploadImagesTitle());
+        model.setHashName("upload_disks"); //$NON-NLS-1$
+        model.setEntity(this);
+        model.init(disks);
+
+        UICommand cancelCommand = new UICommand("Cancel", this); //$NON-NLS-1$
+        
cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel());
+        cancelCommand.setIsCancel(true);
+
+        model.setCancelCommand(cancelCommand);
+        model.getCommands().add(cancelCommand);
     }
 
     private void changeQuota()
@@ -593,6 +631,10 @@
         {
             scanAlignment();
         }
+        else if (command == getUploadCommand())
+        {
+            upload();
+        }
         else if (StringHelper.stringsEqual(command.getName(), "Cancel")) 
//$NON-NLS-1$
         {
             cancel();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportImageModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportImageModel.java
new file mode 100644
index 0000000..f44106c
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportImageModel.java
@@ -0,0 +1,87 @@
+package org.ovirt.engine.ui.uicommonweb.models.storage;
+
+import org.ovirt.engine.core.common.action.ExportRepoImageParameters;
+import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.businessentities.DiskImage;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.StorageType;
+import 
org.ovirt.engine.core.common.businessentities.comparators.NameableComparator;
+import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult;
+import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class ExportImageModel extends ImportExportImageModel {
+
+    public void init(List<DiskImage> diskImages) {
+        setDiskImages(diskImages);
+        updateStorageDomains(null);
+    }
+
+    public void setDiskImages(List<DiskImage> diskImages) {
+        ArrayList<EntityModel> entities = new ArrayList<EntityModel>();
+        for (DiskImage i : diskImages) {
+            entities.add(new EntityModel(i));
+        }
+        setEntities(entities);
+    }
+
+    @Override
+    protected void onStorageDomainsList(List<StorageDomain> storageDomains) {
+        List<StorageDomain> availableStorageDomains = new 
ArrayList<StorageDomain>();
+
+        // Take only GLANCE domains
+        for (StorageDomain storageDomainItem : storageDomains) {
+            if (storageDomainItem.getStorageType() == StorageType.GLANCE) {
+                availableStorageDomains.add(storageDomainItem);
+            }
+        }
+
+        // Sorting by name
+        Collections.sort(availableStorageDomains, new NameableComparator());
+
+        getStorageDomain().setItems(availableStorageDomains);
+        getStorageDomain().setIsEmpty(availableStorageDomains.isEmpty());
+    }
+
+    @Override
+    public void executeCommand(UICommand command)
+    {
+        super.executeCommand(command);
+
+        startProgress(null);
+
+        ArrayList<VdcActionParametersBase> actionParameters = new 
ArrayList<VdcActionParametersBase>();
+
+        for (EntityModel entity : getEntities()) {
+            DiskImage diskImage = (DiskImage) entity.getEntity();
+            ExportRepoImageParameters exportParameters = new 
ExportRepoImageParameters(diskImage.getImageId());
+
+            // source
+            exportParameters.setStoragePoolId(diskImage.getStoragePoolId());
+            
exportParameters.setStorageDomainId(diskImage.getStorageIds().get(0));
+            exportParameters.setImageGroupID(diskImage.getId());
+
+            // destination
+            exportParameters.setDestinationDomainId(((StorageDomain) 
getStorageDomain().getSelectedItem()).getId());
+
+            actionParameters.add(exportParameters);
+        }
+
+        Frontend.RunMultipleAction(VdcActionType.ExportRepoImage, 
actionParameters,
+                new IFrontendMultipleActionAsyncCallback() {
+                    @Override
+                    public void executed(FrontendMultipleActionAsyncResult 
result) {
+                        ImportExportImageModel model = 
(ImportExportImageModel) result.getState();
+                        model.stopProgress();
+                        model.cancel();
+                    }
+                }, this);
+    }
+}
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 a781ad1..ddb0c2b 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
@@ -535,6 +535,9 @@
     @DefaultStringValue("Download Image(s)")
     String downloadImagesTitle();
 
+    @DefaultStringValue("Upload Image(s)")
+    String uploadImagesTitle();
+
     @DefaultStringValue("Snapshots")
     String snapshotsTitle();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java
index aeaa3f2..7433fd3 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java
@@ -27,6 +27,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.quota.ChangeQuotaPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.DisksAllocationPopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.ImportExportImagePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmDiskPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmDiskRemovePopupPresenterWidget;
 
@@ -45,7 +46,8 @@
             final Provider<VmDiskPopupPresenterWidget> newPopupProvider,
             final Provider<VmDiskRemovePopupPresenterWidget> 
removeConfirmPopupProvider,
             final Provider<DisksAllocationPopupPresenterWidget> 
moveOrCopyPopupProvider,
-            final Provider<ChangeQuotaPopupPresenterWidget> 
changeQutoaPopupProvider) {
+            final Provider<ChangeQuotaPopupPresenterWidget> 
changeQutoaPopupProvider,
+            final Provider<ImportExportImagePopupPresenterWidget> 
importExportImagePopupPresenterWidgetProvider) {
         return new MainTabModelProvider<Disk, DiskListModel>(ginjector, 
DiskListModel.class) {
 
             @Override
@@ -53,12 +55,13 @@
                     UICommand lastExecutedCommand, Model windowModel) {
                 if (lastExecutedCommand == getModel().getNewCommand()) {
                     return newPopupProvider.get();
-                }
-                else if (lastExecutedCommand == getModel().getMoveCommand()
+                } else if (lastExecutedCommand == getModel().getMoveCommand()
                         || lastExecutedCommand == getModel().getCopyCommand()) 
{
                     return moveOrCopyPopupProvider.get();
                 } else if (lastExecutedCommand == 
getModel().getChangeQuotaCommand()) {
                     return changeQutoaPopupProvider.get();
+                } else if (lastExecutedCommand == 
getModel().getUploadCommand()) {
+                    return importExportImagePopupPresenterWidgetProvider.get();
                 } else {
                     return super.getModelPopup(source, lastExecutedCommand, 
windowModel);
                 }
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 44ea31a..30bdcf8 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
@@ -9,6 +9,7 @@
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.inject.Inject;
+import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.Quota;
 import org.ovirt.engine.core.common.businessentities.RepoImage;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
@@ -106,6 +107,8 @@
             public String getText(Object image) {
                 if (image instanceof RepoImage) {
                     return ((RepoImage) image).getRepoImageTitle();
+                } else if (image instanceof DiskImage) {
+                    return ((DiskImage) image).getDiskAlias();
                 }
                 return "(Unknown)"; //$NON-NLS-1$
             }
@@ -115,6 +118,8 @@
             public String getText(Object image) {
                 if (image instanceof RepoImage) {
                     return ((RepoImage) image).getFileType().toString();
+                } else if (image instanceof DiskImage) {
+                    return "Disk"; //$NON-NLS-1$
                 }
                 return "(Unknown)"; //$NON-NLS-1$
             }
@@ -124,6 +129,8 @@
             protected Long getRawValue(EntityModel object) {
                 if (object.getEntity() instanceof RepoImage) {
                     return ((RepoImage) (object.getEntity())).getSize();
+                } else if (object.getEntity() instanceof DiskImage) {
+                    return ((DiskImage) 
(object.getEntity())).getSizeInGigabytes();
                 }
                 return null;
             }
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 ff0dd41..8359b7f 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
@@ -197,6 +197,13 @@
             }
         });
 
+        getTable().addActionButton(new 
WebAdminButtonDefinition<Disk>(constants.uploadDisk()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return getMainModel().getUploadCommand();
+            }
+        });
+
         getTable().addActionButton(new 
WebAdminButtonDefinition<Disk>(constants.assignQuota()) {
             @Override
             protected UICommand resolveCommand() {


-- 
To view, visit http://gerrit.ovirt.org/16420
To unsubscribe, visit http://gerrit.ovirt.org/settings

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

Reply via email to