Dear xCAT experts,

I've run into an issue with the behavior of makedhcp as it exists in
the trunk (at revision 11242).

In recent weeks I've used both xCAT 2.6.9 and the version of the code
in trunk to experiment with a management node running RHEL6.2 on PPC64
hardware.  I know RHEL6.2 is not currently supported.  I'm just
"pushing the outside of the envelope".  In any case, I suspect this
issue has nothing to do with the fact I'm using RHEL6.2.

The issue occurs with the trunk code (but not with the xCAT 2.6.9
code) when I try to follow the following instructions in the document
XCAT_pLinux_Clusters.

--------------------- Quote -----------------------------------------
Configure DHCP

Add the relevant networks into the DHCP configuration:

  makedhcp -n

Later, when you define your nodes to xCAT, you will also need to add
them to your DHCP configuration using makedhcp -a. Detailed
instructions are provided in that section.

Review the dhcp configuration file to ensure all the desired settings
have been made:

  [SLES] vi /etc/dhcpd.conf
  [RH] vi /etc/dhcp/dhcpd.conf

If not correct, you may need to change attributes in your site table
or networks table as appropriate.

Restart the dhcp service:

  service dhcpd restart
--------------------- End of Quote ---------------------------------

This all works fine with xCAT 2.6.9.  I see that makdhcp has made
changes to dhcp related configuration files, including dhcpd.conf, and
I see the dhcpd daemon running.

However, when I used the code in trunk, things don't work out --- dhcp
configuration files are not modified.  Furthermore, the dhcpd daemon
is not running.  When I try to start the dhcpd daemon with "service
dhcp start", the attempt fails.  When I then look in
/var/log/messages, I see dhcp errors such as the following:

--------------- Messages in /var/log/messages -----------------------
junoltc01MN dhcpd: No subnet declaration for eth1 (192.168.0.100).
junoltc01MN dhcpd: ** Ignoring requests on eth1.  If this is not what
junoltc01MN dhcpd:    you want, please write a subnet declaration
junoltc01MN dhcpd:    in your dhcpd.conf file for the network segment
junoltc01MN dhcpd:    to which interface eth1 is attached. **
junoltc01MN dhcpd:
junoltc01MN dhcpd:
junoltc01MN dhcpd: No subnet declaration for eth0 (xxx.xxx.xxx.xxx).
junoltc01MN dhcpd: ** Ignoring requests on eth0.  If this is not what
junoltc01MN dhcpd:    you want, please write a subnet declaration
junoltc01MN dhcpd:    in your dhcpd.conf file for the network segment
junoltc01MN dhcpd:    to which interface eth0 is attached. **
junoltc01MN dhcpd:
junoltc01MN dhcpd:
junoltc01MN dhcpd: Not configured to listen on any interfaces!
--------------- End of Messages in /var/log/messages -----------------

I attribute these error messages to the fact that the dhcp
configuration files were not updated by xCAT.

Later on, after I've discovered nodes, and followed the following
instructions, dhcp configuration files are updated and dhcp appears to
work just fine:

--------------------- Quote -----------------------------------------
Configure DHCP

Add the defined nodes into the DHCP configuration:

  makedhcp c250f07c04ap13

Restart the dhcp service:

  service dhcpd restart
--------------------- End of Quote ---------------------------------

In summary, it appears that makedhcp works just fine in xCAT 2.6.9,
but not in trunk.  With the code in trunk, makedhcp fails when nodes
are NOT defined to xCAT, but it works later after nodes are defined to
xCAT.

This begs the question, "what has changed between 2.6.9 and trunk that
might explain this?"

I see that in trunk there was a recent change to
xCAT-server/lib/xcat/plugins/dhcp.pm.  The change was made on
2011-12-06 in revision 11137.  "svn diff" shows the following changes
around line 787 of dhcp.pm (in routine preprocess_request):

      } else { #send the request to every dhservers
-       @requests = ({%$req});    #Start with a straight copy to reflect 
local instance
-       unless ($localonly) {
-           my @sn = xCAT::Utils->getSNList('dhcpserver');
-           if (@sn > 0) { $hasHierarchy=1; }
+        if (@nodes > 0) {
+            $req->{'node'}=\@nodes;
+                   @requests = ({%$req});    #Start with a straight 
copy to reflect local instance
+           unless ($localonly) {
+               my @sn = xCAT::Utils->getSNList('dhcpserver');
+               if (@sn > 0) { $hasHierarchy=1; }

I have not been able to spend the requisite amount of time with the
dhcp.pm code to be able understand the significance of these changes,
but I do note that whereas the code used to do something
unconditionally, it now does something only when the number of entries
in the @nodes array is greater than zero.  Is this change related to
the behavior I've seen?  Or, is there some other problem with the way
makedhcp behaves in trunk?

Regards,
Eric Agar


------------------------------------------------------------------------------
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for 
developers. It will provide a great way to learn Windows Azure and what it 
provides. You can attend the event by watching it streamed LIVE online.  
Learn more at http://p.sf.net/sfu/ms-windowsazure
_______________________________________________
xCAT-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xcat-user

Reply via email to