1) Return embedded objects for enable/disable/lock/update Account/User and updateDomain

2) Added "haschild" return parameter to Domain response.
3) Fixed updateDomain command - used to set domainname to "updatedomainnameresponse" value if no name was specified in the request. Added more logging for updateDomain command.
This commit is contained in:
alena 2010-11-01 23:46:28 -07:00
parent 5d4e4be974
commit 6c3256d1e4
19 changed files with 161 additions and 319 deletions

View File

@ -23,10 +23,8 @@ import java.util.List;
import com.cloud.api.response.AccountResponse;
import com.cloud.api.response.DiskOfferingResponse;
import com.cloud.api.response.DomainResponse;
import com.cloud.api.response.ResourceLimitResponse;
import com.cloud.api.response.UserResponse;
import com.cloud.configuration.ResourceCount.ResourceType;
import com.cloud.configuration.ResourceLimitVO;
import com.cloud.domain.DomainVO;
import com.cloud.server.Criteria;
import com.cloud.storage.DiskOfferingVO;
@ -40,7 +38,6 @@ public class ApiResponseHelper {
public static UserResponse createUserResponse (UserAccount user) {
UserResponse userResponse = new UserResponse();
userResponse.setAccountName(user.getAccountName());
userResponse.setAccountType(user.getType());
userResponse.setCreated(user.getCreated());
@ -60,7 +57,6 @@ public class ApiResponseHelper {
}
public static AccountResponse createAccountResponse (Account account) {
boolean accountIsAdmin = (account.getType() == Account.ACCOUNT_TYPE_ADMIN);
AccountResponse accountResponse = new AccountResponse();
accountResponse.setId(account.getId());
@ -166,6 +162,9 @@ public class ApiResponseHelper {
if (domain.getParent() != null) {
domainResponse.setParentDomainName(ApiDBUtils.findDomainById(domain.getParent()).getName());
}
if (domain.getChildCount() > 0) {
domainResponse.setHasChild(true);
}
return domainResponse;
}
@ -181,7 +180,6 @@ public class ApiResponseHelper {
diskOfferingResponse.setDomainId(offering.getDomainId());
}
diskOfferingResponse.setTags(offering.getTags());
return diskOfferingResponse;
}

View File

@ -20,7 +20,7 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
@ -69,19 +69,13 @@ public class CreateDomainCmd extends BaseCmd {
@Override @SuppressWarnings("unchecked")
public DomainResponse getResponse() {
DomainResponse response = new DomainResponse();
DomainVO responseObject = (DomainVO)getResponseObject();
if (responseObject != null) {
response.setId(responseObject.getId());
response.setDomainName(responseObject.getName());
response.setLevel(responseObject.getLevel());
response.setParentDomainId(responseObject.getParent());
response.setParentDomainName(ApiDBUtils.findDomainById(responseObject.getParent()).getName());
DomainVO domain = (DomainVO)getResponseObject();
if (domain != null) {
DomainResponse response = ApiResponseHelper.createDomainResponse(domain);
response.setResponseName(getName());
return response;
} else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to create domain");
}
response.setResponseName(getName());
return response;
}
}

View File

@ -21,7 +21,7 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
@ -124,22 +124,7 @@ public class CreateUserCmd extends BaseCmd {
@Override @SuppressWarnings("unchecked")
public UserResponse getResponse() {
UserAccount user = (UserAccount)getResponseObject();
// TODO: user keys?
UserResponse response = new UserResponse();
response.setAccountName(user.getAccountName());
response.setAccountType(user.getType());
response.setCreated(user.getCreated());
response.setDomainId(user.getDomainId());
response.setDomainName(ApiDBUtils.findDomainById(user.getDomainId()).getName());
response.setEmail(user.getEmail());
response.setFirstname(user.getFirstname());
response.setId(user.getId());
response.setLastname(user.getLastname());
response.setState(user.getState());
response.setTimezone(user.getTimezone());
response.setUsername(user.getUsername());
UserResponse response = ApiResponseHelper.createUserResponse(user);
response.setResponseName(getName());
return response;
}

View File

@ -20,13 +20,15 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseAsyncCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.AccountResponse;
import com.cloud.event.EventTypes;
import com.cloud.server.ManagementServer;
import com.cloud.user.Account;
import com.cloud.user.AccountVO;
import com.cloud.user.UserContext;
@Implementation(method="disableAccount", manager=ManagementServer.class, description="Disables an account")
@ -86,10 +88,9 @@ public class DisableAccountCmd extends BaseAsyncCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
Boolean success = (Boolean)getResponseObject();
SuccessResponse response = new SuccessResponse();
response.setSuccess(success);
public AccountResponse getResponse() {
AccountVO account = (AccountVO)getResponseObject();
AccountResponse response = ApiResponseHelper.createAccountResponse(account);
response.setResponseName(getName());
return response;
}

View File

@ -20,12 +20,14 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseAsyncCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.UserResponse;
import com.cloud.event.EventTypes;
import com.cloud.user.Account;
import com.cloud.user.UserAccount;
import com.cloud.user.UserContext;
@Implementation(method="disableUser", description="Disables a user account")
@ -78,10 +80,9 @@ public class DisableUserCmd extends BaseAsyncCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
Boolean success = (Boolean)getResponseObject();
SuccessResponse response = new SuccessResponse();
response.setSuccess(success);
public UserResponse getResponse() {
UserAccount user = (UserAccount)getResponseObject();
UserResponse response = ApiResponseHelper.createUserResponse(user);
response.setResponseName(getName());
return response;
}

View File

@ -20,12 +20,13 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.AccountResponse;
import com.cloud.server.ManagementServer;
import com.cloud.user.AccountVO;
@Implementation(method="enableAccount", manager=ManagementServer.class, description="Enables an account")
public class EnableAccountCmd extends BaseCmd {
@ -64,16 +65,9 @@ public class EnableAccountCmd extends BaseCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
SuccessResponse response = new SuccessResponse();
Boolean responseObject = (Boolean)getResponseObject();
if (responseObject != null) {
response.setSuccess(responseObject);
} else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to enable account");
}
public AccountResponse getResponse() {
AccountVO account = (AccountVO)getResponseObject();
AccountResponse response = ApiResponseHelper.createAccountResponse(account);
response.setResponseName(getName());
return response;
}

View File

@ -21,12 +21,13 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.UserResponse;
import com.cloud.server.ManagementServer;
import com.cloud.user.UserAccount;
@Implementation(method="enableUser", manager=ManagementServer.class, description="Enables a user account")
public class EnableUserCmd extends BaseCmd {
@ -59,16 +60,9 @@ public class EnableUserCmd extends BaseCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
SuccessResponse response = new SuccessResponse();
Boolean responseObject = (Boolean)getResponseObject();
if (responseObject != null) {
response.setSuccess(responseObject);
} else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to enable user");
}
public UserResponse getResponse() {
UserAccount user = (UserAccount)getResponseObject();
UserResponse response = ApiResponseHelper.createUserResponse(user);
response.setResponseName(getName());
return response;
}

View File

@ -18,28 +18,18 @@
package com.cloud.api.commands;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.BaseCmd;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseListCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.AccountResponse;
import com.cloud.api.response.ListResponse;
import com.cloud.configuration.ResourceCount.ResourceType;
import com.cloud.server.Criteria;
import com.cloud.user.Account;
import com.cloud.user.AccountVO;
import com.cloud.user.UserContext;
import com.cloud.user.UserStatisticsVO;
import com.cloud.uservm.UserVm;
import com.cloud.vm.State;
@Implementation(method="searchForAccounts", description="Lists accounts and provides detailed account information for listed accounts")
public class ListAccountsCmd extends BaseListCmd {
@ -121,107 +111,7 @@ public class ListAccountsCmd extends BaseListCmd {
List<AccountResponse> accountResponses = new ArrayList<AccountResponse>();
for (AccountVO account : accounts) {
boolean accountIsAdmin = (account.getType() == Account.ACCOUNT_TYPE_ADMIN);
AccountResponse acctResponse = new AccountResponse();
acctResponse.setId(account.getId());
acctResponse.setName(account.getAccountName());
acctResponse.setAccountType(account.getType());
acctResponse.setDomainId(account.getDomainId());
acctResponse.setDomainName(ApiDBUtils.findDomainById(account.getDomainId()).getName());
//get network stat
List<UserStatisticsVO> stats = ApiDBUtils.listUserStatsBy(account.getId());
if (stats == null) {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Internal error searching for user stats");
}
long bytesSent = 0;
long bytesReceived = 0;
for (UserStatisticsVO stat : stats) {
long rx = stat.getNetBytesReceived() + stat.getCurrentBytesReceived();
long tx = stat.getNetBytesSent() + stat.getCurrentBytesSent();
bytesReceived = bytesReceived + Long.valueOf(rx);
bytesSent = bytesSent + Long.valueOf(tx);
}
acctResponse.setBytesReceived(bytesReceived);
acctResponse.setBytesSent(bytesSent);
// Get resource limits and counts
long vmLimit = ApiDBUtils.findCorrectResourceLimit(ResourceType.user_vm, account.getId());
String vmLimitDisplay = (accountIsAdmin || vmLimit == -1) ? "Unlimited" : String.valueOf(vmLimit);
long vmTotal = ApiDBUtils.getResourceCount(ResourceType.user_vm, account.getId());
String vmAvail = (accountIsAdmin || vmLimit == -1) ? "Unlimited" : String.valueOf(vmLimit - vmTotal);
acctResponse.setVmLimit(vmLimitDisplay);
acctResponse.setVmTotal(vmTotal);
acctResponse.setVmAvailable(vmAvail);
long ipLimit = ApiDBUtils.findCorrectResourceLimit(ResourceType.public_ip, account.getId());
String ipLimitDisplay = (accountIsAdmin || ipLimit == -1) ? "Unlimited" : String.valueOf(ipLimit);
long ipTotal = ApiDBUtils.getResourceCount(ResourceType.public_ip, account.getId());
String ipAvail = (accountIsAdmin || ipLimit == -1) ? "Unlimited" : String.valueOf(ipLimit - ipTotal);
acctResponse.setIpLimit(ipLimitDisplay);
acctResponse.setIpTotal(ipTotal);
acctResponse.setIpAvailable(ipAvail);
long volumeLimit = ApiDBUtils.findCorrectResourceLimit(ResourceType.volume, account.getId());
String volumeLimitDisplay = (accountIsAdmin || volumeLimit == -1) ? "Unlimited" : String.valueOf(volumeLimit);
long volumeTotal = ApiDBUtils.getResourceCount(ResourceType.volume, account.getId());
String volumeAvail = (accountIsAdmin || volumeLimit == -1) ? "Unlimited" : String.valueOf(volumeLimit - volumeTotal);
acctResponse.setVolumeLimit(volumeLimitDisplay);
acctResponse.setVolumeTotal(volumeTotal);
acctResponse.setVolumeAvailable(volumeAvail);
long snapshotLimit = ApiDBUtils.findCorrectResourceLimit(ResourceType.snapshot, account.getId());
String snapshotLimitDisplay = (accountIsAdmin || snapshotLimit == -1) ? "Unlimited" : String.valueOf(snapshotLimit);
long snapshotTotal = ApiDBUtils.getResourceCount(ResourceType.snapshot, account.getId());
String snapshotAvail = (accountIsAdmin || snapshotLimit == -1) ? "Unlimited" : String.valueOf(snapshotLimit - snapshotTotal);
acctResponse.setSnapshotLimit(snapshotLimitDisplay);
acctResponse.setSnapshotTotal(snapshotTotal);
acctResponse.setSnapshotAvailable(snapshotAvail);
long templateLimit = ApiDBUtils.findCorrectResourceLimit(ResourceType.template, account.getId());
String templateLimitDisplay = (accountIsAdmin || templateLimit == -1) ? "Unlimited" : String.valueOf(templateLimit);
long templateTotal = ApiDBUtils.getResourceCount(ResourceType.template, account.getId());
String templateAvail = (accountIsAdmin || templateLimit == -1) ? "Unlimited" : String.valueOf(templateLimit - templateTotal);
acctResponse.setTemplateLimit(templateLimitDisplay);
acctResponse.setTemplateTotal(templateTotal);
acctResponse.setTemplateAvailable(templateAvail);
// Get stopped and running VMs
int vmStopped = 0;
int vmRunning = 0;
Long[] accountIds = new Long[1];
accountIds[0] = account.getId();
Criteria c1 = new Criteria();
c1.addCriteria(Criteria.ACCOUNTID, accountIds);
List<? extends UserVm> virtualMachines = ApiDBUtils.searchForUserVMs(c1);
//get Running/Stopped VMs
for (Iterator<? extends UserVm> iter = virtualMachines.iterator(); iter.hasNext();) {
// count how many stopped/running vms we have
UserVm vm = iter.next();
if (vm.getState() == State.Stopped) {
vmStopped++;
} else if (vm.getState() == State.Running) {
vmRunning++;
}
}
acctResponse.setVmStopped(vmStopped);
acctResponse.setVmRunning(vmRunning);
//show this info to admins only
Account ctxAccount = (Account)UserContext.current().getAccount();
if ((ctxAccount == null) || isAdmin(ctxAccount.getType())) {
acctResponse.setState(account.getState());
acctResponse.setCleanupRequired(account.getNeedsCleanup());
}
AccountResponse acctResponse = ApiResponseHelper.createAccountResponse(account);
acctResponse.setResponseName("account");
accountResponses.add(acctResponse);
}

View File

@ -23,7 +23,7 @@ import java.util.List;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseListCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
@ -82,16 +82,7 @@ public class ListDomainChildrenCmd extends BaseListCmd {
ListResponse<DomainResponse> response = new ListResponse<DomainResponse>();
List<DomainResponse> domainResponses = new ArrayList<DomainResponse>();
for (DomainVO domain : domains) {
DomainResponse domainResponse = new DomainResponse();
domainResponse.setDomainName(domain.getName());
domainResponse.setId(domain.getId());
domainResponse.setLevel(domain.getLevel());
domainResponse.setHasChild(domain.getChildCount() > 0);
domainResponse.setParentDomainId(domain.getParent());
if (domain.getParent() != null) {
domainResponse.setParentDomainName(ApiDBUtils.findDomainById(domain.getParent()).getName());
}
DomainResponse domainResponse = ApiResponseHelper.createDomainResponse(domain);
domainResponse.setResponseName("domain");
domainResponses.add(domainResponse);
}

View File

@ -23,7 +23,7 @@ import java.util.List;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseListCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
@ -82,15 +82,7 @@ public class ListDomainsCmd extends BaseListCmd {
ListResponse<DomainResponse> response = new ListResponse<DomainResponse>();
List<DomainResponse> domainResponses = new ArrayList<DomainResponse>();
for (DomainVO domain : domains) {
DomainResponse domainResponse = new DomainResponse();
domainResponse.setDomainName(domain.getName());
domainResponse.setId(domain.getId());
domainResponse.setLevel(domain.getLevel());
domainResponse.setParentDomainId(domain.getParent());
if (domain.getParent() != null) {
domainResponse.setParentDomainName(ApiDBUtils.findDomainById(domain.getParent()).getName());
}
DomainResponse domainResponse = ApiResponseHelper.createDomainResponse(domain);
domainResponse.setResponseName("domain");
domainResponses.add(domainResponse);
}

View File

@ -24,7 +24,7 @@ import java.util.List;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseListCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
@ -104,26 +104,10 @@ public class ListUsersCmd extends BaseListCmd {
ListResponse<UserResponse> response = new ListResponse<UserResponse>();
List<UserResponse> userResponses = new ArrayList<UserResponse>();
for (UserAccountVO user : users) {
UserResponse userResponse = new UserResponse();
userResponse.setId(user.getId());
userResponse.setUsername(user.getUsername());
userResponse.setFirstname(user.getFirstname());
userResponse.setLastname(user.getLastname());
userResponse.setEmail(user.getEmail());
userResponse.setCreated(user.getCreated());
userResponse.setState(user.getState());
userResponse.setAccountName(user.getAccountName());
userResponse.setAccountType(user.getType());
userResponse.setDomainId(user.getDomainId());
userResponse.setDomainName(ApiDBUtils.findDomainById(user.getDomainId()).getName());
userResponse.setTimezone(user.getTimezone());
userResponse.setApiKey(user.getApiKey());
userResponse.setSecretKey(user.getSecretKey());
UserResponse userResponse = ApiResponseHelper.createUserResponse(user);
userResponse.setResponseName("user");
userResponses.add(userResponse);
}
response.setResponses(userResponses);
response.setResponseName(getName());
return response;

View File

@ -20,11 +20,13 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.AccountResponse;
import com.cloud.server.ManagementServer;
import com.cloud.user.AccountVO;
@Implementation(method="lockAccount", manager=ManagementServer.class, description="Locks an account")
public class LockAccountCmd extends BaseCmd {
@ -64,10 +66,9 @@ public class LockAccountCmd extends BaseCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
Boolean success = (Boolean)getResponseObject();
SuccessResponse response = new SuccessResponse();
response.setSuccess(success);
public AccountResponse getResponse() {
AccountVO account = (AccountVO)getResponseObject();
AccountResponse response = ApiResponseHelper.createAccountResponse(account);
response.setResponseName(getName());
return response;
}

View File

@ -20,11 +20,13 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.UserResponse;
import com.cloud.server.ManagementServer;
import com.cloud.user.UserAccount;
@Implementation(method="lockUser", manager=ManagementServer.class, description="Locks a user account")
public class LockUserCmd extends BaseCmd {
@ -57,11 +59,10 @@ public class LockUserCmd extends BaseCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
Boolean success = (Boolean)getResponseObject();
SuccessResponse response = new SuccessResponse();
response.setSuccess(success);
public UserResponse getResponse() {
UserAccount user = (UserAccount)getResponseObject();
UserResponse response = ApiResponseHelper.createUserResponse(user);
response.setResponseName(getName());
return response;
}
}
}

View File

@ -20,12 +20,13 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.AccountResponse;
import com.cloud.server.ManagementServer;
import com.cloud.user.AccountVO;
@Implementation(method="updateAccount", manager=ManagementServer.class, description="Updates account information for the authenticated user")
public class UpdateAccountCmd extends BaseCmd{
@ -71,16 +72,9 @@ public class UpdateAccountCmd extends BaseCmd{
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
SuccessResponse response = new SuccessResponse();
Boolean responseObject = (Boolean)getResponseObject();
if (responseObject != null) {
response.setSuccess(responseObject);
} else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update account");
}
public AccountResponse getResponse() {
AccountVO account = (AccountVO)getResponseObject();
AccountResponse response = ApiResponseHelper.createAccountResponse(account);
response.setResponseName(getName());
return response;
}

View File

@ -20,11 +20,13 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.DomainResponse;
import com.cloud.domain.DomainVO;
import com.cloud.server.ManagementServer;
@Implementation(method="updateDomain", manager=ManagementServer.class, description="Updates a domain with a new name")
@ -64,17 +66,14 @@ public class UpdateDomainCmd extends BaseCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
SuccessResponse response = new SuccessResponse();
Boolean responseObject = (Boolean)getResponseObject();
if (responseObject != null) {
response.setSuccess(responseObject);
public DomainResponse getResponse() {
DomainVO domain = (DomainVO)getResponseObject();
if (domain != null) {
DomainResponse response = ApiResponseHelper.createDomainResponse(domain);
response.setResponseName(getName());
return response;
} else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update domain");
}
response.setResponseName(getName());
return response;
}
}

View File

@ -21,11 +21,13 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.UserResponse;
import com.cloud.server.ManagementServer;
import com.cloud.user.UserAccount;
@Implementation(method="updateUser", manager=ManagementServer.class, description="Updates a user account")
public class UpdateUserCmd extends BaseCmd {
@ -113,11 +115,10 @@ public class UpdateUserCmd extends BaseCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
Boolean success = (Boolean)getResponseObject();
SuccessResponse response = new SuccessResponse();
response.setSuccess(success);
public UserResponse getResponse() {
UserAccount user = (UserAccount)getResponseObject();
UserResponse response = ApiResponseHelper.createUserResponse(user);
response.setResponseName(getName());
return response;
}
}
}

View File

@ -38,7 +38,7 @@ public class DomainResponse extends BaseResponse {
private String parentDomainName;
@SerializedName("haschild") @Param(description="whether the domain has one or more sub-domains")
private Boolean hasChild;
private boolean hasChild;
public Long getId() {
return id;
@ -80,11 +80,11 @@ public class DomainResponse extends BaseResponse {
this.parentDomainName = parentDomainName;
}
public Boolean getHasChild() {
public boolean getHasChild() {
return hasChild;
}
public void setHasChild(Boolean hasChild) {
public void setHasChild(boolean hasChild) {
this.hasChild = hasChild;
}
}

View File

@ -114,7 +114,6 @@ import com.cloud.info.ConsoleProxyInfo;
import com.cloud.network.FirewallRuleVO;
import com.cloud.network.IPAddressVO;
import com.cloud.network.LoadBalancerVO;
import com.cloud.network.NetworkRuleConfigVO;
import com.cloud.network.RemoteAccessVpnVO;
import com.cloud.network.security.NetworkGroupVO;
import com.cloud.service.ServiceOfferingVO;
@ -201,9 +200,10 @@ public interface ManagementServer {
/**
* Disables a user by userId
* @param cmd the command wrapping the userId parameter
* @return true if disable was successful, false otherwise
* @return UserAccount object
* @throws InvalidParameterValueException, PermissionDeniedException
*/
boolean disableUser(DisableUserCmd cmd);
UserAccount disableUser(DisableUserCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;;
/**
* Disables an account by accountId
@ -214,51 +214,50 @@ public interface ManagementServer {
/**
* Disables an account by accountName and domainId
* @param cmd the command wrapping the accountName and domainId
* @param disabled account if success
* @return true if disable was successful, false otherwise
* @throws InvalidParameterValueException
* @throws PermissionDeniedException
* @throws InvalidParameterValueException, PermissionDeniedException
*/
boolean disableAccount(DisableAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
AccountVO disableAccount(DisableAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
/**
* Enables an account by accountId
* @param cmd - the enableAccount command defining the accountId to be deleted.
* @return true if enable was successful, false otherwise
* @return account object
* @throws InvalidParameterValueException, PermissionDeniedException
*/
boolean enableAccount(EnableAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
AccountVO enableAccount(EnableAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
/**
* Locks an account by accountId. A locked account cannot access the API, but will still have running VMs/IP addresses allocated/etc.
* @param cmd - the LockAccount command defining the accountId to be locked.
* @return true if enable was successful, false otherwise
* @return account object
*/
boolean lockAccount(LockAccountCmd cmd);
AccountVO lockAccount(LockAccountCmd cmd);
/**
* Updates an account name
* @param cmd - the parameter containing accountId
* @return true if update was successful, false otherwise
* @return updated account object
* @throws InvalidParameterValueException, PermissionDeniedException
*/
boolean updateAccount(UpdateAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
AccountVO updateAccount(UpdateAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
/**
* Enables a user
* @param cmd - the command containing userId
* @return true if enable was successful, false otherwise
* @throws InvalidParameterValueException
* @return UserAccount object
* @throws InvalidParameterValueException, PermissionDeniedException
*/
boolean enableUser(EnableUserCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
UserAccount enableUser(EnableUserCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
/**
* Locks a user by userId. A locked user cannot access the API, but will still have running VMs/IP addresses allocated/etc.
* @param userId
* @return true if enable was successful, false otherwise
* @return UserAccount object
*/
boolean lockUser(LockUserCmd cmd);
UserAccount lockUser(LockUserCmd cmd);
/**
* registerPreallocatedLun registers a preallocated lun in our database.
@ -805,10 +804,10 @@ public interface ManagementServer {
/**
* update an existing domain
* @param cmd - the command containing domainId and new domainName
* @return true if domain is updated, false otherwise
* @return Domain object if the command succeeded
* @throws InvalidParameterValueException, PermissionDeniedException
*/
boolean updateDomain(UpdateDomainCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
DomainVO updateDomain(UpdateDomainCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
/**
* find the domain Id associated with the given account
@ -1077,7 +1076,7 @@ public interface ManagementServer {
boolean checkLocalStorageConfigVal();
boolean updateUser(UpdateUserCmd cmd) throws InvalidParameterValueException;
UserAccount updateUser(UpdateUserCmd cmd) throws InvalidParameterValueException;
boolean updateTemplatePermissions(UpdateTemplatePermissionsCmd cmd)throws InvalidParameterValueException, PermissionDeniedException,InternalErrorException;
boolean updateTemplatePermissions(UpdateIsoPermissionsCmd cmd)throws InvalidParameterValueException, PermissionDeniedException,InternalErrorException;
String[] createApiKeyAndSecretKey(RegisterCmd cmd);

View File

@ -151,8 +151,8 @@ import com.cloud.certificate.dao.CertificateDao;
import com.cloud.configuration.Config;
import com.cloud.configuration.ConfigurationManager;
import com.cloud.configuration.ConfigurationVO;
import com.cloud.configuration.ResourceLimitVO;
import com.cloud.configuration.ResourceCount.ResourceType;
import com.cloud.configuration.ResourceLimitVO;
import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.configuration.dao.ResourceLimitDao;
import com.cloud.consoleproxy.ConsoleProxyManager;
@ -162,8 +162,8 @@ import com.cloud.dc.DataCenterIpAddressVO;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.PodVlanMapVO;
import com.cloud.dc.VlanVO;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.dc.VlanVO;
import com.cloud.dc.dao.AccountVlanMapDao;
import com.cloud.dc.dao.ClusterDao;
import com.cloud.dc.dao.DataCenterDao;
@ -221,23 +221,23 @@ import com.cloud.storage.GuestOSCategoryVO;
import com.cloud.storage.GuestOSVO;
import com.cloud.storage.LaunchPermissionVO;
import com.cloud.storage.Snapshot;
import com.cloud.storage.Snapshot.SnapshotType;
import com.cloud.storage.SnapshotPolicyVO;
import com.cloud.storage.SnapshotVO;
import com.cloud.storage.Storage;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.StorageManager;
import com.cloud.storage.StoragePoolHostVO;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.StorageStats;
import com.cloud.storage.Upload;
import com.cloud.storage.Upload.Mode;
import com.cloud.storage.Upload.Type;
import com.cloud.storage.UploadVO;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.Volume;
import com.cloud.storage.VolumeStats;
import com.cloud.storage.VolumeVO;
import com.cloud.storage.Snapshot.SnapshotType;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Upload.Mode;
import com.cloud.storage.Upload.Type;
import com.cloud.storage.dao.DiskOfferingDao;
import com.cloud.storage.dao.DiskTemplateDao;
import com.cloud.storage.dao.GuestOSCategoryDao;
@ -249,8 +249,8 @@ import com.cloud.storage.dao.StoragePoolDao;
import com.cloud.storage.dao.StoragePoolHostDao;
import com.cloud.storage.dao.UploadDao;
import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.storage.dao.VMTemplateDao.TemplateFilter;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.storage.preallocatedlun.PreallocatedLunVO;
import com.cloud.storage.preallocatedlun.dao.PreallocatedLunDao;
import com.cloud.storage.secondary.SecondaryStorageVmManager;
@ -282,10 +282,10 @@ import com.cloud.utils.db.DB;
import com.cloud.utils.db.Filter;
import com.cloud.utils.db.GlobalLock;
import com.cloud.utils.db.JoinBuilder;
import com.cloud.utils.db.JoinBuilder.JoinType;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.Transaction;
import com.cloud.utils.db.JoinBuilder.JoinType;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.exception.ExecutionException;
import com.cloud.utils.net.MacAddress;
@ -952,13 +952,13 @@ public class ManagementServerImpl implements ManagementServer {
}
@Override
public boolean disableUser(DisableUserCmd cmd) {
public UserAccount disableUser(DisableUserCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
Long userId = cmd.getId();
if (userId <= 2) {
if (s_logger.isInfoEnabled()) {
s_logger.info("disableUser -- invalid user id: " + userId);
s_logger.error("disableUser -- invalid user id: " + userId);
throw new InvalidParameterValueException("Unable to disable with id " + userId + " as it belongs to system account");
}
return false;
}
boolean success = doSetUserStatus(userId, Account.ACCOUNT_STATE_DISABLED);
@ -967,19 +967,23 @@ public class ManagementServerImpl implements ManagementServer {
List<UserVO> allUsersByAccount = _userDao.listByAccount(user.getAccountId());
for (UserVO oneUser : allUsersByAccount) {
if (oneUser.getState().equals(Account.ACCOUNT_STATE_ENABLED)) {
return true;
return _userAccountDao.findById(userId);
}
}
// there are no enabled users attached to this user's account, disable the account
return disableAccount(user.getAccountId());
if (disableAccount(user.getAccountId()))
return _userAccountDao.findById(userId);
else
throw new CloudRuntimeException("Unable to disable corresponding account for the user " + userId);
} else {
return false;
throw new CloudRuntimeException("Unable to disable user " + userId);
}
}
@Override
public boolean enableUser(EnableUserCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
public UserAccount enableUser(EnableUserCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
Long userId = cmd.getId();
Account adminAccount = UserContext.current().getAccount();
boolean success = false;
@ -1004,11 +1008,13 @@ public class ManagementServerImpl implements ManagementServer {
// make sure the account is enabled too
success = (success && enableAccount(user.getAccountId()));
return success;
if (success)
return _userAccountDao.findById(userId);
else throw new CloudRuntimeException("Unable to enable user " + userId);
}
@Override
public boolean lockUser(LockUserCmd cmd) {
public UserAccount lockUser(LockUserCmd cmd) {
boolean success = false;
Account adminAccount = UserContext.current().getAccount();
@ -1036,7 +1042,7 @@ public class ManagementServerImpl implements ManagementServer {
// if the user is either locked already or disabled already, don't change state...only lock currently enabled users
if (user.getState().equals(Account.ACCOUNT_STATE_LOCKED)) {
// already locked...no-op
return true;
return _userAccountDao.findById(id);
} else if (user.getState().equals(Account.ACCOUNT_STATE_ENABLED)) {
success = doSetUserStatus(user.getId(), Account.ACCOUNT_STATE_LOCKED);
@ -1057,7 +1063,11 @@ public class ManagementServerImpl implements ManagementServer {
s_logger.info("Attempting to lock a non-enabled user, current state is " + user.getState() + " (userId: " + user.getId() + "), locking failed.");
}
}
return success;
if (success)
return _userAccountDao.findById(id);
else
throw new CloudRuntimeException("Unable to lock user " + id);
}
private boolean doSetUserStatus(long userId, String state) {
@ -1067,7 +1077,7 @@ public class ManagementServerImpl implements ManagementServer {
}
@Override
public boolean disableAccount(DisableAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException {
public AccountVO disableAccount(DisableAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException {
String accountName = cmd.getAccountName();
Long domainId = cmd.getDomainId();
@ -1080,7 +1090,10 @@ public class ManagementServerImpl implements ManagementServer {
if (account == null) {
throw new InvalidParameterValueException("Unable to find account " + accountName + " in domain " + domainId);
}
return disableAccount(account.getId());
if (disableAccount(account.getId()))
return _accountDao.findById(account.getId());
else
throw new CloudRuntimeException("Unable to update account " + accountName + " in domain " + domainId);
}
@Override
@ -1107,7 +1120,7 @@ public class ManagementServerImpl implements ManagementServer {
}
@Override
public boolean updateAccount(UpdateAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
public AccountVO updateAccount(UpdateAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
Long domainId = cmd.getDomainId();
String accountName = cmd.getAccountName();
String newAccountName = cmd.getNewName();
@ -1143,7 +1156,10 @@ public class ManagementServerImpl implements ManagementServer {
acctForUpdate.setAccountName(newAccountName);
success = _accountDao.update(Long.valueOf(account.getId()), acctForUpdate);
}
return success;
if (success)
return _accountDao.findById(account.getId());
else
throw new CloudRuntimeException("Unable to update account " + accountName + " in domain " + domainId);
}
private boolean doDisableAccount(long accountId) {
@ -1176,7 +1192,7 @@ public class ManagementServerImpl implements ManagementServer {
@Override
public boolean enableAccount(EnableAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
public AccountVO enableAccount(EnableAccountCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
String accountName = cmd.getAccountName();
Long domainId = cmd.getDomainId();
boolean success = false;
@ -1200,7 +1216,10 @@ public class ManagementServerImpl implements ManagementServer {
}
success = enableAccount(account.getId());
return success;
if (success)
return _accountDao.findById(account.getId());
else
throw new CloudRuntimeException("Unable to enable account " + accountName + " in domain " + domainId);
}
private boolean lockAccountInternal(long accountId) {
@ -1225,7 +1244,7 @@ public class ManagementServerImpl implements ManagementServer {
}
@Override
public boolean updateUser(UpdateUserCmd cmd) throws InvalidParameterValueException {
public UserAccount updateUser(UpdateUserCmd cmd) throws InvalidParameterValueException {
Long id = cmd.getId();
String apiKey = cmd.getApiKey();
String firstName = cmd.getFirstname();
@ -1307,9 +1326,9 @@ public class ManagementServerImpl implements ManagementServer {
s_logger.error("error updating user", th);
EventUtils.saveEvent(Long.valueOf(1), Long.valueOf(1), EventVO.LEVEL_ERROR, EventTypes.EVENT_USER_UPDATE, "Error updating user, " + userName
+ " for accountId = " + accountId + " and domainId = " + userAccount.getDomainId());
return false;
}
return true;
throw new CloudRuntimeException("Unable to update user " + id);
}
return _userAccountDao.findById(id);
}
@Override
@ -4169,9 +4188,9 @@ public class ManagementServerImpl implements ManagementServer {
}
@Override
public boolean updateDomain(UpdateDomainCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
public DomainVO updateDomain(UpdateDomainCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
Long domainId = cmd.getId();
String domainName = cmd.getName();
String domainName = cmd.getDomainName();
//check if domain exists in the system
DomainVO domain = _domainDao.findById(domainId);
@ -4188,8 +4207,8 @@ public class ManagementServerImpl implements ManagementServer {
throw new PermissionDeniedException("Unable to update domain " + domainId + ", permission denied");
}
if (domainName == null) {
domainName = domain.getName();
if (domainName == null || domainName.equals(domain.getName())) {
return _domainDao.findById(domainId);
}
SearchCriteria<DomainVO> sc = _domainDao.createSearchCriteria();
@ -4199,11 +4218,12 @@ public class ManagementServerImpl implements ManagementServer {
_domainDao.update(domainId, domainName);
domain = _domainDao.findById(domainId);
EventUtils.saveEvent(new Long(1), domain.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_DOMAIN_UPDATE, "Domain, " + domainName + " was updated");
return true;
return _domainDao.findById(domainId);
} else {
domain = _domainDao.findById(domainId);
EventUtils.saveEvent(new Long(1), domain.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_DOMAIN_UPDATE, "Failed to update domain " + domain.getName() + " with name " + domainName + ", name in use.");
return false;
s_logger.error("Domain with name " + domainName + " already exists in the system");
throw new CloudRuntimeException("Fail to update domain " + domainId);
}
}
@ -5491,7 +5511,7 @@ public class ManagementServerImpl implements ManagementServer {
}
@Override
public boolean lockAccount(LockAccountCmd cmd) {
public AccountVO lockAccount(LockAccountCmd cmd) {
Account adminAccount = UserContext.current().getAccount();
Long domainId = cmd.getDomainId();
String accountName = cmd.getAccountName();
@ -5510,7 +5530,10 @@ public class ManagementServerImpl implements ManagementServer {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "can not lock system account");
}
return lockAccountInternal(account.getId());
if (lockAccountInternal(account.getId()))
return _accountDao.findById(account.getId());
else
throw new CloudRuntimeException("Unable to lock account " + accountName + " in domain " + domainId);
}
@Override