modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupAgentsSelector.java | 35 +++++++++- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupServersSelector.java | 35 +++++++++- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AgentDatasource.java | 2 3 files changed, 68 insertions(+), 4 deletions(-)
New commits: commit 3a22a79738fea4739cda2fe5a5aa6dbec84ac2a1 Author: Jirka Kremser jkremser@redhat.com Date: Wed Mar 13 15:13:54 2013 +0100
[BZ 919416] - A server or agent in the cluster can be added to two different affinity groups - Adding the filtering to the coregui preventing adding the agent/server to more than one affinity group.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupAgentsSelector.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupAgentsSelector.java index a7bd313..781212c 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupAgentsSelector.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupAgentsSelector.java @@ -25,10 +25,13 @@ package org.rhq.enterprise.gui.coregui.client.admin.topology; import static org.rhq.enterprise.gui.coregui.client.admin.topology.AgentDatasourceField.FIELD_NAME;
import java.util.ArrayList; +import java.util.Iterator; import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.Criteria; +import com.smartgwt.client.data.DSRequest; +import com.smartgwt.client.data.DSResponse; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.Window; @@ -113,8 +116,36 @@ public class AffinityGroupAgentsSelector extends AbstractSelector<Agent, AgentCr @Override protected RPCDataSource<Agent, AgentCriteria> getDataSource() { if (datasource == null) { - // fetch all available agents by default - datasource = new AgentDatasource(null, false); + // fetch all available agents without an affinity group + datasource = new AgentDatasource(null, false) { + @Override + protected void executeFetch(final DSRequest request, final DSResponse response, AgentCriteria criteria) { + criteria.fetchAffinityGroup(true); + GWTServiceLookup.getTopologyService().findAgentsByCriteria(criteria, + new AsyncCallback<PageList<Agent>>() { + public void onSuccess(PageList<Agent> result) { + Iterator<Agent> it = result.iterator(); + while (it.hasNext()) { + Agent agent = it.next(); + if (agent.getAffinityGroup() != null) { + it.remove(); + } + } + response.setData(buildRecords(result)); + response.setTotalRows(result.size()); + processResponse(request.getRequestId(), response); + } + + @Override + public void onFailure(Throwable t) { + CoreGUI.getErrorHandler().handleError( + MSG.view_adminTopology_message_fetchAgents2Fail(), t); + response.setStatus(DSResponse.STATUS_FAILURE); + processResponse(request.getRequestId(), response); + } + }); + } + }; } return datasource; } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupServersSelector.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupServersSelector.java index 4fe9732..59e250e 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupServersSelector.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AffinityGroupServersSelector.java @@ -25,10 +25,13 @@ package org.rhq.enterprise.gui.coregui.client.admin.topology; import static org.rhq.enterprise.gui.coregui.client.admin.topology.ServerDatasourceField.FIELD_NAME;
import java.util.ArrayList; +import java.util.Iterator; import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.Criteria; +import com.smartgwt.client.data.DSRequest; +import com.smartgwt.client.data.DSResponse; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.Window; @@ -45,6 +48,7 @@ import com.smartgwt.client.widgets.toolbar.ToolStrip; import org.rhq.core.domain.cloud.Server; import org.rhq.core.domain.cloud.Server.OperationMode; import org.rhq.core.domain.criteria.ServerCriteria; +import org.rhq.core.domain.resource.Agent; import org.rhq.core.domain.util.PageList; import org.rhq.enterprise.gui.coregui.client.CoreGUI; import org.rhq.enterprise.gui.coregui.client.IconEnum; @@ -118,7 +122,36 @@ public class AffinityGroupServersSelector extends AbstractSelector<Server, Serve @Override protected RPCDataSource<Server, ServerCriteria> getDataSource() { if (datasource == null) { - datasource = new ServerDatasource(null); + // fetch all available servers without an affinity group + datasource = new ServerDatasource(null) { + @Override + protected void executeFetch(final DSRequest request, final DSResponse response, ServerCriteria criteria) { + criteria.fetchAffinityGroup(true); + GWTServiceLookup.getTopologyService().findServersByCriteria(criteria, + new AsyncCallback<PageList<Server>>() { + public void onSuccess(PageList<Server> result) { + Iterator<Server> it = result.iterator(); + while (it.hasNext()) { + Server agent = it.next(); + if (agent.getAffinityGroup() != null) { + it.remove(); + } + } + response.setData(buildRecords(result)); + response.setTotalRows(result.size()); + processResponse(request.getRequestId(), response); + } + + @Override + public void onFailure(Throwable t) { + CoreGUI.getErrorHandler().handleError( + MSG.view_adminTopology_message_fetchAgents2Fail(), t); + response.setStatus(DSResponse.STATUS_FAILURE); + processResponse(request.getRequestId(), response); + } + }); + } + }; } return datasource; } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AgentDatasource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AgentDatasource.java index 0b13a1b..12dc52e 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AgentDatasource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/topology/AgentDatasource.java @@ -53,7 +53,7 @@ import org.rhq.enterprise.gui.coregui.client.util.Log; import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
/** - * Datasource for @see FailoverListDetails. + * Datasource for @see Agent. * * @author Jirka Kremser */
rhq-commits@lists.fedorahosted.org