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

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


The following commit(s) were added to refs/heads/master by this push:
     new d763169  Restore VMware VM naming convention option (#4581)
d763169 is described below

commit d763169b1c6c9b5959ef8fa2f1cc543d3c7852ed
Author: Abhishek Kumar <[email protected]>
AuthorDate: Mon Mar 29 16:13:14 2021 +0530

    Restore VMware VM naming convention option (#4581)
    
    * initial chanes
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * changes
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * fix
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * make check explicit for instance name flag
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * allow hiding vm details (in ui)
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * condition based on name instead of displayname
    
    Signed-off-by: Abhishek Kumar <[email protected]>
---
 api/src/main/java/com/cloud/vm/VmDetailConstants.java     |  1 +
 .../schema/src/main/java/com/cloud/vm/dao/UserVmDao.java  |  2 ++
 .../src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java     |  9 +++++++--
 .../cloud/hypervisor/vmware/resource/VmwareResource.java  |  8 +++++++-
 server/src/main/java/com/cloud/vm/UserVmManagerImpl.java  | 15 +++++++++++++--
 5 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/api/src/main/java/com/cloud/vm/VmDetailConstants.java 
b/api/src/main/java/com/cloud/vm/VmDetailConstants.java
index 64de939..5784ff1 100644
--- a/api/src/main/java/com/cloud/vm/VmDetailConstants.java
+++ b/api/src/main/java/com/cloud/vm/VmDetailConstants.java
@@ -21,6 +21,7 @@ public interface VmDetailConstants {
     String CPU_CORE_PER_SOCKET = "cpu.corespersocket";
     String ROOT_DISK_SIZE = "rootdisksize";
     String BOOT_MODE = "boot.mode";
+    String NAME_ON_HYPERVISOR= "nameonhypervisor";
 
     // VMware specific
     String NIC_ADAPTER = "nicAdapter";
diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java 
b/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java
index 0b1f936..55d8fa0 100644
--- a/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java
+++ b/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java
@@ -75,6 +75,8 @@ public interface UserVmDao extends GenericDao<UserVmVO, Long> 
{
 
     void saveDetails(UserVmVO vm);
 
+    void saveDetails(UserVmVO vm, List<String> hiddenDetails);
+
     List<Long> listPodIdsHavingVmsforAccount(long zoneId, long accountId);
 
     public Long countAllocatedVMsForAccount(long accountId, boolean 
runningVMsonly);
diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java 
b/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java
index 25479d6..a903c33 100644
--- a/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java
@@ -29,13 +29,13 @@ import java.util.Set;
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 
-import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.network.Network;
 import com.cloud.network.dao.NetworkDao;
 import com.cloud.network.dao.NetworkVO;
+import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
 import com.cloud.server.ResourceTag.ResourceObjectType;
 import com.cloud.tags.dao.ResourceTagDao;
 import com.cloud.user.Account;
@@ -373,6 +373,11 @@ public class UserVmDaoImpl extends 
GenericDaoBase<UserVmVO, Long> implements Use
 
     @Override
     public void saveDetails(UserVmVO vm) {
+        saveDetails(vm, new ArrayList<String>());
+    }
+
+    @Override
+    public void saveDetails(UserVmVO vm, List<String> hiddenDetails) {
         Map<String, String> detailsStr = vm.getDetails();
         if (detailsStr == null) {
             return;
@@ -382,7 +387,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, 
Long> implements Use
 
         List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
         for (Map.Entry<String, String> entry : detailsStr.entrySet()) {
-            boolean display = visibilityMap.getOrDefault(entry.getKey(), true);
+            boolean display = !hiddenDetails.contains(entry.getKey()) && 
visibilityMap.getOrDefault(entry.getKey(), true);
             details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), 
entry.getValue(), display));
         }
 
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 44add8e..fb2af6f 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
@@ -2986,7 +2986,13 @@ public class VmwareResource implements 
StoragePoolResource, ServerResource, Vmwa
     private Pair<String, String> composeVmNames(VirtualMachineTO vmSpec) {
         String vmInternalCSName = vmSpec.getName();
         String vmNameOnVcenter = vmSpec.getName();
-        if (_instanceNameFlag && vmSpec.getHostName() != null) {
+        String hostNameInDetails = null;
+        if (_instanceNameFlag && MapUtils.isNotEmpty(vmSpec.getDetails()) && 
vmSpec.getDetails().containsKey(VmDetailConstants.NAME_ON_HYPERVISOR)) {
+            hostNameInDetails = 
vmSpec.getDetails().get(VmDetailConstants.NAME_ON_HYPERVISOR);
+        }
+        if (StringUtils.isNotBlank(hostNameInDetails)) {
+            vmNameOnVcenter = hostNameInDetails;
+        } else if (_instanceNameFlag && vmSpec.getHostName() != null) {
             vmNameOnVcenter = vmSpec.getHostName();
         }
         return new Pair<String, String>(vmInternalCSName, vmNameOnVcenter);
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index 1eafefa..a3f818a 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -3870,8 +3870,12 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
         }
 
         String instanceName = null;
+        String instanceSuffix = _instance;
         String uuidName = _uuidMgr.generateUuid(UserVm.class, customId);
         if (_instanceNameFlag && HypervisorType.VMware.equals(hypervisorType)) 
{
+            if (StringUtils.isNotEmpty(hostName)) {
+                instanceSuffix = hostName;
+            }
             if (hostName == null) {
                 if (displayName != null) {
                     hostName = displayName;
@@ -3896,7 +3900,10 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
             // Check is hostName is RFC compliant
             checkNameForRFCCompliance(hostName);
         }
-        instanceName = VirtualMachineName.getVmName(id, owner.getId(), 
_instance);
+        instanceName = VirtualMachineName.getVmName(id, owner.getId(), 
instanceSuffix);
+        if (_instanceNameFlag && HypervisorType.VMware.equals(hypervisorType) 
&& !instanceSuffix.equals(_instance)) {
+            customParameters.put(VmDetailConstants.NAME_ON_HYPERVISOR, 
instanceName);
+        }
 
         // Check if VM with instanceName already exists.
         VMInstanceVO vmObj = _vmInstanceDao.findVMByInstanceName(instanceName);
@@ -4124,7 +4131,11 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
 
                 persistVMDeployAsIsProperties(vm, userVmOVFPropertiesMap);
 
-                _vmDao.saveDetails(vm);
+                List<String> hiddenDetails = new ArrayList<>();
+                if 
(customParameters.containsKey(VmDetailConstants.NAME_ON_HYPERVISOR)) {
+                    hiddenDetails.add(VmDetailConstants.NAME_ON_HYPERVISOR);
+                }
+                _vmDao.saveDetails(vm, hiddenDetails);
                 if (!isImport) {
                     s_logger.debug("Allocating in the DB for vm");
                     DataCenterDeployment plan = new 
DataCenterDeployment(zone.getId());

Reply via email to