X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;ds=inline;f=clearadm%2Fplot.cgi;h=fa3d45ac763be4b5abc1936b9671d00fae12fdfd;hb=a9acda90df2ba4a4777fe263005a5d45ffd869e0;hp=422f15629e9330903bcfaa1e4d96c5000c12d192;hpb=81cbd130706633b1c19ff59371c2ef61d80c562b;p=clearscm.git
diff --git a/clearadm/plot.cgi b/clearadm/plot.cgi
index 422f156..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;
@@ -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