pref => $arg{pref}, # Pref object
bconsole => undef, # Expect object
log_stdout => $arg{log_stdout} || 0,
- timeout => $arg{debug} || 10,
+ timeout => $arg{timeout} || 20,
debug => $arg{debug} || 0,
};
return 1;
}
+sub log_stdout
+{
+ my ($self, $how) = @_;
+
+ if ($self->{bconsole}) {
+ $self->{bconsole}->log_stdout($how);
+ }
+
+ $self->{log_stdout} = $how;
+}
+
sub connect
{
my ($self) = @_;
return $self->before();
}
-sub send_cmd_with_drive
-{
- my ($self, $cmd, $drive) = @_;
- $drive = $drive || '0';
-
- unless ($self->connect()) {
- return '';
- }
- $self->send("$cmd\n");
- $self->expect_it('-re', '\[0\]\s*:');
-
- $self->send("$drive\n");
- $self->expect_it('-re', '[0-9]');
- $self->{bconsole}->clear_accum();
- $self->expect_it('-re',qr/^[*]/);
- return $self->before();
-}
-
sub label_barcodes
{
my ($self, %arg) = @_;
$arg{drive} = $arg{drive} || '0' ;
$arg{pool} = $arg{pool} || 'Scratch';
- my $cmd = "label barcodes pool=\"$arg{pool}\" storage=\"$arg{storage}\"";
+ my $cmd = "label barcodes drive=$arg{drive} pool=\"$arg{pool}\" storage=\"$arg{storage}\"";
if ($arg{slots}) {
$cmd .= " slots=$arg{slots}";
}
$self->send("$cmd\n");
- $self->expect_it('-re', '\[0\]\s*:');
- $self->send("$arg{drive}\n");
$self->expect_it('-re', '[?].+\)\s*:');
my $res = $self->before();
$self->send("yes\n");
sub update_slots
{
my ($self, $storage, $drive) = @_;
+ $drive = $drive || 0;
+
+ return $self->send_cmd("update slots storage=$storage drive=$drive");
+}
+
+sub get_fileset
+{
+ my ($self, $fs) = @_;
+
+ my $out = $self->send_cmd("show fileset=\"$fs\"");
- return $self->send_cmd_with_drive("update slots storage=$storage", $drive);
+ 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
return split(/\r\n/, $self->send_cmd(".clients"));
}
+sub list_pool
+{
+ my ($self) = @_;
+ return split(/\r\n/, $self->send_cmd(".pools"));
+}
+
use Time::ParseDate qw/parsedate/;
use POSIX qw/strftime/;
use Data::Dumper;
print "job : ", join(',', $c->list_job()), "\n";
print "storage : ", join(',', $c->list_storage()), "\n";
#print "prune : " . $c->prune_volume('000001'), "\n";
-#print "update : " . $c->send_cmd_with_drive('update slots storage=SDLT-1-2'), "\n";
+#print "update : " . $c->send_cmd('update slots storage=SDLT-1-2, drive=0'), "\n";
#print "label : ", join(',', $c->label_barcodes(storage => 'SDLT-1-2',
# slots => 6,
# drive => 0)), "\n";