App-Glacier
view release on metacpan or search on metacpan
lib/App/Glacier/Command.pm view on Meta::CPAN
$self->config->as_hash(qw(database job))
);
}
return $self->{_jobdb};
}
sub describe_vault {
my ($self, $vault_name) = @_;
my $res = $self->glacier->Describe_vault($vault_name);
if ($self->glacier->lasterr) {
if ($self->glacier->lasterr('code') == 404) {
return undef;
} else {
$self->abend(EX_FAILURE, "can't list vault: ",
$self->glacier->last_error_message);
}
}
return timestamp_deserialize($res);
}
sub directory {
lib/App/Glacier/Command.pm view on Meta::CPAN
"deleting failed $key $vault "
. ($descr->{JobDescription} || $descr->{Action})
. ' '
. $descr->{JobId});
$self->jobdb()->delete($key) unless $self->dry_run;
return;
}
my $res = $self->glacier->Describe_job($vault, $descr->{JobId});
if ($self->glacier->lasterr) {
if ($self->glacier->lasterr('code') == 404) {
$self->debug(1,
"deleting expired $key $vault "
. ($descr->{JobDescription} || $descr->{Action})
. ' '
. $descr->{JobId});
App::Glacier::Job->fromdb($self, $vault, $key, $res)->delete()
unless $self->dry_run;
} else {
$self->error("can't describe job $descr->{JobId}: ",
$self->glacier->last_error_message);
lib/App/Glacier/Command/Sync.pm view on Meta::CPAN
sub sync {
my ($self, $vault_name, %opts) = @_;
my $dir = $self->directory($vault_name);
my $job = new App::Glacier::Job::InventoryRetrieval(
$self, $vault_name,
invalidate => $opts{force});
if ($job->is_completed) {
my $res = $self->glacier->Get_job_output($vault_name, $job->id);
if ($self->glacier->lasterr) {
if ($self->glacier->lasterr('code') == 404 && !$opts{force}) {
if ($opts{restart}) {
$self->abend(EX_FAILURE,
"unexpected error after restart:",
$self->glacier->last_error_message);
}
# Job expired, delete it
# ('mesg' => 'The job ID was not found...)
$opts{force} = 1;
return $self->sync($vault_name, %opts);
} else {
lib/App/Glacier/Job.pm view on Meta::CPAN
$db->store($self->{_key}, $job);
}
if (!$job->{Completed}
|| ($self->{_ttl}
&& (time - $job->{CompletionDate}->epoch) > $self->{_ttl})) {
$self->debug(2, "checking status of job $self->{_key}");
my $res = $self->glacier->Describe_job($self->{_vault},
$job->{JobId});
if ($self->glacier->lasterr) {
if ($self->glacier->lasterr('code') == 404) {
$self->debug(2, "job $self->{_key} expired");
$db->delete($self->{_key});
return $self->_get_job;
} else {
$self->command->abend(EX_UNAVAILABLE,
"can't describe job $job->{JobId}: ",
$self->glacier->last_error_message);
}
} elsif (ref($res) ne 'HASH') {
croak "describe_job returned wrong datatype (".ref($res).") for \"$job->{JobId}\"";
lib/App/Glacier/Job/ArchiveRetrieval.pm view on Meta::CPAN
$self->{_descr} = $descr;
return $self;
}
sub init {
my $self = shift;
my $jid = $self->glacier->Initiate_archive_retrieval($self->vault,
$self->{_archive},
$self->{_descr});
if ($self->glacier->lasterr) {
if ($self->glacier->lasterr('code') == 404) {
$self->command->abend(EX_TEMPFAIL,
$self->glacier->last_error_message
. "\n"
. "Try again later or use the --cached option to see the cached content.")
} else {
$self->command->abend(EX_FAILURE,
"can't create job: ",
$self->command->lasterr('code'),
$self->command->last_error_message);
}
lib/App/Glacier/Job/InventoryRetrieval.pm view on Meta::CPAN
}
sub init {
my $self = shift;
my $jid = $self->glacier->Initiate_inventory_retrieval(
$self->vault,
'JSON',
"Inventory retrieval for vault ".$self->vault
);
if ($self->glacier->lasterr) {
if ($self->glacier->lasterr('code') == 404) {
$self->command->abend(EX_TEMPFAIL,
$self->glacier->last_error_message
. "\n"
. "Try again later or use the --cached option to see the cached content.")
} else {
$self->command->abend(EX_FAILURE,
"can't create job: ",
$self->glacier->lasterr('code'),
$self->glacier->last_error_message);
}
( run in 1.787 second using v1.01-cache-2.11-cpan-39bf76dae61 )