diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java
new file mode 100644
index 00000000000..7b1b0539014
--- /dev/null
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
+ *
+ * This software is licensed under the GNU General Public License v3 or later.
+ *
+ * It is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+package com.cloud.api;
+
+import java.util.Iterator;
+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;
+import com.cloud.user.Account;
+import com.cloud.user.UserAccount;
+import com.cloud.user.UserStatisticsVO;
+import com.cloud.uservm.UserVm;
+import com.cloud.vm.State;
+
+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());
+ userResponse.setDomainId(user.getDomainId());
+ userResponse.setDomainName(ApiDBUtils.findDomainById(user.getDomainId()).getName());
+ userResponse.setEmail(user.getEmail());
+ userResponse.setFirstname(user.getFirstname());
+ userResponse.setId(user.getId());
+ userResponse.setLastname(user.getLastname());
+ userResponse.setState(user.getState());
+ userResponse.setTimezone(user.getTimezone());
+ userResponse.setUsername(user.getUsername());
+ userResponse.setApiKey(user.getApiKey());
+ userResponse.setSecretKey(user.getSecretKey());
+
+ return userResponse;
+ }
+
+ public static AccountResponse createAccountResponse (Account account) {
+
+ boolean accountIsAdmin = (account.getType() == Account.ACCOUNT_TYPE_ADMIN);
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setId(account.getId());
+ accountResponse.setName(account.getAccountName());
+ accountResponse.setAccountType(account.getType());
+ accountResponse.setDomainId(account.getDomainId());
+ accountResponse.setDomainName(ApiDBUtils.findDomainById(account.getDomainId()).getName());
+
+ //get network stat
+ List 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);
+ }
+ accountResponse.setBytesReceived(bytesReceived);
+ accountResponse.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);
+ accountResponse.setVmLimit(vmLimitDisplay);
+ accountResponse.setVmTotal(vmTotal);
+ accountResponse.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);
+ accountResponse.setIpLimit(ipLimitDisplay);
+ accountResponse.setIpTotal(ipTotal);
+ accountResponse.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);
+ accountResponse.setVolumeLimit(volumeLimitDisplay);
+ accountResponse.setVolumeTotal(volumeTotal);
+ accountResponse.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);
+ accountResponse.setSnapshotLimit(snapshotLimitDisplay);
+ accountResponse.setSnapshotTotal(snapshotTotal);
+ accountResponse.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);
+ accountResponse.setTemplateLimit(templateLimitDisplay);
+ accountResponse.setTemplateTotal(templateTotal);
+ accountResponse.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++;
+ }
+ }
+
+ accountResponse.setVmStopped(vmStopped);
+ accountResponse.setVmRunning(vmRunning);
+
+ return accountResponse;
+ }
+
+ public static DomainResponse createDomainResponse (DomainVO domain) {
+ 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());
+ }
+ return domainResponse;
+ }
+
+ public static DiskOfferingResponse createDiskOfferingResponse (DiskOfferingVO offering) {
+ DiskOfferingResponse diskOfferingResponse = new DiskOfferingResponse();
+ diskOfferingResponse.setId(offering.getId());
+ diskOfferingResponse.setName(offering.getName());
+ diskOfferingResponse.setDisplayText(offering.getDisplayText());
+ diskOfferingResponse.setCreated(offering.getCreated());
+ diskOfferingResponse.setDiskSize(offering.getDiskSize());
+ if(offering.getDomainId() != null){
+ diskOfferingResponse.setDomain(ApiDBUtils.findDomainById(offering.getDomainId()).getName());
+ diskOfferingResponse.setDomainId(offering.getDomainId());
+ }
+ diskOfferingResponse.setTags(offering.getTags());
+
+ return diskOfferingResponse;
+ }
+
+}
diff --git a/server/src/com/cloud/api/commands/CreateDiskOfferingCmd.java b/server/src/com/cloud/api/commands/CreateDiskOfferingCmd.java
index 66d7a5172f3..c8267a82228 100755
--- a/server/src/com/cloud/api/commands/CreateDiskOfferingCmd.java
+++ b/server/src/com/cloud/api/commands/CreateDiskOfferingCmd.java
@@ -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;
@@ -89,23 +89,13 @@ public class CreateDiskOfferingCmd extends BaseCmd {
@Override @SuppressWarnings("unchecked")
public DiskOfferingResponse getResponse() {
- DiskOfferingResponse response = new DiskOfferingResponse();
- DiskOfferingVO responseObject = (DiskOfferingVO)getResponseObject();
- if (responseObject != null) {
- response.setId(responseObject.getId());
- response.setCreated(responseObject.getCreated());
- response.setDiskSize(responseObject.getDiskSizeInBytes());
- response.setDisplayText(responseObject.getDisplayText());
- response.setDomainId(responseObject.getDomainId());
- response.setDomain(ApiDBUtils.findDomainById(responseObject.getDomainId()).getName());
- response.setName(responseObject.getName());
- response.setTags(responseObject.getTags());
- response.setMirrored(responseObject.isMirrored());
+ DiskOfferingVO offering = (DiskOfferingVO)getResponseObject();
+ if (offering != null) {
+ DiskOfferingResponse response = ApiResponseHelper.createDiskOfferingResponse(offering);
+ response.setResponseName(getName());
+ return response;
} else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to create disk offering");
- }
-
- response.setResponseName(getName());
- return response;
+ }
}
}
diff --git a/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java b/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java
index 4956ed99998..0a8557111d1 100644
--- a/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java
+++ b/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java
@@ -23,13 +23,12 @@ 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;
import com.cloud.api.response.DiskOfferingResponse;
import com.cloud.api.response.ListResponse;
-import com.cloud.domain.DomainVO;
import com.cloud.storage.DiskOfferingVO;
@Implementation(method="searchForDiskOfferings", description="Lists all available disk offerings.")
@@ -83,17 +82,7 @@ public class ListDiskOfferingsCmd extends BaseListCmd {
ListResponse response = new ListResponse();
List diskOfferingResponses = new ArrayList();
for (DiskOfferingVO offering : offerings) {
- DiskOfferingResponse diskOffResp = new DiskOfferingResponse();
- diskOffResp.setCreated(offering.getCreated());
- diskOffResp.setDiskSize(offering.getDiskSizeInBytes());
- diskOffResp.setDisplayText(offering.getDisplayText());
- diskOffResp.setDomainId(offering.getDomainId());
- diskOffResp.setId(offering.getId());
- diskOffResp.setName(offering.getName());
- diskOffResp.setTags(offering.getTags());
- DomainVO domain = ApiDBUtils.findDomainById(offering.getDomainId());
- diskOffResp.setDomain(domain.getName());
-
+ DiskOfferingResponse diskOffResp = ApiResponseHelper.createDiskOfferingResponse(offering);
diskOffResp.setResponseName("diskoffering");
diskOfferingResponses.add(diskOffResp);
}
diff --git a/server/src/com/cloud/api/commands/UpdateDiskOfferingCmd.java b/server/src/com/cloud/api/commands/UpdateDiskOfferingCmd.java
index 0700aa8040f..8af4a52eaa7 100644
--- a/server/src/com/cloud/api/commands/UpdateDiskOfferingCmd.java
+++ b/server/src/com/cloud/api/commands/UpdateDiskOfferingCmd.java
@@ -20,17 +20,12 @@ 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;
-import com.cloud.api.ServerApiException;
import com.cloud.api.response.DiskOfferingResponse;
-import com.cloud.api.response.ServiceOfferingResponse;
-import com.cloud.api.response.SuccessResponse;
import com.cloud.configuration.ConfigurationManager;
-import com.cloud.offering.NetworkOffering.GuestIpType;
-import com.cloud.service.ServiceOfferingVO;
import com.cloud.storage.DiskOfferingVO;
@Implementation(method="updateDiskOffering", manager=ConfigurationManager.class, description="Updates a disk offering.")
@@ -83,37 +78,10 @@ public class UpdateDiskOfferingCmd extends BaseCmd{
return s_name;
}
-// @SuppressWarnings("unchecked")
-// public SuccessResponse getResponse() {
-// SuccessResponse response = new SuccessResponse();
-// DiskOfferingVO responseObject = (DiskOfferingVO)getResponseObject();
-// if (responseObject != null) {
-// response.setSuccess(Boolean.TRUE);
-// } else {
-// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update disk offering");
-// }
-//
-// response.setResponseName(getName());
-// return response;
-// }
-//
@Override @SuppressWarnings("unchecked")
public DiskOfferingResponse getResponse() {
DiskOfferingVO offering = (DiskOfferingVO) getResponseObject();
-
- DiskOfferingResponse response = new DiskOfferingResponse();
- response.setId(offering.getId());
- response.setName(offering.getName());
- response.setDisplayText(offering.getDisplayText());
- response.setTags(offering.getTags());
- response.setCreated(offering.getCreated());
- response.setDiskSize(offering.getDiskSize());
- if(offering.getDomainId() != null){
- response.setDomain(ApiDBUtils.findDomainById(offering.getDomainId()).getName());
- response.setDomainId(offering.getDomainId());
- }
- response.setMirrored(offering.isMirrored());
- response.setTags(offering.getTags());
+ DiskOfferingResponse response = ApiResponseHelper.createDiskOfferingResponse(offering);
response.setResponseName(getName());
return response;
}