mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 19:32:31 +00:00 
			
		
		
		
	enhance for MTM based p8 hardware discovery
This commit is contained in:
		| @@ -4232,4 +4232,68 @@ sub disableservice{ | ||||
|   xCAT::Utils->runcmd($cmd, -1); | ||||
|   return $::RUNCMD_RC; | ||||
| } | ||||
|  | ||||
| sub cleanup_for_powerLE_hardware_discovery { | ||||
|     my $host_node = shift; | ||||
|     if( $host_node =~ /xCAT::Utils/) | ||||
|     { | ||||
|         $host_node=shift; | ||||
|     } | ||||
|     my $pbmc_node = shift; | ||||
|     my $subreq = shift; | ||||
|     my $ipmitab = xCAT::Table->new("ipmi"); | ||||
|     unless($ipmitab) { | ||||
|         xCAT::MsgUtils->message("S", "Discovery Error: can not open ipmi table."); | ||||
|         return; | ||||
|     } | ||||
|     my @nodes = ($host_node, $pbmc_node); | ||||
|     my $ipmihash = $ipmitab->getNodesAttribs(\@nodes, ['node', 'bmc', 'username', 'password']); | ||||
|     if ($ipmihash) { | ||||
|         my $new_bmc_ip = $ipmihash->{$host_node}->[0]->{bmc}; | ||||
|         my $new_bmc_password = $ipmihash->{$host_node}->[0]->{password}; | ||||
|  | ||||
|         xCAT::MsgUtils->message("S", "Discovery info: configure password for pbmc_node:$pbmc_node."); | ||||
|         `rspconfig $pbmc_node password=$new_bmc_password`; | ||||
|         #if ($new_bmc_password) { | ||||
|         #    xCAT::Utils->runxcmd( | ||||
|         #        { | ||||
|         #        command => ["rspconfig"], | ||||
|         #        node => ["$pbmc_node"], | ||||
|         #        arg     => [ "password=$new_bmc_password" ], | ||||
|         #        }, | ||||
|         #        $subreq, 0,1); | ||||
|         #    if ($::RUNCMD_RC != 0) { | ||||
|         #        xCAT::MsgUtils->message("S", "Discovery Error: configure password failed for FSP."); | ||||
|         #        return; | ||||
|         #    } | ||||
|         #} | ||||
|  | ||||
|         xCAT::MsgUtils->message("S", "Discover info: configure ip:$new_bmc_ip for pbmc_node:$pbmc_node."); | ||||
|         `rspconfig $pbmc_node ip=$new_bmc_ip`; | ||||
|         #if($new_bmc_ip) { | ||||
|         #    xCAT::Utils->runxcmd( | ||||
|         #        { | ||||
|         #        command => ["rspconfig"], | ||||
|         #        node => ["$pbmc_node"], | ||||
|         #        arg     => [ "ip=$new_bmc_ip" ], | ||||
|         #        }, | ||||
|         #        $subreq, 0,1); | ||||
|         #    if ($::RUNCMD_RC != 0) { | ||||
|         #        xCAT::MsgUtils->message("S", "Discovery Error: configure IP address failed for FSP."); | ||||
|         #        return; | ||||
|         #    } | ||||
|         #} | ||||
|         xCAT::MsgUtils->message("S", "Discovery info: remove pbmc_node:$pbmc_node."); | ||||
|         `rmdef $pbmc_node`; | ||||
|         #xCAT::Utils->runxcmd( | ||||
|         #   { | ||||
|         #   command => ["rmdef"], | ||||
|         #   node => ["$pbmc_node"], | ||||
|         #   }, | ||||
|         #   $subreq, 0,1); | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| 1; | ||||
|   | ||||
| @@ -2175,76 +2175,25 @@ sub findme { | ||||
|         } | ||||
|         @nodes = keys (%nodes_hash); | ||||
|     } | ||||
|     foreach (@nodes) { | ||||
|     my $nodenum = $#nodes; | ||||
|     if ($nodenum < 0) { | ||||
|         xCAT::MsgUtils->message("S", "Discovery Error: Could not find any node."); | ||||
|         return; | ||||
|     } elsif ($nodenum > 0) { | ||||
|         xCAT::MsgUtils->message("S", "Discovery Error: More than one node were found."); | ||||
|         return; | ||||
|     } | ||||
|     { | ||||
|         my $req = {%$request}; | ||||
|         $req->{command} = ['discovered']; | ||||
|         $req->{noderange} = [$_]; | ||||
|         $req->{noderange} = [$nodes[0]]; | ||||
|         $req->{pbmc_node} = [$pbmc_node]; | ||||
|         $req->{discoverymethod} = ['mtms']; | ||||
|         $subreq->($req); | ||||
|         %{$req} = (); | ||||
|     } | ||||
|     &cleanup_for_powerLE_hardware_discovery($nodes[-1], $pbmc_node, $subreq); | ||||
| } | ||||
|  | ||||
| sub cleanup_for_powerLE_hardware_discovery { | ||||
|     my $host_node = shift; | ||||
|     my $pbmc_node = shift; | ||||
|     my $subreq = shift; | ||||
|     my $ipmitab = xCAT::Table->new("ipmi"); | ||||
|     unless($ipmitab) { | ||||
|         xCAT::MsgUtils->message("S", "Discovery Error: can not open ipmi table."); | ||||
|         return; | ||||
|     } | ||||
|     my @nodes = ($host_node, $pbmc_node); | ||||
|     my $ipmihash = $ipmitab->getNodesAttribs(\@nodes, ['node', 'bmc', 'username', 'password']); | ||||
|     if ($ipmihash) { | ||||
|         my $new_bmc_ip = $ipmihash->{$host_node}->[0]->{bmc}; | ||||
|         my $new_bmc_password = $ipmihash->{$host_node}->[0]->{password}; | ||||
|  | ||||
|         xCAT::MsgUtils->message("S", "Discover info: configure ip:$new_bmc_ip for pbmc_node:$pbmc_node."); | ||||
|         if($new_bmc_ip) { | ||||
|             xCAT::Utils->runxcmd( | ||||
|                 { | ||||
|                 command => ["rspconfig"], | ||||
|                 node => ["$pbmc_node"], | ||||
|                 arg     => [ "ip=$new_bmc_ip" ], | ||||
|                 }, | ||||
|                 $subreq, 0,1); | ||||
|             if ($::RUNCMD_RC != 0) { | ||||
|                 xCAT::MsgUtils->message("S", "Discovery Error: configure IP address failed for FSP."); | ||||
|                 return; | ||||
|             } | ||||
|             xCAT::Utils->runxcmd( | ||||
|                 { | ||||
|                 command => ["chdef"], | ||||
|                 node => ["$pbmc_node"], | ||||
|                 arg     => [ "bmc=$new_bmc_ip" ], | ||||
|                 }, | ||||
|                 $subreq, 0,1); | ||||
|         } | ||||
|         xCAT::MsgUtils->message("S", "Discovery info: configure password:$new_bmc_password for pbmc_node:$pbmc_node."); | ||||
|         if ($new_bmc_password) { | ||||
|             xCAT::Utils->runxcmd( | ||||
|                 { | ||||
|                 command => ["rspconfig"], | ||||
|                 node => ["$pbmc_node"], | ||||
|                 arg     => [ "password=$new_bmc_password" ], | ||||
|                 }, | ||||
|                 $subreq, 0,1); | ||||
|             if ($::RUNCMD_RC != 0) { | ||||
|                 xCAT::MsgUtils->message("S", "Discovery Error: configure password failed for FSP."); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|         xCAT::MsgUtils->message("S", "Discovery info: remove pbmc_node:$pbmc_node."); | ||||
|         xCAT::Utils->runxcmd( | ||||
|            { | ||||
|            command => ["rmdef"], | ||||
|            node => ["$pbmc_node"], | ||||
|            }, | ||||
|            $subreq, 0,1); | ||||
|     } | ||||
| } | ||||
| ########################################################################## | ||||
| # Process request from xCat daemon | ||||
| ########################################################################## | ||||
|   | ||||
| @@ -353,6 +353,10 @@ sub process_request { | ||||
|         $callback->({error=> ["The node [$node] should have a correct IP address which belongs to the management network."], errorcode=>["1"]}); | ||||
|         return; | ||||
|     } | ||||
|     if (defined ($request->{pbmc_node})) { | ||||
|         my $pbmc_node = $request->{pbmc_node}->[0]; | ||||
|         xCAT::Utils->cleanup_for_powerLE_hardware_discovery($node, $pbmc_node, $doreq); | ||||
|     } | ||||
|      | ||||
|     my $restartstring = "restart"; | ||||
|     if (scalar @forcenics > 0) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user