Code

- Corrected open perl function, corrected variable passing to open and close
[gosa.git] / gosa-si / client / events / load_reporter.pm
1 package load_reporter;
4 use strict;
5 use warnings;
6 use Exporter;
8 use GOSA::GosaSupportDaemon;
10 BEGIN {}
11 END {}
13 @ISA = qw(Exporter);
14 my @events = (
15     "get_events",
16     "get_terminal_server",
17   "get_load",
18   "report_load",
19   "set_terminal_server",
20     );
21 @EXPORT = @events;
23 my $ts_load_file;
24 my $waiting_for_ts_info;
25 my %cfg_defaults = (
26                 "client" => {
27                 "ts-load-file" => [\$ts_load_file, "/var/run/gosa-si-client-ts-load.txt"],
28                 "waiting-for-ts-info" => [\$waiting_for_ts_info, 5],
29                 },
30                 );
31 &GOSA::GosaSupportDaemon::read_configfile($main::cfg_file, %cfg_defaults);
34 ### FUNCTIONS #################################################################
35 sub get_events { return \@events; }
37 sub get_terminal_server 
38 {
39         my ($content, $poe_kernel) = @_ ;
41         # Create message
42         my $msg_hash = &create_xml_hash("get_terminal_server", $main::client_address, $main::server_address);
43         &add_content2xml_hash($msg_hash, "macaddress", $main::client_mac_address);
44         my $msg = &create_xml_string($msg_hash);
45         
46         $poe_kernel->delay_set('trigger_set_terminal_server', $waiting_for_ts_info);
47         &main::daemon_log("INFO: Start obtaining terminal server load information. Set waiting time to '$waiting_for_ts_info' sec.", 5);
48         return $msg;
49 }
51 sub get_load 
52 {
53         my ($msg, $msg_hash) = @_ ;     
54         my $source = @{$msg_hash->{'source'}}[0];
55         my $target = @{$msg_hash->{'target'}}[0];
56         my $out_msg;
59         my $file = "/proc/loadavg";
60         if ((not -f $file) || (not -r $file)) { return }
61         open($FHD, "<", "$file");
62         my $line = <$FHD>;
63         close($FHD);
64         chomp($line);
66         $out_msg = &create_xml_string(&create_xml_hash("report_load", $target, $source, $line));
68         return $out_msg;
69 }
71 sub report_load
72 {
73         my ($msg, $msg_hash) = @_ ;
74         my $source = @{$msg_hash->{'source'}}[0];
75         my $load = @{$msg_hash->{'report_load'}}[0];
77         $main::terminal_server_hash->{$source} = $load;
79         return;
80 }
82 sub set_terminal_server
83 {
84         my $file_content = "";
85         while (my ($ts, $load) = each %$main::terminal_server_hash)
86         {
87                 $file_content .= "$ts $load\n";
88         }
89         open($FHD, ">", "$ts_load_file.part");
90         printf $FHD $file_content;
91         close($FHD);
93         system("mv $ts_load_file.part $ts_load_file");
94         &main::daemon_log("INFO: Wrote terminal server load information to $ts_load_file", 5);
95         return;
96 }
98 1;