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.


Reply via email to