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);