From: Eric B. <ri...@us...> - 2006-08-31 19:10:08
|
Update of /cvsroot/bacula/gui/bweb/lib In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv27749/lib Modified Files: Bconsole.pm Bweb.pm Log Message: ebl Add FileSet view action ebl Add view fileset to job_zoom Index: Bweb.pm =================================================================== RCS file: /cvsroot/bacula/gui/bweb/lib/Bweb.pm,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- Bweb.pm 29 Aug 2006 21:51:57 -0000 1.19 +++ Bweb.pm 31 Aug 2006 19:10:03 -0000 1.20 @@ -1351,6 +1351,7 @@ type => 1, ); my %opt_p = ( # option with path + fileset=> 1, mtxcmd => 1, precmd => 1, device => 1, @@ -1449,7 +1450,6 @@ $ret{db_filesets} = [sort {lc($a->{fileset}) cmp lc($b->{fileset}) } values %$filesets] ; - } if ($what{db_jobnames}) { @@ -1462,7 +1462,6 @@ $ret{db_jobnames} = [sort {lc($a->{jobname}) cmp lc($b->{jobname}) } values %$jobnames] ; - } if ($what{db_devices}) { @@ -1475,7 +1474,6 @@ $ret{db_devices} = [sort {lc($a->{name}) cmp lc($b->{name}) } values %$devices] ; - } return \%ret; @@ -1485,9 +1483,10 @@ { my ($self) = @_; - my $fields = $self->get_form(qw/age level status clients filesets graph gtype type - db_clients limit db_filesets width height - qclients qfilesets qjobnames db_jobnames/); + my $fields = $self->get_form(qw/age level status clients filesets + graph gtype type + db_clients limit db_filesets width height + qclients qfilesets qjobnames db_jobnames/); my $url = CGI::url(-full => 0, @@ -2728,7 +2727,8 @@ $ach->{drives} = [ map { { name => $_, index => $i++ } } @{$ach->{drive_name}} ] ; - my $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); + my @storages = $b->list_storage() ; $ach->{devices} = [ map { { name => $_ } } @storages ]; @@ -2762,7 +2762,7 @@ my ($self) = @_; my $arg = $self->get_form('ach', 'mtxcmd', 'device', 'precmd'); - my $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); my @storages = $b->list_storage() ; unless ($arg->{ach}) { @@ -2805,9 +2805,10 @@ my ($self) = @_; my $arg = $self->get_form('jobid'); - my $b = new Bconsole(pref => $self->{info}); - if ($arg->{jobid}) { + my $b = $self->get_bconsole(); + my $ret = $b->send_cmd("delete jobid=\"$arg->{jobid}\""); + $self->display({ content => $b->send_cmd("delete jobid=\"$arg->{jobid}\""), title => "Delete a job ", @@ -2825,7 +2826,7 @@ return $self->error("Bad autochanger name"); } - my $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); print "<pre>" . $b->update_slots($ach) . "</pre>"; } @@ -2904,6 +2905,7 @@ pool => 'Scratch', slots => $slots) ; print "</pre>"; + $b->close(); } sub purge @@ -2912,6 +2914,10 @@ my @volume = CGI::param('media'); + unless (@volume) { + return $self->error("Can't get media selection"); + } + my $b = new Bconsole(pref => $self->{info}, timeout => 60); $self->display({ @@ -2919,20 +2925,27 @@ title => "Purge media", name => "purge volume=" . join(' volume=', @volume), }, "command.tpl"); + $b->close(); } sub prune { my ($self) = @_; + my @volume = CGI::param('media'); + unless (@volume) { + return $self->error("Can't get media selection"); + } + my $b = new Bconsole(pref => $self->{info}, timeout => 60); - my @volume = CGI::param('media'); $self->display({ content => $b->prune_volume(@volume), title => "Prune media", name => "prune volume=" . join(' volume=', @volume), }, "command.tpl"); + + $b->close(); } sub cancel_job @@ -2941,10 +2954,10 @@ my $arg = $self->get_form('jobid'); unless ($arg->{jobid}) { - return $self->error('Bad jobid'); + return $self->error("Can't get jobid"); } - my $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); $self->display({ content => $b->cancel($arg->{jobid}), title => "Cancel job", @@ -2952,14 +2965,31 @@ }, "command.tpl"); } +sub fileset_view +{ + # Warning, we display current fileset + my ($self) = @_; + + my $arg = $self->get_form('fileset'); + + if ($arg->{fileset}) { + my $b = $self->get_bconsole(); + my $ret = $b->get_fileset($arg->{fileset}); + $self->display({ fileset => $arg->{fileset}, + %$ret, + }, "fileset_view.tpl"); + } else { + $self->error("Can't get fileset name"); + } +} + sub director_show_sched { my ($self) = @_ ; my $arg = $self->get_form('days'); - my $b = new Bconsole(pref => $self->{info}) ; - + my $b = $self->get_bconsole(); my $ret = $b->director_get_sched( $arg->{days} ); $self->display({ @@ -2977,7 +3007,7 @@ return $self->error("Can't find job name"); } - my $b = new Bconsole(pref => $self->{info}) ; + my $b = $self->get_bconsole(); my $cmd; if ($what) { @@ -2993,10 +3023,16 @@ }, "command.tpl"); } +sub get_bconsole +{ + my ($self) = @_; + return new Bconsole(pref => $self->{info}); +} + sub run_job_select { my ($self) = @_; - $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); my $joblist = [ map { { name => $_ } } $b->list_job() ]; @@ -3031,7 +3067,7 @@ sub run_job_mod { my ($self) = @_; - $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); my $job = CGI::param('job') || ''; @@ -3058,7 +3094,7 @@ sub run_job { my ($self) = @_; - $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); my $jobs = [ map {{ name => $_ }} $b->list_job() ]; @@ -3070,7 +3106,7 @@ sub run_job_now { my ($self) = @_; - $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); # TODO: check input (don't use pool, level) Index: Bconsole.pm =================================================================== RCS file: /cvsroot/bacula/gui/bweb/lib/Bconsole.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Bconsole.pm 24 Aug 2006 19:00:40 -0000 1.3 +++ Bconsole.pm 31 Aug 2006 19:10:03 -0000 1.4 @@ -277,6 +277,24 @@ return $self->send_cmd_with_drive("update slots storage=$storage", $drive); } +sub get_fileset +{ + my ($self, $fs) = @_; + + my $out = $self->send_cmd("show fileset=\"$fs\""); + + my $ret = {}; + + foreach my $l (split(/\r\n/, $out)) { + # I /usr/local + if ($l =~ /^\s+([I|E])\s+(.+)$/) { # include + push @{$ret->{$1}}, { file => $2 }; + } + } + + return $ret; +} + sub list_job { my ($self) = @_; |