support xCAT long hostname

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@15769 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
nott 2013-04-01 17:24:37 +00:00
parent 8b680bb3b6
commit 049afdbdf0

View File

@ -56,6 +56,7 @@ sub delnode
sub addnode
{
my $callback = shift;
my $node = shift;
my $ip = shift;
@ -93,11 +94,11 @@ sub addnode
# at this point "othernames", if any is just a space
# delimited list - so just add the node name to the list
$othernames .= " $node";
$hosts[$idx] = build_line($ip, $hnode, $domain, $othernames);
$hosts[$idx] = build_line($callback, $ip, $hnode, $domain, $othernames);
} else {
# otherwise just try to completely update the existing
# entry
$hosts[$idx] = build_line($ip, $node, $domain, $othernames);
$hosts[$idx] = build_line($callback, $ip, $node, $domain, $othernames);
}
}
$foundone = 1;
@ -106,12 +107,15 @@ sub addnode
}
if ($foundone) { return; }
my $line = build_line($ip, $node, $domain, $othernames);
push @hosts, $line;
my $line = build_line($callback, $ip, $node, $domain, $othernames);
if ($line) {
push @hosts, $line;
}
}
sub build_line
{
my $callback = shift;
my $ip = shift;
my $node = shift;
my $domain = shift;
@ -147,24 +151,35 @@ sub build_line
}
unshift(@o_names, @n_names);
my $shortname;
if ($node =~ m/\.$domain$/i)
{
$longname = $node;
$node =~ s/\.$domain$//;
($shortname = $node) =~ s/\.$domain$//;
}
elsif ($domain && !$longname)
{
$shortname = $node;
$longname = "$node.$domain";
}
# if shortname contains a dot then we have a bad syntax for name
if ($shortname =~ /\./) {
my $rsp;
push @{$rsp->{data}}, "Invalid short hostname \'$shortname\'\n";
xCAT::MsgUtils->message("E", $rsp, $callback);
return undef;
}
$othernames = join(' ', @o_names);
if ($LONGNAME) { return "$ip $longname $node $othernames\n"; }
elsif ($OTHERNAMESFIRST) { return "$ip $othernames $longname $node\n"; }
else { return "$ip $node $longname $othernames\n"; }
if ($LONGNAME) { return "$ip $longname $shortname $othernames\n"; }
elsif ($OTHERNAMESFIRST) { return "$ip $othernames $longname $shortname\n"; }
else { return "$ip $shortname $longname $othernames\n"; }
}
sub addotherinterfaces
{
my $callback = shift;
my $node = shift;
my $otherinterfaces = shift;
my $domain = shift;
@ -184,7 +199,7 @@ sub addotherinterfaces
{
$itf = $node . $itf;
}
addnode $itf, $ip, '', $domain;
addnode $callback, $itf, $ip, '', $domain;
}
}
}
@ -315,7 +330,7 @@ sub process_request
}
else
{
addnode $node, $linklocal, $node, $domain;
addnode $callback, $node, $linklocal, $node, $domain;
}
}
}
@ -343,11 +358,11 @@ sub process_request
{
if (xCAT::NetworkUtils->isIpaddr($ref->{ip}))
{
addnode $ref->{node}, $ref->{ip}, $ref->{hostnames}, $domain;
addnode $callback, $ref->{node}, $ref->{ip}, $ref->{hostnames}, $domain;
}
if (defined($ref->{otherinterfaces}))
{
addotherinterfaces $ref->{node}, $ref->{otherinterfaces}, $domain;
addotherinterfaces $callback, $ref->{node}, $ref->{otherinterfaces}, $domain;
}
}
} #end foreach
@ -380,11 +395,11 @@ sub process_request
if (xCAT::NetworkUtils->isIpaddr($_->{ip}))
{
addnode $_->{node}, $_->{ip}, $_->{hostnames}, $domain;
addnode $callback, $_->{node}, $_->{ip}, $_->{hostnames}, $domain;
}
if (defined($_->{otherinterfaces}))
{
addotherinterfaces $_->{node}, $_->{otherinterfaces}, $domain;
addotherinterfaces $callback, $_->{node}, $_->{otherinterfaces}, $domain;
}
}
@ -648,7 +663,7 @@ sub donics
}
else
{
addnode $nichostname, $nicip, $nicaliases, $nicdomain, 1;
addnode $callback, $nichostname, $nicip, $nicaliases, $nicdomain, 1;
}
} # end for each index
} # end for each nic