/* * RHQ Management Platform * Copyright (C) 2005-2012 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, as * published by the Free Software Foundation, and/or the GNU Lesser * General Public License, version 2.1, also as published by the Free * Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License and the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU General Public License * and the GNU Lesser General Public License along with this program; * if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.rhq.coregui.server.gwt; import org.apache.commons.lang.ArrayUtils; import org.rhq.core.domain.cloud.AffinityGroup; import org.rhq.core.domain.cloud.FailoverListDetails; import org.rhq.core.domain.cloud.PartitionEvent; import org.rhq.core.domain.cloud.PartitionEventDetails; import org.rhq.core.domain.cloud.PartitionEventType; import org.rhq.core.domain.cloud.Server; import org.rhq.core.domain.cloud.Server.OperationMode; import org.rhq.core.domain.cloud.composite.AffinityGroupCountComposite; import org.rhq.core.domain.cloud.composite.ServerWithAgentCountComposite; import org.rhq.core.domain.criteria.AgentCriteria; import org.rhq.core.domain.criteria.PartitionEventCriteria; import org.rhq.core.domain.criteria.ServerCriteria; import org.rhq.core.domain.resource.Agent; import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; import org.rhq.coregui.client.gwt.TopologyGWTService; import org.rhq.coregui.server.util.SerialUtility; import org.rhq.enterprise.server.cloud.AffinityGroupManagerLocal; import org.rhq.enterprise.server.cloud.PartitionEventManagerLocal; import org.rhq.enterprise.server.cloud.TopologyManagerLocal; import org.rhq.enterprise.server.cloud.instance.ServerManagerLocal; import org.rhq.enterprise.server.core.AgentManagerLocal; import org.rhq.enterprise.server.util.LookupUtil; /** * @author Jiri Kremser */ public class TopologyGWTServiceImpl extends AbstractGWTServiceImpl implements TopologyGWTService { private static final long serialVersionUID = 1L; private TopologyManagerLocal topologyManager = LookupUtil.getTopologyManager(); private AgentManagerLocal agentManager = LookupUtil.getAgentManager(); private PartitionEventManagerLocal partitionEventManager = LookupUtil.getPartitionEventManager(); private AffinityGroupManagerLocal affinityGroupManager = LookupUtil.getAffinityGroupManager(); private ServerManagerLocal serverManager = LookupUtil.getServerManager(); @Override public OperationMode getCurrentServerOperationMode() throws RuntimeException { return serverManager.getServer().getOperationMode(); } @Override public PageList<ServerWithAgentCountComposite> getServers(PageControl pc) throws RuntimeException { try { return SerialUtility.prepare(topologyManager.getServerComposites(getSessionSubject(), pc), "TopologyGWTServiceImpl.getServers"); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void deleteServers(int[] serverIds) throws RuntimeException { try { topologyManager.deleteServers(getSessionSubject(), ArrayUtils.toObject(serverIds)); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void updateServerManualMaintenance(int[] serverIds, boolean manualMaintenance) throws RuntimeException { try { topologyManager.updateServerManualMaintenance(getSessionSubject(), ArrayUtils.toObject(serverIds), manualMaintenance); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public PageList<FailoverListDetails> getFailoverListDetailsByAgentId(int agentId, PageControl pc) throws RuntimeException { try { return SerialUtility.prepare( topologyManager.getFailoverListDetailsByAgentId(getSessionSubject(), agentId, pc), "TopologyGWTServiceImpl.getFailoverListDetailsByAgentId"); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public PageList<PartitionEvent> findPartitionEventsByCriteria(PartitionEventCriteria criteria) throws RuntimeException { try { return SerialUtility.prepare( partitionEventManager.findPartitionEventsByCriteria(getSessionSubject(), criteria), "TopologyGWTServiceImpl.findPartitionEventsByCriteria"); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public PageList<Server> findServersByCriteria(ServerCriteria criteria) throws RuntimeException { try { return SerialUtility.prepare(topologyManager.findServersByCriteria(getSessionSubject(), criteria), "TopologyGWTServiceImpl.findServersByCriteria"); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public PageList<Agent> findAgentsByCriteria(AgentCriteria criteria) throws RuntimeException { try { return SerialUtility.prepare(agentManager.findAgentsByCriteria(getSessionSubject(), criteria), "TopologyGWTServiceImpl.findAgentsByCriteria"); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void cloudPartitionEventRequest() throws RuntimeException { try { partitionEventManager.cloudPartitionEventRequest(getSessionSubject(), PartitionEventType.ADMIN_INITIATED_PARTITION, ""); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void purgeAllEvents() throws RuntimeException { try { partitionEventManager.purgeAllEvents(getSessionSubject()); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void deletePartitionEvents(int[] eventIds) throws RuntimeException { try { partitionEventManager.deletePartitionEvents(getSessionSubject(), ArrayUtils.toObject(eventIds)); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public PageList<PartitionEventDetails> getPartitionEventDetails(int partitionEventId, PageControl pageControl) throws RuntimeException { try { return SerialUtility.prepare( partitionEventManager.getPartitionEventDetails(getSessionSubject(), partitionEventId, pageControl), "TopologyGWTServiceImpl.getPartitionEventDetails"); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public PageList<AffinityGroupCountComposite> getAffinityGroupCountComposites(PageControl pageControl) throws RuntimeException { try { return SerialUtility.prepare(affinityGroupManager.getComposites(getSessionSubject(), pageControl), "TopologyGWTServiceImpl.getAffinityGroupCountComposites"); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public int deleteAffinityGroups(int[] affinityGroupIds) throws RuntimeException { try { return affinityGroupManager.delete(getSessionSubject(), ArrayUtils.toObject(affinityGroupIds)); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public int createAffinityGroup(AffinityGroup affinityGroup) throws RuntimeException { try { return affinityGroupManager.create(getSessionSubject(), affinityGroup); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public AffinityGroup getAffinityGroupById(int affinityGroupId) throws RuntimeException { try { return SerialUtility.prepare(affinityGroupManager.getById(getSessionSubject(), affinityGroupId), "TopologyGWTServiceImpl.getAffinityGroupById"); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void addServersToGroup(int affinityGroupId, Integer[] serverIds) throws RuntimeException { try { affinityGroupManager.addServersToGroup(getSessionSubject(), affinityGroupId, serverIds); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void removeServersFromGroup(Integer[] serverIds) throws RuntimeException { try { affinityGroupManager.removeServersFromGroup(getSessionSubject(), serverIds); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void addAgentsToGroup(int affinityGroupId, Integer[] agentIds) throws RuntimeException { try { affinityGroupManager.addAgentsToGroup(getSessionSubject(), affinityGroupId, agentIds); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void removeAgentsFromGroup(Integer[] agentIds) throws RuntimeException { try { affinityGroupManager.removeAgentsFromGroup(getSessionSubject(), agentIds); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void updateServer(Server server) throws RuntimeException { try { topologyManager.updateServer(getSessionSubject(), server); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public void updateAffinityGroup(AffinityGroup affinityGroup) throws RuntimeException { try { affinityGroupManager.update(getSessionSubject(), affinityGroup); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } @Override public Integer getResourceIdOfAgent(int agentId) throws RuntimeException { try { return topologyManager.getResourceIdOfAgent(getSessionSubject(), agentId); } catch (Throwable t) { throw getExceptionToThrowToClient(t); } } }