package com.vmware.springsource.hyperic.plugin.gemfire.detectors;
import java.util.ArrayList;
import java.util.List;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import org.apache.commons.logging.Log;
import org.hyperic.hq.product.AutoServerDetector;
import org.hyperic.hq.product.PluginException;
import org.hyperic.hq.product.ServerDetector;
import org.hyperic.hq.product.ServerResource;
import org.hyperic.hq.product.jmx.MxUtil;
import org.hyperic.util.config.ConfigResponse;
public class JMXAgentDetector extends ServerDetector
implements AutoServerDetector {
Log log;
public JMXAgentDetector() {
this.log = getLog();
}
public List getServerResources(ConfigResponse pc) throws PluginException {
this.log.debug("[getServerResources] pc=" + pc);
List servers = new ArrayList();
try {
MBeanServerConnection mServer = MxUtil.getMBeanServer(pc.toProperties());
ObjectName mbean = new ObjectName("GemFire:type=MemberInfoWithStatsMBean");
String version = (String) mServer.getAttribute(mbean, "Version");
String id = (String) mServer.getAttribute(mbean, "Id");
boolean versionOK = version.startsWith(getTypeInfo().getVersion());
this.log.debug("Agent version='" + version + " " + (versionOK ? "OK" : "") + " (" + getTypeInfo().getVersion() + ")");
ServerResource server;
if (versionOK) {
server = createServerResource("");
server.setName(getTypeInfo().getName() + " " + id);
server.setIdentifier(id);
setProductConfig(server, new ConfigResponse());
setMeasurementConfig(server, pc);
servers.add(server);
}
// Set<ObjectInstance> mbs = mServer.queryMBeans(new ObjectName("*:*"), null);
// for(ObjectInstance mb:mbs){
// System.out.println("---> "+mb.getObjectName());
// }
} catch (Exception e) {
throw new PluginException(e.getMessage(), e);
}
return servers;
}
}