private static byte[] snmpWalk(Map<String,String> settings) throws Exception {
String queryParameters = settings.get("query.parameters");
String[] params = queryParameters.split(",");
String mibDir = settings.get("mibDir");
MibLoaderHolder holder = new MibLoaderHolder(new File(System.getProperty("base.dir"), mibDir), false);
SnmpManager snmpManager = new SnmpUdpV2Manager(holder.getLoader(),ipAddress.toString(),settings.get("community-ro"),3,1000,10,65535,161);
snmpManager.init();
String address = ipAddress;
if (address == null) throw new RuntimeException("Resource Address is null");
Properties parameters = new Properties();
parameters.put(SnmpConfigurator.O_ADDRESS, Arrays.asList(address));
parameters.put(SnmpConfigurator.O_COMMUNITY, Arrays.asList(settings.get("community-ro")));
String version = settings.get("version") == null ? "2c" : settings.get("version");
int retriesInt = settings.get("retries") == null ? 3 : Integer.parseInt(settings.get("retries"));
int timeoutInt = settings.get("timeout") == null ? 1200 : Integer.parseInt(settings.get("timeout"));
int maxrepetitions = settings.get("max-repetitions") == null ? 100 : Integer.parseInt(settings.get("max-repetitions"));
int nonrepeaters = settings.get("non-repeaters") == null ? 10 : Integer.parseInt(settings.get("max-repetitions"));
parameters.put(SnmpConfigurator.O_VERSION, Arrays.asList(version));
parameters.put(SnmpConfigurator.O_TIMEOUT, Arrays.asList(timeoutInt));
parameters.put(SnmpConfigurator.O_RETRIES, Arrays.asList(retriesInt));
parameters.put(SnmpConfigurator.O_MAX_REPETITIONS, Arrays.asList(maxrepetitions));
parameters.put(SnmpConfigurator.O_NON_REPEATERS,Arrays.asList(nonrepeaters));
Node root = snmpManager.snmpWalk(params);
SnmpXmlPrinter snmpXmlPrinter = new SnmpXmlPrinter(holder.getLoader(),root);
String xml = snmpXmlPrinter.printTreeAsXML();
return xml.getBytes();
}
private synchronized void doPause() {