[Stgt-devel] [PATCH 7/7] generic handling for array and single elements

Richard Sharpe realrichardsharpe
Thu Jul 24 00:50:51 CEST 2008


On Tue, Jul 22, 2008 at 4:22 AM, Doron Shoham <dorons at voltaire.com> wrote:
> make generic handling for array and single elements (e.g. devices)
> this makes code more compact and readable
>
> Signed-off-by: Doron Shoham <dorons at voltaire.com>

Acked-by: Richard Sharpe <realrichardsharpe at gmail.com>

> ---
>  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
> Stgt-devel at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/stgt-devel
>



More information about the stgt mailing list