Allow simpler config files for xcatsetup
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@8975 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
335ffc1410
commit
8f0584730e
@ -49,7 +49,7 @@ Run nodeset and rpower/rnetboot to boot up the nodes.
|
||||
|
||||
The B<xcatsetup> command is intended as a quick way to fill out the database for a cluster that has very regular
|
||||
naming patterns. The only thing it does is fill in database attributes. If your cluster does not follow consistent
|
||||
naming patterns, or has some other special configuration, you should define attribute values manually instead of using
|
||||
naming patterns, or has some other special configuration, you should define attribute values manually using L<mkdef(1)|mkdef.1>, instead of using
|
||||
B<xcatsetup>. The cluster config file is meant to be an easy way to prime the database; it is not meant to be a
|
||||
long living file that you update as the cluster changes. If you do want to run xcatsetup again at a later time,
|
||||
because, for example, you added a lot of nodes, you should put the total list of nodes in the config file, not just
|
||||
@ -64,6 +64,9 @@ use individual rows for every node, you can do the following:
|
||||
lsdef -z all >tmp.stanza
|
||||
cat tmp.stanza | chdef -z
|
||||
|
||||
Many of the sections and attributes in the configuration file can be omitted, if you have a simple cluster, or if you want
|
||||
to create just 1 or 2 of the object types at this time. See the section B<A Simpler Configuration File> for an example of this.
|
||||
|
||||
If you want to delete all of the nodes that xcatsetup created, and start over, use the B<--yesreallydeletenodes> option.
|
||||
|
||||
=head2 Restrictions
|
||||
@ -174,34 +177,51 @@ in the cluster must be specified (A-side only).
|
||||
|
||||
Here is a sample file:
|
||||
|
||||
bpc01:
|
||||
bpc1:
|
||||
objtype=node
|
||||
serial=99200G1
|
||||
mtm=9A00-100
|
||||
side=A
|
||||
|
||||
bpc02:
|
||||
bpc2:
|
||||
objtype=node
|
||||
serial=99200D1
|
||||
mtm=9A00-100
|
||||
side=A
|
||||
|
||||
...
|
||||
|
||||
=head2 Supernode Numbers for CECs
|
||||
|
||||
The B<supernode-list> file lists what supernode numbers should be given to each CEC in each frame.
|
||||
Here is a sample file:
|
||||
|
||||
bpc01: 0, 1, 16
|
||||
bpc02: 17, 32
|
||||
bpc03: 33, 48, 49
|
||||
bpc04: 64 , 65, 80
|
||||
bpc05: 81, 96
|
||||
bpc06: 97(1), 112(1), 113(1)
|
||||
bpc1: 0, 1, 16
|
||||
bpc2: 17, 32
|
||||
bpc3: 33, 48, 49
|
||||
bpc4: 64 , 65, 80
|
||||
bpc5: 81, 96
|
||||
bpc6: 97(1), 112(1), 113(1), 37(1), 55, 71
|
||||
|
||||
The name before the colon is the node name of the frame BPC. The numbers after the colon are the supernode numbers
|
||||
to assign to the groups of CECs in that frame from bottom to top. Each supernode contains 4 CECs, unless it is immediately
|
||||
followed by "(#)", in which case the number in parenthesis indicates how many CECs are in this supernode.
|
||||
|
||||
=head2 A Simpler Configuration File
|
||||
|
||||
This is an example of a simple cluster config file that just defines the frames and CECs for 2 frames, without specifying
|
||||
VPD data or supernode numbers at this time.
|
||||
|
||||
xcat-site:
|
||||
use-direct-fsp-control = 1
|
||||
|
||||
xcat-frames:
|
||||
hostname-range = bpc[1-2]
|
||||
|
||||
xcat-cecs:
|
||||
hostname-range = cec[01-24]
|
||||
num-cecs-per-frame = 12
|
||||
|
||||
=head2 Database Attributes Written
|
||||
|
||||
The following lists which database attributes are filled in as a result of each stanza. Note that depending on the values
|
||||
@ -361,5 +381,5 @@ using this option.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<mkdef(1)|mkdef.1>, L<chdef(1)|chdef.1>, L<xcatstanzafile(5)|xcatstanzafile.5>, L<noderange(3)|noderange.3>, L<nodeadd(8)|nodeadd.8>, L<lsdef(1)|lsdef.1>
|
||||
L<mkdef(1)|mkdef.1>, L<chdef(1)|chdef.1>, L<lsdef(1)|lsdef.1>, L<xcatstanzafile(5)|xcatstanzafile.5>, L<noderange(3)|noderange.3>, L<nodeadd(8)|nodeadd.8>
|
||||
|
||||
|
@ -81,6 +81,7 @@ sub process_request
|
||||
foreach my $s (split(/[\s,]+/, $SECT)) { $SECTIONS{$s} = 1; }
|
||||
}
|
||||
|
||||
#todo: support reading the config file from stdin
|
||||
my $input;
|
||||
my $filename = fullpath($ARGV[0], $request->{cwd}->[0]);
|
||||
if (!open($input, $filename)) {
|
||||
@ -441,9 +442,38 @@ sub writecec {
|
||||
# Create dynamic groups for the nodes in each cec
|
||||
$nodes = [noderange($cecrange, 0)]; # the setNodesAttribs() function blanks out the nodes array
|
||||
dynamicGroups('add', $nodes, 'parent==');
|
||||
|
||||
# Write supernode-list in ppc.supernode. While we are at it, also assign the cage id and parent.
|
||||
|
||||
$nodes = [noderange($cecrange, 0)]; # the setNodesAttribs() function blanks out the nodes array
|
||||
|
||||
# If they are taking the simple approach for now of not assigning supernode #s, but just told
|
||||
# us how many cecs should be in each frame, write: ppc.id, ppc.parent, nodelist.groups, nodepos.rack, nodepos.u
|
||||
if (!($STANZAS{'xcat-cecs'}->{'supernode-list'}) && $STANZAS{'xcat-cecs'}->{'num-cecs-per-frame'}) {
|
||||
# Loop thru all cecs, incrementing the cageid and frameindex appropriately, and put the cec attrs in the hashes.
|
||||
my $cecsperframe = $STANZAS{'xcat-cecs'}->{'num-cecs-per-frame'};
|
||||
my %ppchash;
|
||||
my %nodehash;
|
||||
my %nodeposhash;
|
||||
my $numcecs = 1; # the # of cecs we have assigned to the current frame
|
||||
my $cageid = 5; #todo: p7 ih starts at 5, but what about other models?
|
||||
my $frames = [noderange($STANZAS{'xcat-frames'}->{'hostname-range'}, 0)];
|
||||
my $frameindex = 0;
|
||||
foreach my $cec (@$nodes) {
|
||||
my $framename = $$frames[$frameindex];
|
||||
$ppchash{$cec} = { id => $cageid, parent => $framename };
|
||||
$nodehash{$cec} = { groups => "${framename}cecs,cec,all" };
|
||||
my ($framenum) = $framename =~ /\S+?(\d+)$/;
|
||||
$nodeposhash{$cec} = { rack => $framenum+0, u => $cageid };
|
||||
# increment indexes for the next iteration of the loop
|
||||
$cageid += 2;
|
||||
$numcecs++;
|
||||
if ($numcecs > $cecsperframe) { $frameindex++; $numcecs=1; $cageid=5; } #todo: p7 ih starts at 5
|
||||
}
|
||||
$tables{'ppc'}->setNodesAttribs(\%ppchash);
|
||||
$tables{'nodelist'}->setNodesAttribs(\%nodehash);
|
||||
$tables{'nodepos'}->setNodesAttribs(\%nodeposhash);
|
||||
}
|
||||
|
||||
# If they specified supernode-list, write ppc.supernode. While we are at it, also assign the cage id and parent.
|
||||
my %framesupers;
|
||||
if (!($STANZAS{'xcat-cecs'}->{'supernode-list'})) { return 1; }
|
||||
my $filename = fullpath($STANZAS{'xcat-cecs'}->{'supernode-list'}, $cwd);
|
||||
@ -460,7 +490,7 @@ sub writecec {
|
||||
foreach my $k (sort keys %framesupers) {
|
||||
my $f = $framesupers{$k}; # $f is a ptr to an array of super node numbers
|
||||
if (!$f) { next; } # in case some frame nums did not get filled in by user
|
||||
my $cageid = 3; #todo: p7 ih starts at 3, but what about other models?
|
||||
my $cageid = 5; #todo: p7 ih starts at 5, but what about other models?
|
||||
my $numcecs = 0;
|
||||
foreach my $s (@$f) { # loop thru the supernode nums in this frame
|
||||
my $supernum = $s;
|
||||
|
Loading…
Reference in New Issue
Block a user