-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
This commit is contained in:
jbjohnso 2008-03-04 19:38:16 +00:00
parent 21a299a1cf
commit b00f70a1e4
2 changed files with 33 additions and 7 deletions

View File

@ -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];

View File

@ -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]);
}
}
}