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

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


The following commit(s) were added to refs/heads/4.18 by this push:
     new f0cc76a3a82 vmware: fix unmanaged instance listing when different name 
& internal CS name (#7641)
f0cc76a3a82 is described below

commit f0cc76a3a824fb4c34ce07230557c2c5107131fa
Author: Abhishek Kumar <[email protected]>
AuthorDate: Fri Jul 7 23:00:25 2023 +0530

    vmware: fix unmanaged instance listing when different name & internal CS 
name (#7641)
    
    Currently, ACS can continue to show an imported instance/VM as an unmanaged 
instance if the name and internalCSName (custom attribute, 
cloud.vm.internal.name) is different for the instance/VM on vCenter. This PR 
while filtering managed instances from the instance list received from ESXi 
host also checks if the internal name for the instance is not in the managed 
instance names list.
    
    Signed-off-by: Abhishek Kumar <[email protected]>
---
 .../agent/api/GetUnmanagedInstancesCommand.java      |  4 +++-
 .../hypervisor/vmware/resource/VmwareResource.java   | 20 ++++++++++++--------
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git 
a/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesCommand.java 
b/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesCommand.java
index 968c58611bb..2cd80aebea1 100644
--- a/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesCommand.java
+++ b/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesCommand.java
@@ -19,6 +19,8 @@ package com.cloud.agent.api;
 
 import java.util.List;
 
+import org.apache.commons.collections.CollectionUtils;
+
 /**
  * Unmanaged instances are those virtual machines which are present at 
hypervisor end but not available in CloudStack.
  * Such virtual machines might have been created out of band, directly from 
hypervisor.
@@ -56,7 +58,7 @@ public class GetUnmanagedInstancesCommand extends Command {
     }
 
     public boolean hasManagedInstance(String name) {
-        if (managedInstancesNames!=null && !managedInstancesNames.isEmpty()) {
+        if (CollectionUtils.isNotEmpty(managedInstancesNames)) {
             return managedInstancesNames.contains(name);
         }
         return false;
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 aa26f63b3a9..8b833b8221a 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
@@ -38,6 +38,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Random;
 import java.util.Set;
 import java.util.TimeZone;
@@ -47,12 +48,6 @@ import java.util.stream.Collectors;
 import javax.naming.ConfigurationException;
 import javax.xml.datatype.XMLGregorianCalendar;
 
-import com.cloud.agent.api.PatchSystemVmAnswer;
-import com.cloud.agent.api.PatchSystemVmCommand;
-import com.cloud.resource.ServerResourceBase;
-import com.cloud.utils.FileUtil;
-import com.cloud.utils.LogUtils;
-import com.cloud.utils.validation.ChecksumUtil;
 import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.storage.command.CopyCommand;
 import org.apache.cloudstack.storage.command.StorageSubSystemCommand;
@@ -66,8 +61,8 @@ import org.apache.cloudstack.vm.UnmanagedInstanceTO;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
 import org.joda.time.Duration;
@@ -137,6 +132,8 @@ import com.cloud.agent.api.ModifyTargetsAnswer;
 import com.cloud.agent.api.ModifyTargetsCommand;
 import com.cloud.agent.api.NetworkUsageAnswer;
 import com.cloud.agent.api.NetworkUsageCommand;
+import com.cloud.agent.api.PatchSystemVmAnswer;
+import com.cloud.agent.api.PatchSystemVmCommand;
 import com.cloud.agent.api.PingCommand;
 import com.cloud.agent.api.PingRoutingCommand;
 import com.cloud.agent.api.PingTestCommand;
@@ -260,6 +257,7 @@ import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.VmwareTrafficLabel;
 import com.cloud.network.router.VirtualRouterAutoScale;
 import com.cloud.resource.ServerResource;
+import com.cloud.resource.ServerResourceBase;
 import com.cloud.serializer.GsonHelper;
 import com.cloud.storage.Storage;
 import com.cloud.storage.Storage.StoragePoolType;
@@ -274,6 +272,8 @@ import com.cloud.storage.template.TemplateProp;
 import com.cloud.template.TemplateManager;
 import com.cloud.utils.DateUtil;
 import com.cloud.utils.ExecutionResult;
+import com.cloud.utils.FileUtil;
+import com.cloud.utils.LogUtils;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
@@ -286,6 +286,7 @@ import com.cloud.utils.net.NetUtils;
 import com.cloud.utils.nicira.nvp.plugin.NiciraNvpApiVersion;
 import com.cloud.utils.script.Script;
 import com.cloud.utils.ssh.SshHelper;
+import com.cloud.utils.validation.ChecksumUtil;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.PowerState;
 import com.cloud.vm.VirtualMachineName;
@@ -7371,7 +7372,10 @@ public class VmwareResource extends ServerResourceBase 
implements StoragePoolRes
                     continue;
                 }
                 // Filter managed instances
-                if (cmd.hasManagedInstance(vmMo.getName())) {
+                if (cmd.hasManagedInstance(vmMo.getName()) ||
+                        (StringUtils.isNotEmpty(vmMo.getInternalCSName())
+                                && Objects.equals(vmMo.getName(), 
vmMo.getInternalCSName())
+                                && 
cmd.hasManagedInstance(vmMo.getInternalCSName()))) {
                     continue;
                 }
                 // Filter instance if answer is requested for a particular 
instance name

Reply via email to