Removed /usr/local from CDPATH
[clearscm.git] / clearadm / systemdetails.cgi
1 #!/usr/local/bin/perl
2
3 =pod
4
5 =head1 NAME $RCSfile: systemdetails.cgi,v $
6
7 System Details
8
9 =head1 VERSION
10
11 =over
12
13 =item Author
14
15 Andrew DeFaria <Andrew@ClearSCM.com>
16
17 =item Revision
18
19 $Revision: 1.22 $
20
21 =item Created:
22
23 Mon Oct 25 11:10:47 PDT 2008
24
25 =item Modified:
26
27 $Date: 2011/01/28 21:31:25 $
28
29 =back
30
31 =head1 SYNOPSIS
32
33  Usage systemdetails.cgi: [-u|sage] [-ve|rbose] [-d|ebug]
34                           -s|ystem <systemname>
35                           
36
37  Where:
38    -u|sage:               Displays usage
39    -ve|rbose:             Be verbose
40    -d|ebug:               Output debug messages
41    
42    -s|ystem <systemname>: Name of system to display details for
43
44 =head2 DESCRIPTION
45
46 This script displays the details for the given system
47
48 =cut
49
50 use strict;
51 use warnings;
52
53 use FindBin;
54 use Getopt::Long;
55 use CGI qw (:standard :cgi-lib *table start_Tr end_Tr);
56 use CGI::Carp 'fatalsToBrowser';
57
58 use lib "$FindBin::Bin/lib", "$FindBin::Bin/../lib";
59
60 use Clearadm;
61 use ClearadmWeb;
62 use Clearcase::Server;
63 use Display;
64 use Utils;
65
66 my $VERSION  = '$Revision: 1.22 $';
67   ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
68   
69 my $name = param ('system');
70
71 my $subtitle = 'System Details';
72
73 my $clearadm;
74
75 sub DisplayTable ($) {
76   my ($server) = @_;
77
78   my $unknown = font {-class => 'unknown'}, 'Unknown';
79
80   # Data fields
81   my $systemName                = setField ($server->name);
82   my $ccVer                     = setField ($server->ccVer);
83   my $osVer                     = setField ($server->osVer);
84   my $hardware                  = setField ($server->hardware);
85   my $licenseHost               = setField ($server->licenseHost);
86   my $registryHost              = setField ($server->registryHost);
87   my $registryRegion            = setField ($server->registryRegion);
88   my $mvfsBlocksPerDirectory    = setField ($server->mvfsBlocksPerDirectory);
89   my $mvfsCleartextMnodes       = setField ($server->mvfsCleartextMnodes);
90   my $mvfsDirectoryNames        = setField ($server->mvfsDirectoryNames);
91   my $mvfsFileNames             = setField ($server->mvfsFileNames);
92   my $mvfsFreeMnodes            = setField ($server->mvfsFreeMnodes);
93   my $mvfsInitialMnodeTableSize = setField ($server->mvfsInitialMnodeTableSize);
94   my $mvfsMinCleartextMnodes    = setField ($server->mvgsMinCleartextMnodes);
95   my $mvfsMinFreeMnodes         = setField ($server->mvfsMinFreeMnodes);
96   my $mvfsNamesNotFound         = setField ($server->mvfsNamesNotFound);
97   my $mvfsRPCHandles            = setField ($server->mvfsRPCHandles);
98   my $interopRegion             = setField ($server->interopRegion);
99   my $scalingFactor             = setField ($server->scalingFactor);
100   my $cleartextIdleLifetime     = setField ($server->cleartextIdleLifetime);
101   my $vobHashTableSize          = setField ($server->vobHashTableSize);
102   my $cleartextHashTableSize    = setField ($server->cleartextHashTableSize);
103   my $dncHashTableSize          = setField ($server->dncHashTableSize);
104   my $threadHashTableSize       = setField ($server->threadHashTableSize);
105   my $processHashTableSize      = setField ($server->processHashTableSize);
106
107   display h2 {class => 'center'}, 'Clearcase Information';
108     
109   display start_table {cellspacing => 1, class => 'main'};
110     
111   display start_Tr;
112     display th {class => 'label'},              'Name:';
113     display td {class => 'data', colspan => 4}, $systemName;
114     display th {class => 'label'},              'Registry Host:';
115     display td {class => 'data', colspan => 4},
116       a {href => "systemdetails.cgi?server=$registryHost"}, $registryHost;
117   display end_Tr;
118
119   display start_Tr;
120     display th {class => 'label'},               'Registry Region:';
121     display td {class => 'data', -colspan => 4}, $registryRegion;
122     display th {class => 'label'},               'License Host:';
123     display td {class => 'data', colspan => 4},
124       a {-href => "systemdetails.cgi?server=$licenseHost"}, $licenseHost;
125   display end_Tr;
126
127   display start_Tr;
128     display th {class => 'label'},              'Clearcase Version:';
129     display td {class => 'data', colspan => 4}, $ccVer;
130     display th {class => 'label'},              'OS Version:';
131     display td {class => 'data', colspan => 4}, $osVer;
132   display end_Tr;
133
134   display start_Tr;
135     display th {class => 'label'},                    'Interop Region:';
136     display td {class => 'dataRight'},                $interopRegion;
137     display th {class => 'label'},                    'Scaling Factor:';
138     display td {class => 'dataRight'},                $scalingFactor;
139     display th {class => 'label'},                    'Clrtxt Idle Lifetime:';
140     display td {class => 'dataRight'},                $cleartextIdleLifetime;
141     display th {class => 'label'},                    'VOB Hash:';
142     display td {class => 'dataRight', -colspan => 3}, $vobHashTableSize;
143   display end_Tr;
144
145   display start_Tr;
146     display th {class => 'label'},                   'Clrtxt Hash:';
147     display td {class => 'dataRight'},               $cleartextHashTableSize;
148     display th {class => 'label'},                   'DNC Hash:';
149     display td {class => 'dataRight'},               $dncHashTableSize;
150     display th {class => 'label'},                   'Thread Hash:';
151     display td {class => 'dataRight'},               $threadHashTableSize;
152     display th {class => 'label'},                   'Process Hash:';
153     display td {class => 'dataRight', colspan => 3}, $processHashTableSize;
154   display end_Tr;
155
156   display start_Tr;
157     display th {class => 'labelCentered', -colspan => 10}, 'MVFS Parameters';
158   display end_Tr;
159
160   display start_Tr;
161     display th {class => 'label'},     'Blocks/Dir:';
162     display td {class => 'dataRight'}, $mvfsBlocksPerDirectory;
163     display th {class => 'label'},     'Clrtxt Mnodes:';
164     display td {class => 'dataRight'}, $mvfsCleartextMnodes;
165     display th {class => 'label'},     'DirNames:';
166     display td {class => 'dataRight'}, $mvfsDirectoryNames;
167     display th {class => 'label'},     'FileNames:';
168     display td {class => 'dataRight'}, $mvfsFileNames;
169     display th {class => 'label'},     'Free Mnodes:';
170     display td {class => 'dataRight'}, $mvfsFreeMnodes;
171   display end_Tr;
172
173   display start_Tr;
174     display th {class => 'label'},     'Init Mnodes:';
175     display td {class => 'dataRight'}, $mvfsInitialMnodeTableSize;
176     display th {class => 'label'},     'Min Clrtxt Mnodes:';
177     display td {class => 'dataRight'}, $mvfsMinCleartextMnodes;
178     display th {class => 'label'},     'Min Free Mnodes:';
179     display td {class => 'dataRight'}, $mvfsMinFreeMnodes;
180     display th {class => 'label'},     'Names Not Found:';
181     display td {class => 'dataRight'}, $mvfsNamesNotFound;
182     display th {class => 'label'},     'RPC Handles:';
183     display td {class => 'dataRight'}, $mvfsRPCHandles;
184   display end_Tr;
185
186   display end_table;
187   
188   return;
189 } # DisplayTable
190
191 # Main
192 GetOptions (
193   usage      => sub { Usage },
194   verbose    => sub { set_verbose },
195   debug      => sub { set_debug },
196   'server=s' => \$name,
197 ) or Usage 'Invalid parameter';
198
199 # Announce ourselves
200 verbose "$FindBin::Script v$VERSION";
201
202 my $title  = $subtitle;
203    $title .= $name ? ": $name" : '';
204
205 $clearadm = Clearadm->new;
206
207 $subtitle  = h1 {class => 'center'}, 'System Details: ' . ucfirst $name;
208
209 heading $title;
210
211 unless ($name) {
212  display 'System is required';
213  exit;
214 }
215
216 display h1 {class => 'center'}, $subtitle;
217
218 displaySystem $name;
219
220 #my $server = new Clearcase::Server ($name);
221
222 #DisplayTable $server;
223
224 footing;
225
226 =pod
227
228 =head1 CONFIGURATION AND ENVIRONMENT
229
230 DEBUG: If set then $debug is set to this level.
231
232 VERBOSE: If set then $verbose is set to this level.
233
234 TRACE: If set then $trace is set to this level.
235
236 =head1 DEPENDENCIES
237
238 =head2 Perl Modules
239
240 L<CGI>
241
242 L<CGI::Carp|CGI::Carp>
243
244 L<FindBin>
245
246 L<Getopt::Long|Getopt::Long>
247
248 =head2 ClearSCM Perl Modules
249
250 =begin man 
251
252  Clearadm
253  ClearadmWeb
254  Clearcase::Server
255  Display
256  Utils
257
258 =end man
259
260 =begin html
261
262 <blockquote>
263 <a href="http://clearscm.com/php/scm_man.php?file=clearadm/lib/Clearadm.pm">Clearadm</a><br>
264 <a href="http://clearscm.com/php/scm_man.php?file=clearadm/lib/ClearadmWeb.pm">ClearadmWeb</a><br>
265 <a href="http://clearscm.com/php/scm_man.php?file=lib/Clearcase/Server.pm">Clearcase::Server</a><br>
266 <a href="http://clearscm.com/php/scm_man.php?file=lib/Display.pm">Display</a><br>
267 <a href="http://clearscm.com/php/scm_man.php?file=lib/Utils.pm">Utils</a><br>
268 </blockquote>
269
270 =end html
271
272 =head1 BUGS AND LIMITATIONS
273
274 There are no known bugs in this script
275
276 Please report problems to Andrew DeFaria <Andrew@ClearSCM.com>.
277
278 =head1 LICENSE AND COPYRIGHT
279
280 Copyright (c) 2010, ClearSCM, Inc. All rights reserved.
281
282 =cut