mirror of https://github.com/apache/cloudstack.git
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>
This commit is contained in:
parent
8903647187
commit
d763169b1c
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
Loading…
Reference in New Issue