Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- discovery_list = JSON.parse(value);
- ent_dict = [];
- base_ddmi_sensor_re = /Te(\d+)\/(\d+) (?:Module|Receive|Transmit) (?:Power|Temperature) Sensor/;
- function ddmi_discovery(entd, interface_array, discovery_list)
- {
- ddmi_rx_re = "Te" + interface_array[1] + "/" + interface_array[2] + " Receive Power Sensor";
- ddmi_tx_re = "Te" + interface_array[1] + "/" + interface_array[2] + " Transmit Power Sensor";
- ddmi_temp = "Te" + interface_array[1] + "/" + interface_array[2] + " Module Temperature Sensor";
- ifname = "Te" + interface_array[1] + "/" + interface_array[2];
- json_result = {};
- // find rx/tx/temp for ddmi trans
- for (var i in entd)
- {
- if (entd[i]["{#ENTPHY}"] == ddmi_rx_re)
- {
- json_result["{#RX_NAME}"] = entd[i]["{#ENTPHY}"];
- json_result["{#RX_INDEX}"] = entd[i]["{#SNMPINDEX}"];
- }
- if (entd[i]["{#ENTPHY}"] == ddmi_tx_re)
- {
- json_result["{#TX_NAME}"] = entd[i]["{#ENTPHY}"];
- json_result["{#TX_INDEX}"] = entd[i]["{#SNMPINDEX}"];
- }
- if (entd[i]["{#ENTPHY}"] == ddmi_temp)
- {
- json_result["{#TEMP_NAME}"] = entd[i]["{#ENTPHY}"];
- json_result["{#TEMP_INDEX}"] = entd[i]["{#SNMPINDEX}"];
- }
- }
- // find ifalias/ifdescr/ifname for ddmi trans
- for (var i in discovery_list)
- {
- if (ifname == discovery_list[i]["{#IFNAME}"])
- {
- json_result["{#IFNAME}"] = ifname;
- json_result["{#IFDESCR}"] = discovery_list[i]["{#IFDESCR}"];
- json_result["{#IFALIAS}"] = discovery_list[i]["{#IFALIAS}"];
- }
- }
- return json_result;
- }
- // find json objects with {#ENTPHY} and {#ENTSENSORVALUE} keys in discovery from zabbix
- for (var i in discovery_list)
- {
- if (("{#ENTPHY}" in discovery_list[i]) && (("{#ENTSENSORVALUE}" in discovery_list[i])))
- {
- json_append = {"{#ENTPHY}": discovery_list[i]["{#ENTPHY}"],
- "{#ENTSENSORVALUE}": discovery_list[i]["{#ENTSENSORVALUE}"],
- "{#SNMPINDEX}": discovery_list[i]["{#SNMPINDEX}"]
- };
- ent_dict.push(json_append);
- }
- }
- interfaces_done = []
- discovery_transformed = []
- // find ddmi sensors in list
- for (var i in ent_dict)
- {
- entphy = ent_dict[i]["{#ENTPHY}"];
- if (base_ddmi_sensor_re.test(entphy))
- {
- // get array of interface numbers like 0/0
- interface_array = entphy.match(base_ddmi_sensor_re);
- // generate interface string like 0/0
- int_name = interface_array[1] + "/" + interface_array[2];
- // check if we already got values for this interface
- if (interfaces_done.indexOf(int_name) == -1)
- {
- // get json object with all ddmi snmp indexes for this interface
- interface_ddmi_indexes = ddmi_discovery(ent_dict, interface_array, discovery_list);
- // add interface to done list
- interfaces_done = interfaces_done.concat(int_name);
- //
- discovery_transformed = discovery_transformed.concat(interface_ddmi_indexes);
- }
- }
- }
- result_json = JSON.stringify(discovery_transformed);
- return result_json;
Advertisement
Add Comment
Please, Sign In to add comment