You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by ar...@apache.org on 2009/06/19 20:55:55 UTC

svn commit: r786628 - in /incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning: xCAT.pm xCAT21.pm

Author: arkurth
Date: Fri Jun 19 18:55:55 2009
New Revision: 786628

URL: http://svn.apache.org/viewvc?rev=786628&view=rev
Log:
VCL-157
xCAT.pm's image_size() sub was returning undefined if the image didn't exist, causing errors if an attempt was made to use the undefined value. I changed this sub to return 0 if the image doesn't exist, and undefined only if a problem occurred trying to get the image size.

Modified capture_monitor() in xCAT21.pm and xCAT.pm to check if result from get_image_size() is defined.

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

Modified: incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm
URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm?rev=786628&r1=786627&r2=786628&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm Fri Jun 19 18:55:55 2009
@@ -1410,15 +1410,18 @@
 		my $current_image_size = $self->get_image_size($image_name);
 
 		# Check if image size is larger than the last time it was checked
-		if ($current_image_size > $image_size) {
+		if (defined $current_image_size && $current_image_size > $image_size) {
 			notify($ERRORS{'OK'}, 0, "image size has increased: $image_size -> $current_image_size, still copying");
 			$image_size = $current_image_size;
 			#reset capture_loop_count
 			$capture_loop_count = 0;
 		}
-		else {
+		elsif (defined $current_image_size) {
 			notify($ERRORS{'OK'}, 0, "image size is the same: $image_size=$current_image_size, copy may be complete");
 		}
+		else {
+			notify($ERRORS{'WARNING'}, 0, "unable to determine current image size");
+		}
 	} ## end for (my $capture_loop_count = 0; $capture_loop_count...
 
 	# Exiting waiting loop, nodeset status should be boot if successful
@@ -3154,7 +3157,7 @@
 	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 0;
+		return;
 	}
 
 	# Either use a passed parameter as the image name or use the one stored in this object's DataStructure
@@ -3162,19 +3165,19 @@
 	$image_name = $self->data->get_image_name() if !$image_name;
 	if (!$image_name) {
 		notify($ERRORS{'CRITICAL'}, 0, "image name could not be determined");
-		return 0;
+		return;
 	}
 	notify($ERRORS{'DEBUG'}, 0, "getting size of image: $image_name");
 
 	my $image_repository_path = $self->_get_image_repository_path();
 	if (!$image_repository_path) {
 		notify($ERRORS{'CRITICAL'}, 0, "unable to determine image repository location, returning 0");
-		return 0;
+		return;
 	}
 
 	# Execute the command
 	my $du_command = "du -c $image_repository_path/$image_name.* 2>&1";
-	notify($ERRORS{'DEBUG'}, 0, "du command: $du_command");
+	#notify($ERRORS{'DEBUG'}, 0, "du command: $du_command");
 	my $du_output = `$du_command`;
 
 	# Save the exit status
@@ -3188,8 +3191,8 @@
 	
 	# Check if image doesn't exist
 	if ($du_output && $du_output =~ /No such file.*0\s+total/is) {
-		notify($ERRORS{'WARNING'}, 0, "image does not exist: $image_repository_path/$image_name.*");
-		return;
+		notify($ERRORS{'OK'}, 0, "image does not exist: $image_repository_path/$image_name.*, returning 0");
+		return 0;
 	}
 	
 	# Check the du command output

Modified: incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT21.pm
URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT21.pm?rev=786628&r1=786627&r2=786628&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT21.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT21.pm Fri Jun 19 18:55:55 2009
@@ -1534,15 +1534,16 @@
 			$status =~ s/$computer_node_name: //;
 		} ## end foreach my $l (@file)
 	} ## end if (open(NODESTAT, "$XCAT_ROOT/bin/nodestat $computer_node_name stat 2>&1 |"...
-	#else {
-		# could not run nodestat command, fall back to watching image size
-		# Check the image size to see if it's growing
-		notify($ERRORS{'OK'}, 0, "checking size of image");
-		my $size = $self->get_image_size($image_name);
+	
+	# could not run nodestat command, fall back to watching image size
+	# Check the image size to see if it's growing
+	notify($ERRORS{'OK'}, 0, "checking size of image");
+	my $size = $self->get_image_size($image_name);
+	if (defined $size) {
 		notify($ERRORS{'OK'}, 0, "retrieved size of image: $size");
 		
 		if ($size > $filesize) {
-			notify($ERRORS{'OK'}, 0, "image size has changed: $size, still copying");
+			notify($ERRORS{'OK'}, 0, "image size has changed: $filesize -> $size, still copying");
 			$filesize    = $size;
 			$fullloopcnt = 0;
 		}
@@ -1554,8 +1555,10 @@
 			}
 			$filewatchcnt++;
 		}
-		
-	#} ## end else [ if (open(NODESTAT, "$XCAT_ROOT/bin/nodestat $computer_node_name stat 2>&1 |"...
+	}
+	else {
+		notify($ERRORS{'WARNING'}, 0, "unable to retrieve current size of image");
+	}
 	
 	if ($status =~ /partimage-ng: partition/) {
 		if ($status eq $laststatus) {