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

Reply via email to