@Test( description = "PUT /vApp/{id}/virtualHardwareSection", dependsOnMethods = {"testGetVirtualHardwareSection"}) public void testEditVirtualHardwareSection() { // Power off Vm vm = powerOffVm(vmUrn); // Copy existing section and edit fields VirtualHardwareSection oldSection = vmApi.getVirtualHardwareSection(vmUrn); Set<? extends ResourceAllocationSettingData> oldItems = oldSection.getItems(); Set<ResourceAllocationSettingData> newItems = Sets.newLinkedHashSet(oldItems); ResourceAllocationSettingData oldMemory = Iterables.find( oldItems, new Predicate<ResourceAllocationSettingData>() { @Override public boolean apply(ResourceAllocationSettingData rasd) { return rasd.getResourceType() == ResourceAllocationSettingData.ResourceType.MEMORY; } }); ResourceAllocationSettingData newMemory = oldMemory .toBuilder() .elementName("1024 MB of memory") .virtualQuantity(new BigInteger("1024")) .build(); newItems.remove(oldMemory); newItems.add(newMemory); VirtualHardwareSection newSection = oldSection.toBuilder().items(newItems).build(); // The method under test Task editVirtualHardwareSection = vmApi.editVirtualHardwareSection(vmUrn, newSection); assertTrue( retryTaskSuccess.apply(editVirtualHardwareSection), String.format(TASK_COMPLETE_TIMELY, "editVirtualHardwareSection")); // Retrieve the modified section VirtualHardwareSection modifiedSection = vmApi.getVirtualHardwareSection(vmUrn); // Check the retrieved object is well formed checkVirtualHardwareSection(modifiedSection); // Check the modified section fields are set correctly ResourceAllocationSettingData modifiedMemory = Iterables.find( modifiedSection.getItems(), new Predicate<ResourceAllocationSettingData>() { @Override public boolean apply(ResourceAllocationSettingData rasd) { return rasd.getResourceType() == ResourceAllocationSettingData.ResourceType.MEMORY; } }); assertEquals(modifiedMemory.getVirtualQuantity(), new BigInteger("1024")); assertEquals(modifiedMemory, newMemory); assertEquals(modifiedSection, newSection); }
public Volume apply(ResourceAllocationSettingData from) { return new VolumeImpl( from.getAddressOnParent() + "", Volume.Type.LOCAL, from.getVirtualQuantity() == null ? null : from.getVirtualQuantity().longValue() / 1024 / 1024f, null, "0".equals(from.getAddressOnParent()) || ResourceType.BASE_PARTITIONABLE_UNIT.equals(from.getResourceType()), true); }