X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clearadm%2Fupdateccfs.pl;h=60b994e7c11eedeae1f9707c722ccd79265892ff;hb=7ddf095f187ca60d9a70fb83b2bc3c2b6d91f088;hp=ff4dd25c711241f73c95d6984af9870b5d4b0eeb;hpb=0c802537ec02d6cfea4c41b3138535c09a319489;p=clearscm.git diff --git a/clearadm/updateccfs.pl b/clearadm/updateccfs.pl index ff4dd25..60b994e 100755 --- a/clearadm/updateccfs.pl +++ b/clearadm/updateccfs.pl @@ -66,12 +66,15 @@ use Clearcase::Vob; use DateUtils; use Display; use Utils; +use TimeUtils; my $VERSION = '$Revision: 1.29 $'; ($VERSION) = ($VERSION =~ /\$Revision: (.*) /); my $clearadm = Clearadm->new; +my %total; + # Given a view tag, snapshot the storage sizes sub snapshotViewStorage($$) { my ($tag, $region) = @_; @@ -91,6 +94,12 @@ sub snapshotViewStorage($$) { my ($err, $msg) = $clearadm->AddViewStorage(%viewstorage); error $msg, $err if $err; + + $total{'Views snapshotted'}++; + + updateView($tag, $region); + + return; } # snapshotVobStorage # Given a vob tag, snapshot the storage sizes @@ -114,12 +123,134 @@ sub snapshotVobStorage($$) { my ($err, $msg) = $clearadm->AddVobStorage(%vobstorage); error $msg, $err, if $err; + + $total{'VOBs snapshotted'}++; + + updateVob($tag, $region); + + return; } # snapshotVobStorage +sub updateVob($$) { + my ($tag, $region) = @_; + + my ($err, $msg, $error, @output, $graph); + + my %vob = $clearadm->GetVob($tag, $region); + + for my $graphType (qw(admin cleartext db derivedobj source total)) { + #for my $graphType (qw(derivedobj)) { + # Windows vob tags begin with "\", which is problematic. The solution is to + # escape the "\" + my $vobtag = $tag; + $vobtag =~ s/^\\/\\\\/; + + my $cmd = "plotstorage.cgi generate=1 type=vob storage=$graphType region=$region scaling=Day points=7 tag=$vobtag"; + + $graph = "${graphType}small"; + + verbose "Generating $graph for VOB $tag (Region: $region)"; + + ($error, @output) = Execute("$cmd tiny=1 2>&1"); + + error "Unable to generate $graph" . join("\n", @output), $error if $error; + + $vob{$graph} = join '', @output; + $total{'VOB Graphs generated'}++; + + $graph = "${graphType}large"; + + verbose "Generating $graph for VOB $tag (Region: $region)"; + + ($error, @output) = Execute("$cmd 2>&1"); + + error "Unable to generate $graph" . join("\n", @output), $error if $error; + + $vob{$graph} = join '', @output; + $total{'VOB Graphs generated'}++; + } # for + + if ($vob{tag}) { + ($err, $msg) = $clearadm->UpdateVob(%vob); + + error "Unable to update VOB $tag (Region: $region) - $msg", $err if $err; + + $total{'VOBs updated'}++; + } else { + $vob{tag} = $tag; + $vob{region} = $region; + + ($err, $msg) = $clearadm->AddVob(%vob); + + error "Unable to add VOB $tag (Region: $region) - $msg", $err if $err; + + $total{'VOBs added'}++; + } # if + + return; +} # updateVob + +sub updateView($$) { + my ($tag, $region) = @_; + + my ($err, $msg, $error, @output, $graph); + + my %view = $clearadm->GetView($tag, $region); + + for my $graphType (qw(private db admin total)) { + my $cmd = "plotstorage.cgi generate=1 type=view storage=$graphType region=$region scaling=Day points=7 tag=$tag"; + + $graph = "${graphType}small"; + + verbose "Generating $graph for View $tag (Region: $region)"; + + ($error, @output) = Execute("$cmd tiny=1 2>&1"); + + error "Unable to generate $graph" . join("\n", @output), $error if $error; + + $total{'View Graphs generated'}++; + + $view{$graph} = join '', @output; + + $graph = "${graphType}large"; + + verbose "Generating $graph for View $tag (Region: $region)"; + + ($error, @output) = Execute("$cmd 2>&1"); + + error "Unable to generate $graph" . join("\n", @output), $error if $error; + + $total{'View Graphs generated'}++; + + $view{$graph} = join '', @output; + } # for + + if ($view{tag}) { + ($err, $msg) = $clearadm->UpdateView(%view); + + error "Unable to update View $tag (Region: $region) - $msg", $err if $err; + + $total{'Views updated'}++; + } else { + $view{tag} = $tag; + $view{region} = $region; + + ($err, $msg) = $clearadm->AddView(%view); + + error "Unable to add VOB $tag (Region: $region) - $msg", $err if $err; + + $total{'Views added'}++; + } # if + + return; +} # updateView + my %opts; # Main -GetOptions ( +my $startTime = time; + +GetOptions( \%opts, 'usage' => sub { Usage }, 'verbose' => sub { set_verbose }, @@ -198,7 +329,7 @@ if ($opts{vob} and $opts{vob} =~ /all/i) { } elsif ($opts{vob}) { if ($opts{region} =~ /all/i) { for my $region ($Clearcase::CC->regions) { - verbose "Snapshotting view $opts{vob} in region $region"; + verbose "Snapshotting vob $opts{vob} in region $region"; snapshotVobStorage $opts{vob}, $region; } # for @@ -209,6 +340,11 @@ if ($opts{vob} and $opts{vob} =~ /all/i) { } # if } # if +if (get_verbose) { + Stats \%total; + display_duration $startTime; +} # if + =pod =head1 CONFIGURATION AND ENVIRONMENT