Guest User

Untitled

a guest
Mar 14th, 2020
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. discovery_list = JSON.parse(value);
  2.  
  3. ent_dict = [];
  4.  
  5. base_ddmi_sensor_re = /Te(\d+)\/(\d+) (?:Module|Receive|Transmit) (?:Power|Temperature) Sensor/;
  6.  
  7.  
  8. function ddmi_discovery(entd, interface_array, discovery_list)
  9. {
  10.    ddmi_rx_re = "Te" + interface_array[1] + "/" + interface_array[2] + " Receive Power Sensor";
  11.    ddmi_tx_re = "Te" + interface_array[1] + "/" + interface_array[2] + " Transmit Power Sensor";
  12.    ddmi_temp = "Te" + interface_array[1] + "/" + interface_array[2] + " Module Temperature Sensor";
  13.    ifname = "Te" + interface_array[1] + "/" + interface_array[2];
  14.    json_result = {};  
  15.  
  16.   // find rx/tx/temp for ddmi trans
  17.   for (var i in entd)
  18.      {        
  19.         if (entd[i]["{#ENTPHY}"] == ddmi_rx_re)
  20.           {
  21.             json_result["{#RX_NAME}"] = entd[i]["{#ENTPHY}"];
  22.             json_result["{#RX_INDEX}"] = entd[i]["{#SNMPINDEX}"];            
  23.           }
  24.        
  25.         if (entd[i]["{#ENTPHY}"] == ddmi_tx_re)
  26.           {
  27.             json_result["{#TX_NAME}"] = entd[i]["{#ENTPHY}"];
  28.             json_result["{#TX_INDEX}"] = entd[i]["{#SNMPINDEX}"];            
  29.           }
  30.  
  31.        if (entd[i]["{#ENTPHY}"] == ddmi_temp)
  32.           {
  33.             json_result["{#TEMP_NAME}"] = entd[i]["{#ENTPHY}"];
  34.             json_result["{#TEMP_INDEX}"] = entd[i]["{#SNMPINDEX}"];            
  35.           }
  36.      }  
  37.  
  38.   // find ifalias/ifdescr/ifname for ddmi trans
  39.   for (var i in discovery_list)
  40.     {      
  41.       if (ifname == discovery_list[i]["{#IFNAME}"])
  42.         {  
  43.           json_result["{#IFNAME}"] = ifname;
  44.           json_result["{#IFDESCR}"] = discovery_list[i]["{#IFDESCR}"];
  45.           json_result["{#IFALIAS}"] = discovery_list[i]["{#IFALIAS}"];
  46.         }
  47.     }
  48.  
  49.   return json_result;  
  50. }
  51.  
  52. // find json objects with {#ENTPHY} and {#ENTSENSORVALUE} keys in discovery from zabbix
  53. for (var i in discovery_list)
  54.   {
  55.     if (("{#ENTPHY}" in discovery_list[i]) && (("{#ENTSENSORVALUE}" in discovery_list[i])))
  56.       {
  57.         json_append = {"{#ENTPHY}": discovery_list[i]["{#ENTPHY}"],
  58.                     "{#ENTSENSORVALUE}": discovery_list[i]["{#ENTSENSORVALUE}"],
  59.                     "{#SNMPINDEX}": discovery_list[i]["{#SNMPINDEX}"]
  60.                    };
  61.        
  62.         ent_dict.push(json_append);
  63.       }    
  64.   }
  65.  
  66. interfaces_done = []
  67. discovery_transformed = []
  68.  
  69. // find ddmi sensors in list
  70. for (var i in ent_dict)
  71.   {    
  72.     entphy = ent_dict[i]["{#ENTPHY}"];
  73.     if (base_ddmi_sensor_re.test(entphy))
  74.       {
  75.         // get array of interface numbers like 0/0
  76.         interface_array = entphy.match(base_ddmi_sensor_re);
  77.         // generate interface string like 0/0
  78.         int_name = interface_array[1] + "/" + interface_array[2];
  79.         // check if we already got values for this interface
  80.         if (interfaces_done.indexOf(int_name) == -1)
  81.           {            
  82.             // get json object with all ddmi snmp indexes for this interface
  83.             interface_ddmi_indexes = ddmi_discovery(ent_dict, interface_array, discovery_list);
  84.             // add interface to done list
  85.             interfaces_done = interfaces_done.concat(int_name);
  86.             //
  87.             discovery_transformed = discovery_transformed.concat(interface_ddmi_indexes);            
  88.           }
  89.       }    
  90.   }
  91.  
  92. result_json = JSON.stringify(discovery_transformed);
  93.  
  94. return result_json;
Advertisement
Add Comment
Please, Sign In to add comment