diff options
Diffstat (limited to 'lib/App/Glacier/Command/Jobs.pm')
-rw-r--r-- | lib/App/Glacier/Command/Jobs.pm | 39 |
1 files changed, 7 insertions, 32 deletions
diff --git a/lib/App/Glacier/Command/Jobs.pm b/lib/App/Glacier/Command/Jobs.pm index 5a5f488..7dc5d06 100644 --- a/lib/App/Glacier/Command/Jobs.pm +++ b/lib/App/Glacier/Command/Jobs.pm | |||
@@ -116,42 +116,17 @@ sub list { | |||
116 | 116 | ||
117 | my $db = $self->jobdb(); | 117 | my $db = $self->jobdb(); |
118 | $db->foreach(sub { | 118 | $db->foreach(sub { |
119 | my ($key, $descr) = @_; | 119 | my ($key, $descr, $vault) = @_; |
120 | my $vault = $descr->{VaultARN}; | ||
121 | $vault =~ s{.*:vaults/}{}; | ||
122 | 120 | ||
123 | return if (@vault_names && ! grep { $_ eq $vault } @vault_names); | 121 | return if (@vault_names && ! grep { $_ eq $vault } @vault_names); |
124 | 122 | ||
125 | unless ($self->{_options}{cached}) { | 123 | unless ($self->{_options}{cached}) { |
126 | if ($descr->{StatusCode} eq 'Failed') { | 124 | my $res = $self->check_job($key, $descr, $vault) |
127 | $self->debug(1, "deleting failed $key $vault " . | 125 | or return; |
128 | ($descr->{JobDescription} || $descr->{Action}) . | 126 | $res = timestamp_deserialize($res); |
129 | $descr->{JobId}); | 127 | $self->debug(2, $res->{StatusCode}); |
130 | $db->delete($key) unless $self->dry_run; | 128 | $db->store($key, $res) unless $self->dry_run; |
131 | return; | 129 | $descr = $res; |
132 | } | ||
133 | |||
134 | my $res = $self->glacier->Describe_job($vault, $descr->{JobId}); | ||
135 | if ($self->glacier->lasterr) { | ||
136 | if ($self->glacier->lasterr('code') == 404) { | ||
137 | $self->debug(1, "deleting expired $key $vault " . | ||
138 | ($descr->{JobDescription} || $descr->{Action}) . | ||
139 | $descr->{JobId}); | ||
140 | App::Glacier::Job->fromdb($self, $vault, $key, $res)->delete() | ||
141 | unless $self->dry_run; | ||
142 | return; | ||
143 | } else { | ||
144 | $self->error("can't describe job $descr->{JobId}: ", | ||
145 | $self->glacier->last_error_message); | ||
146 | } | ||
147 | } elsif (ref($res) ne 'HASH') { | ||
148 | croak "describe_job returned wrong datatype (".ref($res).") for \"$descr->{JobId}\""; | ||
149 | } else { | ||
150 | $res = timestamp_deserialize($res); | ||
151 | $self->debug(2, $res->{StatusCode}); | ||
152 | $db->store($key, $res) unless $self->dry_run; | ||
153 | $descr = $res; | ||
154 | } | ||
155 | } | 130 | } |
156 | 131 | ||
157 | my $started = $self->format_date_time($descr, 'CreationDate'); | 132 | my $started = $self->format_date_time($descr, 'CreationDate'); |