@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); }
@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(); }