diff --git a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java index 0ae249c584f..71c89f6ef69 100755 --- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java @@ -1134,6 +1134,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } try { + resetVmNicsDeviceId(vm.getId()); _networkMgr.prepare(vmProfile, new DeployDestination(dest.getDataCenter(), dest.getPod(), null, null, dest.getStorageForDisks()), ctx); if (vm.getHypervisorType() != HypervisorType.BareMetal) { volumeMgr.prepare(vmProfile, dest); @@ -1353,6 +1354,26 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } } + private void resetVmNicsDeviceId(Long vmId) { + final List nics = _nicsDao.listByVmId(vmId); + Collections.sort(nics, new Comparator() { + @Override + public int compare(NicVO nic1, NicVO nic2) { + Long nicDevId1 = Long.valueOf(nic1.getDeviceId()); + Long nicDevId2 = Long.valueOf(nic2.getDeviceId()); + return nicDevId1.compareTo(nicDevId2); + } + }); + int deviceId = 0; + for (final NicVO nic : nics) { + if (nic.getDeviceId() != deviceId) { + nic.setDeviceId(deviceId); + _nicsDao.update(nic.getId(),nic); + } + deviceId ++; + } + } + // Add extra config data to the vmTO as a Map private void addExtraConfig(VirtualMachineTO vmTO) { Map details = vmTO.getDetails(); diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 9051981291f..b43054054e9 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -3798,7 +3798,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa VolumeStatsEntry vse = statEntry.get(chainInfo); if (vse != null) { vse.setPhysicalSize(vse.getPhysicalSize() + physicalsize); - vse.setVirtualSize(vse.getVirtualSize() + virtualsize); } } else { VolumeStatsEntry vse = new VolumeStatsEntry(chainInfo, physicalsize, virtualsize); diff --git a/server/src/main/java/com/cloud/api/query/ViewResponseHelper.java b/server/src/main/java/com/cloud/api/query/ViewResponseHelper.java index ced81a6e06c..4baf25cfca3 100644 --- a/server/src/main/java/com/cloud/api/query/ViewResponseHelper.java +++ b/server/src/main/java/com/cloud/api/query/ViewResponseHelper.java @@ -268,7 +268,7 @@ public class ViewResponseHelper { public static List createVolumeResponse(ResponseView view, VolumeJoinVO... volumes) { Hashtable vrDataList = new Hashtable(); - DecimalFormat df = new DecimalFormat("0.00"); + DecimalFormat df = new DecimalFormat("0.0%"); for (VolumeJoinVO vr : volumes) { VolumeResponse vrData = vrDataList.get(vr.getId()); if (vrData == null) { diff --git a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java index 6f16462f4f3..597cc1ca446 100644 --- a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java @@ -190,10 +190,9 @@ public class HostJoinDaoImpl extends GenericDaoBase implements hostResponse.setHypervisorVersion(host.getHypervisorVersion()); - Float cpuWithOverprovisioning = host.getCpus() * host.getSpeed() * ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId()); - String cpuAlloc = decimalFormat.format(((float)cpu / cpuWithOverprovisioning * 100f)) + "%"; - hostResponse.setCpuAllocated(cpuAlloc); - hostResponse.setCpuWithOverprovisioning(cpuWithOverprovisioning.toString()); + float cpuWithOverprovisioning = host.getCpus() * host.getSpeed() * ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId()); + hostResponse.setCpuAllocated(calculateResourceAllocatedPercentage(cpu, cpuWithOverprovisioning)); + hostResponse.setCpuWithOverprovisioning(Float.toString(cpuWithOverprovisioning)); } if (details.contains(HostDetails.all) || details.contains(HostDetails.stats)) { @@ -317,7 +316,7 @@ public class HostJoinDaoImpl extends GenericDaoBase implements if (details.contains(HostDetails.all) || details.contains(HostDetails.capacity)) { // set allocated capacities Long mem = host.getMemReservedCapacity() + host.getMemUsedCapacity(); - Long cpu = host.getCpuReservedCapacity() + host.getCpuReservedCapacity(); + Long cpu = host.getCpuReservedCapacity() + host.getCpuUsedCapacity(); hostResponse.setMemoryTotal(host.getTotalMemory()); Float memWithOverprovisioning = host.getTotalMemory() * ApiDBUtils.getMemOverprovisioningFactor(host.getClusterId()); @@ -340,10 +339,9 @@ public class HostJoinDaoImpl extends GenericDaoBase implements hostResponse.setHypervisorVersion(host.getHypervisorVersion()); - Float cpuWithOverprovisioning = new Float(host.getCpus() * host.getSpeed() * ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId())); - String cpuAlloc = decimalFormat.format(((float)cpu / cpuWithOverprovisioning * 100f)).toString() + "%"; - hostResponse.setCpuAllocated(cpuAlloc); - hostResponse.setCpuWithOverprovisioning(cpuWithOverprovisioning.toString()); + float cpuWithOverprovisioning = host.getCpus() * host.getSpeed() * ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId()); + hostResponse.setCpuAllocated(calculateResourceAllocatedPercentage(cpu, cpuWithOverprovisioning)); + hostResponse.setCpuWithOverprovisioning(Float.toString(cpuWithOverprovisioning)); } if (details.contains(HostDetails.all) || details.contains(HostDetails.stats)) { @@ -471,4 +469,9 @@ public class HostJoinDaoImpl extends GenericDaoBase implements return listBy(sc); } + private String calculateResourceAllocatedPercentage(float resource, float resourceWithOverProvision) { + DecimalFormat decimalFormat = new DecimalFormat("#.##"); + return decimalFormat.format(((float)resource / resourceWithOverProvision * 100.0f)) + "%"; + } + } diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/DatastoreMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/DatastoreMO.java index fa0c380eb06..fd9a374bef0 100644 --- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/DatastoreMO.java +++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/DatastoreMO.java @@ -356,6 +356,7 @@ public class DatastoreMO extends BaseMO { FileQueryFlags fqf = new FileQueryFlags(); fqf.setFileSize(true); fqf.setFileOwner(true); + fqf.setFileType(true); fqf.setModification(true); searchSpec.setDetails(fqf); searchSpec.setSearchCaseInsensitive(false);