#!/usr/bin/perl # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html #(C)IBM Corp # BEGIN { $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : -d '/opt/xcat' ? '/opt/xcat' : '/usr'; } use lib "$::XCATROOT/lib/perl"; use Getopt::Long; use xCAT::MsgUtils; use xCAT::Utils; use strict; #----------------------------------------------------------------------------- =head1 restorexCATdb restorexCATdb -p =cut #----------------------------------------------------------------------------- # Main my $rc = 0; &parse_args; # read all the *.csv files from the input directory and restore the database opendir DIRPATH, $::PATH; if ($? != 0) { my $msg = " Unable to read directory $::PATH \n"; xCAT::MsgUtils->message("E", $msg); exit 1; } my @files = readdir(DIRPATH); foreach my $table (@files) { if ($table ne '.' and $table ne '..') { my $tablename = $::PATH; $tablename .= "/"; $tablename .= $table; if ( (!$::ALL) && (($table =~ /^eventlog/) || ($table =~ /^auditlog/))) { if ($::VERBOSEREST) { xCAT::MsgUtils->message("I", "Skipping $table\n"); } next; } my $cmd = "tabrestore $tablename"; my @errout = xCAT::Utils->runcmd($cmd, 0); if ($::RUNCMD_RC != 0) { # error xCAT::MsgUtils->message("E", "Error running $cmd, @errout\n"); } else { if ($::VERBOSEREST) { xCAT::MsgUtils->message("I", "Restoring $table.\n"); } } } } closedir DIRPATH; xCAT::MsgUtils->message("I", "Restore of Database Complete."); exit $rc; #----------------------------------------------------------------------------- =head3 parse_args Parses for input =cut #----------------------------------------------------------------------------- sub parse_args { my $msg; my $usagemsg = " restorexCATdb -h \n restorexCATdb -v \n restorexCATdb [-a] [-V] <-p> [path to restore .csv files]\n"; Getopt::Long::Configure("posix_default"); Getopt::Long::Configure("no_gnu_compat"); Getopt::Long::Configure("bundling"); if ( !GetOptions( 'a|all' => \$::ALL, 'p|path=s' => \$::PATH, 'h|help' => \$::HELP, 'V|verbose' => \$::VERBOSEREST, 'v|version' => \$::VERSION ) ) { xCAT::MsgUtils->message("E", $usagemsg); exit 1; } if ($::HELP) { xCAT::MsgUtils->message("I", $usagemsg); exit 0; } if ($::VERSION) { my $version = xCAT::Utils->Version(); xCAT::MsgUtils->message("N", $version); exit 0; } if (!($::PATH)) { my $msg = " -p with path to database files is required \n"; xCAT::MsgUtils->message("E", $msg); exit 1; } if (!(-e $::PATH)) { my $msg = " Input path must exist \n"; xCAT::MsgUtils->message("E", $msg); exit 1; } }