X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clearadm%2Fclearadmscrub.pl;fp=clearadm%2Fclearadmscrub.pl;h=1b8a6a45e86e1f5df273206730be02c855e24687;hb=3c28a301742e8f8cdd35825fd6ebe4f842a510c7;hp=c88ddac1b78b4fe2b715fcf66eb9c97c7d1201ce;hpb=cc7bfce480ad76a92d6c9e8c8bcb59295e099388;p=clearscm.git diff --git a/clearadm/clearadmscrub.pl b/clearadm/clearadmscrub.pl index c88ddac..1b8a6a4 100755 --- a/clearadm/clearadmscrub.pl +++ b/clearadm/clearadmscrub.pl @@ -1,4 +1,4 @@ -#!/usr/bin/env perl +#!/usr/local/bin/perl =pod @@ -49,6 +49,7 @@ use warnings; use FindBin; use Getopt::Long; +use Sys::Hostname; use lib "$FindBin::Bin/lib", "$FindBin::Bin/../lib"; @@ -65,52 +66,92 @@ my $clearadm = Clearadm->new; my ($host, $fs); +my %opts = ( + scrubdays => $Clearadm::CLEAROPTS{CLEARADM_SCRUBDAYS} +); + # Main -GetOptions ( - 'usage' => sub { Usage }, - 'verbose' => sub { set_verbose }, - 'debug' => sub { set_debug }, +GetOptions( + \%opts, + 'usage' => sub { Usage }, + 'verbose' => sub { set_verbose }, + 'debug' => sub { set_debug }, + "scrubdays=i", ) or Usage "Invalid parameter"; -Usage 'Extraneous options: ' . join ' ', @ARGV - if @ARGV; +Usage 'Extraneous options: ' . join ' ', @ARGV if @ARGV; # Announce ourselves verbose "$FindBin::Script V$VERSION"; my ($err, $msg); -foreach my $system ($clearadm->FindSystem ($host)) { - ($err, $msg) = $clearadm->TrimLoadavg ($$system{name}); +for my $system ($clearadm->FindSystem($host)) { + ($err, $msg) = $clearadm->TrimLoadavg($system->{name}); if ($msg eq 'Records deleted' or $msg eq '') { - verbose "Scrub loadavg $$system{name}: $err $msg:"; + verbose "Scrub loadavg $system->{name}: $err $msg:"; } else { error "#$err: $msg"; } # if - foreach my $filesystem ($clearadm->FindFilesystem ($$system{name}, $fs)) { - ($err, $msg) = $clearadm->TrimFS ($$system{name}, $$filesystem{filesystem}); + for my $filesystem ($clearadm->FindFilesystem($system->{name}, $fs)) { + ($err, $msg) = $clearadm->TrimFS($system->{name}, $filesystem->{filesystem}); if ($msg eq 'Records deleted' or $msg eq '') { - verbose "Scrub filesystem $$system{name}:$$filesystem{filesystem}: $err $msg"; + verbose "Scrub filesystem $system->{name}:$filesystem->{filesystem}: $err $msg"; } else { error "#$err: $msg"; } # if - } # foreach -} # foreach + } # for +} # for -# TODO: These should be configurable -my $sixMonthsAgo = SubtractDays (Today2SQLDatetime, 180); +my $scrubdate = SubtractDays(Today2SQLDatetime, $opts{scrubdays}); my %runlog = ( task => 'Scrub', started => Today2SQLDatetime, + system => hostname(), ); +# Scrub view and vob storage records +for ($clearadm->FindVob) { + ($err, $msg) = $clearadm->TrimStorage('vob', $_->{tag}, $_->{region}); + + if ($msg eq 'Records deleted' or $msg eq '') { + verbose "Scub VOB $_->{tag} $err $msg"; + } else { + error "#$err: $msg"; + } # if +} # for + +for ($clearadm->FindView) { + ($err, $msg) = $clearadm->TrimStorage('view', $_->{tag}, $_->{region}); + + if ($msg eq 'Records deleted' or $msg eq '') { + verbose "Scub View $_->{tag} $err $msg"; + } else { + error "#$err: $msg"; + } # if +} # for + +# Make sure the Clearcase objects we have in Clearadm are still valid +my ($views, $vobs) = $clearadm->ValidateCCObjects; + +if ($vobs !~ /^\d+/) { + error "Unable to validate Clearcase objects: $vobs", $views; +} else { + $runlog{status} = 0; + + $runlog{message} = "Deleted $views views\n" if $views; + $runlog{message} .= "Deleted $vobs vobs" if $vobs; + + $clearadm->AddRunlog(%runlog); +} # if + # Scrub old alertlogs ($runlog{status}, $runlog{message}) = - $clearadm->DeleteAlertlog ("timestamp<='$sixMonthsAgo'"); + $clearadm->DeleteAlertlog ("timestamp<='$scrubdate'"); verbose "$runlog{task} alertlog: $runlog{status} $runlog{message}"; @@ -120,11 +161,11 @@ $runlog{started} = Today2SQLDatetime; # Scrub old runlogs ($runlog{status}, $runlog{message}) = - $clearadm->DeleteRunlog ("started<='$sixMonthsAgo'"); + $clearadm->DeleteRunlog ("started<='$scrubdate'"); verbose "$runlog{task} runlog: $runlog{status} $runlog{message}"; -$clearadm->AddRunlog (%runlog); +$clearadm->AddRunlog(%runlog); =pod