mirror of
https://github.com/Cacti/plugin_thold.git
synced 2026-10-23 03:27:05 +09:00
* bug: pass bool (not int) to api_plugin_register_hook() enable argument Cacti 1.3 types api_plugin_register_hook() 5th arg as bool enable. These calls passed int 1, which only coerces while the file lacks declare(strict_types=1); pass true so they stay type-correct. php -l clean. * Exclude live-DB reinstall body of plugin_thold_install() from coverage * bug: pass bool true (not string '1') at remaining register-hook upgrade sites Convert the 17 other api_plugin_register_hook() 5th arguments in includes/database.php from the string '1' to boolean true so the upgrade/re-registration paths are strict_types-safe against Cacti develop's bool \ signature.
2209 lines
84 KiB
PHP
2209 lines
84 KiB
PHP
<?php
|
|
/*
|
|
+-------------------------------------------------------------------------+
|
|
| Copyright (C) 2004-2026 The Cacti Group |
|
|
| |
|
|
| This program is free software; you can redistribute it and/or |
|
|
| modify it under the terms of the GNU General Public License |
|
|
| as published by the Free Software Foundation; either version 2 |
|
|
| of the License, or (at your option) any later version. |
|
|
| |
|
|
| This program is distributed in the hope that it will be useful, |
|
|
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
| GNU General Public License for more details. |
|
|
+-------------------------------------------------------------------------+
|
|
| Cacti: The Complete RRDTool-based Graphing Solution |
|
|
+-------------------------------------------------------------------------+
|
|
| This code is designed, written, and maintained by the Cacti Group. See |
|
|
| about.php and/or the AUTHORS file for specific developer information. |
|
|
+-------------------------------------------------------------------------+
|
|
| http://www.cacti.net/ |
|
|
+-------------------------------------------------------------------------+
|
|
*/
|
|
|
|
/**
|
|
* Runs the plugin's incremental version-to-version schema and settings
|
|
* migrations, comparing the currently installed plugin_config version
|
|
* against the running code's version and applying each intervening
|
|
* upgrade step. Also (re-)creates the full expected schema via
|
|
* thold_setup_database() first, so this is safe to call for both
|
|
* fresh installs and upgrades.
|
|
*
|
|
* @param bool $force Whether to force re-running every migration step
|
|
* regardless of the recorded installed version
|
|
* (default false).
|
|
*
|
|
* @return void
|
|
*
|
|
* @global array $config Cacti global configuration array;
|
|
* used to locate library/plugin files
|
|
* to include.
|
|
* @global string $database_default Reserved/declared for parity with
|
|
* other functions in this file; not
|
|
* used directly here.
|
|
*/
|
|
function thold_upgrade_database($force = false) {
|
|
global $config, $database_default;
|
|
include_once($config['library_path'] . '/database.php');
|
|
|
|
thold_setup_database();
|
|
|
|
include_once($config['base_path'] . '/plugins/thold/setup.php');
|
|
include_once($config['base_path'] . '/plugins/thold/includes/functions.php');
|
|
|
|
$v = plugin_thold_version();
|
|
|
|
$oldv = db_fetch_cell('SELECT version
|
|
FROM plugin_config
|
|
WHERE directory="thold"');
|
|
|
|
if ($force) {
|
|
$oldv = '0.1';
|
|
}
|
|
|
|
db_execute('DELETE FROM settings WHERE name="plugin_thold_version"');
|
|
|
|
// Added in thold v0.4
|
|
if (cacti_version_compare($oldv, '0.4', '<') && !db_column_exists('thold_data', 'local_graph_id')) {
|
|
// Check for needed Cacti Indexes
|
|
db_add_index('graph_templates_item', 'INDEX', 'task_item_id', ['task_item_id']);
|
|
db_add_index('data_local', 'INDEX', 'data_template_id', ['data_template_id']);
|
|
db_add_index('data_local', 'INDEX', 'snmp_query_id', ['snmp_query_id']);
|
|
db_add_index('host_snmp_cache', 'INDEX', 'snmp_query_id', ['snmp_query_id']);
|
|
db_add_index('data_template_rrd', 'INDEX', 'data_source_name', ['data_source_name']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'name',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'id']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'time_hi',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'thold_fail_trigger']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'time_low',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'time_hi']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'time_fail_trigger',
|
|
'type' => 'int (12)',
|
|
'NULL' => false,
|
|
'default' => 1,
|
|
'after' => 'time_low']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'time_fail_length',
|
|
'type' => 'int (12)',
|
|
'NULL' => false,
|
|
'default' => 1,
|
|
'after' => 'time_fail_trigger']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_type',
|
|
'type' => 'int (3)',
|
|
'NULL' => false,
|
|
'default' => 0,
|
|
'after' => 'thold_enabled']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'data_type',
|
|
'type' => 'int (3)',
|
|
'NULL' => false,
|
|
'default' => 0,
|
|
'after' => 'notify_extra']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'percent_ds',
|
|
'type' => 'varchar(64)',
|
|
'NULL' => false,
|
|
'default' => 0,
|
|
'after' => 'cdef']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'tcheck',
|
|
'type' => 'int(1)',
|
|
'NULL' => false,
|
|
'default' => 0]);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'exempt',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'graph_id',
|
|
'type' => 'int(11)',
|
|
'NULL' => false,
|
|
'default' => 0,
|
|
'after' => 'data_id']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'graph_template',
|
|
'type' => 'int(11)',
|
|
'NULL' => false,
|
|
'default' => 0,
|
|
'after' => 'graph_id']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'data_template',
|
|
'type' => 'int(11)',
|
|
'NULL' => false,
|
|
'default' => 0,
|
|
'after' => 'graph_template_id']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'restored_alert',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'name',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => false, 'default' => '',
|
|
'after' => 'id']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'time_hi',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'thold_fail_trigger']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'time_low',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'time_hi']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'time_fail_trigger',
|
|
'type' => 'int (12)',
|
|
'NULL' => false, 'default' => 1,
|
|
'after' => 'time_low']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'time_fail_length',
|
|
'type' => 'int (12)',
|
|
'NULL' => false, 'default' => 1,
|
|
'after' => 'time_fail_trigger']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'thold_type',
|
|
'type' => 'int (3)',
|
|
'NULL' => false, 'default' => 0,
|
|
'after' => 'thold_enabled']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'data_type',
|
|
'type' => 'int (3)',
|
|
'NULL' => false,
|
|
'default' => 0,
|
|
'after' => 'syslog_priority']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'percent_ds',
|
|
'type' => 'varchar(64)',
|
|
'NULL' => false,
|
|
'default' => 0,
|
|
'after' => 'cdef']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'exempt',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'restored_alert',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '']);
|
|
|
|
// Update our hooks
|
|
db_execute('UPDATE plugin_hooks
|
|
SET file = "includes/settings.php"
|
|
WHERE name = "thold"
|
|
AND hook = "config_arrays"');
|
|
|
|
db_execute('UPDATE plugin_hooks
|
|
SET file = "includes/settings.php"
|
|
WHERE name = "thold"
|
|
AND hook = "config_settings"');
|
|
|
|
db_execute('UPDATE plugin_hooks
|
|
SET file = "includes/settings.php"
|
|
WHERE name = "thold"
|
|
AND hook = "draw_navigation_text"');
|
|
|
|
db_execute('UPDATE plugin_hooks
|
|
SET function = "thold_poller_bottom", file = "includes/polling.php"
|
|
WHERE name = "thold"
|
|
AND hook = "poller_bottom"');
|
|
|
|
// Register the new hooks
|
|
api_plugin_register_hook('thold', 'rrd_graph_graph_options', 'thold_rrd_graph_graph_options', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'graph_buttons', 'thold_graph_button', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'data_source_action_array', 'thold_data_source_action_array', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'data_source_action_prepare', 'thold_data_source_action_prepare', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'data_source_action_execute', 'thold_data_source_action_execute', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'graphs_action_array', 'thold_graphs_action_array', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'graphs_action_prepare', 'thold_graphs_action_prepare', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'graphs_action_execute', 'thold_graphs_action_execute', 'setup.php', true);
|
|
|
|
// Fix our realms
|
|
db_execute('UPDATE plugin_realms
|
|
SET file = "thold.php"
|
|
WHERE display = "Configure Thresholds"');
|
|
|
|
api_plugin_register_realm('thold', 'thold_templates.php', 'Configure Threshold Templates', 1);
|
|
|
|
api_plugin_enable_hooks('thold');
|
|
}
|
|
// End 0.4 Upgrade
|
|
|
|
if (cacti_version_compare($oldv, '0.4.3', '<')) {
|
|
// Fix a few hooks
|
|
db_execute('DELETE FROM plugin_hooks WHERE name = "thold" AND hook = "config_insert"');
|
|
db_execute('DELETE FROM plugin_hooks WHERE name = "thold" AND hook = "config_arrays"');
|
|
|
|
api_plugin_register_hook('thold', 'config_insert', 'thold_config_insert', 'includes/settings.php', true);
|
|
api_plugin_register_hook('thold', 'config_arrays', 'thold_config_arrays', 'includes/settings.php', true);
|
|
|
|
api_plugin_enable_hooks('thold');
|
|
|
|
$e = strtolower(db_fetch_cell("SELECT `value` FROM settings WHERE `name` = 'thold_from_email'"));
|
|
|
|
if ($e == 'cacti@cactiusers.org') {
|
|
db_execute("UPDATE settings SET `value`='Cacti@cacti.net' WHERE `name`='thold_from_email'");
|
|
}
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '0.4.4', '<')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'lasttime',
|
|
'type' => 'TIMESTAMP',
|
|
'NULL' => false,
|
|
'after' => 'lastread']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'bl_thold_valid',
|
|
'type' => 'int(11)', 'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'bl_alert']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'expression',
|
|
'type' => 'varchar(70)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'percent_ds']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'expression',
|
|
'type' => 'varchar(70)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'percent_ds']);
|
|
|
|
db_execute('ALTER TABLE thold_data MODIFY name varchar(150) default NULL');
|
|
db_execute('ALTER TABLE thold_template MODIFY COLUMN bl_pct_down varchar(100)');
|
|
db_execute('ALTER TABLE thold_template MODIFY COLUMN bl_pct_up varchar(100)');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN bl_pct_down varchar(100)');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN bl_pct_up varchar(100)');
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '0.4.5', '<')) {
|
|
db_add_column('thold_template', [
|
|
'name' => 'thold_warning_hi',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'time_fail_length']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'thold_warning_low',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'thold_warning_hi']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'thold_warning_fail_trigger',
|
|
'type' => 'int(10)',
|
|
'NULL' => true, 'unsigned' => true,
|
|
'after' => 'thold_warning_low']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'thold_warning_fail_count',
|
|
'type' => 'int(11)',
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'thold_warning_fail_trigger']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'time_warning_hi',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'thold_warning_fail_count']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'time_warning_low',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'time_warning_hi']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'time_warning_fail_trigger',
|
|
'type' => 'int (12)',
|
|
'NULL' => false,
|
|
'default' => 1,
|
|
'after' => 'time_warning_low']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'time_warning_fail_length',
|
|
'type' => 'int (12)',
|
|
'NULL' => false,
|
|
'default' => 1,
|
|
'after' => 'time_warning_fail_trigger']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'notify_warning_extra',
|
|
'type' => 'text',
|
|
'NULL' => true,
|
|
'after' => 'time_warning_fail_length']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_warning_hi',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'time_fail_length']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_warning_low',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'thold_warning_hi']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_warning_fail_trigger',
|
|
'type' => 'int(10)',
|
|
'NULL' => true, 'unsigned' => true,
|
|
'after' => 'thold_warning_low']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_warning_fail_count',
|
|
'type' => 'int(11)',
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'thold_warning_fail_trigger']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'time_warning_hi',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'thold_warning_fail_count']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'time_warning_low',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => true,
|
|
'after' => 'time_warning_hi']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'time_warning_fail_trigger',
|
|
'type' => 'int (12)',
|
|
'NULL' => false,
|
|
'default' => 1,
|
|
'after' => 'time_warning_low']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'time_warning_fail_length',
|
|
'type' => 'int (12)',
|
|
'NULL' => false,
|
|
'default' => 1,
|
|
'after' => 'time_warning_fail_trigger']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'notify_warning_extra',
|
|
'type' => 'text',
|
|
'NULL' => true,
|
|
'after' => 'time_warning_fail_length']);
|
|
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN notify_extra text');
|
|
db_execute('ALTER TABLE thold_template MODIFY COLUMN notify_extra text');
|
|
|
|
$data = [];
|
|
$data['columns'][] = [
|
|
'name' => 'id',
|
|
'type' => 'int(12)',
|
|
'NULL' => false, 'auto_increment' => true
|
|
];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'name',
|
|
'type' => 'varchar(128)',
|
|
'NULL' => false
|
|
];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'enabled',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => ''
|
|
];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'description',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false
|
|
];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'emails',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false
|
|
];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'bcc_emails',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false
|
|
];
|
|
|
|
$data['primary'] = 'id';
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Notification Lists';
|
|
api_plugin_db_table_create('thold', 'plugin_notification_lists', $data);
|
|
|
|
api_plugin_db_add_column('thold', 'host', [
|
|
'name' => 'thold_send_email',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '1',
|
|
'after' => 'disabled']);
|
|
|
|
api_plugin_db_add_column('thold', 'host', [
|
|
'name' => 'thold_host_email',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => true,
|
|
'after' => 'thold_send_email']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'notify_warning',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '1',
|
|
'after' => 'notify_warning_extra']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'notify_alert',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '1',
|
|
'after' => 'notify_warning_extra']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'notify_warning',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '1',
|
|
'after' => 'notify_warning_extra']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'notify_alert',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '1',
|
|
'after' => 'notify_warning_extra']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'hash',
|
|
'type' => 'varchar(32)',
|
|
'NULL' => true,
|
|
'after' => 'id']);
|
|
|
|
if (db_column_exists('thold_data', 'bl_enabled', false)) {
|
|
db_execute('ALTER TABLE thold_data DROP COLUMN bl_enabled', false);
|
|
}
|
|
|
|
if (db_column_exists('thold_template', 'bl_enabled', false)) {
|
|
db_execute('ALTER TABLE thold_template DROP COLUMN bl_enabled', false);
|
|
}
|
|
|
|
api_plugin_register_hook('thold', 'config_form', 'thold_config_form', 'includes/settings.php', true);
|
|
api_plugin_register_realm('thold', 'notify_lists.php', 'Manage Notification Lists', 1);
|
|
|
|
// set unique hash values for all thold templates
|
|
$templates = db_fetch_assoc('SELECT id FROM thold_template');
|
|
|
|
if (sizeof($templates)) {
|
|
foreach ($templates as $t) {
|
|
$hash = get_hash_thold_template($t['id']);
|
|
db_execute_prepared('UPDATE thold_template
|
|
SET hash = ?
|
|
WHERE id = ?
|
|
AND (hash = "" OR hash IS NULL)',
|
|
[$hash, $t['id']]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '0.4.7', '<')) {
|
|
$data = [];
|
|
$data['columns'][] = [
|
|
'name' => 'id',
|
|
'type' => 'int(12)',
|
|
'NULL' => false,
|
|
'unsigned' => true,
|
|
'auto_increment' => true];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'poller_id',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '1'];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'host_id',
|
|
'type' => 'int(12)',
|
|
'unsigned' => true,
|
|
'NULL' => false];
|
|
|
|
$data['primary'] = 'id';
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Devices in a Down State';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_host_failed', $data);
|
|
|
|
db_execute('DELETE FROM settings WHERE name="thold_failed_hosts"');
|
|
|
|
// increase the size of the settings table
|
|
db_execute('ALTER TABLE settings
|
|
MODIFY column `value`
|
|
varchar(1024) NOT NULL default ""');
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '0.6', '<')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'snmp_event_category',
|
|
'type' => 'varchar(255)',
|
|
'NULL' => true,
|
|
'after' => 'notify_alert']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'snmp_event_severity',
|
|
'type' => 'tinyint(1)',
|
|
'NULL' => false,
|
|
'default' => '3',
|
|
'after' => 'snmp_event_category']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'snmp_event_warning_severity',
|
|
'type' => 'tinyint(1)',
|
|
'NULL' => false,
|
|
'default' => '2',
|
|
'after' => 'snmp_event_severity']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_daemon_pid',
|
|
'type' => 'varchar(25)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'snmp_event_warning_severity']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'snmp_event_category',
|
|
'type' => 'varchar(255)',
|
|
'NULL' => true,
|
|
'after' => 'notify_alert']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'snmp_event_severity',
|
|
'type' => 'tinyint(1)',
|
|
'NULL' => false,
|
|
'default' => '3',
|
|
'after' => 'snmp_event_category']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'snmp_event_warning_severity',
|
|
'type' => 'tinyint(1)',
|
|
'NULL' => false,
|
|
'default' => '2',
|
|
'after' => 'snmp_event_severity']);
|
|
|
|
$data = [];
|
|
$data['columns'][] = [
|
|
'name' => 'id',
|
|
'type' => 'int(11)',
|
|
'NULL' => false];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'poller_id',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '1'];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'pid',
|
|
'type' => 'varchar(25)',
|
|
'NULL' => false];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'rrd_reindexed',
|
|
'type' => 'varchar(600)',
|
|
'NULL' => false];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'rrd_time_reindexed',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'time',
|
|
'type' => 'timestamp',
|
|
'NULL' => false,
|
|
'default' => 'CURRENT_TIMESTAMP'];
|
|
|
|
$data['keys'][] = ['name' => 'id', 'columns' => 'id`, `pid'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Poller Outdata needed for queued daemon processes';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_daemon_data', $data);
|
|
|
|
// Rename some columns
|
|
if (db_column_exists('thold_data', 'rra_id')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
CHANGE COLUMN rra_id local_data_id
|
|
int(11) UNSIGNED NOT NULL default "0"');
|
|
}
|
|
|
|
if (db_column_exists('thold_data', 'data_id')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
CHANGE COLUMN data_id data_template_rrd_id
|
|
int(11) UNSIGNED NOT NULL default "0"');
|
|
}
|
|
|
|
if (db_column_exists('thold_data', 'template')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
CHANGE COLUMN template thold_template_id
|
|
int(11) UNSIGNED NOT NULL default "0"');
|
|
}
|
|
|
|
if (db_column_exists('thold_data', 'data_template')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
CHANGE COLUMN data_template data_template_id
|
|
int(11) UNSIGNED NOT NULL default "0"');
|
|
}
|
|
|
|
if (db_column_exists('thold_data', 'graph_id')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
CHANGE COLUMN graph_id local_graph_id
|
|
int(11) UNSIGNED NOT NULL default "0"');
|
|
}
|
|
|
|
if (db_column_exists('thold_data', 'graph_template')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
CHANGE COLUMN graph_template graph_template_id
|
|
int(11) UNSIGNED NOT NULL default "0"');
|
|
}
|
|
|
|
if (db_column_exists('plugin_thold_log', 'graph_id')) {
|
|
db_execute('ALTER TABLE plugin_thold_log
|
|
CHANGE COLUMN graph_id local_graph_id
|
|
int(11) UNSIGNED NOT NULL default "0"');
|
|
}
|
|
|
|
db_add_index('thold_data', 'INDEX', 'tcheck', ['tcheck']);
|
|
db_add_index('thold_data', 'INDEX', 'local_graph_id', ['local_graph_id']);
|
|
db_add_index('thold_data', 'INDEX', 'graph_template_id', ['graph_template_id']);
|
|
db_add_index('thold_data', 'INDEX', 'data_template_id', ['data_template_id']);
|
|
|
|
// Set the default names on threshold and templates
|
|
db_execute("UPDATE thold_data, data_template_data, data_template_rrd
|
|
SET thold_data.name = CONCAT_WS('',data_template_data.name_cache, ' [', data_template_rrd.data_source_name, ']', '')
|
|
WHERE data_template_data.local_data_id = thold_data.local_data_id
|
|
AND data_template_rrd.id = thold_data.data_template_rrd_id
|
|
AND thold_data.name = ''");
|
|
|
|
db_execute("UPDATE thold_template
|
|
SET name = CONCAT_WS('', data_template_name, ' [', data_source_name, ']', '')
|
|
WHERE name = ''");
|
|
|
|
// Set the graph_ids for all thresholds
|
|
db_execute('UPDATE thold_data, graph_templates_item, data_template_rrd
|
|
SET thold_data.local_graph_id = graph_templates_item.local_graph_id,
|
|
thold_data.graph_template_id = graph_templates_item.graph_template_id,
|
|
thold_data.data_template_id = data_template_rrd.data_template_id
|
|
WHERE data_template_rrd.local_data_id=thold_data.local_data_id
|
|
AND data_template_rrd.id=graph_templates_item.task_item_id');
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.0', '<')) {
|
|
$data = [];
|
|
$data['columns'][] = [
|
|
'name' => 'id',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'auto_increment' => true];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'device_template_id',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0'];
|
|
|
|
$data['columns'][] = [
|
|
'name' => 'thold_template_id',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0'];
|
|
|
|
$data['primary'] = 'id';
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Device Template Threshold Templates';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_host_template', $data);
|
|
|
|
api_plugin_register_hook('thold', 'device_template_edit', 'thold_device_template_edit', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'device_template_top', 'thold_device_template_top', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'device_edit_pre_bottom', 'thold_device_edit_pre_bottom', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'api_device_new', 'thold_api_device_new', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'page_head', 'thold_page_head', 'setup.php');
|
|
|
|
if (api_plugin_is_enabled('thold')) {
|
|
api_plugin_enable_hooks('thold');
|
|
}
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.0.1', '<')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_hrule_alert',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => true,
|
|
'after' => 'exempt']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_hrule_warning',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => true,
|
|
'after' => 'thold_hrule_alert']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'thold_hrule_alert',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => true,
|
|
'after' => 'exempt']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'thold_hrule_warning',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => true,
|
|
'after' => 'thold_hrule_alert']);
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.0.2', '<')) {
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN expression VARCHAR(512) NOT NULL DEFAULT ""');
|
|
db_execute('ALTER TABLE thold_template MODIFY COLUMN expression VARCHAR(512) NOT NULL DEFAULT ""');
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.0.3', '<')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'notes',
|
|
'type' => 'varchar(1024)',
|
|
'NULL' => true,
|
|
'default' => '',
|
|
'after' => 'thold_daemon_pid']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'notes',
|
|
'type' => 'varchar(1024)',
|
|
'NULL' => true,
|
|
'default' => '',
|
|
'after' => 'snmp_event_warning_severity']);
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.0.4', '<')) {
|
|
if (!db_column_exists('plugin_thold_daemon_data', 'poller_id')) {
|
|
db_execute("ALTER TABLE plugin_thold_daemon_data
|
|
ADD COLUMN poller_id int(10) unsigned NOT NULL default '1' AFTER `id`,
|
|
ADD KEY `poller_id` (`poller_id`),
|
|
ADD PRIMARY KEY (`id`, `pid`),
|
|
DROP KEY `id`");
|
|
}
|
|
|
|
if (!db_column_exists('plugin_thold_host_failed', 'poller_id')) {
|
|
db_execute("ALTER TABLE plugin_thold_host_failed
|
|
ADD COLUMN poller_id int(10) unsigned NOT NULL default '1' AFTER `id`,
|
|
ADD KEY `poller_id` (`poller_id`)");
|
|
}
|
|
|
|
if (!db_index_exists('thold_data', 'thold_daemon_pid')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
ADD INDEX thold_daemon_pid (thold_daemon_pid)');
|
|
}
|
|
|
|
if (!db_column_exists('thold_template', 'suggested_name')) {
|
|
db_execute("ALTER TABLE thold_template
|
|
ADD COLUMN `suggested_name` varchar(255) NOT NULL default '' AFTER `name`");
|
|
}
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.0.5', '<')) {
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN expression VARCHAR(512) NOT NULL DEFAULT ""');
|
|
db_execute('ALTER TABLE thold_template MODIFY COLUMN expression VARCHAR(512) NOT NULL DEFAULT ""');
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.2', '<')) {
|
|
// Add additional columns for new features
|
|
db_add_column('thold_data', [
|
|
'name' => 'name_cache',
|
|
'type' => 'varchar(150)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'name']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'data_source_name',
|
|
'type' => 'varchar(100)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'data_template_id']);
|
|
|
|
// Acknowledgement
|
|
db_add_column('thold_data', [
|
|
'name' => 'acknowledgment',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'exempt']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'prev_thold_alert',
|
|
'type' => 'int(1)',
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'thold_alert']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'reset_ack',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'restored_alert']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'persist_ack',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'reset_ack']);
|
|
|
|
// Populate the data source name
|
|
db_execute("UPDATE thold_data, data_template_data, data_template_rrd SET
|
|
thold_data.data_source_name = data_template_rrd.data_source_name
|
|
WHERE data_template_data.local_data_id = thold_data.local_data_id
|
|
AND data_template_rrd.id = thold_data.data_template_rrd_id
|
|
AND thold_data.data_source_name = ''");
|
|
|
|
// Required for backward compatibility
|
|
if (db_column_exists('thold_data', 'acknowledgement')) {
|
|
if (!db_column_exists('thold_data', 'acknowledgment')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
CHANGE COLUMN acknowledgement acknowledgment
|
|
char(3) NOT NULL default ""');
|
|
} else {
|
|
db_execute('UPDATE thold_data
|
|
SET acknowledgment = acknowledgement
|
|
WHERE acknowledgment = acknowledgement');
|
|
|
|
db_execute('ALTER TABLE thold_data DROP COLUMN acknowledgement');
|
|
}
|
|
}
|
|
|
|
// For backport legacy support
|
|
if (db_column_exists('thold_data', 'email_body')) {
|
|
set_config_option('thold_enable_per_thold_body', 'on');
|
|
}
|
|
|
|
// For backport legacy support
|
|
if (db_column_exists('thold_data', 'trigger_cmd_high')) {
|
|
set_config_option('thold_enable_scripts', 'on');
|
|
}
|
|
|
|
// Move modifiable Email body into thold
|
|
db_add_column('thold_data', [
|
|
'name' => 'email_body',
|
|
'type' => 'varchar(1024)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'persist_ack']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'email_body_warn',
|
|
'type' => 'varchar(1024)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_body']);
|
|
|
|
// If these columns were added before, change attributes
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN email_body varchar(1024) default ""');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN restored_alert char(3) NOT NULL default ""');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN exempt char(3) NOT NULL default ""');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN data_type int(12) NOT NULL default "0"');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN notify_extra varchar(512) default ""');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN trigger_cmd_high varchar(512) NOT NULL default ""');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN trigger_cmd_low varchar(512) NOT NULL default ""');
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN trigger_cmd_norm varchar(512) NOT NULL default ""');
|
|
|
|
if (db_column_exists('thold_template', 'trigger_cmd_high')) {
|
|
db_execute('ALTER TABLE thold_template MODIFY COLUMN trigger_cmd_high varchar(512) NOT NULL default ""');
|
|
}
|
|
|
|
if (db_column_exists('thold_template', 'trigger_cmd_low')) {
|
|
db_execute('ALTER TABLE thold_template MODIFY COLUMN trigger_cmd_low varchar(512) NOT NULL default ""');
|
|
}
|
|
|
|
if (db_column_exists('thold_template', 'trigger_cmd_norm')) {
|
|
db_execute('ALTER TABLE thold_template MODIFY COLUMN trigger_cmd_norm varchar(512) NOT NULL default ""');
|
|
}
|
|
|
|
// Trigger commands
|
|
db_add_column('thold_data', [
|
|
'name' => 'trigger_cmd_high',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_body_warn']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'trigger_cmd_low',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'trigger_cmd_high']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'trigger_cmd_norm',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'trigger_cmd_low']);
|
|
|
|
// Additional syslog columns
|
|
db_add_column('thold_data', [
|
|
'name' => 'syslog_facility',
|
|
'type' => 'int(2)',
|
|
'NULL' => true,
|
|
'after' => 'syslog_priority']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'syslog_enabled',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'syslog_facility']);
|
|
|
|
// Remove these columns if they exist
|
|
db_remove_column('thold_data', 'bl_ref_time');
|
|
db_remove_column('thold_data', 'notify_default');
|
|
db_remove_column('thold_template', 'notify_default');
|
|
|
|
// Acknowledgement columns
|
|
db_add_column('thold_template', [
|
|
'name' => 'reset_ack',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => 'off',
|
|
'after' => 'restored_alert']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'persist_ack',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => 'off',
|
|
'after' => 'reset_ack']);
|
|
|
|
// Move modifiable Email body into thold
|
|
db_add_column('thold_template', [
|
|
'name' => 'email_body',
|
|
'type' => 'varchar(1024)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'persist_ack']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'email_body_warn',
|
|
'type' => 'varchar(1024)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_body']);
|
|
|
|
// Trigger commands
|
|
db_add_column('thold_template', [
|
|
'name' => 'trigger_cmd_high',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_body_warn']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'trigger_cmd_low',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'trigger_cmd_high']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'trigger_cmd_norm',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'trigger_cmd_low']);
|
|
|
|
// Additional syslog columns
|
|
db_add_column('thold_template', [
|
|
'name' => 'syslog_priority',
|
|
'type' => 'int(2)',
|
|
'NULL' => true,
|
|
'after' => 'trigger_cmd_norm']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'syslog_facility',
|
|
'type' => 'int(2)',
|
|
'NULL' => true,
|
|
'after' => 'syslog_priority']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'syslog_enabled',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'syslog_facility']);
|
|
|
|
// Remove this column if it exists
|
|
db_remove_column('thold_template', 'bl_enabled');
|
|
db_remove_column('thold_template', 'bl_ref_time');
|
|
|
|
// If these columns were added before, change attributes
|
|
db_execute('ALTER TABLE thold_template
|
|
MODIFY COLUMN email_body
|
|
varchar(1024) default ""');
|
|
|
|
db_execute('ALTER TABLE thold_template
|
|
MODIFY COLUMN data_template_id
|
|
int(10) default "0"');
|
|
|
|
db_execute('ALTER TABLE thold_template
|
|
MODIFY COLUMN thold_fail_trigger
|
|
int(10) unsigned default NULL');
|
|
|
|
db_execute('ALTER TABLE thold_template
|
|
MODIFY COLUMN repeat_alert
|
|
int(10) default NULL');
|
|
|
|
db_execute('ALTER TABLE thold_template
|
|
MODIFY COLUMN notify_extra
|
|
varchar(512) default NULL');
|
|
|
|
db_execute('ALTER TABLE thold_template
|
|
MODIFY COLUMN percent_ds
|
|
varchar(64) NOT NULL default ""');
|
|
|
|
db_execute('ALTER TABLE thold_template
|
|
MODIFY COLUMN exempt
|
|
char(3) NOT NULL default ""');
|
|
|
|
db_execute('ALTER TABLE thold_template
|
|
MODIFY COLUMN restored_alert
|
|
char(3) NOT NULL default ""');
|
|
|
|
// Move email notification settings to thresholds and templates
|
|
$warning_text = read_config_option('thold_warning_text');
|
|
$alert_text = read_config_option('thold_warning_text');
|
|
|
|
db_execute_prepared('UPDATE thold_data
|
|
SET email_body = ?
|
|
WHERE email_body = ""',
|
|
[$alert_text]);
|
|
|
|
db_execute_prepared('UPDATE thold_template
|
|
SET email_body = ?
|
|
WHERE email_body = ""',
|
|
[$alert_text]);
|
|
|
|
db_execute_prepared('UPDATE thold_data
|
|
SET email_body_warn = ?
|
|
WHERE email_body_warn = ""',
|
|
[$warning_text]);
|
|
|
|
db_execute_prepared('UPDATE thold_template
|
|
SET email_body_warn = ?
|
|
WHERE email_body_warn = ""',
|
|
[$warning_text]);
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.2.1', '<')) {
|
|
// Required for backward compatibility (was previously misspelled on exists check)
|
|
if (db_column_exists('thold_data', 'acknowledgement')) {
|
|
if (!db_column_exists('thold_data', 'acknowledgment')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
CHANGE COLUMN acknowledgement acknowledgment
|
|
char(3) NOT NULL default ""');
|
|
} else {
|
|
db_execute('UPDATE thold_data
|
|
SET acknowledgment = acknowledgement
|
|
WHERE acknowledgment = acknowledgement');
|
|
|
|
db_execute('ALTER TABLE thold_data DROP COLUMN acknowledgement');
|
|
}
|
|
}
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.2.3', '<')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'data_template_hash',
|
|
'type' => 'varchar(32)',
|
|
'NULL' => true,
|
|
'default' => '',
|
|
'after' => 'graph_template_id']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'data_template_hash',
|
|
'type' => 'varchar(32)',
|
|
'NULL' => true,
|
|
'default' => '',
|
|
'after' => 'suggested_name']);
|
|
|
|
db_execute('UPDATE thold_data
|
|
SET name = "|data_source_description| [|data_source_name|]"
|
|
WHERE name = ""');
|
|
|
|
db_execute('UPDATE thold_template
|
|
SET suggested_name = "|data_source_description| [|data_source_name|]"
|
|
WHERE suggested_name = ""');
|
|
|
|
// Update thold name from template
|
|
db_execute('UPDATE thold_data AS td
|
|
LEFT JOIN thold_template AS tt
|
|
ON tt.id = td.thold_template_id
|
|
SET td.name = IF(ISNULL(tt.suggested_name), "|data_source_description| [|data_source_name|]", tt.suggested_name)
|
|
WHERE td.name = ""');
|
|
|
|
// Setup the name cache with the correct information
|
|
$tholds = db_fetch_assoc('SELECT *
|
|
FROM thold_data
|
|
WHERE name_cache = ""');
|
|
|
|
if (cacti_sizeof($tholds)) {
|
|
foreach ($tholds as $thold) {
|
|
if ($thold['name_cache'] == '' || $thold['name'] == '') {
|
|
if ($thold['name'] == '') {
|
|
$thold['name'] = '|data_source_description| [|data_source_name|]';
|
|
}
|
|
|
|
$name = thold_expand_string($thold, $thold['name']);
|
|
|
|
plugin_thold_log_changes($thold['id'], 'reapply_name', ['id' => $thold['id']]);
|
|
|
|
db_execute_prepared('UPDATE thold_data
|
|
SET name = ?, name_cache = ?
|
|
WHERE id = ?',
|
|
[$thold['name'], $name, $thold['id']]);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Update hashes for templates if they are incorrect
|
|
$thold_templates = array_rekey(
|
|
db_fetch_assoc('SELECT id, name, data_template_id, data_template_name, data_source_name
|
|
FROM thold_template
|
|
WHERE data_template_hash = ""'),
|
|
'id', ['name', 'data_template_id', 'data_template_name', 'data_source_name']
|
|
);
|
|
|
|
if (cacti_sizeof($thold_templates)) {
|
|
foreach ($thold_templates as $thold_template_id => $t) {
|
|
$template_hints = db_fetch_assoc_prepared('SELECT DISTINCT id, data_template_id
|
|
FROM data_template_rrd
|
|
WHERE data_source_name = ?
|
|
AND local_data_id = 0',
|
|
[$t['data_source_name']]);
|
|
|
|
$found = false;
|
|
|
|
if (cacti_sizeof($template_hints)) {
|
|
foreach ($template_hints as $h) {
|
|
$template_details = db_fetch_row_prepared('SELECT *
|
|
FROM data_template
|
|
WHERE id = ?
|
|
AND name = ?',
|
|
[$h['data_template_id'], $t['data_template_name']]);
|
|
|
|
// Update if exact match else search
|
|
if (cacti_sizeof($template_details)) {
|
|
db_execute_prepared('UPDATE thold_template
|
|
SET data_source_id = ?, data_template_hash = ?, data_template_id = ?
|
|
WHERE id = ?',
|
|
[$h['id'], $template_details['hash'], $template_details['id'], $thold_template_id]);
|
|
|
|
$found = true;
|
|
|
|
break;
|
|
} else {
|
|
$template_details = db_fetch_row_prepared('SELECT *
|
|
FROM data_template
|
|
WHERE name = ?',
|
|
[$t['data_template_name']]);
|
|
|
|
if (cacti_sizeof($template_details)) {
|
|
db_execute_prepared('UPDATE thold_template
|
|
SET data_template_hash = ?, data_template_id = ?
|
|
WHERE id = ?',
|
|
[$template_details['hash'], $template_details['id'], $thold_template_id]);
|
|
|
|
$found = true;
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!$found) {
|
|
cacti_log(sprintf('WARNING: Threshold Template with Name %s and ID %d Aligns with no matching Data Template', $t['name'], $thold_template_id), false, 'THOLD');
|
|
}
|
|
}
|
|
}
|
|
|
|
// Update thold data hashes
|
|
db_execute('UPDATE thold_data AS td
|
|
INNER JOIN thold_template AS tt
|
|
ON tt.id = td.thold_template_id
|
|
SET td.data_template_hash = tt.data_template_hash');
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.2.4', '<')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'lastchanged',
|
|
'type' => 'timestamp',
|
|
'NULL' => false,
|
|
'default' => '0000-00-00',
|
|
'after' => 'lasttime']);
|
|
|
|
// Last Change event in the thold_data table
|
|
db_execute('UPDATE thold_data AS td
|
|
LEFT JOIN (
|
|
SELECT threshold_id, MAX(time) AS time
|
|
FROM plugin_thold_log AS ptl
|
|
WHERE ptl.status IN (4,3,5,0,1,6)
|
|
) AS ptl
|
|
ON td.id = ptl.threshold_id
|
|
SET td.lastchanged = IF(IFNULL(ptl.time, "") = "", "0000-00-00", FROM_UNIXTIME(ptl.time))');
|
|
|
|
// Add switch to hardwire notification lists
|
|
db_add_column('thold_template', [
|
|
'name' => 'notify_templated',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => 'on',
|
|
'after' => 'notify_warning_extra']);
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.5.1', '<')) {
|
|
api_plugin_db_add_column('thold', 'host', [
|
|
'name' => 'thold_failure_count',
|
|
'type' => 'int(10)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'thold_host_email']);
|
|
|
|
// Add restoral message option
|
|
db_add_column('thold_data', [
|
|
'name' => 'email_body_restoral',
|
|
'type' => 'varchar(1024)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_body_warn']);
|
|
|
|
// Add restoral message option
|
|
db_add_column('thold_template', [
|
|
'name' => 'email_body_restoral',
|
|
'type' => 'varchar(1024)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_body_warn']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'upper_ds',
|
|
'type' => 'varchar(64)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'expression']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'upper_ds',
|
|
'type' => 'varchar(64)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'expression']);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'show_units',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'data_type']);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'show_units',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'data_type']);
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.5.3', '<')) {
|
|
// Add snmp event description
|
|
db_add_column('thold_data', [
|
|
'name' => 'snmp_event_description',
|
|
'type' => 'varchar(1000)',
|
|
'NULL' => true,
|
|
'after' => 'snmp_event_category']);
|
|
|
|
// Add snmp event description
|
|
db_add_column('thold_template', [
|
|
'name' => 'snmp_event_description',
|
|
'type' => 'varchar(1000)',
|
|
'NULL' => true,
|
|
'after' => 'snmp_event_category']);
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.6', '<')) {
|
|
if (db_column_exists('thold_data', 'thold_daemon_pid')) {
|
|
db_execute('ALTER TABLE thold_data DROP COLUMN thold_daemon_pid');
|
|
}
|
|
|
|
if (!db_column_exists('thold_data', 'thread_id')) {
|
|
db_execute('ALTER TABLE thold_data
|
|
ADD COLUMN thread_id int UNSIGNED NOT NULL default "0" AFTER id');
|
|
}
|
|
|
|
if (!db_column_exists('plugin_thold_daemon_data', 'time')) {
|
|
db_execute('ALTER TABLE plugin_thold_daemon_data
|
|
ADD COLUMN time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP');
|
|
}
|
|
|
|
if (db_column_exists('plugin_thold_daemon_data', 'pid')) {
|
|
db_execute('ALTER TABLE plugin_thold_daemon_data
|
|
CHANGE COLUMN pid thread_id int(11) UNSIGNED NOT NULL default "0"');
|
|
}
|
|
|
|
if (db_table_exists('plugin_thold_daemon_processes')) {
|
|
db_execute('DROP TABLE IF EXISTS plugin_thold_daemon_processes');
|
|
}
|
|
}
|
|
|
|
$tables = db_fetch_assoc("SELECT DISTINCT TABLE_NAME
|
|
FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = SCHEMA()
|
|
AND TABLE_NAME LIKE '%thold%'");
|
|
|
|
if (sizeof($tables)) {
|
|
foreach ($tables as $table) {
|
|
$columns = db_fetch_assoc("SELECT *
|
|
FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA=SCHEMA()
|
|
AND TABLE_NAME='" . $table['TABLE_NAME'] . "'
|
|
AND DATA_TYPE LIKE '%char%'
|
|
AND COLUMN_DEFAULT IS NULL");
|
|
|
|
if (cacti_sizeof($columns)) {
|
|
$alter = 'ALTER TABLE `' . $table['TABLE_NAME'] . '` ';
|
|
|
|
$i = 0;
|
|
|
|
foreach ($columns as $column) {
|
|
$alter .= ($i == 0 ? '' : ', ') . ' MODIFY COLUMN `' . $column['COLUMN_NAME'] . '` ' . $column['COLUMN_TYPE'] . ($column['IS_NULLABLE'] == 'NO' ? ' NOT NULL' : '') . ' DEFAULT ""';
|
|
$i++;
|
|
}
|
|
|
|
db_execute($alter);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!db_column_exists('plugin_notification_lists', 'bcc_emails')) {
|
|
db_add_column('plugin_notification_lists', [
|
|
'name' => 'bcc_emails',
|
|
'type' => 'varchar(512)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'emails']);
|
|
}
|
|
|
|
if (!db_column_exists('thold_data', 'skipscale')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'skipscale',
|
|
'type' => 'char(3)',
|
|
'NULL' => true,
|
|
'after' => 'thold_hrule_warning',
|
|
'default' => '']);
|
|
}
|
|
|
|
if (!db_column_exists('thold_data', 'bl_type')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'bl_type',
|
|
'type' => 'int(3)',
|
|
'NULL' => false,
|
|
'after' => 'bl_ref_time_range',
|
|
'default' => '0']);
|
|
}
|
|
|
|
if (!db_column_exists('thold_data', 'bl_reference_min')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'bl_reference_min',
|
|
'type' => 'double',
|
|
'NULL' => true,
|
|
'after' => 'bl_alert',
|
|
'default' => '0']);
|
|
}
|
|
|
|
if (!db_column_exists('thold_data', 'bl_reference_max')) {
|
|
db_add_column('thold_data', [
|
|
'name' => 'bl_reference_max',
|
|
'type' => 'double',
|
|
'NULL' => true,
|
|
'after' => 'bl_reference_min',
|
|
'default' => '0']);
|
|
}
|
|
|
|
if (!db_column_exists('thold_template', 'skipscale')) {
|
|
db_add_column('thold_template', [
|
|
'name' => 'skipscale',
|
|
'type' => 'char(3)',
|
|
'NULL' => true,
|
|
'after' => 'thold_hrule_warning',
|
|
'default' => '']);
|
|
}
|
|
|
|
if (!db_column_exists('thold_template', 'bl_type')) {
|
|
db_add_column('thold_template', [
|
|
'name' => 'bl_type',
|
|
'type' => 'int(3)',
|
|
'NULL' => false,
|
|
'after' => 'bl_ref_time_range',
|
|
'default' => '0']);
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.8', '<')) {
|
|
db_execute('INSERT INTO plugin_thold_host (host_id, thold_template_id)
|
|
SELECT h.id, ptht.thold_template_id
|
|
FROM host AS h
|
|
INNER JOIN plugin_thold_host_template AS ptht
|
|
ON h.host_template_id = ptht.host_template_id');
|
|
|
|
db_add_column('plugin_notification_lists', [
|
|
'name' => 'enabled',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'name']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'thold_per_enabled',
|
|
'type' => 'char(3)',
|
|
'NULL' => false,
|
|
'default' => 'on',
|
|
'after' => 'thold_enabled']
|
|
);
|
|
|
|
db_add_column('plugin_notification_lists', [
|
|
'name' => 'format_file',
|
|
'type' => 'varchar(255)',
|
|
'NULL' => false,
|
|
'default' => '']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'format_file',
|
|
'type' => 'varchar(255)',
|
|
'NULL' => false,
|
|
'default' => '']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'format_file',
|
|
'type' => 'varchar(255)',
|
|
'NULL' => false,
|
|
'default' => '']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'graph_timespan',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '7',
|
|
'after' => 'format_file']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'graph_timespan',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '7',
|
|
'after' => 'format_file']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'units_suffix',
|
|
'type' => 'varchar(10)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'show_units']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'units_suffix',
|
|
'type' => 'varchar(10)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'show_units']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'decimals',
|
|
'type' => 'int(11)',
|
|
'NULL' => false,
|
|
'default' => '-1',
|
|
'after' => 'units_suffix']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'decimals',
|
|
'type' => 'int(11)',
|
|
'NULL' => false,
|
|
'default' => '-1',
|
|
'after' => 'units_suffix']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'bl_cf',
|
|
'type' => 'varchar(4)',
|
|
'NULL' => false,
|
|
'default' => 'AVG',
|
|
'after' => 'bl_alert']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'bl_cf',
|
|
'type' => 'varchar(4)',
|
|
'NULL' => false,
|
|
'default' => 'AVG',
|
|
'after' => 'bl_alert']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'bl_reference_avg',
|
|
'type' => 'double',
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'bl_reference_max']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'bl_reference_last',
|
|
'type' => 'double',
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'bl_reference_avg']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'email_subject',
|
|
'type' => 'varchar(128)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'persist_ack']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'email_subject',
|
|
'type' => 'varchar(128)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'persist_ack']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'email_subject_warn',
|
|
'type' => 'varchar(128)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_subject']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'email_subject_warn',
|
|
'type' => 'varchar(128)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_subject']
|
|
);
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'email_subject_restoral',
|
|
'type' => 'varchar(128)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_subject_warn']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'email_subject_restoral',
|
|
'type' => 'varchar(128)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'email_subject_warn']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'topic',
|
|
'type' => 'varchar(20)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'notification_list_id']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'host_id',
|
|
'type' => 'int(11)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'object_name']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'site_id',
|
|
'type' => 'int',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'host_id']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'hostname',
|
|
'type' => 'varchar(64)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'site_id']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'delay_notify',
|
|
'type' => 'tinyint',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'hostname']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'delay_type',
|
|
'type' => 'varchar(10)',
|
|
'NULL' => false,
|
|
'default' => '',
|
|
'after' => 'delay_notify']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'delay_start',
|
|
'type' => 'timestamp',
|
|
'NULL' => false,
|
|
'default' => '0000-00-00',
|
|
'after' => 'delay_type']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'delay_end',
|
|
'type' => 'timestamp',
|
|
'NULL' => false,
|
|
'default' => '0000-00-00',
|
|
'after' => 'delay_start']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'delay_clear',
|
|
'type' => 'tinyint(3)',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'delay_end']
|
|
);
|
|
|
|
db_add_index('notification_queue', 'INDEX', 'topic_processed', ['topic', 'event_processed']);
|
|
db_add_index('notification_queue', 'INDEX', 'process_id', ['process_id']);
|
|
db_add_index('notification_queue', 'INDEX', 'object_id', ['object_id']);
|
|
db_add_index('notification_queue', 'INDEX', 'host_id', ['host_id']);
|
|
db_add_index('notification_queue', 'INDEX', 'hostname', ['hostname']);
|
|
|
|
db_execute('UPDATE plugin_notification_lists SET enabled = "on"');
|
|
}
|
|
|
|
if (cacti_version_compare($oldv, '1.8.3', '<')) {
|
|
db_add_column('notification_queue', [
|
|
'name' => 'attempt_count',
|
|
'type' => 'int',
|
|
'unsigned' => true,
|
|
'NULL' => false,
|
|
'default' => '0',
|
|
'after' => 'error_message']
|
|
);
|
|
|
|
db_add_column('notification_queue', [
|
|
'name' => 'next_attempt',
|
|
'type' => 'timestamp',
|
|
'NULL' => true,
|
|
'default' => null,
|
|
'after' => 'attempt_count']
|
|
);
|
|
|
|
db_add_index('notification_queue', 'INDEX', 'retry_ready', ['event_processed', 'process_id', 'next_attempt']);
|
|
}
|
|
|
|
db_add_column('thold_data', [
|
|
'name' => 'external_id',
|
|
'type' => 'varchar(20)',
|
|
'NULL' => true,
|
|
'default' => '',
|
|
'after' => 'notes']
|
|
);
|
|
|
|
db_add_column('thold_template', [
|
|
'name' => 'external_id',
|
|
'type' => 'varchar(20)',
|
|
'NULL' => true,
|
|
'default' => '',
|
|
'after' => 'notes']
|
|
);
|
|
|
|
db_execute('ALTER TABLE thold_data MODIFY COLUMN name varchar(255) NOT NULL default ""');
|
|
|
|
api_plugin_register_hook('thold', 'device_template_change', 'thold_device_template_change', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'settings_bottom', 'thold_settings_bottom', 'setup.php', true);
|
|
|
|
api_plugin_register_realm('thold', 'notify_lists.php,notify_queue.php', 'Manage Notification Lists', 1);
|
|
|
|
thold_setup_database();
|
|
|
|
if (function_exists('api_plugin_upgrade_register')) {
|
|
api_plugin_upgrade_register('thold');
|
|
} else {
|
|
db_execute_prepared('UPDATE plugin_config
|
|
SET version = ?
|
|
WHERE directory = "thold"',
|
|
[$v['version']]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Creates (or updates, via Cacti's schema installer) all of this
|
|
* plugin's database tables and their columns/keys. Invoked during
|
|
* plugin installation and as the first step of
|
|
* thold_upgrade_database().
|
|
*
|
|
* @return void
|
|
*/
|
|
function thold_setup_database() {
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(11)', 'NULL' => false, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'thread_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'name', 'type' => 'varchar(255)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'name_cache', 'type' => 'varchar(150)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'local_data_id', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'data_template_rrd_id', 'type' => 'int(11)', 'NULL' => false, 'unsigned' => true, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'local_graph_id', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'graph_template_id', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'data_template_id', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'data_template_hash', 'type' => 'varchar(32)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'data_source_name', 'type' => 'varchar(100)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'thold_hi', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_low', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_fail_trigger', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'thold_fail_count', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'time_hi', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'time_low', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'time_fail_trigger', 'type' => 'int (12)', 'NULL' => false, 'default' => 1];
|
|
$data['columns'][] = ['name' => 'time_fail_length', 'type' => 'int (12)', 'NULL' => false, 'default' => 1];
|
|
$data['columns'][] = ['name' => 'thold_warning_hi', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_warning_low', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_warning_fail_trigger', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'thold_warning_fail_count', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'time_warning_hi', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'time_warning_low', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'time_warning_fail_trigger', 'type' => 'int (12)', 'NULL' => false, 'default' => 1];
|
|
$data['columns'][] = ['name' => 'time_warning_fail_length', 'type' => 'int (12)', 'NULL' => false, 'default' => 1];
|
|
$data['columns'][] = ['name' => 'thold_alert', 'type' => 'int(1)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'prev_thold_alert', 'type' => 'int(1)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'thold_enabled', 'type' => "enum('on','off')", 'NULL' => false, 'default' => 'on'];
|
|
$data['columns'][] = ['name' => 'thold_per_enabled', 'type' => 'char(3)', 'NULL' => false, 'default' => 'on'];
|
|
$data['columns'][] = ['name' => 'thold_type', 'type' => 'int (3)', 'NULL' => false, 'default' => 0];
|
|
$data['columns'][] = ['name' => 'bl_ref_time_range', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'bl_type', 'type' => 'int (3)', 'NULL' => false, 'default' => 0];
|
|
$data['columns'][] = ['name' => 'bl_pct_down', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'bl_pct_up', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'bl_fail_trigger', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'bl_fail_count', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'bl_alert', 'type' => 'int(2)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'bl_cf', 'type' => 'varchar(4)', 'NULL' => false, 'default' => 'AVG'];
|
|
$data['columns'][] = ['name' => 'bl_reference_min', 'type' => 'double', 'NULL' => true, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'bl_reference_max', 'type' => 'double', 'NULL' => true, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'bl_reference_avg', 'type' => 'double', 'NULL' => true, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'bl_reference_last', 'type' => 'double', 'NULL' => true, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'bl_thold_valid', 'type' => 'int(11)', 'NULL' => false, 'default' => '0', 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'lastread', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'lasttime', 'type' => 'timestamp', 'NULL' => false, 'default' => '0000-00-00 00:00:00'];
|
|
$data['columns'][] = ['name' => 'lastchanged', 'type' => 'timestamp', 'NULL' => false, 'default' => '0000-00-00 00:00:00'];
|
|
$data['columns'][] = ['name' => 'oldvalue', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'repeat_alert', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'notify_extra', 'type' => 'varchar(512)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'notify_warning_extra', 'type' => 'varchar(512)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'notify_warning', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'notify_alert', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'snmp_event_category', 'type' => 'varchar(255)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'snmp_event_description', 'type' => 'varchar(1000)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'snmp_event_severity', 'type' => 'tinyint(1)', 'NULL' => false, 'default' => '3'];
|
|
$data['columns'][] = ['name' => 'snmp_event_warning_severity', 'type' => 'tinyint(1)', 'NULL' => false, 'default' => '2'];
|
|
$data['columns'][] = ['name' => 'host_id', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'syslog_priority', 'type' => 'int(2)', 'NULL' => false, 'default' => '3'];
|
|
$data['columns'][] = ['name' => 'syslog_facility', 'type' => 'int(2)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'syslog_enabled', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'data_type', 'type' => 'int(12)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'show_units', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'units_suffix', 'type' => 'varchar(10)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'decimals', 'type' => 'int(11)', 'NULL' => false, 'default' => '-1'];
|
|
$data['columns'][] = ['name' => 'cdef', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'percent_ds', 'type' => 'varchar(64)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'expression', 'type' => 'varchar(512)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'upper_ds', 'type' => 'varchar(64)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'thold_template_id', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'template_enabled', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'tcheck', 'type' => 'int(1)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'exempt', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'acknowledgment', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'thold_hrule_alert', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_hrule_warning', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'skipscale', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'restored_alert', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'reset_ack', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'persist_ack', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_subject', 'type' => 'varchar(128)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_subject_warn', 'type' => 'varchar(128)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_subject_restoral', 'type' => 'varchar(128)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_body', 'type' => 'varchar(1024)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_body_warn', 'type' => 'varchar(1024)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_body_restoral', 'type' => 'varchar(1024)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'trigger_cmd_high', 'type'=> 'varchar(512)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'trigger_cmd_low', 'type'=> 'varchar(512)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'trigger_cmd_norm', 'type'=> 'varchar(512)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'notes', 'type' => 'varchar(1024)', 'NULL' => true, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'external_id', 'type' => 'varchar(20)', 'NULL' => true, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'format_file', 'type' => 'varchar(255)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'graph_timespan', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '7'];
|
|
|
|
$data['primary'] = 'id';
|
|
$data['keys'][] = ['name' => 'host_id', 'columns' => 'host_id'];
|
|
$data['keys'][] = ['name' => 'local_data_id', 'columns' => 'local_data_id'];
|
|
$data['keys'][] = ['name' => 'data_template_rrd_id', 'columns' => 'data_template_rrd_id'];
|
|
$data['keys'][] = ['name' => 'local_graph_id', 'columns' => 'local_graph_id'];
|
|
$data['keys'][] = ['name' => 'thold_template_id', 'columns' => 'thold_template_id'];
|
|
$data['keys'][] = ['name' => 'thold_enabled', 'columns' => 'thold_enabled'];
|
|
$data['keys'][] = ['name' => 'template_enabled', 'columns' => 'template_enabled'];
|
|
$data['keys'][] = ['name' => 'tcheck', 'columns' => 'tcheck'];
|
|
$data['keys'][] = ['name' => 'data_template_id', 'columns' => 'data_template_id'];
|
|
$data['keys'][] = ['name' => 'graph_template_id', 'columns' => 'graph_template_id'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Threshold data';
|
|
api_plugin_db_table_create('thold', 'thold_data', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(11)', 'NULL' => false, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'hash', 'type' => 'varchar(32)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'name', 'type' => 'varchar(100)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'suggested_name', 'type' => 'varchar(255)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'data_template_id', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'data_template_hash', 'type' => 'varchar(32)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'data_template_name', 'type' => 'varchar(100)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'data_source_id', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'data_source_name', 'type' => 'varchar(100)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'data_source_friendly', 'type' => 'varchar(100)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'thold_hi', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_low', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_fail_trigger', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'time_hi', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'time_low', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'time_fail_trigger', 'type' => 'int (12)', 'NULL' => false, 'default' => 1];
|
|
$data['columns'][] = ['name' => 'time_fail_length', 'type' => 'int (12)', 'NULL' => false, 'default' => 1];
|
|
$data['columns'][] = ['name' => 'thold_warning_hi', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_warning_low', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_warning_fail_trigger', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'thold_warning_fail_count', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'time_warning_hi', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'time_warning_low', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'time_warning_fail_trigger', 'type' => 'int (12)', 'NULL' => false, 'default' => 1];
|
|
$data['columns'][] = ['name' => 'time_warning_fail_length', 'type' => 'int (12)', 'NULL' => false, 'default' => 1];
|
|
$data['columns'][] = ['name' => 'thold_enabled', 'type' => "enum('on','off')", 'NULL' => false, 'default' => 'on'];
|
|
$data['columns'][] = ['name' => 'thold_type', 'type' => 'int (3)', 'NULL' => false, 'default' => 0];
|
|
$data['columns'][] = ['name' => 'bl_ref_time_range', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'bl_type', 'type' => 'int (3)', 'NULL' => false, 'default' => 0];
|
|
$data['columns'][] = ['name' => 'bl_pct_down', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'bl_pct_up', 'type' => 'varchar(100)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'bl_fail_trigger', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'bl_fail_count', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'bl_alert', 'type' => 'int(2)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'bl_cf', 'type' => 'varchar(4)', 'NULL' => false, 'default' => 'AVG'];
|
|
$data['columns'][] = ['name' => 'repeat_alert', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'notify_extra', 'type' => 'varchar(512)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'notify_warning_extra', 'type' => 'varchar(512)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'notify_templated', 'type' => 'char(3)', 'NULL' => false, 'default' => 'on'];
|
|
$data['columns'][] = ['name' => 'notify_warning', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'notify_alert', 'type' => 'int(11)', 'NULL' => true, 'unsigned' => true];
|
|
$data['columns'][] = ['name' => 'snmp_event_category', 'type' => 'varchar(255)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'snmp_event_description', 'type' => 'varchar(1000)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'snmp_event_severity', 'type' => 'tinyint(1)', 'NULL' => false, 'default' => '3'];
|
|
$data['columns'][] = ['name' => 'snmp_event_warning_severity', 'type' => 'tinyint(1)', 'NULL' => false, 'default' => '2'];
|
|
$data['columns'][] = ['name' => 'data_type', 'type' => 'int(12)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'show_units', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'units_suffix', 'type' => 'varchar(10)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'decimals', 'type' => 'int(11)', 'NULL' => false, 'default' => '-1'];
|
|
$data['columns'][] = ['name' => 'cdef', 'type' => 'int(11)', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'percent_ds', 'type' => 'varchar(64)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'expression', 'type' => 'varchar(512)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'upper_ds', 'type' => 'varchar(64)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'exempt', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'thold_hrule_alert', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'thold_hrule_warning', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'skipscale', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'restored_alert', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'reset_ack', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'persist_ack', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_subject', 'type' => 'varchar(128)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_subject_warn', 'type' => 'varchar(128)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_subject_restoral', 'type' => 'varchar(128)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_body', 'type' => 'varchar(1024)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_body_warn', 'type' => 'varchar(1024)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'email_body_restoral', 'type' => 'varchar(1024)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'trigger_cmd_high', 'type'=> 'varchar(512)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'trigger_cmd_low', 'type'=> 'varchar(512)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'trigger_cmd_norm', 'type'=> 'varchar(512)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'syslog_priority', 'type' => 'int(2)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'syslog_facility', 'type' => 'int(2)', 'NULL' => true];
|
|
$data['columns'][] = ['name' => 'syslog_enabled', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'notes', 'type' => 'varchar(1024)', 'NULL' => true, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'external_id', 'type' => 'varchar(20)', 'NULL' => true, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'format_file', 'type' => 'varchar(255)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'graph_timespan', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '7'];
|
|
|
|
$data['primary'] = 'id';
|
|
$data['keys'][] = ['name' => 'id', 'columns' => 'id'];
|
|
$data['keys'][] = ['name' => 'data_source_id', 'columns' => 'data_source_id'];
|
|
$data['keys'][] = ['name' => 'data_template_id', 'columns' => 'data_template_id'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Thresholds defaults for graphs';
|
|
api_plugin_db_table_create('thold', 'thold_template', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(12)', 'NULL' => false, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'user_id', 'type' => 'int(12)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'type', 'type' => 'varchar(32)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'data', 'type' => 'text', 'NULL' => false];
|
|
$data['primary'] = 'id';
|
|
$data['keys'][] = ['name' => 'type', 'columns' => 'type'];
|
|
$data['keys'][] = ['name' => 'user_id', 'columns' => 'user_id'];
|
|
$data['unique_keys'][] = ['name' => 'user_id_type', 'columns' => 'user_id`, `type'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Threshold contacts';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_contacts', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'template_id', 'type' => 'int(12)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'contact_id', 'type' => 'int(12)', 'NULL' => false];
|
|
$data['keys'][] = ['name' => 'template_id', 'columns' => 'template_id'];
|
|
$data['keys'][] = ['name' => 'contact_id', 'columns' => 'contact_id'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Tholds Template Contacts';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_template_contact', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'thold_id', 'type' => 'int(12)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'contact_id', 'type' => 'int(12)', 'NULL' => false];
|
|
|
|
$data['keys'][] = ['name' => 'thold_id', 'columns' => 'thold_id'];
|
|
$data['keys'][] = ['name' => 'contact_id', 'columns' => 'contact_id'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Tholds Threshold Contacts';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_threshold_contact', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(12)', 'NULL' => false, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'time', 'type' => 'int(24)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'host_id', 'type' => 'int(10)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'local_graph_id', 'type' => 'int(10)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'threshold_id', 'type' => 'int(10)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'threshold_value', 'type' => 'varchar(64)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'current', 'type' => 'varchar(64)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'status', 'type' => 'int(5)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'type', 'type' => 'int(5)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'description', 'type' => 'varchar(255)', 'NULL' => false];
|
|
|
|
$data['primary'] = 'id';
|
|
$data['keys'][] = ['name' => 'time', 'columns' => 'time'];
|
|
$data['keys'][] = ['name' => 'host_id', 'columns' => 'host_id'];
|
|
$data['keys'][] = ['name' => 'local_graph_id', 'columns' => 'local_graph_id'];
|
|
$data['keys'][] = ['name' => 'threshold_id', 'columns' => 'threshold_id'];
|
|
$data['keys'][] = ['name' => 'status', 'columns' => 'status'];
|
|
$data['keys'][] = ['name' => 'type', 'columns' => 'type'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of All Threshold Breaches';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_log', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(12)', 'NULL' => false, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'name', 'type' => 'varchar(128)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'enabled', 'type' => 'char(3)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'description', 'type' => 'varchar(512)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'emails', 'type' => 'varchar(512)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'bcc_emails', 'type' => 'varchar(512)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'format_file', 'type' => 'varchar(255)', 'NULL' => false, 'default' => ''];
|
|
|
|
$data['primary'] = 'id';
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Notification Lists';
|
|
api_plugin_db_table_create('thold', 'plugin_notification_lists', $data);
|
|
|
|
api_plugin_register_hook('thold', 'host_edit_bottom', 'thold_host_edit_bottom', 'setup.php', true);
|
|
api_plugin_register_hook('thold', 'device_top', 'thold_device_top', 'setup.php', true);
|
|
|
|
api_plugin_db_add_column('thold', 'host', ['name' => 'thold_send_email', 'type' => 'int(10)', 'NULL' => false, 'default' => '1', 'after' => 'disabled']);
|
|
api_plugin_db_add_column('thold', 'host', ['name' => 'thold_host_email', 'type' => 'int(10)', 'NULL' => true, 'after' => 'thold_send_email']);
|
|
api_plugin_db_add_column('thold', 'host', ['name' => 'thold_failure_count', 'type' => 'int(10)', 'NULL' => false, 'default' => '0', 'after' => 'thold_host_email']);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(12)', 'NULL' => false, 'unsigned' => true, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'poller_id', 'type' => 'int(10)', 'unsigned' => true, 'NULL' => false, 'default' => '1'];
|
|
$data['columns'][] = ['name' => 'host_id', 'type' => 'int(12)', 'unsigned' => true, 'NULL' => false];
|
|
|
|
$data['primary'] = 'id';
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Devices in a Down State';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_host_failed', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(11)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'poller_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '1'];
|
|
$data['columns'][] = ['name' => 'thread_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'rrd_reindexed', 'type' => 'varchar(600)', 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'rrd_time_reindexed', 'type' => 'int(10)', 'unsigned' => true, 'NULL' => false];
|
|
$data['columns'][] = ['name' => 'time', 'type' => 'timestamp', 'default' => 'CURRENT_TIMESTAMP', 'NULL' => false];
|
|
|
|
$data['keys'][] = ['name' => 'id', 'columns' => 'id`, `thread_id'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Poller Outdata needed for queued daemon processes';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_daemon_data', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'host_template_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'thold_template_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['primary'] = 'id';
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Device Template Threshold Templates';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_host_template', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'host_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'thold_template_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['primary'] = 'id';
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Table of Device to Supported Threshold Templates';
|
|
api_plugin_db_table_create('thold', 'plugin_thold_host', $data);
|
|
|
|
$data = [];
|
|
$data['columns'][] = ['name' => 'id', 'type' => 'bigint', 'unsigned' => true, 'NULL' => false, 'auto_increment' => true];
|
|
$data['columns'][] = ['name' => 'notification_list_id', 'type' => 'int', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'topic', 'type' => 'varchar(20)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'object_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'object_name', 'type' => 'varchar(128)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'host_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'site_id', 'type' => 'int(11)', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'hostname', 'type' => 'varchar(64)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'delay_notify', 'type' => 'tinyint', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'delay_type', 'type' => 'varchar(10)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'delay_start', 'type' => 'timestamp', 'NULL' => false, 'default' => '0000-00-00'];
|
|
$data['columns'][] = ['name' => 'delay_end', 'type' => 'timestamp', 'NULL' => false, 'default' => '0000-00-00'];
|
|
$data['columns'][] = ['name' => 'delay_clear', 'type' => 'tinyint', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'event_time', 'type' => 'timestamp', 'NULL' => false, 'default' => 'CURRENT_TIMESTAMP'];
|
|
$data['columns'][] = ['name' => 'event_data', 'type' => 'longblob', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'error_code', 'type' => 'int', 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'error_message', 'type' => 'varchar(128)', 'NULL' => false, 'default' => ''];
|
|
$data['columns'][] = ['name' => 'attempt_count', 'type' => 'int', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'next_attempt', 'type' => 'timestamp', 'NULL' => true, 'default' => null];
|
|
$data['columns'][] = ['name' => 'process_id', 'type' => 'int', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'event_processed', 'type' => 'tinyint', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['columns'][] = ['name' => 'event_processed_time', 'type' => 'timestamp', 'NULL' => false, 'default' => '0000-00-00'];
|
|
$data['columns'][] = ['name' => 'event_processed_runtime', 'type' => 'double', 'unsigned' => true, 'NULL' => false, 'default' => '0'];
|
|
$data['primary'] = 'id';
|
|
$data['keys'][] = ['name' => 'topic_processed', 'columns' => 'topic`, `event_processed'];
|
|
$data['keys'][] = ['name' => 'retry_ready', 'columns' => 'event_processed`, `process_id`, `next_attempt'];
|
|
$data['keys'][] = ['name' => 'process_id', 'columns' => 'process_id'];
|
|
$data['keys'][] = ['name' => 'object_id', 'columns' => 'object_id'];
|
|
$data['keys'][] = ['name' => 'host_id', 'columns' => 'host_id'];
|
|
$data['keys'][] = ['name' => 'hostname', 'columns' => 'hostname'];
|
|
$data['type'] = 'InnoDB';
|
|
$data['comment'] = 'Holds Transactions to be processed by Thold';
|
|
api_plugin_db_table_create('thold', 'notification_queue', $data);
|
|
|
|
db_add_index('data_local', 'INDEX', 'data_template_id', ['data_template_id']);
|
|
db_add_index('data_local', 'INDEX', 'snmp_query_id', ['snmp_query_id']);
|
|
db_add_index('host_snmp_cache', 'INDEX', 'snmp_query_id', ['snmp_query_id']);
|
|
|
|
// increase the size of the settings table
|
|
db_execute("ALTER TABLE settings
|
|
MODIFY COLUMN `value`
|
|
varchar(4096) NOT NULL default ''");
|
|
|
|
db_execute('ALTER TABLE plugin_thold_log
|
|
MODIFY COLUMN current varchar(64) NOT NULL default ""');
|
|
|
|
db_execute('UPDATE thold_data
|
|
SET thold_enabled = "on"
|
|
WHERE thold_template_id = 0 OR template_enabled != "on"');
|
|
}
|