6.10 and older do not detect if VirtualBox has been installed. If a VM job is assigned to a host running on an old client and the wrapper detects VirtualBox is not installed reschedule the job for execution at a later date. This prevents the client from requesting excessive amounts of work which will all fail. Eventually the job will error out when it passes its deadline.
controller to use. It can be specified by adding the following
tags to vbox_job.xml:
<vm_disk_controller_type></vm_disk_controller_type>
<vm_disk_controller_model></vm_disk_controller_model>
Executing vboxmanage --help will list the available options in the
storeagectl section.
Deleting stale snapshots now consists of enumerating the existing
snapshots and deleting all but the most recent snapshot. This fixes
the problem where, for one reason or another, a snapshot could not
be deleted at one point in time. The wrapper would just continue to
create new ones and was unable to successfully deal with the older
ones. Disk space would eventually run out.
Previously: elapsed_time was just incremented with the value of the polling
period each iteraction through the main loop. This introduced issues
when vboxmanage lagged for whatever reason. This lag could go as high as 5
seconds. Over the timespan of a day this could increase the wall clock time
of a task a great deal.
Now: elapsed_time is incremented with the time it took to execute the main
loop.
guest VM is 64-bit. 64-bit guest vms require hardware virtualization
and should fail without it.
- VBOX: Implement the <copy_to_shared/> directive in the vbox_job.xml file.
if <copy_to_shared>init_data.xml</copy_to_shared> is set, the wrapper will
copy the init_data.xml file to the shared directory before the VM is launched.
svn path=/trunk/boinc/; revision=25973
Reschedule the job for some time in the future when there might
be enough memory.
- VBOX: Resume the VM's execution after the creation of the snapshot
but before we attempt to delete the previous, now stale, snapshot.
- VBOX: Treat the 'livesnapshotting', 'deletingsnapshotlive', and
'deletingsnapshotlivepaused' states as online states.
samples/vboxwrapper/
vbox.cpp
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25473
- Perform snapshots at most once every ten minutes.
- Client suspend/resume messages behave the same.
- Client no heartbeat/quit messages cause the wrapper to just
poweroff the VM.
On startup check to see if the last checkpoint time is greater than 0,
if so, start from the most recent snapshot.
- VBOX: If we receieve the status message of no heartbeat or quit, set
the temporary delay to 5 minutes. If the wrapper is terminated during
the middle of a snapshot, hopefully this will give VirtualBox enough
time to complete the snapshot. Restarting the BOINC job should then
poweroff the VM and restore from the last snapshot.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25469
the CernVMWrapper would. This allows both wrapppers to work with
the same BOINC job generation system.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=25463
to a quit request. On older XP machines it might speed up the memory
dump to disk.
- client: Increase the quit request timeout from 10 seconds to 60 seconds for
machines running VMs and slow disk drives. It should give the VM enough
time to gracefully shutdown and not give boinc reason to kill the wrapper.
client/
app.h
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25433
before allowing another attempt to start the VM when the hypervisor
cannot allocate enough memory.
- VBOX: Print out a trace statement about the suspend/resume directive
from the vboxwrapper perspective. This in conjuction with the
BOINC API trace statements should provide a better idea with
what is going on.
samples/vboxwrapper
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25424
temporarily exit so BOINC can reschedule it for a later time.
If the problem doesn't go away it'll just time out eventually anyway.
samples/vboxsamples/
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25404
- VBOX: Switch to using status.suspend_request instead of status.suspend
when determining when to suspend/resume a VM. status.suspended is
now only changed when direct_process_action is set to true.
samples/vboxwrapper/
vboxwrapper.cpp
vbox.cpp
svn path=/trunk/boinc/; revision=25394
latency issues for volunteers.
- VBOX: If the port forwarding preferred port isn't usable, try asking
the OS for one.
- VBOX: On a failure, get the VM process exit code and report it with
the rest of the stderr spew.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25133
the server specifies 1.1 CPUs used, allocate 2 CPUs to be used
in VirtualBox.
samples/vboxwrapper
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25119
restarts of the client software. Remote desktop stopped
working if the client software was restarted.
samples/vboxwrapper
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25037
core client. Next commit will create an extra "VM Console"
button in the manager when detected. Volunteers will just have
to click the button to see what is going on with the VM.
api/
boinc_api.cpp, .h
samples/vboxwrapper
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=25035
<enable_remotedesktop/> specified in its vbox_job.xml file.
NOTE: It does require the VirtualBox extension pack, but that
is freely available on the VirtualBox download page.
samples/vboxwrapper
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=25034
message wasn't being written to stderr when the VM extensions
were disabled via the BIOS.
samples/vboxwrapper/
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25010
stderr/stdout output.
- VBOX: Undo my reorg yesterday with regards to report_vm_pid and
report_net_usage.
- VBOX: Only report network usage in the status report if
aid.global_prefs.daily_xfer_limit_mb is non-zero
- VBOX: Add the VM log to the list of things reported on a start
failure. Hypervisor log suggests that it launched the VM but
it failed unexpectedly. So there might be cases where it
actually exists.
samples/vboxwrapper/
vbox.cpp
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24992