diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 89d702e5e73..0d7efd28cc1 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -17,6 +17,7 @@ */ package com.cloud.api; +import java.text.DecimalFormat; import java.util.Iterator; import java.util.List; @@ -26,20 +27,34 @@ import com.cloud.api.response.DiskOfferingResponse; import com.cloud.api.response.DomainResponse; import com.cloud.api.response.ResourceLimitResponse; import com.cloud.api.response.ServiceOfferingResponse; +import com.cloud.api.response.SnapshotPolicyResponse; +import com.cloud.api.response.SnapshotResponse; import com.cloud.api.response.UserResponse; +import com.cloud.api.response.UserVmResponse; +import com.cloud.async.AsyncJobVO; import com.cloud.configuration.ConfigurationVO; import com.cloud.configuration.ResourceCount.ResourceType; import com.cloud.configuration.ResourceLimitVO; import com.cloud.domain.DomainVO; import com.cloud.offering.NetworkOffering.GuestIpType; +import com.cloud.offering.ServiceOffering; import com.cloud.server.Criteria; import com.cloud.service.ServiceOfferingVO; import com.cloud.storage.DiskOfferingVO; +import com.cloud.storage.Snapshot; +import com.cloud.storage.Snapshot.SnapshotType; +import com.cloud.storage.SnapshotPolicyVO; +import com.cloud.storage.StoragePoolVO; +import com.cloud.storage.VMTemplateVO; +import com.cloud.storage.VolumeVO; import com.cloud.user.Account; import com.cloud.user.UserAccount; +import com.cloud.user.UserContext; import com.cloud.user.UserStatisticsVO; import com.cloud.uservm.UserVm; +import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.State; +import com.cloud.vm.VmStats; public class ApiResponseHelper { @@ -239,5 +254,160 @@ public class ApiResponseHelper { return cfgResponse; } + public static SnapshotResponse createSnapshotResponse (Snapshot snapshot) { + SnapshotResponse snapshotResponse = new SnapshotResponse(); + snapshotResponse.setId(snapshot.getId()); + Account acct = ApiDBUtils.findAccountById(Long.valueOf(snapshot.getAccountId())); + if (acct != null) { + snapshotResponse.setAccountName(acct.getAccountName()); + snapshotResponse.setDomainId(acct.getDomainId()); + snapshotResponse.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); + } + + VolumeVO volume = ApiDBUtils.findVolumeById(snapshot.getVolumeId()); + String snapshotTypeStr = SnapshotType.values()[snapshot.getSnapshotType()].name(); + snapshotResponse.setSnapshotType(snapshotTypeStr); + snapshotResponse.setVolumeId(snapshot.getVolumeId()); + snapshotResponse.setVolumeName(volume.getName()); + snapshotResponse.setVolumeType(volume.getVolumeType().name()); + snapshotResponse.setCreated(snapshot.getCreated()); + snapshotResponse.setName(snapshot.getName()); + snapshotResponse.setIntervalType(ApiDBUtils.getSnapshotIntervalTypes(snapshot.getId())); + AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("snapshot", snapshot.getId()); + if (asyncJob != null) { + snapshotResponse.setJobId(asyncJob.getId()); + snapshotResponse.setJobStatus(asyncJob.getStatus()); + } + return snapshotResponse; + } + + + public static SnapshotPolicyResponse createSnapshotPolicyResponse (SnapshotPolicyVO policy) { + SnapshotPolicyResponse policyResponse = new SnapshotPolicyResponse(); + policyResponse.setId(policy.getId()); + policyResponse.setVolumeId(policy.getVolumeId()); + policyResponse.setSchedule(policy.getSchedule()); + policyResponse.setIntervalType(policy.getInterval()); + policyResponse.setMaxSnaps(policy.getMaxSnaps()); + policyResponse.setTimezone(policy.getTimezone()); + + return policyResponse; + } + + public static UserVmResponse createUserVmResponse (UserVm userVm) { + UserVmResponse userVmResponse = new UserVmResponse(); + + Account acct = ApiDBUtils.findAccountById(Long.valueOf(userVm.getAccountId())); + //FIXME - this check should be done in searchForUserVm method in ManagementServerImpl; + //otherwise the number of vms returned is not going to match pageSize request parameter + if ((acct != null) && (acct.getRemoved() == null)) { + userVmResponse.setAccountName(acct.getAccountName()); + userVmResponse.setDomainId(acct.getDomainId()); + userVmResponse.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); + } else { + return null; // the account has been deleted, skip this VM in the response + } + + userVmResponse.setId(userVm.getId()); + AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("vm_instance", userVm.getId()); + if (asyncJob != null) { + userVmResponse.setJobId(asyncJob.getId()); + userVmResponse.setJobStatus(asyncJob.getStatus()); + } + + userVmResponse.setName(userVm.getName()); + userVmResponse.setCreated(userVm.getCreated()); + userVmResponse.setIpAddress(userVm.getPrivateIpAddress()); + if (userVm.getState() != null) { + userVmResponse.setState(userVm.getState().toString()); + } + + + userVmResponse.setHaEnable(userVm.isHaEnabled()); + + if (userVm.getDisplayName() != null) { + userVmResponse.setDisplayName(userVm.getDisplayName()); + } else { + userVmResponse.setDisplayName(userVm.getName()); + } + + InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(userVm.getId()); + if (group != null) { + userVmResponse.setGroup(group.getName()); + userVmResponse.setGroupId(group.getId()); + } + + // Data Center Info + userVmResponse.setZoneId(userVm.getDataCenterId()); + userVmResponse.setZoneName(ApiDBUtils.findZoneById(userVm.getDataCenterId()).getName()); + + Account account = (Account)UserContext.current().getAccount(); + //if user is an admin, display host id + if (((account == null) || (account.getType() == Account.ACCOUNT_TYPE_ADMIN)) && (userVm.getHostId() != null)) { + userVmResponse.setHostId(userVm.getHostId()); + userVmResponse.setHostName(ApiDBUtils.findHostById(userVm.getHostId()).getName()); + } + + // Template Info + VMTemplateVO template = ApiDBUtils.findTemplateById(userVm.getTemplateId()); + if (template != null) { + userVmResponse.setTemplateId(userVm.getTemplateId()); + userVmResponse.setTemplateName(template.getName()); + userVmResponse.setTemplateDisplayText(template.getDisplayText()); + userVmResponse.setPasswordEnabled(template.getEnablePassword()); + } else { + userVmResponse.setTemplateId(-1L); + userVmResponse.setTemplateName("ISO Boot"); + userVmResponse.setTemplateDisplayText("ISO Boot"); + userVmResponse.setPasswordEnabled(false); + } + + // ISO Info + if (userVm.getIsoId() != null) { + VMTemplateVO iso = ApiDBUtils.findTemplateById(userVm.getIsoId().longValue()); + if (iso != null) { + userVmResponse.setIsoId(userVm.getIsoId()); + userVmResponse.setIsoName(iso.getName()); + } + } + + // Service Offering Info + ServiceOffering offering = ApiDBUtils.findServiceOfferingById(userVm.getServiceOfferingId()); + userVmResponse.setServiceOfferingId(userVm.getServiceOfferingId()); + userVmResponse.setServiceOfferingName(offering.getName()); + userVmResponse.setCpuNumber(offering.getCpu()); + userVmResponse.setCpuSpeed(offering.getSpeed()); + userVmResponse.setMemory(offering.getRamSize()); + + VolumeVO rootVolume = ApiDBUtils.findRootVolume(userVm.getId()); + if (rootVolume != null) { + userVmResponse.setRootDeviceId(rootVolume.getDeviceId()); + StoragePoolVO storagePool = ApiDBUtils.findStoragePoolById(rootVolume.getPoolId()); + userVmResponse.setRootDeviceType(storagePool.getPoolType().toString()); + } + + //stats calculation + DecimalFormat decimalFormat = new DecimalFormat("#.##"); + String cpuUsed = null; + VmStats vmStats = ApiDBUtils.getVmStatistics(userVm.getId()); + if (vmStats != null) { + float cpuUtil = (float) vmStats.getCPUUtilization(); + cpuUsed = decimalFormat.format(cpuUtil) + "%"; + userVmResponse.setCpuUsed(cpuUsed); + + long networkKbRead = (long)vmStats.getNetworkReadKBs(); + userVmResponse.setNetworkKbsRead(networkKbRead); + + long networkKbWrite = (long)vmStats.getNetworkWriteKBs(); + userVmResponse.setNetworkKbsWrite(networkKbWrite); + } + + userVmResponse.setGuestOsId(userVm.getGuestOSId()); + //network groups + userVmResponse.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(userVm.getId())); + + return userVmResponse; + + } } diff --git a/server/src/com/cloud/api/commands/CreateSnapshotCmd.java b/server/src/com/cloud/api/commands/CreateSnapshotCmd.java index 648cacc4e7d..9b018b31696 100644 --- a/server/src/com/cloud/api/commands/CreateSnapshotCmd.java +++ b/server/src/com/cloud/api/commands/CreateSnapshotCmd.java @@ -22,6 +22,7 @@ import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseAsyncCreateCmd; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; @@ -29,7 +30,6 @@ import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SnapshotResponse; import com.cloud.event.EventTypes; -import com.cloud.storage.Snapshot.SnapshotType; import com.cloud.storage.SnapshotVO; import com.cloud.storage.VolumeVO; import com.cloud.storage.snapshot.SnapshotManager; @@ -108,25 +108,7 @@ public class CreateSnapshotCmd extends BaseAsyncCreateCmd { SnapshotVO snapshot = (SnapshotVO)getResponseObject(); if (snapshot != null) { - SnapshotResponse response = new SnapshotResponse(); - response.setId(snapshot.getId()); - - Account account = ApiDBUtils.findAccountById(snapshot.getAccountId()); - if (account != null) { - response.setAccountName(account.getAccountName()); - response.setDomainId(account.getDomainId()); - response.setDomainName(ApiDBUtils.findDomainById(account.getDomainId()).getName()); - } - - VolumeVO volume = ApiDBUtils.findVolumeById(snapshot.getVolumeId()); - String snapshotTypeStr = SnapshotType.values()[snapshot.getSnapshotType()].name(); - response.setSnapshotType(snapshotTypeStr); - response.setVolumeId(snapshot.getVolumeId()); - response.setVolumeName(volume.getName()); - response.setVolumeType(volume.getVolumeType().toString()); - response.setCreated(snapshot.getCreated()); - response.setName(snapshot.getName()); - + SnapshotResponse response = ApiResponseHelper.createSnapshotResponse(snapshot); response.setResponseName(getName()); return response; } diff --git a/server/src/com/cloud/api/commands/CreateSnapshotPolicyCmd.java b/server/src/com/cloud/api/commands/CreateSnapshotPolicyCmd.java index 8e8075f5a88..9b08da639b0 100644 --- a/server/src/com/cloud/api/commands/CreateSnapshotPolicyCmd.java +++ b/server/src/com/cloud/api/commands/CreateSnapshotPolicyCmd.java @@ -21,6 +21,7 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; @@ -110,14 +111,7 @@ public class CreateSnapshotPolicyCmd extends BaseCmd { @Override @SuppressWarnings("unchecked") public SnapshotPolicyResponse getResponse() { SnapshotPolicyVO snapshotPolicy = (SnapshotPolicyVO)getResponseObject(); - - SnapshotPolicyResponse response = new SnapshotPolicyResponse(); - response.setId(snapshotPolicy.getId()); - response.setIntervalType(snapshotPolicy.getInterval()); - response.setMaxSnaps(snapshotPolicy.getMaxSnaps()); - response.setSchedule(snapshotPolicy.getSchedule()); - response.setVolumeId(snapshotPolicy.getVolumeId()); - + SnapshotPolicyResponse response = ApiResponseHelper.createSnapshotPolicyResponse(snapshotPolicy); 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 52cd448a207..903ab4789c7 100644 --- a/server/src/com/cloud/api/commands/DeployVMCmd.java +++ b/server/src/com/cloud/api/commands/DeployVMCmd.java @@ -24,21 +24,15 @@ 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.response.UserVmResponse; import com.cloud.event.EventTypes; -import com.cloud.offering.ServiceOffering; -import com.cloud.storage.StoragePoolVO; -import com.cloud.storage.VMTemplateVO; -import com.cloud.storage.VolumeVO; import com.cloud.user.Account; -import com.cloud.user.User; import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; -import com.cloud.vm.InstanceGroupVO; @Implementation(method="deployVirtualMachine", description="Creates and automatically starts a virtual machine based on a service offering, disk offering, and template.") public class DeployVMCmd extends BaseAsyncCmd { @@ -196,114 +190,12 @@ public class DeployVMCmd extends BaseAsyncCmd { @Override @SuppressWarnings("unchecked") public UserVmResponse getResponse() { UserVm userVm = (UserVm)getResponseObject(); - - UserVmResponse response = new UserVmResponse(); - response.setId(userVm.getId()); - response.setName(userVm.getName()); - response.setCreated(userVm.getCreated()); - response.setZoneId(userVm.getDataCenterId()); - response.setZoneName(ApiDBUtils.findZoneById(userVm.getDataCenterId()).getName()); - response.setIpAddress(userVm.getPrivateIpAddress()); - response.setServiceOfferingId(userVm.getServiceOfferingId()); - response.setHaEnable(userVm.isHaEnabled()); - - InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(userVm.getId()); - if (group != null) { - response.setGroup(group.getName()); - response.setGroupId(group.getId()); - } - - if (userVm.getDisplayName() == null || userVm.getDisplayName().length() == 0) { - response.setDisplayName(userVm.getName()); - } else { - response.setDisplayName(userVm.getDisplayName()); - } + UserVmResponse response = ApiResponseHelper.createUserVmResponse(userVm); - if (userVm.getState() != null) { - response.setState(userVm.getState().toString()); - } - - VMTemplateVO template = ApiDBUtils.findTemplateById(userVm.getTemplateId()); - - Account acct = ApiDBUtils.findAccountById(Long.valueOf(userVm.getAccountId())); - if (acct != null) { - response.setAccountName(acct.getAccountName()); - response.setDomainId(acct.getDomainId()); - response.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); - } - - Long userId = UserContext.current().getUserId(); - if (userId == null) { - userId = User.UID_SYSTEM; - } - - //this is for the case where the admin deploys a vm for a normal user - User userExecutingCmd = ApiDBUtils.findUserById(userId); - Account acctForUserExecutingCmd = ApiDBUtils.findAccountById(Long.valueOf(userExecutingCmd.getAccountId())); - if ((BaseCmd.isAdmin(acctForUserExecutingCmd.getType()) && (userVm.getHostId() != null)) || (BaseCmd.isAdmin(acct.getType()) && (userVm.getHostId() != null))) { - response.setHostName(ApiDBUtils.findHostById(userVm.getHostId()).getName()); - response.setHostId(userVm.getHostId()); - } - - String templateName = "none"; - boolean templatePasswordEnabled = false; - String templateDisplayText = null; - - if (template != null) { - templateName = template.getName(); - templatePasswordEnabled = template.getEnablePassword(); - templateDisplayText = template.getDisplayText(); - if (templateDisplayText == null) { - templateDisplayText = templateName; - } - } - - if (templatePasswordEnabled) { // FIXME: where will the password come from in this case? - response.setPassword(getPassword()); - } - - // ISO Info - Long isoId = userVm.getIsoId(); - if (isoId != null) { - VMTemplateVO iso = ApiDBUtils.findTemplateById(isoId.longValue()); - if (iso != null) { - response.setIsoId(isoId.longValue()); - response.setIsoName(iso.getName()); - response.setTemplateId(isoId.longValue()); - response.setTemplateName(iso.getName()); - - templateDisplayText = iso.getDisplayText(); - if(templateDisplayText == null) - templateDisplayText = iso.getName(); - response.setIsoDisplayText(templateDisplayText); - response.setTemplateDisplayText(templateDisplayText); - } - } else { - response.setTemplateId(userVm.getTemplateId()); - response.setTemplateName(templateName); - response.setTemplateDisplayText(templateDisplayText); - response.setPasswordEnabled(templatePasswordEnabled); - } - - ServiceOffering offering = ApiDBUtils.findServiceOfferingById(userVm.getServiceOfferingId()); - response.setServiceOfferingId(userVm.getServiceOfferingId()); - response.setServiceOfferingName(offering.getName()); - - response.setCpuNumber(offering.getCpu()); - response.setCpuSpeed(offering.getSpeed()); - response.setMemory(offering.getRamSize()); - - VolumeVO rootVolume = ApiDBUtils.findRootVolume(userVm.getId()); - if (rootVolume != null) { - response.setRootDeviceId(rootVolume.getDeviceId()); - StoragePoolVO storagePool = ApiDBUtils.findStoragePoolById(rootVolume.getPoolId()); - response.setRootDeviceType(storagePool.getPoolType().toString()); - } - - response.setGuestOsId(userVm.getGuestOSId()); - - response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(userVm.getId())); - + // FIXME: where will the password come from in this case? +// if (templatePasswordEnabled) { +// response.setPassword(getPassword()); +// } 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 87521a970ae..40fa780ccb9 100644 --- a/server/src/com/cloud/api/commands/DestroyVMCmd.java +++ b/server/src/com/cloud/api/commands/DestroyVMCmd.java @@ -21,17 +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.response.UserVmResponse; import com.cloud.event.EventTypes; -import com.cloud.offering.ServiceOffering; -import com.cloud.storage.VMTemplateVO; import com.cloud.user.Account; import com.cloud.uservm.UserVm; -import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.UserVmManager; @Implementation(method="destroyVm", manager=UserVmManager.class, description="Destroys a virtual machine. Once destroyed, only the administrator can recover it.") @@ -86,94 +83,8 @@ public class DestroyVMCmd extends BaseAsyncCmd { @Override @SuppressWarnings("unchecked") public UserVmResponse getResponse() { - Boolean success = (Boolean)getResponseObject(); - UserVmResponse recoverVmResponse = new UserVmResponse(); - UserVm vm = ApiDBUtils.findUserVmById(id); - recoverVmResponse.setSuccess(success); - recoverVmResponse.setResponseName(getName()); - recoverVmResponse.setId(vm.getId()); - recoverVmResponse.setName(vm.getName()); - recoverVmResponse.setCreated(vm.getCreated()); - recoverVmResponse.setZoneId(vm.getDataCenterId()); - recoverVmResponse.setZoneName(ApiDBUtils.findZoneById(vm.getDataCenterId()).getName()); - recoverVmResponse.setIpAddress(vm.getPrivateIpAddress()); - recoverVmResponse.setServiceOfferingId(vm.getServiceOfferingId()); - recoverVmResponse.setHaEnable(vm.isHaEnabled()); - if (vm.getDisplayName() == null || vm.getDisplayName().length() == 0) { - recoverVmResponse.setDisplayName(vm.getName()); - } else { - recoverVmResponse.setDisplayName(vm.getDisplayName()); - } - - InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(vm.getId()); - if (group != null) { - recoverVmResponse.setGroup(group.getName()); - recoverVmResponse.setGroupId(group.getId()); - } - - if (vm.getState() != null) { - recoverVmResponse.setState(vm.getState().toString()); - } - - Account acct = ApiDBUtils.findAccountById(vm.getAccountId()); - if (acct != null) { - recoverVmResponse.setAccountName(acct.getAccountName()); - recoverVmResponse.setDomainId(acct.getDomainId()); - recoverVmResponse.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); - } - - if (BaseCmd.isAdmin(acct.getType()) && (vm.getHostId() != null)) { - recoverVmResponse.setHostName(ApiDBUtils.findHostById(vm.getHostId()).getName()); - recoverVmResponse.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; - } - } - - recoverVmResponse.setTemplateId(vm.getTemplateId()); - recoverVmResponse.setTemplateName(templateName); - recoverVmResponse.setTemplateDisplayText(templateDisplayText); - recoverVmResponse.setPasswordEnabled(templatePasswordEnabled); - if (templatePasswordEnabled) { - recoverVmResponse.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 { - recoverVmResponse.setPassword(""); - } - - String isoName = null; - if (vm.getIsoId() != null) { - VMTemplateVO iso = ApiDBUtils.findTemplateById(vm.getIsoId().longValue()); - if (iso != null) { - isoName = iso.getName(); - } - } - - recoverVmResponse.setIsoId(vm.getIsoId()); - recoverVmResponse.setIsoName(isoName); - - ServiceOffering offering = ApiDBUtils.findServiceOfferingById(vm.getServiceOfferingId()); - recoverVmResponse.setServiceOfferingId(vm.getServiceOfferingId()); - recoverVmResponse.setServiceOfferingName(offering.getName()); - - recoverVmResponse.setCpuNumber(offering.getCpu()); - recoverVmResponse.setCpuSpeed(offering.getSpeed()); - recoverVmResponse.setMemory(offering.getRamSize()); - - //Network groups - recoverVmResponse.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(vm.getId())); - + UserVm userVm = (UserVm)getResponseObject(); + UserVmResponse recoverVmResponse = ApiResponseHelper.createUserVmResponse(userVm); recoverVmResponse.setResponseName(getName()); return recoverVmResponse; } diff --git a/server/src/com/cloud/api/commands/ListSnapshotPoliciesCmd.java b/server/src/com/cloud/api/commands/ListSnapshotPoliciesCmd.java index b07809c303a..47f22621381 100644 --- a/server/src/com/cloud/api/commands/ListSnapshotPoliciesCmd.java +++ b/server/src/com/cloud/api/commands/ListSnapshotPoliciesCmd.java @@ -24,6 +24,7 @@ import java.util.List; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; @@ -83,14 +84,7 @@ public class ListSnapshotPoliciesCmd extends BaseListCmd { ListResponse response = new ListResponse(); List policyResponses = new ArrayList(); for (SnapshotPolicyVO policy : policies) { - SnapshotPolicyResponse policyResponse = new SnapshotPolicyResponse(); - policyResponse.setId(policy.getId()); - policyResponse.setVolumeId(policy.getVolumeId()); - policyResponse.setSchedule(policy.getSchedule()); - policyResponse.setIntervalType(policy.getInterval()); - policyResponse.setMaxSnaps(policy.getMaxSnaps()); - policyResponse.setTimezone(policy.getTimezone()); - + SnapshotPolicyResponse policyResponse = ApiResponseHelper.createSnapshotPolicyResponse(policy); policyResponse.setResponseName("snapshotpolicy"); policyResponses.add(policyResponse); } diff --git a/server/src/com/cloud/api/commands/ListSnapshotsCmd.java b/server/src/com/cloud/api/commands/ListSnapshotsCmd.java index 4d3c123db45..7078852dff2 100644 --- a/server/src/com/cloud/api/commands/ListSnapshotsCmd.java +++ b/server/src/com/cloud/api/commands/ListSnapshotsCmd.java @@ -23,18 +23,14 @@ import java.util.List; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; -import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SnapshotResponse; -import com.cloud.async.AsyncJobVO; import com.cloud.storage.Snapshot; -import com.cloud.storage.Snapshot.SnapshotType; import com.cloud.storage.SnapshotVO; -import com.cloud.storage.VolumeVO; -import com.cloud.user.Account; @Implementation(method="listSnapshots", description="Lists all available snapshots for the account.") public class ListSnapshotsCmd extends BaseListCmd { @@ -115,32 +111,7 @@ public class ListSnapshotsCmd extends BaseListCmd { ListResponse response = new ListResponse(); List snapshotResponses = new ArrayList(); for (Snapshot snapshot : snapshots) { - SnapshotResponse snapshotResponse = new SnapshotResponse(); - snapshotResponse.setId(snapshot.getId()); - - Account acct = ApiDBUtils.findAccountById(Long.valueOf(snapshot.getAccountId())); - if (acct != null) { - snapshotResponse.setAccountName(acct.getAccountName()); - snapshotResponse.setDomainId(acct.getDomainId()); - snapshotResponse.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); - } - - VolumeVO volume = ApiDBUtils.findVolumeById(snapshot.getVolumeId()); - String snapshotTypeStr = SnapshotType.values()[snapshot.getSnapshotType()].name(); - snapshotResponse.setSnapshotType(snapshotTypeStr); - snapshotResponse.setVolumeId(snapshot.getVolumeId()); - snapshotResponse.setVolumeName(volume.getName()); - snapshotResponse.setVolumeType(volume.getVolumeType().name()); - snapshotResponse.setCreated(snapshot.getCreated()); - snapshotResponse.setName(snapshot.getName()); - - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("snapshot", snapshot.getId()); - if (asyncJob != null) { - snapshotResponse.setJobId(asyncJob.getId()); - snapshotResponse.setJobStatus(asyncJob.getStatus()); - } - snapshotResponse.setIntervalType(ApiDBUtils.getSnapshotIntervalTypes(snapshot.getId())); - + SnapshotResponse snapshotResponse = ApiResponseHelper.createSnapshotResponse(snapshot); snapshotResponse.setResponseName("snapshot"); snapshotResponses.add(snapshotResponse); } diff --git a/server/src/com/cloud/api/commands/ListVMsCmd.java b/server/src/com/cloud/api/commands/ListVMsCmd.java index 09cdc81f598..143e32fd9ff 100644 --- a/server/src/com/cloud/api/commands/ListVMsCmd.java +++ b/server/src/com/cloud/api/commands/ListVMsCmd.java @@ -17,29 +17,19 @@ */ package com.cloud.api.commands; -import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; -import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.ListResponse; import com.cloud.api.response.UserVmResponse; -import com.cloud.async.AsyncJobVO; -import com.cloud.offering.ServiceOffering; -import com.cloud.storage.StoragePoolVO; -import com.cloud.storage.VMTemplateVO; -import com.cloud.storage.VolumeVO; -import com.cloud.user.Account; -import com.cloud.user.UserContext; -import com.cloud.vm.InstanceGroupVO; -import com.cloud.vm.UserVmVO; -import com.cloud.vm.VmStats; +import com.cloud.uservm.UserVm; @Implementation(method="searchForUserVMs", description="List the virtual machines owned by the account.") public class ListVMsCmd extends BaseListCmd { @@ -129,125 +119,17 @@ public class ListVMsCmd extends BaseListCmd { @Override @SuppressWarnings("unchecked") public ListResponse getResponse() { - List userVms = (List)getResponseObject(); + List userVms = (List)getResponseObject(); ListResponse response = new ListResponse(); List vmResponses = new ArrayList(); - for (UserVmVO userVm : userVms) { - UserVmResponse userVmResponse = new UserVmResponse(); - - Account acct = ApiDBUtils.findAccountById(Long.valueOf(userVm.getAccountId())); - if ((acct != null) && (acct.getRemoved() == null)) { - userVmResponse.setAccountName(acct.getAccountName()); - userVmResponse.setDomainId(acct.getDomainId()); - userVmResponse.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); - } else { - continue; // the account has been deleted, skip this VM in the response + for (UserVm userVm : userVms) { + UserVmResponse userVmResponse = ApiResponseHelper.createUserVmResponse(userVm); + if (userVmResponse != null) { + userVmResponse.setResponseName("virtualmachine"); + vmResponses.add(userVmResponse); } - - userVmResponse.setId(userVm.getId()); - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("vm_instance", userVm.getId()); - if (asyncJob != null) { - userVmResponse.setJobId(asyncJob.getId()); - userVmResponse.setJobStatus(asyncJob.getStatus()); - } - - userVmResponse.setName(userVm.getName()); - userVmResponse.setCreated(userVm.getCreated()); - userVmResponse.setIpAddress(userVm.getPrivateIpAddress()); - if (userVm.getState() != null) { - userVmResponse.setState(userVm.getState().toString()); - } - - - userVmResponse.setHaEnable(userVm.isHaEnabled()); - - if (userVm.getDisplayName() != null) { - userVmResponse.setDisplayName(userVm.getDisplayName()); - } else { - userVmResponse.setDisplayName(userVm.getName()); - } - - InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(userVm.getId()); - if (group != null) { - userVmResponse.setGroup(group.getName()); - userVmResponse.setGroupId(group.getId()); - } - - // Data Center Info - userVmResponse.setZoneId(userVm.getDataCenterId()); - userVmResponse.setZoneName(ApiDBUtils.findZoneById(userVm.getDataCenterId()).getName()); - - Account account = (Account)UserContext.current().getAccount(); - //if user is an admin, display host id - if (((account == null) || isAdmin(account.getType())) && (userVm.getHostId() != null)) { - userVmResponse.setHostId(userVm.getHostId()); - userVmResponse.setHostName(ApiDBUtils.findHostById(userVm.getHostId()).getName()); - } - - // Template Info - VMTemplateVO template = ApiDBUtils.findTemplateById(userVm.getTemplateId()); - if (template != null) { - userVmResponse.setTemplateId(userVm.getTemplateId()); - userVmResponse.setTemplateName(template.getName()); - userVmResponse.setTemplateDisplayText(template.getDisplayText()); - userVmResponse.setPasswordEnabled(template.getEnablePassword()); - } else { - userVmResponse.setTemplateId(-1L); - userVmResponse.setTemplateName("ISO Boot"); - userVmResponse.setTemplateDisplayText("ISO Boot"); - userVmResponse.setPasswordEnabled(false); - } - - // ISO Info - if (userVm.getIsoId() != null) { - VMTemplateVO iso = ApiDBUtils.findTemplateById(userVm.getIsoId().longValue()); - if (iso != null) { - userVmResponse.setIsoId(userVm.getIsoId()); - userVmResponse.setIsoName(iso.getName()); - } - } - - // Service Offering Info - ServiceOffering offering = ApiDBUtils.findServiceOfferingById(userVm.getServiceOfferingId()); - userVmResponse.setServiceOfferingId(userVm.getServiceOfferingId()); - userVmResponse.setServiceOfferingName(offering.getName()); - userVmResponse.setCpuNumber(offering.getCpu()); - userVmResponse.setCpuSpeed(offering.getSpeed()); - userVmResponse.setMemory(offering.getRamSize()); - - VolumeVO rootVolume = ApiDBUtils.findRootVolume(userVm.getId()); - if (rootVolume != null) { - userVmResponse.setRootDeviceId(rootVolume.getDeviceId()); - StoragePoolVO storagePool = ApiDBUtils.findStoragePoolById(rootVolume.getPoolId()); - userVmResponse.setRootDeviceType(storagePool.getPoolType().toString()); - } - - //stats calculation - DecimalFormat decimalFormat = new DecimalFormat("#.##"); - String cpuUsed = null; - VmStats vmStats = ApiDBUtils.getVmStatistics(userVm.getId()); - if (vmStats != null) { - float cpuUtil = (float) vmStats.getCPUUtilization(); - cpuUsed = decimalFormat.format(cpuUtil) + "%"; - userVmResponse.setCpuUsed(cpuUsed); - - long networkKbRead = (long)vmStats.getNetworkReadKBs(); - userVmResponse.setNetworkKbsRead(networkKbRead); - - long networkKbWrite = (long)vmStats.getNetworkWriteKBs(); - userVmResponse.setNetworkKbsWrite(networkKbWrite); - } - - userVmResponse.setGuestOsId(userVm.getGuestOSId()); - - //network groups - userVmResponse.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(userVm.getId())); - - userVmResponse.setResponseName("virtualmachine"); - vmResponses.add(userVmResponse); } - response.setResponses(vmResponses); 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 b7fe1e04e43..4857d6642e1 100644 --- a/server/src/com/cloud/api/commands/RebootVMCmd.java +++ b/server/src/com/cloud/api/commands/RebootVMCmd.java @@ -21,19 +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.response.UserVmResponse; import com.cloud.event.EventTypes; -import com.cloud.offering.ServiceOffering; -import com.cloud.storage.StoragePoolVO; -import com.cloud.storage.VMTemplateVO; -import com.cloud.storage.VolumeVO; import com.cloud.user.Account; import com.cloud.uservm.UserVm; -import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.UserVmManager; @Implementation(method="rebootVirtualMachine", manager=UserVmManager.class, description="Reboots a virtual machine.") @@ -85,104 +80,11 @@ public class RebootVMCmd extends BaseAsyncCmd { return "rebooting user vm: " + getId(); } - @Override @SuppressWarnings("unchecked") - public UserVmResponse 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.setIpAddress(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()); - } - - InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(vm.getId()); - if (group != null) { - response.setGroup(group.getName()); - response.setGroupId(group.getId()); - } - - 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()); - - VolumeVO rootVolume = ApiDBUtils.findRootVolume(vm.getId()); - if (rootVolume != null) { - response.setRootDeviceId(rootVolume.getDeviceId()); - StoragePoolVO storagePool = ApiDBUtils.findStoragePoolById(rootVolume.getPoolId()); - response.setRootDeviceType(storagePool.getPoolType().toString()); - } - - response.setGuestOsId(vm.getGuestOSId()); - - //Network groups - response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(vm.getId())); - - response.setResponseName(getName()); - return response; - } + @Override @SuppressWarnings("unchecked") + public UserVmResponse getResponse() { + UserVm userVm = (UserVm)getResponseObject(); + UserVmResponse recoverVmResponse = ApiResponseHelper.createUserVmResponse(userVm); + recoverVmResponse.setResponseName(getName()); + return recoverVmResponse; + } } diff --git a/server/src/com/cloud/api/commands/RecoverVMCmd.java b/server/src/com/cloud/api/commands/RecoverVMCmd.java index 11ec5d63fa0..b5eb2906c6e 100644 --- a/server/src/com/cloud/api/commands/RecoverVMCmd.java +++ b/server/src/com/cloud/api/commands/RecoverVMCmd.java @@ -21,16 +21,12 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; -import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.UserVmResponse; -import com.cloud.offering.ServiceOffering; -import com.cloud.storage.VMTemplateVO; -import com.cloud.user.Account; import com.cloud.uservm.UserVm; -import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.UserVmManager; @Implementation(method="recoverVirtualMachine", manager=UserVmManager.class, description="Recovers a virtual machine.") @@ -63,97 +59,11 @@ public class RecoverVMCmd extends BaseCmd { return s_name; } - @Override @SuppressWarnings("unchecked") - public UserVmResponse getResponse() { - Boolean success = (Boolean)getResponseObject(); - UserVmResponse recoverVmResponse = new UserVmResponse(); - UserVm vm = ApiDBUtils.findUserVmById(id); - recoverVmResponse.setSuccess(success); - recoverVmResponse.setResponseName(getName()); - recoverVmResponse.setId(vm.getId()); - recoverVmResponse.setName(vm.getName()); - recoverVmResponse.setCreated(vm.getCreated()); - recoverVmResponse.setZoneId(vm.getDataCenterId()); - recoverVmResponse.setZoneName(ApiDBUtils.findZoneById(vm.getDataCenterId()).getName()); - recoverVmResponse.setIpAddress(vm.getPrivateIpAddress()); - recoverVmResponse.setServiceOfferingId(vm.getServiceOfferingId()); - recoverVmResponse.setHaEnable(vm.isHaEnabled()); - if (vm.getDisplayName() == null || vm.getDisplayName().length() == 0) { - recoverVmResponse.setDisplayName(vm.getName()); - } else { - recoverVmResponse.setDisplayName(vm.getDisplayName()); - } - - InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(vm.getId()); - if (group != null) { - recoverVmResponse.setGroup(group.getName()); - recoverVmResponse.setGroupId(group.getId()); - } - - if (vm.getState() != null) { - recoverVmResponse.setState(vm.getState().toString()); - } - - Account acct = ApiDBUtils.findAccountById(vm.getAccountId()); - if (acct != null) { - recoverVmResponse.setAccountName(acct.getAccountName()); - recoverVmResponse.setDomainId(acct.getDomainId()); - recoverVmResponse.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); - } - - if (BaseCmd.isAdmin(acct.getType()) && (vm.getHostId() != null)) { - recoverVmResponse.setHostName(ApiDBUtils.findHostById(vm.getHostId()).getName()); - recoverVmResponse.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; - } - } - - recoverVmResponse.setTemplateId(vm.getTemplateId()); - recoverVmResponse.setTemplateName(templateName); - recoverVmResponse.setTemplateDisplayText(templateDisplayText); - recoverVmResponse.setPasswordEnabled(templatePasswordEnabled); - if (templatePasswordEnabled) { - recoverVmResponse.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 { - recoverVmResponse.setPassword(""); - } - - String isoName = null; - if (vm.getIsoId() != null) { - VMTemplateVO iso = ApiDBUtils.findTemplateById(vm.getIsoId().longValue()); - if (iso != null) { - isoName = iso.getName(); - } - } - - recoverVmResponse.setIsoId(vm.getIsoId()); - recoverVmResponse.setIsoName(isoName); - - ServiceOffering offering = ApiDBUtils.findServiceOfferingById(vm.getServiceOfferingId()); - recoverVmResponse.setServiceOfferingId(vm.getServiceOfferingId()); - recoverVmResponse.setServiceOfferingName(offering.getName()); - - recoverVmResponse.setCpuNumber(offering.getCpu()); - recoverVmResponse.setCpuSpeed(offering.getSpeed()); - recoverVmResponse.setMemory(offering.getRamSize()); - - //Network groups - recoverVmResponse.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(vm.getId())); - + @Override @SuppressWarnings("unchecked") + public UserVmResponse getResponse() { + UserVm userVm = (UserVm)getResponseObject(); + UserVmResponse recoverVmResponse = ApiResponseHelper.createUserVmResponse(userVm); recoverVmResponse.setResponseName(getName()); return recoverVmResponse; - } + } } diff --git a/server/src/com/cloud/api/commands/ResetVMPasswordCmd.java b/server/src/com/cloud/api/commands/ResetVMPasswordCmd.java index 51c81748fee..a445c087bca 100644 --- a/server/src/com/cloud/api/commands/ResetVMPasswordCmd.java +++ b/server/src/com/cloud/api/commands/ResetVMPasswordCmd.java @@ -21,19 +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.response.UserVmResponse; import com.cloud.event.EventTypes; -import com.cloud.offering.ServiceOffering; -import com.cloud.storage.VMTemplateVO; import com.cloud.user.Account; -import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; -import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.UserVmManager; @Implementation(method="resetVMPassword", manager=UserVmManager.class, description="Resets the password for virtual machine. " + @@ -103,105 +98,12 @@ public class ResetVMPasswordCmd extends BaseAsyncCmd { @Override @SuppressWarnings("unchecked") public UserVmResponse getResponse() { UserVm userVm = (UserVm)getResponseObject(); - - UserVmResponse response = new UserVmResponse(); - response.setId(userVm.getId()); - response.setName(userVm.getName()); - response.setCreated(userVm.getCreated()); - response.setZoneId(userVm.getDataCenterId()); - response.setZoneName(ApiDBUtils.findZoneById(userVm.getDataCenterId()).getName()); - response.setIpAddress(userVm.getPrivateIpAddress()); - response.setServiceOfferingId(userVm.getServiceOfferingId()); - response.setHaEnable(userVm.isHaEnabled()); - - InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(userVm.getId()); - if (group != null) { - response.setGroup(group.getName()); - response.setGroupId(group.getId()); - } - - if (userVm.getDisplayName() == null || userVm.getDisplayName().length() == 0) { - response.setDisplayName(userVm.getName()); - } else { - response.setDisplayName(userVm.getDisplayName()); - } + UserVmResponse response = ApiResponseHelper.createUserVmResponse(userVm); - if (userVm.getState() != null) { - response.setState(userVm.getState().toString()); - } - - VMTemplateVO template = ApiDBUtils.findTemplateById(userVm.getTemplateId()); - - Account acct = ApiDBUtils.findAccountById(Long.valueOf(userVm.getAccountId())); - if (acct != null) { - response.setAccountName(acct.getAccountName()); - response.setDomainId(acct.getDomainId()); - response.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); - } - - Long userId = UserContext.current().getUserId(); - if (userId == null) { - userId = User.UID_SYSTEM; - } - - //this is for the case where the admin deploys a vm for a normal user - User userExecutingCmd = ApiDBUtils.findUserById(userId); - Account acctForUserExecutingCmd = ApiDBUtils.findAccountById(Long.valueOf(userExecutingCmd.getAccountId())); - if ((BaseCmd.isAdmin(acctForUserExecutingCmd.getType()) && (userVm.getHostId() != null)) || (BaseCmd.isAdmin(acct.getType()) && (userVm.getHostId() != null))) { - response.setHostName(ApiDBUtils.findHostById(userVm.getHostId()).getName()); - response.setHostId(userVm.getHostId()); - } - - String templateName = "none"; - boolean templatePasswordEnabled = false; - String templateDisplayText = null; - - if (template != null) { - templateName = template.getName(); - templatePasswordEnabled = template.getEnablePassword(); - templateDisplayText = template.getDisplayText(); - if (templateDisplayText == null) { - templateDisplayText = templateName; - } - } - - if (templatePasswordEnabled) { // FIXME: where will the password come from in this case? - response.setPassword(getPassword()); - } - - // ISO Info - Long isoId = userVm.getIsoId(); - if (isoId != null) { - VMTemplateVO iso = ApiDBUtils.findTemplateById(isoId.longValue()); - if (iso != null) { - response.setIsoId(isoId.longValue()); - response.setIsoName(iso.getName()); - response.setTemplateId(isoId.longValue()); - response.setTemplateName(iso.getName()); - - templateDisplayText = iso.getDisplayText(); - if(templateDisplayText == null) - templateDisplayText = iso.getName(); - response.setIsoDisplayText(templateDisplayText); - response.setTemplateDisplayText(templateDisplayText); - } - } else { - response.setTemplateId(userVm.getTemplateId()); - response.setTemplateName(templateName); - response.setTemplateDisplayText(templateDisplayText); - response.setPasswordEnabled(templatePasswordEnabled); - } - - ServiceOffering offering = ApiDBUtils.findServiceOfferingById(userVm.getServiceOfferingId()); - response.setServiceOfferingId(userVm.getServiceOfferingId()); - response.setServiceOfferingName(offering.getName()); - - response.setCpuNumber(offering.getCpu()); - response.setCpuSpeed(offering.getSpeed()); - response.setMemory(offering.getRamSize()); - - response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(userVm.getId())); - + // FIXME: where will the password come from in this case? +// if (templatePasswordEnabled) { +// response.setPassword(getPassword()); +// } 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 1f0298af39f..8de866250f0 100644 --- a/server/src/com/cloud/api/commands/StartVMCmd.java +++ b/server/src/com/cloud/api/commands/StartVMCmd.java @@ -21,19 +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.response.UserVmResponse; import com.cloud.event.EventTypes; -import com.cloud.offering.ServiceOffering; -import com.cloud.storage.StoragePoolVO; -import com.cloud.storage.VMTemplateVO; -import com.cloud.storage.VolumeVO; import com.cloud.user.Account; import com.cloud.uservm.UserVm; -import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.UserVmManager; @Implementation(method="startVirtualMachine", manager=UserVmManager.class, description="Starts a virtual machine.") @@ -90,105 +85,11 @@ public class StartVMCmd extends BaseAsyncCmd { return "starting user vm: " + getId(); } - @Override @SuppressWarnings("unchecked") - public UserVmResponse 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.setIpAddress(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()); - } - - InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(vm.getId()); - if (group != null) { - response.setGroup(group.getName()); - response.setGroupId(group.getId()); - } - - 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()); - - VolumeVO rootVolume = ApiDBUtils.findRootVolume(vm.getId()); - if (rootVolume != null) { - response.setRootDeviceId(rootVolume.getDeviceId()); - StoragePoolVO storagePool = ApiDBUtils.findStoragePoolById(rootVolume.getPoolId()); - response.setRootDeviceType(storagePool.getPoolType().toString()); - } - - response.setGuestOsId(vm.getGuestOSId()); - - //Network groups - response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(vm.getId())); - - response.setResponseName(getName()); - //response.setResponseName(getResultObjectName()); - return response; + @Override @SuppressWarnings("unchecked") + public UserVmResponse getResponse() { + UserVm userVm = (UserVm)getResponseObject(); + UserVmResponse recoverVmResponse = ApiResponseHelper.createUserVmResponse(userVm); + recoverVmResponse.setResponseName(getName()); + return recoverVmResponse; } } diff --git a/server/src/com/cloud/api/commands/StopVMCmd.java b/server/src/com/cloud/api/commands/StopVMCmd.java index eb91d276774..f5308f29925 100644 --- a/server/src/com/cloud/api/commands/StopVMCmd.java +++ b/server/src/com/cloud/api/commands/StopVMCmd.java @@ -21,19 +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.response.UserVmResponse; import com.cloud.event.EventTypes; -import com.cloud.offering.ServiceOffering; -import com.cloud.storage.StoragePoolVO; -import com.cloud.storage.VMTemplateVO; -import com.cloud.storage.VolumeVO; import com.cloud.user.Account; import com.cloud.uservm.UserVm; -import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.UserVmManager; @Implementation(method="stopVirtualMachine", manager=UserVmManager.class, description="Stops a virtual machine.") @@ -90,100 +85,11 @@ public class StopVMCmd extends BaseAsyncCmd { return "stopping user vm: " + getId(); } - @Override @SuppressWarnings("unchecked") - public UserVmResponse 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.setIpAddress(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()); - } - - InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(vm.getId()); - if (group != null) { - response.setGroup(group.getName()); - response.setGroupId(group.getId()); - } - - 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()); - } - - 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()); - - VolumeVO rootVolume = ApiDBUtils.findRootVolume(vm.getId()); - if (rootVolume != null) { - response.setRootDeviceId(rootVolume.getDeviceId()); - StoragePoolVO storagePool = ApiDBUtils.findStoragePoolById(rootVolume.getPoolId()); - response.setRootDeviceType(storagePool.getPoolType().toString()); - } - - response.setGuestOsId(vm.getGuestOSId()); - - //Network groups - response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(vm.getId())); - - response.setResponseName(getName()); - //response.setResponseName(getResultObjectName()); - return response; - } + @Override @SuppressWarnings("unchecked") + public UserVmResponse getResponse() { + UserVm userVm = (UserVm)getResponseObject(); + UserVmResponse recoverVmResponse = ApiResponseHelper.createUserVmResponse(userVm); + recoverVmResponse.setResponseName(getName()); + return recoverVmResponse; + } } diff --git a/server/src/com/cloud/api/commands/UpdateVMCmd.java b/server/src/com/cloud/api/commands/UpdateVMCmd.java index 687b6376603..2f85d3f01d0 100644 --- a/server/src/com/cloud/api/commands/UpdateVMCmd.java +++ b/server/src/com/cloud/api/commands/UpdateVMCmd.java @@ -20,10 +20,12 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.SuccessResponse; +import com.cloud.api.response.UserVmResponse; +import com.cloud.uservm.UserVm; import com.cloud.vm.UserVmManager; @Implementation(method="updateVirtualMachine", manager=UserVmManager.class, description="Updates parameters of a virtual machine.") @@ -81,10 +83,10 @@ public class UpdateVMCmd extends BaseCmd{ } @Override @SuppressWarnings("unchecked") - public SuccessResponse getResponse() { - SuccessResponse response = new SuccessResponse(); - response.setSuccess(Boolean.TRUE); - response.setResponseName(getName()); - return response; + public UserVmResponse getResponse() { + UserVm userVm = (UserVm)getResponseObject(); + UserVmResponse recoverVmResponse = ApiResponseHelper.createUserVmResponse(userVm); + recoverVmResponse.setResponseName(getName()); + return recoverVmResponse; } } diff --git a/server/src/com/cloud/api/commands/UpgradeVMCmd.java b/server/src/com/cloud/api/commands/UpgradeVMCmd.java index 8359491f873..fea64488531 100644 --- a/server/src/com/cloud/api/commands/UpgradeVMCmd.java +++ b/server/src/com/cloud/api/commands/UpgradeVMCmd.java @@ -17,24 +17,16 @@ */ package com.cloud.api.commands; -import java.text.DecimalFormat; - import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; -import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.ServerApiException; import com.cloud.api.response.UserVmResponse; -import com.cloud.offering.ServiceOffering; -import com.cloud.service.ServiceOfferingVO; -import com.cloud.storage.VMTemplateVO; -import com.cloud.user.Account; +import com.cloud.uservm.UserVm; import com.cloud.vm.UserVmManager; -import com.cloud.vm.UserVmVO; -import com.cloud.vm.VmStats; @Implementation(method="upgradeVirtualMachine", manager=UserVmManager.class, description="Changes the service offering for a virtual machine. " + "The virtual machine must be in a \"Stopped\" state for " + @@ -80,67 +72,9 @@ public class UpgradeVMCmd extends BaseCmd { @Override @SuppressWarnings("unchecked") public UserVmResponse getResponse() { - UserVmVO userVm = (UserVmVO)getResponseObject(); - - UserVmResponse response = new UserVmResponse(); - if (userVm != null) { - Account acct = ApiDBUtils.findAccountById(userVm.getAccountId()); - response.setId(userVm.getId()); - response.setAccountName(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()); - - //stats calculation - DecimalFormat decimalFormat = new DecimalFormat("#.##"); - String cpuUsed = null; - VmStats vmStats = ApiDBUtils.getVmStatistics(userVm.getId()); - if (vmStats != null) { - float cpuUtil = (float) vmStats.getCPUUtilization(); - cpuUsed = decimalFormat.format(cpuUtil) + "%"; - response.setCpuUsed(cpuUsed); - - long networkKbRead = (long)vmStats.getNetworkReadKBs(); - response.setNetworkKbsRead(networkKbRead); - - long networkKbWrite = (long)vmStats.getNetworkWriteKBs(); - response.setNetworkKbsWrite(networkKbWrite); - } - - response.setCreated(userVm.getCreated()); - response.setDisplayName(userVm.getDisplayName()); - response.setDomainName(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."); - } - - response.setResponseName(getName()); - return response; + UserVm userVm = (UserVm)getResponseObject(); + UserVmResponse recoverVmResponse = ApiResponseHelper.createUserVmResponse(userVm); + recoverVmResponse.setResponseName(getName()); + return recoverVmResponse; } } diff --git a/server/src/com/cloud/api/response/UserVmResponse.java b/server/src/com/cloud/api/response/UserVmResponse.java index 8ae1888785e..b23a76920ad 100644 --- a/server/src/com/cloud/api/response/UserVmResponse.java +++ b/server/src/com/cloud/api/response/UserVmResponse.java @@ -138,17 +138,6 @@ public class UserVmResponse extends BaseResponse { @SerializedName("jobstatus") @Param(description="shows the current pending asynchronous job status") private Integer jobStatus; - @SerializedName("success") @Param(description="shows the status of the return call for the invoked uservmmanager command") - private Boolean success; - - public void setSuccess(Boolean success){ - this.success = success; - } - - public Boolean getSuccess(){ - return this.success; - } - public Long getId() { return id; } diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index b6e5fecabaa..71ef64cdc1a 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -1885,7 +1885,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM // } @Override @DB - public boolean recoverVirtualMachine(RecoverVMCmd cmd) throws ResourceAllocationException, CloudRuntimeException { + public UserVm recoverVirtualMachine(RecoverVMCmd cmd) throws ResourceAllocationException, CloudRuntimeException { Long vmId = cmd.getId(); Account accountHandle = UserContext.current().getAccount(); @@ -1910,14 +1910,14 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM if (s_logger.isDebugEnabled()) { s_logger.debug("Unable to find vm or vm is removed: " + vmId); } - return false; + throw new InvalidParameterValueException("Unable to find vm by id " + vmId); } if (vm.getState() != State.Destroyed) { if (s_logger.isDebugEnabled()) { s_logger.debug("vm is not in the right state: " + vmId); } - return true; + throw new InvalidParameterValueException("Vm with id " + vmId + " is not in the right state"); } if (s_logger.isDebugEnabled()) { @@ -1960,7 +1960,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM if (!_vmDao.updateIf(vm, Event.RecoveryRequested, null)) { s_logger.debug("Unable to recover the vm because it is not in the correct state: " + vmId); - return false; + throw new InvalidParameterValueException("Unable to recover the vm because it is not in the correct state: " + vmId); } // Recover the VM's disks @@ -1997,7 +1997,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM txn.commit(); - return true; + return _vmDao.findById(vmId); } @Override @@ -3208,7 +3208,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM } @Override - public void updateVirtualMachine(UpdateVMCmd cmd) { + public UserVm updateVirtualMachine(UpdateVMCmd cmd) { String displayName = cmd.getDisplayName(); String group = cmd.getGroup(); Boolean ha = cmd.getHaEnable(); @@ -3265,10 +3265,11 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM // create a event for the change in HA Enabled flag EventUtils.saveEvent(userId, accountId, EventVO.LEVEL_INFO, type, description, null); } + return _vmDao.findById(id); } @Override - public UserVmVO stopVirtualMachine(StopVMCmd cmd) throws ServerApiException{ + public UserVm stopVirtualMachine(StopVMCmd cmd) throws ServerApiException{ //Input validation Account account = UserContext.current().getAccount(); @@ -3290,14 +3291,13 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM boolean success = stopVirtualMachine(userId, id, eventId); if (!success) { - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Unable to stop virtual machine with id " + id + ", internal error."); + throw new CloudRuntimeException("Unable to stop virtual machine with id " + id + ", internal error."); } - return _vmDao.findById(id); } @Override - public UserVmVO startVirtualMachine(StartVMCmd cmd) throws StorageUnavailableException, ExecutionException, ConcurrentOperationException { + public UserVm startVirtualMachine(StartVMCmd cmd) throws StorageUnavailableException, ExecutionException, ConcurrentOperationException { //Input validation Account account = UserContext.current().getAccount(); Long userId = UserContext.current().getUserId(); @@ -3348,7 +3348,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM } @Override - public boolean destroyVm(DestroyVMCmd cmd) { + public UserVm destroyVm(DestroyVMCmd cmd) { Account account = UserContext.current().getAccount(); Long userId = UserContext.current().getUserId(); @@ -3369,12 +3369,12 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM if(status) { EventUtils.saveEvent(userId, vmInstance.getAccountId(), EventTypes.EVENT_VM_DESTROY, "Successfully destroyed vm with id:"+vmId); - return status; + return _vmDao.findById(vmId); } else { EventUtils.saveEvent(userId, vmInstance.getAccountId(), EventTypes.EVENT_VM_DESTROY, "Failed to destroy vm with id:"+vmId); - return status; + throw new CloudRuntimeException("Failed to destroy vm with id " + vmId); } } diff --git a/server/src/com/cloud/vm/UserVmService.java b/server/src/com/cloud/vm/UserVmService.java index 0720e21d564..8332264a990 100755 --- a/server/src/com/cloud/vm/UserVmService.java +++ b/server/src/com/cloud/vm/UserVmService.java @@ -53,7 +53,7 @@ public interface UserVmService extends Manager { * @param userId the id of the user performing the action * @param vmId the id of the virtual machine. */ - boolean destroyVm(DestroyVMCmd cmd); + UserVm destroyVm(DestroyVMCmd cmd); /** * Resets the password of a virtual machine. @@ -77,15 +77,15 @@ public interface UserVmService extends Manager { */ VolumeResponse detachVolumeFromVM(DetachVolumeCmd cmmd); - UserVmVO startVirtualMachine(StartVMCmd cmd) throws StorageUnavailableException, ExecutionException, ConcurrentOperationException; - UserVmVO stopVirtualMachine(StopVMCmd cmd); + UserVm startVirtualMachine(StartVMCmd cmd) throws StorageUnavailableException, ExecutionException, ConcurrentOperationException; + UserVm stopVirtualMachine(StopVMCmd cmd); UserVm rebootVirtualMachine(RebootVMCmd cmd); + UserVm updateVirtualMachine(UpdateVMCmd cmd); + UserVm recoverVirtualMachine(RecoverVMCmd cmd) throws ResourceAllocationException; @Deprecated OperationResponse executeRebootVM(RebootVMExecutor executor, VMOperationParam param); - boolean recoverVirtualMachine(RecoverVMCmd cmd) throws ResourceAllocationException; - /** * Create a template database record in preparation for creating a private template. * @param cmd the command object that defines the name, display text, snapshot/volume, bits, public/private, etc. @@ -102,8 +102,6 @@ public interface UserVmService extends Manager { * @throws InvalidParameterValueException */ VMTemplateVO createPrivateTemplate(CreateTemplateCmd cmd); - - void updateVirtualMachine(UpdateVMCmd cmd); /** * Creates a User VM in the database and returns the VM to the caller. diff --git a/setup/db/server-setup.xml b/setup/db/server-setup.xml index 9ca63ba9643..f90464a71ca 100755 --- a/setup/db/server-setup.xml +++ b/setup/db/server-setup.xml @@ -9,7 +9,7 @@ as the only address, specify as 192.168.1.1. To specify 192.168.1.1 to 192.168.1.150 specify as 192.168.1.1-192.168.1.150 --> - + - + - +