bug 7101 : DetachISO API and AttachISO API would start returning an embedded object of virtualmachine so that the UI could use that to update the vm.

status 7101: resolved fixed
This commit is contained in:
nit 2010-11-12 16:40:55 +05:30
parent b42458fa0d
commit 5215f6f817
2 changed files with 12 additions and 16 deletions

View File

@ -21,12 +21,14 @@ import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseAsyncCmd;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.IsoVmResponse;
import com.cloud.api.response.UserVmResponse;
import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientAddressCapacityException;
@ -35,6 +37,7 @@ import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.PermissionDeniedException;
import com.cloud.storage.VMTemplateVO;
import com.cloud.user.Account;
import com.cloud.uservm.UserVm;
import com.cloud.vm.VMInstanceVO;
@Implementation(description="Attaches an ISO to a virtual machine.")
@ -99,21 +102,9 @@ public class AttachIsoCmd extends BaseAsyncCmd {
public void execute() throws ServerApiException, InvalidParameterValueException, PermissionDeniedException, InsufficientAddressCapacityException, InsufficientCapacityException, ConcurrentOperationException{
boolean result = _templateMgr.attachIso(this);
if (result) {
IsoVmResponse response = new IsoVmResponse();
VMTemplateVO iso = ApiDBUtils.findTemplateById(id);
VMInstanceVO vmInstance = ApiDBUtils.findVMInstanceById(virtualMachineId);
response.setId(id);
response.setName(iso.getName());
response.setDisplayText(iso.getDisplayText());
response.setOsTypeId(iso.getGuestOSId());
response.setOsTypeName(ApiDBUtils.findGuestOSById(iso.getGuestOSId()).getName());
response.setVirtualMachineId(virtualMachineId);
response.setVirtualMachineName(vmInstance.getHostName());
response.setVirtualMachineState(vmInstance.getState().toString());
response.setResponseName(getName());
response.setObjectName("iso");
UserVm userVm = ApiDBUtils.findUserVmById(virtualMachineId);
UserVmResponse response = ApiResponseHelper.createUserVmResponse(userVm);
response.setResponseName(DeployVMCmd.getResultObjectName());
this.setResponseObject(response);
} else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to attach iso");

7
server/src/com/cloud/api/commands/DetachIsoCmd.java Normal file → Executable file
View File

@ -21,18 +21,21 @@ import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.ApiResponseHelper;
import com.cloud.api.BaseAsyncCmd;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.UserVmResponse;
import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.PermissionDeniedException;
import com.cloud.storage.VMTemplateVO;
import com.cloud.user.Account;
import com.cloud.uservm.UserVm;
@ -90,7 +93,9 @@ public class DetachIsoCmd extends BaseAsyncCmd {
public void execute() throws ServerApiException, InvalidParameterValueException, PermissionDeniedException, InsufficientAddressCapacityException, InsufficientCapacityException, ConcurrentOperationException{
boolean result = _templateMgr.detachIso(this);
if (result) {
SuccessResponse response = new SuccessResponse(getName());
UserVm userVm = ApiDBUtils.findUserVmById(virtualMachineId);
UserVmResponse response = ApiResponseHelper.createUserVmResponse(userVm);
response.setResponseName(DeployVMCmd.getResultObjectName());
this.setResponseObject(response);
} else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to detach iso");