fix bug 3513522: provide more detailed information for 'conn' command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.7@12140 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -92,6 +92,7 @@ sub mkhwconn_parse_args | ||||
|     my $vpdtab = xCAT::Table->new( 'vpd'); | ||||
|     my @bpa_ctrled_nodes = (); | ||||
|     my @no_type_nodes    = (); | ||||
|     my @error_type_nodes = (); | ||||
|     my @frame_members    = (); | ||||
|  | ||||
|     ########################################### | ||||
| @@ -159,7 +160,8 @@ sub mkhwconn_parse_args | ||||
|             { | ||||
|                 unless ( $nodetype =~ /^(fsp|bpa|frame|cec|hmc|blade)$/) | ||||
|                 { | ||||
|                      return ( usage("Node type is incorrect. \n")); | ||||
|                      push @error_type_nodes, $node; | ||||
|                      next; | ||||
|                 } | ||||
|             } | ||||
|              | ||||
| @@ -188,9 +190,12 @@ sub mkhwconn_parse_args | ||||
|     if (scalar(@no_type_nodes)) | ||||
|     { | ||||
|         my $tmp_nodelist = join ',', @no_type_nodes; | ||||
|         return ( usage("Attribute nodetype.nodetype cannot be found for node(s) $tmp_nodelist")); | ||||
|         return ( usage("Attribute nodetype.nodetype cannot be found for node(s) $tmp_nodelist. Please define first and try again.\n")); | ||||
|     } | ||||
|     if (scalar(@error_type_nodes)) { | ||||
|         my $tmp_nodelist = join ',', @error_type_nodes; | ||||
|         return ( usage("Incorrect nodetype for nodes(s): $tmp_nodelist. Please modify first and try again.\n")); | ||||
|     } | ||||
|  | ||||
|     #if (scalar(@bpa_ctrled_nodes)) | ||||
|     #{ | ||||
|     #    my $tmp_nodelist = join ',', @bpa_ctrled_nodes; | ||||
| @@ -354,24 +359,30 @@ sub lshwconn_parse_args | ||||
|     } | ||||
|         | ||||
|     my $nodetype; | ||||
|     my @no_typenodes = (); | ||||
|     my @no_mgt_nodes = (); | ||||
|     my @error_type_nodes = (); | ||||
|     my $typehash = xCAT::DBobjUtils->getnodetype(\@{$request->{node}}, "ppc"); | ||||
|     for my $node ( @{$request->{node}}) | ||||
|     { | ||||
|         #my $ent = $nodetypetab->getNodeAttribs( $node, [qw(nodetype)]); | ||||
|         my $nodehm = $nodehmtab->getNodeAttribs( $node, [qw(mgt)]); | ||||
|         #if ( ! $ent)  | ||||
|         #{ | ||||
|         #    return( ["Failed to get node type for node $node.\n"]); | ||||
|         #} | ||||
|         my $ttype = $$typehash{$node}; | ||||
|         if ( ! $ttype) | ||||
|         if ( ! $nodehm)  | ||||
|         { | ||||
|             return( ["Failed to get nodehm.mgt value for node $node.\n"]); | ||||
|             push @no_mgt_nodes, $node; | ||||
|             next;  | ||||
|         } | ||||
|         my $ttype = $$typehash{$node}; | ||||
|         if ( !$ttype) | ||||
|         { | ||||
|             push @no_typenodes, $node; | ||||
|             next; | ||||
|         } | ||||
|         if ( $ttype ne 'fsp' and $ttype ne 'cec' | ||||
|                 and $ttype ne 'bpa' and $ttype ne 'frame' and $ttype ne 'blade') | ||||
|         { | ||||
|             return( ["Node type $ttype is not supported for this command in FSPAPI\n"]); | ||||
|             push @error_type_nodes, $node; | ||||
|             next; | ||||
|         } | ||||
|         if ( ! $nodetype) | ||||
|         { | ||||
| @@ -385,7 +396,19 @@ sub lshwconn_parse_args | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (scalar(@no_typenodes)) { | ||||
|         my $tmp_nodelist = join ',', @no_typenodes; | ||||
|         return ( ["Attribute nodetype.nodetype cannot be found for node(s): $tmp_nodelist. Please define first and try again.\n"]); | ||||
|     } | ||||
|     if (scalar(@no_mgt_nodes)) { | ||||
|         my $tmp_nodelist = join ',', @no_mgt_nodes; | ||||
|         return( ["Failed to get nodehm.mgt value for node(s) $tmp_nodelist. Please define first and try again.\n"]); | ||||
|     } | ||||
|     if (scalar(@error_type_nodes)) { | ||||
|         my $tmp_nodelist = join ',', @error_type_nodes; | ||||
|         my $link = (scalar(@error_type_nodes) == '1')? 'is':'are'; | ||||
|         return( ["Node type of node(s) $tmp_nodelist $link not supported for this command in FSPAPI.\n"]); | ||||
|     } | ||||
|     #$nodetypetab->close(); | ||||
|     $nodehmtab->close(); | ||||
|      | ||||
| @@ -461,6 +484,7 @@ sub rmhwconn_parse_args | ||||
|     return( ["Failed to open table 'nodehm'.\n"]) if (! $nodehmtab); | ||||
|     my @bpa_ctrled_nodes = (); | ||||
|     my @no_type_nodes    = (); | ||||
|     my @no_mgt_nodes = (); | ||||
|     my @frame_members    = (); | ||||
|     my $nodetype_hash = xCAT::DBobjUtils->getnodetype($nodes, "ppc"); | ||||
|     for my $node ( @$nodes) | ||||
| @@ -468,7 +492,8 @@ sub rmhwconn_parse_args | ||||
|         my $nodehm = $nodehmtab->getNodeAttribs( $node, [qw(mgt)]); | ||||
|         if ( ! $nodehm) | ||||
|         { | ||||
|             return( ["Failed to get nodehm.mgt value for node $node.\n"]); | ||||
|             push @no_mgt_nodes, $node; | ||||
|             next; | ||||
|         } | ||||
|          | ||||
| 	my $node_parent = undef; | ||||
| @@ -505,9 +530,12 @@ sub rmhwconn_parse_args | ||||
|     if (scalar(@no_type_nodes)) | ||||
|     { | ||||
|         my $tmp_nodelist = join ',', @no_type_nodes; | ||||
|         return ( usage("Attribute nodetype.nodetype cannot be found for node(s) $tmp_nodelist")); | ||||
|         return ( usage("Attribute nodetype.nodetype cannot be found for node(s) $tmp_nodelist. Please define first and try again.\n")); | ||||
|     } | ||||
|     if (scalar(@no_mgt_nodes)) { | ||||
|         my $tmp_nodelist = join ',', @no_mgt_nodes; | ||||
|         return( ["Failed to get nodehm.mgt value for node(s) $tmp_nodelist. Please define first and try again.\n"]); | ||||
|     } | ||||
|  | ||||
|     $ppctab->close(); | ||||
|     #$nodetypetab->close(); | ||||
|     $vpdtab->close(); | ||||
|   | ||||
| @@ -90,13 +90,14 @@ sub mkhwconn_parse_args | ||||
|     my @frame_members    = (); | ||||
|     if ( $ppctab) | ||||
|     { | ||||
|         my $typehash = xCAT::DBobjUtils->getnodetype($nodes, "ppc"); | ||||
|         for my $node ( @$nodes) | ||||
|         { | ||||
|             my $node_parent = undef; | ||||
|             my $nodetype    = undef; | ||||
|             #my $nodetype_hash    = $nodetypetab->getNodeAttribs( $node,[qw(nodetype)]); | ||||
|             my $node_parent_hash = $ppctab->getNodeAttribs( $node,[qw(parent)]); | ||||
|             $nodetype = $$typehash{$node}; | ||||
|             #$nodetype    = $nodetype_hash->{nodetype}; | ||||
|             $nodetype = xCAT::DBobjUtils->getnodetype($node); | ||||
|             $node_parent = $node_parent_hash->{parent}; | ||||
|             if ( !$nodetype ) | ||||
|             { | ||||
| @@ -159,7 +160,7 @@ sub mkhwconn_parse_args | ||||
|     if (scalar(@no_type_nodes)) | ||||
|     { | ||||
|         my $tmp_nodelist = join ',', @no_type_nodes; | ||||
|         return ( usage("Attribute nodetype.nodetype cannot be found for node(s) $tmp_nodelist")); | ||||
|         return ( usage("Attribute nodetype.nodetype cannot be found for node(s) $tmp_nodelist. Please define first and try again.")); | ||||
|     } | ||||
|  | ||||
|     if (scalar(@bpa_ctrled_nodes)) | ||||
| @@ -285,6 +286,9 @@ sub lshwconn_parse_args | ||||
|     } | ||||
|  | ||||
|     my $nodetype; | ||||
|     my @no_type_nodes = (); | ||||
|     my @no_mgt_nodes = (); | ||||
|     my @error_type_nodes = (); | ||||
|     for my $node ( @{$request->{node}}) | ||||
|     { | ||||
|         #my $ent = $nodetypetab->getNodeAttribs( $node, [qw(nodetype)]); | ||||
| @@ -292,11 +296,13 @@ sub lshwconn_parse_args | ||||
|         my $nodehm = $nodehmtab->getNodeAttribs( $node, [qw(mgt)]); | ||||
|         if ( ! $ttype) | ||||
|         { | ||||
|             return( ["Failed to get node type for node $node.\n"]); | ||||
|             push @no_type_nodes, $node; | ||||
|             next; | ||||
|         } | ||||
|         if ( ! $nodehm) | ||||
|         { | ||||
|             return( ["Failed to get nodehm.mgt value for node $node.\n"]); | ||||
|             push @no_mgt_nodes, $node; | ||||
|             next; | ||||
|         } | ||||
|         elsif ( $nodehm->{mgt} ne 'hmc') | ||||
|         { | ||||
| @@ -306,7 +312,8 @@ sub lshwconn_parse_args | ||||
|                 and $ttype ne 'fsp' and $ttype ne 'cec' | ||||
|                 and $ttype ne 'bpa' and $ttype ne 'frame') | ||||
|         { | ||||
|             return( ["Node type $ttype is not supported for this command.\n"]); | ||||
|             push @error_type_nodes, $node; | ||||
|             next; | ||||
|         } | ||||
|         if ( ! $nodetype) | ||||
|         { | ||||
| @@ -320,7 +327,19 @@ sub lshwconn_parse_args | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (scalar(@no_type_nodes)) { | ||||
|         my $tmp_nodelist = join ',', @no_type_nodes; | ||||
|         return( ["Failed to get node type for node(s) $tmp_nodelist. Please define first and try again\n"]); | ||||
|     } | ||||
|     if (scalar(@no_mgt_nodes)) { | ||||
|         my $tmp_nodelist = join ',', @no_mgt_nodes; | ||||
|             return( ["Failed to get nodehm.mgt value for node(s) $tmp_nodelist. Please define first and try again.\n"]); | ||||
|     } | ||||
|     if (scalar(@error_type_nodes)) { | ||||
|         my $tmp_nodelist = join ',', @error_type_nodes; | ||||
|         my $link = (scalar(@error_type_nodes) == '1')? 'is':'are'; | ||||
|         return( ["Node type of node(s) $tmp_nodelist $link not supported for this command.\n"]); | ||||
|     } | ||||
|     $request->{nodetype} = $nodetype; | ||||
|  | ||||
|     $request->{method} = 'lshwconn'; | ||||
| @@ -379,6 +398,7 @@ sub rmhwconn_parse_args | ||||
|         my $newtype = xCAT::DBobjUtils::getnodetype($node); | ||||
|         unless ($newtype) { | ||||
|             push @no_type_nodes, $node; | ||||
|             next; | ||||
|         } | ||||
|  | ||||
|         if ($newtype =~ /^(fsp|bpa)$/ ) | ||||
| @@ -422,7 +442,7 @@ sub rmhwconn_parse_args | ||||
|     if (scalar(@no_type_nodes)) | ||||
|     { | ||||
|         my $tmp_nodelist = join ',', @no_type_nodes; | ||||
|         return ( usage("Attribute nodetype.nodetype cannot be found for node(s) $tmp_nodelist")); | ||||
|         return ( usage("Attribute nodetype.nodetype cannot be found for node(s) $tmp_nodelist. Please define first and try again.\n")); | ||||
|     } | ||||
|  | ||||
|     if (scalar(@bpa_ctrled_nodes)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user