Maor Lipchuk has uploaded a new change for review.

Change subject: webadmin: Add dialog for attaching an attached Storage Domain 
[2]
......................................................................

webadmin: Add dialog for attaching an attached Storage Domain [2]

Add a dialog box when attaching a Storage Domain to a Data Center from
the Storage main tab through the Data Center sub tab.
Also using a latch flag in the dialog

Change-Id: I9e9b29e24d7c13b16ef80a84eabfe109413d46e9
Bug-Url: https://bugzilla.redhat.com/1138115
Signed-off-by: Maor Lipchuk <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageDataCenterListModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
2 files changed, 103 insertions(+), 35 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/33/34733/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageDataCenterListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageDataCenterListModel.java
index 5f54ac6..4c07929 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageDataCenterListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageDataCenterListModel.java
@@ -2,6 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
 
 import org.ovirt.engine.core.common.VdcActionUtils;
 import org.ovirt.engine.core.common.action.AttachStorageDomainToPoolParameters;
@@ -12,12 +13,14 @@
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 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.queries.IdQueryParameters;
+import 
org.ovirt.engine.core.common.queries.StorageDomainsAndStoragePoolIdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
@@ -30,6 +33,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
+import org.ovirt.engine.ui.uicommonweb.models.Model;
 import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult;
@@ -160,6 +164,16 @@
     public void setavailableDatacenters(ArrayList<StoragePool> value)
     {
         privateavailableDatacenters = value;
+    }
+
+    private List<StoragePool> selectedDataCentersForAttach;
+
+    public List<StoragePool> getSelectedDataCentersForAttach() {
+        return selectedDataCentersForAttach;
+    }
+
+    public void setSelectedDataCentersForAttach(List<StoragePool> 
selectedDataCentersForAttach) {
+        this.selectedDataCentersForAttach = selectedDataCentersForAttach;
     }
 
     public StorageDataCenterListModel()
@@ -363,55 +377,103 @@
 
     private void onAttach()
     {
-        ListModel model = (ListModel) getWindow();
+        final ListModel model = (ListModel) getWindow();
 
-        if (model.getProgress() != null)
-        {
+        if (model.getProgress() != null) {
             return;
         }
 
-        if (getEntity() == null)
-        {
+        if (getEntity() == null) {
             cancel();
             return;
         }
 
         ArrayList<StoragePool> items = new ArrayList<StoragePool>();
-        for (EntityModel a : Linq.<EntityModel> cast(model.getItems()))
-        {
-            if (a.getIsSelected())
-            {
+        for (EntityModel a : Linq.<EntityModel> cast(model.getItems())) {
+            if (a.getIsSelected()) {
                 items.add((StoragePool) a.getEntity());
             }
         }
 
-        if (items.size() > 0)
-        {
-            model.startProgress(null);
-
-            ArrayList<VdcActionParametersBase> parameters =
-                    new ArrayList<VdcActionParametersBase>();
-            for (StoragePool dataCenter : items)
-            {
-                parameters.add(new 
AttachStorageDomainToPoolParameters(getEntity().getId(), dataCenter.getId()));
-            }
-
-            
Frontend.getInstance().runMultipleAction(VdcActionType.AttachStorageDomainToPool,
 parameters,
-                    new IFrontendMultipleActionAsyncCallback() {
-                        @Override
-                        public void executed(FrontendMultipleActionAsyncResult 
result) {
-
-                            ListModel localModel = (ListModel) 
result.getState();
-                            localModel.stopProgress();
-                            cancel();
-
-                        }
-                    }, model);
-        }
-        else
-        {
+        if (items.size() == 0) {
             cancel();
+            return;
         }
+
+        setSelectedDataCentersForAttach(items);
+        model.startProgress(null);
+
+        if (getEntity().getStorageDomainType() == StorageDomainType.Data) {
+            StoragePool dataCenter = items.get(0);
+            ArrayList<StorageDomain> storageDomains = new 
ArrayList<StorageDomain>();
+            storageDomains.add(getEntity());
+            
Frontend.getInstance().runQuery(VdcQueryType.GetStorageDomainsWithAttachedStoragePoolGuid,
+                    new 
StorageDomainsAndStoragePoolIdQueryParameters(storageDomains, 
dataCenter.getId()),
+                    new AsyncQuery(this, new INewAsyncCallback() {
+                        @Override
+                        public void onSuccess(Object target, Object 
returnValue) {
+                            StorageDataCenterListModel 
storageDataCenterListModel =(StorageDataCenterListModel) target;
+                            List<StorageDomainStatic> attachedStorageDomains = 
((VdcQueryReturnValue) returnValue).getReturnValue();
+                            if (!attachedStorageDomains.isEmpty()) {
+                                ConfirmationModel model = new 
ConfirmationModel();
+                                storageDataCenterListModel.setWindow(null);
+                                storageDataCenterListModel.setWindow(model);
+
+                                List<String> stoageDomainNames = new 
ArrayList<String>();
+                                for (StorageDomainStatic domain : 
attachedStorageDomains) {
+                                    
stoageDomainNames.add(domain.getStorageName());
+                                }
+                                model.setItems(stoageDomainNames);
+
+                                
model.setTitle(ConstantsManager.getInstance().getConstants().storageDomainsAttachedToDataCenterWarningTitle());
+                                
model.setMessage(ConstantsManager.getInstance().getConstants().storageDomainsAttachedToDataCenterWarningMessage());
+                                model.getLatch().setIsAvailable(true);
+                                model.getLatch().setIsChangable(true);
+
+                                UICommand maintenance = new 
UICommand("OnAttachApprove", storageDataCenterListModel); //$NON-NLS-1$
+                                
maintenance.setTitle(ConstantsManager.getInstance().getConstants().ok());
+                                maintenance.setIsDefault(true);
+                                model.getCommands().add(maintenance);
+
+                                UICommand cancel = new UICommand("Cancel", 
storageDataCenterListModel); //$NON-NLS-1$
+                                
cancel.setTitle(ConstantsManager.getInstance().getConstants().cancel());
+                                cancel.setIsCancel(true);
+                                model.getCommands().add(cancel);
+                            } else {
+                                executeAttachStorageDomains(model);
+                            }
+                        }
+                    }));
+        } else {
+            executeAttachStorageDomains(model);
+        }
+    }
+
+    public void onAttachApprove() {
+        ConfirmationModel model = (ConfirmationModel) getWindow();
+        if (!model.validate()) {
+            return;
+        }
+        executeAttachStorageDomains(model);
+    }
+
+    public void executeAttachStorageDomains(Model model) {
+        ArrayList<VdcActionParametersBase> parameters = new 
ArrayList<VdcActionParametersBase>();
+        ArrayList<StoragePool> items = new ArrayList<StoragePool>();
+        for (StoragePool dataCenter : getSelectedDataCentersForAttach()) {
+            parameters.add(new 
AttachStorageDomainToPoolParameters(getEntity().getId(), dataCenter.getId()));
+        }
+        
Frontend.getInstance().runMultipleAction(VdcActionType.AttachStorageDomainToPool,
 parameters,
+                new IFrontendMultipleActionAsyncCallback() {
+                    @Override
+                    public void executed(FrontendMultipleActionAsyncResult 
result) {
+
+                        ListModel localModel = (ListModel) result.getState();
+                        localModel.stopProgress();
+                        cancel();
+
+                    }
+                }, model);
     }
 
     private void detach()
@@ -705,6 +767,10 @@
         {
             onAttach();
         }
+        else if ("OnAttachApprove".equals(command.getName())) //$NON-NLS-1$
+        {
+            onAttachApprove();
+        }
         else if ("OnDetach".equals(command.getName())) //$NON-NLS-1$
         {
             onDetach();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
index b335758..cb5e1dc 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
@@ -174,7 +174,9 @@
             @Override
             public AbstractModelBoundPopupPresenterWidget<? extends 
ConfirmationModel, ?> getConfirmModelPopup(StorageDataCenterListModel source,
                     UICommand lastExecutedCommand) {
-                if (lastExecutedCommand == getModel().getDetachCommand()) {
+
+                if (lastExecutedCommand == getModel().getDetachCommand() ||
+                        lastExecutedCommand.getName().equals("OnAttach")) { 
//$NON-NLS-1$
                     return removeConfirmPopupProvider.get();
                 } else {
                     return super.getConfirmModelPopup(source, 
lastExecutedCommand);


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9e9b29e24d7c13b16ef80a84eabfe109413d46e9
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Maor Lipchuk <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to