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);

Reply via email to