From 2a4ddac41a03ce35224e2fe59f89ba5b367f29cd Mon Sep 17 00:00:00 2001 From: Kris McQueen Date: Thu, 23 Sep 2010 17:34:28 -0700 Subject: [PATCH] Change getResponse() to return a ResponseObject so that the caller can choose how to serialize. This in in preparation for serializing the async commands to the database with class information and deserializing them into the ResponseObject itself when queryAsyncJobResult is called. Once the ResponseObject is deserialized, the proper string can be returned to the caller. The previous behavior had the JSON response from the command embedded into the queryAsyncJobResult response as a string rather than a JSON object which prevented the client from being able to read the response. With this new behavior an actual JSON object should be returned which can then be parsed on the client side. --- core/src/com/cloud/vm/dao/UserVmDao.java | 3 + core/src/com/cloud/vm/dao/UserVmDaoImpl.java | 18 ++ .../com/cloud/agent/manager/AgentManager.java | 4 +- .../cloud/agent/manager/AgentManagerImpl.java | 22 +- server/src/com/cloud/api/ApiDBUtils.java | 17 ++ server/src/com/cloud/api/ApiServer.java | 5 +- server/src/com/cloud/api/BaseAsyncCmd.java | 6 +- server/src/com/cloud/api/BaseCmd.java | 2 +- .../com/cloud/api/commands/AddConfigCmd.java | 6 +- .../com/cloud/api/commands/AddHostCmd.java | 7 +- .../api/commands/AddSecondaryStorageCmd.java | 7 +- .../AssignPortForwardingServiceCmd.java | 82 +----- .../commands/AssignToLoadBalancerRuleCmd.java | 11 +- .../api/commands/AssociateIPAddrCmd.java | 5 +- .../com/cloud/api/commands/AttachIsoCmd.java | 6 +- .../cloud/api/commands/AttachVolumeCmd.java | 93 ++----- .../AuthorizeNetworkGroupIngressCmd.java | 232 +++-------------- .../api/commands/CancelMaintenanceCmd.java | 163 +++++++++--- .../CancelPrimaryStorageMaintenanceCmd.java | 89 ++++--- .../com/cloud/api/commands/CopyIsoCmd.java | 6 +- .../cloud/api/commands/CopyTemplateCmd.java | 6 +- .../api/commands/CreateDiskOfferingCmd.java | 6 +- .../cloud/api/commands/CreateDomainCmd.java | 6 +- .../commands/CreateIPForwardingRuleCmd.java | 6 +- .../commands/CreateLoadBalancerRuleCmd.java | 6 +- .../api/commands/CreateNetworkGroupCmd.java | 6 +- .../com/cloud/api/commands/CreatePodCmd.java | 6 +- .../CreatePortForwardingServiceCmd.java | 6 +- .../CreatePortForwardingServiceRuleCmd.java | 6 +- .../commands/CreateServiceOfferingCmd.java | 6 +- .../cloud/api/commands/CreateSnapshotCmd.java | 6 +- .../api/commands/CreateSnapshotPolicyCmd.java | 6 +- .../api/commands/CreateStoragePoolCmd.java | 6 +- .../cloud/api/commands/CreateTemplateCmd.java | 6 +- .../com/cloud/api/commands/CreateUserCmd.java | 6 +- .../api/commands/CreateVlanIpRangeCmd.java | 6 +- .../cloud/api/commands/CreateVolumeCmd.java | 6 +- .../com/cloud/api/commands/CreateZoneCmd.java | 6 +- .../api/commands/DeleteDiskOfferingCmd.java | 6 +- .../cloud/api/commands/DeleteDomainCmd.java | 6 +- .../com/cloud/api/commands/DeleteHostCmd.java | 6 +- .../commands/DeleteIPForwardingRuleCmd.java | 65 +---- .../com/cloud/api/commands/DeleteIsoCmd.java | 6 +- .../commands/DeleteLoadBalancerRuleCmd.java | 51 +--- .../api/commands/DeleteNetworkGroupCmd.java | 76 +----- .../com/cloud/api/commands/DeletePodCmd.java | 6 +- .../com/cloud/api/commands/DeletePoolCmd.java | 6 +- .../DeletePortForwardingServiceCmd.java | 6 +- .../DeletePortForwardingServiceRuleCmd.java | 44 +--- .../commands/DeletePreallocatedLunCmd.java | 6 +- .../commands/DeleteServiceOfferingCmd.java | 46 +--- .../cloud/api/commands/DeleteSnapshotCmd.java | 54 +--- .../commands/DeleteSnapshotPoliciesCmd.java | 74 +----- .../cloud/api/commands/DeleteTemplateCmd.java | 62 +---- .../com/cloud/api/commands/DeleteUserCmd.java | 35 +-- .../api/commands/DeleteVlanIpRangeCmd.java | 38 +-- .../cloud/api/commands/DeleteVolumeCmd.java | 53 +--- .../com/cloud/api/commands/DeleteZoneCmd.java | 41 +-- .../com/cloud/api/commands/DeployVMCmd.java | 6 +- .../api/commands/DestroyConsoleProxyCmd.java | 35 +-- .../com/cloud/api/commands/DestroyVMCmd.java | 56 +---- .../com/cloud/api/commands/DetachIsoCmd.java | 62 +---- .../cloud/api/commands/DetachVolumeCmd.java | 61 +---- .../cloud/api/commands/DisableAccountCmd.java | 44 +--- .../cloud/api/commands/DisableUserCmd.java | 49 +--- .../api/commands/DisassociateIPAddrCmd.java | 61 +---- .../cloud/api/commands/EnableAccountCmd.java | 6 +- .../com/cloud/api/commands/EnableUserCmd.java | 6 +- .../api/commands/GetCloudIdentifierCmd.java | 6 +- .../cloud/api/commands/ListAccountsCmd.java | 6 +- .../com/cloud/api/commands/ListAlertsCmd.java | 6 +- .../cloud/api/commands/ListAsyncJobsCmd.java | 6 +- .../cloud/api/commands/ListCapacityCmd.java | 6 +- .../com/cloud/api/commands/ListCfgsByCmd.java | 6 +- .../cloud/api/commands/ListClustersCmd.java | 6 +- .../api/commands/ListDiskOfferingsCmd.java | 6 +- .../api/commands/ListDomainChildrenCmd.java | 6 +- .../cloud/api/commands/ListDomainsCmd.java | 6 +- .../com/cloud/api/commands/ListEventsCmd.java | 6 +- .../commands/ListGuestOsCategoriesCmd.java | 6 +- .../cloud/api/commands/ListGuestOsCmd.java | 6 +- .../com/cloud/api/commands/ListHostsCmd.java | 6 +- .../com/cloud/api/commands/ListIsosCmd.java | 6 +- .../ListLoadBalancerRuleInstancesCmd.java | 6 +- .../commands/ListLoadBalancerRulesCmd.java | 6 +- .../api/commands/ListNetworkGroupsCmd.java | 6 +- .../com/cloud/api/commands/ListPodsByCmd.java | 6 +- .../commands/ListPortForwardingRulesCmd.java | 6 +- .../ListPortForwardingServiceRulesCmd.java | 6 +- .../ListPortForwardingServicesByVmCmd.java | 6 +- .../ListPortForwardingServicesCmd.java | 6 +- .../api/commands/ListPreallocatedLunsCmd.java | 8 +- .../commands/ListPublicIpAddressesCmd.java | 6 +- .../ListRecurringSnapshotScheduleCmd.java | 6 +- .../api/commands/ListResourceLimitsCmd.java | 6 +- .../cloud/api/commands/ListRoutersCmd.java | 6 +- .../api/commands/ListServiceOfferingsCmd.java | 6 +- .../api/commands/ListSnapshotPoliciesCmd.java | 6 +- .../cloud/api/commands/ListSnapshotsCmd.java | 6 +- .../commands/ListStoragePoolsAndHostsCmd.java | 4 +- .../api/commands/ListStoragePoolsCmd.java | 6 +- .../cloud/api/commands/ListSystemVMsCmd.java | 6 +- .../ListTemplateOrIsoPermissionsCmd.java | 6 +- .../cloud/api/commands/ListTemplatesCmd.java | 6 +- .../com/cloud/api/commands/ListUsersCmd.java | 6 +- .../com/cloud/api/commands/ListVMsCmd.java | 6 +- .../api/commands/ListVlanIpRangesCmd.java | 6 +- .../cloud/api/commands/ListVolumesCmd.java | 6 +- .../cloud/api/commands/ListZonesByCmd.java | 6 +- .../cloud/api/commands/LockAccountCmd.java | 40 +-- .../com/cloud/api/commands/LockUserCmd.java | 43 +--- .../commands/PrepareForMaintenanceCmd.java | 43 +--- ...reparePrimaryStorageForMaintenanceCmd.java | 47 +--- .../api/commands/QueryAsyncJobResultCmd.java | 6 +- .../cloud/api/commands/RebootRouterCmd.java | 6 +- .../cloud/api/commands/RebootSystemVmCmd.java | 34 +-- .../com/cloud/api/commands/RebootVMCmd.java | 51 +--- .../cloud/api/commands/ReconnectHostCmd.java | 162 ++++++++++-- .../com/cloud/api/commands/RecoverVMCmd.java | 47 +--- .../com/cloud/api/commands/RegisterCmd.java | 40 +-- .../cloud/api/commands/RegisterIsoCmd.java | 196 +++++---------- .../commands/RegisterPreallocatedLunCmd.java | 6 +- .../api/commands/RegisterTemplateCmd.java | 235 ++++++------------ .../RemoveFromLoadBalancerRuleCmd.java | 69 +---- .../RemovePortForwardingServiceCmd.java | 77 +----- .../api/commands/ResetVMPasswordCmd.java | 60 +---- .../RevokeNetworkGroupIngressCmd.java | 186 +------------- .../cloud/api/commands/StartRouterCmd.java | 6 +- .../cloud/api/commands/StartSystemVMCmd.java | 80 ++++-- .../com/cloud/api/commands/StartVMCmd.java | 141 +++++++---- .../com/cloud/api/commands/StopRouterCmd.java | 6 +- .../cloud/api/commands/StopSystemVmCmd.java | 78 ++++-- .../src/com/cloud/api/commands/StopVMCmd.java | 138 ++++++---- .../cloud/api/commands/UpdateAccountCmd.java | 6 +- .../com/cloud/api/commands/UpdateCfgCmd.java | 6 +- .../api/commands/UpdateDiskOfferingCmd.java | 6 +- .../cloud/api/commands/UpdateDomainCmd.java | 6 +- .../com/cloud/api/commands/UpdateHostCmd.java | 6 +- .../commands/UpdateIPForwardingRuleCmd.java | 99 ++------ .../com/cloud/api/commands/UpdateIsoCmd.java | 6 +- .../api/commands/UpdateIsoPermissionsCmd.java | 3 +- .../commands/UpdateLoadBalancerRuleCmd.java | 68 ++--- .../com/cloud/api/commands/UpdatePodCmd.java | 77 ++---- .../api/commands/UpdateResourceLimitCmd.java | 141 +++-------- .../commands/UpdateServiceOfferingCmd.java | 78 ++---- .../api/commands/UpdateStoragePoolCmd.java | 117 ++++----- .../cloud/api/commands/UpdateTemplateCmd.java | 6 +- .../UpdateTemplateOrIsoPermissionsCmd.java | 11 +- .../com/cloud/api/commands/UpdateUserCmd.java | 13 +- .../com/cloud/api/commands/UpdateVMCmd.java | 26 +- .../com/cloud/api/commands/UpdateZoneCmd.java | 6 +- .../com/cloud/api/commands/UpgradeVMCmd.java | 127 +++++----- .../cloud/api/response/AccountResponse.java | 1 - .../cloud/api/response/RegisterResponse.java | 27 ++ .../api/response/StoragePoolResponse.java | 11 + .../com/cloud/async/AsyncJobManagerImpl.java | 5 +- .../RemoveFromLoadBalancerExecutor.java | 4 - .../ConfigurationManagerImpl.java | 1 - .../com/cloud/network/NetworkManagerImpl.java | 7 - .../security/NetworkGroupManagerImpl.java | 3 +- .../cloud/server/ManagementServerImpl.java | 10 +- .../src/com/cloud/storage/StorageManager.java | 4 +- .../com/cloud/storage/StorageManagerImpl.java | 22 +- ui/scripts/cloud.core.instances.js | 9 +- 164 files changed, 1756 insertions(+), 3164 deletions(-) create mode 100644 server/src/com/cloud/api/response/RegisterResponse.java diff --git a/core/src/com/cloud/vm/dao/UserVmDao.java b/core/src/com/cloud/vm/dao/UserVmDao.java index 72faff705a2..3719dfffd17 100755 --- a/core/src/com/cloud/vm/dao/UserVmDao.java +++ b/core/src/com/cloud/vm/dao/UserVmDao.java @@ -20,6 +20,7 @@ package com.cloud.vm.dao; import java.util.Date; import java.util.List; +import com.cloud.uservm.UserVm; import com.cloud.utils.db.GenericDao; import com.cloud.vm.State; import com.cloud.vm.UserVmVO; @@ -90,4 +91,6 @@ public interface UserVmDao extends GenericDao { List listVirtualNetworkInstancesByAcctAndZone(long accountId, long dcId); List listVmsUsingGuestIpAddress(long dcId, String ipAddress); + + UserVm findByZoneAndAcctAndGuestIpAddress(long zoneId, long accountId, String ipAddress); } diff --git a/core/src/com/cloud/vm/dao/UserVmDaoImpl.java b/core/src/com/cloud/vm/dao/UserVmDaoImpl.java index 6e75bc179bb..92f7203e7e1 100755 --- a/core/src/com/cloud/vm/dao/UserVmDaoImpl.java +++ b/core/src/com/cloud/vm/dao/UserVmDaoImpl.java @@ -27,6 +27,7 @@ import org.apache.log4j.Logger; import com.cloud.offering.ServiceOffering; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; +import com.cloud.uservm.UserVm; import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.db.Attribute; import com.cloud.utils.db.GenericDaoBase; @@ -52,6 +53,7 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use protected final SearchBuilder NameSearch; protected final SearchBuilder StateChangeSearch; protected final SearchBuilder GuestIpSearch; + protected final SearchBuilder ZoneAccountGuestIpSearch; protected final SearchBuilder DestroySearch; protected SearchBuilder AccountDataCenterVirtualSearch; @@ -116,6 +118,12 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use DestroySearch.and("updateTime", DestroySearch.entity().getUpdateTime(), SearchCriteria.Op.LT); DestroySearch.done(); + ZoneAccountGuestIpSearch = createSearchBuilder(); + ZoneAccountGuestIpSearch.and("dataCenterId", ZoneAccountGuestIpSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); + ZoneAccountGuestIpSearch.and("accountId", ZoneAccountGuestIpSearch.entity().getAccountId(), SearchCriteria.Op.EQ); + ZoneAccountGuestIpSearch.and("guestIpAddress", ZoneAccountGuestIpSearch.entity().getGuestIpAddress(), SearchCriteria.Op.EQ); + ZoneAccountGuestIpSearch.done(); + _updateTimeAttr = _allAttributes.get("updateTime"); assert _updateTimeAttr != null : "Couldn't get this updateTime attribute"; } @@ -293,4 +301,14 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use return listActiveBy(sc); } + + @Override + public UserVm findByZoneAndAcctAndGuestIpAddress(long zoneId, long accountId, String ipAddress) { + SearchCriteria sc = ZoneAccountGuestIpSearch.create(); + sc.setParameters("dataCenterId", zoneId); + sc.setParameters("accountId", accountId); + sc.setParameters("guestIpAddress", ipAddress); + + return findOneActiveBy(sc); + } } diff --git a/server/src/com/cloud/agent/manager/AgentManager.java b/server/src/com/cloud/agent/manager/AgentManager.java index cea5117aebb..effccccd82f 100755 --- a/server/src/com/cloud/agent/manager/AgentManager.java +++ b/server/src/com/cloud/agent/manager/AgentManager.java @@ -215,7 +215,7 @@ public interface AgentManager extends Manager { * @return true if it's done. false if not. */ boolean cancelMaintenance(long hostId); - boolean cancelMaintenance(CancelMaintenanceCmd cmd) throws InvalidParameterValueException; + HostVO cancelMaintenance(CancelMaintenanceCmd cmd) throws InvalidParameterValueException; /** * Check to see if a virtual machine can be upgraded to the given service offering @@ -228,7 +228,7 @@ public interface AgentManager extends Manager { public boolean executeUserRequest(long hostId, Event event) throws AgentUnavailableException; public boolean reconnect(final long hostId) throws AgentUnavailableException; - public boolean reconnectHost(ReconnectHostCmd cmd) throws AgentUnavailableException; + public HostVO reconnectHost(ReconnectHostCmd cmd) throws AgentUnavailableException; public List discoverHosts(Long dcId, Long podId, Long clusterId, String clusterName, String url, String username, String password) throws DiscoveryException, InvalidParameterValueException; public List discoverHosts(AddHostCmd cmd) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException; diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index e96e9b6744f..dfd4e6f1bc0 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -1272,19 +1272,21 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory { } @Override - public boolean reconnectHost(ReconnectHostCmd cmd) throws AgentUnavailableException - { + public HostVO reconnectHost(ReconnectHostCmd cmd) throws AgentUnavailableException { Long hostId = cmd.getId(); - + HostVO host = _hostDao.findById(hostId); if (host == null) { throw new ServerApiException(BaseCmd.PARAM_ERROR, "Host with id " + hostId.toString() + " doesn't exist"); } - return reconnect(hostId); - + boolean result = reconnect(hostId); + if (result) { + return host; + } + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to reconnect host with id " + hostId.toString() + ", internal error."); } - + @Override public boolean reconnect(final long hostId) throws AgentUnavailableException { HostVO host; @@ -1337,7 +1339,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory { } @Override - public boolean cancelMaintenance(CancelMaintenanceCmd cmd) throws InvalidParameterValueException{ + public HostVO cancelMaintenance(CancelMaintenanceCmd cmd) throws InvalidParameterValueException{ Long hostId = cmd.getId(); //verify input parameters @@ -1346,7 +1348,11 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory { throw new ServerApiException(BaseCmd.PARAM_ERROR, "Host with id " + hostId.toString() + " doesn't exist"); } - return cancelMaintenance(hostId); + boolean success = cancelMaintenance(hostId); + if (!success) { + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Internal error cancelling maintenance."); + } + return host; } @Override diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 1229210de40..08e58cd4a86 100644 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -323,6 +323,19 @@ public class ApiDBUtils { return _userVmDao.findById(vmId); } + public static UserVm findUserVmByPublicIpAndGuestIp(String publicIp, String guestIp) { + IPAddressVO addr = _ipAddressDao.findById(publicIp); + List vms = _userVmDao.listVmsUsingGuestIpAddress(addr.getDataCenterId(), guestIp); + if (vms != null) { + for (UserVmVO vm : vms) { + if (vm.getAccountId() == addr.getAccountId()) { + return vm; + } + } + } + return null; + } + public static VlanVO findVlanById(long vlanDbId) { return _vlanDao.findById(vlanDbId); } @@ -365,6 +378,10 @@ public class ApiDBUtils { return _userVmDao.listByHostId(hostId); } + public static List listZones() { + return _zoneDao.listAllActive(); + } + public static boolean volumeIsOnSharedStorage(long volumeId) throws InvalidParameterValueException { // Check that the volume is valid VolumeVO volume = _volumeDao.findById(volumeId); diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index 9918d094db4..42d7d84fe85 100644 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -77,6 +77,7 @@ import org.apache.http.protocol.ResponseDate; import org.apache.http.protocol.ResponseServer; import org.apache.log4j.Logger; +import com.cloud.api.response.ApiResponseSerializer; import com.cloud.async.AsyncJobManager; import com.cloud.async.AsyncJobVO; import com.cloud.configuration.ConfigurationVO; @@ -376,10 +377,10 @@ public class ApiServer implements HttpRequestHandler { if (objectId != null) { return ((BaseAsyncCreateCmd)asyncCmd).getResponse(jobId, objectId); } - return asyncCmd.getResponse(jobId); + return ApiResponseSerializer.toSerializedString(asyncCmd.getResponse(jobId)); } else { _dispatcher.dispatch(cmdObj, params); - return cmdObj.getResponse(); + return ApiResponseSerializer.toSerializedString(cmdObj.getResponse()); } } diff --git a/server/src/com/cloud/api/BaseAsyncCmd.java b/server/src/com/cloud/api/BaseAsyncCmd.java index da687d6398f..0fa8348d793 100644 --- a/server/src/com/cloud/api/BaseAsyncCmd.java +++ b/server/src/com/cloud/api/BaseAsyncCmd.java @@ -1,6 +1,5 @@ package com.cloud.api; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.AsyncJobResponse; import com.cloud.async.AsyncJobManager; import com.cloud.async.AsyncJobVO; @@ -16,12 +15,11 @@ public abstract class BaseAsyncCmd extends BaseCmd { private AsyncJobVO _job = null; private Long startEventId; - public String getResponse(long jobId) { - // FIXME: We need a generic response object here, see BaseAsyncCreateCmd + public ResponseObject getResponse(long jobId) { AsyncJobResponse response = new AsyncJobResponse(); response.setId(jobId); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } public void setAsyncJobManager(AsyncJobManager mgr) { diff --git a/server/src/com/cloud/api/BaseCmd.java b/server/src/com/cloud/api/BaseCmd.java index 74a422e3f89..3c4addaea7c 100644 --- a/server/src/com/cloud/api/BaseCmd.java +++ b/server/src/com/cloud/api/BaseCmd.java @@ -94,7 +94,7 @@ public abstract class BaseCmd { private Object _responseObject = null; public abstract String getName(); - public abstract String getResponse(); + public abstract ResponseObject getResponse(); public Object getResponseObject() { return _responseObject; diff --git a/server/src/com/cloud/api/commands/AddConfigCmd.java b/server/src/com/cloud/api/commands/AddConfigCmd.java index 14508142717..9b397252dc1 100644 --- a/server/src/com/cloud/api/commands/AddConfigCmd.java +++ b/server/src/com/cloud/api/commands/AddConfigCmd.java @@ -25,6 +25,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.ConfigurationResponse; @@ -98,7 +99,7 @@ public class AddConfigCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { ConfigurationResponse response = new ConfigurationResponse(); ConfigurationVO responseObject = (ConfigurationVO)getResponseObject(); if (responseObject != null) { @@ -111,6 +112,7 @@ public class AddConfigCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; + //return ApiResponseSerializer.toSerializedString(response); } } diff --git a/server/src/com/cloud/api/commands/AddHostCmd.java b/server/src/com/cloud/api/commands/AddHostCmd.java index 92ebf8ad7f4..a9d4071bbba 100644 --- a/server/src/com/cloud/api/commands/AddHostCmd.java +++ b/server/src/com/cloud/api/commands/AddHostCmd.java @@ -32,8 +32,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.HostResponse; import com.cloud.api.response.ListResponse; import com.cloud.dc.ClusterVO; @@ -118,7 +118,7 @@ public class AddHostCmd extends BaseCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List hosts = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -218,6 +218,7 @@ public class AddHostCmd extends BaseCmd { response.setResponses(hostResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; + //return ApiResponseSerializer.toSerializedString(response); } } diff --git a/server/src/com/cloud/api/commands/AddSecondaryStorageCmd.java b/server/src/com/cloud/api/commands/AddSecondaryStorageCmd.java index 915cbf0588d..3e632ffc09d 100644 --- a/server/src/com/cloud/api/commands/AddSecondaryStorageCmd.java +++ b/server/src/com/cloud/api/commands/AddSecondaryStorageCmd.java @@ -31,8 +31,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.HostResponse; import com.cloud.api.response.ListResponse; import com.cloud.dc.ClusterVO; @@ -77,7 +77,7 @@ public class AddSecondaryStorageCmd extends BaseCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List hosts = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -149,6 +149,7 @@ public class AddSecondaryStorageCmd extends BaseCmd { response.setResponses(hostResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; + //return ApiResponseSerializer.toSerializedString(response); } } diff --git a/server/src/com/cloud/api/commands/AssignPortForwardingServiceCmd.java b/server/src/com/cloud/api/commands/AssignPortForwardingServiceCmd.java index 6b761e659a0..df0603c2aef 100644 --- a/server/src/com/cloud/api/commands/AssignPortForwardingServiceCmd.java +++ b/server/src/com/cloud/api/commands/AssignPortForwardingServiceCmd.java @@ -24,8 +24,10 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.SuccessResponse; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; @Implementation(method="assignSecurityGroup", manager=Manager.ManagementServer) public class AssignPortForwardingServiceCmd extends BaseAsyncCmd { @@ -75,83 +77,17 @@ public class AssignPortForwardingServiceCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -/* - @Override - public List> execute(Map params) { - Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); - Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); - Long securityGroupId = (Long)params.get(BaseCmd.Properties.ID.getName()); - String securityGroupIds = (String)params.get(BaseCmd.Properties.IDS.getName()); - String publicIp = (String)params.get(BaseCmd.Properties.PUBLIC_IP.getName()); - Long vmId = (Long)params.get(BaseCmd.Properties.VIRTUAL_MACHINE_ID.getName()); - - if ((securityGroupId == null) && (securityGroupIds == null)) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "No service id (or list of ids) specified."); - } - - List sgIdList = null; - if (securityGroupIds != null) { - sgIdList = new ArrayList(); - StringTokenizer st = new StringTokenizer(securityGroupIds, ","); - while (st.hasMoreTokens()) { - String token = st.nextToken(); - try { - Long nextSGId = Long.parseLong(token); - sgIdList.add(nextSGId); - } catch (NumberFormatException nfe) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "The service id " + token + " is not a valid parameter."); - } - } - } - - if (userId == null) { - userId = Long.valueOf(1); - } - - List validateSGList = null; - if (securityGroupId == null) { - validateSGList = sgIdList; - } else { - validateSGList = new ArrayList(); - validateSGList.add(securityGroupId); - } - Long validatedAccountId = getManagementServer().validateSecurityGroupsAndInstance(validateSGList, vmId); - if (validatedAccountId == null) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to apply port forwarding services " + StringUtils.join(sgIdList, ",") + " to instance " + vmId + ". Invalid list of port forwarding services for the given instance."); - } - if (account != null) { - if (!isAdmin(account.getType()) && (account.getId().longValue() != validatedAccountId.longValue())) { - throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Permission denied applying port forwarding services " + StringUtils.join(sgIdList, ",") + " to instance " + vmId + "."); - } else { - Account validatedAccount = getManagementServer().findAccountById(validatedAccountId); - if (!getManagementServer().isChildDomain(account.getDomainId(), validatedAccount.getDomainId())) { - throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Permission denied applying port forwarding services " + StringUtils.join(sgIdList, ",") + " to instance " + vmId + "."); - } - } - } - - long jobId = getManagementServer().assignSecurityGroupAsync(userId, securityGroupId, sgIdList, publicIp, vmId); - - if(jobId == 0) { - s_logger.warn("Unable to schedule async-job for AssignPortForwardingServiceCmd comamnd"); - } else { - if(s_logger.isDebugEnabled()) - s_logger.debug("AssignPortForwardingServiceCmd command has been accepted, job id: " + jobId); - } - - List> returnValues = new ArrayList>(); - returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); - return returnValues; - } - */ @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/AssignToLoadBalancerRuleCmd.java b/server/src/com/cloud/api/commands/AssignToLoadBalancerRuleCmd.java index 0b510013f44..6c7e012421c 100644 --- a/server/src/com/cloud/api/commands/AssignToLoadBalancerRuleCmd.java +++ b/server/src/com/cloud/api/commands/AssignToLoadBalancerRuleCmd.java @@ -25,6 +25,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="assignToLoadBalancer", manager=Manager.NetworkManager) public class AssignToLoadBalancerRuleCmd extends BaseAsyncCmd { @@ -70,9 +72,10 @@ public class AssignToLoadBalancerRuleCmd extends BaseAsyncCmd { } @Override - public String getResponse() { - // There's no specific response for this command, if the command failed an exception would have been thrown. If we are here, then it succeeded. - // Seems like we should return success/true as the response though, so this will probably have to change. - return null; + public ResponseObject getResponse() { + SuccessResponse response = new SuccessResponse(); + response.setSuccess(Boolean.TRUE); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/AssociateIPAddrCmd.java b/server/src/com/cloud/api/commands/AssociateIPAddrCmd.java index a6de8bb2525..22ecd1bd008 100644 --- a/server/src/com/cloud/api/commands/AssociateIPAddrCmd.java +++ b/server/src/com/cloud/api/commands/AssociateIPAddrCmd.java @@ -25,6 +25,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.IPAddressResponse; import com.cloud.dc.Vlan.VlanType; @@ -81,7 +82,7 @@ public class AssociateIPAddrCmd extends BaseCmd { return "addressinfo"; } - public String getResponse() { + public ResponseObject getResponse() { IPAddressVO ipAddress = (IPAddressVO)getResponseObject(); VlanVO vlan = ApiDBUtils.findVlanById(ipAddress.getVlanDbId()); @@ -114,6 +115,6 @@ public class AssociateIPAddrCmd extends BaseCmd { } ipResponse.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(ipResponse); + return ipResponse; } } diff --git a/server/src/com/cloud/api/commands/AttachIsoCmd.java b/server/src/com/cloud/api/commands/AttachIsoCmd.java index b4cb7b2f0da..3e7bb18f5d5 100644 --- a/server/src/com/cloud/api/commands/AttachIsoCmd.java +++ b/server/src/com/cloud/api/commands/AttachIsoCmd.java @@ -25,8 +25,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="attachIso", manager=Manager.TemplateManager) @@ -69,7 +69,7 @@ public class AttachIsoCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -80,6 +80,6 @@ public class AttachIsoCmd extends BaseAsyncCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/AttachVolumeCmd.java b/server/src/com/cloud/api/commands/AttachVolumeCmd.java index f12ddeddc58..f4df6449d76 100644 --- a/server/src/com/cloud/api/commands/AttachVolumeCmd.java +++ b/server/src/com/cloud/api/commands/AttachVolumeCmd.java @@ -20,10 +20,15 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; +import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.VolumeResponse; +import com.cloud.storage.VolumeVO; +import com.cloud.uservm.UserVm; @Implementation(method="attachVolumeToVM", manager=Manager.UserVmManager) public class AttachVolumeCmd extends BaseAsyncCmd { @@ -65,83 +70,25 @@ public class AttachVolumeCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - - public static String getResultObjectName() { - return "volume"; - } - /* - @Override - public List> execute(Map params) { - Account account = (Account) params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); - //Long userId = (Long) params.get(BaseCmd.Properties.USER_ID.getName()); - Long volumeId = (Long) params.get(BaseCmd.Properties.ID.getName()); - Long vmId = (Long) params.get(BaseCmd.Properties.VIRTUAL_MACHINE_ID.getName()); - Long deviceId = (Long) params.get(BaseCmd.Properties.DEVICE_ID.getName()); - - // Check that the volume ID is valid - VolumeVO volume = getManagementServer().findVolumeById(volumeId); - if (volume == null) - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find volume with ID: " + volumeId); - - // Check that the virtual machine ID is valid - UserVmVO vm = getManagementServer().findUserVMInstanceById(vmId.longValue()); - if (vm == null) { - throw new ServerApiException (BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId); - } - - // Check that the device ID is valid - if( deviceId != null ) { - if(deviceId.longValue() == 0) { - throw new ServerApiException (BaseCmd.VM_INVALID_PARAM_ERROR, "deviceId can't be 0, which is used by Root device"); - } - } - - if (volume.getAccountId() != vm.getAccountId()) { - throw new ServerApiException (BaseCmd.VM_INVALID_PARAM_ERROR, "virtual machine and volume belong to different accounts, can not attach"); - } - - // If the account is not an admin, check that the volume and the virtual machine are owned by the account that was passed in - if (account != null) { - if (!isAdmin(account.getType())) { - if (account.getId().longValue() != volume.getAccountId()) - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find volume with ID: " + volumeId + " for account: " + account.getAccountName()); - - if (account.getId().longValue() != vm.getAccountId()) - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find VM with ID: " + vmId + " for account: " + account.getAccountName()); - } else { - if (!getManagementServer().isChildDomain(account.getDomainId(), volume.getDomainId()) || - !getManagementServer().isChildDomain(account.getDomainId(), vm.getDomainId())) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to attach volume " + volumeId + " to virtual machine instance " + vmId + ", permission denied."); - } - } - } - - try { - long jobId = getManagementServer().attachVolumeToVMAsync(vmId, volumeId, deviceId); - - if (jobId == 0) { - s_logger.warn("Unable to schedule async-job for AttachVolume comamnd"); - } else { - if(s_logger.isDebugEnabled()) - s_logger.debug("AttachVolume command has been accepted, job id: " + jobId); - } - - List> returnValues = new ArrayList>(); - returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); - - return returnValues; - } catch (Exception ex) { - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to attach volume: " + ex.getMessage()); - } - } - */ @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + VolumeVO volume = ApiDBUtils.findVolumeById(id); + VolumeResponse response = new VolumeResponse(); + UserVm instance = ApiDBUtils.findUserVmById(volume.getInstanceId()); + response.setVirtualMachineName(instance.getName()); + response.setVirtualMachineDisplayName(instance.getDisplayName()); + response.setVirtualMachineId(instance.getId()); + response.setVirtualMachineState(instance.getState().toString()); + response.setStorageType("shared"); // NOTE: You can never attach a local disk volume but if that changes, we need to change this + response.setId(volume.getId()); + response.setName(volume.getName()); + response.setResponseName(getName()); + + return response; } } diff --git a/server/src/com/cloud/api/commands/AuthorizeNetworkGroupIngressCmd.java b/server/src/com/cloud/api/commands/AuthorizeNetworkGroupIngressCmd.java index c0432f11f4f..84651f05844 100644 --- a/server/src/com/cloud/api/commands/AuthorizeNetworkGroupIngressCmd.java +++ b/server/src/com/cloud/api/commands/AuthorizeNetworkGroupIngressCmd.java @@ -18,6 +18,7 @@ package com.cloud.api.commands; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -27,8 +28,12 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.IngressRuleResponse; +import com.cloud.api.response.ListResponse; +import com.cloud.network.security.IngressRuleVO; -@Implementation(method="authorizeNetworkGroupIngress", manager=Manager.NetworkGroupManager) +@Implementation(method="authorizeNetworkGroupIngress", manager=Manager.NetworkGroupManager) @SuppressWarnings("rawtypes") public class AuthorizeNetworkGroupIngressCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(AuthorizeNetworkGroupIngressCmd.class.getName()); @@ -121,216 +126,49 @@ public class AuthorizeNetworkGroupIngressCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - + public static String getResultObjectName() { return "networkgroup"; } - /* - @Override - public List> execute(Map params) { - Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); - String accountName = (String)params.get(BaseCmd.Properties.ACCOUNT.getName()); - Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName()); - Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); - Integer startPort = (Integer)params.get(BaseCmd.Properties.START_PORT.getName()); - Integer endPort = (Integer)params.get(BaseCmd.Properties.END_PORT.getName()); - Integer icmpType = (Integer)params.get(BaseCmd.Properties.ICMP_TYPE.getName()); - Integer icmpCode = (Integer)params.get(BaseCmd.Properties.ICMP_CODE.getName()); - String protocol = (String)params.get(BaseCmd.Properties.PROTOCOL.getName()); - String networkGroup = (String)params.get(BaseCmd.Properties.NETWORK_GROUP_NAME.getName()); - String cidrList = (String)params.get(BaseCmd.Properties.CIDR_LIST.getName()); - Map groupList = (Map)params.get(BaseCmd.Properties.USER_NETWORK_GROUP_LIST.getName()); + @Override @SuppressWarnings("unchecked") + public ResponseObject getResponse() { + List ingressRules = (List)getResponseObject(); - Long accountId = null; - Integer startPortOrType = null; - Integer endPortOrCode = null; + ListResponse response = new ListResponse(); + if ((ingressRules != null) && !ingressRules.isEmpty()) { + List responses = new ArrayList(); + for (IngressRuleVO ingressRule : ingressRules) { + IngressRuleResponse ingressData = new IngressRuleResponse(); - if (protocol == null) { - protocol = "all"; - } - //FIXME: for exceptions below, add new enums to BaseCmd.PARAM_ to reflect the error condition more precisely - if (!NetUtils.isValidNetworkGroupProto(protocol)) { - s_logger.debug("Invalid protocol specified " + protocol); - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid protocol " + protocol); - } - if ("icmp".equalsIgnoreCase(protocol) ) { - if ((icmpType == null) || (icmpCode == null)) { - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid ICMP type/code specified, icmpType = " + icmpType + ", icmpCode = " + icmpCode); - } - if (icmpType == -1 && icmpCode != -1) { - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid icmp type range" ); - } - if (icmpCode > 255) { - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid icmp code " ); - } - startPortOrType = icmpType; - endPortOrCode= icmpCode; - } else if (protocol.equals("all")) { - if ((startPort != null) || (endPort != null)) { - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Cannot specify startPort or endPort without specifying protocol"); - } - startPortOrType = 0; - endPortOrCode = 0; - } else { - if ((startPort == null) || (endPort == null)) { - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid port range specified, startPort = " + startPort + ", endPort = " + endPort); - } - if (startPort == 0 && endPort == 0) { - endPort = 65535; - } - if (startPort > endPort) { - s_logger.debug("Invalid port range specified: " + startPort + ":" + endPort); - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid port range " ); - } - if (startPort > 65535 || endPort > 65535 || startPort < -1 || endPort < -1) { - s_logger.debug("Invalid port numbers specified: " + startPort + ":" + endPort); - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid port numbers " ); - } - - if (startPort < 0 || endPort < 0) { - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid port range " ); - } - startPortOrType = startPort; - endPortOrCode= endPort; - } - - protocol = protocol.toLowerCase(); - - if ((account == null) || isAdmin(account.getType())) { - if ((accountName != null) && (domainId != null)) { - // if it's an admin account, do a quick permission check - if ((account != null) && !getManagementServer().isChildDomain(account.getDomainId(), domainId)) { - if (s_logger.isDebugEnabled()) { - s_logger.debug("Unable to find rules for network security group id = " + networkGroup + ", permission denied."); - } - throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to find rules for network security group id = " + networkGroup + ", permission denied."); + ingressData.setRuleId(ingressRule.getId()); + ingressData.setProtocol(ingressRule.getProtocol()); + if ("icmp".equalsIgnoreCase(ingressRule.getProtocol())) { + ingressData.setIcmpType(ingressRule.getStartPort()); + ingressData.setIcmpCode(ingressRule.getEndPort()); + } else { + ingressData.setStartPort(ingressRule.getStartPort()); + ingressData.setEndPort(ingressRule.getEndPort()); } - Account groupOwner = getManagementServer().findActiveAccount(accountName, domainId); - if (groupOwner == null) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find account " + accountName + " in domain " + domainId); - } - accountId = groupOwner.getId(); - } else { - if (account != null) { - accountId = account.getId(); - domainId = account.getDomainId(); + if (ingressRule.getAllowedNetworkGroup() != null) { + ingressData.setNetworkGroupName(ingressRule.getAllowedNetworkGroup()); + ingressData.setAccountName(ingressRule.getAllowedNetGrpAcct()); + } else { + ingressData.setCidr(ingressRule.getAllowedSourceIpCidr()); } + + ingressData.setResponseName("ingressrule"); + responses.add(ingressData); } - } else { - if (account != null) { - accountId = account.getId(); - domainId = account.getDomainId(); - } + response.setResponses(responses); } - if (accountId == null) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find account for network security group " + networkGroup + "; failed to authorize ingress."); - } - - NetworkGroupVO sg = getManagementServer().findNetworkGroupByName(accountId, networkGroup); - if (sg == null) { - if (s_logger.isDebugEnabled()) { - s_logger.debug("Unable to find network security group with id " + networkGroup); - } - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find network security group with id " + networkGroup); - } - - if (cidrList == null && groupList == null) { - if (s_logger.isDebugEnabled()) { - s_logger.debug("At least one cidr or at least one security group needs to be specified"); - } - throw new ServerApiException(BaseCmd.PARAM_ERROR, "At least one cidr or at least one security group needs to be specified"); - } - - List authorizedCidrs = new ArrayList(); - if (cidrList != null) { - if (protocol.equals("all")) { - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Cannot authorize cidrs without specifying protocol and ports."); - } - String [] cidrs = cidrList.split(","); - for (String cidr: cidrs) { - if (!NetUtils.isValidCIDR(cidr)) { - s_logger.debug( "Invalid cidr (" + cidr + ") given, unable to authorize ingress."); - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid cidr (" + cidr + ") given, unable to authorize ingress."); - } - authorizedCidrs.add(cidr); - } - } - - List authorizedGroups = new ArrayList (); - if (groupList != null) { - Collection userGroupCollection = groupList.values(); - Iterator iter = userGroupCollection.iterator(); - while (iter.hasNext()) { - HashMap userGroup = (HashMap)iter.next(); - String group = (String)userGroup.get("group"); - String authorizedAccountName = (String)userGroup.get("account"); - if ((group == null) || (authorizedAccountName == null)) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid user group specified, fields 'group' and 'account' cannot be null, please specify groups in the form: userGroupList[0].group=XXX&userGroupList[0].account=YYY"); - } - - Account authorizedAccount = getManagementServer().findActiveAccount(authorizedAccountName, domainId); - if (authorizedAccount == null) { - if (s_logger.isDebugEnabled()) { - s_logger.debug("Nonexistent account: " + authorizedAccountName + ", domainid: " + domainId + " when trying to authorize ingress for " + networkGroup + ":" + protocol + ":" + startPortOrType + ":" + endPortOrCode); - } - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Nonexistent account: " + authorizedAccountName + " when trying to authorize ingress for " + networkGroup + ":" + protocol + ":" + startPortOrType + ":" + endPortOrCode); - } - - NetworkGroupVO groupVO = getManagementServer().findNetworkGroupByName(authorizedAccount.getId(), group); - if (groupVO == null) { - if (s_logger.isDebugEnabled()) { - s_logger.debug("Nonexistent group " + group + " for account " + authorizedAccountName + "/" + domainId); - } - throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid group (" + group + ") given, unable to authorize ingress."); - } - authorizedGroups.add(groupVO); - } - } - - // If command is executed via 8096 port, set userId to the id of System account (1) - if (userId == null) { - userId = Long.valueOf(1); - } - - long jobId = getManagementServer().authorizeNetworkGroupIngressAsync(accountId, networkGroup, protocol, startPortOrType, endPortOrCode, authorizedCidrs.toArray(new String[authorizedCidrs.size()]), authorizedGroups); - //long ruleId = 0; - - if (jobId == 0) { - s_logger.warn("Unable to schedule async-job for AuthorizeNetworkGroupIngressCmd command"); - } else { - if (s_logger.isDebugEnabled()) - s_logger.debug("AuthorizeNetworkGroupIngressCmd command has been accepted, job id: " + jobId); - - // many rules can be created as a result, so returning ruleId may not be correct here - //ruleId = waitInstanceCreation(jobId); - } - - List> returnValues = new ArrayList>(); - returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); - //returnValues.add(new Pair(BaseCmd.Properties.RULE_ID.getName(), Long.valueOf(ruleId))); - return returnValues; - } - */ - - /* - protected long getInstanceIdFromJobSuccessResult(String result) { - CreateOrUpdateRuleResultObject resultObject = (CreateOrUpdateRuleResultObject)SerializerHelper.fromSerializedString(result); - if(resultObject != null) { - return resultObject.getRuleId(); - } - - return 0; - } - */ - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/CancelMaintenanceCmd.java b/server/src/com/cloud/api/commands/CancelMaintenanceCmd.java index dcc764b58b3..6a00b0cc90d 100644 --- a/server/src/com/cloud/api/commands/CancelMaintenanceCmd.java +++ b/server/src/com/cloud/api/commands/CancelMaintenanceCmd.java @@ -18,12 +18,29 @@ package com.cloud.api.commands; +import java.text.DecimalFormat; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.HostResponse; +import com.cloud.api.ApiDBUtils; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.dc.HostPodVO; +import com.cloud.host.Host; +import com.cloud.host.HostStats; +import com.cloud.host.HostVO; +import com.cloud.host.Status.Event; +import com.cloud.offering.ServiceOffering; +import com.cloud.storage.GuestOSCategoryVO; +import com.cloud.vm.UserVmVO; @Implementation(method="cancelMaintenance", manager=Manager.AgentManager) public class CancelMaintenanceCmd extends BaseAsyncCmd { @@ -58,36 +75,124 @@ public class CancelMaintenanceCmd extends BaseAsyncCmd { public static String getResultObjectName() { return "host"; - } - - /* - @Override - public List> execute(Map params) { - Long hostId = (Long)params.get(BaseCmd.Properties.ID.getName()); - - //verify input parameters - HostVO host = getManagementServer().getHostBy(hostId); - if (host == null) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Host with id " + hostId.toString() + " doesn't exist"); - } - - long jobId = getManagementServer().maintenanceCompletedAsync(hostId); - if(jobId == 0) { - s_logger.warn("Unable to schedule async-job for CancelMaintenance comamnd"); - } else { - if(s_logger.isDebugEnabled()) - s_logger.debug("CancelMaintenance command has been accepted, job id: " + jobId); - } - - List> returnValues = new ArrayList>(); - returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); - return returnValues; } - */ - + @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + HostVO host = (HostVO)getResponseObject(); + + HostResponse response = new HostResponse(); + response.setId(host.getId()); + + response.setName(host.getName()); + response.setState(host.getStatus()); + + if (host.getDisconnectedOn() != null) { + response.setDisconnectedOn(host.getDisconnectedOn()); + } + + if (host.getType() != null) { + response.setHostType(host.getType()); + } + + GuestOSCategoryVO guestOSCategory = ApiDBUtils.getHostGuestOSCategory(host.getId()); + if (guestOSCategory != null) { + response.setOsCategoryId(guestOSCategory.getId()); + response.setOsCategoryName(guestOSCategory.getName()); + } + + response.setIpAddress(host.getPrivateIpAddress()); + response.setZoneId(host.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(host.getDataCenterId()).getName()); + + if (host.getPodId() != null) { + HostPodVO pod = ApiDBUtils.findPodById(host.getPodId()); + response.setPodId(host.getPodId()); + response.setPodName(pod.getName()); + } + + response.setVersion(host.getVersion().toString()); + + if (host.getHypervisorType() != null) { + response.setHypervisor(host.getHypervisorType()); + } + + if ((host.getCpus() != null) && (host.getSpeed() != null) && !(host.getType().toString().equals("Storage"))) { + response.setCpuNumber(host.getCpus()); + response.setCpuSpeed(host.getSpeed()); + // calculate cpu allocated by vm + int cpu = 0; + String cpuAlloc = null; + DecimalFormat decimalFormat = new DecimalFormat("#.##"); + List instances = ApiDBUtils.listUserVMsByHostId(host.getId()); + for (UserVmVO vm : instances) { + ServiceOffering so = ApiDBUtils.findServiceOfferingById(vm.getServiceOfferingId()); + cpu += so.getCpu() * so.getSpeed(); + } + cpuAlloc = decimalFormat.format(((float) cpu / (float) (host.getCpus() * host.getSpeed())) * 100f) + "%"; + response.setCpuAllocated(cpuAlloc); + + // calculate cpu utilized + String cpuUsed = null; + HostStats hostStats = ApiDBUtils.getHostStatistics(host.getId()); + if (hostStats != null) { + float cpuUtil = (float) hostStats.getCpuUtilization(); + cpuUsed = decimalFormat.format(cpuUtil) + "%"; + response.setCpuUsed(cpuUsed); + + long avgLoad = (long)hostStats.getAverageLoad(); + response.setAverageLoad(avgLoad); + + long networkKbsRead = (long)hostStats.getNetworkReadKBs(); + response.setNetworkKbsRead(networkKbsRead); + + long networkKbsWrite = (long)hostStats.getNetworkWriteKBs(); + response.setNetworkKbsWrite(networkKbsWrite); + } + } + + if (host.getType() == Host.Type.Routing) { + Long memory = host.getTotalMemory(); + response.setMemoryTotal(memory); + // calculate memory allocated by systemVM and userVm + long mem = ApiDBUtils.getMemoryUsagebyHost(host.getId()); + response.setMemoryAllocated(mem); + // calculate memory utilized, we don't provide memory over commit + response.setMemoryUsed(mem); + + } + + if (host.getType().toString().equals("Storage")) { + response.setDiskSizeTotal(host.getTotalSize()); + response.setDiskSizeAllocated(0L); + } + response.setCapabilities(host.getCapabilities()); + response.setLastPinged(new Date(host.getLastPinged())); + if (host.getManagementServerId() != null) { + response.setManagementServerId(host.getManagementServerId()); + } + + if (host.getCreated() != null) { + response.setCreated(host.getCreated()); + } + if (host.getRemoved() != null) { + response.setRemoved(host.getRemoved()); + } + + Set possibleEvents = host.getStatus().getPossibleEvents(); + if ((possibleEvents != null) && !possibleEvents.isEmpty()) { + String events = ""; + Iterator iter = possibleEvents.iterator(); + while (iter.hasNext()) { + Event event = iter.next(); + events += event.toString(); + if (iter.hasNext()) { + events += "; "; + } + } + response.setEvents(events); + } + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/CancelPrimaryStorageMaintenanceCmd.java b/server/src/com/cloud/api/commands/CancelPrimaryStorageMaintenanceCmd.java index ad2856ffa57..8aaad3300a8 100644 --- a/server/src/com/cloud/api/commands/CancelPrimaryStorageMaintenanceCmd.java +++ b/server/src/com/cloud/api/commands/CancelPrimaryStorageMaintenanceCmd.java @@ -22,8 +22,14 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.ApiDBUtils; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.StoragePoolResponse; +import com.cloud.dc.ClusterVO; +import com.cloud.storage.StoragePoolVO; +import com.cloud.storage.StorageStats; @Implementation(method="cancelPrimaryStorageForMaintenance", manager=Manager.StorageManager) public class CancelPrimaryStorageMaintenanceCmd extends BaseAsyncCmd { @@ -60,47 +66,48 @@ public class CancelPrimaryStorageMaintenanceCmd extends BaseAsyncCmd { return "primarystorage"; } - /* - @Override - public List> execute(Map params) { - Long storagePoolId = (Long)params.get(BaseCmd.Properties.ID.getName()); - Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); - Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); - //verify input parameters - StoragePoolVO storagePool = getManagementServer().findPoolById(storagePoolId); - - if (storagePool == null) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Primary storage with id " + storagePoolId + " doesn't exist"); - } - - if (!storagePool.getStatus().equals(Status.Maintenance)) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Primary storage with id " + storagePoolId + " is not ready for migration, as the status is:"+storagePool.getStatus().toString()); - } - - long jobId = 0; - try { - jobId = getManagementServer().cancelPrimaryStorageMaintenanceAsync(storagePoolId); - } catch (InvalidParameterValueException e) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to cancel primary storage maintenance: " + e.getMessage()); - } - - if(jobId == 0) { - s_logger.warn("Unable to schedule async-job for CancelPrimaryStorageMaintenance command"); - } else { - if(s_logger.isDebugEnabled()) - s_logger.debug("CancelPrimaryStorageMaintenance command has been accepted, job id: " + jobId); - } - - List> returnValues = new ArrayList>(); - returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); - returnValues.add(new Pair(BaseCmd.Properties.STATE.getName(), Status.PrepareForMaintenance)); - return returnValues; - } - */ - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + StoragePoolVO primaryStorage = (StoragePoolVO)getResponseObject(); + + StoragePoolResponse response = new StoragePoolResponse(); + response.setId(primaryStorage.getId()); + response.setName(primaryStorage.getName()); + response.setType(primaryStorage.getPoolType().toString()); + response.setState(primaryStorage.getStatus().toString()); + response.setIpAddress(primaryStorage.getHostAddress()); + response.setZoneId(primaryStorage.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(primaryStorage.getDataCenterId()).getName()); + + if (response.getPodId() != null && ApiDBUtils.findPodById(primaryStorage.getPodId()) != null) { + response.setPodId(primaryStorage.getPodId()); + response.setPodName((ApiDBUtils.findPodById(primaryStorage.getPodId())).getName()); + } + + if (primaryStorage.getCreated() != null) { + response.setCreated(primaryStorage.getCreated()); + } + response.setDiskSizeTotal(primaryStorage.getCapacityBytes()); + + StorageStats stats = ApiDBUtils.getStoragePoolStatistics(primaryStorage.getId()); + long capacity = primaryStorage.getCapacityBytes(); + long available = primaryStorage.getAvailableBytes() ; + long used = capacity - available; + + if (stats != null) { + used = stats.getByteUsed(); + available = capacity - used; + } + + response.setDiskSizeAllocated(used); + if (primaryStorage.getClusterId() != null) { + ClusterVO cluster = ApiDBUtils.findClusterById(primaryStorage.getClusterId()); + response.setClusterId(primaryStorage.getClusterId()); + response.setClusterName(cluster.getName()); + } + + response.setTags(ApiDBUtils.getStoragePoolTags(primaryStorage.getId())); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/CopyIsoCmd.java b/server/src/com/cloud/api/commands/CopyIsoCmd.java index cd68ce62cbe..f1343618812 100644 --- a/server/src/com/cloud/api/commands/CopyIsoCmd.java +++ b/server/src/com/cloud/api/commands/CopyIsoCmd.java @@ -26,8 +26,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.TemplateResponse; import com.cloud.storage.GuestOS; import com.cloud.storage.VMTemplateHostVO; @@ -85,7 +85,7 @@ public class CopyIsoCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { TemplateResponse isoResponse = new TemplateResponse(); VMTemplateVO iso = (VMTemplateVO)getResponseObject(); @@ -155,7 +155,7 @@ public class CopyIsoCmd extends BaseAsyncCmd { } isoResponse.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(isoResponse); + return isoResponse; } } diff --git a/server/src/com/cloud/api/commands/CopyTemplateCmd.java b/server/src/com/cloud/api/commands/CopyTemplateCmd.java index 62c47b229fc..2d69fb1ef9d 100644 --- a/server/src/com/cloud/api/commands/CopyTemplateCmd.java +++ b/server/src/com/cloud/api/commands/CopyTemplateCmd.java @@ -26,8 +26,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.TemplateResponse; import com.cloud.storage.GuestOS; import com.cloud.storage.VMTemplateHostVO; @@ -86,7 +86,7 @@ public class CopyTemplateCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { TemplateResponse templateResponse = new TemplateResponse(); VMTemplateVO template = (VMTemplateVO)getResponseObject(); @@ -158,7 +158,7 @@ public class CopyTemplateCmd extends BaseAsyncCmd { } templateResponse.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(templateResponse); + return templateResponse; } } diff --git a/server/src/com/cloud/api/commands/CreateDiskOfferingCmd.java b/server/src/com/cloud/api/commands/CreateDiskOfferingCmd.java index 2cf168a3a80..0986164ae53 100644 --- a/server/src/com/cloud/api/commands/CreateDiskOfferingCmd.java +++ b/server/src/com/cloud/api/commands/CreateDiskOfferingCmd.java @@ -25,8 +25,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.DiskOfferingResponse; import com.cloud.storage.DiskOfferingVO; @@ -89,7 +89,7 @@ public class CreateDiskOfferingCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { DiskOfferingResponse response = new DiskOfferingResponse(); DiskOfferingVO responseObject = (DiskOfferingVO)getResponseObject(); if (responseObject != null) { @@ -106,6 +106,6 @@ public class CreateDiskOfferingCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateDomainCmd.java b/server/src/com/cloud/api/commands/CreateDomainCmd.java index bd495b3a175..3ca92993c05 100644 --- a/server/src/com/cloud/api/commands/CreateDomainCmd.java +++ b/server/src/com/cloud/api/commands/CreateDomainCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.DomainResponse; import com.cloud.domain.DomainVO; @@ -69,7 +69,7 @@ public class CreateDomainCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { DomainResponse response = new DomainResponse(); DomainVO responseObject = (DomainVO)getResponseObject(); if (responseObject != null) { @@ -83,6 +83,6 @@ public class CreateDomainCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateIPForwardingRuleCmd.java b/server/src/com/cloud/api/commands/CreateIPForwardingRuleCmd.java index 8fa329f90fd..3074808693b 100644 --- a/server/src/com/cloud/api/commands/CreateIPForwardingRuleCmd.java +++ b/server/src/com/cloud/api/commands/CreateIPForwardingRuleCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.FirewallRuleResponse; import com.cloud.network.FirewallRuleVO; import com.cloud.uservm.UserVm; @@ -91,7 +91,7 @@ public class CreateIPForwardingRuleCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { FirewallRuleVO fwRule = (FirewallRuleVO)getResponseObject(); FirewallRuleResponse fwResponse = new FirewallRuleResponse(); @@ -105,6 +105,6 @@ public class CreateIPForwardingRuleCmd extends BaseCmd { fwResponse.setVirtualMachineName(vm.getName()); fwResponse.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(fwResponse); + return fwResponse; } } diff --git a/server/src/com/cloud/api/commands/CreateLoadBalancerRuleCmd.java b/server/src/com/cloud/api/commands/CreateLoadBalancerRuleCmd.java index ef7d2010283..7a5ee6cc800 100644 --- a/server/src/com/cloud/api/commands/CreateLoadBalancerRuleCmd.java +++ b/server/src/com/cloud/api/commands/CreateLoadBalancerRuleCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.LoadBalancerResponse; import com.cloud.network.LoadBalancerVO; @@ -96,7 +96,7 @@ public class CreateLoadBalancerRuleCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { LoadBalancerVO responseObj = (LoadBalancerVO)getResponseObject(); LoadBalancerResponse response = new LoadBalancerResponse(); @@ -112,6 +112,6 @@ public class CreateLoadBalancerRuleCmd extends BaseCmd { response.setDomainName(ApiDBUtils.findDomainById(responseObj.getDomainId()).getName()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateNetworkGroupCmd.java b/server/src/com/cloud/api/commands/CreateNetworkGroupCmd.java index 82ba42720e8..0eeea4f2120 100644 --- a/server/src/com/cloud/api/commands/CreateNetworkGroupCmd.java +++ b/server/src/com/cloud/api/commands/CreateNetworkGroupCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.NetworkGroupResponse; import com.cloud.network.security.NetworkGroupVO; @@ -82,7 +82,7 @@ public class CreateNetworkGroupCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { NetworkGroupVO group = (NetworkGroupVO)getResponseObject(); NetworkGroupResponse response = new NetworkGroupResponse(); @@ -94,6 +94,6 @@ public class CreateNetworkGroupCmd extends BaseCmd { response.setName(group.getName()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreatePodCmd.java b/server/src/com/cloud/api/commands/CreatePodCmd.java index 00bf45ed6d9..0e00c8a7edd 100644 --- a/server/src/com/cloud/api/commands/CreatePodCmd.java +++ b/server/src/com/cloud/api/commands/CreatePodCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.PodResponse; import com.cloud.dc.HostPodVO; @@ -96,7 +96,7 @@ public class CreatePodCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { HostPodVO pod = (HostPodVO)getResponseObject(); PodResponse response = new PodResponse(); @@ -110,6 +110,6 @@ public class CreatePodCmd extends BaseCmd { response.setZoneId(pod.getDataCenterId()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreatePortForwardingServiceCmd.java b/server/src/com/cloud/api/commands/CreatePortForwardingServiceCmd.java index dd1f9e106ed..d960bfad770 100644 --- a/server/src/com/cloud/api/commands/CreatePortForwardingServiceCmd.java +++ b/server/src/com/cloud/api/commands/CreatePortForwardingServiceCmd.java @@ -24,7 +24,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.SecurityGroupResponse; import com.cloud.network.SecurityGroupVO; @@ -82,7 +82,7 @@ public class CreatePortForwardingServiceCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SecurityGroupVO group = (SecurityGroupVO)getResponseObject(); SecurityGroupResponse response = new SecurityGroupResponse(); @@ -94,6 +94,6 @@ public class CreatePortForwardingServiceCmd extends BaseCmd { response.setDomainName(ApiDBUtils.findDomainById(group.getDomainId()).getName()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreatePortForwardingServiceRuleCmd.java b/server/src/com/cloud/api/commands/CreatePortForwardingServiceRuleCmd.java index 1d9eb561b6b..a2cbf1bedbb 100644 --- a/server/src/com/cloud/api/commands/CreatePortForwardingServiceRuleCmd.java +++ b/server/src/com/cloud/api/commands/CreatePortForwardingServiceRuleCmd.java @@ -23,7 +23,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCreateCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.PortForwardingServiceRuleResponse; import com.cloud.network.NetworkRuleConfigVO; @@ -85,7 +85,7 @@ public class CreatePortForwardingServiceRuleCmd extends BaseAsyncCreateCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { NetworkRuleConfigVO netRule = (NetworkRuleConfigVO)getResponseObject(); PortForwardingServiceRuleResponse response = new PortForwardingServiceRuleResponse(); @@ -96,6 +96,6 @@ public class CreatePortForwardingServiceRuleCmd extends BaseAsyncCreateCmd { response.setPublicPort(netRule.getPublicPort()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateServiceOfferingCmd.java b/server/src/com/cloud/api/commands/CreateServiceOfferingCmd.java index 7240d3d1476..89514bcdcb2 100644 --- a/server/src/com/cloud/api/commands/CreateServiceOfferingCmd.java +++ b/server/src/com/cloud/api/commands/CreateServiceOfferingCmd.java @@ -24,7 +24,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ServiceOfferingResponse; import com.cloud.service.ServiceOfferingVO; @@ -114,7 +114,7 @@ public class CreateServiceOfferingCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { ServiceOfferingVO offering = (ServiceOfferingVO)getResponseObject(); ServiceOfferingResponse response = new ServiceOfferingResponse(); @@ -130,6 +130,6 @@ public class CreateServiceOfferingCmd extends BaseCmd { response.setTags(offering.getTags()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateSnapshotCmd.java b/server/src/com/cloud/api/commands/CreateSnapshotCmd.java index b00dd1e5579..1ec76ea0ffc 100644 --- a/server/src/com/cloud/api/commands/CreateSnapshotCmd.java +++ b/server/src/com/cloud/api/commands/CreateSnapshotCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseAsyncCreateCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.SnapshotResponse; import com.cloud.storage.Snapshot.SnapshotType; import com.cloud.storage.SnapshotVO; @@ -80,7 +80,7 @@ public class CreateSnapshotCmd extends BaseAsyncCreateCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SnapshotVO snapshot = (SnapshotVO)getResponseObject(); SnapshotResponse response = new SnapshotResponse(); @@ -103,6 +103,6 @@ public class CreateSnapshotCmd extends BaseAsyncCreateCmd { response.setName(snapshot.getName()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateSnapshotPolicyCmd.java b/server/src/com/cloud/api/commands/CreateSnapshotPolicyCmd.java index 7812e2cdca5..139f222adcc 100644 --- a/server/src/com/cloud/api/commands/CreateSnapshotPolicyCmd.java +++ b/server/src/com/cloud/api/commands/CreateSnapshotPolicyCmd.java @@ -24,7 +24,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.SnapshotPolicyResponse; import com.cloud.storage.SnapshotPolicyVO; @@ -103,7 +103,7 @@ public class CreateSnapshotPolicyCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SnapshotPolicyVO snapshotPolicy = (SnapshotPolicyVO)getResponseObject(); SnapshotPolicyResponse response = new SnapshotPolicyResponse(); @@ -114,6 +114,6 @@ public class CreateSnapshotPolicyCmd extends BaseCmd { response.setVolumeId(snapshotPolicy.getVolumeId()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateStoragePoolCmd.java b/server/src/com/cloud/api/commands/CreateStoragePoolCmd.java index e32e0ffd227..95e4c3645f6 100644 --- a/server/src/com/cloud/api/commands/CreateStoragePoolCmd.java +++ b/server/src/com/cloud/api/commands/CreateStoragePoolCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.StoragePoolResponse; import com.cloud.storage.StoragePoolVO; import com.cloud.storage.StorageStats; @@ -106,7 +106,7 @@ public class CreateStoragePoolCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { StoragePoolVO pool = (StoragePoolVO)getResponseObject(); StoragePoolResponse response = new StoragePoolResponse(); @@ -131,6 +131,6 @@ public class CreateStoragePoolCmd extends BaseCmd { response.setDiskSizeAllocated(used); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateTemplateCmd.java b/server/src/com/cloud/api/commands/CreateTemplateCmd.java index cb3d273c905..7f0cc3f4707 100644 --- a/server/src/com/cloud/api/commands/CreateTemplateCmd.java +++ b/server/src/com/cloud/api/commands/CreateTemplateCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseAsyncCreateCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.TemplateResponse; import com.cloud.dc.DataCenterVO; import com.cloud.storage.GuestOS; @@ -135,7 +135,7 @@ public class CreateTemplateCmd extends BaseAsyncCreateCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { VMTemplateVO template = (VMTemplateVO)getResponseObject(); TemplateResponse response = new TemplateResponse(); @@ -181,6 +181,6 @@ public class CreateTemplateCmd extends BaseAsyncCreateCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateUserCmd.java b/server/src/com/cloud/api/commands/CreateUserCmd.java index fbb74271d62..5a9e1c1a17a 100644 --- a/server/src/com/cloud/api/commands/CreateUserCmd.java +++ b/server/src/com/cloud/api/commands/CreateUserCmd.java @@ -24,7 +24,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.UserResponse; import com.cloud.user.UserAccount; @@ -117,7 +117,7 @@ public class CreateUserCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { UserAccount user = (UserAccount)getResponseObject(); // TODO: user keys? @@ -136,6 +136,6 @@ public class CreateUserCmd extends BaseCmd { response.setUsername(user.getUsername()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } \ No newline at end of file diff --git a/server/src/com/cloud/api/commands/CreateVlanIpRangeCmd.java b/server/src/com/cloud/api/commands/CreateVlanIpRangeCmd.java index 731bb01f957..8e53a3e4323 100644 --- a/server/src/com/cloud/api/commands/CreateVlanIpRangeCmd.java +++ b/server/src/com/cloud/api/commands/CreateVlanIpRangeCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.VlanIpRangeResponse; import com.cloud.dc.VlanVO; @@ -125,7 +125,7 @@ public class CreateVlanIpRangeCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { VlanVO vlan = (VlanVO)getResponseObject(); String domainNameResponse = null; @@ -152,6 +152,6 @@ public class CreateVlanIpRangeCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateVolumeCmd.java b/server/src/com/cloud/api/commands/CreateVolumeCmd.java index 1e24e589429..79f65fef02c 100644 --- a/server/src/com/cloud/api/commands/CreateVolumeCmd.java +++ b/server/src/com/cloud/api/commands/CreateVolumeCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseAsyncCreateCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.VolumeResponse; import com.cloud.storage.DiskOfferingVO; import com.cloud.storage.VolumeVO; @@ -108,7 +108,7 @@ public class CreateVolumeCmd extends BaseAsyncCreateCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { VolumeVO volume = (VolumeVO)getResponseObject(); VolumeResponse response = new VolumeResponse(); @@ -136,6 +136,6 @@ public class CreateVolumeCmd extends BaseAsyncCreateCmd { response.setZoneName(ApiDBUtils.findZoneById(volume.getDataCenterId()).getName()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/CreateZoneCmd.java b/server/src/com/cloud/api/commands/CreateZoneCmd.java index 168d1cced1a..a93a6983966 100644 --- a/server/src/com/cloud/api/commands/CreateZoneCmd.java +++ b/server/src/com/cloud/api/commands/CreateZoneCmd.java @@ -24,7 +24,7 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ZoneResponse; import com.cloud.dc.DataCenterVO; @@ -102,7 +102,7 @@ public class CreateZoneCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { DataCenterVO zone = (DataCenterVO)getResponseObject(); ZoneResponse response = new ZoneResponse(); @@ -116,6 +116,6 @@ public class CreateZoneCmd extends BaseCmd { response.setGuestCidrAddress(zone.getGuestNetworkCidr()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteDiskOfferingCmd.java b/server/src/com/cloud/api/commands/DeleteDiskOfferingCmd.java index 998da358a7c..41602513067 100644 --- a/server/src/com/cloud/api/commands/DeleteDiskOfferingCmd.java +++ b/server/src/com/cloud/api/commands/DeleteDiskOfferingCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteDiskOffering", manager=Manager.ConfigManager) @@ -60,7 +60,7 @@ public class DeleteDiskOfferingCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -71,6 +71,6 @@ public class DeleteDiskOfferingCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteDomainCmd.java b/server/src/com/cloud/api/commands/DeleteDomainCmd.java index 6c702f3f7b1..b7365a2c3b5 100644 --- a/server/src/com/cloud/api/commands/DeleteDomainCmd.java +++ b/server/src/com/cloud/api/commands/DeleteDomainCmd.java @@ -23,7 +23,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.DeleteDomainResponse; @Implementation(method="deleteDomain") @@ -65,13 +65,13 @@ public class DeleteDomainCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { String deleteResult = (String)getResponseObject(); DeleteDomainResponse response = new DeleteDomainResponse(); response.setResult(deleteResult); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteHostCmd.java b/server/src/com/cloud/api/commands/DeleteHostCmd.java index a36d9de581e..6240cc03b80 100644 --- a/server/src/com/cloud/api/commands/DeleteHostCmd.java +++ b/server/src/com/cloud/api/commands/DeleteHostCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @@ -62,7 +62,7 @@ public class DeleteHostCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -73,6 +73,6 @@ public class DeleteHostCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } \ No newline at end of file diff --git a/server/src/com/cloud/api/commands/DeleteIPForwardingRuleCmd.java b/server/src/com/cloud/api/commands/DeleteIPForwardingRuleCmd.java index 977fa5c0c9d..9810d75e6fe 100644 --- a/server/src/com/cloud/api/commands/DeleteIPForwardingRuleCmd.java +++ b/server/src/com/cloud/api/commands/DeleteIPForwardingRuleCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteIpForwardingRule", manager=Manager.NetworkManager) public class DeleteIPForwardingRuleCmd extends BaseCmd { @@ -50,64 +52,17 @@ public class DeleteIPForwardingRuleCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long ruleId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// if (userId == null) { -// userId = Long.valueOf(User.UID_SYSTEM); -// } -// -// FirewallRuleVO fwRule = getManagementServer().findForwardingRuleById(ruleId); -// if (fwRule == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find port forwarding rule " + ruleId); -// } -// -// IPAddressVO ipAddress = getManagementServer().findIPAddressById(fwRule.getPublicIpAddress()); -// if (ipAddress == null) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Unable to find IP address for port forwarding rule " + ruleId); -// } -// -// Account ruleOwner = getManagementServer().findAccountById(ipAddress.getAccountId()); -// if (ruleOwner == null) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Unable to find owning account for port forwarding rule " + ruleId); -// } -// -// // if an admin account was passed in, or no account was passed in, make sure we honor the accountName/domainId parameters -// if (account != null) { -// if (isAdmin(account.getType())) { -// if (!getManagementServer().isChildDomain(account.getDomainId(), ruleOwner.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to delete port forwarding rule " + ruleId + ", permission denied."); -// } -// } else if (account.getId().longValue() != ruleOwner.getId().longValue()) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to delete port forwarding rule " + ruleId + ", permission denied."); -// } -// } -// -// try { -// getManagementServer().deleteRule(ruleId.longValue(), userId.longValue(), ruleOwner.getId().longValue()); -// } catch (InvalidParameterValueException ex1) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to delete port forwarding rule " + ruleId + ", internal error."); -// } catch (PermissionDeniedException ex2) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to delete port forwarding rule " + ruleId + ", permission denied."); -// } catch (InternalErrorException ex3) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Unable to delete port forwarding rule " + ruleId + ", internal error."); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), "true")); -// return returnValues; -// } - + @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteIsoCmd.java b/server/src/com/cloud/api/commands/DeleteIsoCmd.java index ef2a7bc9fb4..ba2404326ce 100644 --- a/server/src/com/cloud/api/commands/DeleteIsoCmd.java +++ b/server/src/com/cloud/api/commands/DeleteIsoCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteIso", manager=Manager.TemplateManager) @@ -71,7 +71,7 @@ public class DeleteIsoCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -82,6 +82,6 @@ public class DeleteIsoCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteLoadBalancerRuleCmd.java b/server/src/com/cloud/api/commands/DeleteLoadBalancerRuleCmd.java index 074834ad3a1..722bda23aa5 100644 --- a/server/src/com/cloud/api/commands/DeleteLoadBalancerRuleCmd.java +++ b/server/src/com/cloud/api/commands/DeleteLoadBalancerRuleCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteLoadBalancerRule", manager=Manager.NetworkManager) public class DeleteLoadBalancerRuleCmd extends BaseAsyncCmd { @@ -49,50 +51,17 @@ public class DeleteLoadBalancerRuleCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long loadBalancerId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// //Verify parameters -// LoadBalancerVO loadBalancer = getManagementServer().findLoadBalancerById(loadBalancerId.longValue()); -// if (loadBalancer == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find load balancer rule, with id " + loadBalancerId); -// } else if (account != null) { -// if (!isAdmin(account.getType())) { -// if (loadBalancer.getAccountId() != account.getId().longValue()) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Account " + account.getAccountName() + " does not own load balancer rule " + loadBalancer.getName() + " (id:" + loadBalancerId + ")"); -// } -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), loadBalancer.getDomainId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to delete load balancer rule " + loadBalancer.getName() + " (id:" + loadBalancerId + "), permission denied."); -// } -// } -// -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// long jobId = getManagementServer().deleteLoadBalancerAsync(userId, loadBalancerId.longValue()); -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DeleteLoadBalancerRule comamnd"); -// } else { -// if (s_logger.isDebugEnabled()) -// s_logger.debug("DeleteLoadBalancerRule command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } - + @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteNetworkGroupCmd.java b/server/src/com/cloud/api/commands/DeleteNetworkGroupCmd.java index dacc92ce50c..d10df9a2adb 100644 --- a/server/src/com/cloud/api/commands/DeleteNetworkGroupCmd.java +++ b/server/src/com/cloud/api/commands/DeleteNetworkGroupCmd.java @@ -6,6 +6,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteNetworkGroup", manager=Manager.NetworkGroupManager) public class DeleteNetworkGroupCmd extends BaseCmd { @@ -47,78 +49,16 @@ public class DeleteNetworkGroupCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName()); -// //Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// String accountName = (String)params.get(BaseCmd.Properties.ACCOUNT.getName()); -// String name = (String)params.get(BaseCmd.Properties.NAME.getName()); -// -// Long accountId = null; -// if ((account == null) || isAdmin(account.getType())) { -// if ((accountName != null) && (domainId != null)) { -// // if it's an admin account, do a quick permission check -// if ((account != null) && !getManagementServer().isChildDomain(account.getDomainId(), domainId)) { -// if (s_logger.isDebugEnabled()) { -// s_logger.debug("Unable to find rules network group " + name + ", permission denied."); -// } -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to network group " + name + ", permission denied."); -// } -// -// Account groupOwner = getManagementServer().findActiveAccount(accountName, domainId); -// if (groupOwner == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find account " + accountName + " in domain " + domainId); -// } -// accountId = groupOwner.getId(); -// } else { -// if (account != null) { -// accountId = account.getId(); -// domainId = account.getDomainId(); -// } -// } -// } else { -// if (account != null) { -// accountId = account.getId(); -// domainId = account.getDomainId(); -// } -// } -// -// if (accountId == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find account for network group " + name + "; failed to delete group."); -// } -// -// NetworkGroupVO sg = getManagementServer().findNetworkGroupByName(accountId, name); -// if (sg == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find network group " + name + "; failed to delete group."); -// } -// -// try { -// getManagementServer().deleteNetworkGroup(sg.getId(), accountId); -// } catch (ResourceInUseException ex) { -// if (s_logger.isDebugEnabled()) { -// s_logger.debug("Failed to delete network group " + name + " for account " + accountId + ", group is not empty."); -// } -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to delete network group " + name + "; group is not empty."); -// } catch (PermissionDeniedException pde) { -// if (s_logger.isDebugEnabled()) { -// s_logger.debug("Failed to delete network group " + name + " for account " + accountId + ", default group cannot be deleted"); -// } -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to delete network group " + name + "; default group cannot be deleted"); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), "true")); -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + SuccessResponse response = new SuccessResponse(); + response.setSuccess(Boolean.TRUE); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeletePodCmd.java b/server/src/com/cloud/api/commands/DeletePodCmd.java index 69699a0e210..1a2d33e8fe2 100644 --- a/server/src/com/cloud/api/commands/DeletePodCmd.java +++ b/server/src/com/cloud/api/commands/DeletePodCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="deletePod", manager=Manager.ConfigManager) @@ -59,7 +59,7 @@ public class DeletePodCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -70,6 +70,6 @@ public class DeletePodCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeletePoolCmd.java b/server/src/com/cloud/api/commands/DeletePoolCmd.java index fcab91393d8..fd7a59b3299 100644 --- a/server/src/com/cloud/api/commands/DeletePoolCmd.java +++ b/server/src/com/cloud/api/commands/DeletePoolCmd.java @@ -6,8 +6,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="deletePool", manager=Manager.StorageManager) @@ -42,7 +42,7 @@ public class DeletePoolCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -53,6 +53,6 @@ public class DeletePoolCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeletePortForwardingServiceCmd.java b/server/src/com/cloud/api/commands/DeletePortForwardingServiceCmd.java index 0ac0661e528..b8e883b895f 100644 --- a/server/src/com/cloud/api/commands/DeletePortForwardingServiceCmd.java +++ b/server/src/com/cloud/api/commands/DeletePortForwardingServiceCmd.java @@ -25,8 +25,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteSecurityGroup", manager=Manager.ManagementServer) @@ -59,7 +59,7 @@ public class DeletePortForwardingServiceCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -70,6 +70,6 @@ public class DeletePortForwardingServiceCmd extends BaseAsyncCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeletePortForwardingServiceRuleCmd.java b/server/src/com/cloud/api/commands/DeletePortForwardingServiceRuleCmd.java index 554fbaab05e..25099844831 100644 --- a/server/src/com/cloud/api/commands/DeletePortForwardingServiceRuleCmd.java +++ b/server/src/com/cloud/api/commands/DeletePortForwardingServiceRuleCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteNetworkRuleConfig", manager=Manager.NetworkManager) public class DeletePortForwardingServiceRuleCmd extends BaseCmd { @@ -38,7 +40,6 @@ public class DeletePortForwardingServiceRuleCmd extends BaseCmd { @Parameter(name="id", type=CommandType.LONG, required=true) private Long id; - ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -47,48 +48,21 @@ public class DeletePortForwardingServiceRuleCmd extends BaseCmd { return id; } - ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Long netRuleId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// -// //If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// try { -// long jobId = getManagementServer().deleteNetworkRuleConfigAsync(userId, account, netRuleId); -// -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DeletePortForwardingServiceRuleCmd command"); -// } else { -// if (s_logger.isDebugEnabled()) -// s_logger.debug("DeletePortForwardingServiceRuleCmd command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } catch (PermissionDeniedException ex) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, ex.getMessage()); -// } -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeletePreallocatedLunCmd.java b/server/src/com/cloud/api/commands/DeletePreallocatedLunCmd.java index 1ab35fb021a..bd312b06df3 100644 --- a/server/src/com/cloud/api/commands/DeletePreallocatedLunCmd.java +++ b/server/src/com/cloud/api/commands/DeletePreallocatedLunCmd.java @@ -20,7 +20,7 @@ package com.cloud.api.commands; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.DeletePreallocatedLunResponse; @Implementation(method="unregisterPreallocatedLun") @@ -52,13 +52,13 @@ public class DeletePreallocatedLunCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { Boolean result = (Boolean)getResponseObject(); DeletePreallocatedLunResponse response = new DeletePreallocatedLunResponse(); response.setSuccess(result); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteServiceOfferingCmd.java b/server/src/com/cloud/api/commands/DeleteServiceOfferingCmd.java index b7b84cf7209..6527d000098 100644 --- a/server/src/com/cloud/api/commands/DeleteServiceOfferingCmd.java +++ b/server/src/com/cloud/api/commands/DeleteServiceOfferingCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteServiceOffering", manager=Manager.ConfigManager) public class DeleteServiceOfferingCmd extends BaseCmd{ @@ -55,45 +57,13 @@ public class DeleteServiceOfferingCmd extends BaseCmd{ public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long offeringId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// -// if (userId == null) { -// userId = Long.valueOf(User.UID_SYSTEM); -// } -// -// //Verify service offering id -// ServiceOfferingVO offering = getManagementServer().findServiceOfferingById(offeringId); -// if (offering == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find service offering " + offeringId); -// } else if (offering.getRemoved() != null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find service offering " + offeringId); -// } -// -// boolean success = false; -// try { -// success = getManagementServer().deleteServiceOffering(userId, offeringId); -// } catch (Exception ex) { -// s_logger.error("Exception deleting service offering", ex); -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to delete service offering " + offeringId + ": internal error."); -// } -// -// List> returnValues = new ArrayList>(); -// if (success) { -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), Boolean.TRUE)); -// } else { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to delete serviceoffering " + offeringId); -// } -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteSnapshotCmd.java b/server/src/com/cloud/api/commands/DeleteSnapshotCmd.java index 5ed19768130..51f2dc7603a 100644 --- a/server/src/com/cloud/api/commands/DeleteSnapshotCmd.java +++ b/server/src/com/cloud/api/commands/DeleteSnapshotCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteSnapshot", manager=Manager.SnapshotManager) public class DeleteSnapshotCmd extends BaseAsyncCmd { @@ -65,55 +67,17 @@ public class DeleteSnapshotCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long snapshotId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// -// //Verify parameters -// Snapshot snapshotCheck = getManagementServer().findSnapshotById(snapshotId.longValue()); -// if (snapshotCheck == null) { -// throw new ServerApiException (BaseCmd.SNAPSHOT_INVALID_PARAM_ERROR, "unable to find a snapshot with id " + snapshotId); -// } -// -// // If an account was passed in, make sure that it matches the account of the snapshot -// Account snapshotOwner = getManagementServer().findAccountById(snapshotCheck.getAccountId()); -// if (snapshotOwner == null) { -// throw new ServerApiException(BaseCmd.SNAPSHOT_INVALID_PARAM_ERROR, "Snapshot id " + snapshotId + " does not have a valid account"); -// } -// checkAccountPermissions(params, snapshotOwner.getId(), snapshotOwner.getDomainId(), "snapshot", snapshotId); -// -// //If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// try { -// long jobId = getManagementServer().deleteSnapshotAsync(userId, snapshotId); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DeleteSnapshot comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("DeleteSnapshot command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// -// return returnValues; -// -// } catch (Exception ex) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "internal error deleting snapshot " + ex.getMessage()); -// } -// } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteSnapshotPoliciesCmd.java b/server/src/com/cloud/api/commands/DeleteSnapshotPoliciesCmd.java index 644527b0c0f..ec02cc20fcf 100644 --- a/server/src/com/cloud/api/commands/DeleteSnapshotPoliciesCmd.java +++ b/server/src/com/cloud/api/commands/DeleteSnapshotPoliciesCmd.java @@ -26,6 +26,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteSnapshotPolicies", manager=Manager.SnapshotManager) public class DeleteSnapshotPoliciesCmd extends BaseCmd { @@ -75,75 +77,17 @@ public class DeleteSnapshotPoliciesCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } - -// @Override -// public List> execute(Map params) { -// Long policyId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// String policyIds = (String)params.get(BaseCmd.Properties.IDS.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// if ((policyId == null) && (policyIds == null)) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "No policy id (or list off ids) specified."); -// } -// -// List policyIdList = new ArrayList(); -// -// if (policyId != null) { -// policyIdList.add(policyId); -// } else if (policyIds != null) { -// StringTokenizer st = new StringTokenizer(policyIds, ","); -// while (st.hasMoreTokens()) { -// String token = st.nextToken(); -// try { -// Long nextId = Long.parseLong(token); -// policyIdList.add(nextId); -// } catch (NumberFormatException nfe) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "The policy id " + token + " is not a valid parameter."); -// } -// } -// } -// -// ManagementServer managementServer = getManagementServer(); -// for (Long policy : policyIdList) { -// SnapshotPolicyVO snapshotPolicyVO = managementServer.findSnapshotPolicyById(policy); -// if (snapshotPolicyVO == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Policy id given: " + policy + " does not exist"); -// } -// VolumeVO volume = managementServer.findVolumeById(snapshotPolicyVO.getVolumeId()); -// if (volume == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Policy id given: " + policy + " does not belong to a valid volume"); -// } -// -// // If an account was passed in, make sure that it matches the account of the volume -// checkAccountPermissions(params, volume.getAccountId(), volume.getDomainId(), "volume", volume.getId()); -// } -// -// try { -// boolean success = true; -// if (policyIdList.size() > 0) { -// success = managementServer.deleteSnapshotPolicies(userId, policyIdList); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), Boolean.valueOf(success).toString())); -// return returnValues; -// -// } catch (InvalidParameterValueException ex) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Error deleting snapshot policy: " + ex.getMessage()); -// } -// } } diff --git a/server/src/com/cloud/api/commands/DeleteTemplateCmd.java b/server/src/com/cloud/api/commands/DeleteTemplateCmd.java index bb55da704a6..294da8379ad 100644 --- a/server/src/com/cloud/api/commands/DeleteTemplateCmd.java +++ b/server/src/com/cloud/api/commands/DeleteTemplateCmd.java @@ -22,8 +22,10 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.SuccessResponse; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; @Implementation(method="deleteTemplate", manager=Manager.TemplateManager) public class DeleteTemplateCmd extends BaseCmd { @@ -68,59 +70,11 @@ public class DeleteTemplateCmd extends BaseCmd { } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } - -// @Override -// public List> execute(Map params) { -// Long templateId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long zoneId = (Long)params.get(BaseCmd.Properties.ZONE_ID.getName()); -// -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// VMTemplateVO template = getManagementServer().findTemplateById(templateId.longValue()); -// if (template == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find template with id " + templateId); -// } -// -// if (account != null) { -// if (!isAdmin(account.getType())) { -// if (template.getAccountId() != account.getId()) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "unable to delete template with id " + templateId); -// } -// } else { -// Account templateOwner = getManagementServer().findAccountById(template.getAccountId()); -// if ((templateOwner == null) || !getManagementServer().isChildDomain(account.getDomainId(), templateOwner.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to delete template with id " + templateId + ", permission denied."); -// } -// } -// } -// -// try { -// long jobId = getManagementServer().deleteTemplateAsync(userId, templateId, zoneId); -// -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DeleteTemplate command"); -// } else { -// if(s_logger.isDebugEnabled()) { -// s_logger.debug("DeleteTemplate command has been accepted, job id: " + jobId); -// } -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// returnValues.add(new Pair(BaseCmd.Properties.TEMPLATE_ID.getName(), Long.valueOf(templateId))); -// -// return returnValues; -// } catch (Exception ex) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to delete template: " + ex.getMessage()); -// } -// -// } } diff --git a/server/src/com/cloud/api/commands/DeleteUserCmd.java b/server/src/com/cloud/api/commands/DeleteUserCmd.java index 7524327b025..3bf852a976b 100644 --- a/server/src/com/cloud/api/commands/DeleteUserCmd.java +++ b/server/src/com/cloud/api/commands/DeleteUserCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteUser", manager=Manager.ManagementServer) public class DeleteUserCmd extends BaseAsyncCmd { @@ -55,36 +57,17 @@ public class DeleteUserCmd extends BaseAsyncCmd { return s_name; } + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// //Verify that the user exists in the system -// User user = getManagementServer().getUser(userId.longValue()); -// if (user == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find user " + userId); -// } -// -// // If the user is a System user, return an error. We do not allow this -// Account account = getManagementServer().findAccountById(user.getAccountId()); -// if ((account != null) && (account.getId() == Account.ACCOUNT_ID_SYSTEM)) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "user id : " + userId + " is a system account, delete is not allowed"); -// } -// -// long jobId = getManagementServer().deleteUserAsync(userId.longValue()); -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteVlanIpRangeCmd.java b/server/src/com/cloud/api/commands/DeleteVlanIpRangeCmd.java index 02548691dce..a57afa0d802 100644 --- a/server/src/com/cloud/api/commands/DeleteVlanIpRangeCmd.java +++ b/server/src/com/cloud/api/commands/DeleteVlanIpRangeCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteVlanIpRange", manager=Manager.ConfigManager) public class DeleteVlanIpRangeCmd extends BaseCmd { @@ -38,7 +40,6 @@ public class DeleteVlanIpRangeCmd extends BaseCmd { @Parameter(name="id", type=CommandType.LONG, required=true) private Long id; - ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -47,42 +48,21 @@ public class DeleteVlanIpRangeCmd extends BaseCmd { return id; } - ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } - -// @Override -// public List> execute(Map params) { -// Long vlanDbId = (Long) params.get(BaseCmd.Properties.ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// -// if (userId == null) { -// userId = Long.valueOf(User.UID_SYSTEM); -// } -// -// // Delete the VLAN and its public IP addresses -// boolean success = false; -// try { -// success = getManagementServer().deleteVlanAndPublicIpRange(userId, vlanDbId); -// } catch (InvalidParameterValueException ex) { -// s_logger.error("Exception deleting VLAN", ex); -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to delete VLAN: " + ex.getMessage()); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), success)); -// return returnValues; -// } } diff --git a/server/src/com/cloud/api/commands/DeleteVolumeCmd.java b/server/src/com/cloud/api/commands/DeleteVolumeCmd.java index 55e0eb0b321..02f3245dc75 100644 --- a/server/src/com/cloud/api/commands/DeleteVolumeCmd.java +++ b/server/src/com/cloud/api/commands/DeleteVolumeCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteVolume", manager=Manager.StorageManager) public class DeleteVolumeCmd extends BaseCmd { @@ -51,6 +53,7 @@ public class DeleteVolumeCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @@ -58,51 +61,13 @@ public class DeleteVolumeCmd extends BaseCmd { public static String getResultObjectName() { return "volume"; } - -// @Override -// public List> execute(Map params) { -// Account account = (Account) params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long volumeId = (Long) params.get(BaseCmd.Properties.ID.getName()); -// -// boolean isAdmin; -// if (account == null) { -// // Admin API call -// isAdmin = true; -// } else { -// // User API call -// isAdmin = isAdmin(account.getType()); -// } -// -// // Check that the volume ID is valid -// VolumeVO volume = getManagementServer().findVolumeById(volumeId); -// if (volume == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find volume with ID: " + volumeId); -// } -// -// // If the account is not an admin, check that the volume is owned by the account that was passed in -// if (!isAdmin) { -// if (account.getId() != volume.getAccountId()) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find volume with ID: " + volumeId + " for account: " + account.getAccountName()); -// } -// } else if ((account != null) && !getManagementServer().isChildDomain(account.getDomainId(), volume.getDomainId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to delete volume with id " + volumeId + ", permission denied."); -// } -// -// try { -// getManagementServer().destroyVolume(volumeId); -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), "true")); -// -// return returnValues; -// } catch (Exception ex) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to delete volume: " + ex.getMessage()); -// } -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeleteZoneCmd.java b/server/src/com/cloud/api/commands/DeleteZoneCmd.java index c6bee5e3cab..a9eccd4de7b 100644 --- a/server/src/com/cloud/api/commands/DeleteZoneCmd.java +++ b/server/src/com/cloud/api/commands/DeleteZoneCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="deleteZone", manager=Manager.ConfigManager) public class DeleteZoneCmd extends BaseCmd { @@ -52,42 +54,17 @@ public class DeleteZoneCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } -// @Override -// public List> execute(Map params) { -// Long zoneId = (Long) params.get(BaseCmd.Properties.ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// -// if (userId == null) { -// userId = Long.valueOf(User.UID_SYSTEM); -// } -// -// //verify input parameters -// DataCenterVO zone = getManagementServer().findDataCenterById(zoneId); -// if (zone == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find zone by id " + zoneId); -// } -// -// try { -// getManagementServer().deleteZone(userId, zoneId); -// } catch (Exception ex) { -// s_logger.error("Exception deleting zone", ex); -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, ex.getMessage()); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), "true")); -// -// return returnValues; -// } - - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DeployVMCmd.java b/server/src/com/cloud/api/commands/DeployVMCmd.java index 532a5eabd97..61b3c02ade0 100644 --- a/server/src/com/cloud/api/commands/DeployVMCmd.java +++ b/server/src/com/cloud/api/commands/DeployVMCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.UserVmResponse; import com.cloud.offering.ServiceOffering; import com.cloud.storage.VMTemplateVO; @@ -154,7 +154,7 @@ public class DeployVMCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { UserVm userVm = (UserVm)getResponseObject(); UserVmResponse response = new UserVmResponse(); @@ -250,6 +250,6 @@ public class DeployVMCmd extends BaseAsyncCmd { response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(userVm.getId())); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/DestroyConsoleProxyCmd.java b/server/src/com/cloud/api/commands/DestroyConsoleProxyCmd.java index fe1623de7fe..1cbc8666043 100644 --- a/server/src/com/cloud/api/commands/DestroyConsoleProxyCmd.java +++ b/server/src/com/cloud/api/commands/DestroyConsoleProxyCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="destroyConsoleProxy", manager=Manager.ConsoleProxyManager) public class DestroyConsoleProxyCmd extends BaseAsyncCmd { @@ -52,36 +54,17 @@ public class DestroyConsoleProxyCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// public List> execute(Map params) { -// Long proxyId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// // verify parameters -// ConsoleProxyVO proxy = getManagementServer().findConsoleProxyById(proxyId); -// if (proxy == null) { -// throw new ServerApiException (BaseCmd.PARAM_ERROR, "unable to find a console proxy with id " + proxyId); -// } -// -// long jobId = getManagementServer().destroyConsoleProxyAsync(proxyId.longValue()); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DestroyConsoleProxy comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("DestroyConsoleProxy command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DestroyVMCmd.java b/server/src/com/cloud/api/commands/DestroyVMCmd.java index 81ab128f738..86df37c735a 100644 --- a/server/src/com/cloud/api/commands/DestroyVMCmd.java +++ b/server/src/com/cloud/api/commands/DestroyVMCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="destroyVm", manager=Manager.UserVmManager) public class DestroyVMCmd extends BaseAsyncCmd { @@ -38,7 +40,6 @@ public class DestroyVMCmd extends BaseAsyncCmd { @Parameter(name="id", type=CommandType.LONG, required=true) private Long id; - ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -47,7 +48,6 @@ public class DestroyVMCmd extends BaseAsyncCmd { return id; } - ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// @@ -55,52 +55,14 @@ public class DestroyVMCmd extends BaseAsyncCmd { public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Long vmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// // Verify input parameters -// UserVmVO vmInstance = getManagementServer().findUserVMInstanceById(vmId.longValue()); -// if (vmInstance == null) { -// throw new ServerApiException (BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId); -// } -// -// if (account != null) { -// if (!isAdmin(account.getType())) { -// if (account.getId().longValue() != vmInstance.getAccountId()) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId + "for this account"); -// } -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), vmInstance.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to destroy virtual machine with id " + vmId + ", permission denied."); -// } -// } -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// long jobId = getManagementServer().destroyVirtualMachineAsync(userId.longValue(), vmId.longValue()); -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DestroyVM command"); -// } else { -// if (s_logger.isDebugEnabled()) -// s_logger.debug("DestroyVM command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DetachIsoCmd.java b/server/src/com/cloud/api/commands/DetachIsoCmd.java index cee55f7bc4f..cc8fc3aa045 100644 --- a/server/src/com/cloud/api/commands/DetachIsoCmd.java +++ b/server/src/com/cloud/api/commands/DetachIsoCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="detachIso", manager=Manager.TemplateManager) public class DetachIsoCmd extends BaseAsyncCmd { @@ -56,61 +58,13 @@ public class DetachIsoCmd extends BaseAsyncCmd { public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Account account = (Account) params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long userId = (Long) params.get(BaseCmd.Properties.USER_ID.getName()); -// Long vmId = (Long) params.get(BaseCmd.Properties.VIRTUAL_MACHINE_ID.getName()); -// -// // Verify input parameters -// UserVmVO vmInstanceCheck = getManagementServer().findUserVMInstanceById(vmId.longValue()); -// if (vmInstanceCheck == null) { -// throw new ServerApiException (BaseCmd.VM_INVALID_PARAM_ERROR, "Unable to find a virtual machine with id " + vmId); -// } -// -// if (account != null) { -// if (!isAdmin(account.getType())) { -// if (account.getId().longValue() != vmInstanceCheck.getAccountId()) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to detach ISO from virtual machine " + vmInstanceCheck.getName() + " for this account"); -// } -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), vmInstanceCheck.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to detach ISO from virtual machine " + vmInstanceCheck.getName() + ", permission denied."); -// } -// } -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) -// userId = new Long(1); -// -// try { -// long jobId = getManagementServer().detachISOFromVMAsync(vmId.longValue(), userId); -// -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for AttachIsoCmd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("AttachIsoCmd has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// -// return returnValues; -// } catch (ServerApiException apiEx) { -// s_logger.error("Exception detaching ISO", apiEx); -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to detach ISO: " + apiEx.getDescription()); -// } catch (Exception ex) { -// s_logger.error("Exception detaching ISO", ex); -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to detach ISO: " + ex.getMessage()); -// } -// -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DetachVolumeCmd.java b/server/src/com/cloud/api/commands/DetachVolumeCmd.java index 24293d5e876..3feb8a22914 100644 --- a/server/src/com/cloud/api/commands/DetachVolumeCmd.java +++ b/server/src/com/cloud/api/commands/DetachVolumeCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="detachVolumeFromVM", manager=Manager.UserVmManager) public class DetachVolumeCmd extends BaseAsyncCmd { @@ -51,6 +53,7 @@ public class DetachVolumeCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @@ -58,59 +61,13 @@ public class DetachVolumeCmd extends BaseAsyncCmd { public static String getResultObjectName() { return "volume"; } - -// @Override -// public List> execute(Map params) { -// Account account = (Account) params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long volumeId = (Long) params.get(BaseCmd.Properties.ID.getName()); -// -// boolean isAdmin; -// if (account == null) { -// // Admin API call -// isAdmin = true; -// } else { -// // User API call -// isAdmin = isAdmin(account.getType()); -// } -// -// // Check that the volume ID is valid -// VolumeVO volume = getManagementServer().findVolumeById(volumeId); -// if (volume == null) -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find volume with ID: " + volumeId); -// -// // If the account is not an admin, check that the volume is owned by the account that was passed in -// if (!isAdmin) { -// if (account.getId() != volume.getAccountId()) -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find volume with ID: " + volumeId + " for account: " + account.getAccountName()); -// } else if (account != null) { -// if (!getManagementServer().isChildDomain(account.getDomainId(), volume.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to detach volume with ID: " + volumeId + ", permission denied."); -// } -// } -// -// try { -// long jobId = getManagementServer().detachVolumeFromVMAsync(volumeId); -// -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DetachVolume comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("DetachVolume command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// -// return returnValues; -// } catch (Exception ex) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to detach volume: " + ex.getMessage()); -// } -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } \ No newline at end of file diff --git a/server/src/com/cloud/api/commands/DisableAccountCmd.java b/server/src/com/cloud/api/commands/DisableAccountCmd.java index 73236e3fe28..c5658ed234d 100644 --- a/server/src/com/cloud/api/commands/DisableAccountCmd.java +++ b/server/src/com/cloud/api/commands/DisableAccountCmd.java @@ -23,6 +23,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="disableAccount", manager=Manager.ManagementServer) public class DisableAccountCmd extends BaseCmd { @@ -61,41 +63,11 @@ public class DisableAccountCmd extends BaseCmd { } @Override - public String getResponse() { - // TODO: implement - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } - -// @Override -// public List> execute(Map params) { -// Account adminAccount = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName()); -// String accountName = (String)params.get(BaseCmd.Properties.ACCOUNT.getName()); -// -// if ((adminAccount != null) && !getManagementServer().isChildDomain(adminAccount.getDomainId(), domainId)) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Failed to disable account " + accountName + " in domain " + domainId + ", permission denied."); -// } -// -// Account account = getManagementServer().findActiveAccount(accountName, domainId); -// if (account == null) { -// throw new ServerApiException (BaseCmd.PARAM_ERROR, "Unable to find active account with name " + accountName + " in domain " + domainId); -// } -// -// // don't allow modify system account -// if (account.getId().longValue() == Account.ACCOUNT_ID_SYSTEM) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "can not disable system account"); -// } -// -// long jobId = getManagementServer().disableAccountAsync(account.getId().longValue()); -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DisableAccount comamnd"); -// } else { -// if (s_logger.isDebugEnabled()) -// s_logger.debug("DisableAccount command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } } diff --git a/server/src/com/cloud/api/commands/DisableUserCmd.java b/server/src/com/cloud/api/commands/DisableUserCmd.java index 76892ca0a8e..aea93abebe9 100644 --- a/server/src/com/cloud/api/commands/DisableUserCmd.java +++ b/server/src/com/cloud/api/commands/DisableUserCmd.java @@ -22,6 +22,8 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; public class DisableUserCmd extends BaseCmd { public static final Logger s_logger = Logger.getLogger(DisableUserCmd.class.getName()); @@ -52,46 +54,13 @@ public class DisableUserCmd extends BaseCmd { public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Account adminAccount = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long id = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// //Check if user with id exists in the system -// User user = getManagementServer().findUserById(id); -// if (user == null) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to find user by id"); -// } else if (user.getRemoved() != null) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to find user by id"); -// } -// -// // If the user is a System user, return an error. We do not allow this -// Account account = getManagementServer().findAccountById(user.getAccountId()); -// if ((account != null) && (account.getId().longValue() == Account.ACCOUNT_ID_SYSTEM)) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "user id : " + id + " is a system user, disabling is not allowed"); -// } -// -// if ((adminAccount != null) && !getManagementServer().isChildDomain(adminAccount.getDomainId(), account.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to disable user " + id + ", permission denied."); -// } -// -// long jobId = getManagementServer().disableUserAsync(id.longValue()); -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for DisableUser comamnd"); -// } else { -// if (s_logger.isDebugEnabled()) -// s_logger.debug("DisableUser command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } - + @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/DisassociateIPAddrCmd.java b/server/src/com/cloud/api/commands/DisassociateIPAddrCmd.java index 9486f523644..2f6f31f5ff8 100644 --- a/server/src/com/cloud/api/commands/DisassociateIPAddrCmd.java +++ b/server/src/com/cloud/api/commands/DisassociateIPAddrCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="disassociateIpAddress", manager=Manager.NetworkManager) public class DisassociateIPAddrCmd extends BaseCmd { @@ -52,62 +54,17 @@ public class DisassociateIPAddrCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// String ipAddress = (String)params.get(BaseCmd.Properties.IP_ADDRESS.getName()); -// boolean result = false; -// -// // Verify input parameters -// Account accountByIp = getManagementServer().findAccountByIpAddress(ipAddress); -// if(accountByIp == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find account owner for ip " + ipAddress); -// } -// -// Long accountId = accountByIp.getId(); -// if (account != null) { -// if (!isAdmin(account.getType())) { -// if (account.getId().longValue() != accountId.longValue()) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "account " + account.getAccountName() + " doesn't own ip address " + ipAddress); -// } -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), accountByIp.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to disassociate IP address " + ipAddress + ", permission denied."); -// } -// } -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// try { -// result = getManagementServer().disassociateIpAddress(userId.longValue(), accountId.longValue(), ipAddress); -// } catch (PermissionDeniedException ex) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, ex.getMessage()); -// } catch (IllegalArgumentException ex1) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, ex1.getMessage()); -// } catch (Exception ex2) { -// throw new ServerApiException(BaseCmd.NET_IP_DIASSOC_ERROR, "unable to disassociate ip address"); -// } -// -// if (result == false) { -// throw new ServerApiException(BaseCmd.NET_IP_DIASSOC_ERROR, "unable to disassociate ip address"); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), Boolean.valueOf(result).toString())); -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/EnableAccountCmd.java b/server/src/com/cloud/api/commands/EnableAccountCmd.java index 76399d35df2..609d3e08bf4 100644 --- a/server/src/com/cloud/api/commands/EnableAccountCmd.java +++ b/server/src/com/cloud/api/commands/EnableAccountCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="enableAccount", manager=Manager.ManagementServer) @@ -67,7 +67,7 @@ public class EnableAccountCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -78,6 +78,6 @@ public class EnableAccountCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/EnableUserCmd.java b/server/src/com/cloud/api/commands/EnableUserCmd.java index 0b842c83ce2..343d9ba2eee 100644 --- a/server/src/com/cloud/api/commands/EnableUserCmd.java +++ b/server/src/com/cloud/api/commands/EnableUserCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="enableUser", manager=Manager.ManagementServer) @@ -59,7 +59,7 @@ public class EnableUserCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -70,6 +70,6 @@ public class EnableUserCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/GetCloudIdentifierCmd.java b/server/src/com/cloud/api/commands/GetCloudIdentifierCmd.java index 6dd9f65a2d8..d347e346c68 100644 --- a/server/src/com/cloud/api/commands/GetCloudIdentifierCmd.java +++ b/server/src/com/cloud/api/commands/GetCloudIdentifierCmd.java @@ -26,8 +26,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.CloudIdentifierResponse; @Implementation(method="getCloudIdentifierResponse", manager=Manager.ManagementServer) @@ -61,7 +61,7 @@ public class GetCloudIdentifierCmd extends BaseCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { CloudIdentifierResponse response = new CloudIdentifierResponse(); ArrayList responseObject = (ArrayList)getResponseObject(); if (responseObject != null) { @@ -72,6 +72,6 @@ public class GetCloudIdentifierCmd extends BaseCmd { throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to add config"); } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } \ No newline at end of file diff --git a/server/src/com/cloud/api/commands/ListAccountsCmd.java b/server/src/com/cloud/api/commands/ListAccountsCmd.java index 5ea40098d0f..79b4ccf43dc 100644 --- a/server/src/com/cloud/api/commands/ListAccountsCmd.java +++ b/server/src/com/cloud/api/commands/ListAccountsCmd.java @@ -29,9 +29,9 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; import com.cloud.api.response.AccountResponse; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.ListResponse; import com.cloud.configuration.ResourceCount.ResourceType; import com.cloud.server.Criteria; @@ -115,7 +115,7 @@ public class ListAccountsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List accounts = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -229,6 +229,6 @@ public class ListAccountsCmd extends BaseListCmd { response.setResponses(accountResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListAlertsCmd.java b/server/src/com/cloud/api/commands/ListAlertsCmd.java index 5e96b7dcacb..fac4328787a 100644 --- a/server/src/com/cloud/api/commands/ListAlertsCmd.java +++ b/server/src/com/cloud/api/commands/ListAlertsCmd.java @@ -27,8 +27,8 @@ import com.cloud.alert.AlertVO; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.response.AlertResponse; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.ListResponse; @Implementation(method="searchForAlerts") @@ -65,7 +65,7 @@ public class ListAlertsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List alertList = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -82,6 +82,6 @@ public class ListAlertsCmd extends BaseListCmd { response.setResponses(alertResponseList); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListAsyncJobsCmd.java b/server/src/com/cloud/api/commands/ListAsyncJobsCmd.java index ae90310335c..ec1383334bc 100644 --- a/server/src/com/cloud/api/commands/ListAsyncJobsCmd.java +++ b/server/src/com/cloud/api/commands/ListAsyncJobsCmd.java @@ -24,7 +24,7 @@ import java.util.List; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.AsyncJobResponse; import com.cloud.api.response.ListResponse; import com.cloud.async.AsyncJobVO; @@ -73,7 +73,7 @@ public class ListAsyncJobsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List jobs = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -98,6 +98,6 @@ public class ListAsyncJobsCmd extends BaseListCmd { response.setResponses(jobResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListCapacityCmd.java b/server/src/com/cloud/api/commands/ListCapacityCmd.java index 283b3a17305..1f7ee106734 100644 --- a/server/src/com/cloud/api/commands/ListCapacityCmd.java +++ b/server/src/com/cloud/api/commands/ListCapacityCmd.java @@ -33,7 +33,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.CapacityResponse; import com.cloud.api.response.ListResponse; import com.cloud.capacity.CapacityVO; @@ -106,7 +106,7 @@ public class ListCapacityCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List capacities = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -137,7 +137,7 @@ public class ListCapacityCmd extends BaseListCmd { response.setResponses(capacityResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } private List sumCapacities(List hostCapacities) { diff --git a/server/src/com/cloud/api/commands/ListCfgsByCmd.java b/server/src/com/cloud/api/commands/ListCfgsByCmd.java index ab4a06ee5ba..aca441af383 100644 --- a/server/src/com/cloud/api/commands/ListCfgsByCmd.java +++ b/server/src/com/cloud/api/commands/ListCfgsByCmd.java @@ -26,7 +26,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ConfigurationResponse; import com.cloud.api.response.ListResponse; import com.cloud.configuration.ConfigurationVO; @@ -71,7 +71,7 @@ public class ListCfgsByCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List configurations = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -89,6 +89,6 @@ public class ListCfgsByCmd extends BaseListCmd { response.setResponses(configResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListClustersCmd.java b/server/src/com/cloud/api/commands/ListClustersCmd.java index ea3242a4bfa..4fa8610cc18 100644 --- a/server/src/com/cloud/api/commands/ListClustersCmd.java +++ b/server/src/com/cloud/api/commands/ListClustersCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ClusterResponse; import com.cloud.api.response.ListResponse; import com.cloud.dc.ClusterVO; @@ -87,7 +87,7 @@ public class ListClustersCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List clusters = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -109,6 +109,6 @@ public class ListClustersCmd extends BaseListCmd { response.setResponses(clusterResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java b/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java index adf6f5b5dff..c6752067d2a 100644 --- a/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java +++ b/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.DiskOfferingResponse; import com.cloud.api.response.ListResponse; import com.cloud.domain.DomainVO; @@ -80,7 +80,7 @@ public class ListDiskOfferingsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List offerings = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -103,6 +103,6 @@ public class ListDiskOfferingsCmd extends BaseListCmd { response.setResponses(diskOfferingResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListDomainChildrenCmd.java b/server/src/com/cloud/api/commands/ListDomainChildrenCmd.java index df14ce23b8b..4fdb6d342b6 100644 --- a/server/src/com/cloud/api/commands/ListDomainChildrenCmd.java +++ b/server/src/com/cloud/api/commands/ListDomainChildrenCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.DomainResponse; import com.cloud.api.response.ListResponse; import com.cloud.domain.DomainVO; @@ -79,7 +79,7 @@ public class ListDomainChildrenCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List domains = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -100,6 +100,6 @@ public class ListDomainChildrenCmd extends BaseListCmd { response.setResponses(domainResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListDomainsCmd.java b/server/src/com/cloud/api/commands/ListDomainsCmd.java index 417aa5bb242..1a7a3068db2 100644 --- a/server/src/com/cloud/api/commands/ListDomainsCmd.java +++ b/server/src/com/cloud/api/commands/ListDomainsCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.DomainResponse; import com.cloud.api.response.ListResponse; import com.cloud.domain.DomainVO; @@ -79,7 +79,7 @@ public class ListDomainsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List domains = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -100,6 +100,6 @@ public class ListDomainsCmd extends BaseListCmd { response.setResponses(domainResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListEventsCmd.java b/server/src/com/cloud/api/commands/ListEventsCmd.java index 96b3b163999..c423a703525 100644 --- a/server/src/com/cloud/api/commands/ListEventsCmd.java +++ b/server/src/com/cloud/api/commands/ListEventsCmd.java @@ -28,7 +28,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.EventResponse; import com.cloud.api.response.ListResponse; import com.cloud.event.EventVO; @@ -115,7 +115,7 @@ public class ListEventsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List events = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -143,6 +143,6 @@ public class ListEventsCmd extends BaseListCmd { response.setResponses(eventResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListGuestOsCategoriesCmd.java b/server/src/com/cloud/api/commands/ListGuestOsCategoriesCmd.java index a8118f6feb5..09de3c8f837 100644 --- a/server/src/com/cloud/api/commands/ListGuestOsCategoriesCmd.java +++ b/server/src/com/cloud/api/commands/ListGuestOsCategoriesCmd.java @@ -26,7 +26,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.GuestOSCategoryResponse; import com.cloud.api.response.ListResponse; import com.cloud.storage.GuestOSCategoryVO; @@ -64,7 +64,7 @@ public class ListGuestOsCategoriesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List osCategories = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -80,6 +80,6 @@ public class ListGuestOsCategoriesCmd extends BaseListCmd { response.setResponses(osCatResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListGuestOsCmd.java b/server/src/com/cloud/api/commands/ListGuestOsCmd.java index bc6aa6d10ee..2576e0ecdc9 100644 --- a/server/src/com/cloud/api/commands/ListGuestOsCmd.java +++ b/server/src/com/cloud/api/commands/ListGuestOsCmd.java @@ -26,7 +26,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.GuestOSResponse; import com.cloud.api.response.ListResponse; import com.cloud.storage.GuestOSVO; @@ -71,7 +71,7 @@ public class ListGuestOsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List guestOSList = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -88,6 +88,6 @@ public class ListGuestOsCmd extends BaseListCmd { response.setResponses(osResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListHostsCmd.java b/server/src/com/cloud/api/commands/ListHostsCmd.java index 4124c6b0b6e..559dd2be58f 100644 --- a/server/src/com/cloud/api/commands/ListHostsCmd.java +++ b/server/src/com/cloud/api/commands/ListHostsCmd.java @@ -31,7 +31,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.HostResponse; import com.cloud.api.response.ListResponse; import com.cloud.dc.ClusterVO; @@ -118,7 +118,7 @@ public class ListHostsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List hosts = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -220,6 +220,6 @@ public class ListHostsCmd extends BaseListCmd { response.setResponses(hostResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListIsosCmd.java b/server/src/com/cloud/api/commands/ListIsosCmd.java index 419173c49af..ac4981c0cc9 100644 --- a/server/src/com/cloud/api/commands/ListIsosCmd.java +++ b/server/src/com/cloud/api/commands/ListIsosCmd.java @@ -29,7 +29,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.TemplateResponse; import com.cloud.async.AsyncJobVO; @@ -131,7 +131,7 @@ public class ListIsosCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { TemplateFilter isoFilterObj = null; try { if (isoFilter == null) { @@ -270,6 +270,6 @@ public class ListIsosCmd extends BaseListCmd { response.setResponses(isoResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListLoadBalancerRuleInstancesCmd.java b/server/src/com/cloud/api/commands/ListLoadBalancerRuleInstancesCmd.java index 4b169f662dd..316b8e2487b 100644 --- a/server/src/com/cloud/api/commands/ListLoadBalancerRuleInstancesCmd.java +++ b/server/src/com/cloud/api/commands/ListLoadBalancerRuleInstancesCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.UserVmResponse; import com.cloud.user.Account; @@ -73,7 +73,7 @@ public class ListLoadBalancerRuleInstancesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List instances = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -98,6 +98,6 @@ public class ListLoadBalancerRuleInstancesCmd extends BaseListCmd { response.setResponses(vmResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListLoadBalancerRulesCmd.java b/server/src/com/cloud/api/commands/ListLoadBalancerRulesCmd.java index 7150e0bbb69..6d223e92203 100644 --- a/server/src/com/cloud/api/commands/ListLoadBalancerRulesCmd.java +++ b/server/src/com/cloud/api/commands/ListLoadBalancerRulesCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.LoadBalancerResponse; import com.cloud.network.LoadBalancerVO; @@ -100,7 +100,7 @@ public class ListLoadBalancerRulesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List loadBalancers = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -128,6 +128,6 @@ public class ListLoadBalancerRulesCmd extends BaseListCmd { response.setResponses(lbResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListNetworkGroupsCmd.java b/server/src/com/cloud/api/commands/ListNetworkGroupsCmd.java index 3717155c369..a7c3e490b5e 100644 --- a/server/src/com/cloud/api/commands/ListNetworkGroupsCmd.java +++ b/server/src/com/cloud/api/commands/ListNetworkGroupsCmd.java @@ -10,7 +10,7 @@ import com.cloud.api.BaseCmd.Manager; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.IngressRuleResponse; import com.cloud.api.response.ListResponse; import com.cloud.api.response.NetworkGroupResponse; @@ -71,7 +71,7 @@ public class ListNetworkGroupsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List networkGroups = (List)getResponseObject(); List groupResultObjs = NetworkGroupResultObject.transposeNetworkGroups(networkGroups); @@ -121,6 +121,6 @@ public class ListNetworkGroupsCmd extends BaseListCmd { response.setResponses(netGrpResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListPodsByCmd.java b/server/src/com/cloud/api/commands/ListPodsByCmd.java index ecbe2878fd7..6bdd4810e1e 100644 --- a/server/src/com/cloud/api/commands/ListPodsByCmd.java +++ b/server/src/com/cloud/api/commands/ListPodsByCmd.java @@ -26,7 +26,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.PodResponse; import com.cloud.dc.HostPodVO; @@ -78,7 +78,7 @@ public class ListPodsByCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List pods = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -107,6 +107,6 @@ public class ListPodsByCmd extends BaseListCmd { response.setResponses(podResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListPortForwardingRulesCmd.java b/server/src/com/cloud/api/commands/ListPortForwardingRulesCmd.java index 7e32bced9ac..b6fd8c41cd2 100644 --- a/server/src/com/cloud/api/commands/ListPortForwardingRulesCmd.java +++ b/server/src/com/cloud/api/commands/ListPortForwardingRulesCmd.java @@ -30,7 +30,7 @@ import com.cloud.api.BaseCmd.Manager; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.FirewallRuleResponse; import com.cloud.api.response.ListResponse; import com.cloud.network.FirewallRuleVO; @@ -70,7 +70,7 @@ public class ListPortForwardingRulesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List firewallRules = (List)getResponseObject(); Map userVmCache = new HashMap(); IPAddressVO ipAddr = ApiDBUtils.findIpAddressById(ipAddress); @@ -110,6 +110,6 @@ public class ListPortForwardingRulesCmd extends BaseListCmd { response.setResponses(fwResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListPortForwardingServiceRulesCmd.java b/server/src/com/cloud/api/commands/ListPortForwardingServiceRulesCmd.java index deebd1860fc..68a53afe875 100644 --- a/server/src/com/cloud/api/commands/ListPortForwardingServiceRulesCmd.java +++ b/server/src/com/cloud/api/commands/ListPortForwardingServiceRulesCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.PortForwardingServiceRuleResponse; import com.cloud.async.AsyncJobVO; @@ -86,7 +86,7 @@ public class ListPortForwardingServiceRulesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List portForwardingServiceRules = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -111,6 +111,6 @@ public class ListPortForwardingServiceRulesCmd extends BaseListCmd { response.setResponses(ruleResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListPortForwardingServicesByVmCmd.java b/server/src/com/cloud/api/commands/ListPortForwardingServicesByVmCmd.java index c34195aeac2..f729fd70f86 100644 --- a/server/src/com/cloud/api/commands/ListPortForwardingServicesByVmCmd.java +++ b/server/src/com/cloud/api/commands/ListPortForwardingServicesByVmCmd.java @@ -28,7 +28,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SecurityGroupResponse; import com.cloud.network.SecurityGroupVO; @@ -87,7 +87,7 @@ public class ListPortForwardingServicesByVmCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { Map> portForwardingServices = (Map>)getResponseObject(); ListResponse response = new ListResponse(); @@ -115,6 +115,6 @@ public class ListPortForwardingServicesByVmCmd extends BaseListCmd { response.setResponses(pfResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListPortForwardingServicesCmd.java b/server/src/com/cloud/api/commands/ListPortForwardingServicesCmd.java index 7ed660e9a17..1397011e4d9 100644 --- a/server/src/com/cloud/api/commands/ListPortForwardingServicesCmd.java +++ b/server/src/com/cloud/api/commands/ListPortForwardingServicesCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SecurityGroupResponse; import com.cloud.network.SecurityGroupVO; @@ -86,7 +86,7 @@ public class ListPortForwardingServicesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List groups = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -110,7 +110,7 @@ public class ListPortForwardingServicesCmd extends BaseListCmd { response.setResponses(pfsResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListPreallocatedLunsCmd.java b/server/src/com/cloud/api/commands/ListPreallocatedLunsCmd.java index 5b51e288516..3f3d3a1475f 100644 --- a/server/src/com/cloud/api/commands/ListPreallocatedLunsCmd.java +++ b/server/src/com/cloud/api/commands/ListPreallocatedLunsCmd.java @@ -26,7 +26,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.PreallocatedLunResponse; import com.cloud.storage.preallocatedlun.PreallocatedLunVO; @@ -69,7 +69,7 @@ public class ListPreallocatedLunsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List preallocatedLuns = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -91,6 +91,6 @@ public class ListPreallocatedLunsCmd extends BaseListCmd { response.setResponses(lunResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } -} \ No newline at end of file +} diff --git a/server/src/com/cloud/api/commands/ListPublicIpAddressesCmd.java b/server/src/com/cloud/api/commands/ListPublicIpAddressesCmd.java index 9695fe31b93..848b75e5afa 100644 --- a/server/src/com/cloud/api/commands/ListPublicIpAddressesCmd.java +++ b/server/src/com/cloud/api/commands/ListPublicIpAddressesCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.IPAddressResponse; import com.cloud.api.response.ListResponse; import com.cloud.dc.Vlan.VlanType; @@ -109,7 +109,7 @@ public class ListPublicIpAddressesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List ipAddresses = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -150,6 +150,6 @@ public class ListPublicIpAddressesCmd extends BaseListCmd { response.setResponses(ipAddrResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListRecurringSnapshotScheduleCmd.java b/server/src/com/cloud/api/commands/ListRecurringSnapshotScheduleCmd.java index a3b54c6c09e..7aa66665c9c 100644 --- a/server/src/com/cloud/api/commands/ListRecurringSnapshotScheduleCmd.java +++ b/server/src/com/cloud/api/commands/ListRecurringSnapshotScheduleCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseCmd.Manager; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SnapshotScheduleResponse; import com.cloud.storage.SnapshotScheduleVO; @@ -66,7 +66,7 @@ public class ListRecurringSnapshotScheduleCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List snapshotSchedules = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -84,6 +84,6 @@ public class ListRecurringSnapshotScheduleCmd extends BaseListCmd { response.setResponses(snapshotScheduleResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListResourceLimitsCmd.java b/server/src/com/cloud/api/commands/ListResourceLimitsCmd.java index b07783ec44b..680e1face09 100644 --- a/server/src/com/cloud/api/commands/ListResourceLimitsCmd.java +++ b/server/src/com/cloud/api/commands/ListResourceLimitsCmd.java @@ -28,7 +28,7 @@ import com.cloud.api.BaseCmd.Manager; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.ResourceLimitResponse; import com.cloud.configuration.ResourceLimitVO; @@ -86,7 +86,7 @@ public class ListResourceLimitsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List limits = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -116,6 +116,6 @@ public class ListResourceLimitsCmd extends BaseListCmd { response.setResponses(limitResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListRoutersCmd.java b/server/src/com/cloud/api/commands/ListRoutersCmd.java index 46a422d0c34..bd7768d718b 100644 --- a/server/src/com/cloud/api/commands/ListRoutersCmd.java +++ b/server/src/com/cloud/api/commands/ListRoutersCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.DomainRouterResponse; import com.cloud.api.response.ListResponse; import com.cloud.async.AsyncJobVO; @@ -107,7 +107,7 @@ public class ListRoutersCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List routers = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -162,6 +162,6 @@ public class ListRoutersCmd extends BaseListCmd { response.setResponses(routerResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListServiceOfferingsCmd.java b/server/src/com/cloud/api/commands/ListServiceOfferingsCmd.java index b83d922d189..1bf062dd9fa 100644 --- a/server/src/com/cloud/api/commands/ListServiceOfferingsCmd.java +++ b/server/src/com/cloud/api/commands/ListServiceOfferingsCmd.java @@ -26,7 +26,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.ServiceOfferingResponse; import com.cloud.offering.ServiceOffering.GuestIpType; @@ -77,7 +77,7 @@ public class ListServiceOfferingsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List offerings = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -102,6 +102,6 @@ public class ListServiceOfferingsCmd extends BaseListCmd { response.setResponses(offeringResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListSnapshotPoliciesCmd.java b/server/src/com/cloud/api/commands/ListSnapshotPoliciesCmd.java index f41d210bc3b..0f6852fe612 100644 --- a/server/src/com/cloud/api/commands/ListSnapshotPoliciesCmd.java +++ b/server/src/com/cloud/api/commands/ListSnapshotPoliciesCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.BaseCmd.Manager; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SnapshotPolicyResponse; import com.cloud.storage.SnapshotPolicyVO; @@ -77,7 +77,7 @@ public class ListSnapshotPoliciesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List policies = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -97,6 +97,6 @@ public class ListSnapshotPoliciesCmd extends BaseListCmd { response.setResponses(policyResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListSnapshotsCmd.java b/server/src/com/cloud/api/commands/ListSnapshotsCmd.java index e15c55eb2f2..6bfcab5c469 100644 --- a/server/src/com/cloud/api/commands/ListSnapshotsCmd.java +++ b/server/src/com/cloud/api/commands/ListSnapshotsCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SnapshotResponse; import com.cloud.async.AsyncJobVO; @@ -110,7 +110,7 @@ public class ListSnapshotsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List snapshots = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -148,6 +148,6 @@ public class ListSnapshotsCmd extends BaseListCmd { response.setResponses(snapshotResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListStoragePoolsAndHostsCmd.java b/server/src/com/cloud/api/commands/ListStoragePoolsAndHostsCmd.java index da00840d2f8..998d393fac1 100644 --- a/server/src/com/cloud/api/commands/ListStoragePoolsAndHostsCmd.java +++ b/server/src/com/cloud/api/commands/ListStoragePoolsAndHostsCmd.java @@ -120,7 +120,7 @@ public class ListStoragePoolsAndHostsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List poolsAndHosts = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -137,7 +137,7 @@ public class ListStoragePoolsAndHostsCmd extends BaseListCmd { response.setResponses(responses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } private StoragePoolResponse constructStoragePoolResponse(StoragePoolVO pool) { diff --git a/server/src/com/cloud/api/commands/ListStoragePoolsCmd.java b/server/src/com/cloud/api/commands/ListStoragePoolsCmd.java index 2e4aa098644..058bd13bc48 100644 --- a/server/src/com/cloud/api/commands/ListStoragePoolsCmd.java +++ b/server/src/com/cloud/api/commands/ListStoragePoolsCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.StoragePoolResponse; import com.cloud.dc.ClusterVO; @@ -100,7 +100,7 @@ public class ListStoragePoolsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List pools = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -151,6 +151,6 @@ public class ListStoragePoolsCmd extends BaseListCmd { response.setResponses(poolResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListSystemVMsCmd.java b/server/src/com/cloud/api/commands/ListSystemVMsCmd.java index 0619bceb124..c50e1a886af 100644 --- a/server/src/com/cloud/api/commands/ListSystemVMsCmd.java +++ b/server/src/com/cloud/api/commands/ListSystemVMsCmd.java @@ -26,7 +26,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SystemVmResponse; import com.cloud.async.AsyncJobVO; @@ -108,7 +108,7 @@ public class ListSystemVMsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List systemVMs = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -170,6 +170,6 @@ public class ListSystemVMsCmd extends BaseListCmd { response.setResponses(vmResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListTemplateOrIsoPermissionsCmd.java b/server/src/com/cloud/api/commands/ListTemplateOrIsoPermissionsCmd.java index 5d87a8bc2d1..fec6227cb21 100644 --- a/server/src/com/cloud/api/commands/ListTemplateOrIsoPermissionsCmd.java +++ b/server/src/com/cloud/api/commands/ListTemplateOrIsoPermissionsCmd.java @@ -8,7 +8,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.TemplatePermissionsResponse; import com.cloud.storage.VMTemplateVO; import com.cloud.user.Account; @@ -58,7 +58,7 @@ public class ListTemplateOrIsoPermissionsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List accountNames = (List)getResponseObject(); Account account = (Account)UserContext.current().getAccountObject(); boolean isAdmin = ((account == null) || isAdmin(account.getType())); @@ -82,7 +82,7 @@ public class ListTemplateOrIsoPermissionsCmd extends BaseListCmd { response.setAccountNames(accountNames); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } protected boolean templateIsCorrectType(VMTemplateVO template) { diff --git a/server/src/com/cloud/api/commands/ListTemplatesCmd.java b/server/src/com/cloud/api/commands/ListTemplatesCmd.java index f46ec02ff6e..cc6018d7272 100644 --- a/server/src/com/cloud/api/commands/ListTemplatesCmd.java +++ b/server/src/com/cloud/api/commands/ListTemplatesCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.TemplateResponse; import com.cloud.async.AsyncJobVO; @@ -108,7 +108,7 @@ public class ListTemplatesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { TemplateFilter templateFilterObj; try { templateFilterObj = TemplateFilter.valueOf(templateFilter); @@ -231,6 +231,6 @@ public class ListTemplatesCmd extends BaseListCmd { response.setResponses(templateResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListUsersCmd.java b/server/src/com/cloud/api/commands/ListUsersCmd.java index 25478b50f09..e58326854bd 100644 --- a/server/src/com/cloud/api/commands/ListUsersCmd.java +++ b/server/src/com/cloud/api/commands/ListUsersCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.UserResponse; import com.cloud.user.UserAccountVO; @@ -98,7 +98,7 @@ public class ListUsersCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List users = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -126,6 +126,6 @@ public class ListUsersCmd extends BaseListCmd { response.setResponses(userResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListVMsCmd.java b/server/src/com/cloud/api/commands/ListVMsCmd.java index f77ee5b30d7..9c4fb2f5f45 100644 --- a/server/src/com/cloud/api/commands/ListVMsCmd.java +++ b/server/src/com/cloud/api/commands/ListVMsCmd.java @@ -27,7 +27,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.UserVmResponse; import com.cloud.async.AsyncJobVO; @@ -118,7 +118,7 @@ public class ListVMsCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List userVms = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -225,6 +225,6 @@ public class ListVMsCmd extends BaseListCmd { response.setResponses(vmResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListVlanIpRangesCmd.java b/server/src/com/cloud/api/commands/ListVlanIpRangesCmd.java index e90868b7980..42414d02bb6 100644 --- a/server/src/com/cloud/api/commands/ListVlanIpRangesCmd.java +++ b/server/src/com/cloud/api/commands/ListVlanIpRangesCmd.java @@ -26,7 +26,7 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.VlanIpRangeResponse; import com.cloud.dc.HostPodVO; @@ -100,7 +100,7 @@ public class ListVlanIpRangesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List vlans = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -138,6 +138,6 @@ public class ListVlanIpRangesCmd extends BaseListCmd { response.setResponses(vlanResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListVolumesCmd.java b/server/src/com/cloud/api/commands/ListVolumesCmd.java index 25f17ed7cfd..1d4c61d0cc7 100644 --- a/server/src/com/cloud/api/commands/ListVolumesCmd.java +++ b/server/src/com/cloud/api/commands/ListVolumesCmd.java @@ -27,8 +27,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.ListResponse; import com.cloud.api.response.VolumeResponse; import com.cloud.async.AsyncJobVO; @@ -125,7 +125,7 @@ public class ListVolumesCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List volumes = (List)getResponseObject(); ListResponse response = new ListResponse(); @@ -205,6 +205,6 @@ public class ListVolumesCmd extends BaseListCmd { response.setResponses(volResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/ListZonesByCmd.java b/server/src/com/cloud/api/commands/ListZonesByCmd.java index 849e1f69690..798a5576bd0 100644 --- a/server/src/com/cloud/api/commands/ListZonesByCmd.java +++ b/server/src/com/cloud/api/commands/ListZonesByCmd.java @@ -26,7 +26,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.ListResponse; import com.cloud.api.response.ZoneResponse; import com.cloud.dc.DataCenterVO; @@ -64,7 +64,7 @@ public class ListZonesByCmd extends BaseListCmd { } @Override @SuppressWarnings("unchecked") - public String getResponse() { + public ResponseObject getResponse() { List dataCenters = (List)getResponseObject(); Account account = (Account)UserContext.current().getAccountObject(); @@ -94,6 +94,6 @@ public class ListZonesByCmd extends BaseListCmd { response.setResponses(zoneResponses); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/LockAccountCmd.java b/server/src/com/cloud/api/commands/LockAccountCmd.java index f3d8a61780a..27520155e9a 100644 --- a/server/src/com/cloud/api/commands/LockAccountCmd.java +++ b/server/src/com/cloud/api/commands/LockAccountCmd.java @@ -23,6 +23,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="lockAccount", manager=Manager.ManagementServer) public class LockAccountCmd extends BaseCmd { @@ -56,39 +58,17 @@ public class LockAccountCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; - } - -// @Override -// public List> execute(Map params) { -// Account adminAccount = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName()); -// String accountName = (String)params.get(BaseCmd.Properties.ACCOUNT.getName()); -// -// if ((adminAccount != null) && !getManagementServer().isChildDomain(adminAccount.getDomainId(), domainId)) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Failed to lock account " + accountName + " in domain " + domainId + ", permission denied."); -// } -// -// Account account = getManagementServer().findActiveAccount(accountName, domainId); -// if (account == null) { -// throw new ServerApiException (BaseCmd.PARAM_ERROR, "Unable to find active account with name " + accountName + " in domain " + domainId); -// } -// -// // don't allow modify system account -// if (account.getId().longValue() == Account.ACCOUNT_ID_SYSTEM) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "can not lock system account"); -// } -// -// boolean success = getManagementServer().lockAccount(account.getId().longValue()); -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), Boolean.valueOf(success).toString())); -// return returnValues; -// } + } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/LockUserCmd.java b/server/src/com/cloud/api/commands/LockUserCmd.java index 49575cd3357..f4aaa4ec769 100644 --- a/server/src/com/cloud/api/commands/LockUserCmd.java +++ b/server/src/com/cloud/api/commands/LockUserCmd.java @@ -23,6 +23,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="lockUser", manager=Manager.ManagementServer) public class LockUserCmd extends BaseCmd { @@ -49,42 +51,17 @@ public class LockUserCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; - } - -// @Override -// public List> execute(Map params) { -// Account adminAccount = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long id = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// // Check if user with id exists in the system -// User user = getManagementServer().findUserById(id); -// if (user == null) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to find user by id"); -// } else if (user.getRemoved() != null) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to find user by id"); -// } -// -// // If the user is a System user, return an error. We do not allow this -// Account account = getManagementServer().findAccountById(user.getAccountId()); -// if ((account != null) && (account.getId() == Account.ACCOUNT_ID_SYSTEM)) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "user id : " + id + " is a system user, locking is not allowed"); -// } -// -// if ((adminAccount != null) && !getManagementServer().isChildDomain(adminAccount.getDomainId(), account.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Failed to lock user " + id + ", permission denied."); -// } -// -// boolean success = getManagementServer().lockUser(id.longValue()); -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), Boolean.valueOf(success).toString())); -// return returnValues; -// } + } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/PrepareForMaintenanceCmd.java b/server/src/com/cloud/api/commands/PrepareForMaintenanceCmd.java index 8f4daa429b6..34fa2900e2e 100644 --- a/server/src/com/cloud/api/commands/PrepareForMaintenanceCmd.java +++ b/server/src/com/cloud/api/commands/PrepareForMaintenanceCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="maintain", manager=Manager.AgentManager) public class PrepareForMaintenanceCmd extends BaseAsyncCmd { @@ -49,6 +51,7 @@ public class PrepareForMaintenanceCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @@ -56,39 +59,13 @@ public class PrepareForMaintenanceCmd extends BaseAsyncCmd { public static String getResultObjectName() { return "host"; } - -// @Override -// public List> execute(Map params) { -// Long hostId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// //verify input parameters -// HostVO host = getManagementServer().getHostBy(hostId); -// if (host == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Host with id " + hostId.toString() + " doesn't exist"); -// } -// -// long jobId = 0; -// try { -// jobId = getManagementServer().prepareForMaintenanceAsync(hostId); -// } catch (InvalidParameterValueException e) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to prepare host for maintenance: " + e.getMessage()); -// } -// -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for PrepareForMaintenance comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("PrepareForMaintenance command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } - + @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/PreparePrimaryStorageForMaintenanceCmd.java b/server/src/com/cloud/api/commands/PreparePrimaryStorageForMaintenanceCmd.java index ba139ecda57..2abe76e6116 100644 --- a/server/src/com/cloud/api/commands/PreparePrimaryStorageForMaintenanceCmd.java +++ b/server/src/com/cloud/api/commands/PreparePrimaryStorageForMaintenanceCmd.java @@ -22,6 +22,8 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; import com.cloud.api.Implementation; import com.cloud.api.Parameter; @@ -50,6 +52,7 @@ public class PreparePrimaryStorageForMaintenanceCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @@ -57,43 +60,13 @@ public class PreparePrimaryStorageForMaintenanceCmd extends BaseAsyncCmd { public static String getResultObjectName() { return "primarystorage"; } - -// @Override -// public List> execute(Map params) { -// Long storagePoolId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// //verify input parameters -// StoragePoolVO storagePool = getManagementServer().findPoolById(storagePoolId); -// -// if (storagePool == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Primary storage with id " + storagePoolId + " doesn't exist"); -// } -// -// if (!storagePool.getStatus().equals(Status.Up)) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Primary storage with id " + storagePoolId + " is not ready for migration, as the status is:"+storagePool.getStatus().toString()); -// } -// -// long jobId = 0; -// try { -// jobId = getManagementServer().preparePrimaryStorageForMaintenanceAsync(storagePoolId); -// } catch (InvalidParameterValueException e) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to prepare primary storage for maintenance: " + e.getMessage()); -// } -// -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for PreparePrimaryStorageForMaintenance comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("PreparePrimaryStorageForMaintenance command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// returnValues.add(new Pair(BaseCmd.Properties.STATE.getName(), Status.PrepareForMaintenance)); -// return returnValues; -// } + @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/QueryAsyncJobResultCmd.java b/server/src/com/cloud/api/commands/QueryAsyncJobResultCmd.java index 7ec386b5462..1402f2d7f05 100644 --- a/server/src/com/cloud/api/commands/QueryAsyncJobResultCmd.java +++ b/server/src/com/cloud/api/commands/QueryAsyncJobResultCmd.java @@ -25,7 +25,7 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.AsyncJobResponse; import com.cloud.async.AsyncJobResult; @@ -60,7 +60,7 @@ public class QueryAsyncJobResultCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { AsyncJobResult result = (AsyncJobResult)getResponseObject(); AsyncJobResponse response = new AsyncJobResponse(); @@ -105,7 +105,7 @@ public class QueryAsyncJobResultCmd extends BaseCmd { */ response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } // For now network groups are the only objects with nested objects inside, so we special case serialization to handle this one case. diff --git a/server/src/com/cloud/api/commands/RebootRouterCmd.java b/server/src/com/cloud/api/commands/RebootRouterCmd.java index e5c1d0478ed..faaa39a42a4 100644 --- a/server/src/com/cloud/api/commands/RebootRouterCmd.java +++ b/server/src/com/cloud/api/commands/RebootRouterCmd.java @@ -25,8 +25,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="rebootRouter", manager=Manager.NetworkManager) @@ -58,7 +58,7 @@ public class RebootRouterCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -69,6 +69,6 @@ public class RebootRouterCmd extends BaseAsyncCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/RebootSystemVmCmd.java b/server/src/com/cloud/api/commands/RebootSystemVmCmd.java index 5fa903546bd..fccbab7108c 100644 --- a/server/src/com/cloud/api/commands/RebootSystemVmCmd.java +++ b/server/src/com/cloud/api/commands/RebootSystemVmCmd.java @@ -22,8 +22,10 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.SuccessResponse; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; @Implementation(method="rebootSystemVM", manager=Manager.ManagementServer) public class RebootSystemVmCmd extends BaseAsyncCmd { @@ -50,35 +52,17 @@ public class RebootSystemVmCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// public List> execute(Map params) { -// Long systemVmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// // verify parameters -// VMInstanceVO systemVm = getManagementServer().findSystemVMById(systemVmId); -// if (systemVm == null) { -// throw new ServerApiException (BaseCmd.PARAM_ERROR, "unable to find a system vm with id " + systemVmId); -// } -// -// long jobId = getManagementServer().rebootSystemVmAsync(systemVmId.longValue()); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for RebootSystemVMCommand"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("RebootSystemVMCommand has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/RebootVMCmd.java b/server/src/com/cloud/api/commands/RebootVMCmd.java index 7cef1addb60..98f0baa11ac 100644 --- a/server/src/com/cloud/api/commands/RebootVMCmd.java +++ b/server/src/com/cloud/api/commands/RebootVMCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="rebootVirtualMachine", manager=Manager.UserVmManager) public class RebootVMCmd extends BaseAsyncCmd { @@ -49,52 +51,17 @@ public class RebootVMCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Long vmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// //Verify input parameters -// UserVmVO vmInstance = getManagementServer().findUserVMInstanceById(vmId.longValue()); -// if (vmInstance == null) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId); -// } -// -// if (account != null) { -// if (!isAdmin(account.getType()) && (account.getId().longValue() != vmInstance.getAccountId())) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId + " for this account"); -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), vmInstance.getDomainId())) { -// // the domain in which the VM lives is not in the admin's domain tree -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to reboot virtual machine with id " + vmId + ", invalid id given."); -// } -// } -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// long jobId = getManagementServer().rebootVirtualMachineAsync(userId.longValue(), vmId.longValue()); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for RebootVM comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("RebootVM command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/ReconnectHostCmd.java b/server/src/com/cloud/api/commands/ReconnectHostCmd.java index 814dc8b37a9..1a7a44505b6 100644 --- a/server/src/com/cloud/api/commands/ReconnectHostCmd.java +++ b/server/src/com/cloud/api/commands/ReconnectHostCmd.java @@ -18,12 +18,29 @@ package com.cloud.api.commands; +import java.text.DecimalFormat; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + import org.apache.log4j.Logger; +import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.HostResponse; +import com.cloud.dc.HostPodVO; +import com.cloud.host.Host; +import com.cloud.host.HostStats; +import com.cloud.host.HostVO; +import com.cloud.host.Status.Event; +import com.cloud.offering.ServiceOffering; +import com.cloud.storage.GuestOSCategoryVO; +import com.cloud.vm.UserVmVO; @Implementation(method="reconnectHost", manager=Manager.AgentManager) public class ReconnectHostCmd extends BaseAsyncCmd { @@ -56,34 +73,125 @@ public class ReconnectHostCmd extends BaseAsyncCmd { public static String getResultObjectName() { return "host"; - } - -// @Override -// public List> execute(Map params) { -// Long hostId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// //verify input parameters -// HostVO host = getManagementServer().getHostBy(hostId); -// if (host == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Host with id " + hostId.toString() + " doesn't exist"); -// } -// -// long jobId = getManagementServer().reconnectAsync(hostId); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for ReconnectHost comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("ReconnectHost command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } + } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + HostVO host = (HostVO)getResponseObject(); + + HostResponse response = new HostResponse(); + response.setId(host.getId()); + + response.setName(host.getName()); + response.setState(host.getStatus()); + + if (host.getDisconnectedOn() != null) { + response.setDisconnectedOn(host.getDisconnectedOn()); + } + + if (host.getType() != null) { + response.setHostType(host.getType()); + } + + GuestOSCategoryVO guestOSCategory = ApiDBUtils.getHostGuestOSCategory(host.getId()); + if (guestOSCategory != null) { + response.setOsCategoryId(guestOSCategory.getId()); + response.setOsCategoryName(guestOSCategory.getName()); + } + + response.setIpAddress(host.getPrivateIpAddress()); + response.setZoneId(host.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(host.getDataCenterId()).getName()); + + if (host.getPodId() != null) { + HostPodVO pod = ApiDBUtils.findPodById(host.getPodId()); + response.setPodId(host.getPodId()); + response.setPodName(pod.getName()); + } + + response.setVersion(host.getVersion().toString()); + + if (host.getHypervisorType() != null) { + response.setHypervisor(host.getHypervisorType()); + } + + if ((host.getCpus() != null) && (host.getSpeed() != null) && !(host.getType().toString().equals("Storage"))) { + response.setCpuNumber(host.getCpus()); + response.setCpuSpeed(host.getSpeed()); + // calculate cpu allocated by vm + int cpu = 0; + String cpuAlloc = null; + DecimalFormat decimalFormat = new DecimalFormat("#.##"); + List instances = ApiDBUtils.listUserVMsByHostId(host.getId()); + for (UserVmVO vm : instances) { + ServiceOffering so = ApiDBUtils.findServiceOfferingById(vm.getServiceOfferingId()); + cpu += so.getCpu() * so.getSpeed(); + } + cpuAlloc = decimalFormat.format(((float) cpu / (float) (host.getCpus() * host.getSpeed())) * 100f) + "%"; + response.setCpuAllocated(cpuAlloc); + + // calculate cpu utilized + String cpuUsed = null; + HostStats hostStats = ApiDBUtils.getHostStatistics(host.getId()); + if (hostStats != null) { + float cpuUtil = (float) hostStats.getCpuUtilization(); + cpuUsed = decimalFormat.format(cpuUtil) + "%"; + response.setCpuUsed(cpuUsed); + + long avgLoad = (long)hostStats.getAverageLoad(); + response.setAverageLoad(avgLoad); + + long networkKbsRead = (long)hostStats.getNetworkReadKBs(); + response.setNetworkKbsRead(networkKbsRead); + + long networkKbsWrite = (long)hostStats.getNetworkWriteKBs(); + response.setNetworkKbsWrite(networkKbsWrite); + } + } + + if (host.getType() == Host.Type.Routing) { + Long memory = host.getTotalMemory(); + response.setMemoryTotal(memory); + // calculate memory allocated by systemVM and userVm + long mem = ApiDBUtils.getMemoryUsagebyHost(host.getId()); + response.setMemoryAllocated(mem); + // calculate memory utilized, we don't provide memory over commit + response.setMemoryUsed(mem); + + } + + if (host.getType().toString().equals("Storage")) { + response.setDiskSizeTotal(host.getTotalSize()); + response.setDiskSizeAllocated(0L); + } + response.setCapabilities(host.getCapabilities()); + response.setLastPinged(new Date(host.getLastPinged())); + if (host.getManagementServerId() != null) { + response.setManagementServerId(host.getManagementServerId()); + } + + if (host.getCreated() != null) { + response.setCreated(host.getCreated()); + } + if (host.getRemoved() != null) { + response.setRemoved(host.getRemoved()); + } + + Set possibleEvents = host.getStatus().getPossibleEvents(); + if ((possibleEvents != null) && !possibleEvents.isEmpty()) { + String events = ""; + Iterator iter = possibleEvents.iterator(); + while (iter.hasNext()) { + Event event = iter.next(); + events += event.toString(); + if (iter.hasNext()) { + events += "; "; + } + } + response.setEvents(events); + } + response.setResponseName(getName()); + + return response; } } diff --git a/server/src/com/cloud/api/commands/RecoverVMCmd.java b/server/src/com/cloud/api/commands/RecoverVMCmd.java index 6ce2eec7896..58d2168847c 100644 --- a/server/src/com/cloud/api/commands/RecoverVMCmd.java +++ b/server/src/com/cloud/api/commands/RecoverVMCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="recoverVirtualMachine", manager=Manager.UserVmManager) public class RecoverVMCmd extends BaseCmd { @@ -50,48 +52,17 @@ public class RecoverVMCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } - -// @Override -// public List> execute(Map params) { -// Long vmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// -// //if account is removed, return error -// if(account!=null && account.getRemoved() != null) -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "The account " + account.getId()+" is removed"); -// -// // Verify input parameters -// UserVmVO vmInstance = getManagementServer().findUserVMInstanceById(vmId.longValue()); -// if (vmInstance == null) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId); -// } -// -// if ((account != null) && !getManagementServer().isChildDomain(account.getDomainId(), vmInstance.getDomainId())) { -// // the domain in which the VM lives is not in the admin's domain tree -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to recover virtual machine with id " + vmId + ", invalid id given."); -// } -// -// try { -// boolean success = getManagementServer().recoverVirtualMachine(vmId.longValue()); -// if (success == false) { -// throw new ServerApiException(BaseCmd.VM_RECOVER_ERROR, "unable to recover virtual machine with id " + vmId.toString()); -// } -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), Boolean.valueOf(success).toString())); -// return returnValues; -// } catch (ResourceAllocationException ex) { -// throw new ServerApiException(BaseCmd.VM_RECOVER_ERROR, "Failed to recover virtual machine with id " + vmId + "; " + ex.getMessage()); -// } catch (InternalErrorException e) { -// throw new ServerApiException(BaseCmd.VM_RECOVER_ERROR, "Failed to recover virtual machine with id " + vmId + "; " + e.getMessage()); -// } -// } } diff --git a/server/src/com/cloud/api/commands/RegisterCmd.java b/server/src/com/cloud/api/commands/RegisterCmd.java index 1531a5e7eda..00080d9a275 100644 --- a/server/src/com/cloud/api/commands/RegisterCmd.java +++ b/server/src/com/cloud/api/commands/RegisterCmd.java @@ -24,14 +24,15 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.RegisterResponse; @Implementation(method="createApiKeyAndSecretKey", manager=Manager.ManagementServer) public class RegisterCmd extends BaseCmd { public static final Logger s_logger = Logger.getLogger(RegisterCmd.class.getName()); - + private static final String s_name = "registeruserkeysresponse"; - - + ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// ///////////////////////////////////////////////////// @@ -54,31 +55,16 @@ public class RegisterCmd extends BaseCmd { public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// User user = getManagementServer().findUserById(userId); -// -// if (user == null) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "unable to find user for id : " + userId); -// } -// -// // generate both an api key and a secret key, update the user table with the keys, return the keys to the user -// String apiKey = getManagementServer().createApiKey(user.getId()); -// String secretKey = getManagementServer().createSecretKey(user.getId()); -// -// List> returnValues = new ArrayList>(); -// -// returnValues.add(new Pair(BaseCmd.Properties.API_KEY.getName(), apiKey)); -// returnValues.add(new Pair(BaseCmd.Properties.SECRET_KEY.getName(), secretKey)); -// return returnValues; -// } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + String[] keys = (String[])getResponseObject(); + + RegisterResponse response = new RegisterResponse(); + response.setApiKey(keys[0]); + response.setSecretKey(keys[1]); + + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/RegisterIsoCmd.java b/server/src/com/cloud/api/commands/RegisterIsoCmd.java index 54713efe026..b6c51e32a5b 100644 --- a/server/src/com/cloud/api/commands/RegisterIsoCmd.java +++ b/server/src/com/cloud/api/commands/RegisterIsoCmd.java @@ -18,12 +18,24 @@ package com.cloud.api.commands; +import java.util.ArrayList; +import java.util.List; + import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.ListResponse; +import com.cloud.api.response.TemplateResponse; +import com.cloud.api.ApiDBUtils; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.dc.DataCenterVO; +import com.cloud.storage.VMTemplateHostVO; +import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; +import com.cloud.storage.VMTemplateVO; +import com.cloud.user.Account; @Implementation(method="registerIso", manager=Manager.TemplateManager) public class RegisterIsoCmd extends BaseCmd { @@ -105,141 +117,53 @@ public class RegisterIsoCmd extends BaseCmd { } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + VMTemplateVO template = (VMTemplateVO)getResponseObject(); + + ListResponse response = new ListResponse(); + List responses = new ArrayList(); + List zones = null; + + if (zoneId != null) { + zones = new ArrayList(); + zones.add(ApiDBUtils.findZoneById(zoneId)); + } else { + zones = ApiDBUtils.listZones(); + } + + for (DataCenterVO zone : zones) { + TemplateResponse templateResponse = new TemplateResponse(); + templateResponse.setId(template.getId()); + templateResponse.setName(template.getName()); + templateResponse.setDisplayText(template.getDisplayText()); + templateResponse.setPublic(template.isPublicTemplate()); + + VMTemplateHostVO isoHostRef = ApiDBUtils.findTemplateHostRef(template.getId(), zone.getId()); + if (isoHostRef != null) { + templateResponse.setCreated(isoHostRef.getCreated()); + templateResponse.setReady(isoHostRef.getDownloadState() == Status.DOWNLOADED); + } + + templateResponse.setFeatured(template.isFeatured()); + templateResponse.setBootable(template.isBootable()); + templateResponse.setOsTypeId(template.getGuestOSId()); + templateResponse.setOsTypeName(ApiDBUtils.findGuestOSById(template.getGuestOSId()).getName()); + + Account owner = ApiDBUtils.findAccountById(template.getAccountId()); + if (owner != null) { + templateResponse.setAccountId(owner.getId()); + templateResponse.setAccount(owner.getAccountName()); + templateResponse.setDomainId(owner.getDomainId()); + } + + templateResponse.setZoneId(zone.getId()); + templateResponse.setZoneName(zone.getName()); + templateResponse.setResponseName("iso"); + + responses.add(templateResponse); + } + response.setResponseName(getName()); + response.setResponses(responses); + return response; } - -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// String name = (String)params.get(BaseCmd.Properties.NAME.getName()); -// String displayText = (String)params.get(BaseCmd.Properties.DISPLAY_TEXT.getName()); -// String url = (String)params.get(BaseCmd.Properties.URL.getName()); -// Boolean isPublic = (Boolean)params.get(BaseCmd.Properties.IS_PUBLIC.getName()); -// Boolean featured = (Boolean)params.get(BaseCmd.Properties.IS_FEATURED.getName()); -// Long guestOSId = (Long) params.get(BaseCmd.Properties.OS_TYPE_ID.getName()); -// Boolean bootable = (Boolean) params.get(BaseCmd.Properties.BOOTABLE.getName()); -// Long zoneId = (Long) params.get(BaseCmd.Properties.ZONE_ID.getName()); -// -// if (isPublic == null) { -// isPublic = Boolean.FALSE; -// } -// -// if (zoneId.longValue() == -1) { -// zoneId = null; -// } -// -// long accountId = 1L; // default to system account -// if (account != null) { -// accountId = account.getId().longValue(); -// } -// -// Account accountObj; -// if (account == null) { -// accountObj = getManagementServer().findAccountById(accountId); -// } else { -// accountObj = account; -// } -// -// boolean isAdmin = (accountObj.getType() == Account.ACCOUNT_TYPE_ADMIN); -// -// if (!isAdmin && zoneId == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Please specify a valid zone Id."); -// } -// -// if((!url.toLowerCase().endsWith("iso"))&&(!url.toLowerCase().endsWith("iso.zip"))&&(!url.toLowerCase().endsWith("iso.bz2")) -// &&(!url.toLowerCase().endsWith("iso.gz"))){ -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Please specify a valid iso"); -// } -// -// boolean allowPublicUserTemplates = Boolean.parseBoolean(getManagementServer().getConfigurationValue("allow.public.user.templates")); -// if (!isAdmin && !allowPublicUserTemplates && isPublic) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Only private ISOs can be created."); -// } -// -// if (!isAdmin || featured == null) { -// featured = Boolean.FALSE; -// } -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// if (bootable == null) { -// bootable = Boolean.TRUE; -// } -// -// //removing support for file:// type urls (bug: 4239) -// if(url.toLowerCase().contains("file://")){ -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "File:// type urls are currently unsupported"); -// } -// -// Long templateId; -// try { -// templateId = getManagementServer().createTemplate(userId, zoneId, name, displayText, isPublic.booleanValue(), featured.booleanValue(), ImageFormat.ISO.toString(), FileSystem.cdfs.toString(), url, null, true, 64 /*bits*/, false, guestOSId, bootable); -// } catch (Exception ex) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, ex.getMessage()); -// } -// -// -// VMTemplateVO template = getManagementServer().findTemplateById(templateId); -// List> isoTags = new ArrayList>(); -// List iTagList = new ArrayList(); -// if (template != null) { -// List zones = null; -// -// if (zoneId != null) { -// zones = new ArrayList(); -// zones.add(getManagementServer().findDataCenterById(zoneId)); -// } else { -// zones = getManagementServer().listDataCenters(); -// } -// -// for (DataCenterVO zone : zones) { -// VMTemplateHostVO isoHostRef = getManagementServer().findTemplateHostRef(templateId, zone.getId()); -// -// // Use embeded object for response -// List> listForEmbeddedObject = new ArrayList>(); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ID.getName(), template.getId().toString())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.NAME.getName(), template.getName())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.DISPLAY_TEXT.getName(), template.getDisplayText())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.IS_PUBLIC.getName(), Boolean.valueOf(template.isPublicTemplate()).toString())); -// -// if (isoHostRef != null) { -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(isoHostRef.getCreated()))); -// } -// -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.IS_READY.getName(), (isoHostRef != null && isoHostRef.getDownloadState() == Status.DOWNLOADED))); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.IS_FEATURED.getName(), Boolean.valueOf(template.isFeatured()).toString())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.BOOTABLE.getName(), Boolean.valueOf(template.isBootable()).toString())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.OS_TYPE_ID.getName(), template.getGuestOSId())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.OS_TYPE_NAME.getName(), getManagementServer().findGuestOSById(template.getGuestOSId()).getName())); -// -// Account owner = getManagementServer().findAccountById(template.getAccountId()); -// if (owner != null) { -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ACCOUNT_ID.getName(), owner.getId())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ACCOUNT.getName(), owner.getAccountName())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.DOMAIN_ID.getName(), owner.getDomainId())); -// } -// -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), zone.getId())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), zone.getName())); -// -// iTagList.add(listForEmbeddedObject); -// } -// } -// -// Object[] iTag = new Object[iTagList.size()]; -// for (int i = 0; i < iTagList.size(); i++) { -// iTag[i] = iTagList.get(i); -// } -// -// Pair templateTag = new Pair("iso", iTag); -// isoTags.add(templateTag); -// -// return isoTags; -// } } diff --git a/server/src/com/cloud/api/commands/RegisterPreallocatedLunCmd.java b/server/src/com/cloud/api/commands/RegisterPreallocatedLunCmd.java index 452ff38c994..2abcb5752fa 100644 --- a/server/src/com/cloud/api/commands/RegisterPreallocatedLunCmd.java +++ b/server/src/com/cloud/api/commands/RegisterPreallocatedLunCmd.java @@ -20,7 +20,7 @@ package com.cloud.api.commands; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.PreallocatedLunResponse; import com.cloud.storage.preallocatedlun.PreallocatedLunVO; @@ -88,7 +88,7 @@ public class RegisterPreallocatedLunCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { PreallocatedLunVO preallocatedLun = (PreallocatedLunVO)getResponseObject(); PreallocatedLunResponse response = new PreallocatedLunResponse(); @@ -102,6 +102,6 @@ public class RegisterPreallocatedLunCmd extends BaseCmd { response.setTargetIqn(preallocatedLun.getTargetIqn()); response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/RegisterTemplateCmd.java b/server/src/com/cloud/api/commands/RegisterTemplateCmd.java index cf30017de25..f7693ec1102 100644 --- a/server/src/com/cloud/api/commands/RegisterTemplateCmd.java +++ b/server/src/com/cloud/api/commands/RegisterTemplateCmd.java @@ -18,12 +18,25 @@ package com.cloud.api.commands; +import java.util.ArrayList; +import java.util.List; + import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.ListResponse; +import com.cloud.api.response.TemplateResponse; +import com.cloud.api.ApiDBUtils; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.dc.DataCenterVO; +import com.cloud.storage.GuestOS; +import com.cloud.storage.VMTemplateHostVO; +import com.cloud.storage.VMTemplateVO; +import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; +import com.cloud.user.Account; @Implementation(method="registerTemplate", manager=Manager.TemplateManager) public class RegisterTemplateCmd extends BaseCmd { @@ -126,167 +139,63 @@ public class RegisterTemplateCmd extends BaseCmd { } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; - } - - -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// String name = (String)params.get(BaseCmd.Properties.NAME.getName()); -// String displayText = (String)params.get(BaseCmd.Properties.DISPLAY_TEXT.getName()); -// Integer bits = (Integer)params.get(BaseCmd.Properties.BITS.getName()); -// Boolean passwordEnabled = (Boolean)params.get(BaseCmd.Properties.PASSWORD_ENABLED.getName()); -// Boolean requiresHVM = (Boolean)params.get(BaseCmd.Properties.REQUIRES_HVM.getName()); -// String url = (String)params.get(BaseCmd.Properties.URL.getName()); -// Boolean isPublic = (Boolean)params.get(BaseCmd.Properties.IS_PUBLIC.getName()); -// Boolean featured = (Boolean)params.get(BaseCmd.Properties.IS_FEATURED.getName()); -// String format = (String)params.get(BaseCmd.Properties.FORMAT.getName()); -// Long guestOSId = (Long) params.get(BaseCmd.Properties.OS_TYPE_ID.getName()); -// Long zoneId = (Long) params.get(BaseCmd.Properties.ZONE_ID.getName()); -// -// //parameters verification -// if (bits == null) { -// bits = Integer.valueOf(64); -// } -// if (passwordEnabled == null) { -// passwordEnabled = false; -// } -// if (requiresHVM == null) { -// requiresHVM = true; -// } -// if (isPublic == null) { -// isPublic = Boolean.FALSE; -// } -// -// if (zoneId.longValue() == -1) { -// zoneId = null; -// } -// -// long accountId = 1L; // default to system account -// if (account != null) { -// accountId = account.getId().longValue(); -// } -// -// Account accountObj; -// if (account == null) { -// accountObj = getManagementServer().findAccountById(accountId); -// } else { -// accountObj = account; -// } -// -// boolean isAdmin = (accountObj.getType() == Account.ACCOUNT_TYPE_ADMIN); -// -// if (!isAdmin && zoneId == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Please specify a valid zone Id."); -// } -// -// if(url.toLowerCase().contains("file://")){ -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "File:// type urls are currently unsupported"); -// } -// -// if((!url.toLowerCase().endsWith("vhd"))&&(!url.toLowerCase().endsWith("vhd.zip")) -// &&(!url.toLowerCase().endsWith("vhd.bz2"))&&(!url.toLowerCase().endsWith("vhd.gz") -// &&(!url.toLowerCase().endsWith("qcow2"))&&(!url.toLowerCase().endsWith("qcow2.zip")) -// &&(!url.toLowerCase().endsWith("qcow2.bz2"))&&(!url.toLowerCase().endsWith("qcow2.gz")))){ -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Please specify a valid "+format.toLowerCase()); -// } -// -// boolean allowPublicUserTemplates = Boolean.parseBoolean(getManagementServer().getConfigurationValue("allow.public.user.templates")); -// if (!isAdmin && !allowPublicUserTemplates && isPublic) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Only private templates can be created."); -// } -// -// if (!isAdmin || featured == null) { -// featured = Boolean.FALSE; -// } -// -// //If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// Long templateId; -// try { -// templateId = getManagementServer().createTemplate(userId, zoneId, name, displayText, isPublic, featured, format, "ext3", url, null, requiresHVM, bits, passwordEnabled, guestOSId, true); -// } catch (InvalidParameterValueException ipve) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Internal error registering template " + name + "; " + ipve.getMessage()); -// } catch (IllegalArgumentException iae) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Internal error registering template " + name + "; " + iae.getMessage()); -// } catch (ResourceAllocationException rae) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Internal error registering template " + name + "; " + rae.getMessage()); -// } catch (Exception ex) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Internal error registering template " + name); -// } -// -// VMTemplateVO template = getManagementServer().findTemplateById(templateId); -// List> templateTags = new ArrayList>(); -// List tTagList = new ArrayList(); -// if (template != null) { -// List zones = null; -// -// if (zoneId != null) { -// zones = new ArrayList(); -// zones.add(getManagementServer().findDataCenterById(zoneId)); -// } else { -// zones = getManagementServer().listDataCenters(); -// } -// -// for (DataCenterVO zone : zones) { -// VMTemplateHostVO templateHostRef = getManagementServer().findTemplateHostRef(templateId, zone.getId()); -// -// // Use embeded object for response -// List> listForEmbeddedObject = new ArrayList>(); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ID.getName(), template.getId().toString())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.NAME.getName(), template.getName())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.DISPLAY_TEXT.getName(), template.getDisplayText())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.IS_PUBLIC.getName(), Boolean.valueOf(template.isPublicTemplate()).toString())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.CROSS_ZONES.getName(), Boolean.valueOf(template.isCrossZones()).toString())); -// -// if (templateHostRef != null) { -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(templateHostRef.getCreated()))); -// } -// -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.IS_READY.getName(), (templateHostRef != null && templateHostRef.getDownloadState() == VMTemplateStorageResourceAssoc.Status.DOWNLOADED))); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.IS_FEATURED.getName(), Boolean.valueOf(template.isFeatured()).toString())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.PASSWORD_ENABLED.getName(), Boolean.valueOf(template.getEnablePassword()).toString())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.FORMAT.getName(), template.getFormat().toString())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.TEMPLATE_STATUS.getName(), "Processing")); -// GuestOS os = getManagementServer().findGuestOSById(template.getGuestOSId()); -// if (os != null) { -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.OS_TYPE_ID.getName(), os.getId())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.OS_TYPE_NAME.getName(), os.getDisplayName())); -// } else { -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.OS_TYPE_ID.getName(), -1)); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.OS_TYPE_NAME.getName(), "")); -// } -// -// Account owner = getManagementServer().findAccountById(template.getAccountId()); -// if (owner != null) { -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ACCOUNT_ID.getName(), owner.getId())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ACCOUNT.getName(), owner.getAccountName())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.DOMAIN_ID.getName(), owner.getDomainId())); -// } -// -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), zone.getId())); -// listForEmbeddedObject.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), zone.getName())); -// -// tTagList.add(listForEmbeddedObject); -// } -// } -// -// Object[] tTag = new Object[tTagList.size()]; -// for (int i = 0; i < tTagList.size(); i++) { -// tTag[i] = tTagList.get(i); -// } -// -// Pair templateTag = new Pair("template", tTag); -// templateTags.add(templateTag); -// -// return templateTags; -// -// } + public ResponseObject getResponse() { + VMTemplateVO template = (VMTemplateVO)getResponseObject(); + + ListResponse response = new ListResponse(); + List responses = new ArrayList(); + List zones = null; + + if (zoneId != null) { + zones = new ArrayList(); + zones.add(ApiDBUtils.findZoneById(zoneId)); + } else { + zones = ApiDBUtils.listZones(); + } + + for (DataCenterVO zone : zones) { + TemplateResponse templateResponse = new TemplateResponse(); + templateResponse.setId(template.getId()); + templateResponse.setName(template.getName()); + templateResponse.setDisplayText(template.getDisplayText()); + templateResponse.setPublic(template.isPublicTemplate()); + templateResponse.setCrossZones(template.isCrossZones()); + + VMTemplateHostVO isoHostRef = ApiDBUtils.findTemplateHostRef(template.getId(), zone.getId()); + if (isoHostRef != null) { + templateResponse.setCreated(isoHostRef.getCreated()); + templateResponse.setReady(isoHostRef.getDownloadState() == Status.DOWNLOADED); + } + + templateResponse.setFeatured(template.isFeatured()); + templateResponse.setPasswordEnabled(template.getEnablePassword()); + templateResponse.setFormat(template.getFormat()); + templateResponse.setStatus("Processing"); + + GuestOS os = ApiDBUtils.findGuestOSById(template.getGuestOSId()); + if (os != null) { + templateResponse.setOsTypeId(os.getId()); + templateResponse.setOsTypeName(os.getDisplayName()); + } else { + templateResponse.setOsTypeId(-1L); + templateResponse.setOsTypeName(""); + } + + Account owner = ApiDBUtils.findAccountById(template.getAccountId()); + if (owner != null) { + templateResponse.setAccountId(owner.getId()); + templateResponse.setAccount(owner.getAccountName()); + templateResponse.setDomainId(owner.getDomainId()); + } + + templateResponse.setZoneId(zone.getId()); + templateResponse.setZoneName(zone.getName()); + templateResponse.setResponseName("template"); + + responses.add(templateResponse); + } + response.setResponseName(getName()); + response.setResponses(responses); + return response; + } } diff --git a/server/src/com/cloud/api/commands/RemoveFromLoadBalancerRuleCmd.java b/server/src/com/cloud/api/commands/RemoveFromLoadBalancerRuleCmd.java index dacb5840d0c..7112124a773 100644 --- a/server/src/com/cloud/api/commands/RemoveFromLoadBalancerRuleCmd.java +++ b/server/src/com/cloud/api/commands/RemoveFromLoadBalancerRuleCmd.java @@ -24,8 +24,10 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.SuccessResponse; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; @Implementation(method="removeFromLoadBalancer", manager=Manager.NetworkManager) public class RemoveFromLoadBalancerRuleCmd extends BaseAsyncCmd { @@ -66,70 +68,17 @@ public class RemoveFromLoadBalancerRuleCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long loadBalancerId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Long instanceId = (Long)params.get(BaseCmd.Properties.VIRTUAL_MACHINE_ID.getName()); -// String instanceIds = (String)params.get(BaseCmd.Properties.VIRTUAL_MACHINE_IDS.getName()); -// -// if ((instanceId == null) && (instanceIds == null)) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "No virtual machine id specified."); -// } -// -// List instanceIdList = new ArrayList(); -// if (instanceIds != null) { -// StringTokenizer st = new StringTokenizer(instanceIds, ","); -// while (st.hasMoreTokens()) { -// String token = st.nextToken(); -// try { -// Long nextInstanceId = Long.parseLong(token); -// instanceIdList.add(nextInstanceId); -// } catch (NumberFormatException nfe) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "The virtual machine id " + token + " is not a valid parameter."); -// } -// } -// } else { -// instanceIdList.add(instanceId); -// } -// -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// LoadBalancerVO loadBalancer = getManagementServer().findLoadBalancerById(loadBalancerId.longValue()); -// -// if (loadBalancer == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find load balancer rule with id " + loadBalancerId); -// } else if (account != null) { -// if (!isAdmin(account.getType()) && (loadBalancer.getAccountId() != account.getId().longValue())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Account " + account.getAccountName() + " does not own load balancer rule " + loadBalancer.getName() + -// " (id:" + loadBalancer.getId() + ")"); -// } else if (!_domainDao.isChildDomain(account.getDomainId(), loadBalancer.getDomainId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid load balancer rule id (" + loadBalancer.getId() + ") given, unable to remove virtual machine instances."); -// } -// } -// -// long jobId = getManagementServer().removeFromLoadBalancerAsync(userId.longValue(), loadBalancerId.longValue(), instanceIdList); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for RemoveFromLoadBalancerRule comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("RemoveFromLoadBalancerRule command has been accepted, job id: " + jobId); -// } -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/RemovePortForwardingServiceCmd.java b/server/src/com/cloud/api/commands/RemovePortForwardingServiceCmd.java index c5a73a1db9b..354dbb03551 100644 --- a/server/src/com/cloud/api/commands/RemovePortForwardingServiceCmd.java +++ b/server/src/com/cloud/api/commands/RemovePortForwardingServiceCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="removeSecurityGroup", manager=Manager.ManagementServer) public class RemovePortForwardingServiceCmd extends BaseAsyncCmd { @@ -64,78 +66,17 @@ public class RemovePortForwardingServiceCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Long securityGroupId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// String publicIp = (String)params.get(BaseCmd.Properties.PUBLIC_IP.getName()); -// Long vmId = (Long)params.get(BaseCmd.Properties.VIRTUAL_MACHINE_ID.getName()); -// -// //verify input parameters -// SecurityGroupVO securityG = getManagementServer().findSecurityGroupById(securityGroupId); -// if (securityG == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find a port forwarding service with id " + securityGroupId); -// } else if (account != null) { -// if (!isAdmin(account.getType()) && (account.getId().longValue() != securityG.getAccountId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find a port forwarding service with id " + securityGroupId + " for this account"); -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), securityG.getDomainId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid port forwarding service id (" + securityGroupId + ") given, unable to remove port forwarding service."); -// } -// } -// -// UserVmVO vmInstance = getManagementServer().findUserVMInstanceById(vmId.longValue()); -// if (vmInstance == null) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId); -// } -// if (account != null) { -// if (!isAdmin(account.getType()) && (account.getId().longValue() != vmInstance.getAccountId())) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId + " for this account"); -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), vmInstance.getDomainId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid virtual machine id (" + vmId + ") given, unable to remove port forwarding service."); -// } -// } -// -// Account ipAddrAccount = getManagementServer().findAccountByIpAddress(publicIp); -// if (ipAddrAccount == null) { -// if (account == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find ip address " + publicIp); -// } else { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "account " + account.getAccountName() + " doesn't own ip address " + publicIp); -// } -// } -// -// Long accountId = ipAddrAccount.getId(); -// if ((account != null) && !isAdmin(account.getType())) { -// if (account.getId().longValue() != accountId) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "account " + account.getAccountName() + " doesn't own ip address " + publicIp); -// } -// } -// -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// long jobId = getManagementServer().removeSecurityGroupAsync(userId, securityGroupId, publicIp, vmId); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for RemovePortForwardingServiceCmd comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("RemovePortForwardingServiceCmd command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } @Override - public String getResponse() { - // TODO Look at executor - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/ResetVMPasswordCmd.java b/server/src/com/cloud/api/commands/ResetVMPasswordCmd.java index 43e5dfb5f3a..fbc248fac9b 100644 --- a/server/src/com/cloud/api/commands/ResetVMPasswordCmd.java +++ b/server/src/com/cloud/api/commands/ResetVMPasswordCmd.java @@ -24,11 +24,13 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="resetVMPassword", manager=Manager.UserVmManager) public class ResetVMPasswordCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(ResetVMPasswordCmd.class.getName()); - + private static final String s_name = "resetpasswordforvirtualmachineresponse"; ///////////////////////////////////////////////////// @@ -50,59 +52,17 @@ public class ResetVMPasswordCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Long vmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// String password = null; -// -// //Verify input parameters -// UserVmVO vmInstance = getManagementServer().findUserVMInstanceById(vmId.longValue()); -// if (vmInstance == null) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId); -// } -// -// if (account != null) { -// if (!isAdmin(account.getType()) && (account.getId().longValue() != vmInstance.getAccountId())) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId + " for this account"); -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), vmInstance.getDomainId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid virtual machine id (" + vmId + ") given, unable to reset password."); -// } -// } -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// VMTemplateVO template = getManagementServer().findTemplateById(vmInstance.getTemplateId()); -// if (template.getEnablePassword()) { -// password = getManagementServer().generateRandomPassword(); -// } else { -// password = "saved_password"; -// } -// -// long jobId = getManagementServer().resetVMPasswordAsync(userId.longValue(), vmId, password); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for ResetVMPassword comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("ResetVMPassword command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } @Override - public String getResponse() { - // TODO Construct response from the executor - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/RevokeNetworkGroupIngressCmd.java b/server/src/com/cloud/api/commands/RevokeNetworkGroupIngressCmd.java index 25d28958a4e..50ac8af8d7b 100644 --- a/server/src/com/cloud/api/commands/RevokeNetworkGroupIngressCmd.java +++ b/server/src/com/cloud/api/commands/RevokeNetworkGroupIngressCmd.java @@ -8,7 +8,10 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; +@SuppressWarnings("rawtypes") @Implementation(method="revokeNetworkGroupIngress", manager=Manager.NetworkGroupManager) public class RevokeNetworkGroupIngressCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(RevokeNetworkGroupIngressCmd.class.getName()); @@ -97,6 +100,7 @@ public class RevokeNetworkGroupIngressCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @@ -105,182 +109,12 @@ public class RevokeNetworkGroupIngressCmd extends BaseAsyncCmd { return "revokenetworkgroupingress"; } -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// String accountName = (String)params.get(BaseCmd.Properties.ACCOUNT.getName()); -// Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Integer startPort = (Integer)params.get(BaseCmd.Properties.START_PORT.getName()); -// Integer endPort = (Integer)params.get(BaseCmd.Properties.END_PORT.getName()); -// Integer icmpType = (Integer)params.get(BaseCmd.Properties.ICMP_TYPE.getName()); -// Integer icmpCode = (Integer)params.get(BaseCmd.Properties.ICMP_CODE.getName()); -// String protocol = (String)params.get(BaseCmd.Properties.PROTOCOL.getName()); -// String networkGroup = (String)params.get(BaseCmd.Properties.NETWORK_GROUP_NAME.getName()); -// String cidrList = (String)params.get(BaseCmd.Properties.CIDR_LIST.getName()); -// Map groupList = (Map)params.get(BaseCmd.Properties.USER_NETWORK_GROUP_LIST.getName()); -// -// Long accountId = null; -// Integer startPortOrType = null; -// Integer endPortOrCode = null; -// if (protocol == null) { -// protocol = "all"; -// } -// //FIXME: for exceptions below, add new enums to BaseCmd.PARAM_ to reflect the error condition more precisely -// if (!NetUtils.isValidNetworkGroupProto(protocol)) { -// s_logger.debug("Invalid protocol specified " + protocol); -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid protocol " + protocol); -// } -// if ("icmp".equalsIgnoreCase(protocol) ) { -// if ((icmpType == null) || (icmpCode == null)) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid ICMP type/code specified, icmpType = " + icmpType + ", icmpCode = " + icmpCode); -// } -// if (icmpType == -1 && icmpCode != -1) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid icmp type range" ); -// } -// if (icmpCode > 255) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid icmp code " ); -// } -// startPortOrType = icmpType; -// endPortOrCode= icmpCode; -// } else if (protocol.equals("all")) { -// if ((startPort != null) || (endPort != null)) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Cannot specify startPort or endPort without specifying protocol"); -// } -// startPortOrType = 0; -// endPortOrCode = 0; -// } else { -// if ((startPort == null) || (endPort == null)) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid port range specified, startPort = " + startPort + ", endPort = " + endPort); -// } -// if (startPort == 0 && endPort == 0) { -// endPort = 65535; -// } -// if (startPort > endPort) { -// s_logger.debug("Invalid port range specified: " + startPort + ":" + endPort); -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid port range " ); -// } -// if (startPort > 65535 || endPort > 65535 || startPort < -1 || endPort < -1) { -// s_logger.debug("Invalid port numbers specified: " + startPort + ":" + endPort); -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid port numbers " ); -// } -// -// if (startPort < 0 || endPort < 0) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid port range " ); -// } -// startPortOrType = startPort; -// endPortOrCode= endPort; -// } -// -// if ((account == null) || isAdmin(account.getType())) { -// if ((accountName != null) && (domainId != null)) { -// // if it's an admin account, do a quick permission check -// if ((account != null) && !getManagementServer().isChildDomain(account.getDomainId(), domainId)) { -// if (s_logger.isDebugEnabled()) { -// s_logger.debug("Unable to find rules for network security group id = " + networkGroup + ", permission denied."); -// } -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to find rules for network security group id = " + networkGroup + ", permission denied."); -// } -// Account groupOwner = getManagementServer().findActiveAccount(accountName, domainId); -// if (groupOwner == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find account " + accountName + " in domain " + domainId); -// } -// accountId = groupOwner.getId(); -// } else { -// if (account != null) { -// accountId = account.getId(); -// domainId = account.getDomainId(); -// } -// } -// } else { -// if (account != null) { -// accountId = account.getId(); -// domainId = account.getDomainId(); -// } -// } -// -// if (accountId == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find account for network security group " + networkGroup + "; failed to revoke ingress."); -// } -// -// NetworkGroupVO sg = getManagementServer().findNetworkGroupByName(accountId, networkGroup); -// if (sg == null) { -// s_logger.debug("Unable to find network security group with id " + networkGroup); -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find network security group with id " + networkGroup); -// } -// -// if (cidrList == null && groupList == null) { -// s_logger.debug("At least one cidr or at least one security group needs to be specified"); -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "At least one cidr or at least one security group needs to be specified"); -// } -// List authorizedCidrs = new ArrayList(); -// if (cidrList != null) { -// if (protocol.equals("all")) { -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Cannot specify cidrs without specifying protocol and ports."); -// } -// String [] cidrs = cidrList.split(","); -// for (String cidr: cidrs) { -// if (!NetUtils.isValidCIDR(cidr)) { -// s_logger.debug( "Invalid cidr (" + cidr + ") given, unable to revoke ingress."); -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid cidr (" + cidr + ") given, unable to revoke ingress."); -// } -// authorizedCidrs.add(cidr); -// } -// } -// -// List authorizedGroups = new ArrayList (); -// if (groupList != null) { -// Collection userGroupCollection = groupList.values(); -// Iterator iter = userGroupCollection.iterator(); -// while (iter.hasNext()) { -// HashMap userGroup = (HashMap)iter.next(); -// String group = (String)userGroup.get("group"); -// String authorizedAccountName = (String)userGroup.get("account"); -// if ((group == null) || (authorizedAccountName == null)) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid user group specified, fields 'group' and 'account' cannot be null, please specify groups in the form: userGroupList[0].group=XXX&userGroupList[0].account=YYY"); -// } -// -// Account authorizedAccount = getManagementServer().findActiveAccount(authorizedAccountName, domainId); -// if (authorizedAccount == null) { -// if (s_logger.isDebugEnabled()) { -// s_logger.debug("Nonexistent account: " + authorizedAccountName + ", domainid: " + domainId + " when trying to revoke ingress for " + networkGroup + ":" + protocol + ":" + startPortOrType + ":" + endPortOrCode); -// } -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Nonexistent account: " + authorizedAccountName + " when trying to revoke ingress for " + networkGroup + ":" + protocol + ":" + startPortOrType + ":" + endPortOrCode); -// } -// -// NetworkGroupVO groupVO = getManagementServer().findNetworkGroupByName(authorizedAccount.getId(), group); -// if (groupVO == null) { -// if (s_logger.isDebugEnabled()) { -// s_logger.debug("Nonexistent group and/or accountId: " + accountId + ", groupName=" + group); -// } -// throw new ServerApiException(BaseCmd.NET_INVALID_PARAM_ERROR, "Invalid account/group pair (" + userGroup + ") given, unable to revoke ingress."); -// } -// authorizedGroups.add(groupVO); -// } -// } -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// long jobId = getManagementServer().revokeNetworkGroupIngressAsync(accountId, networkGroup, protocol, startPortOrType, endPortOrCode, authorizedCidrs.toArray(new String[authorizedCidrs.size()]), authorizedGroups); -// -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for RevokeNetworkGroupIngressCmd command"); -// } else { -// if (s_logger.isDebugEnabled()) -// s_logger.debug("RevokeNetworkGroupIngressCmd command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Fix response - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/StartRouterCmd.java b/server/src/com/cloud/api/commands/StartRouterCmd.java index b5317b5d272..d2cbb1dca56 100644 --- a/server/src/com/cloud/api/commands/StartRouterCmd.java +++ b/server/src/com/cloud/api/commands/StartRouterCmd.java @@ -25,7 +25,7 @@ import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.ApiResponseSerializer; +import com.cloud.api.ResponseObject; import com.cloud.api.response.DomainRouterResponse; import com.cloud.user.Account; import com.cloud.vm.DomainRouterVO; @@ -65,7 +65,7 @@ public class StartRouterCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { DomainRouterResponse routerResponse = new DomainRouterResponse(); DomainRouterVO router = (DomainRouterVO)getResponseObject(); @@ -105,6 +105,6 @@ public class StartRouterCmd extends BaseAsyncCmd { } routerResponse.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(routerResponse); + return routerResponse; } } diff --git a/server/src/com/cloud/api/commands/StartSystemVMCmd.java b/server/src/com/cloud/api/commands/StartSystemVMCmd.java index 8b310e612bb..fb84fe38f1d 100644 --- a/server/src/com/cloud/api/commands/StartSystemVMCmd.java +++ b/server/src/com/cloud/api/commands/StartSystemVMCmd.java @@ -22,10 +22,16 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.SystemVmResponse; +import com.cloud.api.ApiDBUtils; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.vm.ConsoleProxyVO; +import com.cloud.vm.SecondaryStorageVmVO; +import com.cloud.vm.VMInstanceVO; -@Implementation(method="stopSystemVM", manager=Manager.ManagementServer) +@Implementation(method="startSystemVM", manager=Manager.ManagementServer) public class StartSystemVMCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(StartSystemVMCmd.class.getName()); @@ -50,6 +56,7 @@ public class StartSystemVMCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @@ -57,32 +64,53 @@ public class StartSystemVMCmd extends BaseAsyncCmd { public static String getResultObjectName() { return "systemvm"; } - -// public List> execute(Map params) { -// Long sysvmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// // verify parameters -// VMInstanceVO sysVm = getManagementServer().findSystemVMById(sysvmId); -// if (sysVm == null) { -// throw new ServerApiException (BaseCmd.PARAM_ERROR, "unable to find a system vm with id " + sysvmId); -// } -// -// long jobId = getManagementServer().startSystemVmAsync(sysvmId.longValue()); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for StartSystemVM comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("StartSystemVM command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } @Override - public String getResponse() { - // TODO COnstruct response based on executor - return null; + public ResponseObject getResponse() { + VMInstanceVO instance = (VMInstanceVO)getResponseObject(); + + SystemVmResponse response = new SystemVmResponse(); + response.setId(instance.getId()); + response.setName(instance.getName()); + response.setZoneId(instance.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(instance.getDataCenterId()).getName()); + response.setPodId(instance.getPodId()); + response.setHostId(instance.getHostId()); + if (response.getHostId() != null) { + response.setHostName(ApiDBUtils.findHostById(instance.getHostId()).getName()); + } + + response.setPrivateIp(instance.getPrivateIpAddress()); + response.setPrivateMacAddress(instance.getPrivateMacAddress()); + response.setPrivateNetmask(instance.getPrivateNetmask()); + response.setTemplateId(instance.getTemplateId()); + response.setCreated(instance.getCreated()); + response.setState(instance.getState().toString()); + + if (instance instanceof SecondaryStorageVmVO) { + SecondaryStorageVmVO ssVm = (SecondaryStorageVmVO) instance; + response.setDns1(ssVm.getDns1()); + response.setDns2(ssVm.getDns2()); + response.setNetworkDomain(ssVm.getDomain()); + response.setGateway(ssVm.getGateway()); + + response.setPublicIp(ssVm.getPublicIpAddress()); + response.setPublicMacAddress(ssVm.getPublicMacAddress()); + response.setPublicNetmask(ssVm.getPublicNetmask()); + } else if (instance instanceof ConsoleProxyVO) { + ConsoleProxyVO proxy = (ConsoleProxyVO)instance; + response.setDns1(proxy.getDns1()); + response.setDns2(proxy.getDns2()); + response.setNetworkDomain(proxy.getDomain()); + response.setGateway(proxy.getGateway()); + + response.setPublicIp(proxy.getPublicIpAddress()); + response.setPublicMacAddress(proxy.getPublicMacAddress()); + response.setPublicNetmask(proxy.getPublicNetmask()); + response.setActiveViewerSessions(proxy.getActiveSession()); + } + + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/StartVMCmd.java b/server/src/com/cloud/api/commands/StartVMCmd.java index 78374e2d3e0..df3119843bf 100644 --- a/server/src/com/cloud/api/commands/StartVMCmd.java +++ b/server/src/com/cloud/api/commands/StartVMCmd.java @@ -21,10 +21,18 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseAsyncCmd; +import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.UserVmResponse; +import com.cloud.offering.ServiceOffering; +import com.cloud.storage.VMTemplateVO; +import com.cloud.user.Account; +import com.cloud.uservm.UserVm; @Implementation(method="startVirtualMachine", manager=Manager.UserVmManager) public class StartVMCmd extends BaseAsyncCmd { @@ -51,6 +59,7 @@ public class StartVMCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } @@ -58,52 +67,94 @@ public class StartVMCmd extends BaseAsyncCmd { public static String getResultObjectName() { return "virtualmachine"; } - -// @Override -// public List> execute(Map params) { -// Long vmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// -// //if account is removed, return error -// if(account!=null && account.getRemoved() != null) -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "The account " + account.getId()+" is removed"); -// -// //Verify input parameters -// UserVmVO vmInstanceCheck = getManagementServer().findUserVMInstanceById(vmId.longValue()); -// if (vmInstanceCheck == null) { -// throw new ServerApiException (BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId); -// } -// -// if (account != null) { -// if (!isAdmin(account.getType()) && (account.getId().longValue() != vmInstanceCheck.getAccountId())) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId + " for this account"); -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), vmInstanceCheck.getDomainId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid virtual machine id (" + vmId + ") given, unable to start virtual machine."); -// } -// } -// -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// long jobId = getManagementServer().startVirtualMachineAsync(userId.longValue(), vmId.longValue(), null); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for StartVM comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("StartVM command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// -// return returnValues; -// } @Override - public String getResponse() { - // TODO Add the response object as per executor - return null; + public ResponseObject getResponse() { + UserVm vm = (UserVm)getResponseObject(); + + UserVmResponse response = new UserVmResponse(); + response.setId(vm.getId()); + response.setName(vm.getName()); + response.setCreated(vm.getCreated()); + response.setZoneId(vm.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(vm.getDataCenterId()).getName()); + response.setPrivateIp(vm.getPrivateIpAddress()); + response.setServiceOfferingId(vm.getServiceOfferingId()); + response.setHaEnable(vm.isHaEnabled()); + if (vm.getDisplayName() == null || vm.getDisplayName().length() == 0) { + response.setDisplayName(vm.getName()); + } else { + response.setDisplayName(vm.getDisplayName()); + } + + if (vm.getGroup() != null) { + response.setGroup(vm.getGroup()); + } + + if (vm.getState() != null) { + response.setState(vm.getState().toString()); + } + + Account acct = ApiDBUtils.findAccountById(vm.getAccountId()); + if (acct != null) { + response.setAccountName(acct.getAccountName()); + response.setDomainId(acct.getDomainId()); + response.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); + } + + if (BaseCmd.isAdmin(acct.getType()) && (vm.getHostId() != null)) { + response.setHostName(ApiDBUtils.findHostById(vm.getHostId()).getName()); + response.setHostId(vm.getHostId()); + } + + String templateName = "ISO Boot"; + boolean templatePasswordEnabled = false; + String templateDisplayText = "ISO Boot"; + + VMTemplateVO template = ApiDBUtils.findTemplateById(vm.getTemplateId()); + if (template != null) { + templateName = template.getName(); + templatePasswordEnabled = template.getEnablePassword(); + templateDisplayText = template.getDisplayText(); + if (templateDisplayText == null) { + templateDisplayText = templateName; + } + } + + response.setTemplateId(vm.getTemplateId()); + response.setTemplateName(templateName); + response.setTemplateDisplayText(templateDisplayText); + response.setPasswordEnabled(templatePasswordEnabled); + if (templatePasswordEnabled) { + response.setPassword(null); // FIXME: Where should password come from? In the old framework, password was always passed + // in to composeResultObject() as null, so that behavior is preserved... + } else { + response.setPassword(""); + } + + String isoName = null; + if (vm.getIsoId() != null) { + VMTemplateVO iso = ApiDBUtils.findTemplateById(vm.getIsoId().longValue()); + if (iso != null) { + isoName = iso.getName(); + } + } + + response.setIsoId(vm.getIsoId()); + response.setIsoName(isoName); + + ServiceOffering offering = ApiDBUtils.findServiceOfferingById(vm.getServiceOfferingId()); + response.setServiceOfferingId(vm.getServiceOfferingId()); + response.setServiceOfferingName(offering.getName()); + + response.setCpuNumber(offering.getCpu()); + response.setCpuSpeed(offering.getSpeed()); + response.setMemory(offering.getRamSize()); + + //Network groups + response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(vm.getId())); + + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/StopRouterCmd.java b/server/src/com/cloud/api/commands/StopRouterCmd.java index e2cd9df6efb..5c4a7fd2c3b 100644 --- a/server/src/com/cloud/api/commands/StopRouterCmd.java +++ b/server/src/com/cloud/api/commands/StopRouterCmd.java @@ -25,8 +25,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @@ -59,7 +59,7 @@ public class StopRouterCmd extends BaseAsyncCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -70,6 +70,6 @@ public class StopRouterCmd extends BaseAsyncCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/StopSystemVmCmd.java b/server/src/com/cloud/api/commands/StopSystemVmCmd.java index 0fac7e6b8fb..9d337a81d24 100644 --- a/server/src/com/cloud/api/commands/StopSystemVmCmd.java +++ b/server/src/com/cloud/api/commands/StopSystemVmCmd.java @@ -20,10 +20,16 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; +import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SystemVmResponse; +import com.cloud.vm.ConsoleProxyVO; +import com.cloud.vm.SecondaryStorageVmVO; +import com.cloud.vm.VMInstanceVO; @Implementation(method="stopSystemVM", manager=Manager.ManagementServer) public class StopSystemVmCmd extends BaseAsyncCmd { @@ -50,35 +56,57 @@ public class StopSystemVmCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// public List> execute(Map params) { -// Long sysVmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// // verify parameters -// VMInstanceVO systemVM = getManagementServer().findSystemVMById(sysVmId); -// if (systemVM == null) { -// throw new ServerApiException (BaseCmd.PARAM_ERROR, "unable to find a system vm with id " + sysVmId); -// } -// -// long jobId = getManagementServer().stopSystemVmAsync(sysVmId.longValue()); -// if(jobId == 0) { -// s_logger.warn("Unable to schedule async-job for StopSystemVM comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("StopSystemVM command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// return returnValues; -// } @Override - public String getResponse() { - // TODO Construct the response object (refer executor) - return null; + public ResponseObject getResponse() { + VMInstanceVO instance = (VMInstanceVO)getResponseObject(); + + SystemVmResponse response = new SystemVmResponse(); + response.setId(instance.getId()); + response.setName(instance.getName()); + response.setZoneId(instance.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(instance.getDataCenterId()).getName()); + response.setPodId(instance.getPodId()); + response.setHostId(instance.getHostId()); + if (response.getHostId() != null) { + response.setHostName(ApiDBUtils.findHostById(instance.getHostId()).getName()); + } + + response.setPrivateIp(instance.getPrivateIpAddress()); + response.setPrivateMacAddress(instance.getPrivateMacAddress()); + response.setPrivateNetmask(instance.getPrivateNetmask()); + response.setTemplateId(instance.getTemplateId()); + response.setCreated(instance.getCreated()); + response.setState(instance.getState().toString()); + + if (instance instanceof SecondaryStorageVmVO) { + SecondaryStorageVmVO ssVm = (SecondaryStorageVmVO) instance; + response.setDns1(ssVm.getDns1()); + response.setDns2(ssVm.getDns2()); + response.setNetworkDomain(ssVm.getDomain()); + response.setGateway(ssVm.getGateway()); + + response.setPublicIp(ssVm.getPublicIpAddress()); + response.setPublicMacAddress(ssVm.getPublicMacAddress()); + response.setPublicNetmask(ssVm.getPublicNetmask()); + } else if (instance instanceof ConsoleProxyVO) { + ConsoleProxyVO proxy = (ConsoleProxyVO)instance; + response.setDns1(proxy.getDns1()); + response.setDns2(proxy.getDns2()); + response.setNetworkDomain(proxy.getDomain()); + response.setGateway(proxy.getGateway()); + + response.setPublicIp(proxy.getPublicIpAddress()); + response.setPublicMacAddress(proxy.getPublicMacAddress()); + response.setPublicNetmask(proxy.getPublicNetmask()); + response.setActiveViewerSessions(proxy.getActiveSession()); + } + + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/StopVMCmd.java b/server/src/com/cloud/api/commands/StopVMCmd.java index d77142584b2..63bf6806945 100644 --- a/server/src/com/cloud/api/commands/StopVMCmd.java +++ b/server/src/com/cloud/api/commands/StopVMCmd.java @@ -22,8 +22,16 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.UserVmResponse; +import com.cloud.api.ApiDBUtils; +import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.offering.ServiceOffering; +import com.cloud.storage.VMTemplateVO; +import com.cloud.user.Account; +import com.cloud.uservm.UserVm; @Implementation(method="stopVirtualMachine", manager=Manager.UserVmManager) public class StopVMCmd extends BaseAsyncCmd { @@ -50,52 +58,98 @@ public class StopVMCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long vmId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// -// // Verify input parameters -// UserVmVO vmInstance = getManagementServer().findUserVMInstanceById(vmId.longValue()); -// if (vmInstance == null) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId); -// } -// -// if (account != null) { -// if (!isAdmin(account.getType()) && (account.getId().longValue() != vmInstance.getAccountId())) { -// throw new ServerApiException(BaseCmd.VM_INVALID_PARAM_ERROR, "unable to find a virtual machine with id " + vmId + " for this account"); -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), vmInstance.getDomainId())) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid virtual machine id (" + vmId + ") given, unable to sop virtual machine."); -// } -// } -// -// // If command is executed via 8096 port, set userId to the id of System account (1) -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// long jobId = getManagementServer().stopVirtualMachineAsync(userId.longValue(), vmId.longValue()); -// if (jobId == 0) { -// s_logger.warn("Unable to schedule async-job for StopVM comamnd"); -// } else { -// if(s_logger.isDebugEnabled()) -// s_logger.debug("StopVM command has been accepted, job id: " + jobId); -// } -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); -// -// return returnValues; -// } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + UserVm vm = (UserVm)getResponseObject(); + + UserVmResponse response = new UserVmResponse(); + response.setId(vm.getId()); + response.setName(vm.getName()); + response.setCreated(vm.getCreated()); + response.setZoneId(vm.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(vm.getDataCenterId()).getName()); + response.setPrivateIp(vm.getPrivateIpAddress()); + response.setServiceOfferingId(vm.getServiceOfferingId()); + response.setHaEnable(vm.isHaEnabled()); + if (vm.getDisplayName() == null || vm.getDisplayName().length() == 0) { + response.setDisplayName(vm.getName()); + } else { + response.setDisplayName(vm.getDisplayName()); + } + + if (vm.getGroup() != null) { + response.setGroup(vm.getGroup()); + } + + if (vm.getState() != null) { + response.setState(vm.getState().toString()); + } + + Account acct = ApiDBUtils.findAccountById(vm.getAccountId()); + if (acct != null) { + response.setAccountName(acct.getAccountName()); + response.setDomainId(acct.getDomainId()); + response.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); + } + + if (BaseCmd.isAdmin(acct.getType()) && (vm.getHostId() != null)) { + response.setHostName(ApiDBUtils.findHostById(vm.getHostId()).getName()); + response.setHostId(vm.getHostId()); + } + + String templateName = "ISO Boot"; + boolean templatePasswordEnabled = false; + String templateDisplayText = "ISO Boot"; + + VMTemplateVO template = ApiDBUtils.findTemplateById(vm.getTemplateId()); + if (template != null) { + templateName = template.getName(); + templatePasswordEnabled = template.getEnablePassword(); + templateDisplayText = template.getDisplayText(); + if (templateDisplayText == null) { + templateDisplayText = templateName; + } + } + + response.setTemplateId(vm.getTemplateId()); + response.setTemplateName(templateName); + response.setTemplateDisplayText(templateDisplayText); + response.setPasswordEnabled(templatePasswordEnabled); + if (templatePasswordEnabled) { + response.setPassword(null); // FIXME: Where should password come from? In the old framework, password was always passed + // in to composeResultObject() as null, so that behavior is preserved... + } else { + response.setPassword(""); + } + + String isoName = null; + if (vm.getIsoId() != null) { + VMTemplateVO iso = ApiDBUtils.findTemplateById(vm.getIsoId().longValue()); + if (iso != null) { + isoName = iso.getName(); + } + } + + response.setIsoId(vm.getIsoId()); + response.setIsoName(isoName); + + ServiceOffering offering = ApiDBUtils.findServiceOfferingById(vm.getServiceOfferingId()); + response.setServiceOfferingId(vm.getServiceOfferingId()); + response.setServiceOfferingName(offering.getName()); + + response.setCpuNumber(offering.getCpu()); + response.setCpuSpeed(offering.getSpeed()); + response.setMemory(offering.getRamSize()); + + //Network groups + response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(vm.getId())); + + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateAccountCmd.java b/server/src/com/cloud/api/commands/UpdateAccountCmd.java index b5fc7516741..9b91e966282 100644 --- a/server/src/com/cloud/api/commands/UpdateAccountCmd.java +++ b/server/src/com/cloud/api/commands/UpdateAccountCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="updateAccount", manager=Manager.ManagementServer) @@ -72,7 +72,7 @@ public class UpdateAccountCmd extends BaseCmd{ } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -83,6 +83,6 @@ public class UpdateAccountCmd extends BaseCmd{ } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateCfgCmd.java b/server/src/com/cloud/api/commands/UpdateCfgCmd.java index 7b616db50ec..de731a40b80 100644 --- a/server/src/com/cloud/api/commands/UpdateCfgCmd.java +++ b/server/src/com/cloud/api/commands/UpdateCfgCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="updateConfiguration", manager=Manager.ConfigManager) @@ -64,7 +64,7 @@ public class UpdateCfgCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -75,6 +75,6 @@ public class UpdateCfgCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateDiskOfferingCmd.java b/server/src/com/cloud/api/commands/UpdateDiskOfferingCmd.java index c27807ffb03..33dc9cbcf68 100644 --- a/server/src/com/cloud/api/commands/UpdateDiskOfferingCmd.java +++ b/server/src/com/cloud/api/commands/UpdateDiskOfferingCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.DiskOfferingResponse; import com.cloud.storage.DiskOfferingVO; @@ -80,7 +80,7 @@ public class UpdateDiskOfferingCmd extends BaseCmd{ return s_name; } - public String getResponse() { + public ResponseObject getResponse() { DiskOfferingResponse response = new DiskOfferingResponse(); DiskOfferingVO responseObject = (DiskOfferingVO)getResponseObject(); if (responseObject != null) { @@ -98,6 +98,6 @@ public class UpdateDiskOfferingCmd extends BaseCmd{ } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateDomainCmd.java b/server/src/com/cloud/api/commands/UpdateDomainCmd.java index 864bda37a31..5218d77ee60 100644 --- a/server/src/com/cloud/api/commands/UpdateDomainCmd.java +++ b/server/src/com/cloud/api/commands/UpdateDomainCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.SuccessResponse; @Implementation(method="updateDomain", manager=Manager.ManagementServer) @@ -65,7 +65,7 @@ public class UpdateDomainCmd extends BaseCmd{ } @Override - public String getResponse() { + public ResponseObject getResponse() { SuccessResponse response = new SuccessResponse(); Boolean responseObject = (Boolean)getResponseObject(); @@ -76,6 +76,6 @@ public class UpdateDomainCmd extends BaseCmd{ } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateHostCmd.java b/server/src/com/cloud/api/commands/UpdateHostCmd.java index 07fb48a8071..ba776089f66 100644 --- a/server/src/com/cloud/api/commands/UpdateHostCmd.java +++ b/server/src/com/cloud/api/commands/UpdateHostCmd.java @@ -31,8 +31,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.HostResponse; import com.cloud.dc.ClusterVO; import com.cloud.host.Host; @@ -84,7 +84,7 @@ public class UpdateHostCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { HostResponse hostResponse = new HostResponse(); HostVO host = (HostVO)getResponseObject(); if (host != null) { @@ -177,6 +177,6 @@ public class UpdateHostCmd extends BaseCmd { } hostResponse.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(hostResponse); + return hostResponse; } } diff --git a/server/src/com/cloud/api/commands/UpdateIPForwardingRuleCmd.java b/server/src/com/cloud/api/commands/UpdateIPForwardingRuleCmd.java index 608592662b1..89821aaf9a4 100644 --- a/server/src/com/cloud/api/commands/UpdateIPForwardingRuleCmd.java +++ b/server/src/com/cloud/api/commands/UpdateIPForwardingRuleCmd.java @@ -2,10 +2,15 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; +import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.FirewallRuleResponse; +import com.cloud.network.FirewallRuleVO; +import com.cloud.uservm.UserVm; @Implementation(method="updatePortForwardingRule", manager=Manager.ManagementServer) public class UpdateIPForwardingRuleCmd extends BaseAsyncCmd { @@ -66,88 +71,26 @@ public class UpdateIPForwardingRuleCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// String publicIp = (String)params.get(BaseCmd.Properties.PUBLIC_IP.getName()); -// String publicPort = (String)params.get(BaseCmd.Properties.PUBLIC_PORT.getName()); -// String privateIp = (String)params.get(BaseCmd.Properties.PRIVATE_IP.getName()); -// String privatePort = (String)params.get(BaseCmd.Properties.PRIVATE_PORT.getName()); -// String protocol = (String)params.get(BaseCmd.Properties.PROTOCOL.getName()); -// Long vmId = (Long)params.get(BaseCmd.Properties.VIRTUAL_MACHINE_ID.getName()); -// UserVmVO userVM = null; -// -// if (userId == null) { -// userId = Long.valueOf(User.UID_SYSTEM); -// } -// -// IPAddressVO ipAddressVO = getManagementServer().findIPAddressById(publicIp); -// if (ipAddressVO == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find IP address " + publicIp); -// } -// -// if (ipAddressVO.getAccountId() == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to update port forwarding rule, owner of IP address " + publicIp + " not found."); -// } -// -// if (privateIp != null) { -// if (!NetUtils.isValidIp(privateIp)) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid private IP address specified: " + privateIp); -// } -// Criteria c = new Criteria(); -// c.addCriteria(Criteria.ACCOUNTID, new Object[] {ipAddressVO.getAccountId()}); -// c.addCriteria(Criteria.DATACENTERID, ipAddressVO.getDataCenterId()); -// c.addCriteria(Criteria.IPADDRESS, privateIp); -// List userVMs = getManagementServer().searchForUserVMs(c); -// if ((userVMs == null) || userVMs.isEmpty()) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid private IP address specified: " + privateIp + ", no virtual machine instances running with that address."); -// } -// userVM = userVMs.get(0); -// } else if (vmId != null) { -// userVM = getManagementServer().findUserVMInstanceById(vmId); -// if (userVM == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find virtual machine with id " + vmId); -// } -// -// if ((ipAddressVO.getAccountId() == null) || (ipAddressVO.getAccountId().longValue() != userVM.getAccountId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to update port forwarding rule on IP address " + publicIp + ", permission denied."); -// } -// -// if (ipAddressVO.getDataCenterId() != userVM.getDataCenterId()) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to update port forwarding rule, IP address " + publicIp + " is not in the same availability zone as virtual machine " + userVM.toString()); -// } -// -// privateIp = userVM.getGuestIpAddress(); -// } else { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "No private IP address (privateip) or virtual machine instance id (virtualmachineid) specified, unable to update port forwarding rule"); -// } -// -// // if an admin account was passed in, or no account was passed in, make sure we honor the accountName/domainId parameters -// if (account != null) { -// if (isAdmin(account.getType())) { -// if (!getManagementServer().isChildDomain(account.getDomainId(), ipAddressVO.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to update port forwarding rule on IP address " + publicIp + ", permission denied."); -// } -// } else if (account.getId().longValue() != ipAddressVO.getAccountId()) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to update port forwarding rule on IP address " + publicIp + ", permission denied."); -// } -// } -// -// long jobId = getManagementServer().updatePortForwardingRuleAsync(userId, ipAddressVO.getAccountId().longValue(), publicIp, privateIp, publicPort, privatePort, protocol); -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId).toString())); -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + FirewallRuleVO fwRule = (FirewallRuleVO)getResponseObject(); + + FirewallRuleResponse response = new FirewallRuleResponse(); + response.setId(fwRule.getId()); + response.setPrivatePort(fwRule.getPrivatePort()); + response.setProtocol(fwRule.getProtocol()); + response.setPublicPort(fwRule.getPublicPort()); + + UserVm vm = ApiDBUtils.findUserVmByPublicIpAndGuestIp(fwRule.getPublicIpAddress(), fwRule.getPrivateIpAddress()); + response.setVirtualMachineId(vm.getId()); + response.setVirtualMachineName(vm.getName()); + + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateIsoCmd.java b/server/src/com/cloud/api/commands/UpdateIsoCmd.java index f738a431139..060fe2a13c2 100644 --- a/server/src/com/cloud/api/commands/UpdateIsoCmd.java +++ b/server/src/com/cloud/api/commands/UpdateIsoCmd.java @@ -23,8 +23,8 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.TemplateResponse; import com.cloud.storage.VMTemplateVO; @@ -55,7 +55,7 @@ public class UpdateIsoCmd extends UpdateTemplateOrIsoCmd { return s_name; } - public String getResponse() { + public ResponseObject getResponse() { TemplateResponse response = new TemplateResponse(); VMTemplateVO responseObject = (VMTemplateVO)getResponseObject(); if (responseObject != null) { @@ -73,6 +73,6 @@ public class UpdateIsoCmd extends UpdateTemplateOrIsoCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateIsoPermissionsCmd.java b/server/src/com/cloud/api/commands/UpdateIsoPermissionsCmd.java index 72dae7bbc85..c8ab2e02668 100644 --- a/server/src/com/cloud/api/commands/UpdateIsoPermissionsCmd.java +++ b/server/src/com/cloud/api/commands/UpdateIsoPermissionsCmd.java @@ -10,9 +10,8 @@ public class UpdateIsoPermissionsCmd extends UpdateTemplateOrIsoPermissionsCmd { protected String getResponseName() { return "updateisopermissionsresponse"; } - + protected Logger getLogger() { return Logger.getLogger(UpdateIsoPermissionsCmd.class.getName()); } - } diff --git a/server/src/com/cloud/api/commands/UpdateLoadBalancerRuleCmd.java b/server/src/com/cloud/api/commands/UpdateLoadBalancerRuleCmd.java index 5541f54e9c9..8b60e7e84ce 100644 --- a/server/src/com/cloud/api/commands/UpdateLoadBalancerRuleCmd.java +++ b/server/src/com/cloud/api/commands/UpdateLoadBalancerRuleCmd.java @@ -4,8 +4,12 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.response.LoadBalancerResponse; +import com.cloud.api.ApiDBUtils; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.network.LoadBalancerVO; @Implementation(method="updateLoadBalancerRule", manager=Manager.NetworkManager) public class UpdateLoadBalancerRuleCmd extends BaseAsyncCmd { @@ -59,56 +63,28 @@ public class UpdateLoadBalancerRuleCmd extends BaseAsyncCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } -// @Override -// public List> execute(Map params) { -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// String name = (String)params.get(BaseCmd.Properties.NAME.getName()); -// String description = (String)params.get(BaseCmd.Properties.DESCRIPTION.getName()); -// String privatePort = (String)params.get(BaseCmd.Properties.PRIVATE_PORT.getName()); -// String algorithm = (String)params.get(BaseCmd.Properties.ALGORITHM.getName()); -// Long loadBalancerId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// -// if (userId == null) { -// userId = Long.valueOf(1); -// } -// -// LoadBalancerVO lb = getManagementServer().findLoadBalancerById(loadBalancerId); -// if (lb == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find load balancer rule " + loadBalancerId + " for update."); -// } -// -// // Verify input parameters -// Account lbOwner = getManagementServer().findAccountById(lb.getAccountId()); -// if (lbOwner == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to update load balancer rule, cannot find owning account"); -// } -// -// Long accountId = lbOwner.getId(); -// if (account != null) { -// if (!isAdmin(account.getType())) { -// if (account.getId().longValue() != accountId.longValue()) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to update load balancer rule, permission denied"); -// } -// } else if (!getManagementServer().isChildDomain(account.getDomainId(), lbOwner.getDomainId())) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to update load balancer rule, permission denied."); -// } -// } -// -// long jobId = getManagementServer().updateLoadBalancerRuleAsync(userId, lb.getAccountId(), lb.getId().longValue(), name, description, privatePort, algorithm); -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId).toString())); -// return returnValues; -// } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; + public ResponseObject getResponse() { + LoadBalancerVO loadBalancer = (LoadBalancerVO)getResponseObject(); + + LoadBalancerResponse response = new LoadBalancerResponse(); + response.setAlgorithm(loadBalancer.getAlgorithm()); + response.setDescription(loadBalancer.getDescription()); + response.setId(loadBalancer.getId()); + response.setName(loadBalancer.getName()); + response.setPrivatePort(loadBalancer.getPrivatePort()); + response.setPublicIp(loadBalancer.getIpAddress()); + response.setPublicPort(loadBalancer.getPublicPort()); + response.setAccountName(loadBalancer.getAccountName()); + response.setDomainId(loadBalancer.getDomainId()); + response.setDomainName(ApiDBUtils.findDomainById(loadBalancer.getDomainId()).getName()); + + response.setResponseName(getName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdatePodCmd.java b/server/src/com/cloud/api/commands/UpdatePodCmd.java index ae9e0087dcd..15032673f4a 100644 --- a/server/src/com/cloud/api/commands/UpdatePodCmd.java +++ b/server/src/com/cloud/api/commands/UpdatePodCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="editPod", manager=Manager.ConfigManager) public class UpdatePodCmd extends BaseCmd { @@ -90,58 +92,27 @@ public class UpdatePodCmd extends BaseCmd { } @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; - } + public ResponseObject getResponse() { + /* Not sure why we aren't returning the Pod here, but I'll keep the old "success" response we used to have + HostPodVO pod = (HostPodVO)getResponseObject(); -// @Override -// public List> execute(Map params) { -// Long podId = (Long) params.get(BaseCmd.Properties.ID.getName()); -// String podName = (String) params.get(BaseCmd.Properties.NAME.getName()); -// String gateway = (String) params.get(BaseCmd.Properties.GATEWAY.getName()); -// String cidr = (String) params.get(BaseCmd.Properties.CIDR.getName()); -// String startIp = (String) params.get(BaseCmd.Properties.START_IP.getName()); -// String endIp = (String) params.get(BaseCmd.Properties.END_IP.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// -// if (userId == null) { -// userId = Long.valueOf(User.UID_SYSTEM); -// } -// -// //verify parameters -// HostPodVO pod = getManagementServer().findHostPodById(podId); -// if (pod == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find pod by id " + podId); -// } -// -// long zoneId = pod.getDataCenterId(); -// DataCenterVO zone = getManagementServer().findDataCenterById(zoneId); -// if (zone == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to find zone by id " + zoneId); -// } -// -// if (endIp != null && startIp == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "If an end IP is specified, a start IP must be specified."); -// } -// -// HostPodVO updatedPod = null; -// try { -// updatedPod = getManagementServer().editPod(userId, podId, podName, gateway, cidr, startIp, endIp); -// } catch (Exception ex) { -// s_logger.error("Exception updating pod", ex); -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, ex.getMessage()); -// } -// -// List> returnValues = new ArrayList>(); -// -// if (updatedPod == null) { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update pod; internal error."); -// } else { -// returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), "true")); -// returnValues.add(new Pair(BaseCmd.Properties.DISPLAY_TEXT.getName(), "Successfully updated pod.")); -// } -// -// return returnValues; -// } + PodResponse response = new PodResponse(); + response.setId(pod.getId()); + response.setCidr(pod.getCidrAddress() + "/" + pod.getCidrSize()); + response.setEndIp(endIp == null ? "" : endIp); + response.setStartIp(startIp); + response.setZoneName(ApiDBUtils.findZoneById(pod.getDataCenterId()).getName()); + response.setGateway(pod.getGateway()); + response.setName(pod.getName()); + response.setZoneId(pod.getDataCenterId()); + + response.setResponseName(getName()); + return response; + */ + SuccessResponse response = new SuccessResponse(); + response.setSuccess(Boolean.TRUE); + //response.setDisplayText("Successfully updated pod."); + response.setResponseName(getName()); + return response; + } } diff --git a/server/src/com/cloud/api/commands/UpdateResourceLimitCmd.java b/server/src/com/cloud/api/commands/UpdateResourceLimitCmd.java index b55400accf5..2cd417aff66 100644 --- a/server/src/com/cloud/api/commands/UpdateResourceLimitCmd.java +++ b/server/src/com/cloud/api/commands/UpdateResourceLimitCmd.java @@ -20,10 +20,15 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; +import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.ResourceLimitResponse; +import com.cloud.configuration.ResourceLimitVO; +import com.cloud.user.Account; @Implementation(method="updateResourceLimit", manager=Manager.AccountManager) public class UpdateResourceLimitCmd extends BaseCmd { @@ -77,118 +82,28 @@ public class UpdateResourceLimitCmd extends BaseCmd { return s_name; } - @Override - public String getResponse() { - // TODO look at the execute method to construct response - return null; - } + @Override + public ResponseObject getResponse() { + ResourceLimitVO limit = (ResourceLimitVO) getResponseObject(); -// @Override -// public List> execute(Map params) { -// Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName()); -// Long domainId = (Long) params.get(BaseCmd.Properties.DOMAIN_ID.getName()); -// String accountName = (String) params.get(BaseCmd.Properties.ACCOUNT.getName()); -// Integer type = (Integer) params.get(BaseCmd.Properties.RESOURCE_TYPE.getName()); -// Long max = (Long) params.get(BaseCmd.Properties.MAX.getName()); -// Long accountId = null; -// -// if (max == null) { -// max = new Long(-1); -// } else if (max < -1) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Please specify either '-1' for an infinite limit, or a limit that is at least '0'."); -// } -// -// // Map resource type -// ResourceType resourceType; -// try { -// resourceType = ResourceType.values()[type]; -// } catch (ArrayIndexOutOfBoundsException e) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Please specify a valid resource type."); -// } -// -// /* -// if (accountName==null && domainId != null && !domainId.equals(DomainVO.ROOT_DOMAIN)) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Resource limits must be made for an account or the ROOT domain."); -// } -// */ -// -// if (account != null) { -// if (domainId != null) { -// if (!getManagementServer().isChildDomain(account.getDomainId(), domainId)) { -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to update resource limit for " + ((accountName == null) ? "" : "account " + accountName + " in ") + "domain " + domainId + ", permission denied"); -// } -// } else if (account.getType() == Account.ACCOUNT_TYPE_ADMIN) { -// domainId = DomainVO.ROOT_DOMAIN; // for root admin, default to root domain if domain is not specified -// } -// -// if (account.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN) { -// if ((domainId != null) && (accountName == null) && domainId.equals(account.getDomainId())) { -// // if the admin is trying to update their own domain, disallow... -// throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to update resource limit for " + ((accountName == null) ? "" : "account " + accountName + " in ") + "domain " + domainId + ", permission denied"); -// } -// -// // If there is an existing ROOT domain limit, make sure its max isn't being exceeded -// Criteria c = new Criteria(); -// c.addCriteria(Criteria.DOMAINID, DomainVO.ROOT_DOMAIN); -// c.addCriteria(Criteria.TYPE, resourceType); -// List currentRootDomainLimits = getManagementServer().searchForLimits(c); -// ResourceLimitVO currentRootDomainLimit = (currentRootDomainLimits.size() == 0) ? null : currentRootDomainLimits.get(0); -// if (currentRootDomainLimit != null) { -// long currentRootDomainMax = currentRootDomainLimits.get(0).getMax(); -// if ((max == -1 && currentRootDomainMax != -1) || max > currentRootDomainMax) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "The current ROOT domain limit for resource type " + resourceType + " is " + currentRootDomainMax + " and cannot be exceeded."); -// } -// } -// } -// } else if (domainId == null) { -// domainId = DomainVO.ROOT_DOMAIN; // for system commands, default to root domain if domain is not specified -// } -// -// if (domainId == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to update resource limit, unable to determine domain in which to update limit."); -// } else if (accountName != null) { -// Account userAccount = getManagementServer().findActiveAccount(accountName, domainId); -// if (userAccount == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find account by name " + accountName + " in domain with id " + domainId); -// } -// accountId = userAccount.getId(); -// domainId = userAccount.getDomainId(); -// } -// -// ResourceLimitVO limit = null; -// try { -// if (accountId != null) domainId = null; -// limit = getManagementServer().updateResourceLimit(domainId, accountId, resourceType, max); -// } catch (InvalidParameterValueException paramException) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, paramException.getMessage()); -// } catch (Exception ex) { -// s_logger.error("Exception updating resource limit", ex); -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update limit due to exception: " + ex.getMessage()); -// } -// List> embeddedObject = new ArrayList>(); -// List> returnValues = new ArrayList>(); -// -// if (limit == null) -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update resource limit. Please contact Cloud Support."); -// else { -// -// if (limit.getDomainId() != null) { -// returnValues.add(new Pair(BaseCmd.Properties.DOMAIN_ID.getName(), limit.getDomainId())); -// returnValues.add(new Pair(BaseCmd.Properties.DOMAIN.getName(), getManagementServer().findDomainIdById(limit.getDomainId()).getName())); -// } -// -// if (limit.getAccountId() != null) { -// Account accountTemp = getManagementServer().findAccountById(limit.getAccountId()); -// if (accountTemp != null) { -// returnValues.add(new Pair(BaseCmd.Properties.ACCOUNT.getName(), accountTemp.getAccountName())); -// returnValues.add(new Pair(BaseCmd.Properties.DOMAIN_ID.getName(), accountTemp.getDomainId())); -// returnValues.add(new Pair(BaseCmd.Properties.DOMAIN.getName(), getManagementServer().findDomainIdById(accountTemp.getDomainId()).getName())); -// } -// } -// returnValues.add(new Pair(BaseCmd.Properties.RESOURCE_TYPE.getName(), limit.getType().ordinal())); -// returnValues.add(new Pair(BaseCmd.Properties.MAX.getName(), limit.getMax())); -// embeddedObject.add(new Pair("resourcelimit", new Object[] { returnValues } )); -// } -// return embeddedObject; -// } + ResourceLimitResponse response = new ResourceLimitResponse(); + if (limit.getDomainId() != null) { + response.setDomainId(limit.getDomainId()); + response.setDomainName(ApiDBUtils.findDomainById(limit.getDomainId()).getName()); + } + + if (limit.getAccountId() != null) { + Account accountTemp = ApiDBUtils.findAccountById(limit.getAccountId()); + if (accountTemp != null) { + response.setAccountName(accountTemp.getAccountName()); + response.setDomainId(accountTemp.getDomainId()); + response.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName()); + } + } + response.setResourceType(limit.getType().ordinal()); + response.setMax(limit.getMax()); + + response.setResponseName(getName()); + return response; + } } diff --git a/server/src/com/cloud/api/commands/UpdateServiceOfferingCmd.java b/server/src/com/cloud/api/commands/UpdateServiceOfferingCmd.java index 8a24cd004ab..157df9e7729 100644 --- a/server/src/com/cloud/api/commands/UpdateServiceOfferingCmd.java +++ b/server/src/com/cloud/api/commands/UpdateServiceOfferingCmd.java @@ -24,6 +24,10 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.ServiceOfferingResponse; +import com.cloud.offering.ServiceOffering.GuestIpType; +import com.cloud.service.ServiceOfferingVO; @Implementation(method="updateServiceOffering", manager=Manager.ConfigManager) public class UpdateServiceOfferingCmd extends BaseCmd @@ -90,58 +94,24 @@ public class UpdateServiceOfferingCmd extends BaseCmd return s_name; } - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; - } - - -// @Override -// public List> execute(Map params) { -// Long offeringId = (Long)params.get(BaseCmd.Properties.ID.getName()); -// String name = (String)params.get(BaseCmd.Properties.NAME.getName()); -// String displayText = (String)params.get(BaseCmd.Properties.DISPLAY_TEXT.getName()); -// Boolean offerHA = (Boolean) params.get(BaseCmd.Properties.OFFER_HA.getName()); -// Boolean useVirtualNetwork = (Boolean) params.get(BaseCmd.Properties.USE_VIRTUAL_NETWORK.getName()); -// Long userId = (Long)params.get(BaseCmd.Properties.USER_ID.getName()); -// String tags = (String)params.get(BaseCmd.Properties.TAGS.getName()); -// -// if (userId == null) { -// userId = Long.valueOf(User.UID_SYSTEM); -// } -// -// // Verify input parameters -// ServiceOfferingVO offering = getManagementServer().findServiceOfferingById(offeringId); -// if (offering == null) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find service offering " + offeringId); -// } -// -// -// try { -// offering = getManagementServer().updateServiceOffering(userId, offeringId, name, displayText, offerHA, useVirtualNetwork, tags); -// } catch (Exception ex) { -// s_logger.error("Exception updating service offering", ex); -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update service offering " + offeringId + ": internal error."); -// } -// -// List> returnValues = new ArrayList>(); -// if (offering != null) { -// returnValues.add(new Pair(BaseCmd.Properties.ID.getName(), offeringId.toString())); -// returnValues.add(new Pair(BaseCmd.Properties.NAME.getName(), offering.getName())); -// returnValues.add(new Pair(BaseCmd.Properties.DISPLAY_TEXT.getName(), offering.getDisplayText())); -// returnValues.add(new Pair(BaseCmd.Properties.CPU_NUMBER.getName(), Integer.valueOf(offering.getCpu()).toString())); -// returnValues.add(new Pair(BaseCmd.Properties.CPU_SPEED.getName(), Integer.valueOf(offering.getSpeed()).toString())); -// returnValues.add(new Pair(BaseCmd.Properties.MEMORY.getName(), Integer.valueOf(offering.getRamSize()).toString())); -// returnValues.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(offering.getCreated()))); -// String storageType = offering.getUseLocalStorage() ? "local" : "shared"; -// returnValues.add(new Pair(BaseCmd.Properties.STORAGE_TYPE.getName(), storageType)); -// returnValues.add(new Pair(BaseCmd.Properties.OFFER_HA.getName(), offering.getOfferHA())); -// returnValues.add(new Pair(BaseCmd.Properties.USE_VIRTUAL_NETWORK.getName(), (offering.getGuestIpType().equals(GuestIpType.Virtualized)))); -// returnValues.add(new Pair(BaseCmd.Properties.TAGS.getName(), offering.getTags())); -// } else { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update service offering " + offeringId); -// } -// return returnValues; -// } + @Override + public ResponseObject getResponse() { + ServiceOfferingVO offering = (ServiceOfferingVO) getResponseObject(); + + ServiceOfferingResponse response = new ServiceOfferingResponse(); + response.setId(offering.getId()); + response.setName(offering.getName()); + response.setDisplayText(offering.getDisplayText()); + response.setCpuNumber(offering.getCpu()); + response.setCpuSpeed(offering.getSpeed()); + response.setCreated(offering.getCreated()); + String storageType = offering.getUseLocalStorage() ? "local" : "shared"; + response.setStorageType(storageType); + response.setOfferHa(offering.getOfferHA()); + response.setUseVirtualNetwork(offering.getGuestIpType().equals(GuestIpType.Virtualized)); + response.setTags(offering.getTags()); + + response.setResponseName(getName()); + return response; + } } diff --git a/server/src/com/cloud/api/commands/UpdateStoragePoolCmd.java b/server/src/com/cloud/api/commands/UpdateStoragePoolCmd.java index 01dea4d6915..5862066a56d 100644 --- a/server/src/com/cloud/api/commands/UpdateStoragePoolCmd.java +++ b/server/src/com/cloud/api/commands/UpdateStoragePoolCmd.java @@ -22,8 +22,14 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; +import com.cloud.api.ApiDBUtils; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.StoragePoolResponse; +import com.cloud.dc.ClusterVO; +import com.cloud.storage.StoragePoolVO; +import com.cloud.storage.StorageStats; @Implementation(method="updateStoragePool", manager=Manager.StorageManager) public class UpdateStoragePoolCmd extends BaseCmd { @@ -62,69 +68,52 @@ public class UpdateStoragePoolCmd extends BaseCmd { return s_name; } -// @Override -// public List> execute(Map params) { -// if (s_logger.isDebugEnabled()) { -// s_logger.debug("UpdateStoragePoolCmd Params @ " + params.toString()); -// } -// -// Long poolId = (Long) params.get(BaseCmd.Properties.ID.getName()); -// String tags = (String) params.get(BaseCmd.Properties.TAGS.getName()); -// -// StoragePoolVO storagePool = null; -// try { -// storagePool = getManagementServer().updateStoragePool(poolId, tags); -// } catch (IllegalArgumentException e) { -// throw new ServerApiException(BaseCmd.PARAM_ERROR, e.getMessage()); -// } -// -// s_logger.debug("Successfully updated storagePool " + storagePool.toString() ); -// -// List> returnValues = new ArrayList>(); -// returnValues.add(new Pair(BaseCmd.Properties.ID.getName(), Long.toString(storagePool.getId()))); -// returnValues.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), storagePool.getDataCenterId())); -// returnValues.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), getManagementServer().getDataCenterBy(storagePool.getDataCenterId()).getName())); -// if (storagePool.getPodId() != null) { -// returnValues.add(new Pair(BaseCmd.Properties.POD_ID.getName(), storagePool.getPodId())); -// returnValues.add(new Pair(BaseCmd.Properties.POD_NAME.getName(), getManagementServer().getPodBy(storagePool.getPodId()).getName())); -// } -// returnValues.add(new Pair(BaseCmd.Properties.NAME.getName(), storagePool.getName())); -// returnValues.add(new Pair(BaseCmd.Properties.IP_ADDRESS.getName(), storagePool.getHostAddress())); -// returnValues.add(new Pair(BaseCmd.Properties.PATH.getName(), storagePool.getPath())); -// returnValues.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(storagePool.getCreated()))); -// -// if (storagePool.getPoolType() != null) { -// returnValues.add(new Pair(BaseCmd.Properties.TYPE.getName(), storagePool.getPoolType().toString())); -// } -// -// if (storagePool.getClusterId() != null) { -// ClusterVO cluster = getManagementServer().findClusterById(storagePool.getClusterId()); -// returnValues.add(new Pair(BaseCmd.Properties.CLUSTER_ID.getName(), cluster.getId())); -// returnValues.add(new Pair(BaseCmd.Properties.CLUSTER_NAME.getName(), cluster.getName())); -// } -// -// StorageStats stats = getManagementServer().getStoragePoolStatistics(storagePool.getId()); -// long capacity = storagePool.getCapacityBytes(); -// long available = storagePool.getAvailableBytes() ; -// long used = capacity - available; -// -// if (stats != null) { -// used = stats.getByteUsed(); -// available = capacity - used; -// } -// s_logger.debug("Successfully recieved the storagePool statistics. TotalDiskSize - " +capacity+ " AllocatedDiskSize - " +used ); -// returnValues.add(new Pair(BaseCmd.Properties.DISK_SIZE_TOTAL.getName(), Long.valueOf(storagePool.getCapacityBytes()).toString())); -// returnValues.add(new Pair(BaseCmd.Properties.DISK_SIZE_ALLOCATED.getName(), Long.valueOf(used).toString())); -// returnValues.add(new Pair(BaseCmd.Properties.TAGS.getName(), getManagementServer().getStoragePoolTags(storagePool.getId()))); -// -// List> embeddedObject = new ArrayList>(); -// embeddedObject.add(new Pair("storagepool", new Object[] { returnValues } )); -// return embeddedObject; -// } + @Override + public ResponseObject getResponse() { + StoragePoolVO pool = (StoragePoolVO) getResponseObject(); - @Override - public String getResponse() { - // TODO Auto-generated method stub - return null; - } + StoragePoolResponse response = new StoragePoolResponse(); + response.setId(pool.getId()); + response.setZoneId(pool.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(pool.getDataCenterId()).getName()); + if (pool.getPodId() != null) { + response.setPodId(pool.getPodId()); + response.setPodName(ApiDBUtils.findPodById(pool.getPodId()).getName()); + } + response.setName(pool.getName()); + response.setIpAddress(pool.getHostAddress()); + response.setPath(pool.getPath()); + response.setCreated(pool.getCreated()); + + if (pool.getPoolType() != null) { + response.setType(pool.getPoolType().toString()); + } + + if (pool.getClusterId() != null) { + ClusterVO cluster = ApiDBUtils.findClusterById(pool.getClusterId()); + response.setClusterId(cluster.getId()); + response.setClusterName(cluster.getName()); + } + + StorageStats stats = ApiDBUtils.getStoragePoolStatistics(pool.getId()); + long capacity = pool.getCapacityBytes(); + long available = pool.getAvailableBytes(); + long used = capacity - available; + + if (stats != null) { + used = stats.getByteUsed(); + available = capacity - used; + } + + if (s_logger.isDebugEnabled()) { + s_logger.debug("Successfully recieved the storagePool statistics. TotalDiskSize - " + capacity + " AllocatedDiskSize - " + used); + } + + response.setDiskSizeTotal(pool.getCapacityBytes()); + response.setDiskSizeAllocated(used); + response.setTags(ApiDBUtils.getStoragePoolTags(pool.getId())); + + response.setResponseName(getName()); + return response; + } } diff --git a/server/src/com/cloud/api/commands/UpdateTemplateCmd.java b/server/src/com/cloud/api/commands/UpdateTemplateCmd.java index 2962869cccc..7d27a7aa589 100644 --- a/server/src/com/cloud/api/commands/UpdateTemplateCmd.java +++ b/server/src/com/cloud/api/commands/UpdateTemplateCmd.java @@ -23,8 +23,8 @@ import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.TemplateResponse; import com.cloud.storage.VMTemplateVO; @@ -50,7 +50,7 @@ public class UpdateTemplateCmd extends UpdateTemplateOrIsoCmd { return s_name; } - public String getResponse() { + public ResponseObject getResponse() { TemplateResponse response = new TemplateResponse(); VMTemplateVO responseObject = (VMTemplateVO)getResponseObject(); if (responseObject != null) { @@ -68,6 +68,6 @@ public class UpdateTemplateCmd extends UpdateTemplateOrIsoCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateTemplateOrIsoPermissionsCmd.java b/server/src/com/cloud/api/commands/UpdateTemplateOrIsoPermissionsCmd.java index c34d58a8a45..e73c20cddf8 100644 --- a/server/src/com/cloud/api/commands/UpdateTemplateOrIsoPermissionsCmd.java +++ b/server/src/com/cloud/api/commands/UpdateTemplateOrIsoPermissionsCmd.java @@ -8,6 +8,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="updateTemplatePermissions", manager=Manager.ManagementServer) public abstract class UpdateTemplateOrIsoPermissionsCmd extends BaseCmd { @@ -77,8 +79,11 @@ public abstract class UpdateTemplateOrIsoPermissionsCmd extends BaseCmd { } @Override - public String getResponse() - { - return null;//return the response here + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getResponseName()); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpdateUserCmd.java b/server/src/com/cloud/api/commands/UpdateUserCmd.java index bf3151a7d73..7d3f112e34e 100644 --- a/server/src/com/cloud/api/commands/UpdateUserCmd.java +++ b/server/src/com/cloud/api/commands/UpdateUserCmd.java @@ -24,6 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="updateUser", manager=Manager.ManagementServer) public class UpdateUserCmd extends BaseCmd { @@ -111,10 +113,11 @@ public class UpdateUserCmd extends BaseCmd { } @Override - public String getResponse() { - // TODO Auto-generated method stub - - //response returned is true or false, based on which you can throw an error - return null; + public ResponseObject getResponse() { + Boolean success = (Boolean)getResponseObject(); + SuccessResponse response = new SuccessResponse(); + response.setSuccess(success); + response.setResponseName(getName()); + return response; } } \ No newline at end of file diff --git a/server/src/com/cloud/api/commands/UpdateVMCmd.java b/server/src/com/cloud/api/commands/UpdateVMCmd.java index 5772117e1d6..1fef5ad7347 100644 --- a/server/src/com/cloud/api/commands/UpdateVMCmd.java +++ b/server/src/com/cloud/api/commands/UpdateVMCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.UpgradeVmResponse; -import com.cloud.vm.UserVmVO; +import com.cloud.api.ResponseObject; +import com.cloud.api.response.SuccessResponse; @Implementation(method="updateVirtualMachine", manager=Manager.UserVmManager) public class UpdateVMCmd extends BaseCmd{ @@ -72,8 +72,6 @@ public class UpdateVMCmd extends BaseCmd{ /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// - private UserVmVO responseObject = null; - @Override public String getName() { return s_name; @@ -82,20 +80,12 @@ public class UpdateVMCmd extends BaseCmd{ public static String getResultObjectName() { return "virtualmachine"; } - + @Override - public String getResponse() - { - UpgradeVmResponse response = new UpgradeVmResponse(); - UserVmVO userVm = (UserVmVO)getResponseObject(); - - UserVmVO responseObject = (UserVmVO)getResponseObject(); - if (responseObject != null) - { - //just pass back success or failure from here - } - - return null; + public ResponseObject getResponse() { + SuccessResponse response = new SuccessResponse(); + response.setSuccess(Boolean.TRUE); + response.setResponseName(getName()); + return response; } - } diff --git a/server/src/com/cloud/api/commands/UpdateZoneCmd.java b/server/src/com/cloud/api/commands/UpdateZoneCmd.java index e1cf28968d0..0adf5a84754 100644 --- a/server/src/com/cloud/api/commands/UpdateZoneCmd.java +++ b/server/src/com/cloud/api/commands/UpdateZoneCmd.java @@ -24,8 +24,8 @@ import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; import com.cloud.api.ServerApiException; -import com.cloud.api.response.ApiResponseSerializer; import com.cloud.api.response.ZoneResponse; import com.cloud.dc.DataCenterVO; @@ -109,7 +109,7 @@ public class UpdateZoneCmd extends BaseCmd { } @Override - public String getResponse() { + public ResponseObject getResponse() { ZoneResponse response = new ZoneResponse(); DataCenterVO responseObject = (DataCenterVO)getResponseObject(); @@ -129,6 +129,6 @@ public class UpdateZoneCmd extends BaseCmd { } response.setResponseName(getName()); - return ApiResponseSerializer.toSerializedString(response); + return response; } } diff --git a/server/src/com/cloud/api/commands/UpgradeVMCmd.java b/server/src/com/cloud/api/commands/UpgradeVMCmd.java index d1407f68d0b..7e5646fb316 100644 --- a/server/src/com/cloud/api/commands/UpgradeVMCmd.java +++ b/server/src/com/cloud/api/commands/UpgradeVMCmd.java @@ -20,12 +20,20 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; +import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ResponseObject; +import com.cloud.api.ServerApiException; import com.cloud.api.response.UpgradeVmResponse; +import com.cloud.offering.ServiceOffering; +import com.cloud.service.ServiceOfferingVO; +import com.cloud.storage.VMTemplateVO; +import com.cloud.user.Account; import com.cloud.vm.UserVmVO; +import com.cloud.vm.VmStats; @Implementation(method="upgradeVirtualMachine", manager=Manager.UserVmManager) public class UpgradeVMCmd extends BaseCmd { @@ -58,8 +66,7 @@ public class UpgradeVMCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// - private UserVmVO responseObject = null; - + @Override public String getName() { return s_name; } @@ -69,70 +76,58 @@ public class UpgradeVMCmd extends BaseCmd { } @Override - public String getResponse() - { - UpgradeVmResponse response = new UpgradeVmResponse(); + public ResponseObject getResponse() { UserVmVO userVm = (UserVmVO)getResponseObject(); - - UserVmVO responseObject = (UserVmVO)getResponseObject(); - if (responseObject != null) - { -// -// Account acct = ms.findAccountById(Long.valueOf(vm.getAccountId())); -// resultObj.setAccount(acct.getAccountName()); -// -// ServiceOfferingVO offering = ms.findServiceOfferingById(vm.getServiceOfferingId()); -// resultObj.setCpuSpeed(offering.getSpeed()); -// resultObj.setMemory(offering.getRamSize()); -// if(offering.getDisplayText()!=null) -// resultObj.setServiceOfferingName(offering.getDisplayText()); -// else -// resultObj.setServiceOfferingName(offering.getName()); -// resultObj.setServiceOfferingId(vm.getServiceOfferingId()); -// -// VmStats vmStats = ms.getVmStatistics(vm.getId()); -// if(vmStats != null) -// { -// resultObj.setCpuUsed((long) vmStats.getCPUUtilization()); -// resultObj.setNetworkKbsRead((long) vmStats.getNetworkReadKBs()); -// resultObj.setNetworkKbsWrite((long) vmStats.getNetworkWriteKBs()); -// } -// -// resultObj.setCreated(vm.getCreated()); -// resultObj.setDisplayName(vm.getDisplayName()); -// resultObj.setDomain(ms.findDomainIdById(acct.getDomainId()).getName()); -// resultObj.setDomainId(acct.getDomainId()); -// resultObj.setHaEnable(vm.isHaEnabled()); -// if(vm.getHostId() != null) -// { -// resultObj.setHostId(vm.getHostId()); -// resultObj.setHostName(ms.getHostBy(vm.getHostId()).getName()); -// } -// resultObj.setIpAddress(vm.getPrivateIpAddress()); -// resultObj.setName(vm.getName()); -// resultObj.setState(vm.getState().toString()); -// resultObj.setZoneId(vm.getDataCenterId()); -// resultObj.setZoneName(ms.findDataCenterById(vm.getDataCenterId()).getName()); -// -// VMTemplateVO template = ms.findTemplateById(vm.getTemplateId()); -// resultObj.setPasswordEnabled(template.getEnablePassword()); -// resultObj.setTemplateDisplayText(template.getDisplayText()); -// resultObj.setTemplateId(template.getId()); -// resultObj.setTemplateName(template.getName()); -// } -// else -// { -// throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update zone; internal error."); -// } -// -// return SerializerHelper.toSerializedString(responseObject); - + + UpgradeVmResponse response = new UpgradeVmResponse(); + if (userVm != null) { + Account acct = ApiDBUtils.findAccountById(userVm.getAccountId()); + response.setAccount(acct.getAccountName()); + + ServiceOffering offering = ApiDBUtils.findServiceOfferingById(userVm.getServiceOfferingId()); + response.setCpuSpeed(offering.getSpeed()); + response.setMemory(offering.getRamSize()); + if (((ServiceOfferingVO)offering).getDisplayText() != null) { + response.setServiceOfferingName(((ServiceOfferingVO)offering).getDisplayText()); + } else { + response.setServiceOfferingName(offering.getName()); + } + + response.setServiceOfferingId(userVm.getServiceOfferingId()); + + VmStats vmStats = ApiDBUtils.getVmStatistics(userVm.getId()); + if (vmStats != null) { + response.setCpuUsed((long) vmStats.getCPUUtilization()); + response.setNetworkKbsRead((long) vmStats.getNetworkReadKBs()); + response.setNetworkKbsWrite((long) vmStats.getNetworkWriteKBs()); + } + + response.setCreated(userVm.getCreated()); + response.setDisplayName(userVm.getDisplayName()); + response.setDomain(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); + response.setDomainId(acct.getDomainId()); + response.setHaEnable(userVm.isHaEnabled()); + + if (userVm.getHostId() != null) { + response.setHostId(userVm.getHostId()); + response.setHostName(ApiDBUtils.findHostById(userVm.getHostId()).getName()); + } + response.setIpAddress(userVm.getPrivateIpAddress()); + response.setName(userVm.getName()); + response.setState(userVm.getState().toString()); + response.setZoneId(userVm.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(userVm.getDataCenterId()).getName()); + + VMTemplateVO template = ApiDBUtils.findTemplateById(userVm.getTemplateId()); + response.setPasswordEnabled(template.getEnablePassword()); + response.setTemplateDisplayText(template.getDisplayText()); + response.setTemplateId(template.getId()); + response.setTemplateName(template.getName()); + } else { + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update zone; internal error."); } - return null; - } - - public void setResponseObject(UserVmVO userVm) { - responseObject = userVm; - } - + + response.setResponseName(getName()); + return response; + } } diff --git a/server/src/com/cloud/api/response/AccountResponse.java b/server/src/com/cloud/api/response/AccountResponse.java index 08178bfbf46..f6746002369 100644 --- a/server/src/com/cloud/api/response/AccountResponse.java +++ b/server/src/com/cloud/api/response/AccountResponse.java @@ -17,7 +17,6 @@ */ package com.cloud.api.response; -import com.cloud.serializer.Param; import com.google.gson.annotations.SerializedName; public class AccountResponse extends BaseResponse { diff --git a/server/src/com/cloud/api/response/RegisterResponse.java b/server/src/com/cloud/api/response/RegisterResponse.java new file mode 100644 index 00000000000..4a83636df43 --- /dev/null +++ b/server/src/com/cloud/api/response/RegisterResponse.java @@ -0,0 +1,27 @@ +package com.cloud.api.response; + +import com.google.gson.annotations.SerializedName; + +public class RegisterResponse extends BaseResponse { + @SerializedName("apikey") + private String apiKey; + + @SerializedName("secretkey") + private String secretKey; + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getSecretKey() { + return secretKey; + } + + public void setSecretKey(String secretKey) { + this.secretKey = secretKey; + } +} diff --git a/server/src/com/cloud/api/response/StoragePoolResponse.java b/server/src/com/cloud/api/response/StoragePoolResponse.java index 5fad279ae5b..5f5bc33db0a 100644 --- a/server/src/com/cloud/api/response/StoragePoolResponse.java +++ b/server/src/com/cloud/api/response/StoragePoolResponse.java @@ -67,6 +67,9 @@ public class StoragePoolResponse extends BaseResponse { @SerializedName("tags") private String tags; + @SerializedName("state") + private String state; + public Long getId() { return id; } @@ -186,4 +189,12 @@ public class StoragePoolResponse extends BaseResponse { public void setTags(String tags) { this.tags = tags; } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } } diff --git a/server/src/com/cloud/async/AsyncJobManagerImpl.java b/server/src/com/cloud/async/AsyncJobManagerImpl.java index 1163bf03143..73bb8210b89 100644 --- a/server/src/com/cloud/async/AsyncJobManagerImpl.java +++ b/server/src/com/cloud/async/AsyncJobManagerImpl.java @@ -150,10 +150,9 @@ public class AsyncJobManagerImpl implements AsyncJobManager { job.setInstanceType(null); job.setInstanceId(null); - // FIXME: do we need to re-serialize here? if (resultObject != null) { -// job.setResult(SerializerHelper.toSerializedString(resultObject)); - job.setResult((String)resultObject); + job.setResult(SerializerHelper.toSerializedStringOld(resultObject)); +// job.setResult((String)resultObject); } job.setLastUpdated(DateUtil.currentGMTTime()); diff --git a/server/src/com/cloud/async/executor/RemoveFromLoadBalancerExecutor.java b/server/src/com/cloud/async/executor/RemoveFromLoadBalancerExecutor.java index 789907251c7..45e876f2ebc 100644 --- a/server/src/com/cloud/async/executor/RemoveFromLoadBalancerExecutor.java +++ b/server/src/com/cloud/async/executor/RemoveFromLoadBalancerExecutor.java @@ -20,14 +20,10 @@ package com.cloud.async.executor; import org.apache.log4j.Logger; -import com.cloud.api.BaseCmd; import com.cloud.async.AsyncJobManager; -import com.cloud.async.AsyncJobResult; import com.cloud.async.AsyncJobVO; import com.cloud.async.BaseAsyncJobExecutor; -import com.cloud.exception.InvalidParameterValueException; import com.cloud.serializer.GsonHelper; -import com.cloud.server.ManagementServer; import com.google.gson.Gson; public class RemoveFromLoadBalancerExecutor extends BaseAsyncJobExecutor { diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index f603c08f283..7917d76a523 100644 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -1034,7 +1034,6 @@ public class ConfigurationManagerImpl implements ConfigurationManager { } public ServiceOfferingVO updateServiceOffering(UpdateServiceOfferingCmd cmd) { - String displayText = cmd.getDisplayText(); Long id = cmd.getId(); String name = cmd.getName(); diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 242f7f1d8ea..fdd8549f592 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -3260,7 +3260,6 @@ public class NetworkManagerImpl implements NetworkManager, VirtualMachineManager String algorithm = cmd.getAlgorithm(); String name = cmd.getName(); String description = cmd.getDescription(); - Long userId = UserContext.current().getUserId(); Account account = (Account)UserContext.current().getAccountObject(); //Verify input parameters @@ -3347,7 +3346,6 @@ public class NetworkManagerImpl implements NetworkManager, VirtualMachineManager @Override public boolean deleteNetworkRuleConfig(DeletePortForwardingServiceRuleCmd cmd) throws PermissionDeniedException { - Long userId = UserContext.current().getUserId(); Long netRuleId = cmd.getId(); Account account = (Account)UserContext.current().getAccountObject(); @@ -3361,7 +3359,6 @@ public class NetworkManagerImpl implements NetworkManager, VirtualMachineManager // admin or the owner of the security group to which the network rule // belongs NetworkRuleConfigVO netRule = _networkRuleConfigDao.findById(netRuleId); - long accountId = Account.ACCOUNT_ID_SYSTEM; if (netRule != null) { SecurityGroupVO sg = _securityGroupDao.findById(netRule.getSecurityGroupId()); if (account != null) { @@ -3373,15 +3370,11 @@ public class NetworkManagerImpl implements NetworkManager, VirtualMachineManager throw new PermissionDeniedException("Unable to delete port forwarding service rule " + netRuleId + "; account: " + account.getAccountName() + " is not an admin in the domain hierarchy."); } } - if (sg != null) { - accountId = sg.getAccountId().longValue(); - } } else { return false; // failed to delete due to netRule not found } return deleteNetworkRuleConfigInternal(userId, netRuleId); - } private boolean deleteNetworkRuleConfigInternal(long userId, long networkRuleId) { diff --git a/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java b/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java index f37e3256625..2d9af6bb15e 100644 --- a/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java +++ b/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java @@ -417,8 +417,7 @@ public class NetworkGroupManagerImpl implements NetworkGroupManager { } - @Override - @DB + @Override @DB @SuppressWarnings("rawtypes") public List authorizeNetworkGroupIngress(AuthorizeNetworkGroupIngressCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ String groupName = cmd.getName(); String protocol = cmd.getProtocol(); diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index d514d3c2d15..e211050a9f7 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -1314,21 +1314,19 @@ public class ManagementServerImpl implements ManagementServer { } @Override - public String[] createApiKeyAndSecretKey(RegisterCmd cmd) - { + public String[] createApiKeyAndSecretKey(RegisterCmd cmd) { Long userId = cmd.getId(); - User user = _userDao.findById(userId); - + if (user == null) { throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "unable to find user for id : " + userId); } - + // generate both an api key and a secret key, update the user table with the keys, return the keys to the user String[] keys = new String[2]; keys[0] = createApiKey(userId); keys[1] = createSecretKey(userId); - + return keys; } diff --git a/server/src/com/cloud/storage/StorageManager.java b/server/src/com/cloud/storage/StorageManager.java index a6d00e086de..fe5e0594de6 100644 --- a/server/src/com/cloud/storage/StorageManager.java +++ b/server/src/com/cloud/storage/StorageManager.java @@ -288,10 +288,10 @@ public interface StorageManager extends Manager { /** * Complete maintenance for primary storage * @param cmd - the command specifying primaryStorageId - * @return success or failure + * @return the primary storage pool * @throws InvalidParameterValueException */ - public boolean cancelPrimaryStorageForMaintenance(CancelPrimaryStorageMaintenanceCmd cmd) throws InvalidParameterValueException; + public StoragePoolVO cancelPrimaryStorageForMaintenance(CancelPrimaryStorageMaintenanceCmd cmd) throws InvalidParameterValueException; public StoragePoolVO updateStoragePool(UpdateStoragePoolCmd cmd) throws IllegalArgumentException; } diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 1dba7a8e2b3..dd303e663dc 100644 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -2207,7 +2207,7 @@ public class StorageManagerImpl implements StorageManager { @Override @DB - public boolean cancelPrimaryStorageForMaintenance(CancelPrimaryStorageMaintenanceCmd cmd) throws InvalidParameterValueException{ + public StoragePoolVO cancelPrimaryStorageForMaintenance(CancelPrimaryStorageMaintenanceCmd cmd) throws InvalidParameterValueException{ Long primaryStorageId = cmd.getId(); Long userId = UserContext.current().getUserId(); @@ -2248,7 +2248,7 @@ public class StorageManagerImpl implements StorageManager { s_logger.warn("There was an error starting the console proxy id: "+vmInstance.getId()+" on storage pool, cannot complete primary storage maintenance"); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } } @@ -2264,7 +2264,7 @@ public class StorageManagerImpl implements StorageManager { s_logger.warn("There was an error starting the ssvm id: "+vmInstance.getId()+" on storage pool, cannot complete primary storage maintenance"); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } } @@ -2281,32 +2281,32 @@ public class StorageManagerImpl implements StorageManager { s_logger.warn("There was an error starting the ssvm id: "+vmInstance.getId()+" on storage pool, cannot complete primary storage maintenance"); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } } catch (StorageUnavailableException e) { s_logger.warn("There was an error starting the ssvm id: "+vmInstance.getId()+" on storage pool, cannot complete primary storage maintenance"); s_logger.warn(e); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } catch (InsufficientCapacityException e) { s_logger.warn("There was an error starting the ssvm id: "+vmInstance.getId()+" on storage pool, cannot complete primary storage maintenance"); s_logger.warn(e); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } catch (ConcurrentOperationException e) { s_logger.warn("There was an error starting the ssvm id: "+vmInstance.getId()+" on storage pool, cannot complete primary storage maintenance"); s_logger.warn(e); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } catch (ExecutionException e) { s_logger.warn("There was an error starting the ssvm id: "+vmInstance.getId()+" on storage pool, cannot complete primary storage maintenance"); s_logger.warn(e); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } } @@ -2321,19 +2321,19 @@ public class StorageManagerImpl implements StorageManager { s_logger.warn("Error changing consoleproxy.restart back to false at end of cancel maintenance:"+e); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } catch (InternalErrorException e) { s_logger.warn("Error changing consoleproxy.restart back to false at end of cancel maintenance:"+e); primaryStorage.setStatus(Status.ErrorInMaintenance); _storagePoolDao.persist(primaryStorage); - return false; + return primaryStorage; } //Change the storage state back to up primaryStorage.setStatus(Status.Up); _storagePoolDao.persist(primaryStorage); - return true; + return primaryStorage; } private boolean sendToVmResidesOn(Command cmd) { diff --git a/ui/scripts/cloud.core.instances.js b/ui/scripts/cloud.core.instances.js index ab2bbf17837..637c76e40af 100644 --- a/ui/scripts/cloud.core.instances.js +++ b/ui/scripts/cloud.core.instances.js @@ -1695,14 +1695,15 @@ function showInstancesTab(p_domainId, p_account) { vmInstance.find("#vm_loading_container").hide(); if (result.jobstatus == 1) { // Succeeded - vmJSONToTemplate(result.virtualmachine[0], vmInstance); - if (result.virtualmachine[0].passwordenabled == 'true') { - vmInstance.find(".loadingmessage_container .loadingmessage_top p").html("Your instance has been successfully created. Your new password is : " + result.virtualmachine[0].password + " . Please change it as soon as you log into your new instance"); + var virtualMachine = result.jobresult.deployvirtualmachineresponse; + vmJSONToTemplate(virtualMachine, vmInstance); + if (virtualMachine.passwordenabled == 'true') { + vmInstance.find(".loadingmessage_container .loadingmessage_top p").html("Your instance has been successfully created. Your new password is : " + virtualMachine.password + " . Please change it as soon as you log into your new instance"); } else { vmInstance.find(".loadingmessage_container .loadingmessage_top p").html("Your instance has been successfully created."); } vmInstance.find(".loadingmessage_container").fadeIn("slow"); - vmInstance.attr("id", "vm" + result.virtualmachine[0].id); + vmInstance.attr("id", "vm" + virtualMachine.id); vmInstance.find("#vm_state_bar").removeClass("admin_vmred_arrow admin_vmgrey_arrow").addClass("admin_vmgreen_arrow"); vmInstance.find("#vm_state").text("Running").removeClass("grid_stoppedtitles grid_celltitles").addClass("grid_runningtitles"); changeGridRowsTotal($("#grid_rows_total"), 1);