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
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',
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}";
$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
=head2 ClearSCM Perl Modules
-=begin man
+=begin man
Clearadm
DateUtils