@Test
  public void testCloneMachineFromAnotherMachine() throws Exception {
    VirtualBoxManager manager = (VirtualBoxManager) context.getProviderSpecificContext().getApi();
    ComputeServiceContext localHostContext =
        computeServiceForLocalhostAndGuest(
            hostId, "localhost", guestId, "localhost", new Credentials("toor", "password"));

    IMachine master = getMasterNode(manager, localHostContext);

    if (master.getCurrentSnapshot() != null) {
      ISession session = manager.openMachineSession(master);
      session.getConsole().deleteSnapshot(master.getCurrentSnapshot().getId());
      session.unlockMachine();
    }

    IMachine clone =
        new CloneAndRegisterMachineFromIMachineIfNotAlreadyExists(
                manager,
                localHostContext,
                settingsFile,
                osTypeId,
                vmId,
                forceOverwrite,
                cloneName,
                hostId,
                snapshotName,
                snapshotDesc,
                controllerIDE)
            .apply(master);
    assertEquals(clone.getNetworkAdapter(0L).getAttachmentType(), Bridged);
  }
예제 #2
0
  @Override
  public NodeMetadata apply(@Nullable IMachine vm) {

    NodeMetadataBuilder nodeMetadataBuilder = new NodeMetadataBuilder();
    String s = vm.getName();
    nodeMetadataBuilder.name(s);

    // TODO Set up location properly
    LocationBuilder locationBuilder = new LocationBuilder();
    locationBuilder.description("");
    locationBuilder.id("");
    locationBuilder.scope(LocationScope.HOST);
    nodeMetadataBuilder.location(locationBuilder.build());

    HardwareBuilder hardwareBuilder = new HardwareBuilder();
    hardwareBuilder.ram(vm.getMemorySize().intValue());

    // TODO: Get more processor information
    Set<Processor> processors = new HashSet<Processor>();
    for (int i = 0; i < vm.getCPUCount(); i++) {
      Processor processor = new Processor(1, 0);
      processors.add(processor);
    }
    hardwareBuilder.processors(processors);

    // TODO: How to get this?
    hardwareBuilder.is64Bit(false);

    nodeMetadataBuilder.hostname(vm.getName());
    nodeMetadataBuilder.loginPort(18083);

    MachineState vmState = vm.getState();
    NodeState nodeState = machineToNodeState.get(vmState);
    if (nodeState == null) nodeState = NodeState.UNRECOGNIZED;
    nodeMetadataBuilder.state(nodeState);

    logger.debug("Setting virtualbox node to: " + nodeState + " from machine state: " + vmState);

    INetworkAdapter networkAdapter = vm.getNetworkAdapter(0l);
    if (networkAdapter != null) {
      String bridgedInterface = networkAdapter.getBridgedInterface();
      System.out.println("Interface: " + bridgedInterface);
    }

    // nodeMetadataBuilder.imageId("");
    // nodeMetadataBuilder.group("");

    nodeMetadataBuilder.id(vm.getId());
    return nodeMetadataBuilder.build();
  }