Commit Graph

172 Commits

Author SHA1 Message Date
David Anderson 81b29b0cc9 - API: fix queueing problem for graphics-related messages
(web graphics URL and remote desktop addr)
- GUI RPC and API:
    change "remote_desktop_connection" to "remote_desktop_addr" everywhere.
    It's an address, not a connection.
- vboxwrapper: log message cleanup


svn path=/trunk/boinc/; revision=25044
2012-01-13 19:00:16 +00:00
Rom Walton fda0d55ac2 Quick Updates
svn path=/trunk/boinc/; revision=25043
2012-01-13 16:03:23 +00:00
Rom Walton 97bdbee73e - VBOX: It helps to remove the older send msg routines. Oooops.
samples/vboxwrapper
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=25042
2012-01-13 15:56:40 +00:00
Rom Walton ce4650ecbb - VBOX: Cleanup a few messages stating port numbers in the stderr spew.
- VBOX: Send configuration settings in one message instead of piece meal.
    
    api/
        boinc_api.cpp, .h
    samples/vboxwrapper
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=25041
2012-01-13 15:21:00 +00:00
Rom Walton 4538282220 - VBOX: Make sure the configured port numbers persist across
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
2012-01-13 03:12:00 +00:00
Rom Walton 2c54c9735a - VBOX: Report the remote desktop connection information to the
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
2012-01-12 20:57:23 +00:00
Rom Walton fea602b6e6 - VBOX: Enable remote desktop functionality for a VM that has
<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
2012-01-12 15:54:28 +00:00
David Anderson 125ad03a54 - vboxwrapper: add <pf_host_port> element to config file.
Specifies host port # for port forwarding.
    If absent or zero, assign a port.


svn path=/trunk/boinc/; revision=25030
2012-01-11 23:21:17 +00:00
Rom Walton 3f8ca51110 - VBOX: Fix one last regression related to failed start detection. If
only one CPU is allocated, manually disable VM hardware acceleration.
        
    samples/vboxwrapper/
        vbox.cpp

svn path=/trunk/boinc/; revision=25016
2012-01-09 15:37:26 +00:00
Rom Walton 4a92463a25 Quick Updates
svn path=/trunk/boinc/; revision=25012
2012-01-08 21:12:06 +00:00
Rom Walton 69366367c3 Quick Updates
svn path=/trunk/boinc/; revision=25011
2012-01-08 21:11:52 +00:00
Rom Walton 6d731ccc6d - VBOX: Fix regression where the ERR_CPU_VM_EXTENSIONS_DISABLED error
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
2012-01-08 20:18:14 +00:00
Rom Walton ba1169107e - VBOX: Sleep for the remainder of the polling period and not the
whole poll period.

    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp, .h

svn path=/trunk/boinc/; revision=25008
2012-01-07 20:36:48 +00:00
Rom Walton 9faee707fa - VBOX: Use sscanf instead of strtol to convert a hex string.
- VBOX: Use new FloppyIO implementation that reports image
        creation errors.


    samples/vboxwrapper/
        floppyio.cpp, .h
        vbox.cpp

svn path=/trunk/boinc/; revision=25003
2012-01-06 18:44:34 +00:00
Rom Walton f9a0ba4759 - VBOX: Extract the various logs before attempting to cleanup if the
registration process fails.
        
    samples/vboxwrapper/
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24996
2012-01-05 06:34:22 +00:00
Rom Walton a6f030beb4 - VBOX: Fix a crash bug if multiple virtual VICs are defined for a VM.
I'm not sure what the heck happened.  It probably has something to
        do with my \r removal code on Windows.  Bugs hidden by other bugs
        I suppose.

    samples/vboxwrapper/
        vbox.cpp

svn path=/trunk/boinc/; revision=24994
2012-01-04 21:59:44 +00:00
Rom Walton 449cd6a1b4 - VBOX: Move start state change detection code from run() function to
start() function and use similar code to handle stop as well.
        
        Weird stuff happens when people start/stop BOINC quickly,
        it looks as though the previous VM instance isn't shutdown before we
        attempt to start it again.  Hopefully enough of a wait is in there
        for the VM to fully halt before the wrapper is terminated.
        
    samples/vboxwrapper/
        vbox.cpp

svn path=/trunk/boinc/; revision=24993
2012-01-04 21:09:58 +00:00
Rom Walton ea726d4985 - VBOX: Use strtol instead of atol to parse Vbox error codes from
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
2012-01-04 18:21:40 +00:00
Rom Walton 3bfd0a145f - VBOX: Restore the elapsed time from the checkpoint file instead of
aid.starting_elapsed_time.  It appears some older client versions
        are giving erratic results.
        
    samples/vboxwrapper/
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24991
2012-01-03 21:46:57 +00:00
Rom Walton d2784ffc4b - VBOX: Per tester feedback, at an hourly status report to track
network usage.
    - VBOX: For errors where an error code is specified in the output,
        use that value when returning from vbm_open().  Make it easier
        to track failure rates by problem type in the ops pages.
        (Windows Only)
    - VBOX: Try making the process of extracting the hypervisor system
        log more robust, make a temp copy of it in the slot directory.
        Avoid exclusive file lock issues since VboxSvc will still be
        logging to it.
    - VBOX: Change the session lock text to make it clearer that the
        use of other VirtualBox management tools can cause a problem.

        
    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24990
2012-01-03 19:06:39 +00:00
Rom Walton b90837d6a5 Quick Updates
svn path=/trunk/boinc/; revision=24978
2012-01-02 17:07:39 +00:00
Rom Walton 5691f06dd6 - VBOX: Fix crashing issue I introduced last night attempting to
extract the hypervisor system log.
    - VBOX: Report the hypervisor system log with any failed vboxmanage
        command that happens during the phase where we setup the VM.
        
    samples/vboxwrapper/
        vbox.cpp, .h

svn path=/trunk/boinc/; revision=24977
2012-01-02 16:58:11 +00:00
Rom Walton 945267b14e - VBOX: If VirtualBox reports an error snag both the hypervisor system
log as well as the VM execution log.  Maybe the hypervisor log
        will tell us what is up with the virtual floppy device.
    - VBOX: Don't retry commands that are expected to fail in normal use
        cases.  It slows down getting the VM up and running.
    - VBOX: After starting the VM, use a timed loop waiting for the initial
        VM state change instead of just waiting for 5 seconds.  Older
        machines can take longer than 5 seconds to switch from poweroff
        to starting.  If we hit the main poll loop in that state the wrapper
        thinks we have crashed.
    - VBOX: Strip carriage returns from all the vboxmanage output on
        Windows.
        
    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24967
2012-01-02 04:30:42 +00:00
Rom Walton 0320e95637 - VBOX: Add ERR_CPU_VM_EXTENSIONS_DISABLED string to the error case where
the VM extensions for the CPU have been disabled via the BIOS.  This
        allows the core-client to parse the response and disable future
        request for multi-core VM jobs.
        
    samples/vboxwrapper/
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24940
2011-12-30 05:02:37 +00:00
Rom Walton 6fd1fa0cdb Quick Updates
svn path=/trunk/boinc/; revision=24923
2011-12-28 04:25:11 +00:00
Rom Walton d2de5056eb - VBOX: For hosts who do not have processors with VM extensions try
and disable the use of them at VM creation time.  Certain actions
        within VirtualBox will force enabling them at runtime and cause
        an error (like SMP support) but it should reduce confusion between
        volunteers and projects when a VM configuration change now causes
        a class of machine that used to work suddenly stop working.
    - VBOX: Add some more helpful text notes for error conditions that
        the volunteer might be able to address.  For instance other
        hypervisors locking the VM CPU features for exclusive use.
    - VBOX: If we have to dump out the VM execution log on Windows, remove
        excess carriage returns from the spew.
        
    samples/vboxwrapper/
        vbox.cpp
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24907
2011-12-26 16:27:24 +00:00
Rom Walton 63607c070c - VBOX: If a host has been assigned a single-core job and the
processor doesn't support hardware acceleration for VMs,
        manually turn off the hardware acceleration support in the VMs
        configuration.
        
        NOTE: The latest server scheduler should not be assigning
        multi-core jobs to hosts that do not have hardware acceleration.

    samples/vboxwrapper/
        vbox.cpp

svn path=/trunk/boinc/; revision=24905
2011-12-26 14:09:03 +00:00
David Anderson 4e50e4b852 - update_versions: support <needs_network> flag in version.xml
svn path=/trunk/boinc/; revision=24901
2011-12-26 06:03:50 +00:00
David Anderson 17e2cedefe - API/client/manager:
allow applications to supply a "web graphics URL",
    in which case the manager's "Show Graphics" button
    opens a browser at that URL.
    This typically would used for applications that
    implement a web server that serves pages showing
    job information in HTML.
- vboxwrapper: if <pf_guest_port> is specified in the config file,
    set up port forwarding to that port
    and use the above API call with URL "http://localhost:port"


svn path=/trunk/boinc/; revision=24898
2011-12-26 03:10:42 +00:00
Rom Walton 2e09c7d9a1 Quick Updates
svn path=/trunk/boinc/; revision=24897
2011-12-26 00:53:46 +00:00
Rom Walton 90db1ed0fd - VBOX: Disable hardware virtualization acceleration support by default. There
is a certain class of machines where the processor supports hardware
        acceleration but it is disabled in the computers BIOS.  Asking the volunteer
        to tweak settings in the computers BIOS isn't a good idea.  We might be able
        to turn it on as an advanced preference thing in the future.

    samples/vboxwrapper/
        vbox.cpp
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24896
2011-12-26 00:52:43 +00:00
Rom Walton 0f17e81554 - VBOX: For projects that use vboxwrapper to control how long a VM should run,
treat premature events as failures.  Avoids false positive results.
    - VBOX: Log the VM Execution log if a premature shutdown event has happened.
    - VBOX: Rename config option max_elapsed_time to job_duration.  Choosing
        max_elapsed_time turned out to be a bad choice in that its purpose
        became intermixed with the credit issue(s).

    samples/vboxwrapper/
        vbox.cpp,.h
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24894
2011-12-25 20:17:53 +00:00
Rom Walton 427688417b - VBOX: Richard Mitnick's VM didn't crash according to the latest build.
So what state did it enter?
        
    samples/vboxwrapper/
        vbox.cpp,.h

svn path=/trunk/boinc/; revision=24893
2011-12-25 14:49:21 +00:00
Rom Walton beb97b765f - VBOX: Extract and dump the VM log before attempting to delete the VM.
What was I thinking last night?
        
    samples/vboxwrapper/
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24892
2011-12-25 14:18:19 +00:00
David Anderson 7f9fc64274 - vboxwrapper: for port-forwarding feature,
allow specification of guest port only.
    Change tag to <pf_guest_port>.
    Separate getting port from registering firewall rule


svn path=/trunk/boinc/; revision=24891
2011-12-25 13:18:51 +00:00
Rom Walton 2ddd89cef3 Quick Updates
svn path=/trunk/boinc/; revision=24890
2011-12-25 06:11:36 +00:00
Rom Walton b6a188c250 - VBOX: If an error occurs only log the error once if log_error is true.
samples/vboxwrapper/
        vbox.cpp, .h
    

svn path=/trunk/boinc/; revision=24889
2011-12-25 06:04:24 +00:00
Rom Walton da28282041 Quick Updates
svn path=/trunk/boinc/; revision=24888
2011-12-25 05:25:54 +00:00
Rom Walton 59f2739cc5 - VBOX: Remove attempts to remove the floppy image from the media registry.
Apparently when the VM is removed from the VirtualBox server process
        it automatically deletes the floppy image from the media registry.
    - VBOX: If a VM crashes for one reason or another, append the VM execution
        log file to the stderr.txt file.  I believe this is what is going on with
        Richard Mitnick's computer.  At the very least we should be able to give
        this to the VirtualBox guys.
    - VBOX: Introduce a way to re-execute commands when a session lock
        event is detected.  A session lock event happens when a volunteer is
        tweaking something about the VM while vboxwrapper is attempting to query
        state information.
        
    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp, .h

svn path=/trunk/boinc/; revision=24887
2011-12-25 03:57:56 +00:00
Charlie Fenton 8bc68b6a85 VBOX: Fix "unused variable" warning
svn path=/trunk/boinc/; revision=24881
2011-12-24 00:18:25 +00:00
Rom Walton 96deec1f03 - VBOX: Rework the unique naming scheme for floppys and disk images so that the slot
id is appended after the name instead of after the extension. Avoid problems
        with the VirtualBox interface.
        
    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp, .h

svn path=/trunk/boinc/; revision=24880
2011-12-23 20:14:42 +00:00
Rom Walton 15343f23ed Quick Updates
svn path=/trunk/boinc/; revision=24879
2011-12-23 19:50:52 +00:00
Rom Walton d8efeb76c0 - VBOX: handle the case where the volunteer has not installed BOINC in the sandboxed
environment and they suspend/resume the VM by the VirtualBox application.
        
    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24878
2011-12-23 18:21:48 +00:00
Rom Walton 1524a7dd7d - VBOX: Append the slot number to the end of the floppy disk image name like we do
for virtual hard disks.
    - VBOX: Execute closemedium against the virtual floppy disks when the VM is being
        deleted.
        
    samples/vboxwrapper/
        vbox.cpp
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24877
2011-12-23 17:45:09 +00:00
Rom Walton 68568b400a - VBOX: Write the firewall rules once, after creation. If the job was suspended
and restarted it would null out the host port information.
    - VBOX: Try to make the CERN compatible datatype for FloppyIO more JSON friendly
        by following the advice of issue:
          https://github.com/stig/json-framework/issues/48
    - VBOX: Support both the old style and new style of determining assigned threads
        of execution (aka core counts).  6.12 and the early versions of 7.x support
        the old style.
        
    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp, .h

svn path=/trunk/boinc/; revision=24876
2011-12-23 17:24:28 +00:00
Rom Walton 10781f7776 - VBOX: Remove code that was meant to force the CC to reschedule jobs. There was
a bug that was fixed last night which prevented the wrapper from properly
        reporting its checkpoint time to the CC.  The lack of checkpoint information
        for the job would have prevented the CC from rescheduling the job and removing
        it from memory.  Now it can so the extra shutdown each scheduling period
        should not be needed.
        
    samples/vboxwrapper/
        vboxwrapper.cpp

svn path=/trunk/boinc/; revision=24874
2011-12-22 23:30:03 +00:00
Rom Walton 9d14b4b425 - VBOX: Try a new approach to dealing with the Windows sandbox issue. Under Windows
VboxSVC.exe is normally launched by svchost.exe which only contains environment
        variables defined by the system.  In the BOINC sandbox environment we want to
        add VBOX_USER_HOME to redirect reading/writing configuration files to a
        different directory.  What happens if we launch it ahead of making any calls to
        VBoxManage which would cause the OS to launch it?  If we launch it, it should
        inherit our environment block and work just like it works on Linux and the Mac.
        
        This is such a simple solution, why didn't I think of it sooner?
        
    samples/vboxwrapper/
        vbox.cpp

svn path=/trunk/boinc/; revision=24873
2011-12-22 19:39:38 +00:00
Rom Walton f9aff67af3 Quick Updates
svn path=/trunk/boinc/; revision=24872
2011-12-22 14:31:02 +00:00
Rom Walton dd7c904e0e Quick Updates
svn path=/trunk/boinc/; revision=24871
2011-12-22 14:29:44 +00:00
Rom Walton 4337e5d091 Quick Updates
svn path=/trunk/boinc/; revision=24870
2011-12-22 14:27:12 +00:00