mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	Move rrd handling functions into includes/rrdtool.inc.php; add backwards compatibility with file naming in old version of MIB-based polling
This commit is contained in:
		@@ -631,17 +631,6 @@ function name_shorten($name, $common = null, $subst = "mibval", $len = 19) {
 | 
			
		||||
    return $name;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * @return the name of the rrd file for $host's $extra component
 | 
			
		||||
 * @param host Host name
 | 
			
		||||
 * @param extra Components of RRD filename - will be separated with "-"
 | 
			
		||||
 */
 | 
			
		||||
function rrd_name($host, $extra, $exten = ".rrd") {
 | 
			
		||||
    global $config;
 | 
			
		||||
    $filename = safename(is_array($extra) ? implode("-", $extra) : $extra);
 | 
			
		||||
    return implode("/", array($config['rrd_dir'], $host, $filename.$exten));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * @return true if the given graph type is a dynamic MIB graph
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
@@ -395,31 +395,6 @@ function poll_mib_def($device, $mib_name_table, $mib_subdir, $mib_oids, $mib_gra
 | 
			
		||||
}//end poll_mib_def()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Please use this instead of creating & updating RRD files manually.
 | 
			
		||||
 * @param device Device object - only 'hostname' is used at present
 | 
			
		||||
 * @param name Array of rrdname components
 | 
			
		||||
 * @param def Array of data definitions
 | 
			
		||||
 * @param val Array of value definitions
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function rrd_create_update($device, $name, $def, $val, $step=300) {
 | 
			
		||||
    global $config;
 | 
			
		||||
    $rrd = rrd_name($device['hostname'], $name);
 | 
			
		||||
 | 
			
		||||
    if (!is_file($rrd) && $def != null) {
 | 
			
		||||
        // add the --step and the rra definitions to the array
 | 
			
		||||
        $newdef = "--step $step ".implode(' ', $def).$config['rrd_rra'];
 | 
			
		||||
        rrdtool_create($rrd, $newdef);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    rrdtool_update($rrd, $val);
 | 
			
		||||
 | 
			
		||||
}//end rrd_create_update()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function get_main_serial($device) {
 | 
			
		||||
    if ($device['os_group'] == 'cisco') {
 | 
			
		||||
        $serial_output = snmp_get_multi($device, 'entPhysicalSerialNum.1 entPhysicalSerialNum.1001', '-OQUs', 'ENTITY-MIB:OLD-CISCO-CHASSIS-MIB');
 | 
			
		||||
 
 | 
			
		||||
@@ -296,7 +296,18 @@ function rrdtool_escape($string, $maxlength=null){
 | 
			
		||||
 | 
			
		||||
    $result = str_replace(':', '\:', $result);          # escape colons
 | 
			
		||||
    return $result.' ';
 | 
			
		||||
} // rrdtool_escape
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * @return the name of the rrd file for $host's $extra component
 | 
			
		||||
 * @param host Host name
 | 
			
		||||
 * @param extra Components of RRD filename - will be separated with "-"
 | 
			
		||||
 */
 | 
			
		||||
function rrd_name($host, $extra, $exten = ".rrd") {
 | 
			
		||||
    global $config;
 | 
			
		||||
    $filename = safename(is_array($extra) ? implode("-", $extra) : $extra);
 | 
			
		||||
    return implode("/", array($config['rrd_dir'], $host, $filename.$exten));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function rrdtool_tune($type, $filename, $max) {
 | 
			
		||||
@@ -314,4 +325,53 @@ function rrdtool_tune($type, $filename, $max) {
 | 
			
		||||
        $options = "--maximum " . implode(":$max --maximum ", $fields). ":$max";
 | 
			
		||||
        rrdtool('tune', $filename, $options);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
} // rrdtool_tune
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Please use this instead of creating & updating RRD files manually.
 | 
			
		||||
 * @param device Device object - only 'hostname' is used at present
 | 
			
		||||
 * @param name Array of rrdname components
 | 
			
		||||
 * @param def Array of data definitions
 | 
			
		||||
 * @param val Array of value definitions
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function rrd_create_update($device, $name, $def, $val, $step=300) {
 | 
			
		||||
    global $config;
 | 
			
		||||
    $rrd = rrd_name($device['hostname'], $name);
 | 
			
		||||
 | 
			
		||||
    if (!is_file($rrd) && $def != null) {
 | 
			
		||||
        // add the --step and the rra definitions to the array
 | 
			
		||||
        $newdef = "--step $step ".implode(' ', $def).$config['rrd_rra'];
 | 
			
		||||
        rrdtool_create($rrd, $newdef);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    rrdtool_update($rrd, $val);
 | 
			
		||||
 | 
			
		||||
} // rrd_create_update
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * @return bool indicating existence of RRD file
 | 
			
		||||
 * @param device Device object as used with rrd_create_update()
 | 
			
		||||
 * @param name RRD name array as used with rrd_create_update() and rrd_name()
 | 
			
		||||
 */
 | 
			
		||||
function rrd_file_exists($device, $name)
 | 
			
		||||
{
 | 
			
		||||
    return is_file(rrd_name($device['hostname'], $name));
 | 
			
		||||
} // rrd_file_exists
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * @return bool indicating rename success or failure
 | 
			
		||||
 * @param device Device object as used with rrd_create_update()
 | 
			
		||||
 * @param oldname RRD name array as used with rrd_create_update() and rrd_name()
 | 
			
		||||
 * @param newname RRD name array as used with rrd_create_update() and rrd_name()
 | 
			
		||||
 */
 | 
			
		||||
function rrd_file_rename($device, $oldname, $newname)
 | 
			
		||||
{
 | 
			
		||||
    $oldrrd = rrd_name($device['hostname'], $oldname);
 | 
			
		||||
    $newrrd = rrd_name($device['hostname'], $newname);
 | 
			
		||||
    return rename($oldrrd, $newrrd);
 | 
			
		||||
} // rrd_file_rename
 | 
			
		||||
 
 | 
			
		||||
@@ -1154,6 +1154,16 @@ function save_mibs($device, $mibname, $oids, $mibdef, &$graphs)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $usedoids[$index][$obj] = $val;
 | 
			
		||||
 | 
			
		||||
            // if there's a file from the previous version of MIB-based polling, rename it
 | 
			
		||||
            if (rrd_file_exists($device, array($mibname, $mibdef[$obj]['object_type'], $index))
 | 
			
		||||
            && !rrd_file_exists($device, array($mibname, $mibdef[$obj]['shortname'], $index))) {
 | 
			
		||||
                rrd_file_rename($device,
 | 
			
		||||
                    array($mibname, $mibdef[$obj]['object_type'], $index),
 | 
			
		||||
                    array($mibname, $mibdef[$obj]['shortname'], $index));
 | 
			
		||||
                // Note: polling proceeds regardless of rename result
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            rrd_create_update(
 | 
			
		||||
                $device,
 | 
			
		||||
                array(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user