Skip to content

Commit d763169

Browse files
authored
Restore VMware VM naming convention option (#4581)
* initial chanes Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com> * changes Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com> * fix Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com> * make check explicit for instance name flag Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com> * allow hiding vm details (in ui) Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com> * condition based on name instead of displayname Signed-off-by: Abhishek Kumar <abhishek.kumar@shapeblue.com>
1 parent 8903647 commit d763169

File tree

5 files changed

+30
-5
lines changed

5 files changed

+30
-5
lines changed

api/src/main/java/com/cloud/vm/VmDetailConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public interface VmDetailConstants {
2121
String CPU_CORE_PER_SOCKET = "cpu.corespersocket";
2222
String ROOT_DISK_SIZE = "rootdisksize";
2323
String BOOT_MODE = "boot.mode";
24+
String NAME_ON_HYPERVISOR= "nameonhypervisor";
2425

2526
// VMware specific
2627
String NIC_ADAPTER = "nicAdapter";

engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ public interface UserVmDao extends GenericDao<UserVmVO, Long> {
7575

7676
void saveDetails(UserVmVO vm);
7777

78+
void saveDetails(UserVmVO vm, List<String> hiddenDetails);
79+
7880
List<Long> listPodIdsHavingVmsforAccount(long zoneId, long accountId);
7981

8082
public Long countAllocatedVMsForAccount(long accountId, boolean runningVMsonly);

engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@
2929
import javax.annotation.PostConstruct;
3030
import javax.inject.Inject;
3131

32-
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
3332
import org.apache.commons.collections.CollectionUtils;
3433
import org.apache.log4j.Logger;
3534

3635
import com.cloud.network.Network;
3736
import com.cloud.network.dao.NetworkDao;
3837
import com.cloud.network.dao.NetworkVO;
38+
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
3939
import com.cloud.server.ResourceTag.ResourceObjectType;
4040
import com.cloud.tags.dao.ResourceTagDao;
4141
import com.cloud.user.Account;
@@ -373,6 +373,11 @@ public void loadDetails(UserVmVO vm) {
373373

374374
@Override
375375
public void saveDetails(UserVmVO vm) {
376+
saveDetails(vm, new ArrayList<String>());
377+
}
378+
379+
@Override
380+
public void saveDetails(UserVmVO vm, List<String> hiddenDetails) {
376381
Map<String, String> detailsStr = vm.getDetails();
377382
if (detailsStr == null) {
378383
return;
@@ -382,7 +387,7 @@ public void saveDetails(UserVmVO vm) {
382387

383388
List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
384389
for (Map.Entry<String, String> entry : detailsStr.entrySet()) {
385-
boolean display = visibilityMap.getOrDefault(entry.getKey(), true);
390+
boolean display = !hiddenDetails.contains(entry.getKey()) && visibilityMap.getOrDefault(entry.getKey(), true);
386391
details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display));
387392
}
388393

plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2986,7 +2986,13 @@ private String[] syncDiskChain(DatacenterMO dcMo, VirtualMachineMO vmMo, DiskTO
29862986
private Pair<String, String> composeVmNames(VirtualMachineTO vmSpec) {
29872987
String vmInternalCSName = vmSpec.getName();
29882988
String vmNameOnVcenter = vmSpec.getName();
2989-
if (_instanceNameFlag && vmSpec.getHostName() != null) {
2989+
String hostNameInDetails = null;
2990+
if (_instanceNameFlag && MapUtils.isNotEmpty(vmSpec.getDetails()) && vmSpec.getDetails().containsKey(VmDetailConstants.NAME_ON_HYPERVISOR)) {
2991+
hostNameInDetails = vmSpec.getDetails().get(VmDetailConstants.NAME_ON_HYPERVISOR);
2992+
}
2993+
if (StringUtils.isNotBlank(hostNameInDetails)) {
2994+
vmNameOnVcenter = hostNameInDetails;
2995+
} else if (_instanceNameFlag && vmSpec.getHostName() != null) {
29902996
vmNameOnVcenter = vmSpec.getHostName();
29912997
}
29922998
return new Pair<String, String>(vmInternalCSName, vmNameOnVcenter);

server/src/main/java/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3870,8 +3870,12 @@ private UserVm createVirtualMachine(DataCenter zone, ServiceOffering serviceOffe
38703870
}
38713871

38723872
String instanceName = null;
3873+
String instanceSuffix = _instance;
38733874
String uuidName = _uuidMgr.generateUuid(UserVm.class, customId);
38743875
if (_instanceNameFlag && HypervisorType.VMware.equals(hypervisorType)) {
3876+
if (StringUtils.isNotEmpty(hostName)) {
3877+
instanceSuffix = hostName;
3878+
}
38753879
if (hostName == null) {
38763880
if (displayName != null) {
38773881
hostName = displayName;
@@ -3896,7 +3900,10 @@ private UserVm createVirtualMachine(DataCenter zone, ServiceOffering serviceOffe
38963900
// Check is hostName is RFC compliant
38973901
checkNameForRFCCompliance(hostName);
38983902
}
3899-
instanceName = VirtualMachineName.getVmName(id, owner.getId(), _instance);
3903+
instanceName = VirtualMachineName.getVmName(id, owner.getId(), instanceSuffix);
3904+
if (_instanceNameFlag && HypervisorType.VMware.equals(hypervisorType) && !instanceSuffix.equals(_instance)) {
3905+
customParameters.put(VmDetailConstants.NAME_ON_HYPERVISOR, instanceName);
3906+
}
39003907

39013908
// Check if VM with instanceName already exists.
39023909
VMInstanceVO vmObj = _vmInstanceDao.findVMByInstanceName(instanceName);
@@ -4124,7 +4131,11 @@ public UserVmVO doInTransaction(TransactionStatus status) throws InsufficientCap
41244131

41254132
persistVMDeployAsIsProperties(vm, userVmOVFPropertiesMap);
41264133

4127-
_vmDao.saveDetails(vm);
4134+
List<String> hiddenDetails = new ArrayList<>();
4135+
if (customParameters.containsKey(VmDetailConstants.NAME_ON_HYPERVISOR)) {
4136+
hiddenDetails.add(VmDetailConstants.NAME_ON_HYPERVISOR);
4137+
}
4138+
_vmDao.saveDetails(vm, hiddenDetails);
41284139
if (!isImport) {
41294140
s_logger.debug("Allocating in the DB for vm");
41304141
DataCenterDeployment plan = new DataCenterDeployment(zone.getId());

0 commit comments

Comments
 (0)