VirtualBox

Changeset 42041 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Jul 6, 2012 4:22:39 PM (13 years ago)
Author:
vboxsync
Message:

webservice/clienttest.pl: add sample code for triggering an ACPI shutdown, and fix quite a bit of API version bit rot

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/webservice/samples/perl/clienttest.pl

    r32394 r42041  
    66# programming reference (SDKRef.pdf) for how to use this sample.
    77#
    8 # Copyright (C) 2008-2010 Oracle Corporation
     8# Copyright (C) 2008-2012 Oracle Corporation
    99#
    1010# The following license applies to this file only:
     
    5151              "    $cmd version: print version of VirtualBox web service.\n".
    5252              "    $cmd list: list installed virtual machines.\n".
    53               "    $cmd startvm <vm>: start the virtual machine named <vm>.\n";
     53              "    $cmd startvm <vm>: start the virtual machine named <vm>.\n".
     54              "    $cmd acpipowerbutton <vm>: shutdown of the irtual machine named <vm>.\n";
    5455        exit 0;
    5556    }
     
    6061        $optMode = $this;
    6162    }
    62     elsif ($this eq 'startvm')
     63    elsif (    ($this eq 'startvm')
     64            || ($this eq 'acpipowerbutton')
     65          )
    6366    {
    6467        $optMode = $this;
     
    113116elsif ($optMode eq "startvm")
    114117{
    115     # assume it's a UUID
    116     my $machine = vboxService->IVirtualBox_getMachine($vbox, $vmname);
    117     if (!$machine)
    118     {
    119         # no: then try a name
    120         $machine = vboxService->IVirtualBox_findMachine($vbox, $vmname);
    121     }
     118    my $machine = vboxService->IVirtualBox_findMachine($vbox, $vmname);
    122119
    123120    die "[$cmd] Cannot find VM \"$vmname\"; stopped"
     
    134131    print "[$cmd] UUID: $uuid\n";
    135132
    136     my $progress = vboxService->IVirtualBox_openRemoteSession($vbox,
    137                                                               $session,
    138                                                               $uuid,
    139                                                               "vrdp",
    140                                                               "");
    141     die "[$cmd] Cannot open remote session; stopped"
     133    my $progress = vboxService->IMachine_launchVMProcess($machine,
     134                                                         $session,
     135                                                         "headless",
     136                                                         "");
     137    die "[$cmd] Cannot launch VM; stopped"
    142138        if (!$progress);
    143139
    144     print("[$cmd] Waiting for the remote session to open...\n");
     140    print("[$cmd] Waiting for the VM to start...\n");
    145141    vboxService->IProgress_waitForCompletion($progress, -1);
    146142
     
    154150    print("[$cmd] Result: $resultCode\n");
    155151
    156     vboxService->ISession_close($session);
     152    vboxService->ISession_unlockMachine($session);
     153
     154    vboxService->IWebsessionManager_logoff($vbox);
     155}
     156elsif ($optMode eq "acpipowerbutton")
     157{
     158    my $machine = vboxService->IVirtualBox_findMachine($vbox, $vmname);
     159
     160    die "[$cmd] Cannot find VM \"$vmname\"; stopped"
     161        if (!$machine);
     162
     163    my $session = vboxService->IWebsessionManager_getSessionObject($vbox);
     164    die "[$cmd] Cannot get session object; stopped"
     165        if (!$session);
     166
     167    my $shared = SOAP::Data->type('vbox:LockType')->name('session')->value('Shared');
     168    vboxService->IMachine_lockMachine($machine, $session, $shared);
     169
     170    my $console = vboxService->ISession_getConsole($session);
     171
     172    vboxService->IConsole_powerButton($console);
     173
     174    vboxService->ISession_unlockMachine($session);
    157175
    158176    vboxService->IWebsessionManager_logoff($vbox);
     
    160178elsif ($optMode eq "openhd")
    161179{
    162     my $harddisk = vboxService->IVirtualBox_openHardDisk($vbox, $disk, 1, 0, "", 0, "");
     180    my $medium = vboxService->IVirtualBox_openMedium($vbox, $disk, 3, # DeviceType_HardDisk
     181                                                     1, # AccessMode_ReadWrite
     182                                                     0, # false
     183                                                     "", # empty uuid
     184                                                     0, # false
     185                                                     ""); #empty uuid
    163186}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette