has ssh => (is => 'ro', default => sub { {} });
sub handle_create {
- my ($self, $on) = @_;
- my ($kid_in, $kid_out, $kid_pid) = $self->_open($on);
+ my ($self, $on, %args) = @_;
+ my $log_level = $args{log_level}||'info';
+ my ($kid_in, $kid_out, $kid_pid) = $self->_open($on, $log_level);
$kid_in->print(io('maint/mk-fat |')->all, "__END__\n");
+ my $up = <$kid_out>;
+ die [ failure => "Garbled response from child: $up" ]
+ unless $up eq "UP\n";
my $connection = Tak::ConnectionService->new(
read_fh => $kid_out, write_fh => $kid_in,
listening_service => Tak::Router->new
}
sub _open {
- my ($self, $on) = @_;
+ my ($self, $on, @args) = @_;
unless ($on) {
- my $kid_pid = IPC::Open2::open2(my $kid_out, my $kid_in, $^X, '-')
+ my $kid_pid = IPC::Open2::open2(my $kid_out, my $kid_in, $^X, '-', '-', @args)
or die "Couldn't open2 child: $!";
return ($kid_in, $kid_out, $kid_pid);
}
my $ssh = $self->ssh->{$on} ||= Net::OpenSSH->new($on);
$ssh->error and
die "Couldn't establish ssh connection: ".$ssh->error;
- return $ssh->open2('perl','-');
+ return $ssh->open2('perl','-', $on, @args);
}
sub start_connection_request {