@Override
  @BeforeClass(groups = "live")
  public void setupContext() {
    super.setupContext();
    instanceName =
        VIRTUALBOX_IMAGE_PREFIX
            + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN, getClass().getSimpleName());

    StorageController ideController =
        StorageController.builder()
            .name("IDE Controller")
            .bus(StorageBus.IDE)
            .attachISO(0, 0, operatingSystemIso)
            .attachHardDisk(
                HardDisk.builder()
                    .diskpath(adminDisk(instanceName))
                    .controllerPort(0)
                    .deviceSlot(1)
                    .autoDelete(true)
                    .build())
            .attachISO(1, 1, guestAdditionsIso)
            .build();

    VmSpec instanceVmSpec =
        VmSpec.builder()
            .id(instanceName)
            .name(instanceName)
            .osTypeId("")
            .memoryMB(512)
            .cleanUpMode(CleanupMode.Full)
            .controller(ideController)
            .forceOverwrite(true)
            .build();

    Injector injector = view.utils().injector();
    Function<String, String> configProperties =
        injector.getInstance(ValueOfConfigurationKeyOrNull.class);
    IsoSpec isoSpec =
        IsoSpec.builder()
            .sourcePath(operatingSystemIso)
            .installationScript(
                configProperties
                    .apply(VIRTUALBOX_INSTALLATION_KEY_SEQUENCE)
                    .replace("HOSTNAME", instanceVmSpec.getVmName()))
            .build();

    NetworkAdapter networkAdapter =
        NetworkAdapter.builder()
            .networkAttachmentType(NetworkAttachmentType.NAT)
            .tcpRedirectRule("127.0.0.1", 2222, "", 22)
            .build();
    NetworkInterfaceCard networkInterfaceCard =
        NetworkInterfaceCard.builder().addNetworkAdapter(networkAdapter).build();

    NetworkSpec networkSpec = NetworkSpec.builder().addNIC(networkInterfaceCard).build();
    machineSpec = MasterSpec.builder().iso(isoSpec).vm(instanceVmSpec).network(networkSpec).build();
  }
 private IMachine getMasterNode(
     VirtualBoxManager manager, ComputeServiceContext localHostContext) {
   try {
     Predicate<IPSocket> socketTester =
         new RetryablePredicate<IPSocket>(new InetSocketAddressConnect(), 10, 1, TimeUnit.SECONDS);
     String workingDir = PropertyUtils.getWorkingDirFromProperty();
     StorageController ideController =
         StorageController.builder()
             .name(controllerIDE)
             .bus(StorageBus.IDE)
             .attachISO(0, 0, workingDir + "/ubuntu-11.04-server-i386.iso")
             .attachHardDisk(
                 HardDisk.builder()
                     .diskpath(workingDir + "/testadmin.vdi")
                     .controllerPort(0)
                     .deviceSlot(1)
                     .build())
             .attachISO(1, 1, workingDir + "/VBoxGuestAdditions_4.1.2.iso")
             .build();
     VmSpec vmSpecification =
         VmSpec.builder()
             .id(vmId)
             .name(vmName)
             .osTypeId(osTypeId)
             .memoryMB(512)
             .cleanUpMode(CleanupMode.Full)
             .controller(ideController)
             .forceOverwrite(true)
             .build();
     return new CreateAndInstallVm(
             manager, guestId, localHostContext, hostId, socketTester, "127.0.0.1", 8080, HEADLESS)
         .apply(vmSpecification);
   } catch (IllegalStateException e) {
     // already created
     return manager.getVBox().findMachine(vmName);
   }
 }