mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-23 13:41:27 +00:00
- More scstadmin.sysfs related updates. I think the help menu
is complete at this point. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1673 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -23,15 +23,50 @@ General Operations
|
||||
Query Operations
|
||||
-list_handler [<hndlr>] : List all available handlers or specific <hndlr>.
|
||||
-list_device [<device>] : List all open devices or specific <device>.
|
||||
-device <device>
|
||||
-list_driver [<driver>] : List all available drivers or specific <driver>.
|
||||
-list_target [<target>] : List all available targets or specific <target>.
|
||||
[-driver <driver>]
|
||||
-list_group [<group>] : List all configured groups, or specific <group>.
|
||||
[-driver <driver>]
|
||||
[-target <target>]
|
||||
|
||||
-list_hnd_parm <hndlr> : List all parameters for a given handler.
|
||||
-list_dev_parm <device> : List all parameters for a given device.
|
||||
-list_drv_parm <driver> : List all parameters for a given driver.
|
||||
-list_tgt_parm <target> : List all parameters for a given driver/target.
|
||||
-driver <driver>
|
||||
-list_lun_parm <lun> : List all parameters for a driver/target/lun.
|
||||
-driver <driver>
|
||||
-target <target>
|
||||
-group <group>
|
||||
-list_ini_parm <ini> : List all parms for a driver/target/initiator.
|
||||
-driver <driver>
|
||||
-target <target>
|
||||
-group <group>
|
||||
|
||||
-list_sessions : List all current initiator sessions.
|
||||
|
||||
Set Operations
|
||||
-set_hnd_parm <hndlr> : Sets handler parameter(s) <p> to value <v>.
|
||||
-parameters <p=v,...>
|
||||
-set_dev_parm <device> : Sets device parameters(s) <p> to value <v>.
|
||||
-parameters <p=v,...>
|
||||
-set_drv_parm <driver> : Sets driver parameter(s) <p> to value <v>.
|
||||
-parameters <p=v,...>
|
||||
-set_tgt_parm <target> : Sets target parameter(s) <p> to value <v>.
|
||||
-driver <driver>
|
||||
-parameters <p=v,...>
|
||||
-set_lun_parm <lun> : Sets LUN parameter(s) <p> to value <v>.
|
||||
-driver <driver>
|
||||
-target <target>
|
||||
-group <group>
|
||||
-parameters <p=v,...>
|
||||
-set_ini_parm <ini> : Sets initiator parameter(s) <p> to value <v>.
|
||||
-driver <driver>
|
||||
-target <target>
|
||||
-group <group>
|
||||
-parameters <p=v,...>
|
||||
|
||||
Device Operations
|
||||
-open_dev <device> : Adds a new device using handler <handler>.
|
||||
-handler <handler>
|
||||
@@ -39,8 +74,6 @@ Device Operations
|
||||
-resync_dev <device> : Resync the device size with the initiator(s).
|
||||
-close_dev <device> : Closes a device belonging to handler <handler>.
|
||||
-handler <handler>
|
||||
-set_dev_parm <device> : Sets device parameters(s) <a> to value <v>.
|
||||
-parameters <p=v,...>
|
||||
|
||||
Group Operations
|
||||
-add_group <group> : Add a group to a given driver & target.
|
||||
@@ -176,11 +209,23 @@ sub getArgs {
|
||||
my $listGroup;
|
||||
my $listSessions;
|
||||
|
||||
my $listHandlerParm;
|
||||
my $listDeviceParm;
|
||||
my $listDriverParm;
|
||||
my $listTargetParm;
|
||||
my $listLunParm;
|
||||
my $listInitiatorParm;
|
||||
|
||||
my $setHandlerParm;
|
||||
my $setDeviceParm;
|
||||
my $setDriverParm;
|
||||
my $setTargetParm;
|
||||
my $setLunParm;
|
||||
my $setInitiatorParm;
|
||||
|
||||
my $openDev;
|
||||
my $closeDev;
|
||||
my $resyncDev;
|
||||
my $setDevParm;
|
||||
my $listDevParm;
|
||||
|
||||
my $addGroup;
|
||||
my $removeGroup;
|
||||
@@ -225,11 +270,23 @@ sub getArgs {
|
||||
'list_group:s' => \$listGroup,
|
||||
'list_sessions' => \$listSessions,
|
||||
|
||||
'list_hnd_parm=s' => \$listHandlerParm,
|
||||
'list_dev_parm=s' => \$listDeviceParm,
|
||||
'list_drv_parm=s' => \$listDriverParm,
|
||||
'list_tgt_parm=s' => \$listTargetParm,
|
||||
'list_lun_parm=s' => \$listLunParm,
|
||||
'list_ini_parm=s' => \$listInitiatorParm,
|
||||
|
||||
'set_hnd_parm=s' => \$setHandlerParm,
|
||||
'set_dev_parm=s' => \$setDeviceParm,
|
||||
'set_drv_parm=s' => \$setDriverParm,
|
||||
'set_tgt_parm=s' => \$setTargetParm,
|
||||
'set_lun_parm=s' => \$setLunParm,
|
||||
'set_ini_parm=s' => \$setInitiatorParm,
|
||||
|
||||
'open_dev=s' => \$openDev,
|
||||
'close_dev=s' => \$closeDev,
|
||||
'resync_dev=s' => \$resyncDev,
|
||||
'set_dev_parm=s' => \$setDevParm,
|
||||
'list_dev_parm=s' => \$listDevParm,
|
||||
|
||||
'add_group=s' => \$addGroup,
|
||||
'remove_group=s' => \$removeGroup,
|
||||
@@ -260,7 +317,7 @@ sub getArgs {
|
||||
'noprompt' => \$noprompt,
|
||||
'force' => \$force,
|
||||
'debug' => \$_DEBUG_)) {
|
||||
&usage();
|
||||
usage();
|
||||
}
|
||||
|
||||
$_DEBUG_ = TRUE if (defined($_DEBUG_));
|
||||
@@ -274,14 +331,62 @@ sub getArgs {
|
||||
my $query_mode = defined($listHandler) || defined($listDevice) || defined($listDriver) ||
|
||||
defined($listTarget) || defined($listGroup) || defined($listSessions);
|
||||
|
||||
if ((defined($clearConfig) + defined($writeConfig) + defined($checkConfig) +
|
||||
defined($openDev) + defined($closeDev) + defined($setDevParm) +
|
||||
defined($addGroup) + defined($removeGroup) + defined($addInitiator) +
|
||||
defined($removeInitiator) + defined($clearInitiators) +
|
||||
defined($addLun) + defined($removeLun) + defined($replaceLun) +
|
||||
defined($clearLuns) + defined($enableTarget) + defined($disableTarget) +
|
||||
defined($issueLip) + $query_mode) > 1) {
|
||||
print "Please specify only one operation at a time.\n";
|
||||
my $set_mode = defined($setHandlerParm) + defined($setDeviceParm) + defined($setDriverParm) +
|
||||
defined($setTargetParm) + defined($setLunParm) + defined($setInitiatorParm);
|
||||
|
||||
my $op_mode = defined($clearConfig) + defined($writeConfig) + defined($checkConfig) +
|
||||
defined($openDev) + defined($closeDev) + defined($addGroup) + defined($removeGroup) +
|
||||
defined($addInitiator) + defined($removeInitiator) + defined($clearInitiators) +
|
||||
defined($addLun) + defined($removeLun) + defined($replaceLun) + defined($clearLuns) +
|
||||
defined($enableTarget) + defined($disableTarget) + defined($issueLip);
|
||||
|
||||
if (($query_mode + $set_mode + $op_mode) > 1) {
|
||||
print "Please specify only one non-query operation at a time.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($listTargetParm && !$driver) {
|
||||
print "Please specify -driver with -list_tgt_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($listLunParm && (!$driver || !$target || !$group)) {
|
||||
print "Please specify -driver -target and -group with -list_lun_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($listInitiatorParm && (!$driver || !$target || !$group)) {
|
||||
print "Please specify -driver -target and -group with -list_ini_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($setHandlerParm && !$parameters) {
|
||||
print "Please specify -parameters with -set_hnd_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($setDeviceParm && !$parameters) {
|
||||
print "Please specify -parameters with -set_dev_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($setDriverParm && !$parameters) {
|
||||
print "Please specify -parameters with -set_drv_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($setTargetParm && (!$driver || !$parameters)) {
|
||||
print "Please specify -driver and -parameters with -set_tgt_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($setLunParm && (!$driver || !$target || !$group || !$parameters)) {
|
||||
print "Please specify -driver -target -group and -parameters with -set_lun_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($setDeviceParm && (!$driver || !$target || !$group || !$parameters)) {
|
||||
print "Please specify -driver -target -group and -parameters with -set_ini_parm.\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
@@ -290,36 +395,31 @@ sub getArgs {
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($setDevParm && !$parameters) {
|
||||
print "Please specify -parameters with -set_dev_parm.\n";
|
||||
&usage();
|
||||
}
|
||||
|
||||
if (($addGroup || $removeGroup) && (!$driver || !$target)) {
|
||||
print "Please specify -driver and -target with -add_group/-remove_group.\n";
|
||||
&usage();
|
||||
usage();
|
||||
}
|
||||
|
||||
if (($addInitiator || $removeInitiator || $clearInitiators) &&
|
||||
(!$target || !$driver || !$group)) {
|
||||
print "Please specify -driver -target and -group with ".
|
||||
"-add_init/-remove_init/-clear_inits.\n";
|
||||
&usage();
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($moveInitiator && (!$driver || !$target || !$group || !$to)) {
|
||||
print "Please specify -driver -target -group and -to with -move_init.\n";
|
||||
&usage();
|
||||
usage();
|
||||
}
|
||||
|
||||
if (($addLun || $replaceLun || $removeLun) && (!$driver || !$target || !$group || !$device)) {
|
||||
print "Please specify -driver -target -group and -device with -add_lun/-replace_lun.\n";
|
||||
&usage();
|
||||
usage();
|
||||
}
|
||||
|
||||
if ($clearLuns && (!$driver || !$target || !$group)) {
|
||||
print "Please specify -driver -target and -group with -remove_lun/-clear_luns.\n";
|
||||
&usage();
|
||||
usage();
|
||||
}
|
||||
|
||||
$applyConfig = $_DEF_CONFIG_ if (defined($applyConfig) && !$applyConfig);
|
||||
@@ -342,7 +442,10 @@ sub getArgs {
|
||||
|
||||
return ($applyConfig, $clearConfig, $writeConfig, $checkConfig,
|
||||
$listHandler, $listDevice, $listDriver, $listTarget, $listGroup, $listSessions,
|
||||
$openDev, $closeDev, $resyncDev, $setDevParm, $listDevParm,
|
||||
$listHandlerParm, $listDeviceParm, $listDriverParm, $listTargetParm, $listLunParm,
|
||||
$listInitiatorParm, $setHandlerParm, $setDeviceParm, $setDriverParm, $setTargetParm,
|
||||
$setLunParm, $setInitiatorParm,
|
||||
$openDev, $closeDev, $resyncDev,
|
||||
$addGroup, $removeGroup,
|
||||
$addInitiator, $removeInitiator, $moveInitiator, $clearInitiators,
|
||||
$addLun, $removeLun, $replaceLun, $clearLuns,
|
||||
@@ -362,7 +465,10 @@ sub main {
|
||||
|
||||
my ($applyConfig, $clearConfig, $writeConfig, $checkConfig,
|
||||
$listHandler, $listDevice, $listDriver, $listTarget, $listGroup, $listSessions,
|
||||
$openDev, $closeDev, $resyncDev, $setDevParm, $listDevParm,
|
||||
$listHandlerParm, $listDeviceParm, $listDriverParm, $listTargetParm, $listLunParm,
|
||||
$listInitiatorParm, $setHandlerParm, $setDeviceParm, $setDriverParm, $setTargetParm,
|
||||
$setLunParm, $setInitiatorParm,
|
||||
$openDev, $closeDev, $resyncDev,
|
||||
$addGroup, $removeGroup,
|
||||
$addInitiator, $removeInitiator, $moveInitiator, $clearInitiators,
|
||||
$addLun, $removeLun, $replaceLun, $clearLuns,
|
||||
@@ -375,6 +481,8 @@ sub main {
|
||||
|
||||
readWorkingConfig();
|
||||
|
||||
my $all_good;
|
||||
|
||||
SWITCH: {
|
||||
$applyConfig && do {
|
||||
if ($force) {
|
||||
@@ -405,21 +513,75 @@ sub main {
|
||||
};
|
||||
defined($listHandler) && do {
|
||||
$rc = listHandlers($listHandler);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
defined($listDevice) && do {
|
||||
$rc = listDevices($listDevice);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
defined($listDriver) && do {
|
||||
$rc = listDrivers($listDriver);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
defined($listTarget) && do {
|
||||
$rc = listTargets($listTarget, $driver);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
defined($listGroup) && do {
|
||||
$rc = listGroups($listGroup, $driver, $target);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
defined($listSessions) && do {
|
||||
$rc = listSessions();
|
||||
$all_good = TRUE;
|
||||
};
|
||||
$listHandlerParm && do {
|
||||
$rc = listHandlerParameters($listHandlerParm);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
$listDeviceParm && do {
|
||||
$rc = listDeviceParameters($listDeviceParm);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
$listDriverParm && do {
|
||||
$rc = listDriverParameters($listHandlerParm);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
$listTargetParm && do {
|
||||
$rc = listTargetParameters($listTargetParm, $driver);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
$listLunParm && do {
|
||||
$rc = listLunParameters($listLunParm, $driver, $target, $group);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
$listInitiatorParm && do {
|
||||
$rc = listInitiatorParameters($listInitiatorParm, $driver, $target, $group);
|
||||
$all_good = TRUE;
|
||||
};
|
||||
$setHandlerParm && do {
|
||||
$rc = setHandlerParameters($setHandlerParm, $parameters);
|
||||
last SWITCH;
|
||||
};
|
||||
$setDeviceParm && do {
|
||||
$rc = setDeviceParameters($setDeviceParm, $parameters);
|
||||
last SWITCH;
|
||||
};
|
||||
$setDriverParm && do {
|
||||
$rc = setDriverParameters($setDriverParm, $parameters);
|
||||
last SWITCH;
|
||||
};
|
||||
$setTargetParm && do {
|
||||
$rc = setTargetParameters($setTargetParm, $driver, $parameters);
|
||||
last SWITCH;
|
||||
};
|
||||
$setLunParm && do {
|
||||
$rc = setLunParameters($setLunParm, $driver, $target, $group, $parameters);
|
||||
last SWITCH;
|
||||
};
|
||||
$setInitiatorParm && do {
|
||||
$rc = setInitiatorParameters($setInitiatorParm, $driver, $target, $group, $parameters);
|
||||
last SWITCH;
|
||||
};
|
||||
$openDev && do {
|
||||
$rc = openDevice($openDev, $handler, $parameters);
|
||||
@@ -433,14 +595,6 @@ sub main {
|
||||
$rc = resyncDevice($resyncDev);
|
||||
last SWITCH;
|
||||
};
|
||||
$setDevParm && do {
|
||||
$rc = setDeviceParameters($setDevParm, $parameters);
|
||||
last SWITCH;
|
||||
};
|
||||
$listDevParm && do {
|
||||
$rc = listDeviceParameters($listDevParm);
|
||||
last SWITCH;
|
||||
};
|
||||
$addGroup && do {
|
||||
$rc = addGroup($addGroup, $driver, $target);
|
||||
last SWITCH;
|
||||
@@ -494,9 +648,11 @@ sub main {
|
||||
last SWITCH;
|
||||
};
|
||||
|
||||
print "No valid operations specified.\n";
|
||||
usage();
|
||||
exit TRUE;
|
||||
if (!$all_good) {
|
||||
print "No valid operations specified.\n";
|
||||
usage();
|
||||
exit TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
print "\nAll done.\n";
|
||||
@@ -742,17 +898,97 @@ sub listDevices {
|
||||
|
||||
sub listDrivers {
|
||||
my $driver = shift;
|
||||
|
||||
return listTargets(undef, $driver) if ($driver);
|
||||
|
||||
my $drivers = $SCST->drivers();
|
||||
|
||||
my $l_driver;
|
||||
foreach my $driver (@{$drivers}) {
|
||||
$l_driver = length($driver) if ($l_driver < length($driver));
|
||||
}
|
||||
|
||||
print "\tDriver\n";
|
||||
print "\t";
|
||||
for (my $x = 0; $x < $l_driver; $x++) {
|
||||
print "-";
|
||||
}
|
||||
print "\n";
|
||||
|
||||
foreach my $driver (@{$drivers}) {
|
||||
print "\t$driver\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub listTargets {
|
||||
my $target = shift;
|
||||
my $driver = shift;
|
||||
|
||||
return listGroups(undef, $driver, $target) if ($target && $driver);
|
||||
|
||||
my $drivers = $SCST->drivers();
|
||||
|
||||
my $l_driver;
|
||||
my $l_target;
|
||||
foreach my $driver (@{$drivers}) {
|
||||
$l_driver = length($driver) if ($l_driver < length($driver));
|
||||
|
||||
my $targets = $SCST->targets($driver);
|
||||
|
||||
foreach my $target (@{$targets}) {
|
||||
$l_target = length($target) if ($l_target < length($target));
|
||||
}
|
||||
}
|
||||
|
||||
printf("\t%-*s %-*s\n", $l_driver, 'Driver', $l_target, 'Target');
|
||||
print "\t";
|
||||
for (my $x = 0; $x < ($l_driver + $l_target + 1); $x++) {
|
||||
print "-";
|
||||
}
|
||||
print "\n";
|
||||
|
||||
my %p;
|
||||
|
||||
foreach my $driver (@{$drivers}) {
|
||||
my $targets = $SCST->targets($driver);
|
||||
|
||||
foreach my $target (@{$targets}) {
|
||||
if (!defined($p{$driver})) {
|
||||
printf("\t%-*s %-*s\n", $l_driver, $driver, $l_target, $target);
|
||||
$p{$driver}++;
|
||||
} else {
|
||||
printf("\t%-*s %-*s\n", $l_driver, '', $l_target, $target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub listGroups {
|
||||
my $group = shift;
|
||||
my $driver = shift;
|
||||
my $target = shift;
|
||||
|
||||
if ($group && $driver && $target) {
|
||||
return listGroup($driver, $target, $group);
|
||||
}
|
||||
|
||||
my $drivers = $SCST->drivers();
|
||||
|
||||
foreach my $driver (@{$drivers}) {
|
||||
my $targets = $SCST->targets($driver);
|
||||
foreach my $target (@{$targets}) {
|
||||
my $groups = $SCST->groups($driver, $target);
|
||||
foreach my $group (@{$groups}) {
|
||||
print "Driver: $driver\n";
|
||||
print "Target: $target\n";
|
||||
print "Group : $group\n\n";
|
||||
|
||||
listGroup($driver, $target, $group);
|
||||
|
||||
print "\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub listSessions {
|
||||
@@ -781,8 +1017,9 @@ sub listGroup {
|
||||
$l_initiator = length($initiator) if (length($initiator) > $l_initiator);
|
||||
}
|
||||
|
||||
print "Assigned LUNs:\n\n";
|
||||
|
||||
if (keys %{$luns}) {
|
||||
print "Group '$group' has the following LUNs:\n\n";
|
||||
printf("\t%-4s %-*s\n", 'LUN', $l_device, 'Device');
|
||||
print "\t";
|
||||
for (my $x = 0; $x < ($l_device + 5); $x++) {
|
||||
@@ -795,10 +1032,13 @@ sub listGroup {
|
||||
|
||||
printf("\t%-4s %-*s\n", $lun, $l_device, $$luns{$lun});
|
||||
}
|
||||
} else {
|
||||
print "\t(none)\n";
|
||||
}
|
||||
|
||||
print "\nAssigned Initiators:\n\n";
|
||||
|
||||
if ($#{$initiators} > -1) {
|
||||
print "\nGroup '$group' has the following initiators:\n\n";
|
||||
print "\tInitiator\n";
|
||||
print "\t";
|
||||
for (my $x = 0; $x < $l_initiator; $x++) {
|
||||
@@ -809,6 +1049,8 @@ sub listGroup {
|
||||
foreach my $initiator (@{$initiators}) {
|
||||
print "\t$initiator\n";
|
||||
}
|
||||
} else {
|
||||
print "\t(none)\n";
|
||||
}
|
||||
} else {
|
||||
print "Group '$group' has no associated LUNs or initiators.\n";
|
||||
@@ -867,6 +1109,239 @@ sub listExported {
|
||||
}
|
||||
}
|
||||
|
||||
sub listHandlerParameters {
|
||||
my $handler = shift;
|
||||
|
||||
}
|
||||
|
||||
sub listDeviceParameters {
|
||||
my $device = shift;
|
||||
my $l_parm;
|
||||
my $l_val;
|
||||
|
||||
my $parameters = $SCST->deviceParameters($device);
|
||||
immediateExit($SCST->errorString());
|
||||
|
||||
foreach my $parameter (sort keys %{$parameters}) {
|
||||
my $value = $$parameters{$parameter}->{'value'};
|
||||
|
||||
next if (ref($value));
|
||||
|
||||
$l_parm = length($parameter) if (length($parameter) > $l_parm);
|
||||
$l_val = length($value) if (length($value) > $l_val);
|
||||
}
|
||||
|
||||
print "Parameters for device '$device':\n\n";
|
||||
|
||||
printf("\t%-*s %-*s %-5s\n", $l_parm, 'Parameter', $l_val, 'Value', 'Static');
|
||||
print "\t";
|
||||
for (my $x = 0; $x < ($l_parm + $l_val + 8); $x++) {
|
||||
print "-";
|
||||
}
|
||||
print "\n";
|
||||
|
||||
foreach my $parameter (sort keys %{$parameters}) {
|
||||
my $value = $$parameters{$parameter}->{'value'};
|
||||
my $static = $$parameters{$parameter}->{'static'};
|
||||
|
||||
next if (ref($value));
|
||||
$value = '-' if (!defined($value));
|
||||
$static = ($static ? 'Yes' : 'No');
|
||||
|
||||
printf("\t%-*s %-*s %-5s\n", $l_parm, $parameter, $l_val, $value, $static);
|
||||
}
|
||||
}
|
||||
|
||||
sub listDriverParameters {
|
||||
my $driver = shift;
|
||||
|
||||
}
|
||||
|
||||
sub listTargetParameters {
|
||||
my $target = shift;
|
||||
my $driver = shift;
|
||||
|
||||
}
|
||||
|
||||
sub listLunParameters {
|
||||
my $lun = shift;
|
||||
my $driver = shift;
|
||||
my $target = shift;
|
||||
my $group = shift;
|
||||
|
||||
}
|
||||
|
||||
sub listInitiatorParameters {
|
||||
my $initiator = shift;
|
||||
my $driver = shift;
|
||||
my $target = shift;
|
||||
my $group = shift;
|
||||
|
||||
}
|
||||
|
||||
####################################################################
|
||||
|
||||
sub setHandlerParameters {
|
||||
my $handler = shift;
|
||||
my $parameters = shift;
|
||||
|
||||
my $_parameters = $SCST->handlerParameters($handler);
|
||||
|
||||
foreach my $parameter (keys %{$parameters}) {
|
||||
if (defined($$_parameters{$parameter}) &&
|
||||
!$$_parameters{$parameter}->{'static'}) {
|
||||
my $value = $$parameters{$parameter};
|
||||
|
||||
print "-> Setting handler parameter '$parameter' to '$value' for handler '$handler': ";
|
||||
|
||||
my $rc = $SCST->setHandlerParameter($handler, $parameter, $value);
|
||||
|
||||
print "done.\n";
|
||||
|
||||
immediateExit($SCST->errorString($rc)) if ($rc);
|
||||
} else {
|
||||
print "-> WARNING: Handler '$handler' lacks the settable ".
|
||||
"parameter '$parameter', ignoring.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub setDeviceParameters {
|
||||
my $device = shift;
|
||||
my $parameters = shift;
|
||||
|
||||
my $_parameters = $SCST->deviceParameters($device);
|
||||
|
||||
foreach my $parameter (keys %{$parameters}) {
|
||||
if (defined($$_parameters{$parameter}) &&
|
||||
!$$_parameters{$parameter}->{'static'}) {
|
||||
my $value = $$parameters{$parameter};
|
||||
|
||||
print "-> Setting device parameter '$parameter' to value '$value' for device '$device': ";
|
||||
|
||||
my $rc = $SCST->setDeviceParameter($device, $parameter, $value);
|
||||
|
||||
print "done.\n";
|
||||
|
||||
immediateExit($SCST->errorString($rc)) if ($rc);
|
||||
} else {
|
||||
print "-> WARNING: Device '$device' lacks the settable ".
|
||||
"parameter '$parameter', ignoring.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub setDriverParameters {
|
||||
my $driver = shift;
|
||||
my $parameters = shift;
|
||||
|
||||
my $_parameters = $SCST->driverParameters($driver);
|
||||
|
||||
foreach my $parameter (keys %{$parameters}) {
|
||||
if (defined($$_parameters{$parameter}) &&
|
||||
!$$_parameters{$parameter}->{'static'}) {
|
||||
my $value = $$parameters{$parameter};
|
||||
|
||||
print "-> Setting driver parameter '$parameter' to value '$value' for driver '$driver': ";
|
||||
|
||||
my $rc = $SCST->setDriverParameter($driver, $parameter, $value);
|
||||
|
||||
print "done.\n";
|
||||
|
||||
immediateExit($SCST->errorString($rc)) if ($rc);
|
||||
} else {
|
||||
print "-> WARNING: Driver '$driver' lacks the settable ".
|
||||
"parameter '$parameter', ignoring.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub setTargetParameters {
|
||||
my $target = shift;
|
||||
my $driver = shift;
|
||||
my $parameters = shift;
|
||||
|
||||
my $_parameters = $SCST->targetParameters($driver, $target);
|
||||
|
||||
foreach my $parameter (keys %{$parameters}) {
|
||||
if (defined($$_parameters{$parameter}) &&
|
||||
!$$_parameters{$parameter}->{'static'}) {
|
||||
my $value = $$parameters{$parameter};
|
||||
|
||||
print "-> Setting target parameter '$parameter' to value '$value' for ".
|
||||
"driver/target '$driver/$target': ";
|
||||
|
||||
my $rc = $SCST->setTargetParameter($driver, $target, $parameter, $value);
|
||||
|
||||
print "done.\n";
|
||||
|
||||
immediateExit($SCST->errorString($rc)) if ($rc);
|
||||
} else {
|
||||
print "-> WARNING: Driver/target '$driver/$target' lacks the settable ".
|
||||
"parameter '$parameter', ignoring.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub setLunParameters {
|
||||
my $lun = shift;
|
||||
my $driver = shift;
|
||||
my $target = shift;
|
||||
my $group = shift;
|
||||
my $parameters = shift;
|
||||
|
||||
my $_parameters = $SCST->lunParameters($driver, $target, $group, $lun);
|
||||
|
||||
foreach my $parameter (keys %{$parameters}) {
|
||||
if (defined($$_parameters{$parameter}) &&
|
||||
!$$_parameters{$parameter}->{'static'}) {
|
||||
my $value = $$parameters{$parameter};
|
||||
|
||||
print "-> Setting LUN parameter '$parameter' to value '$value' for ".
|
||||
"driver/target/group/lun '$driver/$target/$group/$lun': ";
|
||||
|
||||
my $rc = $SCST->setLunParameter($driver, $target, $group, $lun, $parameter, $value);
|
||||
|
||||
print "done.\n";
|
||||
|
||||
immediateExit($SCST->errorString($rc)) if ($rc);
|
||||
} else {
|
||||
print "-> WARNING: Driver/target/group/lun '$driver/$target/$group/$lun' lacks the settable ".
|
||||
"parameter '$parameter', ignoring.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub setInitiatorParameters {
|
||||
my $initiator = shift;
|
||||
my $driver = shift;
|
||||
my $target = shift;
|
||||
my $group = shift;
|
||||
my $parameters = shift;
|
||||
|
||||
my $_parameters = $SCST->initiatorParameters($driver, $target, $group, $initiator);
|
||||
|
||||
foreach my $parameter (keys %{$parameters}) {
|
||||
if (defined($$_parameters{$parameter}) &&
|
||||
!$$_parameters{$parameter}->{'static'}) {
|
||||
my $value = $$parameters{$parameter};
|
||||
|
||||
print "-> Setting initiator parameter '$parameter' to value '$value' for ".
|
||||
"driver/target/group/initiator '$driver/$target/$group/$initiator': ";
|
||||
|
||||
my $rc = $SCST->setInitiatorParameter($driver, $target, $group, $initiator,
|
||||
$parameter, $value);
|
||||
|
||||
print "done.\n";
|
||||
|
||||
immediateExit($SCST->errorString($rc)) if ($rc);
|
||||
} else {
|
||||
print "-> WARNING: Driver/target/group/initiator '$driver/$target/$group/$initiator' ".
|
||||
"lacks the settable parameter '$parameter', ignoring.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
####################################################################
|
||||
|
||||
sub openDevice {
|
||||
@@ -916,67 +1391,6 @@ sub resyncDevice {
|
||||
setDeviceParameters($device, \%parameters);
|
||||
}
|
||||
|
||||
sub setDeviceParameters {
|
||||
my $device = shift;
|
||||
my $parameters = shift;
|
||||
|
||||
my $_parameters = $SCST->deviceParameters($device);
|
||||
|
||||
foreach my $parameter (keys %{$parameters}) {
|
||||
if (defined($$_parameters{$parameter}) &&
|
||||
!$$_parameters{$parameter}->{'static'}) {
|
||||
print "-> Setting device parameter '$parameter' for device '$device': ";
|
||||
|
||||
my $rc = $SCST->setDeviceParameter($device, $parameter, 1);
|
||||
|
||||
print "done.\n";
|
||||
|
||||
immediateExit($SCST->errorString($rc)) if ($rc);
|
||||
} else {
|
||||
print "-> WARNING: Device '$device' lacks the settable ".
|
||||
"parameter '$parameter', ignoring.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub listDeviceParameters {
|
||||
my $device = shift;
|
||||
my $l_parm;
|
||||
my $l_val;
|
||||
|
||||
my $parameters = $SCST->deviceParameters($device);
|
||||
immediateExit($SCST->errorString());
|
||||
|
||||
foreach my $parameter (sort keys %{$parameters}) {
|
||||
my $value = $$parameters{$parameter}->{'value'};
|
||||
|
||||
next if (ref($value));
|
||||
|
||||
$l_parm = length($parameter) if (length($parameter) > $l_parm);
|
||||
$l_val = length($value) if (length($value) > $l_val);
|
||||
}
|
||||
|
||||
print "Parameters for device '$device':\n\n";
|
||||
|
||||
printf("\t%-*s %-*s %-5s\n", $l_parm, 'Parameter', $l_val, 'Value', 'Static');
|
||||
print "\t";
|
||||
for (my $x = 0; $x < ($l_parm + $l_val + 8); $x++) {
|
||||
print "-";
|
||||
}
|
||||
print "\n";
|
||||
|
||||
foreach my $parameter (sort keys %{$parameters}) {
|
||||
my $value = $$parameters{$parameter}->{'value'};
|
||||
my $static = $$parameters{$parameter}->{'static'};
|
||||
|
||||
next if (ref($value));
|
||||
$value = '-' if (!defined($value));
|
||||
$static = ($static ? 'Yes' : 'No');
|
||||
|
||||
printf("\t%-*s %-*s %-5s\n", $l_parm, $parameter, $l_val, $value, $static);
|
||||
}
|
||||
}
|
||||
|
||||
####################################################################
|
||||
|
||||
sub addGroup {
|
||||
|
||||
Reference in New Issue
Block a user