Before start, the ESB, download snmp4j-2.5.5.jar and add it to the <ESB_HOME>/repository/components/lib directory.
Environment Setup
- Download ESB 5.0.0 from here.
- Upload the following connectors. (Refer this to add and enable the connector)
- Follow the instruction to get the credential for the Google Spreadsheet Connector.
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="SNMPSetScenario"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="https,http,local">
<target>
<inSequence>
<property expression="json-eval($.host)" name="host"/>
<property expression="json-eval($.port)" name="port"/>
<property expression="json-eval($.snmpVersion)" name="snmpVersion"/>
<property expression="json-eval($.community)" name="community"/>
<property expression="json-eval($.retries)" name="retries"/>
<property expression="json-eval($.timeout)" name="timeout"/>
<property expression="json-eval($.updateOids)" name="updateOids"/>
<property expression="json-eval($.accessToken)" name="accessToken"/>
<property expression="json-eval($.apiUrl)" name="apiUrl"/>
<property expression="json-eval($.spreadsheetId)" name="spreadsheetId"/>
<property expression="json-eval($.range)" name="range"/>
<property expression="json-eval($.insertDataOption)" name="insertDataOption"/>
<property expression="json-eval($.valueInputOption)" name="valueInputOption"/>
<property expression="json-eval($.fields)" name="fields"/>
<property expression="json-eval($.majorDimension)" name="majorDimension"/>
<property name="values" value=""/>
<property name="outputStr" value=""/>
<property name="length" value=""/>
<snmp.init>
<host>{$ctx:host}</host>
<port>{$ctx:port}</port>
<snmpVersion>{$ctx:snmpVersion}</snmpVersion>
<community>{$ctx:community}</community>
<retries>{$ctx:retries}</retries>
<timeout>{$ctx:timeout}</timeout>
</snmp.init>
<snmp.snmpSet>
<updateOids>{$ctx:updateOids}</updateOids>
</snmp.snmpSet>
<property expression="//Response" name="records"/>
<log level="custom">
<property expression="get-property('records')" name="message"/>
</log>
<script language="js">var records = mc.getProperty("records");
records = records.replace("OIDs successfully updated with [", "");
records = records.replace("]", "");
var result;
mc.setProperty("outputStr",records);
mc.setProperty("outputSplitStr",result);
var mystring = 'this,is,an,example';
var splits = records.split(",");
var output = "";
var length = "";
for(var i = 0; i < splits.length; i++){
var key ="";
var val = "";
var splitAgain = splits[i].trim().split(" = ");
key = key.concat(splitAgain[0]);
val = val.concat(splitAgain[1]);
output = output.concat('["' , key,'","' , val, '"]' ,',') ;
mc.setProperty("outputStr",output);
}
var length = output.length;
mc.setProperty("length",length);</script>
<property expression="fn:concat('[', fn:substring(get-property('outputStr'),0,get-property('length')), ']')"
name="values"/>
<log level="custom">
<property expression="get-property('values')" name="values"/>
</log>
<googlespreadsheet.init>
<apiUrl>{$ctx:apiUrl}</apiUrl>
<accessToken>{$ctx:accessToken}</accessToken>
</googlespreadsheet.init>
<googlespreadsheet.addRowsColumnsData>
<spreadsheetId>{$ctx:spreadsheetId}</spreadsheetId>
<range>{$ctx:range}</range>
<insertDataOption>{$ctx:insertDataOption}</insertDataOption>
<valueInputOption>{$ctx:valueInputOption}</valueInputOption>
<fields>{$ctx:fields}</fields>
<majorDimension>{$ctx:majorDimension}</majorDimension>
<values>{$ctx:values}</values>
</googlespreadsheet.addRowsColumnsData>
<respond/>
</inSequence>
</target>
<description/>
</proxy>
Sample Request
{
"host":"127.0.0.1",
"port":"161",
"snmpVersion":"2c",
"updateOids":[
{
"oid":"1.3.6.1.2.1.1.5.0",
"value":"vives@gmail.com",
"type":"String"
},
{
"oid":"1.3.6.1.2.1.1.4.0",
"value":"vives",
"type":"String"
}
],
"community":"private",
"retries":"2",
"timeout":"1000",
"accessToken":"ya29.GlsPBMzxxxxxxxxxxxxxxxr",
"apiUrl":"https://sheets.googleapis.com/v4/spreadsheets",
"spreadsheetId":"1QrJGf3xxxxxx",
"range":"Sheet1!A2",
"insertDataOption":"INSERT_ROWS",
"majorDimension":"ROWS",
"valueInputOption":"RAW",
"fields":"updates"
}


Comments
Post a Comment