Removed /usr/local from CDPATH
[clearscm.git] / clearadm / clearadmscrub.pl
index ba65c08..1b8a6a4 100755 (executable)
@@ -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<Getopt::Long|Getopt::Long>
 
 =head2 ClearSCM Perl Modules
 
-=begin man
+=begin man 
 
  Clearadm
  DateUtils