You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@vcl.apache.org by Andy Kurth <an...@ncsu.edu> on 2010/01/19 19:16:11 UTC

Move response checking from provisioning module to OS module

I'd like to propose a design change for the modularized backend code.  The 
provisioning modules (xCAT.pm, vmware.pm, etc) are currently responsible for 
monitoring and waiting for the computer's OS to respond after an image has been 
loaded.  It would be better if this task were handled by the OS modules because 
the sequence of things to monitor and the appropriate timeouts vary widely among 
OS's.

This will solve a problem currently affecting Windows Server 2008, Vista, and 
most likely 2007.  Sysprep's mini-setup phase takes a horrendously long time 
with the newer OS's compared to XP and 2003.  This is causing timeouts to be 
reached before Sysprep is done.  There is currently no way to specify longer 
timeouts for the newer versions of Windows without having it apply to all OS's. 
  Having the OS module monitor and wait for the computer to respond would solve 
this problem.

To accomplish this, the waiting/monitoring responsibility would be moved to the 
post_load() subroutine in the OS module and new.pm will keep track of the 
install attempt count, passing it to load() and post_load().  The sequence is:
1. new.pm calls $provisioner->load($install_attempt)
2. new.pm calls $os->post_load($install_attempt)

The return value sent back to the new.pm module by the provisioning module's 
load() subroutine would be:
1: computer is done being loaded and ready for OS post_load()
0: error occurred, attempt image load again
undefined: error occurred, don't attempt load again

The return value sent back to new.pm from the OS module's post_load() would be:
1: computer OS is configured and ready for a reservation
0: error occurred, attempt image load again
undefined: error occurred, don't attempt load again

Having new.pm keep track of the attempt count and pass it to the load() and 
post_load() subroutines allows them to be able to use this value to adjust their 
timeouts and return values if appropriate.

This will also remove the SSH dependency from the provisioning modules.  There 
was a thread a few months ago about supporting methods other than SSH to control 
computers.  This will facilitate that feature.

I created VCL-291 and will begin to work on this.  Please reply if you have any 
thoughts or suggestions.

Thanks,
Andy