X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clearadm%2Fplot.cgi;h=fa3d45ac763be4b5abc1936b9671d00fae12fdfd;hb=18385edca6c1b1d92351133ab2696c48a48b3f07;hp=d0d9efe91745cc2ee3ecd6a6f62e9c226bba3021;hpb=020a4a5ea2be725b155cae3a2cadc9aba3911b9b;p=clearscm.git diff --git a/clearadm/plot.cgi b/clearadm/plot.cgi index d0d9efe..fa3d45a 100755 --- a/clearadm/plot.cgi +++ b/clearadm/plot.cgi @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/local/bin/perl =pod @@ -39,7 +39,7 @@ use strict; use warnings; use FindBin; -use CGI qw (:standard :cgi-lib start_table end_table start_Tr end_Tr); +use CGI qw(:standard :cgi-lib start_table end_table start_Tr end_Tr); use GD::Graph::area; use lib "$FindBin::Bin/lib", "$FindBin::Bin/../lib"; @@ -55,42 +55,77 @@ my %opts = Vars; my $clearadm; -sub displayGraph () { +sub displayGraph() { my $parms; - foreach (keys %opts) { - $parms .= '&' - if $parms; + for (keys %opts) { + $parms .= '&' if $parms; $parms .= "$_=$opts{$_}" - } # foreach + } # for display '
'; if ($opts{type} eq 'loadavg') { - unless ($opts{tiny}) { - display img {src => "plotloadavg.cgi?$parms", class => 'chart'}; - } else { - display img {src => "plotloadavg.cgi?$parms", border => 0}; - } # unless + my %system = $clearadm->GetSystem($opts{system}); + + # We can use the cached version only if the opts are set to default + if ($opts{scaling} eq 'Hour' and $opts{points} == 24) { + my $data = $opts{tiny} ? $system{loadavgsmall} : $system{loadavg}; + + display img {src => "data:image/png;base64,$data"}; + } else { + unless ($opts{tiny}) { + display img {src => "plotloadavg.cgi?$parms", class => 'chart'}; + } else { + display img {src => "plotloadavg.cgi?$parms", border => 0}; + } # unless + } # if } elsif ($opts{type} eq 'filesystem') { - unless ($opts{tiny}) { - display img {src => "plotfs.cgi?$parms", class => 'chart'}; - } else { - display img {src => "plotfs.cgi?$parms", border => 0}; - } # unless + my %filesystem = $clearadm->GetFilesystem($opts{system}, $opts{filesystem}); + + # We can use the cached version only if the opts are set to default + if ($opts{scaling} eq 'Day' and $opts{points} == 7) { + my $data = $opts{tiny} ? $filesystem{fssmall} : $filesystem{fslarge}; + + display img {src => "data:image/png;base64,$data"}; + } else { + unless ($opts{tiny}) { + display img {src => "plotfs.cgi?$parms", class => 'chart'}; + } else { + display img {src => "plotfs.cgi?$parms", border => 0}; + } # unless + } # if + } elsif ($opts{type} eq 'vob' or $opts{type} eq 'view') { + my (%vob, %view); + + %vob = $clearadm->GetVob($opts{tag}, $opts{region}) if $opts{type} eq 'vob'; + %view = $clearadm->GetView($opts{tag}, $opts{region}) if $opts{type} eq 'view'; + # We can use the cached version only if the opts are set to default + if ($opts{scaling} eq 'Day' and $opts{points} == 7) { + my $storageType = $opts{tiny} ? "$opts{storage}small" : "$opts{storage}large"; + my $data = $opts{type} eq 'vob' ? $vob{$storageType} : $view{$storageType}; + + display img {src => "data:image/png;base64,$data"}; + } else { + unless ($opts{tiny}) { + display img {src => "plotstorage.cgi?$parms", class => 'chart'}; + } else { + display img {src => "plotstorage.cgi?$parms", border => 0}; + } # unless + } # if } # if display '
'; - return + return; } # displayGraph -sub displayFSInfo () { +sub displayFSInfo() { if ($opts{filesystem}) { display h3 {-align => 'center'}, 'Latest Filesystem Reading'; } else { - display p; - return; + display p; + return; } # if display start_table {width => '800px', cellspacing => 1}; @@ -140,7 +175,7 @@ sub displayFSInfo () { return; } # displayInfo -sub displayControls () { +sub displayControls() { my $class = $opts{type} =~ /loadavg/i ? 'controls' : 'filesystemControls'; @@ -152,17 +187,24 @@ sub displayControls () { width => '800px', }; - my $systemLink = span {id => 'systemLink'}, a { - href => "systemdetails.cgi?system=$opts{system}", - }, 'System'; + my $tagsButtons; + my ($systemLink, $systemButtons); - my $systemButtons = makeSystemDropdown ( - $systemLink, - $opts{system}, - 'updateFilesystems(this.value);updateSystemLink(this.value)' - ); + if ($opts{type} =~ /(vob|view)/i) { + $tagsButtons = makeTagsDropdown($opts{type}, $opts{tag}); + } else { + $systemLink = span {id => 'systemLink'}, a { + href => "systemdetails.cgi?system=$opts{system}", + }, 'System'; + + $systemButtons = makeSystemDropdown( + $systemLink, + $opts{system}, + 'updateFilesystems(this.value);updateSystemLink(this.value)' + ); + } # if - my $startButtons = makeTimeDropdown ( + my $startButtons = makeTimeDropdown( $opts{type}, 'startTimestamp', $opts{system}, @@ -172,7 +214,7 @@ sub displayControls () { $opts{scaling}, ); - my $endButtons = makeTimeDropdown ( + my $endButtons = makeTimeDropdown( $opts{type}, 'endTimestamp', $opts{system}, @@ -182,11 +224,17 @@ sub displayControls () { $opts{scaling}, ); - my $update = $opts{type} eq 'loadavg' - ? "updateSystem('$opts{system}')" - : "updateFilesystem('$opts{system}','$opts{filesystem}')"; + my $update; + + if ($opts{type} eq 'loadavg') { + $update = "updateSystem('$opts{system}')"; + } elsif ($opts{type} eq 'filsystem') { + $update = "updateFilesystem('$opts{system}','$opts{filesystem}')"; + } else { + $update = ''; # TODO do I need something here? + } # if - my $intervalButtons = makeIntervalDropdown ( + my $intervalButtons = makeIntervalDropdown( 'Interval', $opts{scaling}, $update @@ -195,7 +243,7 @@ sub displayControls () { display start_Tr; display td $startButtons; display td $intervalButtons; - display td $systemButtons; + display td $opts{type} =~ /(vob|view)/i ? $tagsButtons : $systemButtons; display end_Tr; display start_Tr; @@ -216,14 +264,20 @@ sub displayControls () { value => 'Draw Graph', }; } else { - my $filesystemButtons = makeFilesystemDropdown ( - $opts{system}, - 'Filesystem', - undef, - "updateFilesystem('$opts{system}',this.value)", - ); + if ($opts{type} eq 'filesystem') { + my $filesystemButtons = makeFilesystemDropdown ( + $opts{system}, + 'Filesystem', + undef, + "updateFilesystem('$opts{system}',this.value)", + ); - display td $filesystemButtons; + display td $filesystemButtons; + } else { + my $storagePoolButtons = makeStoragePoolDropdown ($opts{type}, $opts{tag}); + + display td $storagePoolButtons; + } # if display end_Tr; display start_Tr; @@ -240,10 +294,12 @@ sub displayControls () { $clearadm = Clearadm->new; -my $title = ucfirst ($opts{type}) . ': ' . ucfirst $opts{system}; +my $title = ucfirst($opts{type}) . ': '; -$title .= ":$opts{filesystem}" - if $opts{filesystem}; +$title .= ucfirst $opts{system} if $opts{system}; +$title .= ":$opts{filesystem}" if $opts{filesystem}; +$title .= $opts{tag} if $opts{tag}; +$title .= " Storage pool: $opts{storage}" if $opts{storage}; heading $title; @@ -255,7 +311,8 @@ display start_form { }; # Some hidden fields to pass along -display input {type => 'hidden', name => 'type', value => $opts{type}}; +display input {type => 'hidden', name => 'type', value => $opts{type}}; +display input {type => 'hidden', name => 'region', value => $opts{region}}; displayGraph; displayFSInfo; @@ -300,9 +357,9 @@ L =begin html
-Clearadm
-ClearadmWeb
-Display
+Clearadm
+ClearadmWeb
+Display
=end html @@ -317,4 +374,4 @@ Please report problems to Andrew DeFaria . Copyright (c) 2010, ClearSCM, Inc. All rights reserved. -=cut \ No newline at end of file +=cut