Advertisement
Guest User

Untitled

a guest
Aug 5th, 2011
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.83 KB | None | 0 0
  1. import org.virtualbox_4_1.AccessMode;
  2. import org.virtualbox_4_1.DeviceType;
  3. import org.virtualbox_4_1.IMachine;
  4. import org.virtualbox_4_1.IMedium;
  5. import org.virtualbox_4_1.IProgress;
  6. import org.virtualbox_4_1.ISession;
  7. import org.virtualbox_4_1.IVirtualBox;
  8. import org.virtualbox_4_1.LockType;
  9. import org.virtualbox_4_1.StorageBus;
  10. import org.virtualbox_4_1.VirtualBoxManager;
  11.  
  12. public class TestVBox {
  13.  
  14.     private static VirtualBoxManager manager = VirtualBoxManager.createInstance(null);
  15.     private static IVirtualBox virtualBox = manager.getVBox();
  16.  
  17.     private static IMachine machine;
  18.  
  19.     public static void main(String[] args) throws InterruptedException {
  20.         machine = virtualBox.createMachine(null, "Test VM", "Linux26", null, false);
  21.  
  22.         machine.setMemorySize(512L);
  23.  
  24.         machine.addStorageController("ide", StorageBus.IDE);
  25.        
  26.         machine.saveSettings();
  27.         virtualBox.registerMachine(machine);
  28.        
  29.         ISession session = manager.getSessionObject();
  30.         machine.lockMachine(session, LockType.Write);
  31.         IMachine mutable = session.getMachine();
  32.  
  33.         // Attach CD/DVD drive
  34.         mutable.attachDevice("ide", 1, 0, DeviceType.DVD, null);
  35.  
  36.         mutable.saveSettings();
  37.         session.unlockMachine();
  38.  
  39.         launchVM();
  40.  
  41.         /**
  42.          * Mount tests
  43.          */
  44.         mountIso("/images/ubuntu-11.04-desktop-amd64.iso");
  45.  
  46.         System.out.println(machine.getMedium("ide", 1, 0));
  47.  
  48.         unmountIso();
  49.  
  50.         System.out.println(machine.getMedium("ide", 1, 0));
  51.  
  52.         stopVM();
  53.  
  54.         // if I don't sleep here, there is an exception "The function "launchVMProcess" returned an error condition: "The machine 'Test VM' is already locked by a session (or being locked or unlocked)"  (0x80bb0007)"
  55.         Thread.sleep(1000);
  56.  
  57.         launchVM(); // Exception: The function "waitForCompletion" returned an error condition: "Operation aborted (NS_ERROR_ABORT)"  (0x80004004)
  58.        
  59.     }
  60.  
  61.     private static void launchVM() {
  62.         ISession session = manager.getSessionObject();
  63.  
  64.         IProgress progress = machine.launchVMProcess(session, "headless", "");
  65.         progress.waitForCompletion(5000);
  66.     }
  67.  
  68.     private static void stopVM() {
  69.         ISession session = manager.getSessionObject();
  70.         machine.lockMachine(session, LockType.Shared);
  71.  
  72.         IProgress progress = session.getConsole().powerDown();
  73.         progress.waitForCompletion(5000);
  74.  
  75.         session.unlockMachine();
  76.     }
  77.  
  78.     private static void mountIso(String isoPath) {
  79.         ISession session = manager.getSessionObject();
  80.         machine.lockMachine(session, LockType.Shared);
  81.  
  82.         IMedium medium = virtualBox.openMedium(isoPath, DeviceType.DVD, AccessMode.ReadOnly, true);
  83.         machine.mountMedium("ide", 1, 0, medium, true);
  84.        
  85.         session.unlockMachine();
  86.     }
  87.  
  88.     private static void unmountIso() {
  89.         ISession session = manager.getSessionObject();
  90.         machine.lockMachine(session, LockType.Shared);
  91.  
  92.         machine.mountMedium("ide", 1, 0, null, true);
  93.  
  94.         session.unlockMachine();
  95.     }
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement