issue 384: cosmetic fixes

This commit is contained in:
andreaturli 2012-01-05 07:59:48 +00:00
parent caec80d560
commit 85fae1687b
3 changed files with 55 additions and 80 deletions

View File

@ -19,10 +19,6 @@
package org.jclouds.virtualbox.functions; package org.jclouds.virtualbox.functions;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.jclouds.virtualbox.util.MachineUtils.lockMachineAndApply;
import static org.virtualbox_4_1.LockType.Write;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -60,8 +56,6 @@ public class CloneAndRegisterMachineFromIMachineIfNotAlreadyExists implements Fu
private VirtualBoxManager manager; private VirtualBoxManager manager;
private VmSpec vmSpec; private VmSpec vmSpec;
private CloneOptions cloneOptions; private CloneOptions cloneOptions;
// private String snapshotName;
// private String snapshotDesc;
@Inject @Inject
public CloneAndRegisterMachineFromIMachineIfNotAlreadyExists( public CloneAndRegisterMachineFromIMachineIfNotAlreadyExists(
@ -75,8 +69,6 @@ public class CloneAndRegisterMachineFromIMachineIfNotAlreadyExists implements Fu
this.manager = manager; this.manager = manager;
this.vmSpec = vmSpec; this.vmSpec = vmSpec;
this.cloneOptions = cloneOptions; this.cloneOptions = cloneOptions;
// this.snapshotName = snapshotName;
// this.snapshotDesc = snapshotDesc;
} }
@Override @Override
@ -115,32 +107,7 @@ public class CloneAndRegisterMachineFromIMachineIfNotAlreadyExists implements Fu
// registering // registering
manager.getVBox().registerMachine(clonedMachine); manager.getVBox().registerMachine(clonedMachine);
/*
// Bridged Network
List<String> activeBridgedInterfaces = new RetrieveActiveBridgedInterfaces(context).apply(hostId);
checkNotNull(activeBridgedInterfaces);
String macAddress = manager.getVBox().getHost().generateMACAddress();
// TODO this behavior can be improved
String bridgedInterface = activeBridgedInterfaces.get(0);
long adapterSlot = 0l;
ensureBridgedNetworkingIsAppliedToMachine(adapterSlot, cloneName, macAddress, bridgedInterface);
// detach iso
// TODO: also hard-coded values here
int controllerPort = 0;
int device = 0;
ensureMachineHasDistroMediumDetached(cloneName, controllerIDE, controllerPort, device);
*/
return clonedMachine; return clonedMachine;
} }
private void ensureBridgedNetworkingIsAppliedToMachine(long adapterSlot, String vmName, String macAddress, String hostInterface) {
lockMachineAndApply(manager, Write, vmName, new AttachBridgedAdapterToMachine(adapterSlot, macAddress, hostInterface));
}
private void ensureMachineHasDistroMediumDetached(String vmName, String controllerIDE, int controllerPort, int device) {
lockMachineAndApply(manager, Write, vmName, new DetachDistroMediumFromMachine(checkNotNull(controllerIDE, "controllerIDE"), controllerPort, device));
}
} }

View File

@ -64,9 +64,11 @@ public class IsLinkedClone implements Predicate<IMachine> {
// more than one machine is attached to this hd // more than one machine is attached to this hd
for (IMedium child : iMedium.getParent().getChildren()) { for (IMedium child : iMedium.getParent().getChildren()) {
for (String machineId : child.getMachineIds()) { for (String machineId : child.getMachineIds()) {
IMachine iMachine = manager.getVBox().findMachine(machineId); IMachine iMachine = manager.getVBox().findMachine(
machineId);
if (!iMachine.getName().equals(machine.getName())) { if (!iMachine.getName().equals(machine.getName())) {
logger.debug("Machine %s is a linked clone", machine.getName()); logger.debug("Machine %s is a linked clone",
machine.getName());
return true; return true;
} }
} }

View File

@ -19,12 +19,11 @@
package org.jclouds.virtualbox.predicates; package org.jclouds.virtualbox.predicates;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import org.jclouds.virtualbox.BaseVirtualBoxClientLiveTest; import org.jclouds.virtualbox.BaseVirtualBoxClientLiveTest;
import org.jclouds.virtualbox.domain.HardDisk; import org.jclouds.virtualbox.domain.HardDisk;
import org.jclouds.virtualbox.domain.NatAdapter;
import org.jclouds.virtualbox.domain.StorageController; import org.jclouds.virtualbox.domain.StorageController;
import org.jclouds.virtualbox.domain.VmSpec; import org.jclouds.virtualbox.domain.VmSpec;
import org.jclouds.virtualbox.functions.CloneAndRegisterMachineFromIMachineIfNotAlreadyExists; import org.jclouds.virtualbox.functions.CloneAndRegisterMachineFromIMachineIfNotAlreadyExists;
@ -46,8 +45,8 @@ import org.virtualbox_4_1.VirtualBoxManager;
*/ */
@Test(groups = "live", singleThreaded = true, testName = "IsLinkedClonesLiveTest") @Test(groups = "live", singleThreaded = true, testName = "IsLinkedClonesLiveTest")
public class IsLinkedClonesLiveTest extends BaseVirtualBoxClientLiveTest { public class IsLinkedClonesLiveTest extends BaseVirtualBoxClientLiveTest {
private String vmId = "jclouds-image-iso-1"; private String vmId = "jclouds-image-iso-1";
private String osTypeId = ""; private String osTypeId = "";
private String ideControllerName = "IDE Controller"; private String ideControllerName = "IDE Controller";
private String cloneId = "jclouds-is-linked-clone-clone"; private String cloneId = "jclouds-is-linked-clone-clone";
@ -56,56 +55,63 @@ public class IsLinkedClonesLiveTest extends BaseVirtualBoxClientLiveTest {
private StorageController masterStorageController; private StorageController masterStorageController;
private VmSpec masterSpec; private VmSpec masterSpec;
private VmSpec cloneSpec; private VmSpec cloneSpec;
@BeforeGroups(groups = {"live"}) @BeforeGroups(groups = { "live" })
public void setUp() throws Exception { public void setUp() throws Exception {
identity = "toor"; identity = "toor";
credential = "password"; credential = "password";
String workingDir = PropertyUtils.getWorkingDirFromProperty(); String workingDir = PropertyUtils.getWorkingDirFromProperty();
HardDisk hardDisk = HardDisk.builder().diskpath(workingDir + "/testadmin.vdi").autoDelete(true) HardDisk hardDisk = HardDisk.builder()
.diskpath(workingDir + "/testadmin.vdi").autoDelete(true)
.controllerPort(0).deviceSlot(1).build(); .controllerPort(0).deviceSlot(1).build();
masterStorageController = StorageController.builder().name(ideControllerName).bus(StorageBus.IDE) masterStorageController = StorageController.builder()
.attachISO(0, 0, workingDir + "/ubuntu-11.04-server-i386.iso") .name(ideControllerName).bus(StorageBus.IDE)
.attachHardDisk(hardDisk) .attachISO(0, 0, workingDir + "/ubuntu-11.04-server-i386.iso")
.attachISO(1, 1, workingDir + "/VBoxGuestAdditions_4.1.2.iso").build(); .attachHardDisk(hardDisk)
masterSpec = VmSpec.builder().id(vmId).name(vmName).memoryMB(512).osTypeId(osTypeId) .attachISO(1, 1, workingDir + "/VBoxGuestAdditions_4.1.2.iso")
.controller(masterStorageController)
.forceOverwrite(true)
.cleanUpMode(CleanupMode.Full)
.build();
cloneSpec = VmSpec.builder().id(cloneId).name(cloneName).memoryMB(512).osTypeId(osTypeId)
.forceOverwrite(true)
.cleanUpMode(CleanupMode.Full)
.build(); .build();
masterSpec = VmSpec.builder().id(vmId).name(vmName).memoryMB(512)
.osTypeId(osTypeId).controller(masterStorageController)
.forceOverwrite(true).cleanUpMode(CleanupMode.Full).build();
cloneSpec = VmSpec.builder().id(cloneId).name(cloneName).memoryMB(512)
.osTypeId(osTypeId).forceOverwrite(true)
.cleanUpMode(CleanupMode.Full).build();
} }
@Test
@Test public void testLinkedClone() {
public void testLinkedClone() {
VirtualBoxManager manager = (VirtualBoxManager) context.getProviderSpecificContext().getApi();
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(masterSpec);
IMachine master = new CreateAndRegisterMachineFromIsoIfNotAlreadyExists(manager).apply(masterSpec); VirtualBoxManager manager = (VirtualBoxManager) context
IMachine clone = new CloneAndRegisterMachineFromIMachineIfNotAlreadyExists(manager, cloneSpec, CloneOptions.Link).apply(master); .getProviderSpecificContext().getApi();
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(masterSpec);
assertTrue(new IsLinkedClone(manager).apply(clone)); IMachine master = new CreateAndRegisterMachineFromIsoIfNotAlreadyExists(
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(new IMachineToVmSpec().apply(clone)); manager).apply(masterSpec);
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(masterSpec); IMachine clone = new CloneAndRegisterMachineFromIMachineIfNotAlreadyExists(
} manager, cloneSpec, CloneOptions.Link).apply(master);
public void testFullClone() {
VirtualBoxManager manager = (VirtualBoxManager) context.getProviderSpecificContext().getApi();
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(masterSpec);
IMachine master = new CreateAndRegisterMachineFromIsoIfNotAlreadyExists(manager).apply(masterSpec); assertTrue(new IsLinkedClone(manager).apply(clone));
IMachine clone = new CloneAndRegisterMachineFromIMachineIfNotAlreadyExists(manager, cloneSpec).apply(master); new UnregisterMachineIfExistsAndDeleteItsMedia(manager)
.apply(new IMachineToVmSpec().apply(clone));
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(masterSpec);
}
assertFalse(new IsLinkedClone(manager).apply(clone)); public void testFullClone() {
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(new IMachineToVmSpec().apply(clone));
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(masterSpec); VirtualBoxManager manager = (VirtualBoxManager) context
} .getProviderSpecificContext().getApi();
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(masterSpec);
IMachine master = new CreateAndRegisterMachineFromIsoIfNotAlreadyExists(
manager).apply(masterSpec);
IMachine clone = new CloneAndRegisterMachineFromIMachineIfNotAlreadyExists(
manager, cloneSpec).apply(master);
assertFalse(new IsLinkedClone(manager).apply(clone));
new UnregisterMachineIfExistsAndDeleteItsMedia(manager)
.apply(new IMachineToVmSpec().apply(clone));
new UnregisterMachineIfExistsAndDeleteItsMedia(manager).apply(masterSpec);
}
} }