Removed /usr/local from CDPATH
[clearscm.git] / clearadm / viewservers.cgi
1 #!/usr/local/bin/perl
2
3 =pod
4
5 =head1 NAME $RCSfile: viewservers.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:23 $
28
29 =back
30
31 =head1 SYNOPSIS
32
33  Usage viewservers.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 view 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;
68
69 my $subtitle = 'View Servers';
70
71 my $VERSION  = '$Revision: 1.9 $';
72   ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
73
74 sub DisplayTable(@) {
75   my (@viewServers) = @_;
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   for (@viewServers) {
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   } # for
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 ("lsview -region $opts{region} -long");
152
153 error "Unable to list all views in the region $opts{region}" . join ("\n", @output), 1
154   if $status;
155
156 my %viewServers;
157
158 for (@output) {
159   if (/Server host: (.*)/) {
160     $viewServers{$1} = undef;
161   } # if
162 } # for
163
164 DisplayTable sort(keys(%viewServers));
165
166 footing;
167
168 =pod
169
170 =head1 CONFIGURATION AND ENVIRONMENT
171
172 DEBUG: If set then $debug is set to this level.
173
174 VERBOSE: If set then $verbose is set to this level.
175
176 TRACE: If set then $trace is set to this level.
177
178 =head1 DEPENDENCIES
179
180 =head2 Perl Modules
181
182 L<CGI>
183
184 L<CGI::Carp|CGI::Carp>
185
186 L<FindBin>
187
188 L<Getopt::Long|Getopt::Long>
189
190 =head2 ClearSCM Perl Modules
191
192 =begin man 
193
194  ClearadmWeb
195  Clearcase
196  Clearcase::Server
197  Display
198  Utils
199
200 =end man
201
202 =begin html
203
204 <blockquote>
205 <a href="http://clearscm.com/php/scm_man.php?file=clearadm/lib/ClearadmWeb.pm">ClearadmWeb</a><br>
206 <a href="http://clearscm.com/php/scm_man.php?file=lib/Clearcase.pm">Clearcase</a><br>
207 <a href="http://clearscm.com/php/scm_man.php?file=lib/Clearcase/Server.pm">Clearcase::Server</a><br>
208 <a href="http://clearscm.com/php/scm_man.php?file=lib/Display.pm">Display</a><br>
209 <a href="http://clearscm.com/php/scm_man.php?file=lib/Utils.pm">Utils</a><br>
210 </blockquote>
211
212 =end html
213
214 =head1 BUGS AND LIMITATIONS
215
216 There are no known bugs in this script
217
218 Please report problems to Andrew DeFaria <Andrew@ClearSCM.com>.
219
220 =head1 LICENSE AND COPYRIGHT
221
222 Copyright (c) 2010, ClearSCM, Inc. All rights reserved.
223
224 =cut