Ravi Nori has uploaded a new change for review.

Change subject: webadmin: GuideMe can't activate hosts
......................................................................

webadmin: GuideMe can't activate hosts

Add check-box for host activation directly
from DataCenter/Cluster GuideMe dialog.

Change-Id: I983ad2c714ff945541de5f0b0d6f95e524f7edbc
Bug-Url: https://bugzilla.redhat.com/1098603
Signed-off-by: Ravi Nori <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/GuideModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGuideModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterGuideModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHost.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHostData.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/section/main/view/popup/guide/MoveHostPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.ui.xml
8 files changed, 266 insertions(+), 41 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/92/39992/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/GuideModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/GuideModel.java
index 3f58ec2..7f3ef94 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/GuideModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/GuideModel.java
@@ -1,14 +1,44 @@
 package org.ovirt.engine.ui.uicommonweb.models;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import com.google.gwt.user.client.Timer;
+import org.ovirt.engine.core.common.action.ChangeVDSClusterParameters;
+import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VDSStatus;
+import org.ovirt.engine.core.common.interfaces.SearchType;
+import org.ovirt.engine.core.common.queries.SearchParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
+import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.uicommonweb.ErrorPopupManager;
+import org.ovirt.engine.ui.uicommonweb.TypeResolver;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.MoveHost;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.MoveHostData;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult;
+import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback;
 import org.ovirt.engine.ui.uicompat.ObservableCollection;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 
 @SuppressWarnings("unused")
 public class GuideModel extends EntityModel
 {
+
+    private ErrorPopupManager errorPopupManager;
+
+    private void setConsoleHelpers() {
+        this.errorPopupManager = (ErrorPopupManager) 
TypeResolver.getInstance().resolve(ErrorPopupManager.class);
+    }
 
     private List<UICommand> compulsoryActions;
 
@@ -60,5 +90,103 @@
         setOptionalActions(new ObservableCollection<UICommand>());
         setNote(new EntityModel<String>());
         getNote().setIsAvailable(false);
+        setConsoleHelpers();
+    }
+
+    public void cancel() {}
+
+    public void postAction() {}
+
+    protected String getVdsSearchString(final MoveHost moveHost) {
+        StringBuilder buf = new StringBuilder("Host: "); //$NON-NLS-1$
+        int i = 0;
+        for (MoveHostData hostData : moveHost.getSelectedHosts()) {
+            if (i > 0) {
+                buf.append(" or "); //$NON-NLS-1$
+            }
+            buf.append("name = "); //$NON-NLS-1$
+            buf.append(hostData.getEntity().getName());
+            i++;
+        }
+        return buf.toString();
+    }
+
+    protected void checkVdsClusterChangeSucceeded(final GuideModel guideModel,
+                                                  final String searchStr,
+                                                  final 
ArrayList<VdcActionParametersBase> changeVdsParameterList,
+                                                  final 
ArrayList<VdcActionParametersBase> activateVdsParameterList) {
+        final Map<Guid, Guid> hostClusterIdMap = new HashMap<>();
+        for (VdcActionParametersBase param : changeVdsParameterList) {
+            hostClusterIdMap.put(((ChangeVDSClusterParameters) 
param).getVdsId(),
+                    ((ChangeVDSClusterParameters) param).getClusterId());
+        }
+        Frontend.getInstance().runQuery(VdcQueryType.Search,
+                new SearchParameters(searchStr, SearchType.VDS),
+                new AsyncQuery(this,
+                        new INewAsyncCallback() {
+                            @Override
+                            public void onSuccess(Object target, Object 
returnValue) {
+                                ArrayList<VDS> hosts = ((VdcQueryReturnValue) 
returnValue).getReturnValue();
+                                boolean succeeded = true;
+                                for (VDS host : hosts) {
+                                    if 
(!host.getVdsGroupId().equals(hostClusterIdMap.get(host.getId()))) {
+                                        succeeded = false;
+                                    }
+                                }
+                                if (!succeeded) {
+                                    guideModel.getWindow().stopProgress();
+                                    guideModel.cancel();
+                                    
errorPopupManager.show(ConstantsManager.getInstance().getConstants().hostChangeClusterTimeOut());
+                                } else {
+                                    
activateHostsAfterClusterChange(guideModel, searchStr, 
activateVdsParameterList);
+                                }
+                            }
+                        }));
+    }
+
+    protected void activateHostsAfterClusterChange(
+            final GuideModel guideModel,
+            final String searchStr,
+            final ArrayList<VdcActionParametersBase> activateVdsParameterList) 
{
+        Frontend.getInstance().runMultipleAction(VdcActionType.ActivateVds, 
activateVdsParameterList,
+                new IFrontendMultipleActionAsyncCallback() {
+                    @Override
+                    public void executed(FrontendMultipleActionAsyncResult 
result) {
+                        Timer timer = new Timer() {
+                            public void run() {
+                                checkVdsActivateSucceeded(guideModel, 
searchStr);
+                            }
+                        };
+
+                        // Execute the timer to expire 5 seconds in the future
+                        timer.schedule(5000);
+                    }
+                },
+                this);
+    }
+
+    protected void checkVdsActivateSucceeded(final GuideModel guideModel, 
final String searchStr) {
+        Frontend.getInstance().runQuery(VdcQueryType.Search,
+                new SearchParameters(searchStr, SearchType.VDS),
+                new AsyncQuery(this,
+                        new INewAsyncCallback() {
+                            @Override
+                            public void onSuccess(Object target, Object 
returnValue) {
+                                ArrayList<VDS> hosts = ((VdcQueryReturnValue) 
returnValue).getReturnValue();
+                                boolean succeeded = true;
+                                for (VDS host : hosts) {
+                                    if (host.getStatus() != VDSStatus.Up) {
+                                        succeeded = false;
+                                    }
+                                }
+                                guideModel.getWindow().stopProgress();
+                                guideModel.cancel();
+                                if (succeeded) {
+                                    guideModel.postAction();
+                                } else {
+                                    
errorPopupManager.show(ConstantsManager.getInstance().getConstants().hostActivationTimeOut());
+                                }
+                            }
+                        }));
     }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGuideModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGuideModel.java
index c5bc87e..9ce6a0c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGuideModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGuideModel.java
@@ -4,12 +4,14 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import com.google.gwt.user.client.Timer;
 import org.ovirt.engine.core.common.action.AddVdsActionParameters;
 import org.ovirt.engine.core.common.action.ApproveVdsParameters;
 import org.ovirt.engine.core.common.action.ChangeVDSClusterParameters;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import org.ovirt.engine.core.common.action.VdsActionParameters;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
@@ -32,6 +34,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.MoveHost;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.MoveHostData;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.NewHostModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
@@ -310,6 +313,7 @@
 
     public void onSelectHost()
     {
+
         MoveHost model = (MoveHost) getWindow();
 
         if (model.getProgress() != null)
@@ -322,55 +326,72 @@
             return;
         }
 
-        model.setSelectedHosts(new ArrayList<VDS>());
+        model.setSelectedHosts(new ArrayList<MoveHostData>());
         for (EntityModel a : Linq.<EntityModel> cast(model.getItems()))
         {
             if (a.getIsSelected())
             {
-                model.getSelectedHosts().add((VDS) a.getEntity());
+                model.getSelectedHosts().add((MoveHostData) a);
             }
         }
 
         VDSGroup cluster = (VDSGroup) model.getCluster().getSelectedItem();
 
-        ArrayList<VdcActionParametersBase> paramerterList =
+        final ArrayList<VdcActionParametersBase> parameterList =
                 new ArrayList<VdcActionParametersBase>();
-        for (VDS host : model.getSelectedHosts())
+        for (MoveHostData hostData : model.getSelectedHosts())
         {
+            VDS host = hostData.getEntity();
             // Try to change host's cluster as neccessary.
             if (host.getVdsGroupId() != null && 
!host.getVdsGroupId().equals(cluster.getId()))
             {
-                paramerterList.add(new 
ChangeVDSClusterParameters(cluster.getId(), host.getId()));
+                parameterList.add(new 
ChangeVDSClusterParameters(cluster.getId(), host.getId()));
 
             }
         }
         model.startProgress(null);
-        
Frontend.getInstance().runMultipleAction(VdcActionType.ChangeVDSCluster, 
paramerterList,
+        
Frontend.getInstance().runMultipleAction(VdcActionType.ChangeVDSCluster, 
parameterList,
                 new IFrontendMultipleActionAsyncCallback() {
                     @Override
                     public void executed(FrontendMultipleActionAsyncResult 
result) {
 
-                        ClusterGuideModel clusterGuideModel = 
(ClusterGuideModel) result.getState();
-                        ArrayList<VDS> hosts = ((MoveHost) 
clusterGuideModel.getWindow()).getSelectedHosts();
+                        final ClusterGuideModel clusterGuideModel = 
(ClusterGuideModel) result.getState();
+                        ArrayList<MoveHostData> hosts = ((MoveHost) 
clusterGuideModel.getWindow()).getSelectedHosts();
                         ArrayList<VdcReturnValueBase> retVals =
                                 (ArrayList<VdcReturnValueBase>) 
result.getReturnValue();
+                        final ArrayList<VdcActionParametersBase> 
activateVdsParameterList = new ArrayList<VdcActionParametersBase>();
                         if (retVals != null && hosts.size() == retVals.size())
                         {
                             int i = 0;
-                            for (VDS selectedHost : hosts)
+
+                            for (MoveHostData selectedHostData : hosts)
                             {
+                                VDS selectedHost= selectedHostData.getEntity();
                                 if (selectedHost.getStatus() == 
VDSStatus.PendingApproval && retVals.get(i) != null
                                         && retVals.get(i).getSucceeded())
                                 {
                                     
Frontend.getInstance().runAction(VdcActionType.ApproveVds,
                                             new 
ApproveVdsParameters(selectedHost.getId()));
+                                } else if (selectedHostData.getActivateHost()) 
{
+                                    activateVdsParameterList.add(new 
VdsActionParameters(selectedHostData.getEntity().getId()));
                                 }
                                 i++;
                             }
                         }
-                        clusterGuideModel.getWindow().stopProgress();
-                        clusterGuideModel.cancel();
-                        clusterGuideModel.postAction();
+
+                        if (activateVdsParameterList.isEmpty()) {
+                            clusterGuideModel.getWindow().stopProgress();
+                            clusterGuideModel.cancel();
+                            clusterGuideModel.postAction();
+                        } else {
+                            final String searchString = 
getVdsSearchString(((MoveHost) clusterGuideModel.getWindow()));
+                            Timer timer = new Timer() {
+                                public void run() {
+                                    
checkVdsClusterChangeSucceeded(clusterGuideModel, searchString, parameterList, 
activateVdsParameterList);
+                                }
+                            };
+                            timer.schedule(2000);
+                        }
 
                     }
                 },
@@ -560,7 +581,8 @@
         }
     }
 
-    private void postAction()
+    @Override
+    public void postAction()
     {
         resetData();
         updateOptions();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterGuideModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterGuideModel.java
index 755cf82..0b59ecc 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterGuideModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterGuideModel.java
@@ -6,6 +6,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import com.google.gwt.user.client.Timer;
 import org.ovirt.engine.core.common.action.AddSANStorageDomainParameters;
 import org.ovirt.engine.core.common.action.AddVdsActionParameters;
 import org.ovirt.engine.core.common.action.ApproveVdsParameters;
@@ -17,6 +18,7 @@
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import org.ovirt.engine.core.common.action.VdsActionParameters;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
@@ -54,6 +56,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.MoveHost;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.MoveHostData;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.NewHostModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.IStorageModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.LocalStorageModel;
@@ -1422,45 +1425,48 @@
             return;
         }
 
-        model.setSelectedHosts(new ArrayList<VDS>());
+        model.setSelectedHosts(new ArrayList<MoveHostData>());
         for (EntityModel a : Linq.<EntityModel> cast(model.getItems()))
         {
             if (a.getIsSelected())
             {
-                model.getSelectedHosts().add((VDS) a.getEntity());
+                model.getSelectedHosts().add((MoveHostData) a);
             }
         }
 
         VDSGroup cluster = (VDSGroup) model.getCluster().getSelectedItem();
-        ArrayList<VdcActionParametersBase> paramerterList =
+        final ArrayList<VdcActionParametersBase> parameterList =
                 new ArrayList<VdcActionParametersBase>();
-        for (VDS host : model.getSelectedHosts())
+        for (MoveHostData hostData : model.getSelectedHosts())
         {
+            VDS host = hostData.getEntity();
             // Try to change host's cluster as neccessary.
             if (host.getVdsGroupId() != null && 
!host.getVdsGroupId().equals(cluster.getId()))
             {
-                paramerterList.add(new 
ChangeVDSClusterParameters(cluster.getId(), host.getId()));
+                parameterList.add(new 
ChangeVDSClusterParameters(cluster.getId(), host.getId()));
 
             }
         }
 
         model.startProgress(null);
 
-        
Frontend.getInstance().runMultipleAction(VdcActionType.ChangeVDSCluster, 
paramerterList,
+        
Frontend.getInstance().runMultipleAction(VdcActionType.ChangeVDSCluster, 
parameterList,
                 new IFrontendMultipleActionAsyncCallback() {
                     @Override
                     public void executed(FrontendMultipleActionAsyncResult 
result) {
 
-                        DataCenterGuideModel dataCenterGuideModel = 
(DataCenterGuideModel) result.getState();
-                        ArrayList<VDS> hosts =
+                        final DataCenterGuideModel dataCenterGuideModel = 
(DataCenterGuideModel) result.getState();
+                        ArrayList<MoveHostData> hosts =
                                 ((MoveHost) 
dataCenterGuideModel.getWindow()).getSelectedHosts();
                         ArrayList<VdcReturnValueBase> retVals =
                                 (ArrayList<VdcReturnValueBase>) 
result.getReturnValue();
+                        final ArrayList<VdcActionParametersBase> 
activateVdsParameterList = new ArrayList<VdcActionParametersBase>();
                         if (retVals != null && hosts.size() == retVals.size())
                         {
                             int i = 0;
-                            for (VDS selectedHost : hosts)
+                            for (MoveHostData selectedHostData : hosts)
                             {
+                                VDS selectedHost = 
selectedHostData.getEntity();
                                 if (selectedHost.getStatus() == 
VDSStatus.PendingApproval && retVals.get(i) != null
                                         && retVals.get(i).getSucceeded())
                                 {
@@ -1469,13 +1475,26 @@
                                             new 
ApproveVdsParameters(selectedHost.getId()),
                                             null,
                                             this);
+                                } else if (selectedHostData.getActivateHost()) 
{
+                                    activateVdsParameterList.add(new 
VdsActionParameters(selectedHostData.getEntity().getId()));
                                 }
                                 i++;
                             }
                         }
-                        dataCenterGuideModel.getWindow().stopProgress();
-                        dataCenterGuideModel.cancel();
-                        dataCenterGuideModel.postAction();
+
+                        if (activateVdsParameterList.isEmpty()) {
+                            dataCenterGuideModel.getWindow().stopProgress();
+                            dataCenterGuideModel.cancel();
+                            dataCenterGuideModel.postAction();
+                        } else {
+                            final String searchString = 
getVdsSearchString(((MoveHost) dataCenterGuideModel.getWindow()));
+                            Timer timer = new Timer() {
+                                public void run() {
+                                    
checkVdsClusterChangeSucceeded(dataCenterGuideModel, searchString, 
parameterList, activateVdsParameterList);
+                                }
+                            };
+                            timer.schedule(2000);
+                        }
                     }
                 },
                 this);
@@ -1648,12 +1667,14 @@
         }
     }
 
-    private void postAction()
+    @Override
+    public void postAction()
     {
         resetData();
         updateOptions();
     }
 
+    @Override
     public void cancel()
     {
         resetData();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHost.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHost.java
index f4ac3ae..9167c5e 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHost.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHost.java
@@ -9,7 +9,6 @@
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
-import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
@@ -17,7 +16,7 @@
 import org.ovirt.engine.ui.uicompat.EventArgs;
 
 @SuppressWarnings("unused")
-public class MoveHost extends ListModel<EntityModel<VDS>>
+public class MoveHost extends ListModel<MoveHostData>
 {
     private ListModel<VDSGroup> privateCluster;
 
@@ -31,14 +30,14 @@
         privateCluster = value;
     }
 
-    private ArrayList<VDS> privateSelectedHosts;
+    private ArrayList<MoveHostData> privateSelectedHosts;
 
-    public ArrayList<VDS> getSelectedHosts()
+    public ArrayList<MoveHostData> getSelectedHosts()
     {
         return privateSelectedHosts;
     }
 
-    public void setSelectedHosts(ArrayList<VDS> value)
+    public void setSelectedHosts(ArrayList<MoveHostData> value)
     {
         privateSelectedHosts = value;
     }
@@ -77,7 +76,7 @@
     private void postGetHostList(ArrayList<VDS> hosts) {
 
         VDSGroup cluster = getCluster().getSelectedItem();
-        ArrayList<EntityModel<VDS>> items = new ArrayList<>();
+        ArrayList<MoveHostData> items = new ArrayList<>();
 
         for (VDS vds : hosts)
         {
@@ -85,8 +84,8 @@
                     (vds.getStatus() == VDSStatus.Maintenance || 
vds.getStatus() == VDSStatus.PendingApproval)
                     && 
vds.getSupportedClusterVersionsSet().contains(cluster.getCompatibilityVersion()))
             {
-                EntityModel<VDS> entity = new EntityModel<>();
-                entity.setEntity(vds);
+                MoveHostData entity = new MoveHostData(vds);
+                entity.setActivateHost(true);
                 items.add(entity);
             }
         }
@@ -94,7 +93,7 @@
         ArrayList<Guid> previouslySelectedHostIDs = new ArrayList<>();
         if (getItems() != null)
         {
-            for (EntityModel<VDS> entity : getItems())
+            for (MoveHostData entity : getItems())
             {
                 if (entity.getIsSelected())
                 {
@@ -103,7 +102,7 @@
             }
         }
         setItems(items);
-        for (EntityModel<VDS> entity : items)
+        for (MoveHostData entity : items)
         {
             
entity.setIsSelected(previouslySelectedHostIDs.contains((entity.getEntity()).getId()));
         }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHostData.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHostData.java
new file mode 100644
index 0000000..359b142
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/MoveHostData.java
@@ -0,0 +1,27 @@
+package org.ovirt.engine.ui.uicommonweb.models.hosts;
+
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+
+
+public class MoveHostData extends EntityModel<VDS> {
+
+    boolean activateHost;
+
+    public MoveHostData(VDS host) {
+        setEntity(host);
+    }
+
+    public VDS getTemplate() {
+        return getEntity();
+    }
+
+    public boolean getActivateHost() {
+        return activateHost;
+    }
+
+    public void setActivateHost(boolean activateHost) {
+        this.activateHost = activateHost;
+    }
+
+}
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 e4f6631..324df1f 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
@@ -2232,6 +2232,12 @@
     @DefaultStringValue("Please select an action to continue")
     String noActionSelectedManageGlusterSwift();
 
+    @DefaultStringValue("Activating the Hosts may take a while, please close 
the 'Guide Me' window and track the Hosts activation via the Events tab or the 
Hosts tab")
+    String hostActivationTimeOut();
+
+    @DefaultStringValue("Changing Host clusters taking longer than expected, 
please close the 'Guide Me' window and activate hosts via the Hosts tab")
+    String hostChangeClusterTimeOut();
+
     @DefaultStringValue("Host cannot be set highly available when 'Do not 
allow migration' or 'Allow manual migration' is selected")
     String hostNonMigratable();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.java
index 256cc3d..642a872 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.ui.webadmin.section.main.view.popup.guide;
 
+import com.google.gwt.cell.client.FieldUpdater;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
@@ -10,10 +11,12 @@
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
 import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
 import org.ovirt.engine.ui.common.widget.renderer.NameRenderer;
+import org.ovirt.engine.ui.common.widget.table.column.AbstractCheckboxColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.MoveHost;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.MoveHostData;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.guide.MoveHostPopupPresenterWidget;
@@ -75,17 +78,17 @@
         table = new EntityModelCellTable<>(true);
         table.setWidth("100%", true); //$NON-NLS-1$
 
-        AbstractTextColumn<EntityModel<VDS>> nameColumn = new 
AbstractTextColumn<EntityModel<VDS>>() {
+        AbstractTextColumn<MoveHostData> nameColumn = new 
AbstractTextColumn<MoveHostData>() {
             @Override
-            public String getValue(EntityModel<VDS> object) {
+            public String getValue(MoveHostData object) {
                 return object.getEntity().getName();
             }
         };
         table.addColumn(nameColumn, constants.nameHost());
 
-        AbstractTextColumn<EntityModel<VDS>> hostColumn = new 
AbstractTextColumn<EntityModel<VDS>>() {
+        AbstractTextColumn<MoveHostData> hostColumn = new 
AbstractTextColumn<MoveHostData>() {
             @Override
-            public String getValue(EntityModel<VDS> object) {
+            public String getValue(MoveHostData object) {
                 return object.getEntity().getHostName();
             }
         };
@@ -98,6 +101,25 @@
             }
         };
         table.addColumn(statusColumn, constants.statusHost(), "90px"); 
//$NON-NLS-1$
+
+        AbstractCheckboxColumn<MoveHostData> activateColumn = new 
AbstractCheckboxColumn<MoveHostData>(
+                new FieldUpdater<MoveHostData, Boolean>() {
+                    @Override
+                    public void update(int idx, MoveHostData object, Boolean 
value) {
+                        object.setActivateHost(value);
+                    }
+                }) {
+            @Override
+            protected boolean canEdit(MoveHostData object) {
+                return true;
+            }
+
+            @Override
+            public Boolean getValue(MoveHostData object) {
+                return object.getActivateHost();
+            }
+        };
+        table.addColumn(activateColumn, constants.activateHost(), "60px"); 
//$NON-NLS-1$
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.ui.xml
index 75b48ca..9e35fd8 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/guide/MoveHostPopupView.ui.xml
@@ -18,7 +18,7 @@
                }
        </ui:style>
 
-       <d:SimpleDialogPanel width="400px" height="300px">
+       <d:SimpleDialogPanel width="460px" height="300px">
                <d:content>
                        <g:FlowPanel>
                                <g:ScrollPanel 
addStyleNames="{style.tablePanel}">


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

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

Reply via email to