From eb9df12331cd6b07c4223dbda9a948fcb244841e Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Sun, 2 Sep 2007 18:01:05 +0200 Subject: [PATCH] contrib/collection.cgi: Don't show all the plugins on the host's page. Waiting for so many graphs to load is no fun. You _have_ to specify the plugins you're interested in now. --- contrib/collection.cgi | 295 +++++++++++++++-------------------------- 1 file changed, 107 insertions(+), 188 deletions(-) diff --git a/contrib/collection.cgi b/contrib/collection.cgi index 159d9e6b..cffe63b3 100755 --- a/contrib/collection.cgi +++ b/contrib/collection.cgi @@ -459,86 +459,139 @@ sub action_show_host my @hosts = _get_param_host (); @hosts = sort (@hosts); - my $all_plugins = {}; - my $plugins_per_host = {}; + my $timespan = _get_param_timespan (); + my $all_plugins = _find_files_for_hosts (@hosts); + my $url_prefix = script_name () . '?action=show_plugin' + . join ('', map { ';host=' . uri_escape ($_) } (@hosts)) + . ';timespan=' . uri_escape ($timespan); + + print qq(
Back to list of hosts
\n); + + print "

Available plugins:

\n" + . " \n"; +} # action_show_host + +sub action_show_plugin +{ + my @hosts = _get_param_host (); + my $plugin = shift; + my $plugin_instance = shift; my $timespan = _get_param_timespan (); + my $hosts_url = join (';', map { 'host=' . uri_escape ($_) } (@hosts)); + my $url_prefix = script_name () . "?$hosts_url"; + + my $all_plugins = {}; + my $plugins_per_host = {}; + my $selected_plugins = {}; + for (my $i = 0; $i < @hosts; $i++) { $plugins_per_host->{$hosts[$i]} = _find_files_for_host ($hosts[$i]); _files_union ($all_plugins, $plugins_per_host->{$hosts[$i]}); } - my $param_host = join (";", map { "host=" . encode_entities ($_) } (@hosts)); - - print '\n"; - - my @plugins = sort (keys %$all_plugins); + for (param ('plugin')) + { + if (defined ($all_plugins->{$_})) + { + $selected_plugins->{$_} = 1; + } + } - print qq(
Back to list of hosts
\n); + print qq(
Back to list of plugins
\n); + # Print table header print < - Plugin + Plugins HTML - for (my $i = 0; $i < @hosts; $i++) + for (@hosts) { - print "\t", encode_entities ($hosts[$i]), "\n"; + print "\t", encode_entities ($_), "\n"; } print " \n"; - for (my $i = 0; $i < @plugins; $i++) - { - my $plugin = $plugins[$i]; - my $plugin_esc = encode_entities ($plugins[$i]); - my @pinsts = sort (keys %{$all_plugins->{$plugin}}); + for (sort (keys %$selected_plugins)) + { + my $plugin = $_; + my $plugin_html = encode_entities ($plugin); + my $plugin_url = "$url_prefix;plugin=" . uri_escape ($plugin); + my $all_pinst = $all_plugins->{$plugin}; - for (my $j = 0; $j < @pinsts; $j++) + for (sort (keys %$all_pinst)) { - my $pinst = $pinsts[$j]; - my $pinst_esc = encode_entities ($pinst); - my $title = $plugin . ($pinst ne '-' ? " ($pinst)" : ''); - my $title_esc = encode_entities ($title); + my $pinst = $_; + my $pinst_html = ''; + my $pinst_url = $plugin_url; - my $param_plugin = "plugin=$plugin_esc"; if ($pinst ne '-') { - $param_plugin .= ";plugin_instance=$pinst_esc"; + $pinst_html = encode_entities ($pinst); + $pinst_url .= ';plugin_instance=' . uri_escape ($pinst); } my $files_printed = 0; - my $files_num = _files_plugin_inst_count ($all_plugins->{$plugin}{$pinst}); - next if (!$files_num); - + my $files_num = _files_plugin_inst_count ($all_pinst->{$pinst}); + if ($files_num < 1) + { + next; + } my $rowspan = ($files_num == 1) ? '' : qq( rowspan="$files_num"); for (sort (keys %{$all_plugins->{$plugin}{$pinst}})) { my $type = $_; - my $type_esc = encode_entities ($type); + my $type_html = encode_entities ($type); + my $type_url = "$pinst_url;type=" . uri_escape ($type); + + if ($files_printed == 0) + { + my $title = $plugin_html; + if ($pinst ne '-') + { + $title .= " ($pinst_html)"; + } + print " \n"; + print "\t$title\n"; + } if (exists ($MetaGraphDefs->{$type})) { - my $param_type = "type=$type_esc"; + my $graph_url = script_name () . '?action=show_graph' + . ';plugin=' . uri_escape ($plugin) + . ';type=' . uri_escape ($type) + . ';timespan=' . uri_escape ($timespan); + if ($pinst ne '-') + { + $graph_url .= ';plugin_instance=' . uri_escape ($pinst); + } - print " \n"; - if ($files_printed == 0) + if ($files_printed != 0) { - print "\t$title_esc\n"; + print " \n"; } - for (my $k = 0; $k < @hosts; $k++) + for (@hosts) { - my $host = $hosts[$k]; - my $host_esc = encode_entities ($host); + my $host = $_; + my $host_graph_url = $graph_url . ';host=' . uri_escape ($host); print "\t"; if (exists $plugins_per_host->{$host}{$plugin}{$pinst}{$type}) { - #print qq(); - print encode_entities (qq()); + print qq(); + #print encode_entities (qq()); } print "\n"; } # for (my $k = 0; $k < @hosts; $k++) @@ -547,35 +600,40 @@ HTML $files_printed++; next; # pinst - } + } # if (exists ($MetaGraphDefs->{$type})) for (sort (keys %{$all_plugins->{$plugin}{$pinst}{$type}})) { my $tinst = $_; my $tinst_esc = encode_entities ($tinst); - - my $param_type = "type=$type_esc"; + my $graph_url = script_name () . '?action=show_graph' + . ';plugin=' . uri_escape ($plugin) + . ';type=' . uri_escape ($type) + . ';timespan=' . uri_escape ($timespan); + if ($pinst ne '-') + { + $graph_url .= ';plugin_instance=' . uri_escape ($pinst); + } if ($tinst ne '-') { - $param_type .= ";type_instance=$tinst_esc"; + $graph_url .= ';type_instance=' . uri_escape ($tinst); } - print " \n"; - if ($files_printed == 0) + if ($files_printed != 0) { - print "\t$title_esc\n"; + print " \n"; } for (my $k = 0; $k < @hosts; $k++) { my $host = $hosts[$k]; - my $host_esc = encode_entities ($host); + my $host_graph_url = $graph_url . ';host=' . uri_escape ($host); print "\t"; if ($plugins_per_host->{$host}{$plugin}{$pinst}{$type}{$tinst}) { - #print qq(); - print encode_entities (qq()); + print qq(); + #print encode_entities (qq()); } print "\n"; } # for (my $k = 0; $k < @hosts; $k++) @@ -585,147 +643,8 @@ HTML $files_printed++; } # for ($tinst) } # for ($type) - } # for (my $j = 0; $j < @pinsts; $j++) - } # for (my $i = 0; $i < @plugins; $i++) - print " \n"; -} # action_show_host - -sub action_show_plugin -{ - my @hosts = _get_param_host (); - my $plugin = shift; - my $plugin_instance = shift; - my $timespan = _get_param_timespan (); - - my $hosts_url = join (';', map { 'host=' . uri_escape ($_) } (@hosts)); - my $plugin_esc = encode_entities ($plugin); - my $plugin_url = uri_escape ($plugin); - my $plugin_instance_url = defined ($plugin_instance) ? uri_escape ($plugin_instance) : undef; - - my $all_plugins = {}; - my $plugins_per_host = {}; - - for (my $i = 0; $i < @hosts; $i++) - { - $plugins_per_host->{$hosts[$i]} = _find_files_for_host ($hosts[$i]); - _files_union ($all_plugins, $plugins_per_host->{$hosts[$i]}); - } - - my $url_prefix = script_name () . "?$hosts_url;plugin=$plugin_url"; - $url_prefix .= ";plugin_instance=$plugin_instance_url" if (defined ($plugin_instance)); - - print qq( \n); - - if (!defined ($all_plugins->{$plugin})) - { - print qq(
Plugin "${\encode_entities ($plugin)}" not found for host "${\encode_entities (@hosts)}".
\n); - return; - } - - my @pinsts = sort (keys %{$all_plugins->{$plugin}}); - - print < - - Plugin -HTML - for (my $i = 0; $i < @hosts; $i++) - { - print "\t", encode_entities ($hosts[$i]), "\n"; - } - print " \n"; - - for (my $j = 0; $j < @pinsts; $j++) - { - my $pinst = $pinsts[$j]; - my $pinst_esc = encode_entities ($pinst); - my $title = $plugin . ($pinst ne '-' ? " ($pinst)" : ''); - my $title_esc = encode_entities ($title); - - my $param_plugin = "plugin=$plugin_esc"; - if ($pinst ne '-') - { - $param_plugin .= ";plugin_instance=$pinst_esc"; - } - - my $files_printed = 0; - my $files_num = _files_plugin_inst_count ($all_plugins->{$plugin}{$pinst}); - next if (!$files_num); - - my $rowspan = ($files_num == 1) ? '' : qq( rowspan="$files_num"); - - for (sort (keys %{$all_plugins->{$plugin}{$pinst}})) - { - my $type = $_; - my $type_esc = encode_entities ($type); - - if (exists ($MetaGraphDefs->{$type})) - { - my $param_type = "type=$type_esc"; - - print " \n"; - if ($files_printed == 0) - { - print "\t$title_esc\n"; - } - - for (my $k = 0; $k < @hosts; $k++) - { - my $host = $hosts[$k]; - my $host_esc = encode_entities ($host); - - print "\t"; - if (exists $plugins_per_host->{$host}{$plugin}{$pinst}{$type}) - { - print qq(); - #print encode_entities (qq()); - } - print "\n"; - } # for (my $k = 0; $k < @hosts; $k++) - - print " \n"; - - $files_printed++; - next; # pinst - } - - for (sort (keys %{$all_plugins->{$plugin}{$pinst}{$type}})) - { - my $tinst = $_; - my $tinst_esc = encode_entities ($tinst); - - my $param_type = "type=$type_esc"; - if ($tinst ne '-') - { - $param_type .= ";type_instance=$tinst_esc"; - } - - print " \n"; - if ($files_printed == 0) - { - print "\t$title_esc\n"; - } - - for (my $k = 0; $k < @hosts; $k++) - { - my $host = $hosts[$k]; - my $host_esc = encode_entities ($host); - - print "\t"; - if ($plugins_per_host->{$host}{$plugin}{$pinst}{$type}{$tinst}) - { - print qq(); - #print encode_entities (qq()); - } - print "\n"; - } # for (my $k = 0; $k < @hosts; $k++) - - print " \n"; - - $files_printed++; - } # for ($tinst) - } # for ($type) - } # for (my $j = 0; $j < @pinsts; $j++) + } # for ($pinst) + } # for ($plugin) print " \n"; } # action_show_plugin @@ -830,7 +749,7 @@ HTML if (keys %selected_hosts) { - my $all_plugins = _find_files_for_hosts (@hosts); + my $all_plugins = _find_files_for_hosts (keys %selected_hosts); my %selected_plugins = map { $_ => 1 } (param ('plugin')); print qq(\t