From 167d4268f23085276116e838564c6009a8f194eb Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Thu, 5 May 2011 16:51:36 +0000 Subject: [PATCH] per-device disabling of poller/discovery modules git-svn-id: http://www.observium.org/svn/observer/trunk@2255 61d68cd4-352d-0410-923a-c4978735b2b8 --- discovery.php | 8 ++- html/pages/device/edit/modules.inc.php | 83 +++++++++++++++++++++++++- poller.php | 8 ++- 3 files changed, 95 insertions(+), 4 deletions(-) diff --git a/discovery.php b/discovery.php index 9f0e0f9d5e..25019bc1b6 100755 --- a/discovery.php +++ b/discovery.php @@ -162,6 +162,8 @@ function discover_device($device, $options) global $config; global $valid; $valid = array(); ## Reset $valid array + $attribs = get_dev_attribs($device['device_id']); + $device_start = utime(); // Start counting device poll time echo($device['hostname'] . " ".$device['device_id']." ".$device['os']." "); @@ -192,9 +194,13 @@ function discover_device($device, $options) } else { foreach($config['discovery_modules'] as $module => $module_status) { - if($module_status || $device_attribs['discovery_module'][$module]) + if ($attribs['discover_'.$module] || ( $module_status && !isset($attribs['discover_'.$module]))) { include('includes/discovery/'.$module.'.inc.php'); + } elseif (isset($attribs['discover_'.$module]) && $attribs['discover_'.$module] == "0") { + echo("Module [ $module ] disabled on host.\n"); + } else { + echo("Module [ $module ] disabled globally.\n"); } } } diff --git a/html/pages/device/edit/modules.inc.php b/html/pages/device/edit/modules.inc.php index 67f869deec..10184d2f64 100644 --- a/html/pages/device/edit/modules.inc.php +++ b/html/pages/device/edit/modules.inc.php @@ -1,15 +1,68 @@ '); $i=0; echo('
Poller Modules
'); echo(''); +echo(''); foreach($config['poller_modules'] as $module => $module_status) { if (!is_integer($i/2)) { $bg_colour = $list_colour_a; } else { $bg_colour = $list_colour_b; } - echo(''); + + echo(''); $i++; } echo('
ModuleGlobalDevice
'.$module.''.($module_status ? 'enabled' : 'disabled' ).'
'.$module.''); + + echo(($module_status ? 'enabled' : 'disabled' )); + + echo(''); + + if(isset($attribs['poll_'.$module])) + { + if ($attribs['poll_'.$module]) {echo("enabled");} else { echo('disabled'); } + } else { + echo(($module_status ? 'enabled' : 'disabled' )); + } + + + echo(''); + + echo('
+ + + +
'); + + + echo('
'); @@ -19,10 +72,36 @@ echo('
'); $i=0; echo('
Discovery Modules
'); echo(''); +echo(''); foreach($config['discovery_modules'] as $module => $module_status) { if (!is_integer($i/2)) { $bg_colour = $list_colour_a; } else { $bg_colour = $list_colour_b; } - echo(''); + echo(''); + + $i++; } echo('
ModuleGlobalDevice
'.$module.''.($module_status ? 'enabled' : 'disabled' ).'
'.$module.''); + + echo(($module_status ? 'enabled' : 'disabled' )); + + echo(''); + + if(isset($attribs['discover_'.$module])) + { + if ($attribs['discover_'.$module]) {echo("enabled");} else { echo('disabled'); } + } else { + echo(($module_status ? 'enabled' : 'disabled' )); + } + + + echo(''); + + echo('
+ + + +
'); + + + echo('
'); diff --git a/poller.php b/poller.php index ec07882d1f..877cbecd0e 100755 --- a/poller.php +++ b/poller.php @@ -108,6 +108,8 @@ function poll_device($device, $options) { global $config; + $attribs = get_dev_attribs($device['device_id']); + $status = 0; unset($array); $device_start = utime(); // Start counting device poll time @@ -164,9 +166,13 @@ function poll_device($device, $options) { } else { foreach($config['poller_modules'] as $module => $module_status) { - if($module_status || $device_attribs['poller_module'][$module]) + if ($attribs['poll_'.$module] || ( $module_status && !isset($attribs['poll_'.$module]))) { include('includes/polling/'.$module.'.inc.php'); + } elseif (isset($attribs['poll_'.$module]) && $attribs['poll_'.$module] == "0") { + echo("Module [ $module ] disabled on host.\n"); + } else { + echo("Module [ $module ] disabled globally.\n"); } } }