@cryptotaxi247 / netdata-1 / commits / 1f891e8db

[freeipmi] Remove id in sensor name when already unique (#6296)

Adrien Mahieux committed Jun 20, 2019 at 20:38 UTC 1f891e8db4e3924156cae42cb7e0b1a044e7c154
1 file changed +34 -18
collectors/freeipmi.plugin/freeipmi_plugin.c
+34 -18
@@ -338,7 +338,8 @@ static void netdata_mark_as_not_updated() {
338 }
339
340 static void send_chart_to_netdata_for_units(int units) {
341 - struct sensor *sn;
341 + struct sensor *sn, *sn_stored;
342 + int dupfound, multiplier;
343
344 switch(units) {
345 case IPMI_MONITORING_SENSOR_UNITS_CELSIUS:
@@ -398,29 +399,44 @@ static void send_chart_to_netdata_for_units(int units) {
399 }
400
401 for(sn = sensors_root; sn; sn = sn->next) {
402 + dupfound = 0;
403 if(sn->sensor_units == units && sn->updated && !sn->ignore) {
404 sn->exposed = 1;
405 + multiplier = 1;
406
407 switch(sn->sensor_reading_type) {
408 + case IPMI_MONITORING_SENSOR_READING_TYPE_DOUBLE:
409 + multiplier = 1000;
410 + // fallthrough
411 case IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER8_BOOL:
412 case IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER32:
407 - printf("DIMENSION i%d_n%d_r%d '%s i%d' absolute 1 1\n"
408 - , sn->sensor_number
409 - , sn->record_id
410 - , sn->sensor_reading_type
411 - , sn->sensor_name
412 - , sn->sensor_number
413 - );
414 - break;
415 -
416 - case IPMI_MONITORING_SENSOR_READING_TYPE_DOUBLE:
417 - printf("DIMENSION i%d_n%d_r%d '%s i%d' absolute 1 1000\n"
418 - , sn->sensor_number
419 - , sn->record_id
420 - , sn->sensor_reading_type
421 - , sn->sensor_name
422 - , sn->sensor_number
423 - );
413 + for (sn_stored = sensors_root; sn_stored; sn_stored = sn_stored->next) {
414 + if (sn_stored == sn) continue;
415 + // If the name is a duplicate, append the sensor number
416 + if ( !strcmp(sn_stored->sensor_name, sn->sensor_name) ) {
417 + dupfound = 1;
418 + printf("DIMENSION i%d_n%d_r%d '%s i%d' absolute 1 %d\n"
419 + , sn->sensor_number
420 + , sn->record_id
421 + , sn->sensor_reading_type
422 + , sn->sensor_name
423 + , sn->sensor_number
424 + , multiplier
425 + );
426 + break;
427 + }
428 + }
429 + // No duplicate name was found, display it just with Name
430 + if (!dupfound) {
431 + // display without ID
432 + printf("DIMENSION i%d_n%d_r%d '%s' absolute 1 %d\n"
433 + , sn->sensor_number
434 + , sn->record_id
435 + , sn->sensor_reading_type
436 + , sn->sensor_name
437 + , multiplier
438 + );
439 + }
440 break;
441
442 default: