mirror of https://github.com/apache/cloudstack.git
server: Avoid Null pointer at DomainChecker and enhance AssignVMCmd (#4279)
When executing request assignVirtualMachine with null domainID and a valid projectID then a NullPointerException happens at DomainChecker.java. Command example: assign virtualmachine virtualmachineid=vmID projectid=projectID account=admin The NullPointerException that is thrown at DomainChecker is handled at AssignVMCmd.java#L142, resulting in the following log message: Failed to move vm null.
This commit is contained in:
parent
4746c8c726
commit
d5acabdbf7
|
|
@ -138,8 +138,14 @@ public class AssignVMCmd extends BaseCmd {
|
|||
e.printStackTrace();
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to move vm " + e.getMessage());
|
||||
s_logger.error("Failed to move vm due to: " + e.getStackTrace());
|
||||
if (e.getMessage() != null) {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to move vm due to " + e.getMessage());
|
||||
} else if (e.getCause() != null) {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to move vm due to " + e.getCause());
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to move vm");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,6 +106,11 @@ public class DomainChecker extends AdapterBase implements SecurityChecker {
|
|||
if (caller.getState() != Account.State.enabled) {
|
||||
throw new PermissionDeniedException(caller + " is disabled.");
|
||||
}
|
||||
|
||||
if (domain == null) {
|
||||
throw new PermissionDeniedException(String.format("Provided domain is NULL, cannot check access for account [uuid=%s, name=%s]", caller.getUuid(), caller.getAccountName()));
|
||||
}
|
||||
|
||||
long domainId = domain.getId();
|
||||
|
||||
if (_accountService.isNormalUser(caller.getId())) {
|
||||
|
|
|
|||
|
|
@ -6133,6 +6133,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||
throw new InvalidParameterValueException("The new account owner " + cmd.getAccountName() + " is disabled.");
|
||||
}
|
||||
|
||||
if (cmd.getProjectId() != null && cmd.getDomainId() == null) {
|
||||
throw new InvalidParameterValueException("Please provide a valid domain ID; cannot assign VM to a project if domain ID is NULL.");
|
||||
}
|
||||
|
||||
//check caller has access to both the old and new account
|
||||
_accountMgr.checkAccess(caller, null, true, oldAccount);
|
||||
_accountMgr.checkAccess(caller, null, true, newAccount);
|
||||
|
|
|
|||
Loading…
Reference in New Issue