2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-22 11:42:05 +00:00

Merge pull request #2770 from chenglch/getadapter

Use rinstall to replace nodeset to boot into genesis for getadapter
This commit is contained in:
Weihua Hu 2017-03-30 11:19:03 +08:00 committed by GitHub
commit dad7603eaf
3 changed files with 14 additions and 66 deletions

View File

@ -33,12 +33,11 @@ Traditionally, network interfaces in Linux are enumerated as eth[0123...], but t
\ **getadapter**\ use genesis to collect network adapters information, so that mean it need to restart the target node.
\ **getadapter**\ follows below scheme:
\ **getadapter**\ For each node within the <noderange>, follows below scheme:
If the target node is scaned for the first time, \ **getadapter**\ will trigger genesis to collect information then save the information at local.
If the target node has ever been scaned, i.e. this node has network device information in local, \ **getadapter**\ use the local information first.
If user doesn't want to use local information, can use \ **-f**\ option to force to trigger new round scan process.
if part nodes of \ *noderange*\ don't have network device information in local and the rest have, \ **getadapter**\ only trigger real scan process for these nodes which don't have local information, the nodes have network device information in local, \ **getadapter**\ still use the local information first.
If the target node is scaned for the first time, \ **getadapter**\ will trigger genesis to collect information then save the information at the \ **nicsadapter**\ column of nics table.
If the target node has ever been scaned, \ **getadapter**\ will use the information from nics table first.
If user hopes to scan the adapter information for the node but these information already exist, \ **-f**\ option can be used to start rescan process.
\ **getadapter**\ tries to collect more information for the target network device, but doesn't guarantee collect same much information for every network device.

View File

@ -14,12 +14,11 @@ Traditionally, network interfaces in Linux are enumerated as eth[0123...], but t
B<getadapter> use genesis to collect network adapters information, so that mean it need to restart the target node.
B<getadapter> follows below scheme:
B<getadapter> For each node within the <noderange>, follows below scheme:
If the target node is scaned for the first time, B<getadapter> will trigger genesis to collect information then save the information at local.
If the target node has ever been scaned, i.e. this node has network device information in local, B<getadapter> use the local information first.
If user doesn't want to use local information, can use B<-f> option to force to trigger new round scan process.
if part nodes of I<noderange> don't have network device information in local and the rest have, B<getadapter> only trigger real scan process for these nodes which don't have local information, the nodes have network device information in local, B<getadapter> still use the local information first.
If the target node is scaned for the first time, B<getadapter> will trigger genesis to collect information then save the information at the B<nicsadapter> column of nics table.
If the target node has ever been scaned, B<getadapter> will use the information from nics table first.
If user hopes to scan the adapter information for the node but these information already exist, B<-f> option can be used to start rescan process.
B<getadapter> tries to collect more information for the target network device, but doesn't guarantee collect same much information for every network device.

View File

@ -304,66 +304,16 @@ sub deploy_genesis {
my ($node, $node_desc_ptr, $callback, $subreq) = @_;
my $outref = xCAT::Utils->runxcmd(
{
command => ['nodeset'],
command => ['rinstall'],
node => ["$node"],
arg => ['runcmd=getadapter'],
},
$subreq, 0, 1);
if ($::RUNCMD_RC != 0) {
$callback->({ error => "failed to run command: nodeset $node runcmd=getadapter", errorcode => 1 });
return 1;
}
# TODO: use rinstall to replace the following code when rinstall is ready.
if ($node_desc_ptr->{mgt} eq "ipmi") {
$outref = xCAT::Utils->runxcmd(
{
command => ["rsetboot"],
node => ["$node"],
arg => ['net'],
},
$subreq, 0, 1);
if ($::RUNCMD_RC != 0) {
$callback->({ error => "failed to run command: rsetboot $node net", errorcode => 1 });
return 1;
foreach my $out (@$outref) {
$callback->({data => "$out"})
}
$outref = xCAT::Utils->runxcmd(
{
command => ['rpower'],
node => ["$node"],
arg => ['reset'],
},
$subreq, 0, 1);
if ($::RUNCMD_RC != 0) {
$callback->({ error => "failed to run command: rpower $node reset", errorcode => 1 });
return 1;
}
} elsif ($node_desc_ptr->{mgt} eq "kvm") {
$outref = xCAT::Utils->runxcmd(
{
command => ['rpower'],
node => ["$node"],
arg => ['reset'],
},
$subreq, 0, 1);
if ($::RUNCMD_RC != 0) {
$callback->({ error => "failed to run command: rpower $node reset", errorcode => 1 });
return 1;
}
} elsif ($node_desc_ptr->{mgt} eq "hmc") {
$outref = xCAT::Utils->runxcmd(
{
command => ["rnetboot"],
node => ["$node"],
},
$subreq, 0, 1);
if ($::RUNCMD_RC != 0) {
$callback->({ error => "failed to run command: rnetboot $node", errorcode => 1 });
return 1;
}
} else {
$callback->({ error => "$node: The mgt configuration is not supported by getadapter.",
errorcode => 1 });
$callback->({ error => "failed to run command: rinstall $node runcmd=getadapter", errorcode => 1 });
return 1;
}
$callback->({ data => "$node: Booting into genesis, this could take several minutes..." });
@ -495,8 +445,8 @@ sub update_adapter_result {
}
$callback->({ data => "$output" });
if (!$has_nic) {
$callback->({ data => "$node: Couldn't find interface name information detected by udevadm,"
. " the nics table will not be updated." });
$callback->({ data => "$node: nics talbe will not be updated as not any ".
"useful information could be found with udevadm command." });
return 0;
}
my $nics_table = xCAT::Table->new('nics');