X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=clearadm%2Fclearadmscrub.pl;h=1b8a6a45e86e1f5df273206730be02c855e24687;hb=7ddf095f187ca60d9a70fb83b2bc3c2b6d91f088;hp=ba65c0862278f2208f2f40d502e820b00e685017;hpb=15f4731495714d8cdcf9c64344858f139cc892a2;p=clearscm.git diff --git a/clearadm/clearadmscrub.pl b/clearadm/clearadmscrub.pl index ba65c08..1b8a6a4 100755 --- a/clearadm/clearadmscrub.pl +++ b/clearadm/clearadmscrub.pl @@ -34,10 +34,10 @@ $Date: 2012/11/09 06:45:36 $ Where: -u|sage: Displays usage - + -ve|rbose: Be verbose -deb|ug: Output debug messages - + =head1 DESCRIPTION This script will scrub all old records in the Clearadm database @@ -66,43 +66,47 @@ 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); -for 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 - - for 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 } # for } # for -# TODO: These should be configurable -my $sixMonthsAgo = SubtractDays (Today2SQLDatetime, 180); +my $scrubdate = SubtractDays(Today2SQLDatetime, $opts{scrubdays}); my %runlog = ( task => 'Scrub', @@ -110,9 +114,44 @@ my %runlog = ( 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'"); +($runlog{status}, $runlog{message}) = + $clearadm->DeleteAlertlog ("timestamp<='$scrubdate'"); verbose "$runlog{task} alertlog: $runlog{status} $runlog{message}"; @@ -121,12 +160,12 @@ $clearadm->AddRunlog (%runlog); $runlog{started} = Today2SQLDatetime; # Scrub old runlogs -($runlog{status}, $runlog{message}) = - $clearadm->DeleteRunlog ("started<='$sixMonthsAgo'"); - +($runlog{status}, $runlog{message}) = + $clearadm->DeleteRunlog ("started<='$scrubdate'"); + verbose "$runlog{task} runlog: $runlog{status} $runlog{message}"; -$clearadm->AddRunlog (%runlog); +$clearadm->AddRunlog(%runlog); =pod @@ -148,7 +187,7 @@ L =head2 ClearSCM Perl Modules -=begin man +=begin man Clearadm DateUtils