make generic handling for array and single elements (e.g. devices)
this makes code more compact and readable

Signed-off-by: Doron Shoham <[EMAIL PROTECTED]>
---
 scripts/tgt-admin |   75 ++++++++++++++++++++++++++---------------------------
 1 files changed, 37 insertions(+), 38 deletions(-)

diff --git a/scripts/tgt-admin b/scripts/tgt-admin
index 11e5552..28af47d 100755
--- a/scripts/tgt-admin
+++ b/scripts/tgt-admin
@@ -133,19 +133,25 @@ sub add_targets {
        }
 }
 
-
 # Process options from the config file
 sub process_options {
        if ( $option eq "backing-store" ) {
-               if (ref($value) eq "ARRAY") {
-                       my @value_arr = @$value;
-                       my $i = 1;
-                        foreach my $backing_store (@value_arr) {
-                                execute("tgtadm --lld iscsi --op new --mode 
logicalunit --tid $next_tid --lun $i -b $backing_store");
+        # if we have one command, force it to be an array anyway
+               unless (ref($value) eq 'ARRAY') {
+                       $value = [ $value ];
+               }
+               my @value_arr = @$value;
+               my $i = 1;
+               foreach my $backing_store (@value_arr) {
+                       # Check if device exists
+                       if ( -e $backing_store) {
+                               execute("tgtadm --lld iscsi --op new --mode 
logicalunit --tid $next_tid --lun $i -b $backing_store");
                                $i += 1;
-                        }
-               } else {
-                       execute("tgtadm --lld iscsi --op new --mode logicalunit 
--tid $next_tid --lun 1 -b $value");
+                       }
+                       else {
+                               print("skipping device $backing_store\n");
+                               print("$backing_store does not exist - please 
check the configuration file\n");
+                       }
                }
        }
 
@@ -182,16 +188,13 @@ sub process_options {
        }
 
        if ( $option eq "incominguser" ) {
-               if (ref($value) eq "ARRAY") {
-                       my @value_arr = @$value;
-                       foreach my $incominguser (@value_arr) {
-                               my @userpass = split(/ /, $incominguser);
-                               execute("tgtadm --lld iscsi --mode account --op 
delete --user=$userpass[0]");
-                               execute("tgtadm --lld iscsi --mode account --op 
new --user=$userpass[0] --password=$userpass[1]");
-                               execute("tgtadm --lld iscsi --mode account --op 
bind --tid=$next_tid --user=$userpass[0]");
-                       }
-               } else {
-                       my @userpass = split(/ /, $value);
+               # if we have one command, force it to be an array anyway
+               unless (ref($value) eq 'ARRAY') {
+                       $value = [ $value ];
+               }
+               my @value_arr = @$value;
+               foreach my $incominguser (@value_arr) {
+                       my @userpass = split(/ /, $incominguser);
                        execute("tgtadm --lld iscsi --mode account --op delete 
--user=$userpass[0]");
                        execute("tgtadm --lld iscsi --mode account --op new 
--user=$userpass[0] --password=$userpass[1]");
                        execute("tgtadm --lld iscsi --mode account --op bind 
--tid=$next_tid --user=$userpass[0]");
@@ -199,33 +202,29 @@ sub process_options {
        }
 
        if ( $option eq "outgoinguser" ) {
-               if (ref($value) eq "ARRAY") {
-                       execute("# Warning: only one outgoinguser is allowed. 
Will only use the first one.");
-                       my @userpass = split(/ /, @$value[0]);
-                       execute("tgtadm --lld iscsi --mode account --op delete 
--user=$userpass[0]");
-                       execute("tgtadm --lld iscsi --mode account --op new 
--user=$userpass[0] --password=$userpass[1]");
-                       execute("tgtadm --lld iscsi --mode account --op bind 
--tid=$next_tid --user=$userpass[0] --outgoing");
-               } else {
-                       my @userpass = split(/ /, $value);
-                       execute("tgtadm --lld iscsi --mode account --op delete 
--user=$userpass[0]");
-                       execute("tgtadm --lld iscsi --mode account --op new 
--user=$userpass[0] --password=$userpass[1]");
-                       execute("tgtadm --lld iscsi --mode account --op bind 
--tid=$next_tid --user=$userpass[0] --outgoing");
+               # if we have one command, force it to be an array anyway
+               unless (ref($value) eq 'ARRAY') {
+                       $value = [ $value ];
                }
+               execute("# Warning: only one outgoinguser is allowed. Will only 
use the first one.");
+               my @userpass = split(/ /, @$value[0]);
+               execute("tgtadm --lld iscsi --mode account --op delete 
--user=$userpass[0]");
+               execute("tgtadm --lld iscsi --mode account --op new 
--user=$userpass[0] --password=$userpass[1]");
+               execute("tgtadm --lld iscsi --mode account --op bind 
--tid=$next_tid --user=$userpass[0] --outgoing");
        }
 
        if ( $option eq "initiator-address" ) {
-               if (ref($value) eq "ARRAY") {
-                       my @value_arr = @$value;
-                       foreach my $initiator_address (@value_arr) {
-                               execute("tgtadm --lld iscsi --op bind --mode 
target --tid $next_tid -I $initiator_address");
-                       }
-               } else {
-                       execute("tgtadm --lld iscsi --op bind --mode target 
--tid $next_tid -I $value");
+               # if we have one command, force it to be an array anyway
+               unless (ref($value) eq 'ARRAY') {
+                       $value = [ $value ];
+               }
+               my @value_arr = @$value;
+               foreach my $initiator_address (@value_arr) {
+                       execute("tgtadm --lld iscsi --op bind --mode target 
--tid $next_tid -I $initiator_address");
                }
        }
 }
 
-
 # Look up which targets are configured
 sub process_configs {
        # We need to run as root
-- 
1.5.3.8



_______________________________________________
Stgt-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/stgt-devel

Reply via email to