Code

- Corrected GOSA:: leftover following from bidossessi on irc
[gosa.git] / gosa-si / client / events / load_reporter.pm
1 package load_reporter;
4 use strict;
5 use warnings;
7 use GOsaSI::GosaSupportDaemon;
9 use Exporter;
11 BEGIN {}
12 END {}
14 our @ISA = qw(Exporter);
16 my @events = (
17     "get_events",
18     "get_terminal_server",
19     "get_load",
20     "report_load",
21     "set_terminal_server",
22     );
24 our @EXPORT = @events;
26 my $ts_load_file;
27 my $waiting_for_ts_info;
28 my %cfg_defaults = (
29                         "client" => {
30                         "ts-load-file" => [\$ts_load_file, "/var/run/gosa-si/gosa-si-client-ts-load.txt"],
31                         "waiting-for-ts-info" => [\$waiting_for_ts_info, 5],
32                         },
33                 );
35 # to be removed ugly !! why not using main::_read_configfile
36 &GOsaSI::GosaSupportDaemon::read_configfile($main::cfg_file, %cfg_defaults);
39 ### FUNCTIONS #################################################################
40 sub get_events { return \@events; }
42 sub get_terminal_server 
43 {
44         my ($content, $poe_kernel) = @_ ;
46         # Create message
47         my $msg_hash = &create_xml_hash("get_terminal_server", $main::client_address, $main::server_address);
48         &add_content2xml_hash($msg_hash, "macaddress", $main::client_mac_address);
49         my $msg = &create_xml_string($msg_hash);
50         
51         $poe_kernel->delay_set('trigger_set_terminal_server', $waiting_for_ts_info);
52         &main::daemon_log("INFO: Start obtaining terminal server load information. Set waiting time to '$waiting_for_ts_info' sec.", 5);
53         return $msg;
54 }
56 sub get_load 
57 {
58         my ($msg, $msg_hash) = @_ ;     
59         my $source = @{$msg_hash->{'source'}}[0];
60         my $target = @{$msg_hash->{'target'}}[0];
61         my $out_msg;
64         my $file = "/proc/loadavg";
65         if ((not -f $file) || (not -r $file)) { return }
66         open(my $FHD, "<", "$file");
67         my $line = <$FHD>;
68         close($FHD);
69         chomp($line);
71         $out_msg = &create_xml_string(&create_xml_hash("report_load", $target, $source, $line));
73         return $out_msg;
74 }
76 sub report_load
77 {
78         my ($msg, $msg_hash) = @_ ;
79         my $source = @{$msg_hash->{'source'}}[0];
80         my $load = @{$msg_hash->{'report_load'}}[0];
82         $main::terminal_server_hash->{$source} = $load;
84         return;
85 }
87 sub set_terminal_server
88 {
89         my $file_content = "";
90         while (my ($ts, $load) = each %$main::terminal_server_hash)
91         {
92                 $file_content .= "$ts $load\n";
93         }
94         open(my $FHD, ">", "$ts_load_file.part");
95         printf $FHD $file_content;
96         close($FHD);
98         system("mv $ts_load_file.part $ts_load_file");
99         &main::daemon_log("INFO: Wrote terminal server load information to $ts_load_file", 5);
100         return;
103 1;