fix CLOUDSTACK-1700
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4edef1fd Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4edef1fd Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4edef1fd Branch: refs/heads/kvm-vnc-listen Commit: 4edef1fd305891beb5393b722e96f4a140934f9f Parents: dedec16 Author: Mice Xia <mice_...@tcloudcomputing.com> Authored: Tue Apr 2 17:24:49 2013 +0800 Committer: Mice Xia <mice_...@tcloudcomputing.com> Committed: Tue Apr 2 17:36:51 2013 +0800 ---------------------------------------------------------------------- .../xen/resource/CitrixResourceBase.java | 12 +++++++++++- server/src/com/cloud/api/ApiResponseHelper.java | 1 + .../cloud/vm/snapshot/VMSnapshotManagerImpl.java | 8 ++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4edef1fd/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index d2f3f69..c50f13c 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -262,6 +262,7 @@ import com.xensource.xenapi.SR; import com.xensource.xenapi.Session; import com.xensource.xenapi.Task; import com.xensource.xenapi.Types; +import com.xensource.xenapi.Types.BadAsyncResult; import com.xensource.xenapi.Types.BadServerResponse; import com.xensource.xenapi.Types.ConsoleProtocol; import com.xensource.xenapi.Types.IpConfigurationMode; @@ -6452,7 +6453,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe success = true; return new CreateVMSnapshotAnswer(cmd, cmd.getTarget(), cmd.getVolumeTOs()); } catch (Exception e) { - String msg = e.getMessage(); + String msg = ""; + if(e instanceof BadAsyncResult){ + String licenseKeyWord = "LICENCE_RESTRICTION"; + BadAsyncResult errorResult = (BadAsyncResult)e; + if(errorResult.shortDescription != null && errorResult.shortDescription.contains(licenseKeyWord)){ + msg = licenseKeyWord; + } + }else{ + msg = e.getMessage(); + } s_logger.error("Creating VM Snapshot " + cmd.getTarget().getSnapshotName() + " failed due to: " + msg); return new CreateVMSnapshotAnswer(cmd, false, msg); } finally { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4edef1fd/server/src/com/cloud/api/ApiResponseHelper.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index d350de2..64be7f8 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -446,6 +446,7 @@ public class ApiResponseHelper implements ResponseGenerator { vmSnapshotResponse.setParentName(ApiDBUtils.getVMSnapshotById(vmSnapshot.getParent()).getDisplayName()); vmSnapshotResponse.setCurrent(vmSnapshot.getCurrent()); vmSnapshotResponse.setType(vmSnapshot.getType().toString()); + vmSnapshotResponse.setObjectName("vmsnapshot"); return vmSnapshotResponse; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4edef1fd/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java index 12a0597..638be6c 100644 --- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java +++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java @@ -367,9 +367,13 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana processAnswer(vmSnapshot, userVm, answer, hostId); s_logger.debug("Create vm snapshot " + vmSnapshot.getName() + " succeeded for vm: " + userVm.getInstanceName()); }else{ - String errMsg = answer.getDetails(); - s_logger.error("Agent reports creating vm snapshot " + vmSnapshot.getName() + " failed for vm: " + userVm.getInstanceName() + " due to " + errMsg); + + String errMsg = "Creating VM snapshot: " + vmSnapshot.getName() + " failed"; + if(answer != null && answer.getDetails() != null) + errMsg = errMsg + " due to " + answer.getDetails(); + s_logger.error(errMsg); vmSnapshotStateTransitTo(vmSnapshot, VMSnapshot.Event.OperationFailed); + throw new CloudRuntimeException(errMsg); } return vmSnapshot; } catch (Exception e) {