Author: arkurth
Date: Mon Apr 15 14:13:36 2013
New Revision: 1468086

URL: http://svn.apache.org/r1468086
Log:
VCL-682
Replaced call to _rinstall with a call to nodeset(install) and then 
power_reset. Calling rinstall is flaky. It often results in a 'nodeset failure' 
error. Removed _rinstall subroutine.

Modified:
    vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm

Modified: vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm
URL: 
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm?rev=1468086&r1=1468085&r2=1468086&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm Mon Apr 15 
14:13:36 2013
@@ -192,8 +192,11 @@ sub load {
                notify($ERRORS{'DEBUG'}, 0, "'$variable_name' xCAT load 
throttle limit variable is NOT set in database");
        }
        
-       # Run rinstall to initiate the installation
-       $self->_rinstall($computer_node_name) || return;
+       # Set the computer to install on next boot
+       $self->_nodeset($computer_node_name, 'install') || return;
+       
+       # Restart the node
+       $self->power_reset($computer_node_name) || return;
        
        # Run lsdef to retrieve the node's configuration including its MAC 
address
        my $node_info = $self->_lsdef($computer_node_name);
@@ -210,9 +213,8 @@ sub load {
                return;
        }
        
-       # rinstall initiated
-       #   nodeset changes xCAT state to 'install'
-       #   node is power cycled or powered on (nodeset/nodestat status: 
install/noping)
+       # nodeset changes xCAT state to 'install'
+       # node is power cycled or powered on (nodeset/nodestat status: 
install/noping)
        # Wait for node to boot from network (may take from 30 seconds to 
several minutes if node is using UEFI)
        # In /var/log/messages:, node makes DHCP request & requests PXE boot 
information from DHCP server running on management node:
        #   Apr  1 09:36:39 vclmgt dhcpd: DHCPDISCOVER from xx:xx:xx:xx:xx:xx 
via ethX
@@ -647,7 +649,7 @@ sub node_status {
                        notify($ERRORS{'DEBUG'}, 0, "nodetype.profile matches 
the reservation image name: $image_name");
                }
                else {
-                       my $return_value = 'RELOAD';
+                       my $return_value = 'INCONSISTENT';
                        notify($ERRORS{'DEBUG'}, 0, "nodetype.profile 
'$node_profile' does NOT match the reservation image name: '$image_name', 
returning '$return_value'"); 
                        return $return_value;
                }
@@ -1420,86 +1422,6 @@ sub _edit_nodetype {
 
 #/////////////////////////////////////////////////////////////////////////////
 
-=head2 _rinstall
-
- Parameters  : $computer_node_name
- Returns     : boolean
- Description : Runs xCAT's rinstall command to initiate the installation of the
-               computer.
-
-=cut
-
-sub _rinstall {
-       my $self = shift;
-       if (ref($self) !~ /xCAT/i) {
-               notify($ERRORS{'CRITICAL'}, 0, "subroutine was called as a 
function, it must be called as a class method");
-               return;
-       }
-       
-       # Get the computer name argument
-       my $computer_node_name = shift;
-       if (!$computer_node_name) {
-               notify($ERRORS{'WARNING'}, 0, "computer name argument was not 
specified");
-               return;
-       }
-       
-       # Output if blade is already powered on:
-       #   vclh3-4: install centos5-x86_64-centos5-base641008-v0
-       #   vclh3-4: on reset
-       # Output if blade is powered off:
-       #   vclh3-4: install centos5-x86_64-centos5-base641008-v0
-       #   vclh3-4: off on
-       # Output if error occurs:
-       #   vclh3-4: install centos5-x86_64-centos5-base641008-v0
-       #   vclh3-4: Error: resourceUnavailable (This is likely a out-of-memory 
failure within the agent)
-       #   rpower failure at /opt/xcat/bin/rinstall line 55.
-       # Output if entry for blade doens't exist in xCAT mac table
-       #   vclh3-4: Error: Unable to find requested mac from mac, with 
node=vclh3-4
-       #   Error: Some nodes failed to set up install resources, aborting
-       #   nodeset failure at /opt/xcat/bin/rinstall line 53.
-       
-       my $command = "$XCAT_ROOT/bin/rinstall $computer_node_name";
-       
-       my $rinstall_attempt_limit = 5;
-       my $rinstall_attempt_delay = 3;
-       my $rinstall_attempt = 0;
-       
-       RINSTALL_ATTEMPT: while ($rinstall_attempt++ < $rinstall_attempt_limit) 
{
-               if ($rinstall_attempt > 1) {
-                       # Attempt to run rinv to fix any inventory problems 
with the blade
-                       notify($ERRORS{'DEBUG'}, 0, "attempt 
$rinstall_attempt/$rinstall_attempt_limit: failed to initiate rinstall for 
$computer_node_name, running rinv then sleeping for $rinstall_attempt_delay 
seconds");
-                       $self->_rinv($computer_node_name);
-                       sleep $rinstall_attempt_delay;
-               }
-               
-               notify($ERRORS{'DEBUG'}, 0, "attempt 
$rinstall_attempt/$rinstall_attempt_limit: issuing rinstall command for 
$computer_node_name");
-               
-               my ($exit_status, $output) = $self->mn_os->execute($command);
-               if (!defined($output)) {
-                       notify($ERRORS{'WARNING'}, 0, "failed to execute 
rinstall command for $computer_node_name");
-                       return;
-               }
-               elsif (grep(/(Error:|rpower failure|nodeset failure)/i, 
$output)) {
-                       notify($ERRORS{'WARNING'}, 0, "failed to issue rinstall 
command for $computer_node_name\ncommand: $command\noutput:\n" . join("\n", 
@$output));
-                       next RINSTALL_ATTEMPT;
-               }
-               
-               # Find the line containing the node name
-               for my $line (@$output) {
-                       my ($status) = $line =~ /^$computer_node_name:\s+(.+)$/;
-                       if ($status) {
-                               notify($ERRORS{'DEBUG'}, 0, "issued rinstall 
command for $computer_node_name, status line: '$line'");
-                               return 1;
-                       }
-               }
-       }
-       
-       notify($ERRORS{'WARNING'}, 0, "failed to issue rinstall command for 
$computer_node_name, made $rinstall_attempt_limit attempts");
-       return;
-}
-
-#/////////////////////////////////////////////////////////////////////////////
-
 =head2 _lsdef
 
  Parameters  : $computer_node_name


Reply via email to