From: <tk...@hy...> - 2008-04-21 21:30:10
|
Author: tkeeney Date: 2008-04-21 14:30:04 -0700 (Mon, 21 Apr 2008) New Revision: 9085 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=9085 Modified: trunk/src/org/hyperic/hq/agent/server/AgentCommandsServer.java trunk/src/org/hyperic/hq/agent/server/AgentDaemon.java trunk/src/org/hyperic/hq/agent/server/AgentServerHandler.java trunk/src/org/hyperic/hq/agent/server/AgentTransportFactory.java Log: Hooking new agent transport into the HQ agent. Modified: trunk/src/org/hyperic/hq/agent/server/AgentCommandsServer.java =================================================================== --- trunk/src/org/hyperic/hq/agent/server/AgentCommandsServer.java 2008-04-21 21:28:58 UTC (rev 9084) +++ trunk/src/org/hyperic/hq/agent/server/AgentCommandsServer.java 2008-04-21 21:30:04 UTC (rev 9085) @@ -47,6 +47,7 @@ import org.hyperic.hq.agent.commands.AgentReceiveFileData_args; import org.hyperic.hq.agent.commands.AgentRestart_args; import org.hyperic.hq.agent.commands.AgentRestart_result; +import org.hyperic.hq.transport.AgentTransport; import org.hyperic.util.file.FileWriter; import org.hyperic.util.math.MathUtil; @@ -123,7 +124,7 @@ } } - public void startup(AgentDaemon agent){ + public void startup(AgentDaemon agent, AgentTransport agentTransport){ this.log.info("Agent commands started up"); this.agent = agent; } Modified: trunk/src/org/hyperic/hq/agent/server/AgentDaemon.java =================================================================== --- trunk/src/org/hyperic/hq/agent/server/AgentDaemon.java 2008-04-21 21:28:58 UTC (rev 9084) +++ trunk/src/org/hyperic/hq/agent/server/AgentDaemon.java 2008-04-21 21:30:04 UTC (rev 9085) @@ -48,7 +48,6 @@ import org.hyperic.hq.agent.server.monitor.AgentMonitorException; import org.hyperic.hq.agent.server.monitor.AgentMonitorInterface; import org.hyperic.hq.agent.server.monitor.AgentMonitorSimple; -import org.hyperic.hq.bizapp.agent.client.AgentClient; import org.hyperic.hq.product.GenericPlugin; import org.hyperic.hq.product.PluginException; import org.hyperic.hq.product.PluginExistsException; @@ -606,7 +605,7 @@ } } - private void startHandlers() + private void startHandlers(AgentTransport agentTransport) throws AgentStartException { int i; @@ -619,7 +618,7 @@ handler = (AgentServerHandler) this.serverHandlers.get(i); try { - handler.startup(this); + handler.startup(this, agentTransport); } catch(AgentStartException exc){ logger.error("Error starting plugin " + handler, exc); throw exc; @@ -705,36 +704,21 @@ AgentTransport agentTransport = null; try { - String unidirectionalString = - getBootConfig().getBootProperties() - .getProperty(AgentClient.QPROP_UNI, - Boolean.FALSE.toString()); + AgentTransportFactory factory = + new AgentTransportFactory(getBootConfig(), + getStorageProvider()); - boolean unidirectional = - Boolean.valueOf(unidirectionalString).booleanValue(); + agentTransport = factory.createAgentTransport(); + + this.startPluginManagers(); + this.startHandlers(agentTransport); - if (unidirectional) { - logger.info("Setting up unidirectional transport"); - - AgentTransportFactory factory = - new AgentTransportFactory(getBootConfig(), - getStorageProvider(), - unidirectional); - - try { - agentTransport = factory.createAgentTransport(); - } catch (ClassNotFoundException e) { - throw new AgentStartException( - "Unidirectional transport is not available in .ORG"); - } - - // FIXME register services here - //agentTransport.registerService(serviceInterface, serviceImpl); + // The server handlers have registered the new transport services. + // Now we can start the agent transport. + if (agentTransport != null) { agentTransport.start(); } - - this.startPluginManagers(); - this.startHandlers(); + this.listener.setup(); this.logger.info("Agent started successfully"); this.sendNotification(NOTIFY_AGENT_UP, "we're up, baby!"); Modified: trunk/src/org/hyperic/hq/agent/server/AgentServerHandler.java =================================================================== --- trunk/src/org/hyperic/hq/agent/server/AgentServerHandler.java 2008-04-21 21:28:58 UTC (rev 9084) +++ trunk/src/org/hyperic/hq/agent/server/AgentServerHandler.java 2008-04-21 21:30:04 UTC (rev 9085) @@ -28,6 +28,7 @@ import org.hyperic.hq.agent.AgentAPIInfo; import org.hyperic.hq.agent.AgentRemoteException; import org.hyperic.hq.agent.AgentRemoteValue; +import org.hyperic.hq.transport.AgentTransport; import java.io.InputStream; import java.io.OutputStream; @@ -86,9 +87,13 @@ * inform the plugin that it should startup. When this method is invoked, * a plugin should setup all the internal resources it needs (like * helper threads, etc.) + * + * @param agent The agent. + * @param agentTransport The agent transport or <code>null</code> if we are + * not using the new transport mechanism. */ - public void startup(AgentDaemon agent) + public void startup(AgentDaemon agent, AgentTransport agentTransport) throws AgentStartException; /** Modified: trunk/src/org/hyperic/hq/agent/server/AgentTransportFactory.java =================================================================== --- trunk/src/org/hyperic/hq/agent/server/AgentTransportFactory.java 2008-04-21 21:28:58 UTC (rev 9084) +++ trunk/src/org/hyperic/hq/agent/server/AgentTransportFactory.java 2008-04-21 21:30:04 UTC (rev 9085) @@ -28,6 +28,8 @@ import java.net.InetSocketAddress; import java.util.Properties; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.hyperic.hq.agent.AgentConfig; import org.hyperic.hq.bizapp.agent.CommandsAPIInfo; import org.hyperic.hq.bizapp.agent.ProviderInfo; @@ -39,24 +41,21 @@ */ public class AgentTransportFactory { + private static final Log _log = LogFactory.getLog(AgentTransportFactory.class); + private final AgentConfig _bootConfig; private final AgentStorageProvider _storageProvider; - private final boolean _unidirectional; /** * Creates an instance. * * @param bootConfig The boot config. * @param storageProvider The storage provider. - * @param unidirectional <code>true</code> if the agent is unidirectional; - * <code>false</code> if the agent is bidirectional. */ public AgentTransportFactory(AgentConfig bootConfig, - AgentStorageProvider storageProvider, - boolean unidirectional) { + AgentStorageProvider storageProvider) { _bootConfig = bootConfig; _storageProvider = storageProvider; - _unidirectional = unidirectional; } /** @@ -68,6 +67,12 @@ public AgentTransport createAgentTransport() throws Exception { Properties bootProperties = _bootConfig.getBootProperties(); + String unidirectionalString = + bootProperties.getProperty(AgentClient.QPROP_UNI, + Boolean.FALSE.toString()); + boolean unidirectional = + Boolean.valueOf(unidirectionalString).booleanValue(); + String host = bootProperties.getProperty(AgentClient.QPROP_IPADDR); String portString = bootProperties.getProperty(AgentClient.QPROP_SSLPORT, @@ -82,11 +87,17 @@ ProviderInfo providerInfo = CommandsAPIInfo.getProvider(_storageProvider); + if (providerInfo == null) { + throw new Exception("Need to setup agent to initialize agent token"); + } + String agentToken = providerInfo.getAgentToken(); - + AgentTransport agentTransport; - if (_unidirectional) { + if (unidirectional) { + _log.info("Setting up unidirectional transport"); + InetSocketAddress pollerBindAddr = new InetSocketAddress(host, port); @@ -95,11 +106,14 @@ "transport/ServerInvokerServlet", true, agentToken, - true, + unidirectional, pollingFrequency, 2); } else { - throw new UnsupportedOperationException("bidirectional agent not supported yet"); + _log.info("Setting up bidirectional transport"); + // TODO need to implement bidirectional transport and return + // an agent transport instead of null + return null; } return agentTransport; |