X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clearadm%2Fviewager.cgi;h=9ac1b1e71b15107317cdbc116edec19f344cbf73;hb=0c802537ec02d6cfea4c41b3138535c09a319489;hp=c283ebec0960a6a145994bf24f1200eb6e609644;hpb=bdb1e0c845a6921e22d52fbff3404d5c1dfae520;p=clearscm.git diff --git a/clearadm/viewager.cgi b/clearadm/viewager.cgi index c283ebe..9ac1b1e 100755 --- a/clearadm/viewager.cgi +++ b/clearadm/viewager.cgi @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/local/bin/perl =pod @@ -59,7 +59,8 @@ including old ones. Where: -u|sage: Displays usage - -region : Region to use when looking for the view + -region : Region to use when looking for views (Default + for generate action: all) -e|mail: Send email to owners of old views -ag|eThreshold: Number of days before a view is considered old (Default: 180) @@ -140,11 +141,11 @@ use User; my $VERSION = '$Revision: 1.11 $'; ($VERSION) = ($VERSION =~ /\$Revision: (.*) /); -my %opts = Vars; +my %opts; my $clearadm; -$opts{sortby} ||= 'age'; -$opts{region} ||= $Clearcase::CC->region; +$opts{sortby} ||= 'age'; +$opts{ageThreshold} = 180; # Default number of days a view must be older than my $subtitle = 'View Aging Report'; my $email; @@ -158,14 +159,13 @@ my $script = 'http://' . $port . $scriptName; -my (%total, $action); -my $ageThreshold = 180; # Default number of days a view must be older than +my %total; my $nbrThreshold; # Number of views threshold - think top 10 sub GenerateRegion ($) { my ($region) = @_; - verbose "Processing $region"; + verbose "Processing region $region"; $total{Regions}++; my $views = Clearcase::Views->new ($region); @@ -176,7 +176,7 @@ sub GenerateRegion ($) { my $i = 0; - foreach my $name (@Views) { + for my $name (@Views) { $total{Views}++; if (++$i % 100 == 0) { @@ -214,13 +214,17 @@ sub GenerateRegion ($) { my $ownerid = $view->owner; - if ($ownerid) { - $user = User->new ($ownerid); + if ($ownerid =~ /^\w+(\\|\/)(\w+)/) { + # TODO: Handle user identification better + #$user = User->new ($ownerid); - $user->{name} ||= 'Unknown'; + $ownerid = $2; + $user->{name} = $2; + $user->{email} = "$2\@gddsi.com"; } else { $ownerid = 'Unknown'; $user->{name} = 'Unknown'; + $user->{email} = 'unknown@gddsi.com'; } # if my $age = 0; @@ -235,29 +239,42 @@ sub GenerateRegion ($) { # Compute age $age = Age ($modified_date); $ageSuffix = $age != 1 ? 'days' : 'day'; - } else { - $modified_date = 'Unknown'; + #} else { + # $modified_date = 'Unknown'; } # if - my ($err, $msg) = $clearadm->AddView ( - system => $view->shost, - region => $view->region, - tag => $view->tag, - owner => $ownerid, - ownerName => $user->{name}, - email => $user->{email}, - type => $type, - gpath => $gpath, - modified_date => $modified_date, - age => $age, - ageSuffix => $ageSuffix, + my %oldView = $clearadm->GetView($view->tag, $view->region); + + my ($err, $msg); + + my %viewRec = ( + system => $view->shost, + region => $view->region, + tag => $view->tag, + owner => $ownerid, + ownerName => $user->{name}, + email => $user->{email}, + type => $type, + gpath => $gpath, + age => $age, + ageSuffix => $ageSuffix, ); - error "Unable to add view $name to Clearadm\n$msg", $err - if $err; - } # foreach + # Some views have not yet been modified + $viewRec{modified} = $modified_date if $modified_date; + + if (%oldView) { + ($err, $msg) = $clearadm->UpdateView($view->tag, $view->region, %viewRec); - verbose "\nProcessed $region"; + error "Unable to update view $name in Clearadm\n$msg", $err if $err; + } else { + ($err, $msg) = $clearadm->AddView (%viewRec); + + error "Unable to add view $name to Clearadm\n$msg", $err if $err; + } # if + } # for + + verbose "\nProcessed region $region"; return; } # GenerateRegion @@ -266,9 +283,9 @@ sub Generate ($) { my ($region) = @_; if ($region =~ /all/i) { - foreach ($Clearcase::CC->regions) { - GenerateRegion $_; - } # foreach + for ($Clearcase::CC->regions) { + GenerateRegion $_; + } # for } else { GenerateRegion $region; } # if @@ -283,21 +300,21 @@ sub Report (@) { my @sortedViews; - if ($opts{sort} eq 'age') { + if ($opts{sortby} eq 'age') { # Sort by age numerically decending @sortedViews = sort { $$b{$opts{sortby}} <=> $$a{$opts{sortby}} } @views; } else { - @sortedViews = sort { $$a{$opts{sort}} cmp $$b{$opts{sort}} } @views; + @sortedViews = sort { $$a{$opts{sortby}} cmp $$b{$opts{sortby}} } @views; } # if $total{Reported} = 0; - foreach (@sortedViews) { + for (@sortedViews) { my %view = %{$_}; last if ($nbrThreshold and $total{Reported} + 1 > $nbrThreshold) or - ($view{age} < $ageThreshold); + ($view{age} < $opts{ageThreshold}); $total{Reported}++; @@ -321,11 +338,11 @@ format STDOUT_TOP = . format STDOUT = @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<<<<<<< @>>>> @<<<< -$view{tag},$view{owner},$view{type},$view{modified_date},$view{age},$view{ageSuffix} +$view{tag},$view{owner},$view{type},$view{modified},$view{age},$view{ageSuffix} . write; - } # foreach + } # for return; } # Report @@ -369,17 +386,12 @@ sub FormatTable ($@) { width => '100%', }; - my $registryHost = $Clearcase::CC->registry_host; - - $registryHost = font {class => 'unknown'}, 'Unknown' - unless $registryHost; - $caption .= start_Tr; $caption .= td { -align => 'left', -width => '30%', }, font ({-class => 'label'}, 'Registry: '), - $registryHost, '
', + setField($Clearcase::CC->registry_host), '
', font ({-class => 'label'}, 'Views: '), $nbrViews; $caption .= td { @@ -454,18 +466,20 @@ sub FormatTable ($@) { # Sort by age numerically decending @views = $opts{reverse} == 1 ? sort { $$a{$opts{sortby}} <=> $$b{$opts{sortby}} } @views - : sort { $$b{$opts{sortby}} <=> $$a{$opts{sortby}} } @views + : sort { $$b{$opts{sortby}} <=> $$a{$opts{sortby}} } @views; } else { @views = $opts{reverse} == 1 ? sort { $$b{$opts{sortby}} cmp $$a{$opts{sortby}} } @views - : sort { $$a{$opts{sortby}} cmp $$b{$opts{sortby}} } @views + : sort { $$a{$opts{sortby}} cmp $$b{$opts{sortby}} } @views; } # if my $i; - foreach (@views) { + for (@views) { my %view = %{$_}; + next if $view{region} ne $opts{region}; + my $owner = $view{owner}; if ($view{owner} =~ /\S+(\\|\/)(\S+)/) { @@ -474,7 +488,9 @@ sub FormatTable ($@) { $owner = $view{ownerName} ? $view{ownerName} : 'Unknown'; - my $rowClass= $view{age} > $ageThreshold ? 'oldview' : 'view'; + next if $opts{user} and $owner ne $opts{user}; + + my $rowClass= $view{age} > $opts{ageThreshold} ? 'oldview' : 'view'; $table .= start_Tr { class => $rowClass @@ -503,7 +519,7 @@ sub FormatTable ($@) { class => $view{type} }, $view{age}, ' ', $view{ageSuffix}); $table .= end_Tr; - } # foreach + } # for $table .= end_table; @@ -524,7 +540,7 @@ sub EmailUser ($@) {

Won't you take a moment to review this message and clean up any views you no longer need?

-

The following views are owned by you and have not been modified in $ageThreshold +

The following views are owned by you and have not been modified in $opts{ageThreshold} days:

END @@ -587,7 +603,7 @@ sub EmailUsers (@) { my @userViews; my $currUser = $views [0]->{ownerName}; - foreach (@views) { + for (@views) { my %view = %{$_}; next @@ -601,12 +617,12 @@ sub EmailUsers (@) { @userViews =(); } else { - if ($view{age} > $ageThreshold) { + if ($view{age} > $opts{ageThreshold}) { push @userViews, \%view if !-f "$view{gpath}/ageless"; } # if } # if - } # foreach + } # for display"Done"; @@ -627,18 +643,23 @@ GetOptions ( 'nbrThreshold=i', ) or Usage "Invalid parameter"; -local $| = 1; +# Get options from CGI +my %CGIOpts = Vars; + +$opts{$_} = $CGIOpts{$_} for keys %CGIOpts; -$opts{region} ||= ''; +local $| = 1; # Announce ourselves verbose "$FindBin::Script v$VERSION"; $clearadm = Clearadm->new; -if ($action and $action eq 'generate') { +if ($opts{action} and $opts{action} eq 'generate') { + $opts{region} ||= 'all'; + Generate $opts{region}; - Stats \%total; + Stats \%total if $opts{verbose}; } else { if ($opts{region} and ($opts{region} eq 'Clearcase not installed')) { heading; @@ -647,6 +668,8 @@ if ($action and $action eq 'generate') { exit 1; } # if + $opts{region} ||= $Clearcase::CC->region; + my @views = $clearadm->FindView ( 'all', $opts{region}, @@ -654,7 +677,7 @@ if ($action and $action eq 'generate') { $opts{user} ); - if ($action and $action eq 'report') { + if ($opts{action} and $opts{action} eq 'report') { Report @views; Stats \%total; } elsif ($email) { @@ -743,4 +766,4 @@ Please report problems to Andrew DeFaria . Copyright (c) 2010, ClearSCM, Inc. All rights reserved. -=cut \ No newline at end of file +=cut