This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch 4.17
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.17 by this push:
     new 770df60bbef vmware,cks: fix attachiso failure with vmware drs (#6625)
770df60bbef is described below

commit 770df60bbefe3617a7c9a5aeadadc606025f01b6
Author: Abhishek Kumar <[email protected]>
AuthorDate: Tue Aug 16 16:17:13 2022 +0530

    vmware,cks: fix attachiso failure with vmware drs (#6625)
    
    Fixes #4314
    
    Failure in attaching k8s ISO is seen when VMware DRS is enabled. Log 
reported VM is not found. This fix tries to find VM on peer hosts when the VM 
is not found on the given host.
    
    Signed-off-by: Abhishek Kumar <[email protected]>
---
 .../com/cloud/hypervisor/vmware/resource/VmwareResource.java  |  2 +-
 .../com/cloud/storage/resource/VmwareStorageProcessor.java    |  2 +-
 .../com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java  | 11 +++++++++++
 3 files changed, 13 insertions(+), 2 deletions(-)

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 f224601dfc4..e831f6228e0 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
@@ -5253,7 +5253,7 @@ public class VmwareResource extends ServerResourceBase 
implements StoragePoolRes
     protected AttachIsoAnswer execute(AttachIsoCommand cmd) {
         try {
             VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext());
-            VirtualMachineMO vmMo = 
hyperHost.findVmOnHyperHost(cmd.getVmName());
+            VirtualMachineMO vmMo = 
HypervisorHostHelper.findVmOnHypervisorHostOrPeer(hyperHost, cmd.getVmName());
             if (vmMo == null) {
                 String msg = "Unable to find VM in vSphere to execute 
AttachIsoCommand, vmName: " + cmd.getVmName();
                 s_logger.error(msg);
diff --git 
a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
 
b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
index d2f7fc88a3b..bdb8eca20ed 100644
--- 
a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ 
b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -2341,7 +2341,7 @@ public class VmwareStorageProcessor implements 
StorageProcessor {
         try {
             VmwareContext context = hostService.getServiceContext(null);
             VmwareHypervisorHost hyperHost = hostService.getHyperHost(context, 
null);
-            VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(vmName);
+            VirtualMachineMO vmMo = 
HypervisorHostHelper.findVmOnHypervisorHostOrPeer(hyperHost, vmName);
             if (vmMo == null) {
                 String msg = "Unable to find VM in vSphere to execute 
AttachIsoCommand, vmName: " + vmName;
                 s_logger.error(msg);
diff --git 
a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
 
b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
index 7271725e8f4..4d3a725efa3 100644
--- 
a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
+++ 
b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
@@ -2340,4 +2340,15 @@ public class HypervisorHostHelper {
         }
         return hardwareVersion;
     }
+
+    public static VirtualMachineMO 
findVmOnHypervisorHostOrPeer(VmwareHypervisorHost hypervisorHost, String 
vmName) throws Exception {
+        VirtualMachineMO vmMo = hypervisorHost.findVmOnHyperHost(vmName);
+        if (vmMo == null) {
+            if (s_logger.isDebugEnabled()) {
+                s_logger.debug(String.format("Unable to find the VM on host 
%s, try within datacenter", hypervisorHost.getHyperHostName()));
+            }
+            vmMo = hypervisorHost.findVmOnPeerHyperHost(vmName);
+        }
+        return vmMo;
+    }
 }

Reply via email to