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
