Skip to content

Instantly share code, notes, and snippets.

@awead
Created November 3, 2011 00:03
Show Gist options
  • Save awead/1335364 to your computer and use it in GitHub Desktop.
Save awead/1335364 to your computer and use it in GitHub Desktop.
# ----------------------------------------------------------------------------
# Name: sendFiles
# Desc: Since this process for sending files from the access and preservation
# folders is pretty much the same, I created a subroutine to do it.
# Inputs: local source directory, remote directory, filename
# Outputs: Errors, if any
# ----------------------------------------------------------------------------
sub sendFiles {
my ($srcDir, $remoteSrcDir, $file) = @_;
my @errors;
my $src = Path::Class::File->new($srcDir, $file);
# Create MD5 sum
DRA::logger("Creating MD5 sum for $file ...", $mdssTransferLog);
my ($md5file, $error) = DRA::createMD5($src, $file);
if ($error) {
DRA::logger("Failed!", $mdssTransferLog);
my $message = "MD5 creation failed: $error";
push @errors, $message;
}
else {
DRA::logger("done.", $mdssTransferLog);
}
# Send MD5 sum to MDSS
my $md5src = $file . ".md5";
my $md5path = Path::Class::File->new($srcDir, $md5src);
my $md5dest = Path::Class::File->new($remoteSrcDir, $md5src);
DRA::logger("Sending MD5 file $md5src ...", $mdssTransferLog);
my $put_err1 = DRA::hsiPut(
{
source => $md5path,
dest => $md5dest,
hsi => $hsi,
opts => $hsiOptLine,
ports => $hsiPorts,
keytab => $keytabFile,
}
);
if ($put_err1) {
DRA::logger("Failed!", $mdssTransferLog);
my $message = "Failed to send file: $!";
push @errors, $message;
}
else {
DRA::logger("done.", $mdssTransferLog);
}
# Send file to MDSS
my $dest = Path::Class::File->new($remoteSrcDir, $file);
DRA::logger("Sending $file ...", $mdssTransferLog);
my $put_err2 = DRA::hsiPut(
{
source => $src,
dest => $dest,
hsi => $hsi,
opts => $hsiOptLine,
ports => $hsiPorts,
keytab => $keytabFile,
}
);
if ($put_err2) {
DRA::logger("Failed!", $mdssTransferLog);
my $message = "Failed to send file: $!";
push @errors, $message;
}
else {
DRA::logger("done.", $mdssTransferLog);
}
# Check transfer
DRA::logger("Verifying ...", $mdssTransferLog);
my $check_err = DRA::hsiCheck(
{
file => $file,
path => $remoteSrcDir,
hsi => $hsi,
opts => $hsiOptLine,
ports => $hsiPorts,
temp => $tempDir,
keytab => $keytabFile,
}
);
if ($check_err) {
DRA::logger("Failed!", $mdssTransferLog);
my $message = "Verification failed: $!";
push @errors, $message;
}
else {
DRA::logger("Passed!", $mdssTransferLog);
}
# Return any errors
if (@errors) {
my $line = join "\n", @errors;
return $line;
}
else {
return 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment