- Add the ability to specify options (ie: READ_ONLY) in assignments in scst.conf.
authormgandalf <mgandalf@d57e44dd-8a1f-0410-8b47-8ef2f437770f>
Thu, 17 Sep 2009 20:32:35 +0000 (20:32 +0000)
committermgandalf <mgandalf@d57e44dd-8a1f-0410-8b47-8ef2f437770f>
Thu, 17 Sep 2009 20:32:35 +0000 (20:32 +0000)
git-svn-id: https://scst.svn.sourceforge.net/svnroot/scst/trunk@1109 d57e44dd-8a1f-0410-8b47-8ef2f437770f

scstadmin/ChangeLog
scstadmin/README
scstadmin/examples/scst.conf
scstadmin/scst-0.8.21/lib/SCST/SCST.pm
scstadmin/scstadmin

index a3f6d5c..204bb20 100644 (file)
@@ -2,6 +2,7 @@ Changes for 1.0.9
 
 - Move a user from one group to another when applying the configuration instead
   of deleting from one and adding to another the same user.
+- Add the ability to specify options (ie: READ_ONLY) in assignments in scst.conf.
 - Minor fix to readConfig() which wasn't fully allowing for empty groups.
 
 Changes for 1.0.8
index d1dc3a9..1b22a68 100644 (file)
@@ -68,3 +68,9 @@ NOTE! Section "[TARGETS enable]" in the config file is for qla2x00t driver only!
 
 Mark.Buechler@gmail.com
 
+
+To Do:
+======
+
+- Compare device and assignment options between current and saved configurations and
+  reopen/reassign as required if -ForceConfig is used.
index bfed3a4..3465ce9 100644 (file)
@@ -1,4 +1,6 @@
-# Automatically generated by scst.
+# Automatically generated by SCST Configurator v1.0.8.
+
+# NOTE: Options are pipe (|) seperated.
 
 [HANDLER vdisk]
 #DEVICE <vdisk name>,<device path>,<options>,<block size>
@@ -58,45 +60,46 @@ USER 21:00:00:e0:8b:11:a6:8b
 USER 21:00:00:e0:8b:11:75:8b
 
 [ASSIGNMENT CORBIN2_a]
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE MP15K009,0
 DEVICE MS10K006,1
 DEVICE RG10K000,2
 DEVICE RG72K001,3
 
 [ASSIGNMENT CORBIN3_a]
-#ASSIGNMENT <device name>,<lun>
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE MP15K00d,0
 
 [ASSIGNMENT Default]
-#ASSIGNMENT <device name>,<lun>
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE GW15K000,0
 DEVICE GW15K001,1
 
 [ASSIGNMENT MENTASM_a]
-#ASSIGNMENT <device name>,<lun>
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE MP15K006,0
 DEVICE MP15K008,1
 DEVICE MP15K00e,2
 
 [ASSIGNMENT PC1_a]
-#ASSIGNMENT <device name>,<lun>
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE MS15K000,0
 
 [ASSIGNMENT PC2_a]
-#ASSIGNMENT <device name>,<lun>
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE MS15K005,0
 
 [ASSIGNMENT PC3_a]
-#ASSIGNMENT <device name>,<lun>
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE MP15K00c,0
 
 [ASSIGNMENT PC4_a]
-#ASSIGNMENT <device name>,<lun>
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE MP15K005,0
 DEVICE MP15K007,1
 
 [ASSIGNMENT RAISTLIN_a]
-#ASSIGNMENT <device name>,<lun>
+#ASSIGNMENT <device name>,<lun>,<options>
 DEVICE MP15K00a,0
 DEVICE MP15K00b,1
 
index 1f78ea0..60a2d13 100644 (file)
@@ -886,7 +886,8 @@ sub assignDeviceToGroup {
        ($options, $valid_opts) = $self->checkOptions($options, 'ASSIGN');
 
        if (!$valid_opts) {
-               $self->{'error'} = "assignDeviceToGroup(): Invalid option(s) '$options' given for device '$device'";
+               $self->{'error'} = "assignDeviceToGroup(): Invalid option(s) '$options' given for ".
+                 "device '$device' in assignment";
                return 1;
        }
 
index b887f29..cd1881c 100755 (executable)
@@ -552,6 +552,8 @@ sub writeConfiguration {
 
        print $io "# Automatically generated by $Version.\n\n";
 
+       print $io "# NOTE: Options are pipe (|) seperated.\n\n";
+
        # Device information
        foreach my $handler (sort keys %HANDLERS) {
                print $io "[HANDLER ".$_REVERSE_MAP_{$handler}."]\n";
@@ -600,7 +602,7 @@ sub writeConfiguration {
        # Assignments configuration
        foreach my $group (sort keys %ASSIGNMENTS) {
                print $io "[ASSIGNMENT $group]\n";
-               print $io "#DEVICE <device name>,<lun>\n";
+               print $io "#DEVICE <device name>,<lun>,<options>\n";
 
                my $pointer = $ASSIGNMENTS{$group};
                foreach my $device (sort keys %{$pointer}) {
@@ -674,9 +676,9 @@ sub applyConfiguration {
        # Cache device association configuration
        foreach my $group (keys %{$$config{'ASSIGNMENT'}}) {
                foreach my $device (@{$$config{'ASSIGNMENT'}->{$group}->{'DEVICE'}}) {
-                       my($vname, $lun) = split(/\,/, $device);
+                       my($vname, $arg) = split(/\,/, $device, 2);
                        $vname = cleanupString($vname);
-                       $used_assignments{$group}->{$vname} = $lun;
+                       $used_assignments{$group}->{$vname} = $arg;
                }
        }
 
@@ -943,7 +945,8 @@ sub applyConfiguration {
                }
 
                foreach my $vname (keys %{$used_assignments{$group}}) {
-                       my $lun = $used_assignments{$group}->{$vname};
+                       my $arg = $used_assignments{$group}->{$vname};
+                       my($lun, $options) = split(/\,/, $arg);
                        my $_assignments = $ASSIGNMENTS{$group};
 
                        if (defined($$_assignments{$vname}) && ($$_assignments{$vname} == $lun)) {
@@ -958,7 +961,7 @@ sub applyConfiguration {
                                        print "\t-> New device assignment for '$vname' to group '$group' at LUN $lun.\n";
                                        $changes++;
                                } else {
-                                       if (assignDevice($group, $vname, $lun)) {
+                                       if (assignDevice($group, $vname, $lun, $options)) {
                                                $errs++;
                                        } else {
                                                $changes++;