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 2012/01/19 17:54:37 UTC

svn commit: r1233464 - /incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm

Author: arkurth
Date: Thu Jan 19 16:54:37 2012
New Revision: 1233464

URL: http://svn.apache.org/viewvc?rev=1233464&view=rev
Log:
VCL-545
Fixed bug in State.pm:initialize. The code added to create an OS object to control the VM host was generating errors for non-VM reservations because it was calling set_vmhost_os for on VM reservations.

Modified:
    incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm

Modified: incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm
URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm?rev=1233464&r1=1233463&r2=1233464&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm Thu Jan 19 16:54:37 2012
@@ -120,21 +120,36 @@ sub initialize {
 	}
 	
 	# Create a VM host OS object if vmhostid is set for the computer
-	if ($self->data->get_computer_vmhost_id() && !$self->create_vmhost_os_object()) {
-		notify($ERRORS{'WARNING'}, 0, "failed to create VM host OS object");
-		return;
+	my $is_vm = $self->data->get_computer_vmhost_id(0);
+	if ($is_vm) {
+		notify($ERRORS{'DEBUG'}, 0, "computer is a VM, attempting to create VM host OS object");
+		if (!$self->create_vmhost_os_object()) {
+			notify($ERRORS{'WARNING'}, 0, "failed to create VM host OS object");
+			return;
+		}
+	}
+	else {
+		notify($ERRORS{'DEBUG'}, 0, "computer is NOT a VM, VM host OS object not created");
 	}
 	
 	# Create a provisioning object
-	if (!$self->create_provisioning_object()) {
+	if ($self->create_provisioning_object()) {
+		# Allow the provisioning object to access the OS object
+		$self->provisioner->set_os($self->os());
+		
+		# Allow the OS object to access the provisioning object
+		# This is necessary to allow the OS code to be able to call the provisioning power* subroutines if the OS reboot or shutdown fails
+		$self->os->set_provisioner($self->provisioner());
+	}
+	else {
 		notify($ERRORS{'WARNING'}, 0, "failed to create provisioning object");
 		return;
 	}
 	
-	# Allow the provisioning object to access the OS object and vice-versa
-	$self->provisioner->set_os($self->os());
-	$self->provisioner->set_vmhost_os($self->vmhost_os());
-	$self->os->set_provisioner($self->provisioner());
+	# Allow the provisioning object to access the VM host OS object
+	if ($is_vm) {
+		$self->provisioner->set_vmhost_os($self->vmhost_os());
+	}
 	
 	notify($ERRORS{'DEBUG'}, 0, "returning 1");
 	return 1;