You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/27 17:36:45 UTC

[9/9] git commit: JCLOUDS-758 Drop VirtualBox labs provider.

JCLOUDS-758 Drop VirtualBox labs provider.


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/75178c77
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/75178c77
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/75178c77

Branch: refs/heads/master
Commit: 75178c7708260d9d9e3a70161b88a9dd6985a726
Parents: eea1bdb
Author: Adrian Cole <ad...@apache.org>
Authored: Mon Oct 27 09:36:14 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Mon Oct 27 09:36:14 2014 -0700

----------------------------------------------------------------------
 pom.xml                                         |   1 -
 virtualbox/README.md                            | 238 ---------------
 virtualbox/pom.xml                              | 156 ----------
 .../main/java/org/jclouds/virtualbox/Host.java  |  34 ---
 .../jclouds/virtualbox/Preconfiguration.java    |  34 ---
 .../java/org/jclouds/virtualbox/VirtualBox.java |  32 --
 .../virtualbox/VirtualBoxApiMetadata.java       | 104 -------
 .../compute/LoadMachineFromVirtualBox.java      |  90 ------
 .../VirtualBoxComputeServiceAdapter.java        | 271 ----------------
 .../extensions/VirtualBoxImageExtension.java    | 168 ----------
 ...HardcodeLocalhostAsNodeMetadataSupplier.java | 130 --------
 .../VirtualBoxComputeServiceContextModule.java  | 234 --------------
 .../virtualbox/config/VirtualBoxConstants.java  |  66 ----
 .../jclouds/virtualbox/domain/BridgedIf.java    | 194 ------------
 .../jclouds/virtualbox/domain/CloneSpec.java    | 116 -------
 .../virtualbox/domain/DeviceDetails.java        | 116 -------
 .../jclouds/virtualbox/domain/ErrorCode.java    | 108 -------
 .../virtualbox/domain/ExecutionType.java        |  32 --
 .../org/jclouds/virtualbox/domain/HardDisk.java | 146 ---------
 .../org/jclouds/virtualbox/domain/IsoImage.java |  69 -----
 .../org/jclouds/virtualbox/domain/IsoSpec.java  |  92 ------
 .../org/jclouds/virtualbox/domain/Master.java   |  64 ----
 .../jclouds/virtualbox/domain/MasterSpec.java   | 117 -------
 .../jclouds/virtualbox/domain/NatAdapter.java   | 106 -------
 .../virtualbox/domain/NetworkAdapter.java       | 172 -----------
 .../virtualbox/domain/NetworkInterfaceCard.java | 122 --------
 .../jclouds/virtualbox/domain/NetworkSpec.java  |  80 -----
 .../org/jclouds/virtualbox/domain/NodeSpec.java |  89 ------
 .../jclouds/virtualbox/domain/RedirectRule.java | 101 ------
 .../virtualbox/domain/StorageController.java    | 157 ----------
 .../org/jclouds/virtualbox/domain/VmSpec.java   | 180 -----------
 .../jclouds/virtualbox/domain/YamlImage.java    | 166 ----------
 .../functions/AddIDEControllerIfNotExists.java  |  50 ---
 .../functions/ApplyBootOrderToMachine.java      |  42 ---
 .../functions/ApplyMemoryToMachine.java         |  37 ---
 .../AttachBridgedAdapterToMachine.java          |  46 ---
 .../functions/AttachHostOnlyAdapter.java        |  45 ---
 ...tachMediumToMachineIfNotAlreadyAttached.java |  55 ----
 ...chNATAdapterToMachineIfNotAlreadyExists.java |  65 ----
 .../functions/AttachNicToMachine.java           |  60 ----
 .../functions/BridgedIfStringToBridgedIf.java   |  97 ------
 ...erMachineFromIMachineIfNotAlreadyExists.java | 133 --------
 .../functions/CreateAndInstallVm.java           | 168 ----------
 ...egisterMachineFromIsoIfNotAlreadyExists.java | 184 -----------
 .../CreateMediumIfNotAlreadyExists.java         | 144 ---------
 .../DetachDistroMediumFromMachine.java          |  53 ----
 .../HardcodedHostToHostNodeMetadata.java        |  65 ----
 .../functions/IMachineToHardware.java           |  56 ----
 .../virtualbox/functions/IMachineToImage.java   |  74 -----
 .../functions/IMachineToIpAddress.java          |  95 ------
 .../functions/IMachineToNodeMetadata.java       | 164 ----------
 .../functions/IMachineToSshClient.java          |  96 ------
 .../virtualbox/functions/IMachineToVmSpec.java  |  92 ------
 .../functions/IpAddressesLoadingCache.java      |  85 ------
 .../LaunchMachineIfNotAlreadyRunning.java       |  94 ------
 .../virtualbox/functions/MacAddressToBSD.java   |  47 ---
 .../functions/MastersLoadingCache.java          | 286 -----------------
 .../virtualbox/functions/NodeCreator.java       | 294 ------------------
 .../RetrieveActiveBridgedInterfaces.java        | 118 -------
 .../virtualbox/functions/SendScancodes.java     |  71 -----
 .../virtualbox/functions/StringToKeyCode.java   |  67 ----
 .../TakeSnapshotIfNotAlreadyAttached.java       | 110 -------
 .../functions/YamlImagesFromFileConfig.java     |  64 ----
 .../functions/admin/FileDownloadFromURI.java    |  83 -----
 .../ImagesToYamlImagesFromYamlDescriptor.java   |  82 -----
 .../functions/admin/PreseedCfgServer.java       |  69 -----
 .../admin/StartVBoxIfNotAlreadyRunning.java     | 138 ---------
 ...egisterMachineIfExistsAndDeleteItsMedia.java | 125 --------
 ...erMachineIfExistsAndForceDeleteItsMedia.java | 105 -------
 .../predicates/IMachinePredicates.java          |  60 ----
 .../predicates/IMediumPredicates.java           |  91 ------
 .../predicates/RetryIfSocketNotYetOpen.java     |  94 ------
 .../virtualbox/predicates/SshAvailable.java     |  65 ----
 .../virtualbox/predicates/SshResponds.java      |  48 ---
 .../virtualbox/settings/KeyboardScancodes.java  | 162 ----------
 .../statements/DeleteGShadowLock.java           |  43 ---
 .../statements/EnableNetworkInterface.java      |  79 -----
 .../statements/GetIPAddressFromMAC.java         |  70 -----
 .../statements/InstallGuestAdditions.java       |  99 ------
 .../org/jclouds/virtualbox/statements/Md5.java  |  47 ---
 .../virtualbox/statements/PasswordlessSudo.java |  49 ---
 .../statements/ScanNetworkWithPing.java         |  56 ----
 .../virtualbox/statements/SetHostname.java      |  50 ---
 .../virtualbox/statements/SetIpAddress.java     |  70 -----
 .../virtualbox/statements/Statements.java       |  36 ---
 .../virtualbox/util/IMediumAttachments.java     |  41 ---
 .../virtualbox/util/MachineController.java      | 262 ----------------
 .../util/MachineNameOrIdAndNicSlot.java         | 131 --------
 .../jclouds/virtualbox/util/MachineUtils.java   | 280 -----------------
 .../jclouds/virtualbox/util/NetworkUtils.java   | 305 -------------------
 .../services/org.jclouds.apis.ApiMetadata       |   1 -
 .../src/main/resources/default-images.yaml      | 149 ---------
 .../resources/functions/checkVBoxService.sh     |  24 --
 .../resources/functions/cleanupUdevIfNeeded.sh  |  23 --
 .../functions/exportIpAddressFromVmNamed.sh     |  32 --
 .../main/resources/functions/getIpAddress.cmd   |  16 -
 .../main/resources/functions/getIpAddress.sh    |  32 --
 .../functions/installModuleAssistantIfNeeded.sh |  27 --
 .../BaseVirtualBoxClientLiveTest.java           | 211 -------------
 .../virtualbox/PreseedCfgServerTest.java        |  70 -----
 .../virtualbox/VirtualBoxApiMetadataTest.java   |  28 --
 ...VirtualBoxComputeServiceAdapterLiveTest.java | 115 -------
 .../VirtualBoxComputeServiceAdapterTest.java    |  84 -----
 .../compute/VirtualBoxExperimentLiveTest.java   |  85 ------
 .../VirtualBoxImageExtensionLiveTest.java       |  56 ----
 .../domain/ExportIpAddressForVMNamedTest.java   |  44 ---
 .../domain/ScanNetworkWithPingTest.java         |  37 ---
 .../jclouds/virtualbox/domain/VmSpecTest.java   |  78 -----
 .../experiment/TestConfiguration.java           |  77 -----
 .../AddIDEControllerIfNotExistsTest.java        |  87 ------
 .../functions/ApplyBootOrderToMachineTest.java  |  46 ---
 .../functions/ApplyMemoryToMachineTest.java     |  66 ----
 .../AttachBridgedAdapterToMachineTest.java      |  62 ----
 ...MediumToMachineIfNotAlreadyAttachedTest.java | 159 ----------
 ...TAdapterToMachineIfNotAlreadyExistsTest.java | 138 ---------
 .../BridgedIfStringToBridgedIfTest.java         |  68 -----
 ...eFromIMachineIfNotAlreadyExistsLiveTest.java | 135 --------
 .../functions/CreateAndInstallVmLiveTest.java   | 162 ----------
 ...achineFromIsoIfNotAlreadyExistsLiveTest.java | 123 --------
 ...terMachineFromIsoIfNotAlreadyExistsTest.java | 162 ----------
 .../CreateMediumIfNotAlreadyExistsLiveTest.java |  88 ------
 .../CreateMediumIfNotAlreadyExistsTest.java     | 242 ---------------
 .../DetachDistroMediumFromMachineTest.java      | 106 -------
 .../functions/IMachineToHardwareTest.java       |  69 -----
 .../functions/IMachineToImageTest.java          | 156 ----------
 .../functions/IMachineToNodeMetadataTest.java   | 140 ---------
 .../functions/IMachineToVmSpecTest.java         |  99 ------
 .../LaunchMachineIfNotAlreadyRunningTest.java   |  68 -----
 .../functions/MacAddressToBSDTest.java          |  37 ---
 ...trieveActiveBridgedInterfacesExpectTest.java |  56 ----
 .../TakeSnapshotIfNotAlreadyAttachedTest.java   | 105 -------
 .../admin/ImageFromYamlStringTest.java          |  57 ----
 .../StartVBoxIfNotAlreadyRunningLiveTest.java   |  64 ----
 ...terMachineIfExistsAndDeleteItsMediaTest.java |  81 -----
 .../GuestAdditionsInstallerLiveTest.java        | 136 ---------
 .../predicates/IMachinePredicatesLiveTest.java  | 117 -------
 .../predicates/RetryIfSocketNotYetOpenTest.java |  83 -----
 .../InstallGuestAdditionsLiveTest.java          |  60 ----
 .../statements/InstallGuestAdditionsTest.java   |  76 -----
 .../virtualbox/statements/PasswordlessTest.java |  34 ---
 .../virtualbox/statements/SetIpAddressTest.java |  64 ----
 .../util/MachineControllerLiveTest.java         | 125 --------
 .../virtualbox/util/MachineUtilsLiveTest.java   | 181 -----------
 virtualbox/src/test/resources/.gitattributes    |   1 -
 .../src/test/resources/default-images.yaml      | 151 ---------
 .../test/resources/default-keystroke-sequence   |  19 --
 virtualbox/src/test/resources/logback.xml       |  76 -----
 .../resources/redHatAndDerivatives/hostOnly     |  26 --
 .../src/test/resources/redHatAndDerivatives/nat |  30 --
 .../test_export_ip_address_from_vm_named.sh     |  29 --
 .../src/test/resources/test_get_ip_address.cmd  |   0
 .../src/test/resources/test_get_ip_address.sh   |  29 --
 .../resources/test_guest_additions_installer.sh |   6 -
 .../test_guest_additions_installer_init.sh      | 223 --------------
 154 files changed, 14813 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ebedd4d..6b91b42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,6 @@
   <modules>
     <module>azurecompute</module>
     <module>docker</module>
-    <module>virtualbox</module>
     <module>vcloud-director</module>
     <module>cdmi</module>
     <module>cloudsigma2</module>

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/README.md
----------------------------------------------------------------------
diff --git a/virtualbox/README.md b/virtualbox/README.md
deleted file mode 100644
index 84fd2d6..0000000
--- a/virtualbox/README.md
+++ /dev/null
@@ -1,238 +0,0 @@
-# VirtualBox as a local cloud provider
-jclouds-virtualbox is a local cloud provider modelled on the virtualbox hypervisor. Similar to other jclouds supported providers, it supports the same portable abstractions offered by jclouds.
-
-##Setup
-
-Please follow these steps to configure your workstation for jclouds-virtualbox:
-
-- install the latest VirtualBox release (please visit https://www.virtualbox.org/wiki/Downloads)
-- assign passwordless ssh and passwordless sudo rights to your user
-
-### Passwordless ssh
-
-jclouds-virtualbox uses the current user.name and private key  for sending commands to localhost over ssh.
-
-The current user (user.name) should have passwordless ssh. On a *nix system, you can enable this feature using `ssh-keygen` and `ssh-copy-id`.
-
-- ssh-keygen \- creates the public and private keys (by default in `${user.home}/.ssh/id_rsa.pub` and `${user.home}/.ssh/id_rsa`)
-> $ ssh-keygen
-- ssh-copy-id \- copies the user’s public key to a specified host’s `authorized_keys` file. 
-ssh-copy-id also assigns proper permission to the remote-host’s home, ~/.ssh, and ~/.ssh/authorized_keys
-
-In this case:
-> $ ssh-copy-id -i ~/.ssh/id_rsa your-user@localhost
-
-If your system does not have an `ssh-copy-id` command, use something like this:
-> $ cat ~/.ssh/id_rsa.pub | ssh your-user@localhost "cat -> ~/.ssh/authorized_keys"
-
-### Passwordless sudo
-
-You need to have passwordless sudo rights on localhost. This is done by editing the sudoers file (/etc/sudoers). Use caution when editing this file, as introducing errors will lock you out of the system. Therefore, it is recommended to edit this file through the visudo command.
-
-The sudoers file should have a line like this (replace your-user):
-> your-user    ALL=(ALL)   NOPASSWD: ALL
-
-At this point, you should be able to login to localhost with `ssh your-user@localhost` without password.
-
-#How it works
-
-
-                                              ---------------   -------------
-                                             |   Image(s)    | |   Node(s)   | 
-                                              ---------------   -------------
-                                              -------------------------------  -------
-                                             |          VirtualBox           || Jetty |
-                                              -------------------------------  -------
-     ---------    passwordless ssh+sudo       ----------------------------------------
-    | jclouds | ---------------------------> |                 localhost              |
-     ---------                                ----------------------------------------
-
-###Components
-- jclouds \- acts as a java (or clojure) client to access to virtualbox functionalities
-- localhost \- hosts the VirtualBox hypervisor and a jetty server which is automatically installed by jclouds-virtualbox during Images creation
-- VirtualBox \- jclouds-virtualbox assumes that the latest VirtualBox is installed (please see https://www.virtualbox.org/wiki/Downloads)
-- Jetty \- in this scenario, this http server is used to serve the preseed.cfg specified in YAML descriptor file
-- Image \- it logically represents a master VM (Virtual Machine) that can be cloned. It is a union of 2 sets of entities: 
-    * a list of supported images, described in the YAML descriptor files
-    * a list of existing virtualbox VMs with name starting with "jclouds-image-0x0-"
-- Node \- is a virtualbox VM, linked cloned from another virtualbox VM marked as Image
-
-## Image creation
-
-                        ssh                   --------------- 
-        /----------------------------------> |   Image(s)    |
-        |                                     --------------- 
-        |                                     -------------------------------  -------
-        |                                    |          VirtualBox           || Jetty |
-        |                                     -------------------------------  -------
-     ---------    passwordless ssh+sudo       ----------------------------------------
-    | jclouds | ---------------------------> |                 localhost              |
-     ---------                                ----------------------------------------
-
-The OS supported by jclouds-virtualbox are described in a YAML file `default-images.yaml` stored at `src/main/resources/`.
-
-For each OS supported, it stores the following information:
-a unique id, a name, a description, an os_arch, os_family, os_description, os_version, the iso url, the iso md5, username and credential to access this vm, a keystroke sequence for the OS installer and a preseed configuration file that contains the settings for this OS installation.
-
-For example, the corresponding YAML section for ubuntu 10.04.4 server (32 bit) looks like:
-
-    - id: ubuntu-10.04.4-server-i386
-      name: ubuntu-10.04-server-i386
-      description: ubuntu 10.04.4 server (i386)
-      os_arch: x86
-      os_family: ubuntu
-      os_description: ubuntu
-      os_version: 10.04.4
-      iso: http://releases.ubuntu.com/10.04.4/ubuntu-10.04.4-server-i386.iso
-      iso_md5: fc08a01e78348e3918180ea91a6883bb
-      username: toor
-      credential: password      
-      keystroke_sequence: |
-                <Esc><Esc><Enter> 
-                /install/vmlinuz noapic preseed/url=http://10.0.2.2:8080/src/test/resources/preseed.cfg 
-                debian-installer=en_US auto locale=en_US kbd-chooser/method=us 
-                hostname=vmName 
-                fb=false debconf/frontend=noninteractive
-                console-setup/ask_detect=false console-setup/modelcode=pc105 console-setup/layoutcode=us
-                initrd=/install/initrd.gz -- <Enter>
-      preseed_cfg: |
-                      ## Options to set on the command line
-                      d-i debian-installer/locale string en_US
-                      d-i console-setup/ask_detect boolean false
-                      d-i console-setup/layoutcode string us
-                      d-i netcfg/get_hostname string unassigned-hostname
-                      d-i netcfg/get_domain string unassigned-domain
-                      d-i time/zone string UTC
-                      d-i clock-setup/utc-auto boolean true
-                      d-i clock-setup/utc boolean true
-                      d-i kbd-chooser/method select   American English
-                      d-i netcfg/wireless_wep string
-                      d-i base-installer/kernel/override-image string linux-server
-                      d-i debconf debconf/frontend select Noninteractive
-                      d-i pkgsel/install-language-support boolean false
-                      tasksel tasksel/first multiselect standard, ubuntu-server
-                      d-i partman-auto/method string lvm
-                      #d-i partman-auto/purge_lvm_from_device boolean true
-                      d-i partman-lvm/confirm boolean true
-                      d-i partman-lvm/device_remove_lvm boolean true
-                      d-i partman-auto/choose_recipe select atomic
-                      d-i partman/confirm_write_new_label boolean true
-                      d-i partman/confirm_nooverwrite boolean true
-                      d-i partman/choose_partition select finish
-                      d-i partman/confirm boolean true
-                      # Write the changes to disks and configure LVM?
-                      d-i partman-lvm/confirm boolean true
-                      d-i partman-lvm/confirm_nooverwrite boolean true
-                      d-i partman-auto-lvm/guided_size string max
-                      ## Default user, we can get away with a recipe to change this
-                      d-i passwd/user-fullname string toor
-                      d-i passwd/username string toor
-                      d-i passwd/user-password password password
-                      d-i passwd/user-password-again password password
-                      d-i user-setup/encrypt-home boolean false
-                      d-i user-setup/allow-password-weak boolean true
-                      d-i pkgsel/include string openssh-server ntp
-                      # Whether to upgrade packages after debootstrap.
-                      # Allowed values: none, safe-upgrade, full-upgrade
-                      d-i pkgsel/upgrade select full-upgrade
-                      d-i grub-installer/only_debian boolean true
-                      d-i grub-installer/with_other_os boolean true
-                      d-i finish-install/reboot_in_progress note
-                      #For the update
-                      d-i pkgsel/update-policy select none
-                      # debconf-get-selections --install
-                      #Use mirror
-                      choose-mirror-bin mirror/http/proxy string
-
-The OS isos and guest additions isos will be stored in the jclouds working directory (by default ~/.jclouds-vbox/isos/)
-
-##Cloning nodes
-
-              ssh                              ---------------   -------------
-        /----------------------------------> |    Node(s)    | |    Image    | 
-        |                                     ---------------   -------------
-        |                                     ------------------------------- 
-        |                                    |          VirtualBox           |
-        |                                     ------------------------------- 
-     ---------    (a) passwordless ssh+sudo   ----------------------------------------
-    | jclouds | ---------------------------> |                 localhost              |
-     ---------                                ----------------------------------------
-
-###Cloning strategy
-By default, a new node is cloned from a matching 'Image' with 'CloneOptions.Link'. This advanced option will save a lot of disk space and installation time as opposed to creating completely unique VMs for each new node.
-
-### Networking
-Each Node will have 2 NICs (Network Interface Cards) to enable an NAT+Host-Only networking strategy:
-
-* NIC1 at port 0 will be attached to Host-Only network to allow localhost-nodes communication and node-node communication
-* NIC2 at port 1 will be attached to NAT network to give each node internet access
-
---------------
-
-#Interacting with jclouds-vbox and connecting to machines
-
-For java guidance, please see [src/test/java/org/jclouds/virtualbox/compute/VirtualBoxExperimentLiveTest.java].  
-For now nat+host-only is the only available network configuration, nodes should be accessible from the host by:
-
-     ssh user@192.168.56.X  
-
-where:
-
-- user \- has passwordless ssh and sudo rights
-- X (2-253) \- is assigned by DHCP server of `vboxnet0`
-
---------------
-
-
-#Customization
-
-##Identity and Credential
-By default, jclouds-virtualbox will try to use the current user (with passwordless ssh and sudo rights), but you can also override this default by specifying 
-`-Dvirtualbox.identity` and `-Dvirtualbox.credential`, if you want to use another user available on your local machine.
-
-##Preseed file
-In order to make available a preseed file, jclouds-virtualbox will start a PreseedServer at `http://localhost:23232` that will serve a preseed.cfg file.
-Make sure your firewall rules are not blocking this port.
-If you need to override this default you can use `-Djclouds.virtualbox.preconfigurationurl=http://localhost:PORT/preseed.cfg`, with a different PORT.
-
-##Working directory
-By default, cached isos for the OSs, guest additions, VMs and most configs are kept at the default working directory named `~/.jclouds-vbox/`, 
-you can override the default working directory using `-Dtest.virtualbox.workingDir=/path/to/your/workingDir`.
-
-##Host-Only network
-jclouds-virtualbox needs an Host-Only network with DHCP enabled. This DHCP server will be responsible for assigning local IP addresses to the Nodes created by jclouds-virtualbox.
-
-jclouds-virtualbox will automatically create an Host-Only network with these settings:
-
-- IPv4: 192.168.56.1
-- IPv4 Network Mask: 255.255.255.0
-- DHCP Server: enabled
-
-with
-- Server Address: 192.168.56.254
-- Server Mask: 255.255.255.0
-- Lower Address Bound: 192.168.56.2
-- Upper Address Bound: 192.168.56.253
-
-Check virtualbox->Preferences->Networks for more details.
-
-**NB**: jclouds-virtualbox will not edit/replace a pre-exisiting Host-Only network.
-
---------------
-
-#Notes:
-
-- jclouds-virtualbox is still at alpha stage please report any issues you find at [jclouds issues](https://github.com/jclouds/jclouds/issues?state=open) or [jclouds google group](http://groups.google.com/group/jclouds).
-- jclouds-virtualbox has been tested on Mac OSX, it might work on Linux iff vbox is running and set up correctly. However, it will not currently run on Windows.
-
---------------
-
-#Troubleshooting
-
-As jclouds vbox support is quite new, issues may occasionally arise. Please follow these steps to get things going again:
-
-1. Remove all relevant VMs (named "jclouds-* ") with the vbox GUI. Make sure to select "delete all files". This step will solve most issues.
-2. If you are still receiving errors, please try the following steps to resolve any issues:
-     * Kill all vbox processes (VboxHadless, VBoxSVC, VBoxXPCOMIPCD, VirtualBox, vboxwebsrv)
-     * Manually delete the files by executing: "rm -rf ~/.jclouds-vbox/jclouds-*"
-     * Restart the vbox GUI and make sure to delete all remaining machines while ignoring all errors

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/pom.xml
----------------------------------------------------------------------
diff --git a/virtualbox/pom.xml b/virtualbox/pom.xml
deleted file mode 100644
index da72c7f..0000000
--- a/virtualbox/pom.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.jclouds.labs</groupId>
-    <artifactId>jclouds-labs</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
-  </parent>
-
-  <!-- TODO: when out of labs, switch to org.jclouds.api -->
-  <groupId>org.apache.jclouds.labs</groupId>
-  <artifactId>virtualbox</artifactId>
-  <name>jclouds virtualbox api</name>
-  <description>jclouds components to access an implementation of virtualbox</description>
-  <packaging>bundle</packaging>
-
-  <properties>
-    <virtualbox.version>4.2.8</virtualbox.version>
-    <test.virtualbox.endpoint>http://localhost:18083/</test.virtualbox.endpoint>
-    <test.virtualbox.api-version>4.2.8</test.virtualbox.api-version>
-    <test.virtualbox.build-version>${virtualbox.version}</test.virtualbox.build-version>
-    <test.virtualbox.identity>${user.name}</test.virtualbox.identity>
-    <test.virtualbox.credential>CHANGE_ME</test.virtualbox.credential>
-    <test.virtualbox.template>osFamily=UBUNTU,osVersionMatches=12.04.1,os64Bit=true,osArchMatches=amd64,loginUser=toor:password,authenticateSudo=true</test.virtualbox.template>
-    <jclouds.osgi.export>org.jclouds.virtualbox*;version="${project.version}"</jclouds.osgi.export>
-    <jclouds.osgi.import>
-      org.jclouds.labs*;version="${project.version}",
-      org.jclouds*;version="${jclouds.version}",
-      org.eclipse.jetty*;version="[7.5,9)",
-      javax.servlet*;version="[2.5,3)",
-      *
-    </jclouds.osgi.import>
-  </properties>
-  
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-compute</artifactId>
-      <version>${jclouds.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.virtualbox</groupId>
-      <artifactId>vboxjws</artifactId>
-      <version>${virtualbox.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.api</groupId>
-      <artifactId>byon</artifactId>
-      <version>${jclouds.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-security</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-server</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.driver</groupId>
-      <artifactId>jclouds-sshj</artifactId>
-      <version>${jclouds.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.driver</groupId>
-      <artifactId>jclouds-slf4j</artifactId>
-      <version>${jclouds.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <scope>test</scope>
-    </dependency>    
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-core</artifactId>
-      <version>${jclouds.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-compute</artifactId>
-      <version>${jclouds.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.testng</groupId>
-      <artifactId>testng</artifactId>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>snakeyaml</artifactId>
-          <groupId>org.yaml</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <profile>
-      <id>live</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>integration</id>
-                <phase>integration-test</phase>
-                <goals>
-                  <goal>test</goal>
-                </goals>
-                <configuration>
-                  <threadCount>1</threadCount>
-                  <parallel>false</parallel>
-                  <systemPropertyVariables>
-                    <test.virtualbox.endpoint>${test.virtualbox.endpoint}</test.virtualbox.endpoint>
-                    <test.virtualbox.api-version>${test.virtualbox.api-version}</test.virtualbox.api-version>
-                    <test.virtualbox.build-version>${test.virtualbox.build-version}</test.virtualbox.build-version>
-                    <test.virtualbox.identity>${test.virtualbox.identity}</test.virtualbox.identity>
-                    <test.virtualbox.credential>${test.virtualbox.credential}</test.virtualbox.credential>
-                    <test.virtualbox.template>${test.virtualbox.template}</test.virtualbox.template>
-                  </systemPropertyVariables>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
-</project>

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/Host.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/Host.java b/virtualbox/src/main/java/org/jclouds/virtualbox/Host.java
deleted file mode 100644
index d2fb65a..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/Host.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import javax.inject.Qualifier;
-
-/**
- * Signals the annotated target pertains to the vbox host and not to one of the nodes.
- */
-@Retention(value = RetentionPolicy.RUNTIME)
-@Target(value = { ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD })
-@Qualifier
-public @interface Host {
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/Preconfiguration.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/Preconfiguration.java b/virtualbox/src/main/java/org/jclouds/virtualbox/Preconfiguration.java
deleted file mode 100644
index 11718db..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/Preconfiguration.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import javax.inject.Qualifier;
-
-/**
- * Relating to a preseed or KickStart source
- */
-@Retention(value = RetentionPolicy.RUNTIME)
-@Target(value = { ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD })
-@Qualifier
-public @interface Preconfiguration {
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/VirtualBox.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/VirtualBox.java b/virtualbox/src/main/java/org/jclouds/virtualbox/VirtualBox.java
deleted file mode 100644
index e745160..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/VirtualBox.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox;
-
-import org.virtualbox_4_2.VirtualBoxManager;
-
-public class VirtualBox {
-
-   private VirtualBoxManager manager;
-
-   public VirtualBox() {
-      this.manager = VirtualBoxManager.createInstance("");
-   }
-
-   public VirtualBoxManager manager() {
-      return manager;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/VirtualBoxApiMetadata.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/VirtualBoxApiMetadata.java b/virtualbox/src/main/java/org/jclouds/virtualbox/VirtualBoxApiMetadata.java
deleted file mode 100644
index 51f2bb2..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/VirtualBoxApiMetadata.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox;
-
-import static org.jclouds.compute.config.ComputeServiceProperties.TEMPLATE;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_DEFAULT_DIR;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_GUEST_MEMORY;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_IMAGES_DESCRIPTOR;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_PRECONFIGURATION_URL;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_WORKINGDIR;
-
-import java.io.File;
-import java.net.URI;
-import java.util.Properties;
-
-import org.jclouds.apis.internal.BaseApiMetadata;
-import org.jclouds.compute.ComputeServiceContext;
-import org.jclouds.virtualbox.config.HardcodeLocalhostAsNodeMetadataSupplier;
-import org.jclouds.virtualbox.config.VirtualBoxComputeServiceContextModule;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-
-/**
- * Implementation of {@link ApiMetadata} for VirtualBox API
-
- */
-public class VirtualBoxApiMetadata extends BaseApiMetadata {
-
-   @Override
-   public Builder toBuilder() {
-      return new Builder().fromApiMetadata(this);
-   }
-
-   public VirtualBoxApiMetadata() {
-      this(new Builder());
-   }
-
-   protected VirtualBoxApiMetadata(Builder builder) {
-      super(builder);
-   }
-
-   public static Properties defaultProperties() {
-      Properties properties = BaseApiMetadata.defaultProperties();
-
-      String workingDir = System.getProperty("test.virtualbox.workingDir", VIRTUALBOX_DEFAULT_DIR);
-      properties.put(VIRTUALBOX_WORKINGDIR, workingDir);
-
-      String ram = System.getProperty(VIRTUALBOX_GUEST_MEMORY, "512");
-      properties.put(VIRTUALBOX_GUEST_MEMORY, ram);
-      
-      String yamlDescriptor = System.getProperty("test.virtualbox.image.descriptor.yaml", VIRTUALBOX_WORKINGDIR
-               + File.separator + "images.yaml");
-
-      properties.put(VIRTUALBOX_IMAGES_DESCRIPTOR, yamlDescriptor);
-      properties.put(VIRTUALBOX_PRECONFIGURATION_URL, "http://10.0.2.2:23232");
-      properties.setProperty(TEMPLATE, "osFamily=UBUNTU,osVersionMatches=12.04.1,os64Bit=true,osArchMatches=amd64");
-      return properties;
-   }
-
-   public static class Builder extends BaseApiMetadata.Builder<Builder> {
-
-      protected Builder() {
-         id("virtualbox")
-         .name("VirtualBox API")
-         .identityName("User")
-         .credentialName("Password")
-         .documentation(URI.create("https://www.virtualbox.org/sdkref/index.html"))
-         .defaultIdentity(System.getProperty("user.name"))
-         .defaultCredential("CHANGE_ME")
-         .defaultEndpoint("http://localhost:18083/")
-         .documentation(URI.create("https://github.com/jclouds/jclouds/tree/master/labs/virtualbox"))
-         .version("4.2.8")
-         .buildVersion("4.2.8")
-         .defaultProperties(VirtualBoxApiMetadata.defaultProperties())
-         .view(ComputeServiceContext.class)
-         .defaultModules(ImmutableSet.<Class<? extends Module>>of(HardcodeLocalhostAsNodeMetadataSupplier.class, VirtualBoxComputeServiceContextModule.class));
-      }
-
-      @Override
-      public VirtualBoxApiMetadata build() {
-         return new VirtualBoxApiMetadata(this);
-      }
-
-      @Override
-      protected Builder self() {
-         return this;
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/compute/LoadMachineFromVirtualBox.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/compute/LoadMachineFromVirtualBox.java b/virtualbox/src/main/java/org/jclouds/virtualbox/compute/LoadMachineFromVirtualBox.java
deleted file mode 100644
index 5e02162..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/compute/LoadMachineFromVirtualBox.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox.compute;
-
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_MACHINE_CREDENTIAL;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_MACHINE_GROUP;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_MACHINE_LOCATION;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_MACHINE_USERNAME;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import javax.inject.Inject;
-
-import org.jclouds.byon.Node;
-import org.jclouds.compute.domain.OsFamily;
-import org.virtualbox_4_2.IGuestOSType;
-import org.virtualbox_4_2.IMachine;
-import org.virtualbox_4_2.VirtualBoxManager;
-
-import com.google.common.base.Function;
-import com.google.common.cache.CacheLoader;
-
-/**
- * Loads a node from a VirtualBox IMachine
- */
-public class LoadMachineFromVirtualBox extends CacheLoader<String, Node> {
-
-   private VirtualBoxManager manager;
-   private Function<IMachine, String> iMachineToIpAddress;
-
-   @Inject
-   public LoadMachineFromVirtualBox(VirtualBoxManager manager, Function<IMachine, String> iMachineToIpAddress) {
-      this.manager = manager;
-      this.iMachineToIpAddress = iMachineToIpAddress;
-   }
-
-   @Override
-   public Node load(final String id) throws Exception {
-
-      if (id.equals("host")) {
-         final Node hostNode = Node.builder().id("host").name("host installing virtualbox").hostname("localhost")
-               .osFamily(OsFamily.LINUX.toString()).osDescription(System.getProperty("os.name"))
-               .osVersion(System.getProperty("os.version")).group("ssh").username(System.getProperty("user.name"))
-               .credentialUrl(privateKeyFile()).build();
-         return hostNode;
-      }
-
-      final IMachine machine = manager.getVBox().findMachine(id);
-      final String ipAddress = iMachineToIpAddress.apply(machine);
-      final String osTypeId = machine.getOSTypeId();
-      final IGuestOSType guestOSType = manager.getVBox().getGuestOSType(osTypeId);
-
-      final Node node = Node.builder().id(machine.getId()).name(machine.getName())
-            .description(machine.getDescription()).loginPort(22).group(System.getProperty(VIRTUALBOX_MACHINE_GROUP))
-            .username(System.getProperty(VIRTUALBOX_MACHINE_USERNAME))
-            .credential(System.getProperty(VIRTUALBOX_MACHINE_CREDENTIAL))
-            .sudoPassword(System.getProperty(VIRTUALBOX_MACHINE_CREDENTIAL))
-            .locationId(System.getProperty(VIRTUALBOX_MACHINE_LOCATION)).os64Bit(guestOSType.getIs64Bit())
-            .osArch(guestOSType.getDescription()).osFamily(guestOSType.getFamilyDescription())
-            .osVersion(guestOSType.getId()).osDescription(guestOSType.getDescription()).hostname(ipAddress).build();
-
-      return node;
-
-   }
-
-   private static URI privateKeyFile() {
-      try {
-         return new URI("file://" + System.getProperty("user.home") + "/.ssh/id_rsa");
-      } catch (URISyntaxException e) {
-         e.printStackTrace();
-      }
-      return null;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/compute/VirtualBoxComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/compute/VirtualBoxComputeServiceAdapter.java b/virtualbox/src/main/java/org/jclouds/virtualbox/compute/VirtualBoxComputeServiceAdapter.java
deleted file mode 100644
index 61c459b..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/compute/VirtualBoxComputeServiceAdapter.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox.compute;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.Iterables.contains;
-import static com.google.common.collect.Iterables.filter;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_IMAGE_PREFIX;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_NODE_NAME_SEPARATOR;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_NODE_PREFIX;
-
-import java.util.Map;
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.HardwareBuilder;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.domain.Location;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.logging.Logger;
-import org.jclouds.virtualbox.domain.Master;
-import org.jclouds.virtualbox.domain.NodeSpec;
-import org.jclouds.virtualbox.domain.YamlImage;
-import org.jclouds.virtualbox.functions.admin.UnregisterMachineIfExistsAndForceDeleteItsMedia;
-import org.jclouds.virtualbox.util.MachineController;
-import org.virtualbox_4_2.IMachine;
-import org.virtualbox_4_2.IProgress;
-import org.virtualbox_4_2.ISession;
-import org.virtualbox_4_2.MachineState;
-import org.virtualbox_4_2.VBoxException;
-import org.virtualbox_4_2.VirtualBoxManager;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.base.Throwables;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-import com.google.inject.Singleton;
-
-/**
- * Defines the connection between the {@link org.virtualbox_4_2.VirtualBoxManager} implementation
- * and the jclouds {@link org.jclouds.compute.ComputeService}
- */
-@Singleton
-public class VirtualBoxComputeServiceAdapter implements ComputeServiceAdapter<IMachine, Hardware, Image, Location> {
-
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   private final Supplier<VirtualBoxManager> manager;
-   private final Map<Image, YamlImage> imagesToYamlImages;
-   private final LoadingCache<Image, Master> mastersLoader;
-   private final Function<NodeSpec, NodeAndInitialCredentials<IMachine>> cloneCreator;
-   private final Function<IMachine, Image> imachineToImage;
-   private final MachineController machineController;
-
-   @Inject
-   public VirtualBoxComputeServiceAdapter(Supplier<VirtualBoxManager> manager,
-            Supplier<Map<Image, YamlImage>> imagesMapper, LoadingCache<Image, Master> mastersLoader,
-            Function<NodeSpec, NodeAndInitialCredentials<IMachine>> cloneCreator,
-            Function<IMachine, Image> imachineToImage,
-            MachineController machineController) {
-      this.manager = checkNotNull(manager, "virtualbox manager can't be null");
-      this.imagesToYamlImages = imagesMapper.get();
-      this.mastersLoader = mastersLoader;
-      this.cloneCreator = cloneCreator;
-      this.imachineToImage = imachineToImage;
-      this.machineController = machineController;
-   }
-
-   @Override
-   public NodeAndInitialCredentials<IMachine> createNodeWithGroupEncodedIntoName(String tag, String name,
-            Template template) {
-      try {
-         checkState(!tag.contains(VIRTUALBOX_NODE_NAME_SEPARATOR), "tag names cannot contain \""
-                  + VIRTUALBOX_NODE_NAME_SEPARATOR + "\"");
-         checkState(!name.contains(VIRTUALBOX_NODE_NAME_SEPARATOR), "node names cannot contain \""
-                  + VIRTUALBOX_NODE_NAME_SEPARATOR + "\"");
-         Master master = mastersLoader.get(template.getImage());
-         checkState(master != null, "could not find a master for image: " + template.getImage());
-         NodeSpec nodeSpec = NodeSpec.builder().master(master).name(name).tag(tag).template(template).build();
-         return cloneCreator.apply(nodeSpec);
-      } catch (Exception e) {
-         throw Throwables.propagate(e);
-      }
-   }
-
-   @Override
-   public Iterable<IMachine> listNodes() {
-      return Iterables.filter(manager.get().getVBox().getMachines(), new Predicate<IMachine>() {
-         @Override
-         public boolean apply(IMachine arg0) {
-            return arg0.getName().startsWith(VIRTUALBOX_NODE_PREFIX);
-         }
-      });
-   }
-
-   @Override
-   public Iterable<IMachine> listNodesByIds(final Iterable<String> ids) {
-      return filter(listNodes(), new Predicate<IMachine>() {
-
-         @Override
-         public boolean apply(IMachine machine) {
-            return contains(ids, machine.getId());
-         }
-      });
-   }
-
-   @Override
-   public Iterable<Hardware> listHardwareProfiles() {
-      Set<Hardware> hardware = Sets.newLinkedHashSet();
-      hardware.add(new HardwareBuilder().ids("t1.micro").hypervisor("VirtualBox").name("t1.micro").ram(512).build());
-      hardware.add(new HardwareBuilder().ids("m1.small").hypervisor("VirtualBox").name("m1.small").ram(1024).build());
-      hardware.add(new HardwareBuilder().ids("m1.medium").hypervisor("VirtualBox").name("m1.medium").ram(3840).build());
-      hardware.add(new HardwareBuilder().ids("m1.large").hypervisor("VirtualBox").name("m1.large").ram(7680).build());
-      return hardware;
-   }
-
-   @Override
-   public Iterable<Image> listImages() {
-      // the set of image vm names that were (or could be) built from the yaml file
-      final Set<String> imagesFromYamlNames = Sets.newHashSet(Iterables.transform(imagesToYamlImages.keySet(),
-               new Function<Image, String>() {
-                  @Override
-                  public String apply(Image input) {
-                     return VIRTUALBOX_IMAGE_PREFIX + input.getId();
-                  }
-
-               }));
-
-      // IMachines that were not built from the yaml file transformed to Images
-      Set<Image> imagesFromCloning = Sets.newHashSet(Iterables.transform(
-               Iterables.filter(imageMachines(), new Predicate<IMachine>() {
-                  @Override
-                  public boolean apply(IMachine input) {
-                     return !imagesFromYamlNames.contains(input.getName());
-                  }
-               }), imachineToImage));
-
-      // final set of images are those from yaml and those from vbox that were not a transformation
-      // of the yaml ones
-      return Sets.union(imagesToYamlImages.keySet(), imagesFromCloning);
-   }
-
-   private Iterable<IMachine> imageMachines() {
-      final Predicate<? super IMachine> imagePredicate = new Predicate<IMachine>() {
-         @Override
-         public boolean apply(@Nullable IMachine iMachine) {
-            return iMachine.getName().startsWith(VIRTUALBOX_IMAGE_PREFIX);
-         }
-      };
-      final Iterable<IMachine> imageMachines = filter(manager.get().getVBox().getMachines(), imagePredicate);
-      return imageMachines;
-   }
-
-   @Override
-   public Iterable<Location> listLocations() {
-      // Not using the adapter to determine locations
-      return ImmutableSet.<Location> of();
-   }
-
-   @Override
-   public IMachine getNode(String vmName) {
-      try {
-         return manager.get().getVBox().findMachine(vmName);
-      } catch (VBoxException e) {
-         if (e.getMessage().contains("Could not find a registered machine named")) {
-            return null;
-         }
-         throw Throwables.propagate(e);
-      }
-   }
-   
-   @Override
-   public Image getImage(String vmName) {
-      IMachine image = getNode(vmName);
-      if (image == null)
-         return null;
-      return imachineToImage.apply(image);
-   }
-
-   @Override
-   public synchronized void destroyNode(String vmName) {
-      IMachine machine = manager.get().getVBox().findMachine(vmName);
-      powerDownMachine(machine);
-      try {
-         new UnregisterMachineIfExistsAndForceDeleteItsMedia().apply(machine);
-      } catch (Exception e) {
-         logger.error("Machine (%s) not unregistered!", vmName);
-      }
-   }
-
-   @Override
-   public void rebootNode(String vmName) {
-      IMachine machine = manager.get().getVBox().findMachine(vmName);
-      powerDownMachine(machine);
-      launchVMProcess(machine, manager.get().getSessionObject());
-   }
-
-   @Override
-   public void resumeNode(String vmName) {
-      IMachine machine = manager.get().getVBox().findMachine(vmName);
-      ISession machineSession;
-      try {
-         machineSession = manager.get().openMachineSession(machine);
-         machineSession.getConsole().resume();
-         machineSession.unlockMachine();
-      } catch (Exception e) {
-         throw Throwables.propagate(e);
-      }
-   }
-
-   @Override
-   public void suspendNode(String vmName) {
-      IMachine machine = manager.get().getVBox().findMachine(vmName);
-      ISession machineSession;
-      try {
-         machineSession = manager.get().openMachineSession(machine);
-         machineSession.getConsole().pause();
-         machineSession.unlockMachine();
-      } catch (Exception e) {
-         throw Throwables.propagate(e);
-      }
-   }
-
-   private void launchVMProcess(IMachine machine, ISession session) {
-      IProgress prog = machine.launchVMProcess(session, "gui", "");
-      prog.waitForCompletion(-1);
-      session.unlockMachine();
-   }
-
-   private void powerDownMachine(IMachine machine) {
-      try {
-         if (machine.getState() == MachineState.PoweredOff) {
-            logger.debug("vm was already powered down: ", machine.getId());
-            return;
-         }
-         logger.debug("<< powering down vm(%s)", machine.getName());
-         machineController.ensureMachineHasPowerDown(machine.getName());
-      } catch (Exception e) {
-         logger.error(e, "problem in powering down vm(%s)", machine.getName());
-         throw Throwables.propagate(e);
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/compute/extensions/VirtualBoxImageExtension.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/compute/extensions/VirtualBoxImageExtension.java b/virtualbox/src/main/java/org/jclouds/virtualbox/compute/extensions/VirtualBoxImageExtension.java
deleted file mode 100644
index ce15ee8..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/compute/extensions/VirtualBoxImageExtension.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox.compute.extensions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_DEFAULT_DIR;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_IMAGE_PREFIX;
-import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_WORKINGDIR;
-
-import java.util.List;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.domain.CloneImageTemplate;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.ImageTemplate;
-import org.jclouds.compute.domain.ImageTemplateBuilder;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.extensions.ImageExtension;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.domain.Location;
-import org.jclouds.logging.Logger;
-import org.jclouds.virtualbox.functions.IMachineToVmSpec;
-import org.jclouds.virtualbox.functions.TakeSnapshotIfNotAlreadyAttached;
-import org.jclouds.virtualbox.functions.admin.UnregisterMachineIfExistsAndDeleteItsMedia;
-import org.jclouds.virtualbox.util.MachineUtils;
-import org.virtualbox_4_2.CloneMode;
-import org.virtualbox_4_2.CloneOptions;
-import org.virtualbox_4_2.IMachine;
-import org.virtualbox_4_2.IProgress;
-import org.virtualbox_4_2.ISnapshot;
-import org.virtualbox_4_2.VirtualBoxManager;
-
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Virtualbox implementation of {@link ImageExtension}
- */
-@Singleton
-public class VirtualBoxImageExtension implements ImageExtension {
-
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   private Logger logger = Logger.NULL;
-   private ComputeServiceAdapter<IMachine, Hardware, Image, Location> vboxAdapter;
-   private Function<IMachine, NodeMetadata> machineToNode;
-   private Supplier<VirtualBoxManager> manager;
-   private String workingDir;
-   private boolean isLinkedClone = true;
-   private Function<IMachine, Image> imachineToImage;
-   private MachineUtils machineUtils;
-
-   @Inject
-   public VirtualBoxImageExtension(ComputeServiceAdapter<IMachine, Hardware, Image, Location> vboxAdapter,
-            Function<IMachine, NodeMetadata> machineToNode, Supplier<VirtualBoxManager> manager,
-            @Named(VIRTUALBOX_WORKINGDIR) String workingDir, Function<IMachine, Image> imachineToImage,
-            MachineUtils machineUtils) {
-      this.vboxAdapter = vboxAdapter;
-      this.machineToNode = machineToNode;
-      this.manager = manager;
-      this.workingDir = workingDir == null ? VIRTUALBOX_DEFAULT_DIR : workingDir;
-      this.imachineToImage = imachineToImage;
-      this.machineUtils = machineUtils;
-   }
-
-   @Override
-   public ImageTemplate buildImageTemplateFromNode(String name, final String id) {
-      Optional<NodeMetadata> sourceNode = getNodeById(id);
-      checkState(sourceNode.isPresent(), " there is no node with id " + id);
-      String vmName = VIRTUALBOX_IMAGE_PREFIX + name;
-
-      IMachine vm = null;
-      try {
-         vm = manager.get().getVBox().findMachine(vmName);
-      } catch (Exception e) {
-      }
-      checkState(vm == null, " a machine exists with name: " + vmName);
-      return new ImageTemplateBuilder.CloneImageTemplateBuilder().name(vmName).nodeId(id).build();
-   }
-
-   @Override
-   public ListenableFuture<Image> createImage(ImageTemplate template) {
-      checkState(template instanceof CloneImageTemplate, " vbox image extension only supports cloning for the moment.");
-      CloneImageTemplate cloneTemplate = CloneImageTemplate.class.cast(template);
-
-      IMachine source = manager.get().getVBox().findMachine(cloneTemplate.getSourceNodeId());
-
-      String flags = "";
-      List<String> groups = ImmutableList.of();
-      String group = "";
-      String settingsFile = manager.get().getVBox().composeMachineFilename(template.getName(), group , flags , workingDir);
-      IMachine clonedMachine = manager.get().getVBox()
-               .createMachine(settingsFile, template.getName(), groups, source.getOSTypeId(), flags);
-
-      List<CloneOptions> options = Lists.newArrayList();
-      if (isLinkedClone)
-         options.add(CloneOptions.Link);
-
-      // TODO snapshot name
-      ISnapshot currentSnapshot = new TakeSnapshotIfNotAlreadyAttached(manager, "pre-image-spawn", "before spawning "
-               + template.getName(), logger).apply(source);
-
-      checkNotNull(currentSnapshot);
-
-      // clone
-      IProgress progress = currentSnapshot.getMachine().cloneTo(clonedMachine, CloneMode.MachineState, options);
-      progress.waitForCompletion(-1);
-
-      logger.debug(String.format("<< master(%s) is cloned correctly to vm(%s)", source.getName(), clonedMachine.getName()));
-
-      // registering
-      manager.get().getVBox().registerMachine(clonedMachine);
-
-      return Futures.immediateFuture(imachineToImage.apply(clonedMachine));
-   }
-
-   @Override
-   public boolean deleteImage(String id) {
-      try {
-         IMachine machine = manager.get().getVBox().findMachine(VIRTUALBOX_IMAGE_PREFIX + id);
-         machineUtils.applyForMachine(machine.getId(), new UnregisterMachineIfExistsAndDeleteItsMedia(
-                  new IMachineToVmSpec().apply(machine)));
-      } catch (Exception e) {
-         logger.error(e, "Could not delete machine with id %s ", id);
-         return false;
-      }
-      return true;
-   }
-
-   private Optional<NodeMetadata> getNodeById(final String id) {
-      return Iterables.tryFind(Iterables.transform(vboxAdapter.listNodes(), machineToNode),
-               new Predicate<NodeMetadata>() {
-                  @Override
-                  public boolean apply(NodeMetadata input) {
-                     return input.getId().equals(id);
-                  }
-               });
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/config/HardcodeLocalhostAsNodeMetadataSupplier.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/config/HardcodeLocalhostAsNodeMetadataSupplier.java b/virtualbox/src/main/java/org/jclouds/virtualbox/config/HardcodeLocalhostAsNodeMetadataSupplier.java
deleted file mode 100644
index 0d69600..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/config/HardcodeLocalhostAsNodeMetadataSupplier.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox.config;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.inject.Singleton;
-
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.NodeMetadata.Status;
-import org.jclouds.compute.domain.NodeMetadataBuilder;
-import org.jclouds.compute.domain.OperatingSystem;
-import org.jclouds.compute.domain.OsFamily;
-import org.jclouds.domain.LocationBuilder;
-import org.jclouds.domain.LocationScope;
-import org.jclouds.domain.LoginCredentials;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Strings;
-import com.google.common.base.Supplier;
-import com.google.common.base.Throwables;
-import com.google.common.io.Files;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-
-/**
- * In particular, this binds {@code Supplier<NodeMetadata>} so that it can be used in ssh commands.
- * Ssh is necessary for operations that cannot be performed in the virtual box api, such as clearing
- * sessions.
- * 
- * ex. once this is loaded, use Guice to inject {@code Supplier<NodeMetadata>} as {@code host} and
- * {@link RunScriptOnNode#Factory} as factory, to start making commands like the following:
- * 
- * <pre>
- * import static org.jclouds.compute.options.RunScriptOptions.Builder.runAsRoot;
- * import static org.jclouds.scriptbuilder.domain.Statements.*;
- * 
- *    ...
- *  
- *  // direct execute a script as opposed to using sudo, or an init wrapper
- *  ListenableFuture<ExecResponse> fooInTheFuture = factory.submit(host.get(), 
- *          exec("echo foo"), runAsRoot(false).wrapInInitScript(false));
- * 
- *  ExecResponse foo = Futures.getUnchecked(fooInTheFuture);
- * 
- *  // call a set of commands that are defined in classpath/functions/function_name.sh
- *  ListenableFuture<ExecResponse> kill = factory.submit(host.get(), 
- *          call("killsession"), runAsRoot(false).wrapInInitScript(false));
- * 
- * ...
- * 
- * </pre>
- * 
- * <h3>Note</h3>
- * 
- * People often forget to call {@link Future#get} when using {@link RunScriptOnNode.Factory#submit}.
- * Don't forget!
- */
-public class HardcodeLocalhostAsNodeMetadataSupplier extends AbstractModule {
-
-   public static final String HOST_ID = "host";
-   public static final String HOSTNAME = Strings.nullToEmpty(System.getenv("HOSTNAME"));
-
-   /**
-    * Lazy so that we don't hang up the injector reading a file
-    */
-   @Provides
-   @Singleton
-   protected Supplier<NodeMetadata> lazySupplyHostAsNodeMetadata() {
-      return new Supplier<NodeMetadata>() {
-
-         @Override
-         public NodeMetadata get() {
-            String privateKey = readRsaIdentity();
-            return new NodeMetadataBuilder()
-                                    .id(HOST_ID)
-                                    .name("host installing virtualbox")
-                                    .hostname(HOSTNAME)
-                                    .operatingSystem(OperatingSystem.builder()
-                                                                    .family(OsFamily.LINUX)
-                                                                    .description(System.getProperty("os.name"))
-                                                                    .arch(System.getProperty("os.arch"))
-                                                                    .version(System.getProperty("os.version"))
-                                                                    .build())
-                                    .status(Status.RUNNING)
-                                    .location(new LocationBuilder().id(HOST_ID)
-                                                                   .scope(LocationScope.HOST)
-                                                                   .description(HOSTNAME)
-                                                                   .build())
-                                    .credentials(LoginCredentials.builder()
-                                    		.user(System.getProperty("user.name"))
-                                    		.privateKey(privateKey)					 
-                                    		.build())
-                                    .build();
-         }
-
-      };
-   }
-   
-   static String readRsaIdentity() {
-      String privateKey;
-      try {
-         File keyFile = new File(System.getProperty("user.home") + "/.ssh/id_rsa");
-         privateKey = Files.toString(keyFile, Charsets.UTF_8);
-      } catch (IOException e) {
-         throw Throwables.propagate(e);
-      }
-      return privateKey;
-   }
-   
-   @Override
-   protected void configure() {
-
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/config/VirtualBoxComputeServiceContextModule.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/config/VirtualBoxComputeServiceContextModule.java b/virtualbox/src/main/java/org/jclouds/virtualbox/config/VirtualBoxComputeServiceContextModule.java
deleted file mode 100644
index 0f4c5ed..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/config/VirtualBoxComputeServiceContextModule.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox.config;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static org.jclouds.util.Predicates2.retry;
-
-import java.io.File;
-import java.net.URI;
-import java.util.Map;
-
-import javax.inject.Singleton;
-
-import org.eclipse.jetty.server.Server;
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.ComputeServiceAdapter.NodeAndInitialCredentials;
-import org.jclouds.compute.config.ComputeServiceAdapterContextModule;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.extensions.ImageExtension;
-import org.jclouds.compute.reference.ComputeServiceConstants.Timeouts;
-import org.jclouds.domain.Location;
-import org.jclouds.functions.IdentityFunction;
-import org.jclouds.ssh.SshClient;
-import org.jclouds.virtualbox.compute.VirtualBoxComputeServiceAdapter;
-import org.jclouds.virtualbox.compute.extensions.VirtualBoxImageExtension;
-import org.jclouds.virtualbox.domain.CloneSpec;
-import org.jclouds.virtualbox.domain.ExecutionType;
-import org.jclouds.virtualbox.domain.IsoSpec;
-import org.jclouds.virtualbox.domain.Master;
-import org.jclouds.virtualbox.domain.MasterSpec;
-import org.jclouds.virtualbox.domain.NodeSpec;
-import org.jclouds.virtualbox.domain.YamlImage;
-import org.jclouds.virtualbox.functions.CloneAndRegisterMachineFromIMachineIfNotAlreadyExists;
-import org.jclouds.virtualbox.functions.CreateAndInstallVm;
-import org.jclouds.virtualbox.functions.IMachineToHardware;
-import org.jclouds.virtualbox.functions.IMachineToImage;
-import org.jclouds.virtualbox.functions.IMachineToNodeMetadata;
-import org.jclouds.virtualbox.functions.IMachineToSshClient;
-import org.jclouds.virtualbox.functions.MastersLoadingCache;
-import org.jclouds.virtualbox.functions.NodeCreator;
-import org.jclouds.virtualbox.functions.YamlImagesFromFileConfig;
-import org.jclouds.virtualbox.functions.admin.FileDownloadFromURI;
-import org.jclouds.virtualbox.functions.admin.ImagesToYamlImagesFromYamlDescriptor;
-import org.jclouds.virtualbox.functions.admin.PreseedCfgServer;
-import org.jclouds.virtualbox.functions.admin.StartVBoxIfNotAlreadyRunning;
-import org.jclouds.virtualbox.predicates.SshResponds;
-import org.virtualbox_4_2.IMachine;
-import org.virtualbox_4_2.LockType;
-import org.virtualbox_4_2.MachineState;
-import org.virtualbox_4_2.VirtualBoxManager;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableMap;
-import com.google.inject.Injector;
-import com.google.inject.Provides;
-import com.google.inject.TypeLiteral;
-
-@SuppressWarnings("unchecked")
-public class VirtualBoxComputeServiceContextModule extends
-         ComputeServiceAdapterContextModule<IMachine, Hardware, Image, Location> {
-
-   @Override
-   protected void configure() {
-      super.configure();
-      bind(new TypeLiteral<ComputeServiceAdapter<IMachine, Hardware, Image, Location>>() {
-      }).to(VirtualBoxComputeServiceAdapter.class);
-      bind(new TypeLiteral<Function<IMachine, NodeMetadata>>() {
-      }).to(IMachineToNodeMetadata.class);
-      bind(new TypeLiteral<Function<Location, Location>>() {
-      }).to(Class.class.cast(IdentityFunction.class));
-      bind(new TypeLiteral<Function<Hardware, Hardware>>() {
-      }).to(Class.class.cast(IdentityFunction.class));
-      bind(new TypeLiteral<Function<Image, Image>>() {
-      }).to(Class.class.cast(IdentityFunction.class));
-      bind(new TypeLiteral<Function<IMachine, Hardware>>() {
-      }).to(IMachineToHardware.class);
-      bind(new TypeLiteral<Function<IMachine, Image>>() {
-      }).to(IMachineToImage.class);
-      bind(new TypeLiteral<CacheLoader<IsoSpec, URI>>() {
-      }).to(Class.class.cast(PreseedCfgServer.class));
-      bind(new TypeLiteral<Function<URI, File>>() {
-      }).to(Class.class.cast(FileDownloadFromURI.class));
-
-      bind(new TypeLiteral<Supplier<VirtualBoxManager>>() {
-      }).to(Class.class.cast(StartVBoxIfNotAlreadyRunning.class));
-      // the yaml config to image mapper
-      bind(new TypeLiteral<Supplier<Map<Image, YamlImage>>>() {
-      }).to(Class.class.cast(ImagesToYamlImagesFromYamlDescriptor.class));
-      // the yaml config provider
-      bind(YamlImagesFromFileConfig.class);
-
-      // the master machines cache
-      bind(new TypeLiteral<LoadingCache<Image, Master>>() {
-      }).to(MastersLoadingCache.class);
-
-      // the vbox image extension
-      bind(new TypeLiteral<ImageExtension>() {
-      }).to(VirtualBoxImageExtension.class);
-
-      // the master creating function
-      bind(new TypeLiteral<Function<MasterSpec, IMachine>>() {
-      }).to(Class.class.cast(CreateAndInstallVm.class));
-      // the machine cloning function
-      bind(new TypeLiteral<Function<NodeSpec, NodeAndInitialCredentials<IMachine>>>() {
-      }).to(Class.class.cast(NodeCreator.class));
-      bind(new TypeLiteral<Function<CloneSpec, IMachine>>() {
-      }).to(Class.class.cast(CloneAndRegisterMachineFromIMachineIfNotAlreadyExists.class));
-      // the jetty server provider
-      bind(new TypeLiteral<Server>() {
-      }).to(Class.class.cast(PreseedCfgServer.class)).asEagerSingleton();
-
-      bind(new TypeLiteral<Function<IMachine, SshClient>>() {
-      }).to(IMachineToSshClient.class);
-
-      bind(ExecutionType.class).toInstance(ExecutionType.HEADLESS);
-      bind(LockType.class).toInstance(LockType.Write);
-   }
-
-   @Provides
-   @Singleton
-   protected Function<Supplier<NodeMetadata>, VirtualBoxManager> provideVBox() {
-      return new Function<Supplier<NodeMetadata>, VirtualBoxManager>() {
-
-         @Override
-         public VirtualBoxManager apply(Supplier<NodeMetadata> nodeSupplier) {
-            if (nodeSupplier.get().getId() != null)
-            	return VirtualBoxManager.createInstance(nodeSupplier.get().getId());
-
-           	return VirtualBoxManager.createInstance("");
-         }
-
-         @Override
-         public String toString() {
-            return "createInstanceByNodeId()";
-         }
-
-      };
-   }
-
-   @Provides
-   @Singleton
-   protected Predicate<SshClient> sshResponds(SshResponds sshResponds, Timeouts timeouts) {
-      return retry(sshResponds, timeouts.nodeRunning, 500l, MILLISECONDS);
-   }
-
-   @Override
-   protected Optional<ImageExtension> provideImageExtension(Injector i) {
-      return Optional.of(i.getInstance(ImageExtension.class));
-   }
-
-   @VisibleForTesting
-   public static final Map<MachineState, NodeMetadata.Status> toPortableNodeStatus = ImmutableMap
-            .<MachineState, NodeMetadata.Status> builder().put(MachineState.Running, NodeMetadata.Status.RUNNING)
-            .put(MachineState.PoweredOff, NodeMetadata.Status.SUSPENDED)
-            .put(MachineState.DeletingSnapshot, NodeMetadata.Status.PENDING)
-            .put(MachineState.DeletingSnapshotOnline, NodeMetadata.Status.PENDING)
-            .put(MachineState.DeletingSnapshotPaused, NodeMetadata.Status.PENDING)
-            .put(MachineState.FaultTolerantSyncing, NodeMetadata.Status.PENDING)
-            .put(MachineState.LiveSnapshotting, NodeMetadata.Status.PENDING)
-            .put(MachineState.SettingUp, NodeMetadata.Status.PENDING)
-            .put(MachineState.Starting, NodeMetadata.Status.PENDING)
-            .put(MachineState.Stopping, NodeMetadata.Status.PENDING)
-            .put(MachineState.Restoring, NodeMetadata.Status.PENDING)
-            // TODO What to map these states to?
-            .put(MachineState.FirstOnline, NodeMetadata.Status.PENDING)
-            .put(MachineState.FirstTransient, NodeMetadata.Status.PENDING)
-            .put(MachineState.LastOnline, NodeMetadata.Status.PENDING)
-            .put(MachineState.LastTransient, NodeMetadata.Status.PENDING)
-            .put(MachineState.Teleported, NodeMetadata.Status.PENDING)
-            .put(MachineState.TeleportingIn, NodeMetadata.Status.PENDING)
-            .put(MachineState.TeleportingPausedVM, NodeMetadata.Status.PENDING)
-            .put(MachineState.Aborted, NodeMetadata.Status.ERROR)
-            .put(MachineState.Stuck, NodeMetadata.Status.ERROR)
-            .put(MachineState.Null, NodeMetadata.Status.TERMINATED).build();
-   
-   @Singleton
-   @Provides
-   protected Map<MachineState, NodeMetadata.Status> toPortableNodeStatus() {
-      return toPortableNodeStatus;
-   }
-   
-   @VisibleForTesting
-   public static final Map<MachineState, Image.Status> toPortableImageStatus = ImmutableMap
-            .<MachineState, Image.Status> builder().put(MachineState.Running, Image.Status.PENDING)
-            .put(MachineState.PoweredOff, Image.Status.AVAILABLE)
-            .put(MachineState.DeletingSnapshot, Image.Status.PENDING)
-            .put(MachineState.DeletingSnapshotOnline, Image.Status.PENDING)
-            .put(MachineState.DeletingSnapshotPaused, Image.Status.PENDING)
-            .put(MachineState.FaultTolerantSyncing, Image.Status.PENDING)
-            .put(MachineState.LiveSnapshotting, Image.Status.PENDING)
-            .put(MachineState.SettingUp, Image.Status.PENDING)
-            .put(MachineState.Starting, Image.Status.PENDING)
-            .put(MachineState.Stopping, Image.Status.PENDING)
-            .put(MachineState.Restoring, Image.Status.PENDING)
-            // TODO What to map these states to?
-            .put(MachineState.FirstOnline, Image.Status.PENDING)
-            .put(MachineState.FirstTransient, Image.Status.PENDING)
-            .put(MachineState.LastOnline, Image.Status.PENDING)
-            .put(MachineState.LastTransient, Image.Status.PENDING)
-            .put(MachineState.Teleported, Image.Status.PENDING)
-            .put(MachineState.TeleportingIn, Image.Status.PENDING)
-            .put(MachineState.TeleportingPausedVM, Image.Status.PENDING)
-            .put(MachineState.Aborted, Image.Status.ERROR)
-            .put(MachineState.Stuck, Image.Status.ERROR)
-            .put(MachineState.Null, Image.Status.DELETED).build();
-   
-   @Singleton
-   @Provides
-   protected Map<MachineState, Image.Status> toPortableImageStatus() {
-      return toPortableImageStatus;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/main/java/org/jclouds/virtualbox/config/VirtualBoxConstants.java
----------------------------------------------------------------------
diff --git a/virtualbox/src/main/java/org/jclouds/virtualbox/config/VirtualBoxConstants.java b/virtualbox/src/main/java/org/jclouds/virtualbox/config/VirtualBoxConstants.java
deleted file mode 100644
index 322bb83..0000000
--- a/virtualbox/src/main/java/org/jclouds/virtualbox/config/VirtualBoxConstants.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.virtualbox.config;
-
-import java.io.File;
-
-/**
- * Configuration properties used for interacting with VirtualBox instances.
- */
-public final class VirtualBoxConstants {
-
-   public static final String VIRTUALBOX_NODE_NAME_SEPARATOR = "-0x0-";
-
-   public static final String VIRTUALBOX_IMAGE_PREFIX = "jclouds-image" + VIRTUALBOX_NODE_NAME_SEPARATOR;
-
-   public static final String VIRTUALBOX_NODE_PREFIX = "jclouds-node" + VIRTUALBOX_NODE_NAME_SEPARATOR;
-
-   public static final String VIRTUALBOX_PRECONFIGURATION_URL = "jclouds.virtualbox.preconfigurationurl";
-
-   public static final String VIRTUALBOX_WORKINGDIR = "jclouds.virtualbox.workingdir";
-
-   public static final String VIRTUALBOX_IMAGES_DESCRIPTOR = "jclouds.virtualbox.image.descriptor.yaml";
-
-   public static final String VIRTUALBOX_MACHINE_GROUP = "jclouds.virtualbox.machinegroup";
-
-   public static final String VIRTUALBOX_MACHINE_USERNAME = "jclouds.virtualbox.username";
-
-   public static final String VIRTUALBOX_MACHINE_CREDENTIAL = "jclouds.virtualbox.credential";
-
-   public static final String VIRTUALBOX_MACHINE_LOCATION = "jclouds.virtualbox.location";
-   
-   public static final String VIRTUALBOX_GUEST_MEMORY = "jclouds.virtualbox.guest.memory";
-
-   public static final String VIRTUALBOX_HOST_ID = "jclouds.virtualbox.hostid";
-
-   public static final String VIRTUALBOX_WEBSERVER_IDENTITY = "jclouds.virtualbox.webserver.identity";
-
-   public static final String VIRTUALBOX_WEBSERVER_CREDENTIAL = "jclouds.virtualbox.webserver.credential";
-
-   public static final String VIRTUALBOX_DEFAULT_DIR = System.getProperty("user.home") + File.separator
-            + ".jclouds-vbox";
-   
-   public static final String VIRTUALBOX_PROVIDER = "virtualbox";
-   
-   public static final String GUEST_OS_PASSWORD = "guestPassword";
-   
-   public static final String GUEST_OS_USER = "guestUser";
-
-   private VirtualBoxConstants() {
-      throw new AssertionError("intentionally unimplemented");
-   }
-}