Initial commit
[clearscm.git] / clearadm / vobservers.cgi
1 #!/usr/bin/perl
2
3 =pod
4
5 =head1 NAME $RCSfile: vobservers.cgi,v $
6
7 View 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.9 $
20
21 =item Created:
22
23 Mon Oct 25 11:10:47 PDT 2008
24
25 =item Modified:
26
27 $Date: 2011/01/02 15:25:42 $
28
29 =back
30
31 =head1 SYNOPSIS
32
33  Usage vobservers.cgi: [-u|sage] [-r|egion <region>]
34                        [-ve|rbose] [-d|ebug]
35
36  Where:
37    -u|sage:           Displays usage
38    -r|egion <region>: Region to use when looking for the view
39
40    -ve|rbose:         Be verbose
41    -d|ebug:           Output debug messages
42
43 =head1 DESCRIPTION
44
45 This script display the details for all vob servers in the region
46
47 =cut
48
49 use strict;
50 use warnings;
51
52 use FindBin;
53 use Getopt::Long;
54 use CGI qw (:standard :cgi-lib *table start_Tr end_Tr);
55 use CGI::Carp 'fatalsToBrowser';
56
57 use lib "$FindBin::Bin/lib", "$FindBin::Bin/../lib";
58
59 use ClearadmWeb;
60 use Clearcase;
61 use Clearcase::Server;
62 use Display;
63 use Utils;
64
65 my %opts = Vars;
66
67 $opts{region} ||= $Clearcase::CC->region if $Clearcase::CC;
68
69 my $subtitle = 'Vob Servers';
70
71 my $VERSION  = '$Revision: 1.9 $';
72   ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
73
74 sub DisplayTable (@) {
75   my (@vobServers) = @_;
76
77   my $unknown = font {-class => 'unknown'}, 'Unknown';
78
79   display start_table {
80     -cellspacing    => 1,
81     -class          => 'main',
82   };
83
84   display start_Tr;
85     display th {
86       -class => 'labelCentered',
87       }, '#';
88     display th {
89       -class => 'labelCentered',
90       }, 'Server';
91     display th {
92       -class => 'labelCentered',
93       }, 'CC Version';
94     display th {
95       -class => 'labelCentered',
96       }, 'OS Version';
97   display end_Tr;
98
99   my $i = 0;
100
101   foreach (@vobServers) {
102     my $server = Clearcase::Server->new ($_, $opts{region});
103
104     # Data fields
105     my $name  = $server->name;
106     my $ccVer = $server->ccVer;
107     my $osVer = $server->osVer;
108
109     $ccVer ||= $unknown;
110     $osVer ||= $unknown;
111
112     display start_Tr;
113       display td {
114         -class => 'dataCentered',
115       }, ++$i;
116       display td {
117         -class   => 'data',
118       }, a {-href => "serverdetails.cgi?server=$name"}, $name;
119       display td {
120         -class => 'data',
121       }, $ccVer;
122       display td {
123         -class => 'data',
124       }, $osVer;
125     display end_Tr;
126   } # foreach
127
128   display end_table;
129   
130   return;
131 } # DisplayTable
132
133 # Main
134 GetOptions (
135   \%opts,
136   'usage'        => sub { Usage },
137   'verbose'      => sub { set_verbose },
138   'debug'        => sub { set_debug },
139   'region=s',
140 ) or Usage "Invalid parameter";
141
142 # Announce ourselves
143 verbose "$FindBin::Script v$VERSION";
144
145 heading $subtitle;
146
147 display h1 {
148   -class => 'center',
149 }, $subtitle;
150
151 my ($status, @output) = $Clearcase::CC->execute (
152   "lsvob -region $opts{region} -long"
153 );
154
155 error "Unable to list all vobs in the region $opts{region}"
156     . join ("\n", @output), 1
157   if $status;
158
159 my %vobServers;
160
161 foreach (@output) {
162   if (/Server host: (.*)/) {
163     $vobServers{$1} = undef;
164   } # if
165 } # foreach
166
167 DisplayTable sort (keys (%vobServers));
168
169 footing;
170
171 =pod
172
173 =head1 CONFIGURATION AND ENVIRONMENT
174
175 DEBUG: If set then $debug is set to this level.
176
177 VERBOSE: If set then $verbose is set to this level.
178
179 TRACE: If set then $trace is set to this level.
180
181 =head1 DEPENDENCIES
182
183 =head2 Perl Modules
184
185 L<CGI>
186
187 L<CGI::Carp|CGI::Carp>
188
189 L<FindBin>
190
191 L<Getopt::Long|Getopt::Long>
192
193 =head2 ClearSCM Perl Modules
194
195 =begin man 
196
197  ClearadmWeb
198  Clearcase
199  Clearcase::Server
200  Display
201  Utils
202
203 =end man
204
205 =begin html
206
207 <blockquote>
208 <a href="http://clearscm.com/php/cvs_man.php?file=clearadm/lib/ClearadmWeb.pm">ClearadmWeb</a><br>
209 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Clearcase.pm">Clearcase</a><br>
210 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Clearcase/Server.pm">Clearcase::Server</a><br>
211 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Display.pm">Display</a><br>
212 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Utils.pm">Utils</a><br>
213 </blockquote>
214
215 =end html
216
217 =head1 BUGS AND LIMITATIONS
218
219 There are no known bugs in this script
220
221 Please report problems to Andrew DeFaria <Andrew@ClearSCM.com>.
222
223 =head1 LICENSE AND COPYRIGHT
224
225 Copyright (c) 2010, ClearSCM, Inc. All rights reserved.
226
227 =cut