From b00f70a1e478deb00f2b719c41308037865cee9d Mon Sep 17 00:00:00 2001 From: jbjohnso Date: Tue, 4 Mar 2008 19:38:16 +0000 Subject: [PATCH] -Fix client to print error members of node XML entries -Have setupiscsidev provide more feedback in an appropriate way git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@668 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- perl-xCAT-2.0/xCAT/Client.pm | 3 ++ xCAT-server-2.0/lib/xcat/plugins/iscsi.pm | 37 ++++++++++++++++++----- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/perl-xCAT-2.0/xCAT/Client.pm b/perl-xCAT-2.0/xCAT/Client.pm index 1006e0441..1ab4de902 100644 --- a/perl-xCAT-2.0/xCAT/Client.pm +++ b/perl-xCAT-2.0/xCAT/Client.pm @@ -517,6 +517,9 @@ sub handle_response { if (ref($node->{errorcode}) eq 'ARRAY') { foreach my $ecode (@{$node->{errorcode}}) { $xCAT::Client::EXITCODE |= $ecode; } } else { $xCAT::Client::EXITCODE |= $node->{errorcode}; } # assume it is a non-reference scalar } + if ($node->{error}) { + $desc.=": Error: ".$node->{error}->[0]; + } if ($node->{data}) { if (ref(\($node->{data}->[0])) eq 'SCALAR') { $desc=$desc.": ".$node->{data}->[0]; diff --git a/xCAT-server-2.0/lib/xcat/plugins/iscsi.pm b/xCAT-server-2.0/lib/xcat/plugins/iscsi.pm index 99362bbf1..8fa76de0a 100644 --- a/xCAT-server-2.0/lib/xcat/plugins/iscsi.pm +++ b/xCAT-server-2.0/lib/xcat/plugins/iscsi.pm @@ -74,12 +74,17 @@ sub process_request { } foreach my $node (@nodes) { my $fileloc; + my %rsp; + %rsp=(name=>[$node]); my $iscsient = $iscsitab->getNodeAttribs($node,['file']); if ($iscsient and $iscsient->{file}) { $fileloc = $iscsient->{file}; } else { unless ($iscsiprefix) { - $callback->({error=>["$node: Unable to identify file to back iSCSI LUN, no iscsidir in site table nor iscsi.file entry for node"],errorcode=>[1]}); + $rsp{error}=["$node: Unable to identify file to back iSCSI LUN, no iscsidir in site table nor iscsi.file entry for node"]; + $rsp{errorcode}=[1]; + $callback->({node=>[\%rsp]}); + %rsp=(name=>[$node]); next; } unless (-d $iscsiprefix) { @@ -89,10 +94,16 @@ sub process_request { $iscsitab->setNodeAttribs($node,{file=>$fileloc}); } unless (-f $fileloc) { - $callback->({data=>["Creating $fileloc ($lunsize MB)"]}); + $rsp{name}=[$node]; + $rsp{data}=["Creating $fileloc ($lunsize MB)"]; + $callback->({node=>[\%rsp]}); + %rsp=(name=>[$node]); my $rc = system("dd if=/dev/zero of=$fileloc bs=1M count=$lunsize"); if ($rc) { - $callback->({error=>["$node: dd process exited with return code $rc"],errorcode=>[1]}); + $rsp{error}=["dd process exited with return code $rc"]; + $rsp{errorcode} = [1]; + $callback->({node=>[\%rsp]}); + %rsp=(name=>[$node]); next; } } @@ -111,18 +122,30 @@ sub process_request { system("tgtadm --mode target --op delete --tid ".get_tid($node)." -T $targname"); my $rc = system("tgtadm --mode target --op new --tid ".get_tid($node)." -T $targname"); if ($rc) { - $callback->({error=>["$node: tgtadm --mode target --op new --tid ".get_tid($node)." -T $targname returned $rc"],errorcode=>[$rc]}); + $rsp{error}=["tgtadm --mode target --op new --tid ".get_tid($node)." -T $targname returned $rc"]; + $rsp{errorcode} = [1]; + $callback->({node=>[\%rsp]}); + %rsp=(name=>[$node]); next; } $rc = system("tgtadm --mode logicalunit --op new --tid ".get_tid($node)." --lun 1 --backing-store $fileloc --device-type disk"); if ($rc) { - $callback->({error=>["$node: tgtadm returned $rc"],errorcode=>[$rc]}); + $rsp{error}=["tgtadm --mode logicalunit --op new --tid ".get_tid($node)." --lun 1 --backing-store $fileloc returned $rc"]; + $rsp{errorcode} = [1]; + $callback->({node=>[\%rsp]}); + %rsp=(name=>[$node]); next; } $rc = system("tgtadm --mode target --op bind --tid ".get_tid($node)." -I ".inet_ntoa(inet_aton($node))); if ($rc) { - $callback->({data=>"tgtadm --mode target --op bind --tid ".get_tid($node)."-I ".inet_ntoa(inet_aton($node))}); - $callback->({error=>["$node: Error binding $node to iSCSI target"],errorcode=>[$rc]}); + $rsp{error}=["tgtadm --mode target --op bind --tid ".get_tid($node)." -I ".inet_ntoa(inet_aton($node)) . " returned $rc"]; + $rsp{errorcode} = [1]; + $callback->({node=>[\%rsp]}); + %rsp=(name=>[$node]); + } else { + $rsp{data}=["iSCSI LUN configured"]; + $callback->({node=>[\%rsp]}); + %rsp=(name=>[$node]); } } }