Upload files to "/"
File was missing fro git.EWG so I pulled it from GH.
This commit is contained in:
154
saturationreport.inc.php
Normal file
154
saturationreport.inc.php
Normal file
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
//
|
||||
// Storage Saturation Report Component
|
||||
//
|
||||
|
||||
require_once(dirname(__FILE__) . '/../componenthelper.inc.php');
|
||||
|
||||
$saturationreport_component_name = "saturationreport";
|
||||
|
||||
saturationreport_init();
|
||||
|
||||
/*
|
||||
* Initialize component
|
||||
*/
|
||||
function saturationreport_init()
|
||||
{
|
||||
global $saturationreport_component_name;
|
||||
|
||||
$desc = _('Storage Saturation Report - Display volumes that are close to total capacity.');
|
||||
if ( !saturationreport_check_version() ) {
|
||||
$desc = "<b>" . _('Error: This component requires Nagios XI 1.1.4 or later.') . "</b>";
|
||||
}
|
||||
|
||||
$args = array(
|
||||
COMPONENT_NAME => $saturationreport_component_name,
|
||||
COMPONENT_AUTHOR => "snapier",
|
||||
COMPONENT_DESCRIPTION => $desc,
|
||||
COMPONENT_TITLE => _('Storage Saturation Report'),
|
||||
COMPONENT_VERSION => '1.0.0',
|
||||
COMPONENT_DATE => '01/18/2026',
|
||||
);
|
||||
|
||||
register_component($saturationreport_component_name, $args);
|
||||
|
||||
if ( saturationreport_check_version() ) {
|
||||
register_callback(CALLBACK_MENUS_INITIALIZED, 'saturationreport_component_addmenu');
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks to see if the component is compatible with the version of XI
|
||||
*/
|
||||
function saturationreport_check_version()
|
||||
{
|
||||
if ( function_exists('get_product_release') ) {
|
||||
if (get_product_release() >= 5600) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check Python dependencies for export functionality
|
||||
*/
|
||||
function saturationreport_check_python_dependencies()
|
||||
{
|
||||
// Try to detect Python 3
|
||||
$python_commands = array('python3', '/usr/bin/python3', 'python', '/usr/bin/python');
|
||||
$python_cmd = null;
|
||||
|
||||
foreach ($python_commands as $cmd) {
|
||||
$versionString = @shell_exec($cmd . ' -c "import sys; print(sys.version_info[0])" 2>/dev/null');
|
||||
if ($versionString !== null && trim($versionString) !== '') {
|
||||
$pythonVersion = (int) trim($versionString);
|
||||
if ($pythonVersion >= 3) {
|
||||
$python_cmd = $cmd;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$python_cmd) {
|
||||
return array(
|
||||
'python_available' => false,
|
||||
'error' => 'Python 3 not found. Export functionality will not work.'
|
||||
);
|
||||
}
|
||||
|
||||
// Check for required modules
|
||||
$weasyprint_ok = false;
|
||||
$pillow_ok = false;
|
||||
$pdf2image_ok = false;
|
||||
|
||||
$check_cmd = escapeshellarg($python_cmd) . ' -c ' . escapeshellarg("import weasyprint; print('OK')") . ' 2>/dev/null';
|
||||
$check_output = @shell_exec($check_cmd);
|
||||
if ($check_output !== null && trim($check_output) === 'OK') {
|
||||
$weasyprint_ok = true;
|
||||
}
|
||||
|
||||
$check_cmd = escapeshellarg($python_cmd) . ' -c ' . escapeshellarg("import PIL; print('OK')") . ' 2>/dev/null';
|
||||
$check_output = @shell_exec($check_cmd);
|
||||
if ($check_output !== null && trim($check_output) === 'OK') {
|
||||
$pillow_ok = true;
|
||||
}
|
||||
|
||||
$check_cmd = escapeshellarg($python_cmd) . ' -c ' . escapeshellarg("import pdf2image; print('OK')") . ' 2>/dev/null';
|
||||
$check_output = @shell_exec($check_cmd);
|
||||
if ($check_output !== null && trim($check_output) === 'OK') {
|
||||
$pdf2image_ok = true;
|
||||
}
|
||||
|
||||
$all_ok = $weasyprint_ok && $pillow_ok && $pdf2image_ok;
|
||||
|
||||
return array(
|
||||
'python_available' => true,
|
||||
'python_cmd' => $python_cmd,
|
||||
'weasyprint_installed' => $weasyprint_ok,
|
||||
'pillow_installed' => $pillow_ok,
|
||||
'pdf2image_installed' => $pdf2image_ok,
|
||||
'all_dependencies_ok' => $all_ok,
|
||||
'error' => $all_ok ? null : 'Some Python packages are missing. Install with: pip3 install weasyprint Pillow pdf2image'
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds the index page to the menu
|
||||
*/
|
||||
function saturationreport_component_addmenu()
|
||||
{
|
||||
global $saturationreport_component_name;
|
||||
|
||||
$component_url = get_component_url_base($saturationreport_component_name);
|
||||
|
||||
// find the location of menu of network status map
|
||||
$menu_section = find_menu_item(MENU_HOME, "menu-home-section-maps", "id");
|
||||
if ($menu_section == null) {
|
||||
return false;
|
||||
}
|
||||
$order = grab_array_var($menu_section, "order", "");
|
||||
// Make this the top item in the maps section
|
||||
$new_order = $order + 0.1;
|
||||
if ($new_order < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
add_menu_item(MENU_HOME, array(
|
||||
"type" => "link",
|
||||
"title" => _("Storage Saturation Report"),
|
||||
"id" => "menu-home-section-saturationreport",
|
||||
"order" => $new_order,
|
||||
"opts" => array(
|
||||
"href" => $component_url . "/index.php",
|
||||
"icon" => "fa-file-text-o",
|
||||
)
|
||||
));
|
||||
|
||||
add_menu_item(MENU_HOME, array(
|
||||
"type" => "linkspacer",
|
||||
"id" => "menu-home-section-saturationreport-spacer",
|
||||
"order" => $new_order+0.1
|
||||
));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user