unless ($self->{dbh});
$self->{dbh}->{FetchHashKeyName} = 'NAME_lc';
+
+ if ($self->{info}->{dbi} =~ /^dbi:Pg/i) {
+ $self->{dbh}->do("SET datestyle TO 'ISO, YMD'");
+ }
}
}
graph => 1,
gtype => 1,
type => 1,
+ recyclepool => 1,
);
my %opt_p = ( # option with path
fileset=> 1,
JobFiles AS jobfiles,
JobBytes AS jobbytes,
JobStatus AS jobstatus,
+ JobErrors AS joberrors,
$self->{sql}->{SEC_TO_TIME}( $self->{sql}->{UNIX_TIMESTAMP}(EndTime)
- $self->{sql}->{UNIX_TIMESTAMP}(StartTime)) AS duration
Media.MaxVolJobs AS maxvoljobs,
Media.MaxVolFiles AS maxvolfiles,
Media.VolUseDuration AS voluseduration,
- Media.VolRetention AS volretention
+ Media.VolRetention AS volretention,
+ Media.Comment AS comment,
+ Media.RecyclePoolId AS recyclepoolid
FROM Media INNER JOIN Pool ON (Media.PoolId = Pool.PoolId)
LEFT JOIN Location ON (Media.LocationId = Location.LocationId)
my $all = $self->dbh_selectall_hashref($query, 'name') ;
+ $query = "
+SELECT Pool.Name AS name,
+ sum(VolBytes) AS size
+FROM Media JOIN Pool ON (Media.PoolId = Pool.PoolId)
+WHERE Media.VolStatus IN ('Recycled', 'Purged')
+GROUP BY Pool.Name;
+";
+ my $empty = $self->dbh_selectall_hashref($query, 'name');
+
foreach my $p (values %$all) {
- if ($p->{volmax}) {
+ if ($p->{volmax} > 0) { # mysql returns 0.0000
+ # we remove Recycled/Purged media from pool usage
+ if (defined $empty->{$p->{name}}) {
+ $p->{voltotal} -= $empty->{$p->{name}}->{size};
+ }
$p->{poolusage} = sprintf('%.2f', $p->{voltotal} * 100/ $p->{volmax}) ;
} else {
$p->{poolusage} = 0;
my $arg = $self->get_form(qw/media volstatus inchanger pool
slot volretention voluseduration
maxvoljobs maxvolfiles maxvolbytes
+ qcomment recyclepool
/);
unless ($arg->{media}) {
}, "command.tpl");
+ my @q;
+ my $media = $self->dbh_quote($arg->{media});
+
my $loc = CGI::param('location') || '';
if ($loc) {
- my $media = $self->dbh_quote($arg->{media});
$loc = $self->dbh_quote($loc); # is checked by db
- my $query = "
+ push @q, "LocationId=(SELECT LocationId FROM Location WHERE Location=$loc)";
+ }
+ if ($arg->{recyclepool}) {
+ push @q, "RecyclePoolId=(SELECT PoolId FROM Pool WHERE Name='$arg->{recyclepool}')";
+ }
+ if (!$arg->{qcomment}) {
+ $arg->{qcomment} = "''";
+ }
+ push @q, "Comment=$arg->{qcomment}";
+
+
+ my $query = "
UPDATE Media
- SET LocationId=(SELECT LocationId FROM Location WHERE Location=$loc)
+ SET " . join (',', @q) . "
WHERE Media.VolumeName = $media
";
- $self->dbh_do($query);
- }
+ $self->dbh_do($query);
$self->update_media();
}
$query = "
SELECT Time AS time, LogText AS log
- FROM Log
- WHERE JobId = $arg->{jobid}
- ORDER BY Time
+ FROM Log INNER JOIN Job ON (Job.JobId = Log.JobId)
+ WHERE Log.JobId = $arg->{jobid}
+ OR ( Log.JobId = 0
+ AND Log.Time >= Job.StartTime
+ AND Log.Time <= COALESCE(Job.EndTime, Now())
+ )
+ ORDER BY LogId
";
+
my $log = $self->dbh_selectall_arrayref($query);
unless ($log) {
return $self->error("Can't get log for jobid $arg->{jobid}");