[pve-devel] [PATCH 5/5] Implemented --remote option to zfs helper scripts, allowing local vs remote execution.
Pablo Ruiz García
pablo.ruiz at gmail.com
Sun Apr 13 02:08:14 CEST 2014
Signed-off-by: Pablo Ruiz García <pablo.ruiz at gmail.com>
---
zfs-helpers/comstar | 12 ++++++++++--
zfs-helpers/iet | 20 ++++++++++++++++----
zfs-helpers/istgt | 36 +++++++++++++++++++++---------------
3 files changed, 47 insertions(+), 21 deletions(-)
diff --git a/zfs-helpers/comstar b/zfs-helpers/comstar
index 67a6b43..3c9c4bf 100644
--- a/zfs-helpers/comstar
+++ b/zfs-helpers/comstar
@@ -15,6 +15,7 @@ my $PORTAL = $ENV{'PMXVAR_PORTAL'};
my $SSHKEY = $ENV{'PMXVAR_SSHKEY'};
my @ssh_opts = ('-o', 'BatchMode=yes');
my @ssh_cmd = ('/usr/bin/ssh', @ssh_opts);
+my $use_ssh = 0;
my $get_lun_cmd_map = sub {
my ($method) = @_;
@@ -72,7 +73,9 @@ sub run_lun_command {
$target = 'root@' . $PORTAL;
- my $cmd = [@ssh_cmd, '-i', "$SSHKEY", $target, $luncmd, $lunmethod, @params];
+ my $cmd = $use_ssh ?
+ [@ssh_cmd, '-i', "$SSHKEY", $target, $luncmd, $lunmethod, @params]
+ : [$luncmd, $lunmethod, @params];
Common::run_command($cmd, outfunc => $output, timeout => $timeout);
@@ -104,10 +107,15 @@ sub run_lun_command {
my $command = shift;
+if ($command eq "--remote") {
+ $use_ssh = 1;
+ $command = shift;
+}
+
die "No command specified." if !$command;
die "No POOL name available at env." if !$POOL;
die "No PORTAL address available at env." if !$PORTAL;
-die "No SSH key file path available at env." if !$SSHKEY;
+die "No SSH key file path available at env." if $use_ssh && !$SSHKEY;
run_lun_command($command, @ARGV);
diff --git a/zfs-helpers/iet b/zfs-helpers/iet
index f178694..3d54b80 100644
--- a/zfs-helpers/iet
+++ b/zfs-helpers/iet
@@ -39,6 +39,7 @@ my $SSHKEY = $ENV{'PMXVAR_SSHKEY'};
my @ssh_opts = ('-o', 'BatchMode=yes');
my @ssh_cmd = ('/usr/bin/ssh', @ssh_opts);
my @scp_cmd = ('/usr/bin/scp', @ssh_opts);
+my $use_ssh = 0;
my $ietadm = '/usr/sbin/ietadm';
sub get_base {
@@ -69,9 +70,13 @@ my $execute_command = sub {
$target = "root@$PORTAL";
if ($exec eq 'scp') {
- $cmd = [@scp_cmd, '-i', "$SSHKEY", $method, "$target:$params[0]"];
+ $cmd = $use_ssh ?
+ [@scp_cmd, '-i', "$SSHKEY", $method, "$target:$params[0]"]
+ : [ 'cp', $method, "$target:$params[0]" ];
} else {
- $cmd = [@ssh_cmd, '-i', "$SSHKEY", $target, $method, @params];
+ $cmd = $use_ssh ?
+ [@ssh_cmd, '-i', "$SSHKEY", $target, $method, @params]
+ : [ $target, $method, @params ];
}
eval {
@@ -113,7 +118,9 @@ my $read_config = sub {
$target = 'root@' . $PORTAL;
- my $cmd = [@ssh_cmd, '-i', "$SSHKEY", $target, $luncmd, $CONFIG_FILE];
+ my $cmd = $use_ssh ?
+ [@ssh_cmd, '-i', "$SSHKEY", $target, $luncmd, $CONFIG_FILE]
+ : [ $luncmd, $CONFIG_FILE ];
eval {
Common::run_command($cmd, outfunc => $output, errfunc => $errfunc, timeout => $timeout);
};
@@ -477,10 +484,15 @@ sub run_lun_command {
my $command = shift;
+if ($command eq "--remote") {
+ $use_ssh = 1;
+ $command = shift;
+}
+
die "No command specified." if !$command;
die "No POOL name available at env." if !$POOL;
die "No PORTAL address available at env." if !$PORTAL;
-die "No SSH key file path available at env." if !$SSHKEY;
+die "No SSH key file path available at env." if $use_ssh && !$SSHKEY;
run_lun_command(undef, $command, @ARGV);
diff --git a/zfs-helpers/istgt b/zfs-helpers/istgt
index 7757b5b..1d4591b 100644
--- a/zfs-helpers/istgt
+++ b/zfs-helpers/istgt
@@ -39,6 +39,7 @@ my $SSHKEY = $ENV{'PMXVAR_SSHKEY'};
my @ssh_opts = ('-o', 'BatchMode=yes');
my @ssh_cmd = ('/usr/bin/ssh', @ssh_opts);
my @scp_cmd = ('/usr/bin/scp', @ssh_opts);
+my $use_ssh = 0;
#Current SIGHUP reload limitations (http://www.peach.ne.jp/archives/istgt/):
#
@@ -90,7 +91,9 @@ my $read_config = sub {
my $daemon = 0;
foreach my $config (@CONFIG_FILES) {
$err = undef;
- my $cmd = [@ssh_cmd, '-i', "$SSHKEY", $target, $luncmd, $config];
+ my $cmd = $use_ssh ?
+ [@ssh_cmd, '-i', "$SSHKEY", $target, $luncmd, $config]
+ : [ $luncmd, $config];
eval {
run_command($cmd, outfunc => $output, errfunc => $errfunc, timeout => $timeout);
};
@@ -425,18 +428,10 @@ my $add_view = sub {
if (@params && $params[0] eq 'restart') {
@params = ('restart', '1>&2', '>', '/dev/null');
- $cmdmap = {
- cmd => 'ssh',
- method => $DAEMON,
- params => \@params,
- };
+ $cmdmap = { cmd => 'ssh', method => $DAEMON, params => \@params };
} else {
@params = ('-HUP', '$(cat '. "$SETTINGS->{pidfile})");
- $cmdmap = {
- cmd => 'ssh',
- method => 'kill',
- params => \@params,
- };
+ $cmdmap = { cmd => 'ssh', method => 'kill', params => \@params };
}
return $cmdmap;
@@ -523,9 +518,13 @@ sub run_lun_command {
$method = $res->{method};
@params = @{$res->{params}};
if ($res->{cmd} eq 'scp') {
- $cmd = [@scp_cmd, '-i', "$SSHKEY", $method, "$target:$params[0]"];
+ $cmd = $use_ssh ?
+ [@scp_cmd, '-i', "$SSHKEY", $method, "$target:$params[0]"]
+ : [ 'cp', $method, "$target:$params[0]" ];
} else {
- $cmd = [@ssh_cmd, '-i', "$SSHKEY", $target, $method, @params];
+ $cmd = $use_ssh ?
+ [@ssh_cmd, '-i', "$SSHKEY", $target, $method, @params]
+ : [ $method, @params];
}
} else {
return $res;
@@ -533,7 +532,9 @@ sub run_lun_command {
} else {
$luncmd = $cmdmap->{cmd};
$method = $cmdmap->{method};
- $cmd = [@ssh_cmd, '-i', "$SSHKEY", $target, $luncmd, $method, @params];
+ $cmd = $use_ssh ?
+ [@ssh_cmd, '-i', "$SSHKEY", $target, $luncmd, $method, @params]
+ : [ $luncmd, $method, @params] ;
}
eval {
@@ -583,10 +584,15 @@ sub get_base {
my $command = shift;
+if ($command eq "--remote") {
+ $use_ssh = 1;
+ $command = shift;
+}
+
die "No command specified." if !$command;
die "No POOL name available at env." if !$POOL;
die "No PORTAL address available at env." if !$PORTAL;
-die "No SSH key file path available at env." if !$SSHKEY;
+die "No SSH key file path available at env." if $use_ssh && !$SSHKEY;
run_lun_command(undef, $command, @ARGV);
--
1.7.1
More information about the pve-devel
mailing list