From 6906aa3bb12b4382d23d9f9237ee6d1df195dfae Mon Sep 17 00:00:00 2001 From: Eric Bollengier Date: Thu, 31 Aug 2006 19:10:03 +0000 Subject: [PATCH] ebl Add FileSet view action ebl Add view fileset to job_zoom git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3390 91ce42f0-d328-0410-95d8-f526ca767f89 --- gui/bweb/ReleaseNotes | 4 ++ gui/bweb/cgi/bweb.pl | 3 ++ gui/bweb/lib/Bconsole.pm | 18 +++++++ gui/bweb/lib/Bweb.pm | 78 ++++++++++++++++++++++--------- gui/bweb/tpl/display_job_zoom.tpl | 9 ++++ gui/bweb/tpl/fileset_view.tpl | 20 ++++++++ 6 files changed, 111 insertions(+), 21 deletions(-) create mode 100644 gui/bweb/tpl/fileset_view.tpl diff --git a/gui/bweb/ReleaseNotes b/gui/bweb/ReleaseNotes index 4b67fcc462..2a0d9c1e61 100644 --- a/gui/bweb/ReleaseNotes +++ b/gui/bweb/ReleaseNotes @@ -1,5 +1,9 @@ Release Notes for bweb 1.39.20 +2006/08/31: + - Add FileSet view action + - Add view fileset to job_zoom + 2006/08/26: - Add more graphics o job avg size/days diff --git a/gui/bweb/cgi/bweb.pl b/gui/bweb/cgi/bweb.pl index 2ca7f820e8..83cbab6852 100755 --- a/gui/bweb/cgi/bweb.pl +++ b/gui/bweb/cgi/bweb.pl @@ -355,6 +355,9 @@ if ($action eq 'begin') { # main display } elsif ($action eq 'delete') { $bweb->delete(); +} elsif ($action eq 'fileset_view') { + $bweb->fileset_view(); + } else { $bweb->error("Sorry, this action don't exist"); } diff --git a/gui/bweb/lib/Bconsole.pm b/gui/bweb/lib/Bconsole.pm index 6594384ea9..4c61330c2e 100644 --- a/gui/bweb/lib/Bconsole.pm +++ b/gui/bweb/lib/Bconsole.pm @@ -277,6 +277,24 @@ sub update_slots 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) = @_; diff --git a/gui/bweb/lib/Bweb.pm b/gui/bweb/lib/Bweb.pm index 627a1149ab..d056cae53d 100644 --- a/gui/bweb/lib/Bweb.pm +++ b/gui/bweb/lib/Bweb.pm @@ -1351,6 +1351,7 @@ sub get_form type => 1, ); my %opt_p = ( # option with path + fileset=> 1, mtxcmd => 1, precmd => 1, device => 1, @@ -1449,7 +1450,6 @@ FROM FileSet $ret{db_filesets} = [sort {lc($a->{fileset}) cmp lc($b->{fileset}) } values %$filesets] ; - } if ($what{db_jobnames}) { @@ -1462,7 +1462,6 @@ FROM Job $ret{db_jobnames} = [sort {lc($a->{jobname}) cmp lc($b->{jobname}) } values %$jobnames] ; - } if ($what{db_devices}) { @@ -1475,7 +1474,6 @@ FROM Device $ret{db_devices} = [sort {lc($a->{name}) cmp lc($b->{name}) } values %$devices] ; - } return \%ret; @@ -1485,9 +1483,10 @@ sub display_graph { 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 @@ sub ach_edit $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 @@ sub ach_add 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 @@ sub delete 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 @@ sub update_slots return $self->error("Bad autochanger name"); } - my $b = new Bconsole(pref => $self->{info}); + my $b = $self->get_bconsole(); print "
" . $b->update_slots($ach) . "
"; } @@ -2904,6 +2905,7 @@ sub label_barcodes pool => 'Scratch', slots => $slots) ; print ""; + $b->close(); } sub purge @@ -2912,6 +2914,10 @@ sub purge 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 @@ sub purge 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 @@ sub cancel_job 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 @@ sub cancel_job }, "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 @@ sub enable_disable_job 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 @@ sub enable_disable_job }, "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_parse_job 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_mod 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 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) diff --git a/gui/bweb/tpl/display_job_zoom.tpl b/gui/bweb/tpl/display_job_zoom.tpl index 0e11d747f8..5a37874acd 100644 --- a/gui/bweb/tpl/display_job_zoom.tpl +++ b/gui/bweb/tpl/display_job_zoom.tpl @@ -41,6 +41,15 @@ + +
+ + +
+ diff --git a/gui/bweb/tpl/fileset_view.tpl b/gui/bweb/tpl/fileset_view.tpl new file mode 100644 index 0000000000..68f4343a45 --- /dev/null +++ b/gui/bweb/tpl/fileset_view.tpl @@ -0,0 +1,20 @@ +
+

+ FileSet +

+
+
+ + included What is included : +
+
+
+ + excluded What is excluded : +
+
+
+ +Tips: Warning, this is the current fileset, it could have change... + +
-- 2.39.5