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