From fb18038db65c75f6472d64062f0cdd6341489cab Mon Sep 17 00:00:00 2001 From: Ramon Novoa Date: Thu, 18 Nov 2010 18:24:21 +0000 Subject: [PATCH] 2010-11-18 Ramon Novoa * lib/PandoraFMS/Core.pm, lib/PandoraFMS/DataServer.pm: Update agent address from the XML. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@3602 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_server/ChangeLog | 5 +++++ pandora_server/lib/PandoraFMS/Core.pm | 17 +++++++++++++++++ pandora_server/lib/PandoraFMS/DataServer.pm | 13 +++++++++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/pandora_server/ChangeLog b/pandora_server/ChangeLog index 8685d9584f..66371ab9a7 100644 --- a/pandora_server/ChangeLog +++ b/pandora_server/ChangeLog @@ -1,3 +1,8 @@ +2010-11-18 Ramon Novoa + + * lib/PandoraFMS/Core.pm, + lib/PandoraFMS/DataServer.pm: Update agent address from the XML. + 2010-11-16 Ramon Novoa * lib/PandoraFMS/Core.pm: Decode HTML entities in macros. diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 6abb16d3f4..66edc0bc65 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -80,6 +80,8 @@ Exported Functions: =item * C +=item * C + =item * C =item * C @@ -148,6 +150,7 @@ our @EXPORT = qw( pandora_reset_server pandora_server_keep_alive pandora_update_agent + pandora_update_agent_address pandora_update_module_on_error pandora_update_module_from_hash pandora_update_server @@ -1008,6 +1011,20 @@ sub pandora_update_agent ($$$$$$$;$$$$$$) { } +########################################################################## +=head2 C<< pandora_update_agent_address(I<$pa_config>, I<$agent_id>, I<$address>, I<$dbh>) >> + +Update the address of an agent. + +=cut +########################################################################## +sub pandora_update_agent_address ($$$$$) { + my ($pa_config, $agent_id, $agent_name, $address, $dbh) = @_; + + logger($pa_config, 'Updating address for agent ' . $agent_name . ' (' . $address . ')', 10); + db_do ($dbh, 'UPDATE tagente SET direccion = ? WHERE id_agente = ?', $address, $agent_id); +} + ########################################################################## =head2 C<< pandora_module_keep_alive (I<$pa_config>, I<$id_agent>, I<$agent_name>, I<$server_id>, I<$dbh>) >> diff --git a/pandora_server/lib/PandoraFMS/DataServer.pm b/pandora_server/lib/PandoraFMS/DataServer.pm index d96cbb4a64..496132075b 100644 --- a/pandora_server/lib/PandoraFMS/DataServer.pm +++ b/pandora_server/lib/PandoraFMS/DataServer.pm @@ -268,6 +268,10 @@ sub process_xml_data ($$$$$) { # Check some variables $interval = 300 if (! defined ($interval) || $interval eq ''); $os_version = 'N/A' if (! defined ($os_version) || $os_version eq ''); + + # Get agent address from the XML if available + my $address = '' ; + $address = $data->{'address'} if (defined ($data->{'address'})); # Get agent id $AgentSem->down (); @@ -290,12 +294,12 @@ sub process_xml_data ($$$$$) { # Create the agent if ($valid_position_data == 1 && $pa_config->{'activate_gis'} != 0 ) { logger($pa_config, "Creating agent $agent_name at long: $longitude lat: $latitude alt: $altitude", 5); - $agent_id = pandora_create_agent($pa_config, $pa_config->{'servername'}, $agent_name, '', $group_id, $parent_id, $os, + $agent_id = pandora_create_agent($pa_config, $pa_config->{'servername'}, $agent_name, $address, $group_id, $parent_id, $os, $description, $interval, $dbh, $timezone_offset, $longitude, $latitude, $altitude, $position_description); } else { # Ignore agent positional data logger($pa_config, "Creating agent $agent_name", 5); - $agent_id = pandora_create_agent($pa_config, $pa_config->{'servername'}, $agent_name, '', $group_id, $parent_id, $os, + $agent_id = pandora_create_agent($pa_config, $pa_config->{'servername'}, $agent_name, $address, $group_id, $parent_id, $os, $description, $interval, $dbh, $timezone_offset); } if (! defined ($agent_id)) { @@ -320,6 +324,11 @@ sub process_xml_data ($$$$$) { $os_version = $agent->{'os_version'}; $agent_version = $agent->{'agent_version'}; $timezone_offset = $agent->{'timezone_offset'}; + } else { + # Update agent address if necessary + if ($address ne '' && $address ne $agent->{'direccion'}) { + pandora_update_agent_address ($pa_config, $agent_id, $agent_name, $address, $dbh); + } } if ($valid_position_data == 1 && $pa_config->{'activate_gis'} != 0) {