mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-20 22:26:23 +00:00
scstadmin: Merge trunk r6752
git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.1.x@6753 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -2,7 +2,7 @@ ifndef PREFIX
|
||||
PREFIX=/usr/local
|
||||
endif
|
||||
|
||||
MODULE_VERSION = 0.9.10
|
||||
MODULE_VERSION = 1.0.0
|
||||
TOOL = scstadmin
|
||||
|
||||
SBINDIR := $(PREFIX)/sbin
|
||||
@@ -13,18 +13,20 @@ install install_vendor: all
|
||||
$(MAKE) -C scst-$(MODULE_VERSION) $@ DESTDIR=$(DESTDIR)
|
||||
install -d $(DESTDIR)$(SBINDIR)
|
||||
install -m 755 $(TOOL) $(DESTDIR)$(SBINDIR)
|
||||
regex="s|%INSTALLSITELIB%|$$(make -sC scst-$(MODULE_VERSION) print-INSTALLSITELIB | grep -v ^make)|"; echo "$${regex}"; sed -i "$${regex}" $(DESTDIR)$(SBINDIR)/$(TOOL)
|
||||
|
||||
uninstall:
|
||||
-rm -f $(DESTDIR)$(SBINDIR)/$(TOOL)
|
||||
$(MAKE) -C scst-$(MODULE_VERSION) uninstall
|
||||
|
||||
perl-module:
|
||||
@cd ./scst-$(MODULE_VERSION); \
|
||||
perl Makefile.PL PREFIX=$(PREFIX);
|
||||
@cd ./scst-$(MODULE_VERSION) && \
|
||||
perl Makefile.PL PREFIX=$(PREFIX) && \
|
||||
printf '\nprint-%%:\n\t@echo '"'"'$$($$*)'"'"'\n' >> Makefile
|
||||
$(MAKE) -C scst-$(MODULE_VERSION)
|
||||
|
||||
test:
|
||||
$(MAKE) -C scst-$(MODULE_VERSION) test
|
||||
$(MAKE) -C scst-$(MODULE_VERSION) test #TEST_VERBOSE=1
|
||||
|
||||
clean:
|
||||
-$(MAKE) -C scst-$(MODULE_VERSION) clean
|
||||
|
||||
+4
-4
@@ -289,7 +289,7 @@ use vars qw(@ISA @EXPORT $VERSION);
|
||||
|
||||
use vars qw($TGT_TYPE_HARDWARE $TGT_TYPE_VIRTUAL);
|
||||
|
||||
$VERSION = '0.9.10';
|
||||
$VERSION = '1.0.0';
|
||||
|
||||
$TGT_TYPE_HARDWARE = 1;
|
||||
$TGT_TYPE_VIRTUAL = 2;
|
||||
@@ -2224,7 +2224,7 @@ sub addLun {
|
||||
my $o_string = "";
|
||||
foreach my $attribute (keys %{$attributes}) {
|
||||
my $value = $$attributes{$attribute};
|
||||
$o_string .= "$attribute=$value; ";
|
||||
$o_string .= "$attribute=$value;";
|
||||
}
|
||||
|
||||
$o_string =~ s/\s$//;
|
||||
@@ -2415,7 +2415,7 @@ sub replaceLun {
|
||||
my $o_string = "";
|
||||
foreach my $attribute (keys %{$attributes}) {
|
||||
my $value = $$attributes{$attribute};
|
||||
$o_string .= "$attribute=$value; ";
|
||||
$o_string .= "$attribute=$value;";
|
||||
}
|
||||
|
||||
$o_string =~ s/\s$//;
|
||||
@@ -4135,7 +4135,7 @@ sub openDevice {
|
||||
my $o_string = "";
|
||||
foreach my $attribute (keys %{$attributes}) {
|
||||
my $value = $$attributes{$attribute};
|
||||
$o_string .= "$attribute=$value; ";
|
||||
$o_string .= "$attribute=$value;";
|
||||
}
|
||||
|
||||
$o_string =~ s/\s$//;
|
||||
+2
-2
@@ -64,6 +64,6 @@ die("Creation of SCST object failed") if (!defined($SCST));
|
||||
|
||||
setup($SCST);
|
||||
|
||||
testRestoreConfig(File::Spec->catfile($testdir, "to-be-restored.conf"),
|
||||
File::Spec->catfile($testdir, "after-restore.conf"));
|
||||
testRestoreConfig(File::Spec->catfile($testdir, "06-to-be-restored.conf"),
|
||||
File::Spec->catfile($testdir, "06-after-restore.conf"));
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# Automatically generated by SCST Configurator v...
|
||||
|
||||
|
||||
HANDLER vdisk_fileio {
|
||||
DEVICE disk0 {
|
||||
filename /dev/scstadmin-regression-test-vdisk
|
||||
read_only 1
|
||||
}
|
||||
|
||||
DEVICE disk1 {
|
||||
filename /dev/scstadmin-regression-test-vdisk
|
||||
nv_cache 1
|
||||
}
|
||||
}
|
||||
|
||||
HANDLER vdisk_nullio {
|
||||
DEVICE nodev {
|
||||
dummy 1
|
||||
}
|
||||
}
|
||||
|
||||
TARGET_DRIVER scst_local {
|
||||
TARGET local {
|
||||
LUN 0 nodev
|
||||
|
||||
GROUP ig {
|
||||
LUN 0 disk0 {
|
||||
read_only 1
|
||||
}
|
||||
LUN 1 disk1
|
||||
|
||||
INITIATOR ini1
|
||||
|
||||
INITIATOR ini2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
#!perl
|
||||
|
||||
use strict;
|
||||
use Cwd qw(abs_path);
|
||||
use File::Basename;
|
||||
use File::Spec;
|
||||
use Test;
|
||||
|
||||
my $testdir;
|
||||
my $scstadmin_pm_dir;
|
||||
my $scstadmin_dir;
|
||||
my $scstadmin;
|
||||
my $redirect_file = "/tmp/07-output.txt";
|
||||
my $redirect;
|
||||
|
||||
BEGIN {
|
||||
unlink($redirect_file);
|
||||
$testdir = dirname(abs_path($0));
|
||||
$scstadmin_pm_dir = dirname($testdir);
|
||||
$scstadmin_dir = dirname($scstadmin_pm_dir);
|
||||
$scstadmin = File::Spec->catfile($scstadmin_dir, "scstadmin");
|
||||
unless(grep /blib/, @INC) {
|
||||
unshift(@INC, File::Spec->catdir($scstadmin_pm_dir, "lib"));
|
||||
}
|
||||
plan tests => 2;
|
||||
}
|
||||
|
||||
use Data::Dumper;
|
||||
use SCST::SCST;
|
||||
use File::Temp qw/tempfile/;
|
||||
|
||||
sub setup {
|
||||
my $SCST = shift;
|
||||
|
||||
my ($drivers, $errorString) = $SCST->drivers();
|
||||
my %drivers = map { $_ => 1 } @{$drivers};
|
||||
ok(exists($drivers{'scst_local'}));
|
||||
system("dd if=/dev/zero of=/dev/scstadmin-regression-test-vdisk bs=1M count=1 >/dev/null 2>&1");
|
||||
}
|
||||
|
||||
sub teardown {
|
||||
system("rm -f /dev/scstadmin-regression-test-vdisk");
|
||||
}
|
||||
|
||||
sub attributeTest {
|
||||
my $expected = shift;
|
||||
my $tmpfilename1 = File::Spec->catfile(File::Spec->tmpdir(),
|
||||
"scstadmin-test-07-$$-1");
|
||||
my $tmpfilename2 = File::Spec->catfile(File::Spec->tmpdir(),
|
||||
"scstadmin-test-07-$$-2");
|
||||
my $diff = File::Spec->catfile(File::Spec->tmpdir(),
|
||||
"scstadmin-test-07-$$-diff");
|
||||
|
||||
system("$scstadmin -clear_config -force -noprompt -no_lip $redirect");
|
||||
system("$scstadmin -open_dev nodev -handler vdisk_nullio -attributes dummy=1 $redirect");
|
||||
system("$scstadmin -open_dev disk0 -handler vdisk_fileio -attributes filename=/dev/scstadmin-regression-test-vdisk,read_only=1 $redirect");
|
||||
system("$scstadmin -open_dev disk1 -handler vdisk_fileio -attributes filename=/dev/scstadmin-regression-test-vdisk,nv_cache=1 $redirect");
|
||||
system("$scstadmin -driver scst_local -add_target local $redirect");
|
||||
system("$scstadmin -driver scst_local -target local " .
|
||||
"-add_lun 0 -device nodev $redirect");
|
||||
system("$scstadmin -driver scst_local -target local -add_group ig " .
|
||||
"$redirect");
|
||||
system("$scstadmin -driver scst_local -target local -group ig " .
|
||||
"-add_init ini1 $redirect");
|
||||
system("$scstadmin -driver scst_local -target local -group ig " .
|
||||
"-add_init ini2 $redirect");
|
||||
system("$scstadmin -driver scst_local -target local -group ig " .
|
||||
"-add_lun 0 -device disk0 $redirect");
|
||||
system("$scstadmin -driver scst_local -target local -group ig " .
|
||||
"-add_lun 1 -device disk1 $redirect");
|
||||
system("$scstadmin -write_config $tmpfilename1 >/dev/null");
|
||||
system("awk 'BEGIN { t = 0 } /^# Automatically generated by SCST Configurator v/ { \$0 = \"# Automatically generated by SCST Configurator v...\" } /^TARGET_DRIVER.*{\$/ { if (\$0 != \"TARGET_DRIVER scst_local {\") t = 1 } /^}\$/ { if (t == 1) t = 2 } /^\$/ { if (t == 2) { t = 3 } } /^./ { if (t == 3) { t = 0 } } { if (t == 0) print }' <$tmpfilename1 >$tmpfilename2");
|
||||
my $compare_result = system("diff -u $tmpfilename2 $expected >$diff");
|
||||
ok($compare_result, 0);
|
||||
if ($compare_result == 0) {
|
||||
unlink($tmpfilename2);
|
||||
unlink($tmpfilename1);
|
||||
}
|
||||
}
|
||||
|
||||
my $_DEBUG_ = 0;
|
||||
if ($_DEBUG_) {
|
||||
$redirect = ">>$redirect_file";
|
||||
open(my $logfile, '>>', $redirect_file);
|
||||
select $logfile;
|
||||
} else {
|
||||
$redirect = ">/dev/null";
|
||||
}
|
||||
|
||||
my $SCST = eval { new SCST::SCST($_DEBUG_) };
|
||||
die("Creation of SCST object failed") if (!defined($SCST));
|
||||
|
||||
setup($SCST);
|
||||
|
||||
attributeTest(File::Spec->catfile($testdir, "07-result.conf"));
|
||||
|
||||
teardown();
|
||||
@@ -0,0 +1,60 @@
|
||||
# Automatically generated by SCST Configurator v...
|
||||
|
||||
|
||||
HANDLER vdisk_fileio {
|
||||
DEVICE disk01 {
|
||||
filename /proc/cpuinfo
|
||||
}
|
||||
}
|
||||
|
||||
TARGET_DRIVER scst_local {
|
||||
TARGET local1 {
|
||||
session_name local1_session
|
||||
|
||||
LUN 0 disk01
|
||||
LUN 1 disk01
|
||||
|
||||
GROUP group_without_luns_with_attrs {
|
||||
|
||||
addr_method FLAT
|
||||
}
|
||||
|
||||
GROUP initiator_group {
|
||||
LUN 0 disk01
|
||||
LUN 1 disk01 {
|
||||
read_only 1
|
||||
}
|
||||
LUN 2 disk01
|
||||
|
||||
INITIATOR ini1
|
||||
|
||||
INITIATOR ini2
|
||||
|
||||
INITIATOR ini3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DEVICE_GROUP dg01 {
|
||||
DEVICE disk01
|
||||
|
||||
TARGET_GROUP tg01a {
|
||||
group_id 1
|
||||
preferred 1
|
||||
state active
|
||||
|
||||
TARGET tgt_a {
|
||||
rel_tgt_id 2
|
||||
}
|
||||
}
|
||||
|
||||
TARGET_GROUP tg01b {
|
||||
group_id 2
|
||||
state active
|
||||
|
||||
TARGET tgt_b {
|
||||
rel_tgt_id 3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
# Automatically generated by SCST Configurator v3.0.0-pre2.
|
||||
|
||||
|
||||
HANDLER vdisk_fileio {
|
||||
DEVICE disk01 {
|
||||
filename /proc/cpuinfo
|
||||
}
|
||||
}
|
||||
|
||||
TARGET_DRIVER ib_srpt {
|
||||
TARGET no_such_target {
|
||||
enabled 1
|
||||
}
|
||||
}
|
||||
|
||||
TARGET_DRIVER scst_local {
|
||||
TARGET local1 {
|
||||
session_name local1_session
|
||||
|
||||
LUN 0 disk01
|
||||
LUN 1 disk01
|
||||
|
||||
GROUP initiator_group {
|
||||
LUN 0 disk01
|
||||
LUN 1 disk01 {
|
||||
read_only 1
|
||||
}
|
||||
LUN 2 disk01
|
||||
|
||||
INITIATOR ini1
|
||||
|
||||
INITIATOR ini2
|
||||
|
||||
INITIATOR ini3
|
||||
}
|
||||
|
||||
GROUP group_without_luns_with_attrs {
|
||||
|
||||
addr_method FLAT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DEVICE_GROUP dg01 {
|
||||
DEVICE disk01
|
||||
|
||||
TARGET_GROUP tg01a {
|
||||
group_id 1
|
||||
preferred 1
|
||||
state active
|
||||
|
||||
TARGET tgt_a {
|
||||
rel_tgt_id 2
|
||||
}
|
||||
}
|
||||
|
||||
TARGET_GROUP tg01b {
|
||||
group_id 2
|
||||
preferred 0
|
||||
state active
|
||||
|
||||
TARGET tgt_b {
|
||||
rel_tgt_id 3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,8 +204,10 @@ Target Driver Operations
|
||||
-issue_lip [<t>]
|
||||
[-driver <driver>] : Issue a LIP for a specific driver/target or for
|
||||
all drivers and targets.
|
||||
-no_lip : Don\'t automatically issue a LIP after applying
|
||||
-lip : Issue a LIP after having applied FC
|
||||
configuration changes.
|
||||
-no_lip : Don\'t automatically issue a LIP after having
|
||||
applied FC configuration changes.
|
||||
|
||||
Options
|
||||
-nonkey : When writing a config file or listing attributes,
|
||||
@@ -240,12 +242,27 @@ Examples:
|
||||
EndUsage
|
||||
}
|
||||
|
||||
use SCST::SCST 0.9.10;
|
||||
use strict;
|
||||
use Cwd qw(abs_path);
|
||||
use File::Basename;
|
||||
use File::Spec;
|
||||
use Test;
|
||||
|
||||
BEGIN {
|
||||
my $site_lib = '%INSTALLSITELIB%';
|
||||
if ($site_lib =~ '^%') {
|
||||
my $scstadmindir = dirname(abs_path($0));
|
||||
$site_lib = File::Spec->catdir($scstadmindir, "scst-1.0.0",
|
||||
"blib", "lib");
|
||||
}
|
||||
unshift(@INC, $site_lib);
|
||||
}
|
||||
|
||||
use SCST::SCST 1.0.0;
|
||||
use Getopt::Long;
|
||||
use IO::File;
|
||||
use IO::Dir;
|
||||
use POSIX;
|
||||
use strict;
|
||||
|
||||
my $_DEF_CONFIG_ = '/etc/scst.conf';
|
||||
|
||||
@@ -349,6 +366,7 @@ sub getArgs {
|
||||
my $enableTarget;
|
||||
my $disableTarget;
|
||||
my $issueLip;
|
||||
my $lip;
|
||||
my $noLip;
|
||||
|
||||
my $handler;
|
||||
@@ -444,6 +462,7 @@ sub getArgs {
|
||||
'enable_target=s' => \$enableTarget,
|
||||
'disable_target=s' => \$disableTarget,
|
||||
'issue_lip:s' => \$issueLip,
|
||||
'lip' => \$lip,
|
||||
'no_lip' => \$noLip,
|
||||
|
||||
'handler=s' => \$handler,
|
||||
@@ -478,9 +497,10 @@ sub getArgs {
|
||||
$_NOPROMPT_ = TRUE if (defined($_NOPROMPT_));
|
||||
$_CONT_ON_ERR_ = TRUE if (defined($_CONT_ON_ERR_));
|
||||
|
||||
$force = TRUE if (defined($force));
|
||||
$force = TRUE if (defined($force));
|
||||
$nonkey = TRUE if (defined($nonkey));
|
||||
$noLip = TRUE if (defined($noLip));
|
||||
$lip = TRUE if (defined($lip));
|
||||
$noLip = TRUE if (defined($noLip));
|
||||
|
||||
my $query_mode = defined($listHandler) || defined($listDevice) || defined($listDeviceGroup) || defined($listTargetGroup) ||
|
||||
defined($listDriver) || defined($listTarget) || defined($listGroup) || defined($listSessions) ||
|
||||
@@ -707,25 +727,104 @@ sub getArgs {
|
||||
}
|
||||
}
|
||||
|
||||
return ($applyConfig, $clearConfig, $writeConfig, $checkConfig,
|
||||
$listScstAttr, $listHandler, $listDevice, $listDeviceGroup, $listTargetGroup, $listDriver, $listTarget, $listGroup,
|
||||
$listSessions, $listHandlerAttr, $listDeviceAttr, $listDriverAttr, $listTargetAttr,
|
||||
$listDeviceGroupAttr, $listTargetGroupAttr, $listTargetGroupTargetAttr,
|
||||
$listGroupAttr, $listLunAttr, $listInitiatorAttr, $setScstAttr, $setHandlerAttr,
|
||||
$setDeviceAttr, $setDriverAttr, $setTargetAttr, $setGroupAttr, $setLunAttr, $setInitiatorAttr,
|
||||
$setDeviceGroupAttr, $setTargetGroupAttr, $setTargetGroupTargetAttr,
|
||||
$addDriverAttr, $addTargetAttr, $remDriverAttr, $remTargetAttr,
|
||||
$openDev, $closeDev, $resyncDev,
|
||||
$addDevGroup, $removeDevGroup, $addDevGroupDevice, $removeDevGroupDevice,
|
||||
$addTargetGroup, $removeTargetGroup, $addTargetGroupTarget, $removeTargetGroupTarget,
|
||||
$addTarget, $removeTarget,
|
||||
$addGroup, $removeGroup,
|
||||
$addInitiator, $removeInitiator, $moveInitiator, $clearInitiators,
|
||||
$addLun, $removeLun, $replaceLun, $clearLuns,
|
||||
$enableTarget, $disableTarget, $issueLip, $noLip,
|
||||
$handler, \%_attributes,
|
||||
$driver, $target, $group, $to, $device,, $deviceGroup, $targetGroup,
|
||||
$nonkey, $force);
|
||||
my %args = (
|
||||
applyConfig => $applyConfig,
|
||||
clearConfig => $clearConfig,
|
||||
writeConfig => $writeConfig,
|
||||
checkConfig => $checkConfig,
|
||||
|
||||
listScstAttr => $listScstAttr,
|
||||
listHandler => $listHandler,
|
||||
listDevice => $listDevice,
|
||||
listDeviceGroup => $listDeviceGroup,
|
||||
listTargetGroup => $listTargetGroup,
|
||||
listDriver => $listDriver,
|
||||
listTarget => $listTarget,
|
||||
listGroup => $listGroup,
|
||||
|
||||
listSessions => $listSessions,
|
||||
listHandlerAttr => $listHandlerAttr,
|
||||
listDeviceAttr => $listDeviceAttr,
|
||||
listDriverAttr => $listDriverAttr,
|
||||
listTargetAttr => $listTargetAttr,
|
||||
|
||||
listDeviceGroupAttr => $listDeviceGroupAttr,
|
||||
listTargetGroupAttr => $listTargetGroupAttr,
|
||||
listTargetGroupTargetAttr => $listTargetGroupTargetAttr,
|
||||
|
||||
listGroupAttr => $listGroupAttr,
|
||||
listLunAttr => $listLunAttr,
|
||||
listInitiatorAttr => $listInitiatorAttr,
|
||||
setScstAttr => $setScstAttr,
|
||||
setHandlerAttr => $setHandlerAttr,
|
||||
|
||||
setDeviceAttr => $setDeviceAttr,
|
||||
setDriverAttr => $setDriverAttr,
|
||||
setTargetAttr => $setTargetAttr,
|
||||
setGroupAttr => $setGroupAttr,
|
||||
setLunAttr => $setLunAttr,
|
||||
setInitiatorAttr => $setInitiatorAttr,
|
||||
|
||||
setDeviceGroupAttr => $setDeviceGroupAttr,
|
||||
setTargetGroupAttr => $setTargetGroupAttr,
|
||||
setTargetGroupTargetAttr => $setTargetGroupTargetAttr,
|
||||
|
||||
addDriverAttr => $addDriverAttr,
|
||||
addTargetAttr => $addTargetAttr,
|
||||
remDriverAttr => $remDriverAttr,
|
||||
remTargetAttr => $remTargetAttr,
|
||||
|
||||
openDev => $openDev,
|
||||
closeDev => $closeDev,
|
||||
resyncDev => $resyncDev,
|
||||
|
||||
addDevGroup => $addDevGroup,
|
||||
removeDevGroup => $removeDevGroup,
|
||||
addDevGroupDevice => $addDevGroupDevice,
|
||||
removeDevGroupDevice => $removeDevGroupDevice,
|
||||
|
||||
addTargetGroup => $addTargetGroup,
|
||||
removeTargetGroup => $removeTargetGroup,
|
||||
addTargetGroupTarget => $addTargetGroupTarget,
|
||||
removeTargetGroupTarget => $removeTargetGroupTarget,
|
||||
|
||||
addTarget => $addTarget,
|
||||
removeTarget => $removeTarget,
|
||||
|
||||
addGroup => $addGroup,
|
||||
removeGroup => $removeGroup,
|
||||
|
||||
addInitiator => $addInitiator,
|
||||
removeInitiator => $removeInitiator,
|
||||
moveInitiator => $moveInitiator,
|
||||
clearInitiators => $clearInitiators,
|
||||
|
||||
addLun => $addLun,
|
||||
removeLun => $removeLun,
|
||||
replaceLun => $replaceLun,
|
||||
clearLuns => $clearLuns,
|
||||
|
||||
enableTarget => $enableTarget,
|
||||
disableTarget => $disableTarget,
|
||||
issueLip => $issueLip,
|
||||
lip => $lip,
|
||||
noLip => $noLip,
|
||||
|
||||
handler => $handler,
|
||||
attributes => \%_attributes,
|
||||
|
||||
driver => $driver,
|
||||
target => $target,
|
||||
group => $group,
|
||||
to => $to,
|
||||
device => $device,
|
||||
deviceGroup => $deviceGroup,
|
||||
targetGroup => $targetGroup,
|
||||
|
||||
nonkey => $nonkey,
|
||||
force => $force,
|
||||
);
|
||||
return \%args;
|
||||
}
|
||||
|
||||
sub main {
|
||||
@@ -736,25 +835,103 @@ sub main {
|
||||
# We need to run as root
|
||||
if ( $> ) {die("This program must run as root.\n");}
|
||||
|
||||
my ($applyConfig, $clearConfig, $writeConfig, $checkConfig,
|
||||
$listScstAttr, $listHandler, $listDevice, $listDeviceGroup, $listTargetGroup, $listDriver, $listTarget, $listGroup,
|
||||
$listSessions, $listHandlerAttr, $listDeviceAttr, $listDriverAttr, $listTargetAttr,
|
||||
$listDeviceGroupAttr, $listTargetGroupAttr, $listTargetGroupTargetAttr,
|
||||
$listGroupAttr, $listLunAttr, $listInitiatorAttr, $setScstAttr, $setHandlerAttr,
|
||||
$setDeviceAttr, $setDriverAttr, $setTargetAttr, $setGroupAttr, $setLunAttr, $setInitiatorAttr,
|
||||
$setDeviceGroupAttr, $setTargetGroupAttr, $setTargetGroupTargetAttr,
|
||||
$addDriverAttr, $addTargetAttr, $remDriverAttr, $remTargetAttr,
|
||||
$openDev, $closeDev, $resyncDev,
|
||||
$addDevGroup, $removeDevGroup, $addDevGroupDevice, $removeDevGroupDevice,
|
||||
$addTargetGroup, $removeTargetGroup, $addTargetGroupTarget, $removeTargetGroupTarget,
|
||||
$addTarget, $removeTarget,
|
||||
$addGroup, $removeGroup,
|
||||
$addInitiator, $removeInitiator, $moveInitiator, $clearInitiators,
|
||||
$addLun, $removeLun, $replaceLun, $clearLuns,
|
||||
$enableTarget, $disableTarget, $issueLip, $noLip,
|
||||
$handler, $attributes,
|
||||
$driver, $target, $group, $to, $device, $deviceGroup, $targetGroup,
|
||||
$nonkey, $force) = getArgs();
|
||||
my $args = getArgs();
|
||||
|
||||
my $applyConfig = $args->{applyConfig};
|
||||
my $clearConfig = $args->{clearConfig};
|
||||
my $writeConfig = $args->{writeConfig};
|
||||
my $checkConfig = $args->{checkConfig};
|
||||
|
||||
my $listScstAttr = $args->{listScstAttr};
|
||||
my $listHandler = $args->{listHandler};
|
||||
my $listDevice = $args->{listDevice};
|
||||
my $listDeviceGroup = $args->{listDeviceGroup};
|
||||
my $listTargetGroup = $args->{listTargetGroup};
|
||||
my $listDriver = $args->{listDriver};
|
||||
my $listTarget = $args->{listTarget};
|
||||
my $listGroup = $args->{listGroup};
|
||||
|
||||
my $listSessions = $args->{listSessions};
|
||||
my $listHandlerAttr = $args->{listHandlerAttr};
|
||||
my $listDeviceAttr = $args->{listDeviceAttr};
|
||||
my $listDriverAttr = $args->{listDriverAttr};
|
||||
my $listTargetAttr = $args->{listTargetAttr};
|
||||
|
||||
my $listDeviceGroupAttr = $args->{listDeviceGroupAttr};
|
||||
my $listTargetGroupAttr = $args->{listTargetGroupAttr};
|
||||
my $listTargetGroupTargetAttr = $args->{listTargetGroupTargetAttr};
|
||||
|
||||
my $listGroupAttr = $args->{listGroupAttr};
|
||||
my $listLunAttr = $args->{listLunAttr};
|
||||
my $listInitiatorAttr = $args->{listInitiatorAttr};
|
||||
my $setScstAttr = $args->{setScstAttr};
|
||||
my $setHandlerAttr = $args->{setHandlerAttr};
|
||||
|
||||
my $setDeviceAttr = $args->{setDeviceAttr};
|
||||
my $setDriverAttr = $args->{setDriverAttr};
|
||||
my $setTargetAttr = $args->{setTargetAttr};
|
||||
my $setGroupAttr = $args->{setGroupAttr};
|
||||
my $setLunAttr = $args->{setLunAttr};
|
||||
my $setInitiatorAttr = $args->{setInitiatorAttr};
|
||||
|
||||
my $setDeviceGroupAttr = $args->{setDeviceGroupAttr};
|
||||
my $setTargetGroupAttr = $args->{setTargetGroupAttr};
|
||||
my $setTargetGroupTargetAttr = $args->{setTargetGroupTargetAttr};
|
||||
|
||||
my $addDriverAttr = $args->{addDriverAttr};
|
||||
my $addTargetAttr = $args->{addTargetAttr};
|
||||
my $remDriverAttr = $args->{remDriverAttr};
|
||||
my $remTargetAttr = $args->{remTargetAttr};
|
||||
|
||||
my $openDev = $args->{openDev};
|
||||
my $closeDev = $args->{closeDev};
|
||||
my $resyncDev = $args->{resyncDev};
|
||||
|
||||
my $addDevGroup = $args->{addDevGroup};
|
||||
my $removeDevGroup = $args->{removeDevGroup};
|
||||
my $addDevGroupDevice = $args->{addDevGroupDevice};
|
||||
my $removeDevGroupDevice = $args->{removeDevGroupDevice};
|
||||
|
||||
my $addTargetGroup = $args->{addTargetGroup};
|
||||
my $removeTargetGroup = $args->{removeTargetGroup};
|
||||
my $addTargetGroupTarget = $args->{addTargetGroupTarget};
|
||||
my $removeTargetGroupTarget = $args->{removeTargetGroupTarget};
|
||||
|
||||
my $addTarget = $args->{addTarget};
|
||||
my $removeTarget = $args->{removeTarget};
|
||||
|
||||
my $addGroup = $args->{addGroup};
|
||||
my $removeGroup = $args->{removeGroup};
|
||||
|
||||
my $addInitiator = $args->{addInitiator};
|
||||
my $removeInitiator = $args->{removeInitiator};
|
||||
my $moveInitiator = $args->{moveInitiator};
|
||||
my $clearInitiators = $args->{clearInitiators};
|
||||
|
||||
my $addLun = $args->{addLun};
|
||||
my $removeLun = $args->{removeLun};
|
||||
my $replaceLun = $args->{replaceLun};
|
||||
my $clearLuns = $args->{clearLuns};
|
||||
|
||||
my $enableTarget = $args->{enableTarget};
|
||||
my $disableTarget = $args->{disableTarget};
|
||||
my $issueLip = $args->{issueLip};
|
||||
my $lip = $args->{lip};
|
||||
my $noLip = $args->{noLip};
|
||||
|
||||
my $handler = $args->{handler};
|
||||
my $attributes = $args->{attributes};
|
||||
|
||||
my $driver = $args->{driver};
|
||||
my $target = $args->{target};
|
||||
my $group = $args->{group};
|
||||
my $to = $args->{to};
|
||||
my $device = $args->{device};
|
||||
my $deviceGroup = $args->{deviceGroup};
|
||||
my $targetGroup = $args->{targetGroup};
|
||||
|
||||
my $nonkey = $args->{nonkey};
|
||||
my $force = $args->{force};
|
||||
|
||||
$SCST = new SCST::SCST($_DEBUG_);
|
||||
|
||||
@@ -770,7 +947,7 @@ sub main {
|
||||
condExit("Configuration has errors, aborting.") if ($rc);
|
||||
last if ($force && prompt());
|
||||
my $changes = applyConfiguration($force);
|
||||
$rc = issueLip() if ($changes && !$noLip);
|
||||
$rc = issueLip() if ($changes && $lip);
|
||||
last SWITCH;
|
||||
};
|
||||
defined($checkConfig) && do {
|
||||
@@ -786,7 +963,7 @@ sub main {
|
||||
defined($clearConfig) && do {
|
||||
last if (prompt());
|
||||
$rc = clearConfiguration();
|
||||
$rc = issueLip() if (!$rc && !$noLip);
|
||||
$rc = issueLip() if (!$rc && $lip);
|
||||
last SWITCH;
|
||||
};
|
||||
defined($listHandler) && do {
|
||||
@@ -945,14 +1122,14 @@ sub main {
|
||||
defined($addDriverAttr) && do {
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = addDriverDynamicAttributes($addDriverAttr, $attributes);
|
||||
$rc = issueLip() if (!$rc && !$noLip);
|
||||
$rc = issueLip() if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
defined($addTargetAttr) && do {
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = addTargetDynamicAttributes($driver, $addTargetAttr, $attributes);
|
||||
$rc = issueLip() if (!$rc && !$noLip);
|
||||
$rc = issueLip() if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -960,7 +1137,7 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = removeDriverDynamicAttributes($remDriverAttr, $attributes);
|
||||
$rc = issueLip() if (!$rc && !$noLip);
|
||||
$rc = issueLip() if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -968,7 +1145,7 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = removeTargetDynamicAttributes($driver, $remTargetAttr, $attributes);
|
||||
$rc = issueLip() if (!$rc && !$noLip);
|
||||
$rc = issueLip() if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -982,14 +1159,14 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = closeDevice($handler, $closeDev, $force);
|
||||
$rc = issueLip() if (!$rc && !$noLip);
|
||||
$rc = issueLip() if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
defined($resyncDev) && do {
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = resyncDevice($resyncDev);
|
||||
$rc = issueLip() if (!$rc && !$noLip);
|
||||
$rc = issueLip() if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -1051,7 +1228,7 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = removeVirtualTarget($driver, $removeTarget);
|
||||
$rc = issueLip($driver) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -1071,7 +1248,7 @@ sub main {
|
||||
defined($addInitiator) && do {
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = addInitiator($driver, $target, $group, $addInitiator);
|
||||
$rc = issueLip($driver, $target) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver, $target) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -1079,7 +1256,7 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = removeInitiator($driver, $target, $group, $removeInitiator);
|
||||
$rc = issueLip($driver, $target) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver, $target) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -1087,7 +1264,7 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = moveInitiator($driver, $target, $group, $moveInitiator, $to);
|
||||
$rc = issueLip($driver, $target) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver, $target) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -1095,14 +1272,14 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = clearInitiators($driver, $target, $group);
|
||||
$rc = issueLip($driver, $target) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver, $target) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
defined($addLun) && do {
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = addLun($driver, $target, $device, $addLun, $attributes, $group);
|
||||
$rc = issueLip($driver, $target) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver, $target) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -1110,7 +1287,7 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = removeLun($driver, $target, $removeLun, $group);
|
||||
$rc = issueLip($driver, $target) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver, $target) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -1118,7 +1295,7 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = replaceLun($driver, $target, $group, $replaceLun, $device, $attributes);
|
||||
$rc = issueLip($driver, $target) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver, $target) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
@@ -1126,7 +1303,7 @@ sub main {
|
||||
last if (prompt());
|
||||
print "\n-> Making requested changes.\n";
|
||||
$rc = clearLuns($driver, $target, $group);
|
||||
$rc = issueLip($driver, $target) if (!$rc && !$noLip);
|
||||
$rc = issueLip($driver, $target) if (!$rc && $lip);
|
||||
print "\t-> Done.\n";
|
||||
last SWITCH;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user