You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2026/04/13 08:29:11 UTC
(cloudstack) 09/25: [22.0] Fix resource limit reservation and check during StartVirtualMachine
This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 22.0.1-fixes
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit d11d182c715585fc61da0c39e87e1e455e28da49
Author: Daniel Augusto Veronezi Salvador <gu...@apache.org>
AuthorDate: Fri Feb 20 10:54:08 2026 +0530
[22.0] Fix resource limit reservation and check during StartVirtualMachine
---
.../main/java/com/cloud/vm/UserVmManagerImpl.java | 502 +++++++++++----------
1 file changed, 253 insertions(+), 249 deletions(-)
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index f1ea5bc2576..24baf538394 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -615,26 +615,20 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
SnapshotPolicyDao snapshotPolicyDao;
@Inject
BackupScheduleDao backupScheduleDao;
-
@Inject
private StatsCollector statsCollector;
@Inject
private UserDataDao userDataDao;
-
@Inject
protected SnapshotHelper snapshotHelper;
-
@Inject
private AutoScaleManager autoScaleManager;
-
@Inject
VMScheduleManager vmScheduleManager;
@Inject
NsxProviderDao nsxProviderDao;
-
@Inject
NetworkService networkService;
-
@Inject
SnapshotDataFactory snapshotDataFactory;
@@ -798,7 +792,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
NicVO nic = _nicDao.findById(nicId);
try {
- logger.debug("Trying IP retrieval for VM [id: {}, uuid: {}, name: {}], nic {}", vmId, vmUuid, vmName, nic);
+ logger.debug("Trying IP retrieval for Instance [ID: {}, UUID: {}, name: {}], NIC {}", vmId, vmUuid, vmName, nic);
Answer answer = _agentMgr.send(hostId, cmd);
if (answer.getResult()) {
String vmIp = answer.getDetails();
@@ -813,12 +807,12 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (nic != null) {
nic.setIPv4Address(vmIp);
_nicDao.update(nicId, nic);
- logger.debug("Vm [id: {}, uuid: {}, name: {}] - IP {} retrieved successfully", vmId, vmUuid, vmName, vmIp);
+ logger.debug("Instance [ID: {}, UUID: {}, name: {}] - IP {} retrieved successfully", vmId, vmUuid, vmName, vmIp);
vmIdCountMap.remove(nicId);
decrementCount = false;
ActionEventUtils.onActionEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM,
Domain.ROOT_DOMAIN, EventTypes.EVENT_NETWORK_EXTERNAL_DHCP_VM_IPFETCH,
- String.format("VM [id: %d, uuid: %s, name: %s], nic %s, IP address %s got fetched successfully",
+ String.format("Instance [ID: %d, UUID: %s, name: %s], NIC %s, IP address %s got fetched successfully",
vmId, vmUuid, vmName, nic, vmIp), vmId, ApiCommandResourceType.VirtualMachine.toString());
}
}
@@ -826,7 +820,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// since no changes are being done, we should not decrement IP usage
decrementCount = false;
if (answer.getDetails() != null) {
- logger.debug("Failed to get vm ip for Vm [id: {}, uuid: {}, name: {}], details: {}",
+ logger.debug("Failed to get Instance IP for Instance [ID: {}, UUID: {}, name: {}], details: {}",
vmId, vmUuid, vmName, answer.getDetails());
}
}
@@ -838,7 +832,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (decrementCount) {
VmAndCountDetails vmAndCount = vmIdCountMap.get(nicId);
vmAndCount.decrementCount();
- logger.debug("Ip is not retrieved for VM [id: {}, uuid: {}, name: {}] nic {} ... decremented count to {}",
+ logger.debug("IP is not retrieved for Instance [ID: {}, UUID: {}, name: {}] NIC {} ... decremented count to {}",
vmId, vmUuid, vmName, nic, vmAndCount.getRetrievalCount());
vmIdCountMap.put(nicId, vmAndCount);
}
@@ -848,7 +842,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
private void addVmUefiBootOptionsToParams(Map<VirtualMachineProfile.Param, Object> params, String bootType, String bootMode) {
if (logger.isTraceEnabled()) {
- logger.trace(String.format("Adding boot options (%s, %s, %s) into the param map for VM start as UEFI detail(%s=%s) found for the VM",
+ logger.trace(String.format("Adding boot options (%s, %s, %s) into the param map for Instance start as UEFI detail(%s=%s) found for the Instance",
VirtualMachineProfile.Param.UefiFlag.getName(),
VirtualMachineProfile.Param.BootType.getName(),
VirtualMachineProfile.Param.BootMode.getName(),
@@ -869,14 +863,14 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Do parameters input validation
if (userVm == null) {
- throw new InvalidParameterValueException("unable to find a virtual machine with id " + cmd.getId());
+ throw new InvalidParameterValueException("unable to find an Instance with id " + cmd.getId());
}
_vmDao.loadDetails(userVm);
VMTemplateVO template = _templateDao.findByIdIncludingRemoved(userVm.getTemplateId());
if (template == null || !template.isEnablePassword()) {
- throw new InvalidParameterValueException("Fail to reset password for the virtual machine, the template is not password enabled");
+ throw new InvalidParameterValueException("Fail to reset password for the Instance, the Template is not password enabled");
}
if (userVm.getState() == State.Error || userVm.getState() == State.Expunging) {
@@ -896,7 +890,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (result) {
userVm.setPassword(password);
} else {
- throw new CloudRuntimeException("Failed to reset password for the virtual machine ");
+ throw new CloudRuntimeException("Failed to reset password for the Instance ");
}
return userVm;
@@ -914,7 +908,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (template.isEnablePassword()) {
Nic defaultNic = _networkModel.getDefaultNic(vmId);
if (defaultNic == null) {
- logger.error("Unable to reset password for vm " + vmInstance + " as the instance doesn't have default nic");
+ logger.error("Unable to reset password for Instance " + vmInstance + " as the Instance doesn't have default NIC");
return false;
}
@@ -934,7 +928,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Need to reboot the virtual machine so that the password gets
// redownloaded from the DomR, and reset on the VM
if (!result) {
- logger.debug("Failed to reset password for the virtual machine; no need to reboot the vm");
+ logger.debug("Failed to reset password for the Instance; no need to reboot the Instance");
return false;
} else {
final UserVmVO userVm = _vmDao.findById(vmId);
@@ -950,16 +944,16 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
if (rebootVirtualMachine(userId, vmId, false, false) == null) {
- logger.warn("Failed to reboot the vm " + vmInstance);
+ logger.warn("Failed to reboot the Instance " + vmInstance);
return false;
} else {
- logger.debug("Vm " + vmInstance + " is rebooted successfully as a part of password reset");
+ logger.debug("Instance " + vmInstance + " is rebooted successfully as a part of password reset");
return true;
}
}
} else {
if (logger.isDebugEnabled()) {
- logger.debug("Reset password called for a vm that is not using a password enabled template");
+ logger.debug("Reset password called for a Instance that is not using a password enabled Template");
}
return false;
}
@@ -974,7 +968,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
UserVmVO userVm = _vmDao.findById(cmd.getId());
if (userVm == null) {
- throw new InvalidParameterValueException("unable to find a virtual machine by id" + cmd.getId());
+ throw new InvalidParameterValueException("unable to find an Instance by id" + cmd.getId());
}
if (UserVmManager.SHAREDFSVM.equals(userVm.getUserVmType())) {
throw new InvalidParameterValueException("Operation not supported on Shared FileSystem Instance");
@@ -1025,7 +1019,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
UserVmVO userVm = _vmDao.findById(cmd.getId());
if (userVm == null) {
- throw new InvalidParameterValueException("unable to find a virtual machine by id " + cmd.getId());
+ throw new InvalidParameterValueException("unable to find an Instance by id" + cmd.getId());
}
if (UserVmManager.SHAREDFSVM.equals(userVm.getUserVmType())) {
throw new InvalidParameterValueException("Operation not supported on Shared FileSystem Instance");
@@ -1077,7 +1071,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
UserVmVO vm = _vmDao.findById(userVm.getId());
_vmDao.loadDetails(vm);
if (!result) {
- throw new CloudRuntimeException("Failed to reset SSH Key for the virtual machine ");
+ throw new CloudRuntimeException("Failed to reset SSH Key for the Instance ");
}
removeEncryptedPasswordFromUserVmVoDetails(userVm.getId());
@@ -1097,7 +1091,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
VMTemplateVO template = _templateDao.findByIdIncludingRemoved(vmInstance.getTemplateId());
Nic defaultNic = _networkModel.getDefaultNic(vmId);
if (defaultNic == null) {
- logger.error("Unable to reset SSH Key for vm " + vmInstance + " as the instance doesn't have default nic");
+ logger.error("Unable to reset SSH Key for Instance " + vmInstance + " as the Instance doesn't have default NIC");
return false;
}
@@ -1112,9 +1106,9 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
throw new CloudRuntimeException("Can't find network element for " + Service.UserData.getName() + " provider needed for SSH Key reset");
}
boolean result = element.saveSSHKey(defaultNetwork, defaultNicProfile, vmProfile, sshPublicKeys);
- // Need to reboot the virtual machine so that the password gets redownloaded from the DomR, and reset on the VM
+ // Need to reboot the Instance so that the password gets redownloaded from the DomR, and reset on the VM
if (!result) {
- logger.debug("Failed to reset SSH Key for the virtual machine; no need to reboot the vm");
+ logger.debug("Failed to reset SSH Key for the Instance; no need to reboot the Instance");
return false;
} else {
final UserVmVO userVm = _vmDao.findById(vmId);
@@ -1159,7 +1153,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
logger.debug("Unable to stop due to ", e);
status = false;
} catch (CloudException e) {
- throw new CloudRuntimeException("Unable to contact the agent to stop the virtual machine " + vm, e);
+ throw new CloudRuntimeException("Unable to contact the agent to stop the Instance " + vm, e);
}
return status;
}
@@ -1261,10 +1255,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
//UserVmVO vmInstance = _vmDao.findById(vmId);
VMInstanceVO vmInstance = _vmInstanceDao.findById(vmId);
if (vmInstance == null) {
- throw new InvalidParameterValueException("unable to find a virtual machine with id " + vmId);
+ throw new InvalidParameterValueException("unable to find an Instance with id " + vmId);
} else if (!(vmInstance.getState().equals(State.Stopped))) {
- throw new InvalidParameterValueException("Unable to upgrade virtual machine " + vmInstance.toString() + " " + " in state " + vmInstance.getState()
- + "; make sure the virtual machine is stopped");
+ throw new InvalidParameterValueException("Unable to upgrade Instance " + vmInstance.toString() + " " + " in state " + vmInstance.getState()
+ + "; make sure the Instance is stopped");
}
_accountMgr.checkAccess(caller, null, true, vmInstance);
@@ -1334,21 +1328,21 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
int cpuNumber = NumbersUtil.parseInt(customParameters.get(UsageEventVO.DynamicParameters.cpuNumber.name()), -1);
Integer maxCPUCores = ConfigurationManagerImpl.VM_SERVICE_OFFERING_MAX_CPU_CORES.value() == 0 ? Integer.MAX_VALUE: ConfigurationManagerImpl.VM_SERVICE_OFFERING_MAX_CPU_CORES.value();
if (cpuNumber < minCPU || cpuNumber > maxCPU || cpuNumber > maxCPUCores) {
- throw new InvalidParameterValueException(String.format("Invalid cpu cores value, specify a value between %d and %d", minCPU, Math.min(maxCPUCores, maxCPU)));
+ throw new InvalidParameterValueException(String.format("Invalid CPU cores value, specify a value between %d and %d", minCPU, Math.min(maxCPUCores, maxCPU)));
}
} else if (customParameters.containsKey(UsageEventVO.DynamicParameters.cpuNumber.name())) {
- throw new InvalidParameterValueException("The cpu cores of this offering id:" + serviceOffering.getUuid()
- + " is not customizable. This is predefined in the template.");
+ throw new InvalidParameterValueException("The CPU cores of this offering id:" + serviceOffering.getUuid()
+ + " is not customizable. This is predefined in the Template.");
}
if (serviceOffering.getSpeed() == null) {
String cpuSpeed = customParameters.get(UsageEventVO.DynamicParameters.cpuSpeed.name());
if ((cpuSpeed == null) || (NumbersUtil.parseInt(cpuSpeed, -1) <= 0)) {
- throw new InvalidParameterValueException("Invalid cpu speed value, specify a value between 1 and " + Integer.MAX_VALUE);
+ throw new InvalidParameterValueException("Invalid CPU speed value, specify a value between 1 and " + Integer.MAX_VALUE);
}
} else if (!serviceOffering.isCustomCpuSpeedSupported() && customParameters.containsKey(UsageEventVO.DynamicParameters.cpuSpeed.name())) {
- throw new InvalidParameterValueException("The cpu speed of this offering id:" + serviceOffering.getUuid()
- + " is not customizable. This is predefined in the template.");
+ throw new InvalidParameterValueException("The CPU speed of this offering id:" + serviceOffering.getUuid()
+ + " is not customizable. This is predefined in the Template.");
}
if (serviceOffering.getRamSize() == null) {
@@ -1360,7 +1354,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
throw new InvalidParameterValueException(String.format("Invalid memory value, specify a value between %d and %d", minMemory, Math.min(maxRAMSize, maxMemory)));
}
} else if (customParameters.containsKey(UsageEventVO.DynamicParameters.memory.name())) {
- throw new InvalidParameterValueException("The memory of this offering id:" + serviceOffering.getUuid() + " is not customizable. This is predefined in the template.");
+ throw new InvalidParameterValueException("The memory of this offering id:" + serviceOffering.getUuid() + " is not customizable. This is predefined in the Template.");
}
} else {
throw new InvalidParameterValueException("Need to specify custom parameter values cpu, cpu speed and memory when using custom offering");
@@ -1373,7 +1367,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Check resource limits for CPU and Memory.
ServiceOfferingVO newServiceOffering = serviceOfferingDao.findById(svcOffId);
if (newServiceOffering.getState() == ServiceOffering.State.Inactive) {
- throw new InvalidParameterValueException(String.format("Unable to upgrade virtual machine %s with an inactive service offering %s", vmInstance.getUuid(), newServiceOffering.getUuid()));
+ throw new InvalidParameterValueException(String.format("Unable to upgrade Instance %s with an inactive service offering %s", vmInstance.getUuid(), newServiceOffering.getUuid()));
}
if (newServiceOffering.isDynamic()) {
newServiceOffering.setDynamicFlag(true);
@@ -1455,7 +1449,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
@Override
- @ActionEvent(eventType = EventTypes.EVENT_NIC_CREATE, eventDescription = "Creating Nic", async = true)
+ @ActionEvent(eventType = EventTypes.EVENT_NIC_CREATE, eventDescription = "Creating NIC", async = true)
public UserVm addNicToVirtualMachine(AddNicToVMCmd cmd) throws InvalidParameterValueException, PermissionDeniedException, CloudRuntimeException {
Long vmId = cmd.getVmId();
Long networkId = cmd.getNetworkId();
@@ -1465,17 +1459,17 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
UserVmVO vmInstance = _vmDao.findById(vmId);
if (vmInstance == null) {
- throw new InvalidParameterValueException("unable to find a virtual machine with id " + vmId);
+ throw new InvalidParameterValueException("Unable to find an Instance with ID " + vmId);
}
// Check that Vm does not have VM Snapshots
if (_vmSnapshotDao.findByVm(vmId).size() > 0) {
- throw new InvalidParameterValueException("NIC cannot be added to VM with VM Snapshots");
+ throw new InvalidParameterValueException("NIC cannot be added to Instance with Instance Snapshots");
}
NetworkVO network = _networkDao.findById(networkId);
if (network == null) {
- throw new InvalidParameterValueException("unable to find a network with id " + networkId);
+ throw new InvalidParameterValueException("Unable to find a Network with ID " + networkId);
}
if (UserVmManager.SHAREDFSVM.equals(vmInstance.getUserVmType()) && network.getGuestType() == Network.GuestType.Shared) {
@@ -1510,7 +1504,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Verify that zone is not Basic
DataCenterVO dc = _dcDao.findById(vmInstance.getDataCenterId());
if (dc.getNetworkType() == DataCenter.NetworkType.Basic) {
- throw new CloudRuntimeException(String.format("Zone %s, has a NetworkType of Basic. Can't add a new NIC to a VM on a Basic Network", dc));
+ throw new CloudRuntimeException(String.format("Zone %s, has a NetworkType of Basic. Can't add a new NIC to a Instance on a Basic Network", dc));
}
//ensure network belongs in zone
@@ -1520,13 +1514,13 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
if(_networkModel.getNicInNetwork(vmInstance.getId(),network.getId()) != null){
- logger.debug("VM {} already in network {} going to add another NIC", vmInstance, network);
+ logger.debug("Instance {} already in network {} going to add another NIC", vmInstance, network);
} else {
//* get all vms hostNames in the network
List<String> hostNames = _vmInstanceDao.listDistinctHostNames(network.getId());
//* verify that there are no duplicates
if (hostNames.contains(vmInstance.getHostName())) {
- throw new CloudRuntimeException("Network " + network.getName() + " already has a vm with host name: " + vmInstance.getHostName());
+ throw new CloudRuntimeException("Network " + network.getName() + " already has an Instance with host name: " + vmInstance.getHostName());
}
}
@@ -1567,7 +1561,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
*/
public void setNicAsDefaultIfNeeded(UserVmVO vmInstance, NicProfile nicProfile) {
if (_networkModel.getDefaultNic(vmInstance.getId()) == null) {
- logger.debug(String.format("Setting NIC %s as default as VM %s has no default NIC.", nicProfile.getName(), vmInstance.getName()));
+ logger.debug(String.format("Setting NIC %s as default as Instance %s has no default NIC.", nicProfile.getName(), vmInstance.getName()));
nicProfile.setDefaultNic(true);
}
}
@@ -1609,7 +1603,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
@Override
- @ActionEvent(eventType = EventTypes.EVENT_NIC_DELETE, eventDescription = "Removing Nic", async = true)
+ @ActionEvent(eventType = EventTypes.EVENT_NIC_DELETE, eventDescription = "Removing NIC", async = true)
public UserVm removeNicFromVirtualMachine(RemoveNicFromVMCmd cmd) throws InvalidParameterValueException, PermissionDeniedException, CloudRuntimeException {
Long vmId = cmd.getVmId();
Long nicId = cmd.getNicId();
@@ -1617,22 +1611,22 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
UserVmVO vmInstance = _vmDao.findById(vmId);
if (vmInstance == null) {
- throw new InvalidParameterValueException("Unable to find a virtual machine with id " + vmId);
+ throw new InvalidParameterValueException("Unable to find an Instance with ID " + vmId);
}
// Check that Vm does not have VM Snapshots
if (_vmSnapshotDao.findByVm(vmId).size() > 0) {
- throw new InvalidParameterValueException("NIC cannot be removed from VM with VM Snapshots");
+ throw new InvalidParameterValueException("NIC cannot be removed from Instance with Instance Snapshots");
}
NicVO nic = _nicDao.findById(nicId);
if (nic == null) {
- throw new InvalidParameterValueException("Unable to find a nic with id " + nicId);
+ throw new InvalidParameterValueException("Unable to find a NIC with ID " + nicId);
}
NetworkVO network = _networkDao.findById(nic.getNetworkId());
if (network == null) {
- throw new InvalidParameterValueException("Unable to find a network with id " + nic.getNetworkId());
+ throw new InvalidParameterValueException("Unable to find a Network with ID " + nic.getNetworkId());
}
// Perform permission check on VM
@@ -1646,17 +1640,17 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// check to see if nic is attached to VM
if (nic.getInstanceId() != vmId) {
- throw new InvalidParameterValueException(nic + " is not a nic on " + vmInstance);
+ throw new InvalidParameterValueException(nic + " is not a NIC on " + vmInstance);
}
// don't delete default NIC on a user VM
if (nic.isDefaultNic() && vmInstance.getType() == VirtualMachine.Type.User) {
- throw new InvalidParameterValueException("Unable to remove nic from " + vmInstance + " in " + network + ", nic is default.");
+ throw new InvalidParameterValueException("Unable to remove NIC from " + vmInstance + " in " + network + ", NIC is default.");
}
// if specified nic is associated with PF/LB/Static NAT
if (_rulesMgr.listAssociatedRulesForGuestNic(nic).size() > 0) {
- throw new InvalidParameterValueException("Unable to remove nic from " + vmInstance + " in " + network + ", nic has associated Port forwarding or Load balancer or Static NAT rules.");
+ throw new InvalidParameterValueException("Unable to remove NIC from " + vmInstance + " in " + network + ", NIC has associated Port forwarding or Load balancer or Static NAT rules.");
}
boolean nicremoved = false;
@@ -1678,7 +1672,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
@Override
- @ActionEvent(eventType = EventTypes.EVENT_NIC_UPDATE, eventDescription = "Creating Nic", async = true)
+ @ActionEvent(eventType = EventTypes.EVENT_NIC_UPDATE, eventDescription = "Creating NIC", async = true)
public UserVm updateDefaultNicForVirtualMachine(UpdateDefaultNicForVMCmd cmd) throws InvalidParameterValueException, CloudRuntimeException {
Long vmId = cmd.getVmId();
Long nicId = cmd.getNicId();
@@ -1686,21 +1680,21 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
UserVmVO vmInstance = _vmDao.findById(vmId);
if (vmInstance == null) {
- throw new InvalidParameterValueException("unable to find a virtual machine with id " + vmId);
+ throw new InvalidParameterValueException("Unable to find an Instance with ID " + vmId);
}
// Check that Vm does not have VM Snapshots
if (_vmSnapshotDao.findByVm(vmId).size() > 0) {
- throw new InvalidParameterValueException("NIC cannot be updated for VM with VM Snapshots");
+ throw new InvalidParameterValueException("NIC cannot be updated for Instance with Instance Snapshots");
}
NicVO nic = _nicDao.findById(nicId);
if (nic == null) {
- throw new InvalidParameterValueException("unable to find a nic with id " + nicId);
+ throw new InvalidParameterValueException("Unable to find a NIC with ID " + nicId);
}
NetworkVO network = _networkDao.findById(nic.getNetworkId());
if (network == null) {
- throw new InvalidParameterValueException("unable to find a network with id " + nic.getNetworkId());
+ throw new InvalidParameterValueException("Unable to find a Network with ID " + nic.getNetworkId());
}
// Perform permission check on VM
@@ -1717,11 +1711,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
//check to see if nic is attached to VM
if (nic.getInstanceId() != vmId) {
- throw new InvalidParameterValueException(nic + " is not a nic on " + vmInstance);
+ throw new InvalidParameterValueException(nic + " is not a NIC on " + vmInstance);
}
// if current default equals chosen new default, Throw an exception
if (nic.isDefaultNic()) {
- throw new CloudRuntimeException("refusing to set default nic because chosen nic is already the default");
+ throw new CloudRuntimeException("refusing to set default NIC because chosen NIC is already the default");
}
//make sure the VM is Running or Stopped
@@ -1738,8 +1732,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
if (existing == null) {
- logger.warn("Failed to update default nic, no nic profile found for existing default network");
- throw new CloudRuntimeException("Failed to find a nic profile for the existing default network. This is bad and probably means some sort of configuration corruption");
+ logger.warn("Failed to update default NIC, no NIC profile found for existing default Network");
+ throw new CloudRuntimeException("Failed to find a NIC profile for the existing default Network. This is bad and probably means some sort of configuration corruption");
}
Network oldDefaultNetwork = null;
@@ -1851,19 +1845,19 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
Account ipOwner = _accountDao.findByIdIncludingRemoved(vm.getAccountId());
// verify ip address
- logger.debug("Calling the ip allocation ...");
+ logger.debug("Calling the IP allocation ...");
DataCenter dc = _dcDao.findById(network.getDataCenterId());
if (dc == null) {
- throw new InvalidParameterValueException("There is no dc with the nic");
+ throw new InvalidParameterValueException("There is no dc with the NIC");
}
if (dc.getNetworkType() == NetworkType.Advanced && network.getGuestType() == Network.GuestType.Isolated) {
try {
ipaddr = _ipAddrMgr.allocateGuestIP(network, ipaddr);
} catch (InsufficientAddressCapacityException e) {
- throw new InvalidParameterValueException(String.format("Allocating ip to guest nic %s failed, for insufficient address capacity", nicVO));
+ throw new InvalidParameterValueException(String.format("Allocating IP to guest NIC %s failed, for insufficient address capacity", nicVO));
}
if (ipaddr == null) {
- throw new InvalidParameterValueException(String.format("Allocating ip to guest nic %s failed, please choose another ip", nicVO));
+ throw new InvalidParameterValueException(String.format("Allocating IP to guest NIC %s failed, please choose another IP", nicVO));
}
if (nicVO.getIPv4Address() != null) {
@@ -1879,14 +1873,14 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (dc.getNetworkType() == NetworkType.Basic) {
podId = vm.getPodIdToDeployIn();
if (podId == null) {
- throw new InvalidParameterValueException("vm pod id is null in Basic zone; can't decide the range for ip allocation");
+ throw new InvalidParameterValueException("Instance Pod ID is null in Basic zone; can't decide the range for IP allocation");
}
}
try {
ipaddr = _ipAddrMgr.allocatePublicIpForGuestNic(network, podId, ipOwner, ipaddr);
if (ipaddr == null) {
- throw new InvalidParameterValueException("Allocating ip to guest nic " + nicVO.getUuid() + " failed, please choose another ip");
+ throw new InvalidParameterValueException("Allocating IP to guest NIC " + nicVO.getUuid() + " failed, please choose another IP");
}
final IPAddressVO newIp = _ipAddressDao.findByIpAndSourceNetworkId(network.getId(), ipaddr);
@@ -1905,7 +1899,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
});
}
} catch (InsufficientAddressCapacityException e) {
- logger.error("Allocating ip to guest nic {} failed, for insufficient address capacity", nicVO);
+ logger.error("Allocating IP to guest NIC {} failed, for insufficient address capacity", nicVO);
return null;
}
} else {
@@ -2124,7 +2118,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Check zone wide flag
boolean enableDynamicallyScaleVm = EnableDynamicallyScaleVm.valueIn(vmInstance.getDataCenterId());
if (!enableDynamicallyScaleVm) {
- throw new PermissionDeniedException("Dynamically scaling virtual machines is disabled for this zone, please contact your admin.");
+ throw new PermissionDeniedException("Dynamically scaling Instances is disabled for this zone, please contact your admin.");
}
// Check vm flag
@@ -2327,7 +2321,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
final UserVmVO vm = _vmDao.findById(vmId);
if (vm == null) {
- throw new InvalidParameterValueException("unable to find a virtual machine with id " + vmId);
+ throw new InvalidParameterValueException("Unable to find an Instance with id " + vmId);
}
if (UserVmManager.SHAREDFSVM.equals(vm.getUserVmType())) {
throw new InvalidParameterValueException("Operation not supported on Shared FileSystem Instance");
@@ -2363,7 +2357,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// if the account is deleted, throw error
if (account.getRemoved() != null) {
- throw new CloudRuntimeException("Unable to recover VM as the account is deleted");
+ throw new CloudRuntimeException("Unable to recover Instance as the Account is deleted");
}
// Get serviceOffering for Virtual Machine
@@ -2637,14 +2631,14 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
for (IPAddressVO ip : ips) {
try {
if (_rulesMgr.disableStaticNat(ip.getId(), _accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM), User.UID_SYSTEM, true)) {
- logger.debug("Disabled 1-1 nat for ip address {} as a part of vm {} expunge", ip, vm);
+ logger.debug("Disabled 1-1 NAT for IP address {} as a part of Instance {} expunge", ip, vm);
} else {
- logger.warn("Failed to disable static nat for ip address {} as a part of vm {} expunge", ip, vm);
+ logger.warn("Failed to disable static NAT for IP address {} as a part of Instance {} expunge", ip, vm);
success = false;
}
} catch (ResourceUnavailableException e) {
success = false;
- logger.warn("Failed to disable static nat for ip address {} as a part of vm {} expunge because resource is unavailable", ip, vm, e);
+ logger.warn("Failed to disable static NAT for IP address {} as a part of Instance {} expunge because resource is unavailable", ip, vm, e);
}
}
@@ -2711,11 +2705,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (vmIdAndCount.getRetrievalCount() <= 0) {
vmIdCountMap.remove(nicId);
- logger.debug("Vm {} nic {} count is zero .. removing vm nic from map ", vmId, nicId);
+ logger.debug("Instance {} NIC {} count is zero .. removing Instance NIC from map ", vmId, nicId);
ActionEventUtils.onActionEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM,
Domain.ROOT_DOMAIN, EventTypes.EVENT_NETWORK_EXTERNAL_DHCP_VM_IPFETCH,
- "VM " + vmId + " nic id "+ nicId + " ip addr fetch failed ", vmId, ApiCommandResourceType.VirtualMachine.toString());
+ "Instance " + vmId + " NIC id "+ nicId + " IP addr fetch failed ", vmId, ApiCommandResourceType.VirtualMachine.toString());
continue;
}
@@ -2764,9 +2758,9 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
List<UserVmVO> vms = _vmDao.findDestroyedVms(new Date(System.currentTimeMillis() - ((long)_expungeDelay << 10)));
if (logger.isInfoEnabled()) {
if (vms.size() == 0) {
- logger.trace("Found " + vms.size() + " vms to expunge.");
+ logger.trace("Found " + vms.size() + " Instances to expunge.");
} else {
- logger.info("Found " + vms.size() + " vms to expunge.");
+ logger.info("Found " + vms.size() + " Instances to expunge.");
}
}
for (UserVmVO vm : vms) {
@@ -3178,10 +3172,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (isDynamicallyScalable == true) {
VMTemplateVO template = _templateDao.findByIdIncludingRemoved(vm.getTemplateId());
if (!template.isDynamicallyScalable()) {
- throw new InvalidParameterValueException("Dynamic Scaling cannot be enabled for the VM since its template does not have dynamic scaling enabled");
+ throw new InvalidParameterValueException("Dynamic Scaling cannot be enabled for the Instance since its Template does not have dynamic scaling enabled");
}
if (!offering.isDynamicScalingEnabled()) {
- throw new InvalidParameterValueException("Dynamic Scaling cannot be enabled for the VM since its service offering does not have dynamic scaling enabled");
+ throw new InvalidParameterValueException("Dynamic Scaling cannot be enabled for the Instance since its service offering does not have dynamic scaling enabled");
}
if (!UserVmManager.EnableDynamicallyScaleVm.valueIn(vm.getDataCenterId())) {
logger.debug("Dynamic Scaling cannot be enabled for the VM {} since the global setting enable.dynamic.scale.vm is set to false", vm);
@@ -3403,11 +3397,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Verify input parameters
UserVmVO vmInstance = _vmDao.findById(vmId);
if (vmInstance == null) {
- throw new InvalidParameterValueException("Unable to find a virtual machine with id " + vmId);
+ throw new InvalidParameterValueException("Unable to find a Instance with ID " + vmId);
}
if (vmInstance.getState() != State.Running) {
- throw new InvalidParameterValueException(String.format("The VM %s (%s) is not running, unable to reboot it",
+ throw new InvalidParameterValueException(String.format("The Instance %s (%s) is not running, unable to reboot it",
vmInstance.getUuid(), vmInstance.getDisplayNameOrHostName()));
}
@@ -3423,7 +3417,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
return restoreVMInternal(caller, vmInstance);
}
} else {
- throw new InvalidParameterValueException("Unable to find service offering: " + serviceOfferingId + " corresponding to the vm");
+ throw new InvalidParameterValueException("Unable to find service offering: " + serviceOfferingId + " corresponding to the Instance");
}
Boolean enterSetup = cmd.getBootIntoSetup();
@@ -3438,8 +3432,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
for (NicVO nic : nics) {
Network network = _networkModel.getNetwork(nic.getNetworkId());
if (GuestType.L2.equals(network.getGuestType()) || _networkModel.isSharedNetworkWithoutServices(network.getId())) {
- logger.debug("Adding vm " +vmId +" nic id "+ nic.getId() +" into vmIdCountMap as part of vm " +
- "reboot for vm ip fetch ");
+ logger.debug("Adding Instance " +vmId +" NIC ID "+ nic.getId() +" into vmIdCountMap as part of Instance " +
+ "reboot for Instance IP fetch ");
vmIdCountMap.put(nic.getId(), new VmAndCountDetails(nic.getInstanceId(), VmIpFetchTrialMax.value()));
}
}
@@ -3518,11 +3512,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
checkPluginsIfVmCanBeDestroyed(vm);
// check if there are active volume snapshots tasks
- logger.debug("Checking if there are any ongoing snapshots on the ROOT volumes associated with VM {}", vm);
+ logger.debug("Checking if there are any ongoing Snapshots on the ROOT volumes associated with Instance {}", vm);
if (checkStatusOfVolumeSnapshots(vm, Volume.Type.ROOT)) {
- throw new CloudRuntimeException("There is/are unbacked up snapshot(s) on ROOT volume, vm destroy is not permitted, please try again later.");
+ throw new CloudRuntimeException("There is/are unbacked up Snapshot(s) on ROOT volume, Instance destroy is not permitted, please try again later.");
}
- logger.debug("Found no ongoing snapshots on volume of type ROOT, for the vm {}", vm);
+ logger.debug("Found no ongoing Snapshots on volume of type ROOT, for the Instance {}", vm);
List<VolumeVO> volumesToBeDeleted = getVolumesFromIds(cmd);
@@ -3594,7 +3588,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
boolean isNameInUse = _vmGroupDao.isNameInUse(accountId, groupName);
if (isNameInUse) {
- throw new InvalidParameterValueException(String.format("Unable to create vm group, a group with name %s already exists for account %s", groupName, owner));
+ throw new InvalidParameterValueException(String.format("Unable to create Instance group, a group with name %s already exists for Account %s", groupName, owner));
}
return createVmGroup(groupName, accountId);
@@ -3611,7 +3605,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// not
// created.
if (account == null) {
- logger.warn("Failed to acquire lock on account");
+ logger.warn("Failed to acquire lock on Account");
return null;
}
InstanceGroupVO group = _vmGroupDao.findByAccountAndName(accountId, groupName);
@@ -3687,8 +3681,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// it.
InstanceGroupVO ngrpLock = _vmGroupDao.lockRow(groupFinal.getId(), false);
if (ngrpLock == null) {
- logger.warn("Failed to acquire lock on vm group {}", groupFinal);
- throw new CloudRuntimeException(String.format("Failed to acquire lock on vm group %s", groupFinal));
+ logger.warn("Failed to acquire lock on Instance group {}", groupFinal);
+ throw new CloudRuntimeException(String.format("Failed to acquire lock on Instance group %s", groupFinal));
}
// Currently don't allow to assign a vm to more than one group
@@ -3806,7 +3800,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
} else {
// create default security group for the account
if (logger.isDebugEnabled()) {
- logger.debug("Couldn't find default security group for the account " + owner + " so creating a new one");
+ logger.debug("Couldn't find default security group for the Account " + owner + " so creating a new one");
}
defaultGroup = _securityGroupMgr.createSecurityGroup(SecurityGroupManager.DEFAULT_GROUP_NAME, SecurityGroupManager.DEFAULT_GROUP_DESCRIPTION,
owner.getDomainId(), owner.getId(), owner.getAccountName());
@@ -3917,7 +3911,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
} else {
// create default security group for the account
if (logger.isDebugEnabled()) {
- logger.debug("Couldn't find default security group for the account " + owner + " so creating a new one");
+ logger.debug("Couldn't find default security group for the Account " + owner + " so creating a new one");
}
defaultGroup = _securityGroupMgr.createSecurityGroup(SecurityGroupManager.DEFAULT_GROUP_NAME, SecurityGroupManager.DEFAULT_GROUP_DESCRIPTION,
owner.getDomainId(), owner.getId(), owner.getAccountName());
@@ -3970,11 +3964,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Only ISOs, XenServer, KVM, and VmWare template types are
// supported for vpc networks
if (template.getFormat() != ImageFormat.ISO && !vpcSupportedHTypes.contains(template.getHypervisorType())) {
- throw new InvalidParameterValueException("Can't create vm from template with hypervisor " + template.getHypervisorType() + " in vpc network " + network);
+ throw new InvalidParameterValueException("Can't create Instance from Template with hypervisor " + template.getHypervisorType() + " in VPC Network " + network);
} else if (template.getFormat() == ImageFormat.ISO && !vpcSupportedHTypes.contains(hypervisor)) {
// Only XenServer, KVM, and VMware hypervisors are supported
// for vpc networks
- throw new InvalidParameterValueException("Can't create vm of hypervisor type " + hypervisor + " in vpc network");
+ throw new InvalidParameterValueException("Can't create Instance of hypervisor type " + hypervisor + " in VPC Network");
}
}
@@ -4018,11 +4012,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Only ISOs, XenServer, KVM, and VmWare template types are
// supported for vpc networks
if (template.getFormat() != ImageFormat.ISO && !vpcSupportedHTypes.contains(template.getHypervisorType())) {
- throw new InvalidParameterValueException("Can't create vm from template with hypervisor " + template.getHypervisorType() + " in vpc network " + network);
+ throw new InvalidParameterValueException("Can't create Instance from Template with hypervisor " + template.getHypervisorType() + " in VPC Network " + network);
} else if (template.getFormat() == ImageFormat.ISO && !vpcSupportedHTypes.contains(hypervisor)) {
// Only XenServer, KVM, and VMware hypervisors are supported
// for vpc networks
- throw new InvalidParameterValueException("Can't create vm of hypervisor type " + hypervisor + " in vpc network");
+ throw new InvalidParameterValueException("Can't create Instance of hypervisor type " + hypervisor + " in VPC Network");
}
}
@@ -4057,12 +4051,12 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// get Virtual networks
List<? extends Network> virtualNetworks = _networkModel.listNetworksForAccount(owner.getId(), zone.getId(), Network.GuestType.Isolated);
if (virtualNetworks == null) {
- throw new InvalidParameterValueException("No (virtual) networks are found for account " + owner);
+ throw new InvalidParameterValueException("No (virtual) networks are found for Account " + owner);
}
if (virtualNetworks.isEmpty()) {
defaultNetwork = createDefaultNetworkForAccount(zone, owner, requiredOfferings);
} else if (virtualNetworks.size() > 1 && !selectAny) {
- throw new InvalidParameterValueException("More than 1 default Isolated networks are found for account " + owner + "; please specify networkIds");
+ throw new InvalidParameterValueException("More than 1 default Isolated networks are found for Account " + owner + "; please specify networkIds");
} else {
defaultNetwork = _networkDao.findById(virtualNetworks.get(0).getId());
}
@@ -4083,7 +4077,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
throw new InvalidParameterValueException("Unable to find physical network with id: " + physicalNetworkId + " and tag: "
+ requiredOfferings.get(0).getTags());
}
- logger.debug("Creating network for account {} from the network offering {} as a part of deployVM process", owner, requiredOfferings.get(0));
+ logger.debug("Creating Network for Account {} from the network offering {} as a part of deployVM process", owner, requiredOfferings.get(0));
Network newNetwork = _networkMgr.createGuestNetwork(requiredOfferings.get(0).getId(), owner.getAccountName() + "-network", owner.getAccountName() + "-network",
null, null, null, false, null, owner, null, physicalNetwork, zone.getId(), ACLType.Account, null, null, null, null, true, null, null,
null, null, null, null, null, null, null, null, null);
@@ -4140,12 +4134,12 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
HypervisorType hypervisorType = null;
if (template.getHypervisorType() == null || template.getHypervisorType() == HypervisorType.None) {
if (hypervisor == null || hypervisor == HypervisorType.None) {
- throw new InvalidParameterValueException("hypervisor parameter is needed to deploy VM or the hypervisor parameter value passed is invalid");
+ throw new InvalidParameterValueException("Hypervisor parameter is needed to deploy VM or the hypervisor parameter value passed is invalid");
}
hypervisorType = hypervisor;
} else {
if (hypervisor != null && hypervisor != HypervisorType.None && hypervisor != template.getHypervisorType()) {
- throw new InvalidParameterValueException("Hypervisor passed to the deployVm call, is different from the hypervisor type of the template");
+ throw new InvalidParameterValueException("Hypervisor passed to the deployVm call, is different from the hypervisor type of the Template");
}
hypervisorType = template.getHypervisorType();
}
@@ -4326,20 +4320,20 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (dataDiskTemplate == null
|| (!dataDiskTemplate.getTemplateType().equals(TemplateType.DATADISK)) && (dataDiskTemplate.getState().equals(VirtualMachineTemplate.State.Active))) {
- throw new InvalidParameterValueException("Invalid template id specified for Datadisk template" + datadiskTemplateToDiskOffering.getKey());
+ throw new InvalidParameterValueException("Invalid Template ID specified for Datadisk Template" + datadiskTemplateToDiskOffering.getKey());
}
long dataDiskTemplateId = datadiskTemplateToDiskOffering.getKey();
if (!dataDiskTemplate.getParentTemplateId().equals(template.getId())) {
- throw new InvalidParameterValueException(String.format("Invalid Datadisk template. Specified Datadisk template %s doesn't belong to template %s", dataDiskTemplate, template));
+ throw new InvalidParameterValueException(String.format("Invalid Datadisk Template. Specified Datadisk Template %s doesn't belong to Template %s", dataDiskTemplate, template));
}
if (dataDiskOffering == null) {
- throw new InvalidParameterValueException(String.format("Invalid disk offering %s specified for datadisk template %s", datadiskTemplateToDiskOffering.getValue(), dataDiskTemplate));
+ throw new InvalidParameterValueException(String.format("Invalid disk offering %s specified for datadisk Template %s", datadiskTemplateToDiskOffering.getValue(), dataDiskTemplate));
}
if (dataDiskOffering.isCustomized()) {
- throw new InvalidParameterValueException(String.format("Invalid disk offering %s specified for datadisk template %s. Custom Disk offerings are not supported for Datadisk templates", dataDiskOffering, dataDiskTemplate));
+ throw new InvalidParameterValueException(String.format("Invalid disk offering %s specified for datadisk Template %s. Custom Disk offerings are not supported for Datadisk Templates", dataDiskOffering, dataDiskTemplate));
}
if (dataDiskOffering.getDiskSize() < dataDiskTemplate.getSize()) {
- throw new InvalidParameterValueException(String.format("Invalid disk offering %s specified for datadisk template %s. Disk offering size should be greater than or equal to the template size", dataDiskOffering, dataDiskTemplate));
+ throw new InvalidParameterValueException(String.format("Invalid disk offering %s specified for datadisk Template %s. Disk offering size should be greater than or equal to the Template size", dataDiskOffering, dataDiskTemplate));
}
_templateDao.loadDetails(dataDiskTemplate);
resourceLimitService.checkVolumeResourceLimit(owner, true, dataDiskOffering.getDiskSize(), dataDiskOffering);
@@ -5545,7 +5539,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (answer != null && answer instanceof RestoreVMSnapshotAnswer) {
RestoreVMSnapshotAnswer restoreVMSnapshotAnswer = (RestoreVMSnapshotAnswer) answer;
if (restoreVMSnapshotAnswer == null || !restoreVMSnapshotAnswer.getResult()) {
- logger.warn("Unable to restore the vm snapshot from image file to the VM: " + restoreVMSnapshotAnswer.getDetails());
+ logger.warn("Unable to restore the Instance Snapshot from image file to the Instance: " + restoreVMSnapshotAnswer.getDetails());
}
}
@@ -5674,13 +5668,135 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
return startVirtualMachine(vmId, podId, clusterId, hostId, additionalParams, deploymentPlannerToUse, true);
}
+ private Pair<UserVmVO, Map<VirtualMachineProfile.Param, Object>> startVirtualMachineUnchecked(UserVmVO vm, VMTemplateVO template, Long podId,
+ Long clusterId, Long hostId, @NotNull Map<VirtualMachineProfile.Param, Object> additionalParams, String deploymentPlannerToUse,
+ boolean isExplicitHost, boolean isRootAdmin) throws ResourceUnavailableException, InsufficientCapacityException {
+
+ // check if vm is security group enabled
+ if (_securityGroupMgr.isVmSecurityGroupEnabled(vm.getId()) && _securityGroupMgr.getSecurityGroupsForVm(vm.getId()).isEmpty()
+ && !_securityGroupMgr.isVmMappedToDefaultSecurityGroup(vm.getId()) && _networkModel.canAddDefaultSecurityGroup()) {
+ // if vm is not mapped to security group, create a mapping
+ if (logger.isDebugEnabled()) {
+ logger.debug("Vm " + vm + " is security group enabled, but not mapped to default security group; creating the mapping automatically");
+ }
+
+ SecurityGroup defaultSecurityGroup = _securityGroupMgr.getDefaultSecurityGroup(vm.getAccountId());
+ if (defaultSecurityGroup != null) {
+ List<Long> groupList = new ArrayList<>();
+ groupList.add(defaultSecurityGroup.getId());
+ _securityGroupMgr.addInstanceToGroups(vm, groupList);
+ }
+ }
+
+ // Choose deployment planner
+ // Host takes 1st preference, Cluster takes 2nd preference and Pod takes 3rd
+ // Default behaviour is invoked when host, cluster or pod are not specified
+ Pod destinationPod = getDestinationPod(podId, isRootAdmin);
+ Cluster destinationCluster = getDestinationCluster(clusterId, isRootAdmin);
+ HostVO destinationHost = getDestinationHost(hostId, isRootAdmin, isExplicitHost);
+ DataCenterDeployment plan = null;
+ boolean deployOnGivenHost = false;
+ if (destinationHost != null) {
+ logger.debug("Destination Host to deploy the VM is specified, specifying a deployment plan to deploy the VM");
+ _hostDao.loadHostTags(destinationHost);
+ validateStrictHostTagCheck(vm, destinationHost);
+
+ final ServiceOfferingVO offering = serviceOfferingDao.findById(vm.getId(), vm.getServiceOfferingId());
+ Pair<Boolean, Boolean> cpuCapabilityAndCapacity = _capacityMgr.checkIfHostHasCpuCapabilityAndCapacity(destinationHost, offering, false);
+ if (!cpuCapabilityAndCapacity.first() || !cpuCapabilityAndCapacity.second()) {
+ String errorMsg;
+ if (!cpuCapabilityAndCapacity.first()) {
+ errorMsg = String.format("Cannot deploy the VM to specified host %s, requested CPU and speed is more than the host capability", destinationHost);
+ } else {
+ errorMsg = String.format("Cannot deploy the VM to specified host %s, host does not have enough free CPU or RAM, please check the logs", destinationHost);
+ }
+ logger.info(errorMsg);
+ if (!AllowDeployVmIfGivenHostFails.value()) {
+ throw new InvalidParameterValueException(errorMsg);
+ }
+ } else {
+ plan = new DataCenterDeployment(vm.getDataCenterId(), destinationHost.getPodId(), destinationHost.getClusterId(), destinationHost.getId(), null, null);
+ if (!AllowDeployVmIfGivenHostFails.value()) {
+ deployOnGivenHost = true;
+ }
+ }
+ } else if (destinationCluster != null) {
+ logger.debug("Destination Cluster to deploy the VM is specified, specifying a deployment plan to deploy the VM");
+ plan = new DataCenterDeployment(vm.getDataCenterId(), destinationCluster.getPodId(), destinationCluster.getId(), null, null, null);
+ if (!AllowDeployVmIfGivenHostFails.value()) {
+ deployOnGivenHost = true;
+ }
+ } else if (destinationPod != null) {
+ logger.debug("Destination Pod to deploy the VM is specified, specifying a deployment plan to deploy the VM");
+ plan = new DataCenterDeployment(vm.getDataCenterId(), destinationPod.getId(), null, null, null, null);
+ if (!AllowDeployVmIfGivenHostFails.value()) {
+ deployOnGivenHost = true;
+ }
+ }
+
+ // Set parameters
+ Map<VirtualMachineProfile.Param, Object> params = null;
+ if (vm.isUpdateParameters()) {
+ _vmDao.loadDetails(vm);
+ String password = getCurrentVmPasswordOrDefineNewPassword(String.valueOf(additionalParams.getOrDefault(VirtualMachineProfile.Param.VmPassword, "")), vm, template);
+ if (!validPassword(password)) {
+ throw new InvalidParameterValueException("A valid password for this virtual machine was not provided.");
+ }
+ // Check if an SSH key pair was selected for the instance and if so
+ // use it to encrypt & save the vm password
+ encryptAndStorePassword(vm, password);
+ params = createParameterInParameterMap(params, additionalParams, VirtualMachineProfile.Param.VmPassword, password);
+ }
+
+ if (additionalParams.containsKey(VirtualMachineProfile.Param.BootIntoSetup)) {
+ if (!HypervisorType.VMware.equals(vm.getHypervisorType())) {
+ throw new InvalidParameterValueException(ApiConstants.BOOT_INTO_SETUP + " makes no sense for " + vm.getHypervisorType());
+ }
+ Object paramValue = additionalParams.get(VirtualMachineProfile.Param.BootIntoSetup);
+ if (logger.isTraceEnabled()) {
+ logger.trace("It was specified whether to enter setup mode: " + paramValue.toString());
+ }
+ params = createParameterInParameterMap(params, additionalParams, VirtualMachineProfile.Param.BootIntoSetup, paramValue);
+ }
+
+ VirtualMachineEntity vmEntity = _orchSrvc.getVirtualMachine(vm.getUuid());
+
+ DeploymentPlanner planner = null;
+ if (deploymentPlannerToUse != null) {
+ // if set to null, the deployment planner would be later figured out either from global config var, or from
+ // the service offering
+ planner = _planningMgr.getDeploymentPlannerByName(deploymentPlannerToUse);
+ if (planner == null) {
+ throw new InvalidParameterValueException("Can't find a planner by name " + deploymentPlannerToUse);
+ }
+ }
+ vmEntity.setParamsToEntity(additionalParams);
+
+ UserVO callerUser = _userDao.findById(CallContext.current().getCallingUserId());
+ String reservationId = vmEntity.reserve(planner, plan, new ExcludeList(), Long.toString(callerUser.getId()));
+ vmEntity.deploy(reservationId, Long.toString(callerUser.getId()), params, deployOnGivenHost);
+
+ Pair<UserVmVO, Map<VirtualMachineProfile.Param, Object>> vmParamPair = new Pair(vm, params);
+ if (vm.isUpdateParameters()) {
+ // this value is not being sent to the backend; need only for api
+ // display purposes
+ if (template.isEnablePassword()) {
+ if (vm.getDetail(VmDetailConstants.PASSWORD) != null) {
+ vmInstanceDetailsDao.removeDetail(vm.getId(), VmDetailConstants.PASSWORD);
+ }
+ vm.setUpdateParameters(false);
+ _vmDao.update(vm.getId(), vm);
+ }
+ }
+ return vmParamPair;
+ }
+
@Override
public Pair<UserVmVO, Map<VirtualMachineProfile.Param, Object>> startVirtualMachine(long vmId, Long podId, Long clusterId, Long hostId,
@NotNull Map<VirtualMachineProfile.Param, Object> additionalParams, String deploymentPlannerToUse, boolean isExplicitHost)
throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException, ResourceAllocationException {
// Input validation
final Account callerAccount = CallContext.current().getCallingAccount();
- UserVO callerUser = _userDao.findById(CallContext.current().getCallingUserId());
// if account is removed, return error
if (callerAccount == null || callerAccount.getRemoved() != null) {
@@ -5708,138 +5824,26 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (owner.getState() == Account.State.DISABLED) {
throw new PermissionDeniedException(String.format("The owner of %s is disabled: %s", vm, owner));
}
- Pair<UserVmVO, Map<VirtualMachineProfile.Param, Object>> vmParamPair;
- try (CheckedReservation vmReservation = new CheckedReservation(owner, ResourceType.user_vm, vm.getId(), null, 1L, reservationDao, _resourceLimitMgr)) {
- VMTemplateVO template = _templateDao.findByIdIncludingRemoved(vm.getTemplateId());
- if (VirtualMachineManager.ResourceCountRunningVMsonly.value()) {
- // check if account/domain is with in resource limits to start a new vm
- ServiceOfferingVO offering = serviceOfferingDao.findById(vm.getId(), vm.getServiceOfferingId());
- resourceLimitService.checkVmResourceLimit(owner, vm.isDisplayVm(), offering, template);
- }
- // check if vm is security group enabled
- if (_securityGroupMgr.isVmSecurityGroupEnabled(vmId) && _securityGroupMgr.getSecurityGroupsForVm(vmId).isEmpty()
- && !_securityGroupMgr.isVmMappedToDefaultSecurityGroup(vmId) && _networkModel.canAddDefaultSecurityGroup()) {
- // if vm is not mapped to security group, create a mapping
- if (logger.isDebugEnabled()) {
- logger.debug("Vm " + vm + " is security group enabled, but not mapped to default security group; creating the mapping automatically");
- }
-
- SecurityGroup defaultSecurityGroup = _securityGroupMgr.getDefaultSecurityGroup(vm.getAccountId());
- if (defaultSecurityGroup != null) {
- List<Long> groupList = new ArrayList<>();
- groupList.add(defaultSecurityGroup.getId());
- _securityGroupMgr.addInstanceToGroups(vm, groupList);
- }
- }
- // Choose deployment planner
- // Host takes 1st preference, Cluster takes 2nd preference and Pod takes 3rd
- // Default behaviour is invoked when host, cluster or pod are not specified
- boolean isRootAdmin = _accountService.isRootAdmin(callerAccount.getId());
- Pod destinationPod = getDestinationPod(podId, isRootAdmin);
- Cluster destinationCluster = getDestinationCluster(clusterId, isRootAdmin);
- HostVO destinationHost = getDestinationHost(hostId, isRootAdmin, isExplicitHost);
- DataCenterDeployment plan = null;
- boolean deployOnGivenHost = false;
- if (destinationHost != null) {
- logger.debug("Destination Host to deploy the VM is specified, specifying a deployment plan to deploy the VM");
- _hostDao.loadHostTags(destinationHost);
- validateStrictHostTagCheck(vm, destinationHost);
-
- final ServiceOfferingVO offering = serviceOfferingDao.findById(vm.getId(), vm.getServiceOfferingId());
- Pair<Boolean, Boolean> cpuCapabilityAndCapacity = _capacityMgr.checkIfHostHasCpuCapabilityAndCapacity(destinationHost, offering, false);
- if (!cpuCapabilityAndCapacity.first() || !cpuCapabilityAndCapacity.second()) {
- String errorMsg;
- if (!cpuCapabilityAndCapacity.first()) {
- errorMsg = String.format("Cannot deploy the VM to specified host %s, requested CPU and speed is more than the host capability", destinationHost);
- } else {
- errorMsg = String.format("Cannot deploy the VM to specified host %s, host does not have enough free CPU or RAM, please check the logs", destinationHost);
- }
- logger.info(errorMsg);
- if (!AllowDeployVmIfGivenHostFails.value()) {
- throw new InvalidParameterValueException(errorMsg);
- }
- } else {
- plan = new DataCenterDeployment(vm.getDataCenterId(), destinationHost.getPodId(), destinationHost.getClusterId(), destinationHost.getId(), null, null);
- if (!AllowDeployVmIfGivenHostFails.value()) {
- deployOnGivenHost = true;
- }
- }
- } else if (destinationCluster != null) {
- logger.debug("Destination Cluster to deploy the VM is specified, specifying a deployment plan to deploy the VM");
- plan = new DataCenterDeployment(vm.getDataCenterId(), destinationCluster.getPodId(), destinationCluster.getId(), null, null, null);
- if (!AllowDeployVmIfGivenHostFails.value()) {
- deployOnGivenHost = true;
- }
- } else if (destinationPod != null) {
- logger.debug("Destination Pod to deploy the VM is specified, specifying a deployment plan to deploy the VM");
- plan = new DataCenterDeployment(vm.getDataCenterId(), destinationPod.getId(), null, null, null, null);
- if (!AllowDeployVmIfGivenHostFails.value()) {
- deployOnGivenHost = true;
- }
- }
-
- // Set parameters
- Map<VirtualMachineProfile.Param, Object> params = null;
- if (vm.isUpdateParameters()) {
- _vmDao.loadDetails(vm);
+ boolean isRootAdmin = _accountService.isRootAdmin(callerAccount.getId());
- String password = getCurrentVmPasswordOrDefineNewPassword(String.valueOf(additionalParams.getOrDefault(VirtualMachineProfile.Param.VmPassword, "")), vm, template);
-
- if (!validPassword(password)) {
- throw new InvalidParameterValueException("A valid password for this virtual machine was not provided.");
- }
-
- // Check if an SSH key pair was selected for the instance and if so
- // use it to encrypt & save the vm password
- encryptAndStorePassword(vm, password);
-
- params = createParameterInParameterMap(params, additionalParams, VirtualMachineProfile.Param.VmPassword, password);
- }
-
- if (additionalParams.containsKey(VirtualMachineProfile.Param.BootIntoSetup)) {
- if (!HypervisorType.VMware.equals(vm.getHypervisorType())) {
- throw new InvalidParameterValueException(ApiConstants.BOOT_INTO_SETUP + " makes no sense for " + vm.getHypervisorType());
- }
- Object paramValue = additionalParams.get(VirtualMachineProfile.Param.BootIntoSetup);
- if (logger.isTraceEnabled()) {
- logger.trace("It was specified whether to enter setup mode: " + paramValue.toString());
- }
- params = createParameterInParameterMap(params, additionalParams, VirtualMachineProfile.Param.BootIntoSetup, paramValue);
- }
-
- VirtualMachineEntity vmEntity = _orchSrvc.getVirtualMachine(vm.getUuid());
-
- DeploymentPlanner planner = null;
- if (deploymentPlannerToUse != null) {
- // if set to null, the deployment planner would be later figured out either from global config var, or from
- // the service offering
- planner = _planningMgr.getDeploymentPlannerByName(deploymentPlannerToUse);
- if (planner == null) {
- throw new InvalidParameterValueException("Can't find a planner by name " + deploymentPlannerToUse);
- }
- }
- vmEntity.setParamsToEntity(additionalParams);
-
- String reservationId = vmEntity.reserve(planner, plan, new ExcludeList(), Long.toString(callerUser.getId()));
- vmEntity.deploy(reservationId, Long.toString(callerUser.getId()), params, deployOnGivenHost);
-
- vmParamPair = new Pair(vm, params);
- if (vm != null && vm.isUpdateParameters()) {
- // this value is not being sent to the backend; need only for api
- // display purposes
- if (template.isEnablePassword()) {
- if (vm.getDetail(VmDetailConstants.PASSWORD) != null) {
- vmInstanceDetailsDao.removeDetail(vm.getId(), VmDetailConstants.PASSWORD);
- }
- vm.setUpdateParameters(false);
- _vmDao.update(vm.getId(), vm);
- }
+ VMTemplateVO template = _templateDao.findByIdIncludingRemoved(vm.getTemplateId());
+ if (VirtualMachineManager.ResourceCountRunningVMsonly.value()) {
+ ServiceOfferingVO offering = serviceOfferingDao.findById(vm.getId(), vm.getServiceOfferingId());
+ List<String> resourceLimitHostTags = resourceLimitService.getResourceLimitHostTags(offering, template);
+ try (CheckedReservation vmReservation = new CheckedReservation(owner, ResourceType.user_vm, resourceLimitHostTags, 1l, reservationDao, resourceLimitService);
+ CheckedReservation cpuReservation = new CheckedReservation(owner, ResourceType.cpu, resourceLimitHostTags, Long.valueOf(offering.getCpu()), reservationDao, resourceLimitService);
+ CheckedReservation memReservation = new CheckedReservation(owner, ResourceType.memory, resourceLimitHostTags, Long.valueOf(offering.getRamSize()), reservationDao, resourceLimitService);
+ ) {
+ return startVirtualMachineUnchecked(vm, template, podId, clusterId, hostId, additionalParams, deploymentPlannerToUse, isExplicitHost, isRootAdmin);
+ } catch (ResourceAllocationException | CloudRuntimeException e) {
+ throw e;
+ } catch (Exception e) {
+ logger.error("Failed to start VM {} : error during resource reservation and allocation", e);
+ throw new CloudRuntimeException(e);
}
- } catch (Exception e) {
- logger.error("Failed to start VM {}", vm, e);
- throw new CloudRuntimeException("Failed to start VM " + vm, e);
+ } else {
+ return startVirtualMachineUnchecked(vm, template, podId, clusterId, hostId, additionalParams, deploymentPlannerToUse, isExplicitHost, isRootAdmin);
}
- return vmParamPair;
}
/**
@@ -7025,7 +7029,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Check that Vm does not have VM Snapshots
if (_vmSnapshotDao.findByVm(vmId).size() > 0) {
- throw new InvalidParameterValueException("VM's disk cannot be migrated, please remove all the VM Snapshots for this VM");
+ throw new InvalidParameterValueException("Instance's disk cannot be migrated, please remove all the Instance Snapshots for this Instance");
}
return vm;
@@ -7439,7 +7443,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (!isServiceOfferingUsingPlannerInPreferredMode(vm.getServiceOfferingId())) {
//Check if all vms on destination host are created using strict implicit mode
if (!checkIfAllVmsCreatedInStrictMode(accountOfVm, vmsOnDest)) {
- msg = String.format("VM of account %d with strict implicit deployment planner being migrated to host %s not having all vms strict implicitly dedicated to account %d", accountOfVm, destHost, accountOfVm);
+ msg = String.format("Instance of Account %d with strict implicit deployment planner being migrated to host %s not having all Instances strict implicitly dedicated to Account %d", accountOfVm, destHost, accountOfVm);
}
} else {
//If vm is deployed using preferred implicit planner, check if all vms on destination host must be
@@ -7447,7 +7451,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
for (VMInstanceVO vmsDest : vmsOnDest) {
ServiceOfferingVO destPlanner = serviceOfferingDao.findById(vm.getId(), vmsDest.getServiceOfferingId());
if (!((destPlanner.getDeploymentPlanner() != null && destPlanner.getDeploymentPlanner().equals("ImplicitDedicationPlanner")) && vmsDest.getAccountId() == accountOfVm)) {
- msg = String.format("VM of account %d with preffered implicit deployment planner being migrated to host %s not having all vms implicitly dedicated to account %d", accountOfVm, destHost, accountOfVm);
+ msg = String.format("Instance of Account %d with preferred implicit deployment planner being migrated to host %s not having all Instances implicitly dedicated to Account %d", accountOfVm, destHost, accountOfVm);
}
}
}
@@ -7522,12 +7526,12 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
for (VMInstanceVO vm : allVmsOnHost) {
if (!isImplicitPlannerUsedByOffering(vm.getServiceOfferingId()) || vm.getAccountId() != accountId) {
- logger.info("Host {} for VM {} found to be running a vm created by a planner other than implicit, or running vms of other account",
+ logger.info("Host {} for Instance {} found to be running an Instance created by a planner other than implicit, or running Instances of other Account",
_hostDao.findById(vm.getHostId()), vm);
createdByImplicitStrict = false;
break;
} else if (isServiceOfferingUsingPlannerInPreferredMode(vm.getServiceOfferingId()) || vm.getAccountId() != accountId) {
- logger.info("Host {} for VM {} found to be running a vm created by an implicit planner in preferred mode, or running vms of other account",
+ logger.info("Host {} for Instance {} found to be running an Instance created by an implicit planner in preferred mode, or running Instances of other Account",
_hostDao.findById(vm.getHostId()), vm);
createdByImplicitStrict = false;
break;
@@ -7646,7 +7650,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// Check max guest vm limit for the destinationHost.
if (_capacityMgr.checkIfHostReachMaxGuestLimit(destinationHost)) {
- throw new VirtualMachineMigrationException(String.format("Cannot migrate VM as destination host %s (ID: %s) already has max running vms (count includes system VMs)",
+ throw new VirtualMachineMigrationException(String.format("Cannot migrate Instance as destination host %s (ID: %s) already has max running Instances (count includes system VMs)",
destinationHost.getName(), destinationHost.getUuid()));
}
@@ -7781,7 +7785,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (!vm.getHypervisorType().isFunctionalitySupported(Functionality.VmStorageMigrationWithSnapshots) &&
CollectionUtils.isNotEmpty(_vmSnapshotDao.findByVm(vmId))) {
- throw new InvalidParameterValueException("VM with VM Snapshots cannot be migrated with storage, please remove all VM snapshots");
+ throw new InvalidParameterValueException("Instance with Instance Snapshots cannot be migrated with storage, please remove all Instance Snapshots");
}
Pair<Host, Host> sourceDestinationHosts = getHostsForMigrateVmWithStorage(vm, destinationHost);
@@ -8876,7 +8880,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
// If target VM has associated VM snapshots then don't allow restore of VM
List<VMSnapshotVO> vmSnapshots = _vmSnapshotDao.findByVm(vmId);
if (vmSnapshots.size() > 0) {
- throw new InvalidParameterValueException("Unable to restore VM, please remove VM snapshots before restoring VM");
+ throw new InvalidParameterValueException("Unable to restore Instance, please remove Instance Snapshots before restoring Instance");
}
VMTemplateVO template = getRestoreVirtualMachineTemplate(caller, newTemplateId, rootVols, vm);