vmware: plugin improvements - use sticky chmod 1777 on the mountpoint - remove dead code - port improved code for moving disk into corresponding folder from master - for dummy worker case, check case for powered off vm state
Signed-off-by: Rohit Yadav <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/eea716b7 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/eea716b7 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/eea716b7 Branch: refs/heads/4.5 Commit: eea716b7916c916442b19d14e0f6e5c57bebb91e Parents: 4d9a94c Author: Rohit Yadav <[email protected]> Authored: Mon Apr 13 15:42:13 2015 +0530 Committer: Rohit Yadav <[email protected]> Committed: Mon Apr 13 15:44:10 2015 +0530 ---------------------------------------------------------------------- .../hypervisor/vmware/manager/VmwareManagerImpl.java | 2 +- .../cloud/hypervisor/vmware/resource/VmwareResource.java | 3 +-- .../cloud/storage/resource/VmwareStorageProcessor.java | 11 +++++++---- 3 files changed, 9 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eea716b7/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java index 3416319..e852948 100755 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java @@ -765,7 +765,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw // Change permissions for the mountpoint script = new Script(true, "chmod", _timeout, s_logger); - script.add("777", mountPoint); + script.add("1777", mountPoint); result = script.execute(); if (result != null) { s_logger.warn("Unable to set permissions for " + mountPoint + " due to " + result); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eea716b7/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 0777201..fd10830 100755 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -1822,7 +1822,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa int getReservedCpuMHZ(VirtualMachineTO vmSpec) { if (vmSpec.getDetails().get(VMwareGuru.VmwareReserveCpu.key()).equalsIgnoreCase("true")) { - return vmSpec.getMinSpeed(); + return vmSpec.getMinSpeed() * vmSpec.getCpus(); } return 0; } @@ -2475,7 +2475,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa private Pair<ManagedObjectReference, String> prepareNetworkFromNicInfo(HostMO hostMo, NicTO nicTo, boolean configureVServiceInNexus, VirtualMachine.Type vmType) throws Exception { Ternary<String, String, String> switchDetails = getTargetSwitch(nicTo); - nicTo.getType(); VirtualSwitchType switchType = VirtualSwitchType.getType(switchDetails.second()); String switchName = switchDetails.first(); String vlanToken = switchDetails.third(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eea716b7/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java index d0b6e74..82cda82 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java +++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java @@ -478,9 +478,12 @@ public class VmwareStorageProcessor implements StorageProcessor { dsMo.deleteFile(srcFile, dcMo.getMor(), true); } // restoreVM - move the new ROOT disk into corresponding VM folder - String vmInternalCSName = volume.getVmName(); - if (dsMo.folderExists(String.format("[%s]", dsMo.getName()), vmInternalCSName)) { - VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmInternalCSName, dsMo, vmdkFileBaseName); + VirtualMachineMO restoreVmMo = dcMo.findVm(volume.getVmName()); + if (restoreVmMo != null) { + String vmNameInVcenter = restoreVmMo.getName(); // VM folder name in datastore will be VM's name in vCenter. + if (dsMo.folderExists(String.format("[%s]", dsMo.getName()), vmNameInVcenter)) { + VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmNameInVcenter, dsMo, vmdkFileBaseName); + } } VolumeObjectTO newVol = new VolumeObjectTO(); @@ -598,7 +601,7 @@ public class VmwareStorageProcessor implements StorageProcessor { } vmMo = hyperHost.findVmOnHyperHost(vmName); - if (vmMo == null) { + if (vmMo == null || VmwareResource.getVmState(vmMo) == PowerState.PowerOff) { // create a dummy worker vm for attaching the volume DatastoreMO dsMo = new DatastoreMO(hyperHost.getContext(), morDs); workerVm = HypervisorHostHelper.createWorkerVM(hyperHost, dsMo, workerVmName);
