Merge branch 'ent-11089-crear-el-modo-disabled-para-el-satelite' into 'develop'

Add agent_disabled functionality

See merge request artica/pandorafms!6994
This commit is contained in:
Rafael Ameijeiras 2024-03-07 13:56:28 +00:00
commit c5c92411c9
10 changed files with 31 additions and 10 deletions

View File

@ -157,5 +157,6 @@ CREATE TABLE IF NOT EXISTS `tmetaconsole_ha_databases` (
`master` tinyint unsigned DEFAULT '0', `master` tinyint unsigned DEFAULT '0',
PRIMARY KEY (`node_id`, `host`) PRIMARY KEY (`node_id`, `host`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
ALTER TABLE `tserver` ADD COLUMN `disabled` BOOLEAN NOT NULL DEFAULT FALSE;
COMMIT; COMMIT;

View File

@ -133,6 +133,14 @@ foreach ($servers as $server) {
__('Server has crashed.'), __('Server has crashed.'),
true true
); );
} else if ((int) ($server['disabled'] == 1)){
$data[1] = ui_print_status_image(
STATUS_SERVER_STANDBY,
__('Server was manually disabled.'),
true
);
} else if ((int) ($server['status'] === 0) } else if ((int) ($server['status'] === 0)
|| (($date - $server_keepalive) > ($server['server_keepalive']) * 2) || (($date - $server_keepalive) > ($server['server_keepalive']) * 2)
) { ) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -325,7 +325,7 @@ define('STATUS_ALERT_DISABLED', 'alert_disabled.png');
define('STATUS_SERVER_OK', 'server_ok.png'); define('STATUS_SERVER_OK', 'server_ok.png');
define('STATUS_SERVER_DOWN', 'server_down.png'); define('STATUS_SERVER_DOWN', 'server_down.png');
define('STATUS_SERVER_CRASH', 'server_crash.png'); define('STATUS_SERVER_CRASH', 'server_crash.png');
define('STATUS_SERVER_STANDBY', 'server_standby.png');
// Status images (ball). // Status images (ball).
// For modules. // For modules.
@ -351,7 +351,7 @@ define('STATUS_ALERT_DISABLED_BALL', 'alert_disabled_ball.png');
define('STATUS_SERVER_OK_BALL', 'server_ok_ball.png'); define('STATUS_SERVER_OK_BALL', 'server_ok_ball.png');
define('STATUS_SERVER_DOWN_BALL', 'server_down_ball.png'); define('STATUS_SERVER_DOWN_BALL', 'server_down_ball.png');
define('STATUS_SERVER_CRASH_BALL', 'server_crash_ball.png'); define('STATUS_SERVER_CRASH_BALL', 'server_crash_ball.png');
define('STATUS_SERVER_STANDBY_BALL', 'server_standby_ball.png');
// Events criticity. // Events criticity.

View File

@ -2851,6 +2851,10 @@ function modules_get_color_status($status, $force_module=false)
case STATUS_SERVER_CRASH_BALL: case STATUS_SERVER_CRASH_BALL:
return COL_CRITICAL; return COL_CRITICAL;
case STATUS_SERVER_STANDBY:
case STATUS_SERVER_STANDBY_BALL:
return COL_WARNING;
case AGENT_MODULE_STATUS_WARNING: case AGENT_MODULE_STATUS_WARNING:
case AGENT_STATUS_WARNING: case AGENT_STATUS_WARNING:
case STATUS_MODULE_WARNING: case STATUS_MODULE_WARNING:

View File

@ -3454,6 +3454,7 @@ function get_shape_status_set($type)
case STATUS_SERVER_OK: case STATUS_SERVER_OK:
case STATUS_SERVER_DOWN: case STATUS_SERVER_DOWN:
case STATUS_SERVER_CRASH: case STATUS_SERVER_CRASH:
case STATUS_SERVER_STANDBY:
$return = ['class' => 'status_small_squares']; $return = ['class' => 'status_small_squares'];
break; break;

View File

@ -1157,6 +1157,7 @@ CREATE TABLE IF NOT EXISTS `tserver` (
`exec_proxy` TINYINT UNSIGNED NOT NULL DEFAULT 0, `exec_proxy` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`port` INT UNSIGNED NOT NULL DEFAULT 0, `port` INT UNSIGNED NOT NULL DEFAULT 0,
`server_keepalive_utimestamp` BIGINT NOT NULL DEFAULT 0, `server_keepalive_utimestamp` BIGINT NOT NULL DEFAULT 0,
`disabled` BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (`id_server`), PRIMARY KEY (`id_server`),
KEY `name` (`name`) KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;

View File

@ -3374,12 +3374,14 @@ Update server status:
=cut =cut
########################################################################## ##########################################################################
sub pandora_update_server ($$$$$$;$$$$) { sub pandora_update_server ($$$$$$;$$$$$$) {
my ($pa_config, $dbh, $server_name, $server_id, $status, my ($pa_config, $dbh, $server_name, $server_id, $status,
$server_type, $num_threads, $queue_size, $version, $keepalive) = @_; $server_type, $num_threads, $queue_size, $version, $keepalive, $disabled, $remote_config) = @_;
$num_threads = 0 unless defined ($num_threads); $num_threads = 0 unless defined ($num_threads);
$queue_size = 0 unless defined ($queue_size); $queue_size = 0 unless defined ($queue_size);
$remote_config = 0 unless defined($remote_config);
$disabled = 0 unless defined($disabled);
$keepalive = $pa_config->{'keepalive'} unless defined ($keepalive); $keepalive = $pa_config->{'keepalive'} unless defined ($keepalive);
my $timestamp = strftime ("%Y-%m-%d %H:%M:%S", localtime()); my $timestamp = strftime ("%Y-%m-%d %H:%M:%S", localtime());
@ -3393,13 +3395,12 @@ sub pandora_update_server ($$$$$$;$$$$) {
# First run # First run
if ($server_id == 0) { if ($server_id == 0) {
# Create an entry in tserver if needed # Create an entry in tserver if needed
my $server = get_db_single_row ($dbh, 'SELECT id_server FROM tserver WHERE BINARY name = ? AND server_type = ?', $server_name, $server_type); my $server = get_db_single_row ($dbh, 'SELECT id_server FROM tserver WHERE BINARY name = ? AND server_type = ?', $server_name, $server_type);
if (! defined ($server)) { if (! defined ($server)) {
$server_id = db_insert ($dbh, 'id_server', 'INSERT INTO tserver (name, server_type, description, version, threads, queued_modules, server_keepalive, server_keepalive_utimestamp) $server_id = db_insert ($dbh, 'id_server', 'INSERT INTO tserver (name, server_type, description, version, threads, queued_modules, server_keepalive, server_keepalive_utimestamp, disabled)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)', $server_name, $server_type, VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', $server_name, $server_type,
'Autocreated at startup', $version, $num_threads, $queue_size, $keepalive, $keepalive_utimestamp); 'Autocreated at startup', $version, $num_threads, $queue_size, $keepalive, $keepalive_utimestamp, $disabled);
$server = get_db_single_row ($dbh, 'SELECT status FROM tserver WHERE id_server = ?', $server_id); $server = get_db_single_row ($dbh, 'SELECT status FROM tserver WHERE id_server = ?', $server_id);
if (! defined ($server)) { if (! defined ($server)) {
@ -3408,6 +3409,10 @@ sub pandora_update_server ($$$$$$;$$$$) {
} }
} else { } else {
$server_id = $server->{'id_server'}; $server_id = $server->{'id_server'};
if(!$remote_config){
db_do ($dbh, 'UPDATE tserver SET disabled = ? WHERE id_server = ?', $disabled, $server_id);
}
} }
db_do ($dbh, 'UPDATE tserver SET status = ?, keepalive = ?, master = ?, laststart = ?, version = ?, threads = ?, queued_modules = ?, server_keepalive = ?, server_keepalive_utimestamp = ? db_do ($dbh, 'UPDATE tserver SET status = ?, keepalive = ?, master = ?, laststart = ?, version = ?, threads = ?, queued_modules = ?, server_keepalive = ?, server_keepalive_utimestamp = ?
@ -7206,6 +7211,7 @@ sub pandora_disable_autodisable_agents ($$) {
GROUP BY tm.id_agente GROUP BY tm.id_agente
) AS subquery ) AS subquery
WHERE subquery.unknown_count >= subquery.sync_modules;'; WHERE subquery.unknown_count >= subquery.sync_modules;';
my @agents_autodisabled = get_db_rows ($dbh, $sql); my @agents_autodisabled = get_db_rows ($dbh, $sql);
return if ($#agents_autodisabled < 0); return if ($#agents_autodisabled < 0);

View File

@ -1067,9 +1067,9 @@ sub process_xml_server ($$$$) {
$modules = 0 unless defined($modules); $modules = 0 unless defined($modules);
$threads = 0 unless defined($threads); $threads = 0 unless defined($threads);
$version = '' unless defined($version); $version = '' unless defined($version);
# Update server information # Update server information
pandora_update_server ($pa_config, $dbh, $data->{'server_name'}, 0, 1, $server_type, $threads, $modules, $version, $data->{'keepalive'}); pandora_update_server ($pa_config, $dbh, $data->{'server_name'}, 0, 1, $server_type, $threads, $modules, $version, $data->{'keepalive'}, $data->{'disabled'}, $data->{'remote_config'});
} }